@saooti/octopus-sdk 1.0.0 → 29.0.2

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 (230) hide show
  1. package/README.md +73 -0
  2. package/index.d.ts +4 -0
  3. package/index.ts +12 -0
  4. package/package.json +61 -39
  5. package/public/css/fonts/saooti-ui.eot +0 -0
  6. package/public/css/fonts/saooti-ui.svg +30 -19
  7. package/public/css/fonts/saooti-ui.ttf +0 -0
  8. package/public/css/fonts/saooti-ui.woff +0 -0
  9. package/public/css/fonts/style.css +48 -5
  10. package/public/img/ACPM.png +0 -0
  11. package/public/img/article.png +0 -0
  12. package/src/App.vue +97 -31
  13. package/src/api/comments.ts +3 -1
  14. package/src/api/emissions.ts +5 -2
  15. package/src/api/initialize.ts +3 -2
  16. package/src/api/podcasts.ts +5 -2
  17. package/src/api/profile.ts +4 -2
  18. package/src/api/studio.ts +12 -1
  19. package/src/assets/bootstrap-diff.scss +265 -0
  20. package/src/assets/form.scss +23 -0
  21. package/src/assets/general.scss +47 -20
  22. package/src/assets/modal.scss +9 -10
  23. package/src/assets/multiselect.scss +19 -2
  24. package/src/assets/octopus-library.scss +16 -4
  25. package/src/assets/share.scss +343 -0
  26. package/src/components/display/aggregator/RssSection.vue +4 -4
  27. package/src/components/display/categories/CategoryChooser.vue +152 -105
  28. package/src/components/display/categories/CategoryFilter.vue +108 -0
  29. package/src/components/display/categories/CategoryList.vue +138 -109
  30. package/src/components/display/comments/AddCommentModal.vue +104 -87
  31. package/src/components/display/comments/CommentInput.vue +137 -118
  32. package/src/components/display/comments/CommentItem.vue +155 -137
  33. package/src/components/display/comments/CommentList.vue +142 -120
  34. package/src/components/display/comments/CommentParentInfo.vue +39 -35
  35. package/src/components/display/comments/CommentPlayer.vue +54 -48
  36. package/src/components/display/comments/CommentSection.vue +57 -58
  37. package/src/components/display/edit/EditBox.vue +4 -4
  38. package/src/components/display/edit/EditCommentBox.vue +25 -31
  39. package/src/components/display/emission/EmissionChooser.vue +82 -80
  40. package/src/components/display/emission/EmissionInlineList.vue +118 -105
  41. package/src/components/display/emission/EmissionItem.vue +66 -167
  42. package/src/components/display/emission/EmissionList.vue +96 -122
  43. package/src/components/display/emission/EmissionPlayerItem.vue +131 -126
  44. package/src/components/display/filter/AdvancedSearch.vue +306 -372
  45. package/src/components/display/filter/CategoryFilter.vue +117 -0
  46. package/src/components/display/filter/MonetizableFilter.vue +24 -10
  47. package/src/components/display/filter/ProductorSearch.vue +131 -135
  48. package/src/components/display/filter/RubriqueChoice.vue +104 -0
  49. package/src/components/display/filter/RubriqueFilter.vue +235 -0
  50. package/src/components/display/live/CountDown.vue +30 -29
  51. package/src/components/display/live/LiveHorizontalList.vue +40 -34
  52. package/src/components/display/live/LiveItem.vue +146 -158
  53. package/src/components/display/live/LiveList.vue +167 -154
  54. package/src/components/display/organisation/OrganisationChooser.vue +125 -124
  55. package/src/components/display/organisation/OrganisationChooserLight.vue +40 -47
  56. package/src/components/display/participant/ParticipantItem.vue +92 -108
  57. package/src/components/display/participant/ParticipantList.vue +76 -69
  58. package/src/components/display/playlist/PlaylistItem.vue +45 -56
  59. package/src/components/display/playlist/PlaylistList.vue +57 -48
  60. package/src/components/display/playlist/PodcastList.vue +94 -70
  61. package/src/components/display/podcasts/AnimatorsItem.vue +26 -23
  62. package/src/components/display/podcasts/ParticipantDescription.vue +115 -0
  63. package/src/components/display/podcasts/PodcastFilterList.vue +84 -85
  64. package/src/components/display/podcasts/PodcastImage.vue +244 -208
  65. package/src/components/display/podcasts/PodcastInlineList.vue +145 -207
  66. package/src/components/display/podcasts/PodcastItem.vue +150 -132
  67. package/src/components/display/podcasts/PodcastList.vue +89 -110
  68. package/src/components/display/podcasts/TagList.vue +23 -16
  69. package/src/components/display/rubriques/RubriqueChooser.vue +137 -123
  70. package/src/components/display/rubriques/RubriqueList.vue +227 -0
  71. package/src/components/display/sharing/PlayerParameters.vue +154 -106
  72. package/src/components/display/sharing/QrCode.vue +58 -0
  73. package/src/components/display/sharing/ShareButtons.vue +214 -92
  74. package/src/components/display/sharing/ShareDistribution.vue +110 -121
  75. package/src/components/display/sharing/SharePlayer.vue +245 -190
  76. package/src/components/display/sharing/SubscribeButtons.vue +130 -66
  77. package/src/components/display/studio/RecordingItemButton.vue +4 -4
  78. package/src/components/misc/ErrorMessage.vue +21 -16
  79. package/src/components/misc/Footer.vue +131 -66
  80. package/src/components/misc/HomeDropdown.vue +166 -123
  81. package/src/components/misc/LeftMenu.vue +151 -134
  82. package/src/components/misc/Player.vue +332 -328
  83. package/src/components/misc/Snackbar.vue +27 -29
  84. package/src/components/misc/TopBar.vue +204 -174
  85. package/src/components/misc/modal/ClipboardModal.vue +46 -26
  86. package/src/components/misc/modal/MessageModal.vue +67 -51
  87. package/src/components/misc/modal/NewsletterModal.vue +179 -136
  88. package/src/components/misc/modal/QrCodeModal.vue +83 -0
  89. package/src/components/misc/modal/ShareModalPlayer.vue +133 -74
  90. package/src/components/mixins/functions.ts +21 -18
  91. package/src/components/mixins/init.ts +24 -0
  92. package/src/components/mixins/organisationFilter.ts +24 -0
  93. package/src/components/pages/Category.vue +26 -26
  94. package/src/components/pages/Emission.vue +120 -92
  95. package/src/components/pages/Emissions.vue +109 -86
  96. package/src/components/pages/Home.vue +70 -16
  97. package/src/components/pages/Lives.vue +57 -47
  98. package/src/components/pages/Participant.vue +93 -77
  99. package/src/components/pages/Participants.vue +44 -31
  100. package/src/components/pages/Playlist.vue +63 -52
  101. package/src/components/pages/Playlists.vue +41 -39
  102. package/src/components/pages/Podcast.vue +265 -251
  103. package/src/components/pages/Podcasts.vue +135 -104
  104. package/src/components/pages/Rubrique.vue +25 -19
  105. package/src/components/pages/Search.vue +71 -67
  106. package/src/helper/dom.ts +2 -2
  107. package/src/helper/duration.ts +18 -8
  108. package/src/locale/educationen.ts +14 -0
  109. package/src/locale/en.ts +299 -1
  110. package/src/locale/fr.ts +25 -10
  111. package/src/locale/messages.ts +3 -2
  112. package/src/main.ts +54 -32
  113. package/src/router/router.ts +184 -159
  114. package/src/shims-tsx.d.ts +13 -0
  115. package/src/shims-vue-recaptcha-v3.d.ts +9 -0
  116. package/src/shims-vue.d.ts +5 -6
  117. package/src/store/AppStore.ts +36 -171
  118. package/src/store/class/category.ts +8 -0
  119. package/src/store/class/comment.ts +17 -0
  120. package/src/store/class/conference.ts +27 -0
  121. package/src/store/class/customPlayer.ts +8 -0
  122. package/src/store/class/emission.ts +20 -0
  123. package/src/store/class/fetchParam.ts +16 -0
  124. package/src/store/class/media.ts +13 -0
  125. package/src/store/class/organisation.ts +19 -0
  126. package/src/store/class/participant.ts +12 -0
  127. package/src/store/class/person.ts +13 -0
  128. package/src/store/class/player.ts +12 -0
  129. package/src/store/class/playlist.ts +15 -0
  130. package/src/store/class/podcast.ts +37 -0
  131. package/src/store/class/rubriquage.ts +9 -0
  132. package/src/store/class/rubriquageFilter.ts +5 -0
  133. package/src/store/class/rubrique.ts +8 -0
  134. package/src/store/paramStore.ts +70 -29
  135. package/src/store/typeAppStore.ts +171 -237
  136. package/src/vuex-shim.d.ts +8 -0
  137. package/tsconfig.json +4 -0
  138. package/vue.config.js +14 -0
  139. package/public/img/ACPM.PNG +0 -0
  140. package/src/assets/bootstrap_scss/_alert.scss +0 -51
  141. package/src/assets/bootstrap_scss/_badge.scss +0 -54
  142. package/src/assets/bootstrap_scss/_breadcrumb.scss +0 -42
  143. package/src/assets/bootstrap_scss/_button-group.scss +0 -164
  144. package/src/assets/bootstrap_scss/_buttons.scss +0 -291
  145. package/src/assets/bootstrap_scss/_card.scss +0 -278
  146. package/src/assets/bootstrap_scss/_carousel.scss +0 -197
  147. package/src/assets/bootstrap_scss/_close.scss +0 -41
  148. package/src/assets/bootstrap_scss/_code.scss +0 -48
  149. package/src/assets/bootstrap_scss/_custom-forms.scss +0 -522
  150. package/src/assets/bootstrap_scss/_dropdown.scss +0 -201
  151. package/src/assets/bootstrap_scss/_forms.scss +0 -352
  152. package/src/assets/bootstrap_scss/_functions.scss +0 -134
  153. package/src/assets/bootstrap_scss/_grid.scss +0 -69
  154. package/src/assets/bootstrap_scss/_images.scss +0 -42
  155. package/src/assets/bootstrap_scss/_input-group.scss +0 -191
  156. package/src/assets/bootstrap_scss/_jumbotron.scss +0 -17
  157. package/src/assets/bootstrap_scss/_list-group.scss +0 -158
  158. package/src/assets/bootstrap_scss/_media.scss +0 -8
  159. package/src/assets/bootstrap_scss/_mixins.scss +0 -47
  160. package/src/assets/bootstrap_scss/_modal.scss +0 -243
  161. package/src/assets/bootstrap_scss/_nav.scss +0 -120
  162. package/src/assets/bootstrap_scss/_navbar.scss +0 -324
  163. package/src/assets/bootstrap_scss/_pagination.scss +0 -74
  164. package/src/assets/bootstrap_scss/_popover.scss +0 -170
  165. package/src/assets/bootstrap_scss/_print.scss +0 -141
  166. package/src/assets/bootstrap_scss/_progress.scss +0 -46
  167. package/src/assets/bootstrap_scss/_reboot.scss +0 -482
  168. package/src/assets/bootstrap_scss/_root.scss +0 -20
  169. package/src/assets/bootstrap_scss/_spinners.scss +0 -55
  170. package/src/assets/bootstrap_scss/_tables.scss +0 -185
  171. package/src/assets/bootstrap_scss/_toasts.scss +0 -44
  172. package/src/assets/bootstrap_scss/_tooltip.scss +0 -115
  173. package/src/assets/bootstrap_scss/_transitions.scss +0 -20
  174. package/src/assets/bootstrap_scss/_type.scss +0 -125
  175. package/src/assets/bootstrap_scss/_utilities.scss +0 -17
  176. package/src/assets/bootstrap_scss/_variables.scss +0 -1145
  177. package/src/assets/bootstrap_scss/bootstrap-grid.scss +0 -29
  178. package/src/assets/bootstrap_scss/bootstrap-reboot.scss +0 -12
  179. package/src/assets/bootstrap_scss/bootstrap.scss +0 -44
  180. package/src/assets/bootstrap_scss/mixins/_alert.scss +0 -13
  181. package/src/assets/bootstrap_scss/mixins/_background-variant.scss +0 -22
  182. package/src/assets/bootstrap_scss/mixins/_badge.scss +0 -17
  183. package/src/assets/bootstrap_scss/mixins/_border-radius.scss +0 -63
  184. package/src/assets/bootstrap_scss/mixins/_box-shadow.scss +0 -20
  185. package/src/assets/bootstrap_scss/mixins/_breakpoints.scss +0 -123
  186. package/src/assets/bootstrap_scss/mixins/_buttons.scss +0 -110
  187. package/src/assets/bootstrap_scss/mixins/_caret.scss +0 -62
  188. package/src/assets/bootstrap_scss/mixins/_clearfix.scss +0 -7
  189. package/src/assets/bootstrap_scss/mixins/_deprecate.scss +0 -10
  190. package/src/assets/bootstrap_scss/mixins/_float.scss +0 -14
  191. package/src/assets/bootstrap_scss/mixins/_forms.scss +0 -177
  192. package/src/assets/bootstrap_scss/mixins/_gradients.scss +0 -45
  193. package/src/assets/bootstrap_scss/mixins/_grid-framework.scss +0 -71
  194. package/src/assets/bootstrap_scss/mixins/_grid.scss +0 -69
  195. package/src/assets/bootstrap_scss/mixins/_hover.scss +0 -37
  196. package/src/assets/bootstrap_scss/mixins/_image.scss +0 -36
  197. package/src/assets/bootstrap_scss/mixins/_list-group.scss +0 -21
  198. package/src/assets/bootstrap_scss/mixins/_lists.scss +0 -7
  199. package/src/assets/bootstrap_scss/mixins/_nav-divider.scss +0 -11
  200. package/src/assets/bootstrap_scss/mixins/_pagination.scss +0 -22
  201. package/src/assets/bootstrap_scss/mixins/_reset-text.scss +0 -17
  202. package/src/assets/bootstrap_scss/mixins/_resize.scss +0 -6
  203. package/src/assets/bootstrap_scss/mixins/_screen-reader.scss +0 -34
  204. package/src/assets/bootstrap_scss/mixins/_size.scss +0 -7
  205. package/src/assets/bootstrap_scss/mixins/_table-row.scss +0 -39
  206. package/src/assets/bootstrap_scss/mixins/_text-emphasis.scss +0 -17
  207. package/src/assets/bootstrap_scss/mixins/_text-hide.scss +0 -11
  208. package/src/assets/bootstrap_scss/mixins/_text-truncate.scss +0 -8
  209. package/src/assets/bootstrap_scss/mixins/_transition.scss +0 -16
  210. package/src/assets/bootstrap_scss/mixins/_visibility.scss +0 -8
  211. package/src/assets/bootstrap_scss/utilities/_align.scss +0 -8
  212. package/src/assets/bootstrap_scss/utilities/_background.scss +0 -19
  213. package/src/assets/bootstrap_scss/utilities/_borders.scss +0 -75
  214. package/src/assets/bootstrap_scss/utilities/_clearfix.scss +0 -3
  215. package/src/assets/bootstrap_scss/utilities/_display.scss +0 -26
  216. package/src/assets/bootstrap_scss/utilities/_embed.scss +0 -39
  217. package/src/assets/bootstrap_scss/utilities/_flex.scss +0 -51
  218. package/src/assets/bootstrap_scss/utilities/_float.scss +0 -11
  219. package/src/assets/bootstrap_scss/utilities/_overflow.scss +0 -5
  220. package/src/assets/bootstrap_scss/utilities/_position.scss +0 -32
  221. package/src/assets/bootstrap_scss/utilities/_screenreaders.scss +0 -11
  222. package/src/assets/bootstrap_scss/utilities/_shadows.scss +0 -6
  223. package/src/assets/bootstrap_scss/utilities/_sizing.scss +0 -20
  224. package/src/assets/bootstrap_scss/utilities/_spacing.scss +0 -73
  225. package/src/assets/bootstrap_scss/utilities/_stretched-link.scss +0 -19
  226. package/src/assets/bootstrap_scss/utilities/_text.scss +0 -72
  227. package/src/assets/bootstrap_scss/utilities/_visibility.scss +0 -13
  228. package/src/assets/bootstrap_scss/vendor/_rfs.scss +0 -204
  229. package/src/shims-vuex.d.ts +0 -7
  230. package/src/views/Home.vue +0 -18
