@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,47 +1,142 @@
1
1
  <template>
2
2
  <div>
3
- <b-modal
3
+ <div
4
4
  id="share-modal"
5
- @close="closePopup"
6
- @hide="closePopup"
7
- @cancel="closePopup"
8
- :title="$t('Share the player')"
5
+ class="modal"
9
6
  >
10
- <template v-slot:default>
11
- <b-tabs content-class="p-2 share-modal-border">
12
- <b-tab :title="$t('Embed link')" class="tab-pane" active>
13
- <p>{{ embedLink }}</p>
14
- <div
15
- class="saooti-copy"
16
- @click="onCopyCode(embedLink, afterCopy)"
17
- ></div>
18
- </b-tab>
19
- <b-tab :title="$t('Embedly link')" class="tab-pane">
20
- <p>{{ embedlyLink }}</p>
21
- <div
22
- class="saooti-copy"
23
- @click="onCopyCode(embedlyLink, afterCopy)"
24
- ></div>
25
- </b-tab>
26
- <b-tab :title="$t('Direct link')" class="tab-pane" v-if="directLink">
27
- <p>{{ directLink.audioUrl }}</p>
28
- <div
29
- class="saooti-copy"
30
- @click="onCopyCode(directLink.audioUrl, afterCopy)"
31
- ></div>
32
- </b-tab>
33
- </b-tabs>
34
- </template>
35
- <template v-slot:modal-footer>
36
- <button class="btn btn-primary m-1" @click="closePopup">
37
- {{ $t('Close') }}
38
- </button>
39
- </template>
40
- </b-modal>
41
- <Snackbar ref="snackbar" position="bottom-left"></Snackbar>
7
+ <div class="modal-backdrop" />
8
+ <div class="modal-dialog">
9
+ <div class="modal-content">
10
+ <div class="modal-header">
11
+ <h5 class="modal-title">
12
+ {{ $t('Share the player') }}
13
+ </h5>
14
+ <button
15
+ type="button"
16
+ class="btn-close"
17
+ aria-label="Close"
18
+ @click="closePopup"
19
+ />
20
+ </div>
21
+ <div class="modal-body">
22
+ <ul class="nav nav-tabs">
23
+ <li
24
+ v-for="(tab, index) in tabs"
25
+ :key="tab"
26
+ class="nav-item"
27
+ >
28
+ <div
29
+ class="nav-link"
30
+ :class="activeTab === index? 'active':''"
31
+ @click="activeTab = index"
32
+ >
33
+ {{ tab }}
34
+ </div>
35
+ </li>
36
+ </ul>
37
+ <div class="tab-content p-2 share-modal-border">
38
+ <div
39
+ class="tab-pane tab-pane"
40
+ :class="activeTab === 0? 'active':''"
41
+ >
42
+ <p>{{ embedLink }}</p>
43
+ <div
44
+ class="saooti-copy"
45
+ @click="onCopyCode(embedLink, afterCopy)"
46
+ />
47
+ </div>
48
+ <div
49
+ class="tab-pane tab-pane"
50
+ :class="activeTab === 1? 'active':''"
51
+ >
52
+ <div class="d-flex flex-column">
53
+ <div class="d-flex">
54
+ <p>{{ embedlyLink }}</p>
55
+ <div
56
+ class="saooti-copy"
57
+ @click="onCopyCode(embedlyLink, afterCopy)"
58
+ />
59
+ </div>
60
+ <QrCode :url="embedlyLink" />
61
+ </div>
62
+ </div>
63
+ <div
64
+ v-if="directLink"
65
+ class="tab-pane tab-pane active"
66
+ :class="activeTab === 2? 'active':''"
67
+ >
68
+ <p>{{ directLink.audioUrl }}</p>
69
+ <div
70
+ class="saooti-copy"
71
+ @click="onCopyCode(directLink.audioUrl, snackbarRef)"
72
+ />
73
+ </div>
74
+ </div>
75
+ </div>
76
+ <div class="modal-footer">
77
+ <button
78
+ class="btn btn-primary m-1"
79
+ @click="closePopup"
80
+ >
81
+ {{ $t('Close') }}
82
+ </button>
83
+ </div>
84
+ </div>
85
+ </div>
86
+ </div>
87
+ <Snackbar
88
+ ref="snackbar"
89
+ position="bottom-left"
90
+ />
42
91
  </div>
43
92
  </template>
44
93
 
