From ecf4df363d49bf0d8bdc1b9ca3a241f99f26cfb8 Mon Sep 17 00:00:00 2001 From: Nikita Kiselev Date: Thu, 25 Dec 2025 18:02:38 +0300 Subject: [PATCH] feat: add product interaction mode selector with three scenarios MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add ItemToggleButton component for 3-way toggle in admin panel - Add product_interaction_mode setting with options: order, manager, browser - Add manager_username setting for Telegram manager contact - Remove store_enabled setting, replaced with product_interaction_mode - Create migration to automatically migrate store_enabled to product_interaction_mode - Update Product.vue to handle all three interaction modes - Update Dock.vue to show cart button only when product_interaction_mode is 'order' - Rename 'Магазин' tab to 'Витрина' in admin panel - Remove 'Разрешить покупки' option (now controlled via product_interaction_mode) - Set default product_interaction_mode to 'browser' - Update StoreDTO to remove enableStore field - Update SettingsHandler to return product_interaction_mode instead of store_enabled --- frontend/admin/src/App.vue | 2 +- .../components/Settings/ItemToggleButton.vue | 51 ++++++++++++++++++ frontend/admin/src/stores/settings.js | 3 +- frontend/admin/src/views/StoreView.vue | 33 +++++++++--- frontend/spa/src/components/Dock.vue | 2 +- frontend/spa/src/stores/SettingsStore.js | 6 ++- frontend/spa/src/views/Product.vue | 46 +++++++++++++++- .../upload/oc_telegram_shop/configs/app.php | 3 +- ...re_enabled_to_product_interaction_mode.php | 54 +++++++++++++++++++ .../src/DTO/Settings/StoreDTO.php | 28 ++++++---- .../src/Handlers/SettingsHandler.php | 3 +- .../Services/SettingsSerializerService.php | 26 +++++++-- .../stubs/phpstan-bootstrap.php | 0 13 files changed, 228 insertions(+), 29 deletions(-) create mode 100644 frontend/admin/src/components/Settings/ItemToggleButton.vue create mode 100644 module/oc_telegram_shop/upload/oc_telegram_shop/database/migrations/20260101000011_migrate_store_enabled_to_product_interaction_mode.php mode change 100644 => 100755 module/oc_telegram_shop/upload/oc_telegram_shop/stubs/phpstan-bootstrap.php diff --git a/frontend/admin/src/App.vue b/frontend/admin/src/App.vue index 6cda36b..ff31edc 100644 --- a/frontend/admin/src/App.vue +++ b/frontend/admin/src/App.vue @@ -15,7 +15,7 @@
  • - Магазин + Витрина
  • diff --git a/frontend/admin/src/components/Settings/ItemToggleButton.vue b/frontend/admin/src/components/Settings/ItemToggleButton.vue new file mode 100644 index 0000000..7155ae4 --- /dev/null +++ b/frontend/admin/src/components/Settings/ItemToggleButton.vue @@ -0,0 +1,51 @@ + + + + + + diff --git a/frontend/admin/src/stores/settings.js b/frontend/admin/src/stores/settings.js index e9952dd..3fd30d0 100644 --- a/frontend/admin/src/stores/settings.js +++ b/frontend/admin/src/stores/settings.js @@ -36,10 +36,11 @@ export const useSettingsStore = defineStore('settings', { }, store: { - enable_store: true, feature_coupons: true, feature_vouchers: true, show_category_products_button: true, + product_interaction_mode: 'browser', + manager_username: null, }, orders: { diff --git a/frontend/admin/src/views/StoreView.vue b/frontend/admin/src/views/StoreView.vue index ba42143..6989a01 100644 --- a/frontend/admin/src/views/StoreView.vue +++ b/frontend/admin/src/views/StoreView.vue @@ -1,11 +1,22 @@