@@ -1,131 +1,193 @@
1
1
  <template>
2
2
  <div class="module-box flex-no-grow">
3
3
  <div class="d-flex align-items-center mb-3">
4
- <h3 class="mb-0 share-button-title">{{ $t('Subscribe emission') }}</h3>
4
+ <h3 class="mb-0 share-button-title">
5
+ {{ $t('Subscribe emission') }}
6
+ </h3>
5
7
  </div>
6
- <div class="d-flex">
8
+ <div class="d-flex flex-wrap">
7
9
  <a
10
+ v-if="amazon"
11
+ rel="noopener"
8
12
  target="_blank"
9
- class="btn mr-3 mb-2 share-btn"
10
- :href="applePodcast"
13
+ class="btn me-3 mb-2 share-btn"
14
+ :href="amazon"
15
+ aria-label="amazon"
16
+ >
17
+ <span class="saooti-amazon">
18
+ <div class="path1" />
19
+ <div class="path2" />
20
+ <div class="path3" />
21
+ </span>
22
+ </a>
23
+ <a
11
24
  v-if="applePodcast"
25
+ rel="noopener"
26
+ target="_blank"
27
+ class="btn me-3 mb-2 share-btn"
28
+ :href="applePodcast"
12
29
  aria-label="Apple"
13
30
  >
