@ozdao/martyrs 0.2.564 → 0.2.566

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 (366) hide show
  1. package/dist/abac-BPl9Bmf9.js +1527 -0
  2. package/dist/builder.js +51 -39
  3. package/dist/{common.schema-GFSlNJo7.js → common.schema-DswiUXKB.js} +1 -1
  4. package/dist/community.server.js +48 -9
  5. package/dist/core.server.js +6 -4
  6. package/dist/{crud-C7FSTUes.js → crud-q1ye5IhV.js} +7 -7
  7. package/dist/events.server.js +3 -3
  8. package/dist/gallery.server.js +2 -2
  9. package/dist/inventory.server.js +4 -6
  10. package/dist/{main-CmjWiDVF.js → main-B9o1iBAZ.js} +1279 -1287
  11. package/dist/marketplace.server.js +1 -1
  12. package/dist/martyrs/dist/main-B9o1iBAZ.js +943 -0
  13. package/dist/martyrs/dist/main-B9o1iBAZ.js.map +1 -0
  14. package/dist/martyrs/dist/web-BF3ijvEr.js +55 -0
  15. package/dist/martyrs/dist/web-BF3ijvEr.js.map +1 -0
  16. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js +96 -0
  17. package/dist/martyrs/src/components/BottomSheet/BottomSheet.vue.js.map +1 -0
  18. package/dist/martyrs/src/components/Button/{Button.vue.js → Button.vue2.js} +36 -45
  19. package/dist/martyrs/src/components/Button/Button.vue2.js.map +1 -0
  20. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  21. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  22. package/dist/martyrs/src/components/Field/{Field.vue2.js → Field.vue.js} +2 -2
  23. package/dist/martyrs/src/components/Field/Field.vue.js.map +1 -0
  24. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +2 -2
  25. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js +1 -1
  26. package/dist/martyrs/src/components/FieldPhone/FieldPhone.vue.js.map +1 -1
  27. package/dist/martyrs/src/components/Loader/{Loader.vue2.js → Loader.vue.js} +3 -4
  28. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +1 -0
  29. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  30. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  31. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  32. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  33. package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
  34. package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
  35. package/dist/martyrs/src/components/SelectMulti/{SelectMulti.vue.js → SelectMulti.vue2.js} +2 -2
  36. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue2.js.map +1 -0
  37. package/dist/martyrs/src/components/Tree/Tree.vue.js +6 -3
  38. package/dist/martyrs/src/components/Tree/Tree.vue.js.map +1 -1
  39. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  40. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  41. package/dist/martyrs/src/modules/auth/auth.client.js +10 -7
  42. package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
  43. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +2 -2
  45. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +2 -2
  46. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +3 -3
  47. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +1 -1
  49. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +2 -2
  50. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +2 -2
  51. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +13 -13
  52. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  53. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +2 -2
  54. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +2 -2
  55. package/dist/martyrs/src/modules/auth/views/router/auth.router.js +116 -0
  56. package/dist/martyrs/src/modules/auth/views/router/auth.router.js.map +1 -0
  57. package/dist/martyrs/src/modules/auth/views/router/users.router.js +180 -0
  58. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -0
  59. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js +4 -4
  60. package/dist/martyrs/src/modules/backoffice/components/partials/Sidebar.vue.js.map +1 -1
  61. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
  62. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
  63. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +2 -2
  64. package/dist/martyrs/src/modules/constructor/components/elements/Card.vue.js +1 -1
  65. package/dist/martyrs/src/modules/constructor/components/elements/Embed.vue.js +1 -1
  66. package/dist/martyrs/src/modules/core/locales/en.js +45 -0
  67. package/dist/martyrs/src/modules/core/locales/en.js.map +1 -1
  68. package/dist/martyrs/src/modules/core/locales/ru.js +45 -0
  69. package/dist/martyrs/src/modules/core/locales/ru.js.map +1 -1
  70. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js +9 -0
  71. package/dist/martyrs/src/modules/core/views/classes/i18n.manager.js.map +1 -1
  72. package/dist/martyrs/src/modules/core/views/components/blocks/BlockSearch.vue.js +1 -1
  73. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +1 -1
  74. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +1 -1
  75. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +2 -2
  76. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js +1 -1
  77. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +3 -2
  78. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  79. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +2 -2
  80. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +1 -1
  81. package/dist/martyrs/src/modules/core/views/components/sections/Walkthrough.vue.js +1 -1
  82. package/dist/martyrs/src/modules/core/views/components/sections/filters/FilterRange.vue.js +1 -1
  83. package/dist/martyrs/src/modules/core/views/mixins/mixins.js +1 -2
  84. package/dist/martyrs/src/modules/core/views/mixins/mixins.js.map +1 -1
  85. package/dist/martyrs/src/modules/core/views/router/addRoutes.js +6 -1
  86. package/dist/martyrs/src/modules/core/views/router/addRoutes.js.map +1 -1
  87. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +2 -2
  88. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  89. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +4 -4
  90. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +2 -2
  91. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +2 -2
  92. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +2 -2
  93. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  94. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  95. package/dist/martyrs/src/modules/events/events.client.js +15 -12
  96. package/dist/martyrs/src/modules/events/events.client.js.map +1 -1
  97. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +4 -4
  98. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +3 -3
  99. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  100. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  101. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +3 -3
  102. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +5 -5
  103. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js.map +1 -1
  104. package/dist/martyrs/src/modules/marketplace/views/components/pages/Marketplace.vue.js +1 -1
  105. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  106. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +95 -0
  107. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js.map +1 -0
  108. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +6 -3
  109. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js.map +1 -1
  110. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +25 -25
  111. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js.map +1 -1
  112. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  113. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  114. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +3 -3
  115. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +4 -4
  116. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +2 -2
  117. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  118. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +3 -3
  119. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js +31 -6
  120. package/dist/martyrs/src/modules/music/components/layouts/MusicBottomPlayer.vue.js.map +1 -1
  121. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +121 -206
  122. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js.map +1 -1
  123. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +2 -2
  124. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js +9 -13
  125. package/dist/martyrs/src/modules/music/components/pages/MusicHome.vue.js.map +1 -1
  126. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  127. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +167 -246
  128. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js.map +1 -1
  129. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +2 -2
  130. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +136 -221
  131. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js.map +1 -1
  132. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +1 -1
  133. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +171 -0
  134. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js.map +1 -0
  135. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +32 -154
  136. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js.map +1 -1
  137. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +96 -0
  138. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js.map +1 -0
  139. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +55 -27
  140. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/music/components/player/tonar.png.js +5 -0
  142. package/dist/martyrs/src/modules/music/components/player/tonar.png.js.map +1 -0
  143. package/dist/martyrs/src/modules/music/store/albums.js +8 -2
  144. package/dist/martyrs/src/modules/music/store/albums.js.map +1 -1
  145. package/dist/martyrs/src/modules/music/store/player.js +83 -65
  146. package/dist/martyrs/src/modules/music/store/player.js.map +1 -1
  147. package/dist/martyrs/src/modules/music/store/tracks.js +4 -13
  148. package/dist/martyrs/src/modules/music/store/tracks.js.map +1 -1
  149. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js +4 -4
  150. package/dist/martyrs/src/modules/notifications/components/elements/NotificationBadge.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/notifications/notifications.client.js +2 -2
  152. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js +3 -0
  153. package/dist/martyrs/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue.js.map +1 -1
  154. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +3 -3
  155. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +3 -3
  156. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +2 -2
  157. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  158. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  159. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +2 -2
  160. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
  161. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
  162. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -2
  163. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  164. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js +1 -1
  165. package/dist/martyrs/src/modules/organizations/components/blocks/CardOrganization.vue.js.map +1 -1
  166. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  167. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  168. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +2 -2
  169. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +2 -2
  170. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  171. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +2 -2
  172. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +5 -5
  173. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
  174. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +3 -3
  175. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +3 -3
  176. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
  177. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +2 -2
  178. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +2 -2
  179. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  180. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js +1 -1
  181. package/dist/martyrs/src/modules/products/components/blocks/CardCategory.vue.js.map +1 -1
  182. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js +15 -2
  183. package/dist/martyrs/src/modules/products/components/blocks/CardProduct.vue.js.map +1 -1
  184. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  185. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +10 -7
  186. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  187. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +7 -6
  188. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
  189. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +11 -2
  190. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  191. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +4 -4
  192. package/dist/martyrs/src/modules/products/components/pages/ProductRecommmendation.vue.js +1 -1
  193. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  194. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +2 -2
  195. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +3 -3
  196. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +3 -3
  197. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  198. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  199. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +11 -8
  200. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js.map +1 -1
  201. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  202. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +211 -61
  203. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js.map +1 -1
  204. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  205. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +2 -2
  206. package/dist/martyrs/src/modules/spots/components/layouts/Spots.vue.js +1 -1
  207. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +4 -4
  208. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js.map +1 -1
  209. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +3 -3
  210. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +3 -3
  211. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +1 -1
  212. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +2 -2
  213. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
  214. package/dist/martyrs.css +1 -1
  215. package/dist/martyrs.es.js +1 -1
  216. package/dist/music.server.js +44 -18
  217. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js +1 -0
  218. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +1 -0
  219. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js +1 -1
  220. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/index.js.map +1 -1
  221. package/dist/node_modules/.pnpm/{@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1 → @capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4}/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js +16 -1
  222. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.3.0_@capacitor_core@7.4.4/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +1 -0
  223. package/dist/node_modules/.pnpm/{@capacitor_core@7.0.1 → @capacitor_core@7.4.4}/node_modules/@capacitor/core/dist/index.js +2 -1
  224. package/dist/node_modules/.pnpm/@capacitor_core@7.4.4/node_modules/@capacitor/core/dist/index.js.map +1 -0
  225. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js +1 -1
  226. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/index.js.map +1 -1
  227. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js +1 -1
  228. package/dist/node_modules/.pnpm/{@capacitor_device@7.0.0_@capacitor_core@7.0.1 → @capacitor_device@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/device/dist/esm/web.js.map +1 -1
  229. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js.map +1 -1
  230. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js +1 -1
  231. package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/index.js.map +1 -1
  232. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js +1 -1
  233. package/dist/node_modules/.pnpm/{@capacitor_push-notifications@7.0.0_@capacitor_core@7.0.1 → @capacitor_push-notifications@7.0.3_@capacitor_core@7.4.4}/node_modules/@capacitor/push-notifications/dist/esm/index.js.map +1 -1
  234. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js +1 -1
  235. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/index.js.map +1 -1
  236. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js +1 -1
  237. package/dist/node_modules/.pnpm/{capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.0.1 → capacitor-plugin-app-tracking-transparency@2.0.5_@capacitor_core@7.4.4}/node_modules/capacitor-plugin-app-tracking-transparency/dist/esm/web.js.map +1 -1
  238. package/dist/notifications.server.js +0 -3
  239. package/dist/orders.server.js +5 -6
  240. package/dist/organizations.server.js +9 -10
  241. package/dist/products.server.js +27 -26
  242. package/dist/{queryProcessor-CBQgZycY.js → queryProcessor-C_5Iipam.js} +4 -1
  243. package/dist/rents.server.js +2 -3
  244. package/dist/spots.server.js +1 -1
  245. package/dist/style.css +252 -161
  246. package/dist/{web-cNKIl_cL.js → web-BF3ijvEr.js} +1 -1
  247. package/package.json +1 -1
  248. package/src/builder/modes/ssr.rspack.dev.js +4 -3
  249. package/src/builder/rspack/rspack.config.api.js +15 -4
  250. package/src/builder/rspack/rspack.config.base.js +3 -3
  251. package/src/builder/rspack/rspack.config.ssr.client.js +28 -28
  252. package/src/builder/templates/page.js +2 -2
  253. package/src/components/BottomSheet/BottomSheet.vue +4 -4
  254. package/src/components/Button/Button.vue +50 -37
  255. package/src/components/FieldPhone/FieldPhone.vue +1 -1
  256. package/src/components/Loader/Loader.vue +1 -1
  257. package/src/components/Tree/Tree.vue +6 -3
  258. package/src/modules/LAYOUT.MD +767 -0
  259. package/src/modules/PROCESS.md +0 -0
  260. package/src/modules/TASKS.MD +17 -0
  261. package/src/modules/auth/auth.client.js +11 -7
  262. package/src/modules/auth/views/components/pages/SignIn.vue +1 -1
  263. package/src/modules/auth/views/router/auth.router.js +94 -0
  264. package/src/modules/auth/views/router/users.router.js +153 -0
  265. package/src/modules/backoffice/components/partials/Sidebar.vue +7 -7
  266. package/src/modules/community/community.server.js +8 -0
  267. package/src/modules/community/policies/blog.policies.js +55 -0
  268. package/src/modules/community/routes/blog.routes.js +1 -1
  269. package/src/modules/community/routes/comments.routes.js +1 -1
  270. package/src/modules/community/routes/reactions.routes.js +1 -4
  271. package/src/modules/core/controllers/classes/abac/abac.adapter.express.js +206 -124
  272. package/src/modules/core/controllers/classes/abac/abac.adapter.ws.js +203 -50
  273. package/src/modules/core/controllers/classes/abac/abac.core.js +127 -36
  274. package/src/modules/core/controllers/classes/abac/abac.fields.js +144 -179
  275. package/src/modules/core/controllers/classes/abac/abac.js +201 -10
  276. package/src/modules/core/controllers/classes/abac/abac.policies.js +147 -57
  277. package/src/modules/core/controllers/classes/crud/crud.policies.js +5 -5
  278. package/src/modules/core/controllers/policies/core.policies.js +5 -2
  279. package/src/modules/core/controllers/utils/queryProcessor.js +4 -1
  280. package/src/modules/core/core.server.js +1 -0
  281. package/src/modules/core/locales/en.js +45 -0
  282. package/src/modules/core/locales/ru.js +45 -0
  283. package/src/modules/core/models/schemas/common.schema.js +1 -1
  284. package/src/modules/core/views/classes/i18n.manager.js +13 -0
  285. package/src/modules/core/views/components/layouts/Client.vue +1 -1
  286. package/src/modules/core/views/components/sections/filters/FilterPrice.vue +81 -0
  287. package/src/modules/core/views/mixins/mixins.js +1 -2
  288. package/src/modules/core/views/router/addRoutes.js +6 -1
  289. package/src/modules/events/events.client.js +3 -0
  290. package/src/modules/events/routes/events.routes.js +1 -1
  291. package/src/modules/inventory/components/pages/InventoryEdit.vue +3 -3
  292. package/src/modules/inventory/policies/inventory.policies.js +1 -1
  293. package/src/modules/inventory/routes/inventory.routes.js +1 -1
  294. package/src/modules/marketplace/marketplace.router.js +66 -0
  295. package/src/modules/marketplace/views/components/layouts/Marketplace.vue +363 -0
  296. package/src/modules/marketplace/views/components/pages/Catalog.vue +73 -0
  297. package/src/modules/music/components/blocks/ActionButtons.vue +74 -0
  298. package/src/modules/music/components/cards/AlbumCard.vue +1 -1
  299. package/src/modules/music/components/cards/ArtistCardSmall.vue +8 -6
  300. package/src/modules/music/components/layouts/MusicBottomPlayer.vue +94 -4
  301. package/src/modules/music/components/pages/Album.vue +55 -67
  302. package/src/modules/music/components/pages/MusicHome.vue +4 -6
  303. package/src/modules/music/components/pages/Playlist.vue +61 -70
  304. package/src/modules/music/components/pages/Track.vue +54 -71
  305. package/src/modules/music/components/player/FullscreenPlayer.vue +248 -0
  306. package/src/modules/music/components/player/MusicPlayer.vue +21 -216
  307. package/src/modules/music/components/player/PlayerControls.vue +112 -0
  308. package/src/modules/music/components/player/Visualizer.vue +151 -0
  309. package/src/modules/music/components/player/VolumeControl.vue +75 -23
  310. package/src/modules/music/components/player/tonar.png +0 -0
  311. package/src/modules/music/controllers/stream.controller.js +1 -1
  312. package/src/modules/music/music.server.js +1 -1
  313. package/src/modules/music/policies/music.policies.js +3 -2
  314. package/src/modules/music/router/library.router.js +26 -0
  315. package/src/modules/music/router/music.router.js +176 -0
  316. package/src/modules/music/routes/albums.routes.js +13 -12
  317. package/src/modules/music/routes/tracks.routes.js +39 -0
  318. package/src/modules/music/store/albums.js +10 -2
  319. package/src/modules/music/store/player.js +101 -89
  320. package/src/modules/music/store/tracks.js +5 -21
  321. package/src/modules/notifications/components/elements/NotificationBadge.vue +5 -6
  322. package/src/modules/notifications/notifications.server.js +1 -3
  323. package/src/modules/orders/components/elements/FieldSubscribeNewsletter.vue +5 -0
  324. package/src/modules/orders/orders.server.js +0 -1
  325. package/src/modules/organizations/components/blocks/CardOrganization.vue +2 -2
  326. package/src/modules/organizations/components/pages/DepartmentEdit.vue +2 -2
  327. package/src/modules/organizations/components/pages/OrganizationEdit.vue +2 -2
  328. package/src/modules/organizations/policies/organizations.policies.js +12 -6
  329. package/src/modules/organizations/routes/organizations.routes.js +1 -3
  330. package/src/modules/products/components/blocks/CardCategory.vue +1 -1
  331. package/src/modules/products/components/blocks/CardProduct.vue +16 -2
  332. package/src/modules/products/components/pages/Categories.vue +9 -6
  333. package/src/modules/products/components/pages/CategoryEdit.vue +8 -4
  334. package/src/modules/products/components/pages/Product.vue +11 -5
  335. package/src/modules/products/components/sections/SectionProduct.vue +11 -7
  336. package/src/modules/products/controllers/categories.controller.js +32 -27
  337. package/src/modules/products/routes/categories.routes.js +1 -1
  338. package/src/modules/rents/controllers/routes/rents.routes.js +1 -1
  339. package/src/modules/rents/views/components/pages/RentsEdit.vue +208 -49
  340. package/src/modules/spots/components/pages/Map.vue +2 -2
  341. package/src/styles/config.scss +6 -6
  342. package/dist/abac-DYoheWuc.js +0 -1031
  343. package/dist/core.abac-DUPBnlk6.js +0 -298
  344. package/dist/core.logger-C3q8A9dl.js +0 -51
  345. package/dist/martyrs/src/components/Button/Button.vue.js.map +0 -1
  346. package/dist/martyrs/src/components/Field/Field.vue2.js.map +0 -1
  347. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +0 -1
  348. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  349. package/dist/martyrs/src/components/Select/Select.vue2.js.map +0 -1
  350. package/dist/martyrs/src/components/SelectMulti/SelectMulti.vue.js.map +0 -1
  351. package/dist/martyrs/src/modules/auth/auth.router.js +0 -342
  352. package/dist/martyrs/src/modules/auth/auth.router.js.map +0 -1
  353. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/definitions.js.map +0 -1
  354. package/dist/node_modules/.pnpm/@capacitor-mlkit_barcode-scanning@7.1.0_@capacitor_core@7.0.1/node_modules/@capacitor-mlkit/barcode-scanning/dist/esm/web.js.map +0 -1
  355. package/dist/node_modules/.pnpm/@capacitor_core@7.0.1/node_modules/@capacitor/core/dist/index.js.map +0 -1
  356. package/src/modules/auth/auth.router.js +0 -262
  357. package/src/modules/core/controllers/classes/abac/v2/abac-core-fixed.js +0 -313
  358. package/src/modules/core/controllers/classes/abac/v2/abac-express-fixed.js +0 -276
  359. package/src/modules/core/controllers/classes/abac/v2/abac-fields-fixed.js +0 -425
  360. package/src/modules/core/controllers/classes/abac/v2/abac-main-fixed.js +0 -295
  361. package/src/modules/core/controllers/classes/abac/v2/abac-policies-fixed.js +0 -316
  362. package/src/modules/core/controllers/classes/abac/v2/abac-ws-fixed.js +0 -237
  363. package/src/modules/core/controllers/classes/core.abac.js +0 -310
  364. package/src/modules/core/controllers/classes/core.crud.js +0 -89
  365. package/src/modules/governance/reactcode/eslint.config.js +0 -28
  366. /package/dist/node_modules/.pnpm/{@capacitor_keyboard@7.0.0_@capacitor_core@7.0.1 → @capacitor_keyboard@7.0.1_@capacitor_core@7.4.4}/node_modules/@capacitor/keyboard/dist/esm/definitions.js +0 -0
@@ -5,19 +5,23 @@ import { reactive } from 'vue';
5
5
  // State
6
6
  export const state = reactive({
7
7
  currentTrack: null,
8
+ currentTrackIndex: 0,
8
9
  queue: [],
9
10
  isPlaying: false,
10
11
  volume: 0.7,
11
12
  muted: false,
12
13
  currentTime: 0,
13
14
  duration: 0,
14
- repeat: 'none', // 'none', 'all', 'one'
15
+ repeat: false,
15
16
  shuffle: false,
16
17
  initialQueue: [], // To keep original order when shuffle is toggled
17
18
  audioElement: null,
18
19
  audioContext: null,
19
20
  listeningPartyId: null,
20
21
  syncInProgress: false,
22
+ showFullPlayer: false,
23
+ rotationAngle: 0,
24
+ animationFrameId: null,
21
25
  });
22
26
 
23
27
  // Actions
@@ -53,15 +57,24 @@ export const actions = {
53
57
  });