94
+ <script lang="ts">
95
+ import Snackbar from '../Snackbar.vue';
96
+ import { displayMethods } from '../../mixins/functions';
97
+
98
+ import QrCode from '../../display/sharing/QrCode.vue';
99
+ import { defineComponent } from 'vue'
100
+ import { Podcast } from '@/store/class/podcast';
101
+ export default defineComponent({
102
+ name: 'ShareModalPlayer',
103
+
104
+ components: {
105
+ Snackbar,
106
+ QrCode
107
+ },
108
+ mixins: [displayMethods],
109
+ props: {
110
+ embedLink: { default: undefined, type: String},
111
+ embedlyLink: { default: undefined, type: String},
112
+ directLink: { default: undefined, type: Object as ()=>Podcast},
113
+ },
114
+ emits: ['close'],
115
+ data() {
116
+ return {
117
+ activeTab: 0 as number,
118
+ };
119
+ },
120
+ computed:{
121
+ tabs(): Array<string>{
122
+ if(this.directLink){
123
+ return [this.$t('Embed link'),this.$t('Embedly link'),this.$t('Direct link')];
124
+ }
125
+ return [this.$t('Embed link'),this.$t('Embedly link')];
126
+ }
127
+ },
128
+ methods: {
129
+ closePopup(event: { preventDefault: () => void }): void {
130
+ event.preventDefault();
131
+ this.$emit('close');
132
+ },
133
+ afterCopy(): void{
134
+ (this.$refs.snackbar as any).open(this.$t('Data in clipboard'));
135
+ }
136
+ },
137
+ })
138
+ </script>
139
+
45
140
  <style lang="scss">
46
141
  .share-modal-border {
47
142
  border-right: solid 1px rgb(222, 226, 230);
@@ -82,40 +177,4 @@
82
177
  align-self: center;
83
178
  }
84
179
  }