14
- <span class="saooti-apple"></span>
31
+ <span class="saooti-apple" />
15
32
  </a>
16
33
  <a
34
+ v-if="deezer"
35
+ rel="noopener"
17
36
  target="_blank"
18
- class="btn mr-3 mb-2 share-btn"
37
+ class="btn me-3 mb-2 share-btn"
19
38
  :href="deezer"
20
- v-if="deezer"
21
39
  aria-label="Deezer"
22
40
  >
23
- <span class="saooti-deezer"></span>
41
+ <span class="saooti-deezer" />
24
42
  </a>
25
43
  <a
44
+ v-if="playerFm"
45
+ rel="noopener"
26
46
  target="_blank"
27
- class="btn mr-3 mb-2 share-btn"
28
- :href="spotify"
29
- v-if="spotify"
30
- aria-label="Spotify"
47
+ class="btn me-3 mb-2 share-btn"
48
+ :href="playerFm"
49
+ aria-label="playerFm"
31
50
  >
32
- <span class="saooti-spotify"></span>
51
+ <span class="saooti-playerfm" />
33
52
  </a>
34
53
  <a
54
+ v-if="podcastAddict"
55
+ rel="noopener"
35
56
  target="_blank"
36
- class="btn mr-3 mb-2 share-btn"
37
- :href="tunein"
38
- v-if="tunein"
39
- aria-label="Tunin"
57
+ class="btn me-3 mb-2 share-btn"
58
+ :href="podcastAddict"
59
+ aria-label="podcastAddict"
40
60
  >