54
58
 
55
59
  state.audioElement.addEventListener('ended', () => {
56
- this.playNext();
60
+ if (state.repeat) {
61
+ // Restart текущего трека
62
+ this.seek(0);
63
+ state.audioElement.play().catch(e => console.error(e));
64
+ } else {
65
+ // Следующий трек
66
+ this.playNext();
67
+ }
57
68
  });
58
69
 
59
70
  state.audioElement.addEventListener('play', () => {
60
71
  state.isPlaying = true;
72
+ this.startRotation();
61
73
  });
62
74
 
63
75
  state.audioElement.addEventListener('pause', () => {
64
76
  state.isPlaying = false;
77
+ this.stopRotation();
65
78
  });
66
79
  }
67
80
  }
@@ -165,24 +178,11 @@ export const actions = {
165
178
  setQueue(tracks, startIndex = 0) {
166
179
  state.queue = [...tracks];
167
180
  state.initialQueue = [...tracks];
181
+ state.currentTrackIndex = startIndex;
168
182
 
169
- if (startIndex > 0 && startIndex < tracks.length) {
170
- // Rearrange queue to start from the selected track
171
- const tracksToPlay = state.queue.splice(startIndex);
172
- state.queue = [...tracksToPlay, ...state.queue];
173
- }
174
-
175
- // If shuffle is on, randomize the queue except the first track
176
- if (state.shuffle && state.queue.length > 1) {
177
- const firstTrack = state.queue[0];
178
- const remainingTracks = state.queue.slice(1);
179
- this.shuffleArray(remainingTracks);
180
- state.queue = [firstTrack, ...remainingTracks];
181
- }
182
-
183
- // Start playing the first track in queue
184
- if (state.queue.length > 0) {
185
- this.playTrack(state.queue[0]);
183
+ // Start playing the track at startIndex
184
+ if (state.queue.length > 0 && state.queue[startIndex]) {
185
+ this.playTrack(state.queue[startIndex]);
186
186
  }
187
187
  },
188
188
 
@@ -199,6 +199,25 @@ export const actions = {
199
199
  removeFromQueue(index) {
200
200
  if (index >= 0 && index < state.queue.length) {
201
201
  state.queue.splice(index, 1);
202
+ state.initialQueue.splice(index, 1);
203
+
204
+ // Корректируем currentTrackIndex если нужно
205
+ if (index < state.currentTrackIndex) {
206
+ // Удалили трек до текущего - сдвигаем индекс назад
207
+ state.currentTrackIndex--;
208
+ } else if (index === state.currentTrackIndex) {
209
+ // Удалили текущий трек - играем следующий (или первый если был последний)
210
+ if (state.queue.length > 0) {
211
+ if (state.currentTrackIndex >= state.queue.length) {
212
+ state.currentTrackIndex = 0;
213
+ }
214
+ this.playTrack(state.queue[state.currentTrackIndex]);
215
+ } else {
216
+ state.currentTrack = null;
217
+ state.isPlaying = false;
218
+ }
219
+ }
220
+ // Если удалили трек после текущего - ничего не делаем
202
221
  }
203
222
  },
204
223
 
@@ -216,95 +235,46 @@ export const actions = {
216
235
  },
217
236
 
218
237
  playNext() {
219
- if (state.queue.length <= 1) {
220
- // Only one track or empty queue
221
- if (state.repeat === 'one' || state.repeat === 'all') {
222
- // Replay the current track
223
- this.seek(0);
224
- state.audioElement.play().catch(e => console.error(e));
225
- } else {
226
- // Stop playback
227
- state.isPlaying = false;
228
- }
229
- return;
230
- }
238
+ if (state.queue.length === 0) return;
231
239
 
232
- if (state.repeat !== 'one') {
233
- // Move to next track
234
- state.queue.shift(); // Remove current track from queue
235
-
236
- // If queue is empty after removing current track and repeat is on
237
- if (state.queue.length === 0 && state.repeat === 'all') {
238
- state.queue = [...state.initialQueue];
239
- }
240
-
241
- // Play the next track if available
242
- if (state.queue.length > 0) {
243
- this.playTrack(state.queue[0]);
244
- } else {
245
- state.currentTrack = null;
246
- state.isPlaying = false;
247
- }
240
+ if (state.shuffle) {
241
+ // Случайный трек (кроме текущего)
242
+ let nextIndex;
243
+ do {
244
+ nextIndex = Math.floor(Math.random() * state.queue.length);
245
+ } while (nextIndex === state.currentTrackIndex && state.queue.length > 1);
246
+ state.currentTrackIndex = nextIndex;
248
247
  } else {
249
- // Repeat one - just seek to beginning
250
- this.seek(0);
251
- state.audioElement.play().catch(e => console.error(e));
248
+ // По порядку (циклически)
249
+ state.currentTrackIndex = (state.currentTrackIndex + 1) % state.queue.length;
252
250
  }
251
+
252
+ this.playTrack(state.queue[state.currentTrackIndex]);
253
253
  },
254
254
 
255
255
  playPrevious() {
256
+ if (state.queue.length === 0) return;
257
+
256
258
  // If we're more than 3 seconds into the track, restart it
257
259
  if (state.currentTime > 3) {
258
260
  this.seek(0);
259
261
  return;
260
262
  }
261
263
 
262
- // Otherwise go to previous track if we have history
263
- // Implementation depends on how track history is managed
264
- // For simplicity, let's just go back to the beginning of the current track
265
- this.seek(0);
264
+ // Move to previous track (циклически)
265
+ state.currentTrackIndex = state.currentTrackIndex - 1;
266
+ if (state.currentTrackIndex < 0) {
267
+ state.currentTrackIndex = state.queue.length - 1;
268
+ }
269
+ this.playTrack(state.queue[state.currentTrackIndex]);
266
270
  },
267
271
 
268
272
  toggleRepeat() {
269
- // Cycle through repeat modes: none -> all -> one -> none...
270
- if (state.repeat === 'none') {
271
- state.repeat = 'all';
272
- } else if (state.repeat === 'all') {
273
- state.repeat = 'one';
274
- } else {
275
- state.repeat = 'none';
276
- }
273
+ state.repeat = !state.repeat;
277
274
  },
278
275
 
279
276
  toggleShuffle() {
280
277
  state.shuffle = !state.shuffle;
281
-
282
- if (state.shuffle) {
283
- // Save the current track
284
- const currentTrack = state.queue[0];
285
-
286
- // Shuffle the rest of the queue
287
- const remainingTracks = state.queue.slice(1);
288
- this.shuffleArray(remainingTracks);
289
-
290
- // Reconstruct queue with current track at the front
291
- state.queue = [currentTrack, ...remainingTracks];
292
- } else {
293
- // Restore original order but keep current track at front
294
- if (state.currentTrack) {
295
- const currentTrackIndex = state.initialQueue.findIndex(track => track._id === state.currentTrack._id);
296
-
297
- if (currentTrackIndex !== -1) {
298
- const tracksToPlay = state.initialQueue.slice(currentTrackIndex);
299
- const previousTracks = state.initialQueue.slice(0, currentTrackIndex);
300
- state.queue = [...tracksToPlay, ...previousTracks];
301
- } else {
302
- state.queue = [...state.initialQueue];
303
- }
304
- } else {
305
- state.queue = [...state.initialQueue];
306
- }
307
- }
308
278
  },
309
279
 
310
280
  shuffleArray(array) {
@@ -398,4 +368,46 @@ export const actions = {
398
368
  state.syncInProgress = false;
399
369
  }, 1000);
400
370
  },
371
+
372
+ // Fullscreen player
373
+ toggleFullPlayer() {
374
+ state.showFullPlayer = !state.showFullPlayer;
375
+ },
376
+
377
+ // Disk rotation animation
378
+ rotateDisk() {
379
+ if (state.isPlaying) {
380
+ state.rotationAngle = (state.rotationAngle + 1) % 360;
381
+ state.animationFrameId = requestAnimationFrame(() => this.rotateDisk());
382
+ }
383
+ },
384
+
385
+ startRotation() {
386
+ if (!state.animationFrameId && typeof window !== 'undefined') {
387
+ this.rotateDisk();
388
+ }
389
+ },
390
+
391
+ stopRotation() {
392
+ if (state.animationFrameId) {
393
+ cancelAnimationFrame(state.animationFrameId);
394
+ state.animationFrameId = null;
395
+ }
396
+ },
397
+
398
+ // Queue reordering
399
+ reorderQueue(fromIndex, toIndex) {
400
+ if (fromIndex >= 0 && fromIndex < state.queue.length && toIndex >= 0 && toIndex < state.queue.length) {
401
+ const track = state.queue.splice(fromIndex, 1)[0];
402
+ state.queue.splice(toIndex, 0, track);
403
+ }
404
+ },
405
+
406
+ // Jump to specific track in queue
407
+ jumpToTrack(index) {
408
+ if (index >= 0 && index < state.queue.length) {
409
+ state.currentTrackIndex = index;
410
+ this.playTrack(state.queue[index]);
411
+ }
412
+ },
401
413
  };
@@ -233,27 +233,11 @@ export const actions = {
233
233
 
234
234
  async fetchRelatedTracks(trackUrl) {
235
235
  try {
236
- // Если есть currentTrack, ищем треки того же артиста
237
- if (state.currentTrack && state.currentTrack.artist) {
238
- const artistId = typeof state.currentTrack.artist === 'object'
239
- ? state.currentTrack.artist._id
240
- : state.currentTrack.artist;
241
-
242
- const queryParams = new URLSearchParams();
243
- queryParams.append('artist', artistId);
244
- queryParams.append('limit', '5');
245
-
246
- const response = await fetch(`${process.env.API_URL}/api/tracks/read?${queryParams.toString()}`);
247
- const tracks = await response.json();
248
-
249
- // Исключаем текущий трек
250
- const relatedTracks = tracks.filter(track => track._id !== state.currentTrack._id);
251
- state.relatedTracks = relatedTracks;
252
- return relatedTracks;
253
- }
254
-
255
- state.relatedTracks = [];
256
- return [];
236
+ const response = await fetch(`${process.env.API_URL}/api/tracks/related/${trackUrl}`);
237
+ const relatedTracks = await response.json();
238
+
239
+ state.relatedTracks = relatedTracks;
240
+ return relatedTracks;
257
241
  } catch (error) {
258
242
  console.error('Error fetching related tracks:', error);
259
243
  state.relatedTracks = [];
@@ -83,17 +83,16 @@ const props = defineProps({
83
83
  // Get router and notification functionality
84
84
  const router = useRouter();
85
85
 
86
- // Check if notifications module is loaded
87
- const useNotifications = inject('useNotifications');
88
-
89
- // Provide fallback values if module is not loaded
90
- const { notifications, unreadCount, loading, markAllAsRead, getNotifications } = useNotifications ? useNotifications() : {
86
+ // Check if notifications module is loaded, provide fallback if not
87
+ const useNotifications = inject('useNotifications', () => ({
91
88
  notifications: ref([]),
92
89
  unreadCount: ref(0),
93
90
  loading: ref(false),
94
91
  markAllAsRead: () => {},
95
92
  getNotifications: () => {}
96
- };
93
+ }));
94
+
95
+ const { notifications, unreadCount, loading, markAllAsRead, getNotifications } = useNotifications();
97
96
 
98
97
  // Local state
99
98
  const isOpen = ref(false);
@@ -1,4 +1,3 @@
1
- import coreabac from '@martyrs/src/modules/core/controllers/classes/core.abac.js';
2
1
  import NotificationsController from './controllers/notifications.controller.js';
3
2
  import NotificationLogModel from './models/notification-log.model.js';
4
3
  import NotificationPreferenceModel from './models/notification-preference.model.js';
@@ -6,14 +5,13 @@ import NotificationModel from './models/notification.model.js';
6
5
  import UserDeviceModel from './models/user-device.model.js';
7
6
  import notificationsRoutes from './routes/notifications.routes.js';
8
7
  import NotificationService from './services/notification.service.js';
9
- const { getInstance } = coreabac;
8
+
10
9
  function initializeNotifications(app, db, wss, origins, publicPath) {
11
10
  // Set up models in the database object
12
11
  db.notification = NotificationModel(db);
13
12
  db.userDevice = UserDeviceModel(db);
14
13
  db.notificationPreference = NotificationPreferenceModel(db);
15
14
  db.notificationLog = NotificationLogModel(db);
16
- const abac = getInstance(db);
17
15
  // const notificationPolicies = initNotificationPolicies(abac, db);
18
16
 
19
17
  // Initialize notification service and related background tasks only if wss is provided
@@ -49,6 +49,8 @@
49
49
  <script setup>
50
50
  import { ref, computed } from 'vue'
51
51
  import { useI18n } from 'vue-i18n'
52
+ import { i18nManager } from '@martyrs/src/modules/core/views/classes/i18n.manager.js'
53
+ import locales from '@martyrs/src/modules/orders/locales/index.js'
52
54
 
53
55
  import FieldBig from '@martyrs/src/components/FieldBig/FieldBig.vue'
54
56
  import Popup from '@martyrs/src/components/Popup/Popup.vue'
@@ -64,6 +66,9 @@ import IconWhatsapp from '@martyrs/src/modules/icons/socials/whatsapp.vue'
64
66
  import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'
65
67
  import applications from '@martyrs/src/modules/orders/store/applications.js'
66
68
 
69
+ // Регистрируем переводы модуля при использовании компонента
70
+ i18nManager.register('orders', locales)
71
+
67
72
  const store = useStore()
68
73
 
69
74
  const props = defineProps({
@@ -1,4 +1,3 @@
1
- import CRUD from '@martyrs/src/modules/core/controllers/classes/core.crud.js';
2
1
  import FactoryOrder from './controllers/orders.controller.js';
3
2
  import ModelApplication from './models/application.model.js';
4
3
  import ModelCustomer from './models/customer.model.js';
@@ -1,7 +1,7 @@
1
1
  <template>
2
- <div
2
+ <div
3
3
  class="o-hidden pos-relative cursor-pointer bg-light "
4
- @click="$router.push({name: 'Organization', params: {_id: organization._id}})"
4
+ @click="$router.push('/organizations/' + organization._id)"
5
5
  >
6
6
  <div class="h-4r flex pos-relative">
7
7
 
@@ -281,7 +281,7 @@ async function onSubmit() {
281
281
  }
282
282
 
283
283
  function redirectTo() {
284
- router.push({ name: "Organization Members", params: { _id: route.params._id } });
284
+ router.push('/organizations/' + route.params._id + '/members');
285
285
  }
286
286
 
287
287
  async function onDelete() {
@@ -301,7 +301,7 @@ function removeMember(member) {
301
301
  }
302
302
 
303
303
  function redirectDash() {
304
- router.replace({ name: "Organization" });
304
+ router.replace('/organizations/' + route.params._id);
305
305
  }
306
306
  </script>
307
307
 
@@ -153,11 +153,11 @@
153
153
  async function onDelete() {
154
154
  if (route.params._id) {
155
155
  await organization.actions.remove(route.params._id)
156
- router.push({name: 'Organization'})
156
+ router.push('/organizations/' + route.params._id)
157
157
  }
158
158
  }
159
159
 
160
160
  function redirectTo () {
161
- router.replace({ name: 'Organization', params: { _id: organization.state.current._id }});
161
+ router.replace('/organizations/' + organization.state.current._id);
162
162
  }
163
163
  </script>
@@ -94,20 +94,26 @@ export default (function initializeOrganizationPolicies(abacAccessControl, db) {
94
94
  // Получить организацию из контекста
95
95
  getOrganizationId(context) {
96
96
  const { currentResource, data } = context;
97
-
97
+
98
98
  if (currentResource?.owner?.type === 'organization') {
99
99
  return String(currentResource.owner.target);
100
100
  }
101
- if (data?.owner?.type === 'organization') {
102
- return String(data.owner.target);
101
+
102
+ // Проверяем и body и params
103
+ const ownerData = data?.body?.owner || data?.params?.owner;
104
+ if (ownerData?.type === 'organization') {
105
+ return String(ownerData.target);
103
106
  }
104
- if (data?.organization) {
105
- return String(data.organization);
107
+
108
+ const orgId = data?.body?.organization || data?.params?.organization;
109
+ if (orgId) {
110
+ return String(orgId);
106
111
  }
112
+
107
113
  if (currentResource?.organization) {
108
114
  return String(currentResource.organization);
109
115
  }
110
-
116
+
111
117
  return null;
112
118
  }
113
119
  };
@@ -1,11 +1,9 @@
1
1
  import middlewareFactoryAuth from '@martyrs/src/modules/auth/controllers/middlewares/index.js';
2
- import coreabac from '@martyrs/src/modules/core/controllers/classes/core.abac.js';
3
2
  import controllerFactory from '../controllers/organizations.controller.js';
4
- const { getInstance } = coreabac;
3
+
5
4
  export default (function (app, db) {
6
5
  const controller = controllerFactory(db);
7
6
  const { authJwt } = middlewareFactoryAuth(db);
8
- const abac = getInstance(db);
9
7
  app.get(
10
8
  '/api/organizations',
11
9
  [
@@ -2,7 +2,7 @@
2
2
  <div class="flex-v-center bg-light pd-small radius-small flex-column flex">
3
3
  <div class="w-100 flex-v-center flex-nowrap gap-thin flex">
4
4
  <img v-if="category.photo" class="i-big radius-small object-fit-contain bg-white" :src="(FILE_SERVER_URL || '') + category.photo"/>
5
- <h4 class="my-handle word-break t-truncate w-100 w-max-100 mn-r-auto">{{category.name}}</h4>
5
+ <h4 class="my-handle t-truncate w-100 w-max-100 mn-r-auto">{{category.name}}</h4>
6
6
 
7
7
  <router-link
8
8
  v-if="access"
@@ -10,7 +10,7 @@
10
10
  <!-- Edit Button -->
11
11
  <router-link
12
12
  v-if="access"
13
- :to="organization ? { name: 'Organization_ProductEdit', params: { id: organization, product: product._id } } : { name: 'ProductEdit', params: { product: product._id } }"
13
+ :to="editPath"
14
14
  class="
15
15
  z-index-2
16
16
  cursor-pointer
@@ -97,6 +97,7 @@
97
97
  <script setup="props">
98
98
  import {computed } from 'vue'
99
99
  import { useI18n } from 'vue-i18n'
100
+ import { useRoute } from 'vue-router'
100
101
 
101
102
  import IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'
102
103
  import IconShopcartAdd from '@martyrs/src/modules/icons/actions/IconShopcartAdd.vue'
@@ -106,6 +107,8 @@
106
107
 
107
108
  import PlaceholderImage from '@martyrs/src/modules/icons/placeholders/PlaceholderImage.vue'
108
109
 
110
+ const route = useRoute()
111
+
109
112
  const props = defineProps({
110
113
  product: {
111
114
  type: Object
@@ -122,7 +125,7 @@
122
125
  default: true
123
126
  },
124
127
  user: {
125
- type: [Object, String]
128
+ type: [Object, String]
126
129
  },
127
130
  type: {
128
131
  type: Object
@@ -130,6 +133,17 @@
130
133
  })
131
134
 
132
135
  const { t } = useI18n()
136
+
137
+ const editPath = computed(() => {
138
+ if (route.meta.context === 'backoffice') {
139
+ return `/backoffice/products/${props.product._id}/edit`
140
+ }
141
+ if (route.meta.context === 'organization' || props.organization) {
142
+ const orgId = props.organization || route.params._id
143
+ return `/organizations/${orgId}/products/${props.product._id}/edit`
144
+ }
145
+ return `/products/${props.product._id}/edit`
146
+ })
133
147
  </script>
134
148
 
135
149
  <style lang="scss">
@@ -8,6 +8,7 @@
8
8
  </h2>
9
9
 
10
10
  <router-link
11
+ v-if="hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)"
11
12
  :to="{
12
13
  name: route.meta.context === 'backoffice' ? 'BackofficeCategoryAdd' : 'Organization_CategoryAdd',
13
14
  params: {
@@ -35,8 +36,9 @@
35
36
  state: categories.state
36
37
  }"
37
38
  :options="{
38
- user: auth.state.user._id,
39
- tree: true
39
+ owner: route.params._id,
40
+ tree: true,
41
+ limit: 20
40
42
  }"
41
43
  v-model:sort="sort"
42
44
  v-model:items="categories.state.all"
@@ -45,12 +47,13 @@
45
47
  }"
46
48
  class="rows-1 gap-thin"
47
49
  >
48
- <Tree
49
- v-if="items"
50
- :items="categories.state.all"
50
+ <Tree
51
+ v-if="items"
52
+ :items="categories.state.all"
51
53
  :state="categories.state.all"
52
54
  :parent-id="null"
53
- @update="updateCategoriesOrder"
55
+ :dragndrop="hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)"
56
+ @update="updateCategoriesOrder"
54
57
  v-slot="{ item }"
55
58
  >
56
59
  <CardCategory
@@ -192,7 +192,7 @@
192
192
  onMounted(async () => {
193
193
  emits('page-loading');
194
194
  if (route.params.category) {
195
- await categories.actions.read({_id: route.params.category})
195
+ await categories.actions.read({_id: route.params.category, owner: route.params._id})
196
196
  } else {
197
197
  categories.actions.clean() // Adjusted based on the new store's method to reset the category state
198
198
  }
@@ -283,11 +283,15 @@
283
283
  }
284
284
 
285
285
  function redirectTo () {
286
+ const routeName = route.meta.context === 'organization'
287
+ ? 'Organization_Categories'
288
+ : 'BackofficeCategories'
289
+
286
290
  router.push({
287
- name: 'Categories',
288
- params: {
291
+ name: routeName,
292
+ params: {
289
293
  _id: route.params._id
290
- }
294
+ }
291
295
  })
292
296
  }
293
297
  </script>
@@ -11,11 +11,7 @@
11
11
  <!-- Edit Button -->
12
12
  <router-link
13
13
  v-if="hasAccess(route.params._id, 'products', 'edit', auth.state.accesses, auth.state.access.roles)"
14
- :to="
15
- route.params._id
16
- ? { name: 'Organization_ProductEdit', params: { id: route.params._id, product: product._id } }
17
- : { name: 'ProductEdit', params: { product: product._id } }
18
- "
14
+ :to="editPath"
19
15
  class="
20
16
  z-index-2
21
17
  cursor-pointer
@@ -147,6 +143,16 @@ const { returnCurrency, hasAccess } = useGlobalMixins()
147
143
  const product = computed(() => products.state.current)
148
144
  const productImages = computed(() => products.state.current.images || [])
149
145
 
146
+ const editPath = computed(() => {
147
+ if (route.meta.context === 'backoffice') {
148
+ return `/backoffice/products/${product.value._id}/edit`
149
+ }
150
+ if (route.meta.context === 'organization') {
151
+ return `/organizations/${route.params._id}/products/${product.value._id}/edit`
152
+ }
153
+ return `/products/${product.value._id}/edit`
154
+ })
155
+
150
156
  // Состояние для отслеживания текущих изображений (товара или варианта)
151
157
  const currentImages = ref([])
152
158
  // Выбранный вариант товара
@@ -37,13 +37,7 @@
37
37
 
38
38
  <IconEdit
39
39
  v-if="accesses && hasAccess(route.params._id, 'products', 'edit', accesses)"
40
- @click="$router.push({
41
- name: route.meta.context === 'backoffice' ? 'BackofficeProductEdit' : 'Organization_ProductEdit',
42
- params: {
43
- _id: product.owner.target,
44
- product: product._id
45
- }
46
- })"
40
+ @click="$router.push(editPath)"
47
41
  class="pos-absolute pos-t-regular pos-r-regular i-medium t-transp"
48
42
  />
49
43
 
@@ -183,6 +177,16 @@ const images = computed(() => {
183
177
  return props.product.images
184
178
  })
185
179
 
180
+ const editPath = computed(() => {
181
+ if (route.meta.context === 'backoffice') {
182
+ return `/backoffice/products/${props.product._id}/edit`
183
+ }
184
+ if (route.meta.context === 'organization') {
185
+ return `/organizations/${props.product.owner.target}/products/${props.product._id}/edit`
186
+ }
187
+ return `/products/${props.product._id}/edit`
188
+ })
189
+
186
190
  const tabProduct = ref('description')
187
191
 
188
192
  const text = {