85
- </style>
86
- <script lang="ts">
87
- import Snackbar from '../Snackbar.vue';
88
- import { displayMethods } from '../../mixins/functions';
89
- import { defineComponent } from 'vue'
90
- export default defineComponent({
91
- name: 'ShareModalPlayer',
92
-
93
- props: ['embedLink', 'embedlyLink', 'directLink'],
94
- emits: ['close'],
95
-
96
- components: {
97
- Snackbar,
98
- },
99
-
100
- mixins: [displayMethods],
101
-
102
- mounted() {
103
- /* this.$bvModal.show('share-modal'); */
104
- },
105
- computed: {
106
- snackbarRef():any {
107
- return this.$refs.snackbar;
108
- },
109
- },
110
-
111
- methods: {
112
- closePopup(event: { preventDefault: () => void; }) {
113
- event.preventDefault();
114
- this.$emit('close');
115
- },
116
- afterCopy(){
117
- this.snackbarRef.open(this.$t('Data in clipboard'));
118
- }
119
- },
120
- });
121
- </script>
180
+ </style>
@@ -1,23 +1,25 @@
1
- export const selenium = {
1
+
2
+ export const selenium ={
2
3
  methods: {
3
- seleniumFormat(string: string) {
4
+ seleniumFormat(string: string): string {
4
5
  return string.toLowerCase().replace(/\s/g, '');
5
6
  },
6
7
  },
7
8
  };
8
- export const cookies = {
9
+ export const cookies =
10
+ {
9
11
  methods: {
10
- setCookie(name: string, value: any) {
11
- var date = new Date();
12
+ setCookie(name: string, value: string, domain= ""): void {
13
+ const date = new Date();
12
14
  date.setTime(date.getTime() + 24 * 60 * 60 * 1000);
13
- var expires = '; expires=' + date.toUTCString();
14
- document.cookie = name + '=' + (value || '') + expires + '; path=/';
15
+ const expires = '; expires=' + date.toUTCString();
16
+ document.cookie = name + '=' + (value || '') + expires +domain+ '; path=/';
15
17
  },
16
- getCookie(name: string) {
17
- var nameEQ = name + '=';
18
- var ca = document.cookie.split(';');
19
- for (var i = 0; i < ca.length; i++) {
20
- var c = ca[i];
18
+ getCookie(name: string): string|null {
19
+ const nameEQ = name + '=';
20
+ const ca = document.cookie.split(';');
21
+ for (let i = 0; i < ca.length; i++) {
22
+ let c = ca[i];
21
23
  while (c.charAt(0) == ' ') c = c.substring(1, c.length);
22
24
  if (0 === c.indexOf(nameEQ))
23
25
  return c.substring(nameEQ.length, c.length);
@@ -27,21 +29,21 @@ export const cookies = {
27
29
  },
28
30
  };
29
31
 
30
- export const displayMethods = {
32
+ export const displayMethods ={
31
33
  methods: {
32
- urlify(text: string) {
33
- let urlRegex = /(https?:\/\/[^\s]+)/g;
34
+ urlify(text: string): string {
35
+ const urlRegex = /(https?:\/\/[^\s<]+)/g;
34
36
  if (!text) return '';
35
37
  return text.replace(urlRegex, (url: string) => {
36
- return '<a href="' + url + '" target="_blank">' + url + '</a>';
38
+ return '<a href="' + url + '" target="_blank" rel="noopener">' + url + '</a>';
37
39
  });
38
40
  },
39
- async onCopyCode(link: string, callback: ()=>void) {
41
+ async onCopyCode(link: string, callback: () => void): Promise<any> {
40
42
  if ('undefined' !== typeof navigator.clipboard) {
41
43
  await navigator.clipboard.writeText(link);
42
44
  return callback();
43
45
  }
44
- let textArea = document.createElement('textarea');
46
+ const textArea = document.createElement('textarea');
45
47
  textArea.value = link;
46
48
  textArea.style.position = 'fixed';
47
49
  document.body.appendChild(textArea);
@@ -53,3 +55,4 @@ export const displayMethods = {
53
55
  },
54
56
  },
55
57
  };
58
+
@@ -0,0 +1,24 @@
1
+
2
+ import { Category } from "@/store/class/category";
3
+ import { orgaFilter } from '../mixins/organisationFilter';
4
+ const octopusApi = require('@saooti/octopus-api');
5
+ import { state } from '../../store/paramStore';
6
+ import { defineComponent } from 'vue';
7
+ export const initSDK = defineComponent({
8
+ mixins: [orgaFilter],
9
+ methods: {
10
+ async initSdk() {
11
+ if (0 === state.generalParameters.allCategories.length) {
12
+ octopusApi.fetchCategories({ lang: this.$i18n.locale }).then((data: Array<Category>) => {
13
+ this.$store.commit('categoriesSet', data);
14
+ });
15
+ }else{
16
+ this.$store.commit('categoriesSet', state.generalParameters.allCategories);
17
+ }
18
+ const captcha = (document.getElementsByClassName('grecaptcha-badge')[0] as HTMLElement);
19
+ if (captcha) {
20
+ captcha.style.display = 'none';
21
+ }
22
+ },
23
+ },
24
+ });
@@ -0,0 +1,24 @@
1
+
2
+ import { Rubriquage } from "@/store/class/rubriquage";
3
+ const octopusApi = require('@saooti/octopus-api');
4
+ import { defineComponent } from 'vue'
5
+ export const orgaFilter = defineComponent({
6
+ methods: {
7
+ async selectOrganisation(organisationId: string): Promise<void> {
8
+ const response = await octopusApi.fetchOrganisation(organisationId);
9
+ const data = await octopusApi.fetchTopics(organisationId, {
10
+ sort:'HOMEPAGEORDER',
11
+ homePageOrder: true
12
+ });
13
+ const isLive = await octopusApi.liveEnabledOrganisation(organisationId);
14
+ this.$store.commit('filterOrga', {
15
+ orgaId: organisationId,
16
+ imgUrl: response.imageUrl,
17
+ rubriquageArray: data.filter((element: Rubriquage)=>{
18
+ return element.rubriques.length;
19
+ }),
20
+ isLive: isLive
21
+ });
22
+ },
23
+ },
24
+ });
@@ -2,60 +2,60 @@
2
2
  <div class="page-box">
3
3
  <h1>{{ title }}</h1>
4
4
  <PodcastList
5
- :first="first"
6
- :size="size"
7
- :iabId="iabId"
8
- :organisationId="filterOrga"
5
+ :first="firstRoute"
6
+ :size="sizeRoute"
7
+ :iab-id="iabId"
8
+ :organisation-id="filterOrga"
9
9
  />
10
10
  </div>
11
11
  </template>
12
12
 
13
- <style lang="scss"></style>
14
-
15
13
  <script lang="ts">
16
- // @ is an alias to /src
17
14
  import PodcastList from '../display/podcasts/PodcastList.vue';
18
- import { state } from '../../store/paramStore';
19
15
 
20
16
  import { defineComponent } from 'vue'
21
17
  export default defineComponent({
22
18
  components: {
23
19
  PodcastList,
24
20
  },
25
-
26
- props: ['first', 'size', 'iabId'],
27
-
28
- mounted() {
29
- this.extractTitle(this.iabId);
21
+ props: {
22
+ firstRoute: { default: 0, type: Number},
23
+ sizeRoute: { default: 12, type: Number},
24
+ iabId: { default: undefined, type: Number},
30
25
  },
31
26
 
32
27
  data() {
33
28
  return {
34
- title: '',
29
+ title: '' as string,
35
30
  };
36
31
  },
37
32
 
38
33
  computed: {
39
- categories() {
40
- return state.generalParameters.allCategories;
34
+ categories(): any {
35
+ return this.$store.state.categories;
41
36
  },
42
- filterOrga():any {
37
+ filterOrga(): string {
43
38
  return this.$store.state.filter.organisationId;
44
39
  },
45
40
  },
41
+ watch: {
42
+ iabId(): void {
43
+ this.extractTitle();
44
+ },
45
+ },
46
46
 
47
+ mounted() {
48
+ this.extractTitle();
49
+ },
47
50
  methods: {
48
- extractTitle(iabId: any) {
49
- const matchCategories = this.categories.filter((c: any) => c.id === iabId);
50
- if (1 !== matchCategories.length) return '';
51
+ extractTitle(): void {
52
+ const matchCategories = this.categories.filter((c: any) => c.id === this.iabId);
53
+ if (1 !== matchCategories.length) return;
51
54
  this.title = matchCategories[0]['name'];
52
- },
53
- },
54
55
 
55
- watch: {
56
- iabId(val) {
57
- this.extractTitle(val);
58
56
  },
59
57
  },
60
- });
58
+ })
61
59
  </script>
60
+
61
+ <style lang="scss"></style>