41
- <span class="saooti-tunin"></span>
61
+ <span class="saooti-podcast-addict" />
42
62
  </a>
43
63
  <a
64
+ v-if="radioline"
65
+ rel="noopener"
44
66
  target="_blank"
45
- class="btn mr-3 mb-2 btn-tootak share-btn"
46
- :href="tootak"
47
- v-if="tootak"
48
- aria-label="Tootak"
67
+ class="btn me-3 mb-2 btn-radioline share-btn"
68
+ :href="radioline"
69
+ aria-label="Radioline"
49
70
  >
50
- <span class="saooti-tootak"></span>
71
+ <span class="saooti-radioline" />
51
72
  </a>
52
73
  <a
74
+ v-if="spotify"
75
+ rel="noopener"
53
76
  target="_blank"
54
- class="btn mr-3 mb-2 btn-radioline share-btn"
55
- :href="radioline"
56
- v-if="radioline"
57
- aria-label="Radioline"
77
+ class="btn me-3 mb-2 share-btn"
78
+ :href="spotify"
79
+ aria-label="Spotify"
80
+ >
81
+ <span class="saooti-spotify" />
82
+ </a>
83
+ <a
84
+ v-if="stitcher"
85
+ rel="noopener"
86
+ target="_blank"
87
+ class="btn me-3 mb-2 share-btn"
88
+ :href="stitcher"
89
+ aria-label="stitcher"
90
+ >
91
+ <span class="saooti-stitcher-logo">
92
+ <div class="path1" />
93
+ <div class="path2" />
94
+ <div class="path3" />
95
+ <div class="path4" />
96
+ <div class="path5" />
97
+ <div class="path6" />
98
+ <div class="path7" />
99
+ <div class="path8" />
100
+ <div class="path9" />
101
+ <div class="path10" />
102
+ <div class="path11" />
103
+ <div class="path12" />
104
+ <div class="path13" />
105
+ <div class="path14" />
106
+ <div class="path15" />
107
+ <div class="path16" />
108
+ <div class="path17" />
109
+ <div class="path18" /> </span>
110
+ </a>
111
+ <a
112
+ v-if="tunein"
113
+ rel="noopener"
114
+ target="_blank"
115
+ class="btn me-3 mb-2 share-btn"
116
+ :href="tunein"
117
+ aria-label="Tunin"
58
118
  >
