From 38668fb4a7f2a3f94a85e06e20ecdff98f5d160d Mon Sep 17 00:00:00 2001 From: Nikita Kiselev Date: Sat, 6 Dec 2025 12:59:55 +0300 Subject: [PATCH] feat: image processing improve --- .cursor/prompts/changelog.md | 1 + frontend/admin/src/utils/helpers.js | 8 +- frontend/spa/package-lock.json | 8 +- frontend/spa/package.json | 2 +- .../spa/src/components/ProductImageSwiper.vue | 26 ++- .../controller/extension/module/tgshop.php | 51 +---- .../template/extension/module/tgshop.twig | 2 +- .../controller/extension/tgshop/handle.php | 6 +- .../bastion/ApplicationFactory.php | 2 + .../bastion/Handlers/DictionariesHandler.php | 7 +- .../bastion/Handlers/FormsHandler.php | 2 +- .../bastion/Handlers/SettingsHandler.php | 2 +- .../bastion/Handlers/TelegramHandler.php | 2 +- .../framework/Container/Container.php | 4 +- .../framework/ErrorHandler.php | 10 +- .../Exceptions/HttpNotFoundException.php | 10 + .../framework/Http/Response.php | 70 ------- .../framework/ImageTool/ImageFactory.php | 197 ++++++++++++++++++ .../ImageTool/ImageNotFoundException.php | 16 ++ .../framework/ImageTool/ImageTool.php | 127 ----------- .../ImageTool/ImageToolInterface.php | 19 -- .../ImageTool/ImageToolServiceProvider.php | 22 ++ .../src/ApplicationFactory.php | 2 + .../src/Exceptions/CustomExceptionHandler.php | 2 +- .../src/Handlers/CategoriesHandler.php | 23 +- .../src/Handlers/FormsHandler.php | 2 +- .../src/Handlers/HealthCheckHandler.php | 2 +- .../src/Handlers/ImageHandler.php | 39 ++++ .../src/Handlers/OrderHandler.php | 2 +- .../src/Handlers/PrivacyPolicyHandler.php | 2 +- .../src/Handlers/ProductsHandler.php | 2 +- .../src/Handlers/SettingsHandler.php | 24 +-- .../src/Handlers/TelegramCustomerHandler.php | 2 +- .../src/Handlers/TelemetryHandler.php | 2 +- .../src/Services/BlocksService.php | 19 +- .../src/Services/ProductsService.php | 58 +++--- .../upload/oc_telegram_shop/src/routes.php | 2 + 37 files changed, 411 insertions(+), 366 deletions(-) create mode 100644 module/oc_telegram_shop/upload/oc_telegram_shop/framework/Exceptions/HttpNotFoundException.php delete mode 100755 module/oc_telegram_shop/upload/oc_telegram_shop/framework/Http/Response.php create mode 100644 module/oc_telegram_shop/upload/oc_telegram_shop/framework/ImageTool/ImageFactory.php create mode 100644 module/oc_telegram_shop/upload/oc_telegram_shop/framework/ImageTool/ImageNotFoundException.php delete mode 100755 module/oc_telegram_shop/upload/oc_telegram_shop/framework/ImageTool/ImageTool.php delete mode 100755 module/oc_telegram_shop/upload/oc_telegram_shop/framework/ImageTool/ImageToolInterface.php create mode 100644 module/oc_telegram_shop/upload/oc_telegram_shop/framework/ImageTool/ImageToolServiceProvider.php create mode 100644 module/oc_telegram_shop/upload/oc_telegram_shop/src/Handlers/ImageHandler.php diff --git a/.cursor/prompts/changelog.md b/.cursor/prompts/changelog.md index 104ba7c..108aa1d 100644 --- a/.cursor/prompts/changelog.md +++ b/.cursor/prompts/changelog.md @@ -101,3 +101,4 @@ - Маркетинговые лозунги и призывы + diff --git a/frontend/admin/src/utils/helpers.js b/frontend/admin/src/utils/helpers.js index 1aea486..1cfd4df 100644 --- a/frontend/admin/src/utils/helpers.js +++ b/frontend/admin/src/utils/helpers.js @@ -1,9 +1,7 @@ export function getThumb(imageUrl) { - if (!imageUrl) return '/image/no_image.png'; - const extIndex = imageUrl.lastIndexOf('.'); - const ext = imageUrl.substring(extIndex); - const filename = imageUrl.substring(0, extIndex); - return `/image/cache/${filename}-100x100${ext}`; + const route = 'extension/tgshop/handle'; + const url = new URL(`${window.TeleCart.shop_base_url}/index.php?route=${route}&api_action=getImage&path=${imageUrl}&size=100x100`); + return url.toString(); } export function rub(value) { diff --git a/frontend/spa/package-lock.json b/frontend/spa/package-lock.json index fcc2955..d5f221d 100644 --- a/frontend/spa/package-lock.json +++ b/frontend/spa/package-lock.json @@ -19,7 +19,7 @@ "js-md5": "^0.8.3", "ofetch": "^1.4.1", "pinia": "^3.0.3", - "swiper": "^11.2.10", + "swiper": "^12.0.3", "vue": "^3.5.22", "vue-imask": "^7.6.1", "vue-router": "^4.6.3", @@ -5638,9 +5638,9 @@ } }, "node_modules/swiper": { - "version": "11.2.10", - "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.2.10.tgz", - "integrity": "sha512-RMeVUUjTQH+6N3ckimK93oxz6Sn5la4aDlgPzB+rBrG/smPdCTicXyhxa+woIpopz+jewEloiEE3lKo1h9w2YQ==", + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-12.0.3.tgz", + "integrity": "sha512-BHd6U1VPEIksrXlyXjMmRWO0onmdNPaTAFduzqR3pgjvi7KfmUCAm/0cj49u2D7B0zNjMw02TSeXfinC1hDCXg==", "funding": [ { "type": "patreon", diff --git a/frontend/spa/package.json b/frontend/spa/package.json index e74f0d8..f00c806 100644 --- a/frontend/spa/package.json +++ b/frontend/spa/package.json @@ -24,7 +24,7 @@ "js-md5": "^0.8.3", "ofetch": "^1.4.1", "pinia": "^3.0.3", - "swiper": "^11.2.10", + "swiper": "^12.0.3", "vue": "^3.5.22", "vue-imask": "^7.6.1", "vue-router": "^4.6.3", diff --git a/frontend/spa/src/components/ProductImageSwiper.vue b/frontend/spa/src/components/ProductImageSwiper.vue index d440f67..816ec9d 100644 --- a/frontend/spa/src/components/ProductImageSwiper.vue +++ b/frontend/spa/src/components/ProductImageSwiper.vue @@ -1,28 +1,36 @@