db7c881d36
ver. 0.303: Fix attribute display collision + product preview button
...
Fix: product attributes with the same sort order value were overwriting
each other in getProductAttributes(), causing only one attribute to
display on the frontend. Now uses usort() with sequential keys.
New: Preview button in product edit form opens product page in new tab.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
v0.303
2026-02-22 15:04:51 +01:00
1fc36e4403
ver. 0.302: REST API product variants, attributes dictionary, attribute filtering
...
- Add variant CRUD endpoints (variants, create_variant, update_variant, delete_variant)
- Add dictionaries/attributes endpoint with multilingual names and values
- Add attribute_* filter params for product list filtering by attribute values
- Enrich product detail attributes with translated names (attribute_names, value_names)
- Include variants array in product detail response for parent products
- Add price_brutto validation on product create
- Batch-load attribute/value translations (4 queries instead of N+1)
- Add 43 new unit tests (730 total, 2066 assertions)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
v0.302
2026-02-22 14:42:52 +01:00
c0cdaaf638
build: update package v0.301
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 13:58:59 +01:00
f2b2629d49
ver. 0.301: Collapsible table filters and mobile-responsive order details
...
- Table filters hidden by default with toggle button (icon + active count badge)
- Filter state persisted in localStorage; auto-show when filters active
- Order details mobile layout: icon-only action bar, full-width stacking,
compact product list (image + name + qty x price = total), bottom-sheet
dropdown for integrations menu
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
v0.301
2026-02-22 13:53:43 +01:00
b409806f02
ver. 0.300: Manifest-based update system with checksum verification and file backup
...
Replaces the manual ZIP packaging workflow with an automated build script.
UpdateRepository now supports both manifest JSON format (new) and legacy
_sql.txt/_files.txt format (fallback), enabling a smooth transition for
existing client instances.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
v0.300
2026-02-21 23:30:58 +01:00
d2e85e94df
ver. 0.299: Table column visibility toggle with localStorage persistence
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
v0.299
2026-02-21 22:00:22 +01:00
5eee2c6649
Refactor code structure for improved readability and maintainability
2026-02-21 21:48:03 +01:00
ebab220f7e
ver. 0.297: REST API products endpoint — list, get, create, update
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-19 22:39:48 +01:00
9cac0d1eeb
ver. 0.296: REST API for ordersPRO — orders management, dictionaries, API key auth
...
- New API layer: ApiRouter, OrdersApiController, DictionariesApiController
- Orders API: list (with filters/pagination/updated_since), details, change status, set paid/unpaid
- Dictionaries API: order statuses, transport methods, payment methods
- X-Api-Key authentication via pp_settings.api_key
- OrderRepository: listForApi(), findForApi(), touchUpdatedAt()
- updated_at column on pp_shop_orders for polling support
- api.php: skip session for API requests, route to ApiRouter
- SettingsController: api_key field in system tab
- 30 new tests (666 total, 1930 assertions)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-19 20:25:07 +01:00
21efe28464
ver. 0.295: Admin order product editing — add/remove/modify products, AJAX search, stock adjustment
...
- Order product CRUD in admin panel (add, delete, edit quantity/prices)
- AJAX product search endpoint for order edit form
- Automatic stock adjustment when editing order products
- Transport cost recalculation based on free delivery threshold
- Fix: promo price = 0 when equal to base price (no real promotion)
- Clean up stale temp/ build artifacts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-19 19:30:38 +01:00
de11afb003
ver. 0.294: Code review complete — 96/96 classes, 27 fixes across all layers
...
Full codebase review of autoload/ directory (96 classes, ~1144 methods).
Fixes: null safety (query/find guards), redundant DI bypass, undefined
variables, missing globals, and Imagick WebP mime type bug in Helpers.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-19 15:26:07 +01:00
0252ccea30
Dodaj punkty do listy zadań w pliku TODO
2026-02-19 12:32:45 +01:00
054b1b4a34
ver. 0.293: Code review fixes — 6 repositories, 16 fixes
...
- ArticleRepository: SQL injection fix (addslashes→parameterized), DRY refactor topArticles/newsListArticles
- AttributeRepository: dead class_exists('\S') blocking cache/temp clear
- CategoryRepository: dead class_exists('\S') blocking SEO link generation (critical)
- BannerRepository: parameterize $today in SQL + null guard on query()
- BasketCalculator: null guard checkProductQuantityInStock + optional DI params
- PromotionRepository: null guard on $basket (production fatal)
- OrderRepository/ShopBasketController/ajax.php: explicit DI in BasketCalculator callers
614 tests, 1821 assertions (+4 new)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-19 01:07:39 +01:00
29821bccf2
Refactor code structure for improved readability and maintainability
2026-02-18 08:28:02 +01:00
99d78abea9
Add new files for shop classes in version 0.294
...
- Introduced class files for Basket, Category, Coupon, Order, Product, ProductAttribute, ProductCustomField, ProductSet, Promotion, Search, Shop, and Transport.
2026-02-18 02:09:08 +01:00
1283846b39
Fix update package: consolidate versions 0.292-0.294 into ver. 0.292
...
- Move ZIP to updates/0.20/ver_0.292.zip (correct location)
- Add ver_0.292_files.txt (12 deleted shop classes)
- Consolidate changelog entries (0.292+0.293+0.294 → single 0.292)
- Set versions.php $current_ver = 292
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-18 02:08:30 +01:00
69e78ca248
ver. 0.294: Remove all 12 legacy autoload/shop/ classes (~2363 lines)
...
Complete Domain-Driven Architecture migration:
- Phase 1-4: Transport, ProductSet, Coupon, Shop, Search, Basket,
ProductCustomField, Category, ProductAttribute, Promotion
- Phase 5: Order (~562 lines) + Product (~952 lines)
- ~20 Product methods migrated to ProductRepository
- Apilo sync migrated to OrderAdminService
- Production hotfixes: stale Redis cache (prices 0.00), unqualified
Product:: refs in LayoutEngine, object->array template conversion
- AttributeRepository::getAttributeValueById() Redis cache added
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-18 02:05:39 +01:00
22530df501
Add docs/MEMORY.md with project memory and reference it in CLAUDE.md
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 23:51:06 +01:00
b73c84d16d
Add CLAUDE.md with project guidance for Claude Code
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 23:43:40 +01:00
6559281ebc
Add new files for ShopCoupon, ShopOrder, and ShopProducer functionality
...
- Created new PHP classes for handling shop coupons and orders in the autoload front controls and factories.
- Added a new view class for ShopOrder.
- Introduced a new ShopProducerController and Producer class for managing producers.
- Included version 0.291 zip file with the necessary updates and new files.
2026-02-17 23:01:02 +01:00
d2444500e9
ver. 0.293: front\controls\Site + front\view\Site → front\App + front\LayoutEngine
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 22:21:44 +01:00
89d9e61bec
ver. 0.292: ShopProduct + ShopPaymentMethod + ShopPromotion + ShopStatuses + ShopTransport frontend migration to Domain
...
Full migration of front\factory\ — entire directory removed (all 20 classes migrated).
ProductRepository +20 frontend methods, PromotionRepository +5 applyType methods,
TransportRepository +4 cached methods, PaymentMethodRepository +cached frontend methods.
Fix: broken transports_list() in ajax.php replaced with forPaymentMethod().
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 21:55:16 +01:00
827b903e1e
ver. 0.291: ShopProducer frontend migration to Domain + Controllers
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 20:32:07 +01:00
46ff934d42
ver. 0.290: ShopCoupon + ShopOrder frontend migration to Domain + Controllers
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 19:54:21 +01:00
c06f055cf5
Implement feature X to enhance user experience and optimize performance
2026-02-17 10:56:18 +01:00
d29d396197
ver. 0.289: ShopCategory + ShopClient frontend migration to Domain + Views + Controllers
...
ShopCategory: 9 frontend methods in CategoryRepository, front\Views\ShopCategory (3 methods),
deleted factory + view, updated 6 callers, +17 tests.
ShopClient: 13 frontend methods in ClientRepository, front\Views\ShopClient (8 methods),
front\Controllers\ShopClientController (15 methods + buildEmailBody helper),
deleted factory + view + controls, updated 7 callers, +36 tests.
Security fix: removed hardcoded password bypass 'Legia1916'.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 10:41:40 +01:00
437d4c78dc
ver. 0.288: BasketCalculator + ShopBasketController migration, cms\Layout removal
...
- Migrate front\factory\ShopBasket → Domain\Basket\BasketCalculator (4 static methods, 18 callers updated)
- Migrate front\controls\ShopBasket → front\Controllers\ShopBasketController (camelCase, instance methods)
- Add snake_case→camelCase action dispatch for new controllers in Site::route()
- Update title()/page_title() to check front\Controllers\ before fallback
- Remove cms\Layout class (replaced by $layoutsRepo->find())
- Add 8 tests for BasketCalculator (484 tests, 1528 assertions)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 09:38:45 +01:00
3b50ba7990
ver. 0.287: Scontainers + ShopAttribute frontend migration to Domain
...
- Scontainers: frontScontainerDetails() with Redis cache in ScontainersRepository
- Scontainers: new front\Views\Scontainers VIEW, deleted factory + view legacy
- ShopAttribute: frontAttributeDetails(), frontValueDetails() with Redis cache in AttributeRepository
- ShopAttribute: clearFrontCache() per attribute/value + language
- ShopAttribute: deleted front\factory\ShopAttribute, updated 4 callers
- Tests: 476 OK, 1512 assertions (+6 frontend tests)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 08:47:21 +01:00
8162df7356
ver. 0.286: Layouts, Menu, Pages frontend migration to Domain
...
- Add 6 frontend methods to LayoutsRepository (Redis cache, 3-level fallback)
- Add 6 frontend methods to PagesRepository (Redis cache, recursive pages)
- Create front\Views\Menu (clean VIEW replacing front\view\Menu)
- Delete front\factory\Layouts, Menu, Pages + front\view\Menu + dead submenu.php
- Fix null $lang_id TypeError in check_url_params() (remove string type hint + ?? '')
- Optimize Helpers::htacces() from 3 layout calls to 1
- Tests: 470 OK, 1484 assertions (+16 new)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 08:21:53 +01:00
920e65abd5
Implement feature X to enhance user experience and fix bug Y in module Z
2026-02-17 00:16:21 +01:00
54c016f4ef
ver. 0.285: remove deleted class.Tpl.php and curl.class.php
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 00:15:55 +01:00
d2c9d97710
ver. 0.285: Tpl → Shared\Tpl namespace, CurlServer removal, thumb.php fix
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-17 00:13:59 +01:00
6922b66eed
ver. 0.284: DbModel elimination, update packages for 0.283-0.284
...
- Removed class.DbModel.php — only consumer (shop\Promotion) now has
inlined constructor + __get()
- Created update packages: ver_0.283.zip (S→Helpers migration, ~130 files),
ver_0.284.zip (DbModel removal)
- Updated docs: CHANGELOG, PROJECT_STRUCTURE, FRONTEND_REFACTORING_PLAN
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 23:31:03 +01:00
431add234c
ver. 0.283: Legacy class cleanup — S, Html, Email, Image, Log, Mobile_Detect → Shared namespace
...
- Migrate class.S → Shared\Helpers\Helpers (140+ files), remove 12 unused methods
- Migrate class.Html → Shared\Html\Html
- Migrate class.Email → Shared\Email\Email
- Migrate class.Image → Shared\Image\ImageManipulator
- Delete class.Log (unused), class.Mobile_Detect (outdated UA detection)
- Remove grid library loading from admin (index.php, ajax.php)
- Replace gridEdit usage in 10 admin templates with grid-edit-replacement.php
- Fix grid-edit-replacement.php AJAX to send values as JSON (grid.js compat)
- Remove mobile layout conditionals (m_html/m_css/m_js) from Site + LayoutsRepository
- Remove \Log::save_log() calls from OrderAdminService, ShopOrder, Order
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 23:06:06 +01:00
8e97413361
ver. 0.282: Banners frontend migration, Cache cleanup, Shared\Cache namespace
...
- Banners frontend: front\Views\Banners (new), BannerRepository +2 frontend methods,
front\view\Site przepięty, usunięte front\factory\Banners i front\view\Banners
- Cache cleanup: eliminacja legacy class.Cache.php (file-based cache),
13 metod front\factory przepiętych z \Cache::fetch/store na CacheHandler
- Shared\Cache namespace: CacheHandler i RedisConnection przeniesione do Shared\Cache\,
60 odwołań CacheHandler i 12 odwołań RedisConnection przepiętych,
usunięte backward-compat wrappery class.CacheHandler.php i class.RedisConnection.php
- Naprawione rozbieżności kluczy cache (random_products, category_name)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 21:25:50 +01:00
53d945843a
Remove deprecated Articles factory and view classes
...
- Deleted the Articles factory class located at autoload/front/factory/class.Articles.php, which was a facade delegating calls to the ArticleRepository and Views for backward compatibility.
- Removed the Articles view class located at autoload/front/view/class.Articles.php, which also served as a facade for similar functionality.
- Updated the version file to reflect the removal of these classes.
2026-02-16 15:55:21 +01:00
0402dbee76
ver. 0.280: Articles frontend migration, class.Article removal, Settings facade cleanup
...
- Add 8 frontend methods to ArticleRepository (with Redis cache)
- Create front\Views\Articles (rendering + utility methods)
- Rewire front\view\Site::show() and front\controls\Site::route() to repo + Views
- Update 5 article templates to use \front\Views\Articles::
- Convert front\factory\Articles and front\view\Articles to facades
- Remove class.Article (entity + static methods migrated to repo + Views)
- Remove front\factory\Settings facade (already migrated)
- Fix: eliminate global $lang from articleNoindex(), inline page sort query
- Tests: 450 OK, 1431 assertions (+13 new)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 15:52:03 +01:00
c910982abf
ver. 0.279: Newsletter frontend migration, Languages facade elimination, bug fix newsletter_unsubscribe
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 15:11:38 +01:00
782dd35d5b
ver. 0.278: Settings + Languages frontend migration, bug fix get_single_settings_value
...
- Add cached frontend methods to existing Domain repositories (allSettings, getSingleValue, defaultLanguage, activeLanguages, translations)
- Convert front\factory\Settings and Languages to facades delegating to Domain repositories
- Fix get_single_settings_value() - was hardcoded to 'firm_name', now uses $param correctly
- Add CacheHandler stub methods (get/set/exists) to test bootstrap
- Establish architectural rule: Domain classes are shared between admin and frontend
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 13:50:27 +01:00
7fcac87a58
docs: add frontend refactoring plan for shopPRO
2026-02-16 09:56:30 +01:00
a63a08ff1e
chore: move 0.277 update package to correct directory (updates/0.20/)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 01:14:07 +01:00
c8469f4371
ver. 0.277: ShopProduct factory, Dashboard, Update migration, legacy cleanup, admin\App
...
- ShopProduct factory: full migration (~40 ProductRepository methods, ~30 controller actions)
- Dashboard: Domain+DI migration (DashboardRepository + DashboardController)
- Update: Domain+DI migration (UpdateRepository + UpdateController, template rewrite)
- Renamed admin\Site to admin\App, removed dead fallback routing
- Removed all legacy folders: admin/controls, admin/factory, admin/view
- Newsletter: switched from admin\factory\Articles to ArticleRepository
- 414 tests, 1335 assertions passing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-16 01:06:29 +01:00
56ddd34e44
docs: update release status in UPDATE_INSTRUCTIONS to 0.276
2026-02-15 16:43:05 +01:00
d012a694c2
ver. 0.276: ShopOrder migration, Integrations cleanup, global admin search
2026-02-15 16:41:48 +01:00
0a2d13090f
docs: complete 0.275 documentation updates
2026-02-15 15:36:31 +01:00
875433d7fd
chore(updates): add 0.275 changelog entry and bump versions
2026-02-15 15:34:52 +01:00
6c87e4615a
refactor(shop_category): migrate admin module to Domain+DI with routing and ajax cleanup
2026-02-15 15:32:39 +01:00
e17875526d
aktualizacja: zmiana linku do refaktoringu w dokumentacji AGENTS.md
2026-02-15 15:04:07 +01:00
df24da8915
ver. 0.274 - ShopClients Domain+DI migration
2026-02-15 15:03:24 +01:00
449e5fbe1c
updates: add ver_0.273 package and release metadata
2026-02-15 11:44:01 +01:00