59
- <span class="saooti-radioline"></span>
119
+ <span class="saooti-tunin" />
60
120
  </a>
61
121
  </div>
62
122
  </div>
63
123
  </template>
64
124
 
65
- <style lang="scss">
66
- .saooti-tunin {
67
- color: #36b4a7;
68
- }
69
- .saooti-radioline {
70
- color: #2273b9;
71
- }
72
- .saooti-tootak {
73
- color: #ff4d53;
74
- }
75
- .flex-no-grow {
76
- flex-grow: 0 !important;
77
- }
78
- </style>
79
-
80
125
  <script lang="ts">
126
+ import { Emission } from '@/store/class/emission';
81
127
  import { defineComponent } from 'vue'
82
128
  export default defineComponent({
83
- props: ['podcastId', 'emission'],
84
-
85
- components: {},
86
-
87
- mounted() {
88
- this.applePodcast = this.externaliseLinks(this.applePodcast);
89
- this.deezer = this.externaliseLinks(this.deezer);
90
- this.spotify = this.externaliseLinks(this.spotify);
91
- this.tunein = this.externaliseLinks(this.tunein);
92
- this.tootak = this.externaliseLinks(this.tootak);
93
- this.radioline = this.externaliseLinks(this.radioline);
129
+ props: {
130
+ emission: { default: undefined, type: Object as ()=> Emission},
131
+ podcastId: { default: undefined, type: Number},
94
132
  },
95
-
133
+
96
134
  data() {
97
135
  return {
98
136
  applePodcast:
99
137
  this.emission && this.emission.annotations
100
138
  ? this.emission.annotations.applePodcast
101
- : undefined as any,
139
+ : undefined as string | undefined,
102
140
  deezer:
103
141
  this.emission && this.emission.annotations
104
142
  ? this.emission.annotations.deezer
105
- : undefined as any,
143
+ : undefined as string | undefined,
106
144
  spotify:
107
145
  this.emission && this.emission.annotations
108
146
  ? this.emission.annotations.spotify
109
- : undefined as any,
147
+ : undefined as string | undefined,
110
148
  tunein:
111
149
  this.emission && this.emission.annotations
112
150
  ? this.emission.annotations.tunein
113
- : undefined as any,
114
- tootak:
115
- this.emission && this.emission.annotations
116
- ? this.emission.annotations.tootak
117
- : undefined as any,
151
+ : undefined as string | undefined,
118
152
  radioline:
119
153
  this.emission && this.emission.annotations
120
154
  ? this.emission.annotations.radioline
121
- : undefined as any,
155
+ : undefined as string | undefined,
156
+ podcastAddict:
157
+ this.emission && this.emission.annotations
158
+ ? this.emission.annotations.podcastAddict
159
+ : undefined as string | undefined,
160
+ playerFm:
161
+ this.emission && this.emission.annotations
162
+ ? this.emission.annotations.playerFm
163
+ : undefined as string | undefined,
164
+ stitcher:
165
+ this.emission && this.emission.annotations
166
+ ? this.emission.annotations.stitcher
167
+ : undefined as string | undefined,
168
+ amazon:
169
+ this.emission && this.emission.annotations
170
+ ? this.emission.annotations.amazon
171
+ : undefined as string | undefined,
122
172
  };
123
173
  },
124
174
 
125
175
  computed: {},
126
176
 
177
+ mounted() {
178
+ this.applePodcast = this.externaliseLinks(this.applePodcast);
179
+ this.deezer = this.externaliseLinks(this.deezer);
180
+ this.spotify = this.externaliseLinks(this.spotify);
181
+ this.tunein = this.externaliseLinks(this.tunein);
182
+ this.radioline = this.externaliseLinks(this.radioline);
183
+ this.podcastAddict = this.externaliseLinks(this.podcastAddict);
184
+ this.playerFm = this.externaliseLinks(this.playerFm);
185
+ this.stitcher = this.externaliseLinks(this.stitcher);
186
+ this.amazon = this.externaliseLinks(this.amazon);
187
+ },
188
+
127
189
  methods: {
128
- externaliseLinks(link?: string) {
190
+ externaliseLinks(link?: string): string|undefined {
129
191
  if (!link) return link;
130
192
  link = link.trim();
131
193
  if (!link.startsWith('http') && !link.startsWith('//'))
@@ -133,5 +195,7 @@ export default defineComponent({
133
195
  return link;
134
196
  },
135
197
  },
136
- });
198
+ })
137
199
  </script>
200
+
201
+ <style lang="scss"></style>
@@ -1,10 +1,10 @@
1
1
  <template>
2
- <div></div>
2
+ <div />
3
3
  </template>
4
4
 
5
- <style lang="scss"></style>
6
-
7
5
  <script lang="ts">
8
6
  import { defineComponent } from 'vue'
9
- export default defineComponent({});
7
+ export default defineComponent({})
10
8
  </script>
9
+
10
+ <style lang="scss"></style>
@@ -1,29 +1,34 @@
1
1
  <template>
2
- <div class="d-flex" v-if="message && message.length">
2
+ <div
3
+ v-if="message && message.length"
4
+ class="d-flex"
5
+ >
3
6
  <div
4
7
  class="d-flex align-items-center bg-error-message p-2 rounded mt-1 mb-1"
5
8
  >
6
- <img src="/img/caution.png" class="icon-caution" />
7
- <div class="alert-text">{{ message }}</div>
9
+ <img
10
+ src="/img/caution.png"
11
+ class="icon-caution"
12
+ >
13
+ <div class="alert-text">
14
+ {{ message }}
15
+ </div>
8
16
  </div>
9
17
  </div>
10
18
  </template>
11
- <style lang="scss">
12
- .bg-error-message {
13
- background-color: #ffd84a9c;
14
- }
15
- .icon-caution {
16
- margin-right: 5px;
17
- margin-bottom: 2px;
18
- height: 25px;
19
- }
20
- </style>
21
19
 
22
20
  <script lang="ts">
23
21
  import { defineComponent } from 'vue'
24
22
  export default defineComponent({
25
23
  name: 'ErrorMessage',
26
-
27
- props: ['message'],
28
- });
24
+ props: {
25
+ message: { default: undefined, type: String},
26
+ },
27
+ })
29
28
  </script>
