Skip to content

Commit 3e2353c

Browse files
committed
[FEATURE] Enable link to detail view
Further adaptions are needed in product extensions. Fixes: #522
1 parent 6fa0caf commit 3e2353c

2 files changed

Lines changed: 52 additions & 3 deletions

File tree

Classes/Domain/Model/Cart/Product.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ class Product
7676
*/
7777
protected bool $handleStockInVariants = false;
7878

79+
protected array $detailViewParameter = [];
80+
7981
public function __construct(
8082
string $productType,
8183
int $productId,
@@ -85,7 +87,8 @@ public function __construct(
8587
TaxClass $taxClass,
8688
int $quantity,
8789
bool $isNetPrice = false,
88-
FeVariant $feVariant = null
90+
FeVariant $feVariant = null,
91+
array $detailViewParameter = []
8992
) {
9093
$this->productType = $productType;
9194
$this->productId = $productId;
@@ -95,6 +98,7 @@ public function __construct(
9598
$this->taxClass = $taxClass;
9699
$this->quantity = $quantity;
97100
$this->isNetPrice = $isNetPrice;
101+
$this->detailViewParameter = $detailViewParameter;
98102

99103
if ($feVariant) {
100104
$this->feVariant = $feVariant;
@@ -729,4 +733,19 @@ public function setHandleStockInVariants(bool $handleStockInVariants): void
729733
{
730734
$this->handleStockInVariants = $handleStockInVariants;
731735
}
736+
737+
public function getDetailViewParameter(): array
738+
{
739+
return $this->detailViewParameter;
740+
}
741+
742+
public function setDetailViewParameter(array $detailViewParameter): void
743+
{
744+
$this->detailViewParameter = $detailViewParameter;
745+
}
746+
747+
public function addDetailViewParameter(string $key, int|string $value): void
748+
{
749+
$this->detailViewParameter[$key] = $value;
750+
}
732751
}

Resources/Private/Partials/Cart/ProductForm/ProductList.html

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,21 @@
66
<tr class="{f:if(condition: product.quantityInRange, then: '', else: 'danger')}">
77
<td colspan="2" class="col-md-6">
88
<div class="product-name">
9-
{product.title} {f:if(condition:'{product.feVariant.value}',then:'- {product.feVariant.value}')}
9+
<f:if condition="{product.detailViewParameter}">
10+
<f:then>
11+
<f:link.action
12+
pageUid="{product.detailViewParameter.pageUid}"
13+
extensionName="{product.detailViewParameter.extensionName}"
14+
pluginName="{product.detailViewParameter.pluginName}"
15+
controller="{product.detailViewParameter.controller}"
16+
arguments="{product: product.productId}">
17+
{product.title} {f:if(condition:'{product.feVariant.value}',then:'- {product.feVariant.value}')}
18+
</f:link.action>
19+
</f:then>
20+
<f:else>
21+
{product.title} {f:if(condition:'{product.feVariant.value}',then:'- {product.feVariant.value}')}
22+
</f:else>
23+
</f:if>
1024
</div>
1125
<p>
1226
<f:translate key="tx_cart_domain_model_order_product.sku.short"/>
@@ -59,7 +73,23 @@
5973
<tr class="{f:if(condition: product.quantityInRange, then: '', else: 'danger')}">
6074
<td class="col-md-1">&nbsp;</td>
6175
<td class="col-md-5">
62-
<div class="product-name">{variant.title}</div>
76+
<div class="product-name">
77+
<f:if condition="{product.detailViewParameter}">
78+
<f:then>
79+
<f:link.action
80+
pageUid="{product.detailViewParameter.pageUid}"
81+
extensionName="{product.detailViewParameter.extensionName}"
82+
pluginName="{product.detailViewParameter.pluginName}"
83+
controller="{product.detailViewParameter.controller}"
84+
arguments="{product: product.productId}">
85+
{variant.title}
86+
</f:link.action>
87+
</f:then>
88+
<f:else>
89+
{variant.title}
90+
</f:else>
91+
</f:if>
92+
</div>
6393
<p>
6494
<f:translate key="tx_cart_domain_model_order_product.sku.short"/>
6595
: {variant.completeSku}

0 commit comments

Comments
 (0)