From 868f9dbcceaf89ef18f397c0b81a72d4949d3c75 Mon Sep 17 00:00:00 2001 From: Brandon Shipley Date: Mon, 3 Nov 2025 23:15:31 -0800 Subject: [PATCH] more product types (events, subscriptions, digital goods), photos templates index/view --- src/Controller/ProductPhotosController.php | 2 +- src/Model/Enum/ProductProductTypeId.php | 8 +++++++- templates/ProductPhotos/index.php | 4 +++- templates/ProductPhotos/view.php | 17 +++++++++++++++-- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/Controller/ProductPhotosController.php b/src/Controller/ProductPhotosController.php index 6a3a483..a6f67bd 100644 --- a/src/Controller/ProductPhotosController.php +++ b/src/Controller/ProductPhotosController.php @@ -30,7 +30,7 @@ class ProductPhotosController extends AppController public function index() { $query = $this->getTable()->find() - ->contain(['Products', 'ProductSkus']); + ->contain(['Products', 'ProductSkus', 'ProductCategories']); $productPhotos = $this->paginate($query); $this->set(compact('productPhotos')); diff --git a/src/Model/Enum/ProductProductTypeId.php b/src/Model/Enum/ProductProductTypeId.php index 4e220fb..88e1cbc 100644 --- a/src/Model/Enum/ProductProductTypeId.php +++ b/src/Model/Enum/ProductProductTypeId.php @@ -11,13 +11,19 @@ enum ProductProductTypeId: int implements EnumLabelInterface case Service = 1; case Product = 2; case Consumable = 3; + case DigitalGood = 4; + case Subscription = 5; +// case Event = 5; public function label(): string { return match($this) { self::Service => 'Service', self::Product => 'Product', - self::Consumable => 'Consumable' + self::Consumable => 'Consumable', + self::DigitalGood => 'Digital Good', + self::Subscription => 'Subscription', +// self::Event => 'Event', }; } } diff --git a/templates/ProductPhotos/index.php b/templates/ProductPhotos/index.php index 64dd76d..bbdfa03 100644 --- a/templates/ProductPhotos/index.php +++ b/templates/ProductPhotos/index.php @@ -12,6 +12,7 @@ Paginator->sort('id') ?> + Paginator->sort('product_category_id') ?> Paginator->sort('product_id') ?> Paginator->sort('product_sku_id') ?> Paginator->sort('photo_filename') ?> @@ -28,8 +29,9 @@ id) ?> + hasValue('product_category') ? $this->Html->link($productPhoto->product_category->name, ['controller' => 'ProductCategories', 'action' => 'view', $productPhoto->product_category->internal_id]) : '' ?> hasValue('product') ? $this->Html->link($productPhoto->product->name, ['controller' => 'Products', 'action' => 'view', $productPhoto->product->id]) : '' ?> - product_sku_id) ?> + hasValue('product_sku') ? $this->Html->link($productPhoto->product_sku->sku, ['controller' => 'ProductSkus', 'action' => 'view', $productPhoto->product_sku->id]) : '' ?> photo_filename) ?> primary_photo) ?> Number->format($productPhoto->photo_position) ?> diff --git a/templates/ProductPhotos/view.php b/templates/ProductPhotos/view.php index 066c37d..f4fa6b3 100644 --- a/templates/ProductPhotos/view.php +++ b/templates/ProductPhotos/view.php @@ -26,13 +26,18 @@ id) ?> + + + + hasValue('product_category') ? $this->Html->link($productPhoto->product_category->name, ['controller' => 'ProductCategories', 'action' => 'view', $productPhoto->product_category->internal_id]) : '' ?> + hasValue('product') ? $this->Html->link($productPhoto->product->name, ['controller' => 'Products', 'action' => 'view', $productPhoto->product->id]) : '' ?> - - product_sku_id) ?> + + hasValue('product_sku') ? $this->Html->link($productPhoto->product_sku->sku, ['controller' => 'ProductSkus', 'action' => 'view', $productPhoto->product_sku->id]) : '' ?> @@ -54,10 +59,18 @@ deleted) ?> + + + primary_category_photo ? __('Yes') : __('No'); ?> + primary_photo ? __('Yes') : __('No'); ?> + + + primary_sku_photo ? __('Yes') : __('No'); ?> + enabled ? __('Yes') : __('No'); ?>