29
+
30
+ <style lang="scss">
31
+ .bg-error-message {
32
+ background-color: #ffd84a9c;
33
+ }
34
+ </style>
@@ -9,97 +9,197 @@
9
9
  <router-link
10
10
  :to="{
11
11
  name: 'home',
12
- query: { productor: this.$store.state.filter.organisationId },
12
+ query: { productor: $store.state.filter.organisationId,
13
+ iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined,
14
+ rubriquesId: rubriqueQueryParam },
13
15
  }"
14
16
  class="linkHover"
15
- >{{ $t('Home') }}</router-link
16
17
  >
18
+ {{ $t('Home') }}
19
+ </router-link>
17
20
  <router-link
18
21
  :to="{
19
22
  name: 'podcasts',
20
- query: { productor: this.$store.state.filter.organisationId },
23
+ query: { productor: $store.state.filter.organisationId,
24
+ iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined,
25
+ rubriquesId: rubriqueQueryParam},
21
26
  }"
22
27
  class="linkHover"
23
- >{{ $t('Podcasts') }}</router-link
24
28
  >
29
+ {{ $t('Podcasts') }}
30
+ </router-link>
25
31
  <router-link
26
32
  :to="{
27
33
  name: 'emissions',
28
- query: { productor: this.$store.state.filter.organisationId },
34
+ query: { productor: $store.state.filter.organisationId,
35
+ iabId: $store.state.filter.iab ? $store.state.filter.iab.id : undefined },
29
36
  }"
30
37
  class="linkHover"
31
- >{{ $t('Emissions') }}</router-link
32
38
  >
39
+ {{ $t('Emissions') }}
40
+ </router-link>
33
41
  <router-link
42
+ v-if="!isPodcastmaker"
34
43
  :to="{
35
44
  name: 'productors',
36
- query: { productor: this.$store.state.filter.organisationId },
45
+ query: { productor: $store.state.filter.organisationId },
37
46
  }"
38
47
  class="linkHover"
39
- v-if="!isPodcastmaker"
40
- >{{ $t('Productors') }}</router-link
41
48
  >
49
+ {{ $t('Productors') }}
50
+ </router-link>
42
51
  <router-link
43
52
  :to="{
44
53
  name: 'participants',
45
- query: { productor: this.$store.state.filter.organisationId },
54
+ query: { productor: $store.state.filter.organisationId },
46
55
  }"
47
56
  class="linkHover"
48
- >{{ $t('Speakers') }}</router-link
49
57
  >
58
+ {{ $t('Speakers') }}
59
+ </router-link>
50
60
  </div>
51
61
  </div>
52
- <hr class="divided-line show-phone" />
62
+ <hr class="divided-line show-phone">
53
63
  <div
54
- class="d-flex flex-grow align-items-center flex-column"
55
64
  v-if="!isPodcastmaker"
65
+ class="d-flex flex-grow align-items-center flex-column"
56
66
  >
57
67
  <div class="d-flex flex-column">
58
- <div class="text-dark">&copy; Saooti 2019</div>
59
- <router-link class="linkHover" to="/main/pub/contact">{{
60
- $t('Contact')
61
- }}</router-link>
62
- <router-link class="linkHover" to="/main/pub/cgu">{{
63
- $t('Term of use')
64
- }}</router-link>
65
- <router-link class="linkHover" to="/main/pub/libraries">{{
66
- $t('Used libraries')
67
- }}</router-link>
68
+ <div class="text-dark">
69
+ &copy; Saooti 2019
70
+ </div>
71
+ <router-link
72
+ class="linkHover"
73
+ to="/main/pub/contact"
74
+ >
75
+ {{
76
+ $t('Contact')
77
+ }}
78
+ </router-link>
79
+ <router-link
80
+ class="linkHover"
81
+ to="/main/pub/cgu"
82
+ >
83
+ {{
84
+ $t('Term of use')
85
+ }}
86
+ </router-link>
87
+ <router-link
88
+ class="linkHover"
89
+ to="/main/pub/libraries"
90
+ >
91
+ {{
92
+ $t('Used libraries')
93
+ }}
94
+ </router-link>
95
+ <a
96
+ class="linkHover c-hand"
97
+ @click="changeLanguage"
98
+ >{{
99
+ $t('Change locale')
100
+ }}</a>
68
101
  </div>
69
102
  </div>
70
- <hr class="divided-line show-phone" />
103
+ <hr class="divided-line show-phone">
71
104
  <div class="flex-grow">
72
105
  <a
73
106
  href="https://www.acpm.fr/L-ACPM/Certifications-et-Labels/Les-Podcasts"
107
+ rel="noopener"
74
108
  target="_blank"
75
109
  :aria-label="$t('Octopus is ACPM Podcast accredited')"
76
110
  >
77
111
  <img
78
112
  class="acpm_image"
79
- src="/img/ACPM.PNG"
113
+ src="/img/ACPM.png"
80
114
  :title="$t('Octopus is ACPM Podcast accredited')"
81
115
  :alt="$t('Octopus is ACPM Podcast accredited')"
82
- />
116
+ >
83
117
  </a>
84
118
  </div>
85
119
  <div
86
- class="d-flex flex-grow align-items-center flex-column"
87
120
  v-if="isPodcastmaker && isContactLink"
121
+ class="d-flex flex-grow align-items-center flex-column"
88
122
  >
89
123
  <div class="d-flex flex-column">
90
124
  <a
91
- class="linkHover"
92
125
  id="footer-contact"
126
+ class="linkHover"
93
127
  :href="isContactLink"
128
+ rel="noopener"
94
129
  target="_blank"
95
- >{{ $t('Contact') }}</a
96
- >
130
+ >{{ $t('Contact') }}</a>
97
131
  </div>
98
132
  </div>
99
133
  </div>
100
134
  <Player @hide="showBlackBorder" />
101
135
  </div>
102
136
  </template>
137
+
138
+ <script lang="ts">
139
+ import Player from './Player.vue';
140
+ import { state } from '../../store/paramStore';
141
+ const octopusApi = require('@saooti/octopus-api');
142
+ const moment = require('moment');
143
+ import { Category } from '@/store/class/category';
144
+ import { RubriquageFilter } from '@/store/class/rubriquageFilter';
145
+ import { defineComponent } from 'vue'
146
+ export default defineComponent({
147
+ name: 'Footer',
148
+ components: {
149
+ Player,
150
+ },
151
+
152
+ computed: {
153
+ isPodcastmaker(): boolean {
154
+ return state.generalParameters.podcastmaker;
155
+ },
156
+ isBarTop(): boolean {
157
+ return state.player.barTop;
158
+ },
159
+ isContactLink(): string {
160
+ return state.footer.contactLink;
161
+ },
162
+ rubriqueQueryParam(): string|undefined{
163
+ if(this.$store.state.filter && this.$store.state.filter.rubriqueFilter && this.$store.state.filter.rubriqueFilter.length){
164
+ return this.$store.state.filter.rubriqueFilter.map((value: RubriquageFilter) => value.rubriquageId+':'+value.rubriqueId).join();
165
+ }
166
+ return undefined;
167
+ },
168
+ },
169
+
170
+ methods: {
171
+ showBlackBorder(hide: boolean): void {
172
+ const footerElement = document.getElementById('footer');
173
+ if(null===footerElement){return}
174
+ if (hide) {
175
+ footerElement.classList.remove('border-round');
176
+ } else if (!this.isBarTop) {
177
+ footerElement.className += ' border-round';
178
+ }
179
+ },
180
+ changeLanguage(): void{
181
+ if('fr'===this.$i18n.locale){
182
+ this.$i18n.locale= "en";
183
+ }else{
184
+ this.$i18n.locale= "fr";
185
+ }
186
+ moment.locale(this.$i18n.locale);
187
+ octopusApi.fetchCategories({ lang: this.$i18n.locale }).then((data: Array<Category>) => {
188
+ this.$store.commit('categoriesSet', data);
189
+ if(this.$store.state.filter.iab){
190
+ const category = this.$store.state.categories.filter((c: any) => {
191
+ return c.id === this.$store.state.filter.iab.id;
192
+ });
193
+ if(category.length){
194
+ this.$store.commit('filterIab', category[0]);
195
+ }
196
+ }
197
+ });
198
+ }
199
+ },
200
+ })
201
+ </script>
202
+
103
203
  <style lang="scss">
104
204
  #footer {
105
205
  font-size: 0.7rem;
@@ -130,39 +230,4 @@
130
230
  }
131
231
  }
132
232
  }
133
- </style>
134
-
135
- <script lang="ts">
136
- import Player from './Player.vue';
137
- import { state } from '../../store/paramStore';
138
-
139
- import { defineComponent } from 'vue'
140
- export default defineComponent({
141
- name: 'Footer',
142
- components: {
143
- Player,
144
- },
145
-
146
- computed: {
147
- isPodcastmaker() {
148
- return state.generalParameters.podcastmaker;
149
- },
150
- isBarTop() {
151
- return state.player.barTop;
152
- },
153
- isContactLink() {
154
- return state.footer.contactLink;
155
- },
156
- },
157
-
158
- methods: {
159
- showBlackBorder(hide:any) {
160
- if (hide) {
161
- document.getElementById('footer')!.classList.remove('border-round');
162
- } else if (!this.isBarTop) {
163
- document.getElementById('footer')!.className += ' border-round';
164
- }
165
- },
166
- },
167
- });
168
- </script>
233
+ </style>