186 lines
9.3 KiB
Plaintext
186 lines
9.3 KiB
Plaintext
@model CompareProductsModel
|
|
|
|
@using Nop.Core.Domain.Catalog
|
|
|
|
@{
|
|
Layout = "_ColumnsTwo";
|
|
|
|
//title
|
|
NopHtml.AddTitleParts(T("PageTitle.CompareProducts").Text);
|
|
//page class
|
|
NopHtml.AppendPageCssClassParts("html-compare-products-page");
|
|
}
|
|
@{
|
|
var columnWidth = "";
|
|
if (Model.Products.Count > 0)
|
|
{
|
|
columnWidth = Math.Round((decimal)(90M / Model.Products.Count), 0).ToString() + "%";
|
|
}
|
|
|
|
var uniqueGroupes = new List<ProductSpecificationAttributeGroupModel>();
|
|
foreach (var group in Model.Products.SelectMany(p => p.ProductSpecificationModel.Groups))
|
|
{
|
|
if (!uniqueGroupes.Any(g => g.Id == group.Id))
|
|
uniqueGroupes.Add(group);
|
|
}
|
|
}
|
|
<div class="page compare-products-page">
|
|
<div class="page-title">
|
|
<h1>@T("Products.Compare.Title")</h1>
|
|
</div>
|
|
<div class="page-body">
|
|
@if (Model.Products.Count > 0)
|
|
{
|
|
<a href="#" onclick="setLocation('@Url.RouteUrl("ClearCompareList")')" class="clear-list">@T("Products.Compare.Clear")</a>
|
|
<div class="table-wrapper">
|
|
<table class="compare-products-table">
|
|
<tbody>
|
|
<tr class="remove-product">
|
|
<td class="empty"> </td>
|
|
@foreach (var product in Model.Products)
|
|
{
|
|
<td style="width: @columnWidth;">
|
|
<button type="button" class="button-2 remove-button" onclick="setLocation('@Url.RouteUrl("RemoveProductFromCompareList", new { productId = product.Id })')">@T("Common.Remove")</button>
|
|
</td>
|
|
}
|
|
</tr>
|
|
<tr class="product-picture">
|
|
<td class="empty"> </td>
|
|
@foreach (var product in Model.Products)
|
|
{
|
|
var picture = product.PictureModels.FirstOrDefault();
|
|
<td style="width: @columnWidth;">
|
|
<a class="picture" href="@(Url.RouteUrl<Product>(new { SeName = product.SeName }))"><img alt="@picture?.AlternateText" src="@picture?.ImageUrl" title="@picture?.Title" /></a>
|
|
</td>
|
|
}
|
|
</tr>
|
|
<tr class="product-name">
|
|
<td>
|
|
<label>@T("Products.Compare.Name")</label>
|
|
</td>
|
|
@foreach (var product in Model.Products)
|
|
{
|
|
<td style="width: @columnWidth;">
|
|
<a href="@(Url.RouteUrl<Product>(new { SeName = product.SeName }))">@product.Name</a>
|
|
</td>
|
|
}
|
|
</tr>
|
|
<tr class="product-price">
|
|
<td>
|
|
<label>@T("Products.Compare.Price")</label>
|
|
</td>
|
|
@foreach (var product in Model.Products)
|
|
{
|
|
<td style="width: @columnWidth;">
|
|
@product.ProductPrice.Price
|
|
</td>
|
|
}
|
|
</tr>
|
|
@if (Model.IncludeShortDescriptionInCompareProducts)
|
|
{
|
|
<tr class="short-description">
|
|
<td>
|
|
<label>@T("Products.Compare.ShortDescription")</label>
|
|
</td>
|
|
@foreach (var product in Model.Products)
|
|
{
|
|
<td style="width: @columnWidth;">
|
|
@Html.Raw(product.ShortDescription)
|
|
</td>
|
|
}
|
|
</tr>
|
|
}
|
|
@if (Model.IncludeFullDescriptionInCompareProducts)
|
|
{
|
|
<tr class="full-description">
|
|
<td>
|
|
<label>@T("Products.Compare.FullDescription")</label>
|
|
</td>
|
|
@foreach (var product in Model.Products)
|
|
{
|
|
<td style="width: @columnWidth;">
|
|
@Html.Raw(product.FullDescription)
|
|
</td>
|
|
}
|
|
</tr>
|
|
}
|
|
@foreach (var group in uniqueGroupes)
|
|
{
|
|
if (group.Attributes.Count > 0)
|
|
{
|
|
@if (group.Id > 0)
|
|
{
|
|
<tr class="specification-group">
|
|
<td>
|
|
<label>@group.Name</label>
|
|
</td>
|
|
</tr>
|
|
}
|
|
|
|
var uniqueGroupAttributes = new List<ProductSpecificationAttributeModel>();
|
|
foreach (var attribute in Model.Products.SelectMany(p => p.ProductSpecificationModel.Groups.Where(g => g.Id == group.Id).SelectMany(g => g.Attributes)))
|
|
{
|
|
if (!uniqueGroupAttributes.Any(sa => sa.Id == attribute.Id))
|
|
uniqueGroupAttributes.Add(attribute);
|
|
}
|
|
@foreach (var specificationAttribute in uniqueGroupAttributes)
|
|
{
|
|
<tr class="specification">
|
|
<td>
|
|
<label>@specificationAttribute.Name</label>
|
|
</td>
|
|
@foreach (var product in Model.Products)
|
|
{
|
|
var foundProductSpec = product.ProductSpecificationModel.Groups
|
|
.Where(g => g.Id == group.Id)
|
|
.SelectMany(g => g.Attributes)
|
|
.FirstOrDefault(sa => sa.Id == specificationAttribute.Id);
|
|
|
|
<td style="width: @columnWidth;">
|
|
@if (foundProductSpec != null)
|
|
{
|
|
for (int i = 0; i < foundProductSpec.Values.Count; i++)
|
|
{
|
|
var value = foundProductSpec.Values[i];
|
|
|
|
if (string.IsNullOrEmpty(value.ColorSquaresRgb))
|
|
{
|
|
@Html.Raw(value.ValueRaw)
|
|
if (i != foundProductSpec.Values.Count - 1)
|
|
{
|
|
<text>, </text>
|
|
}
|
|
}
|
|
else
|
|
{
|
|
<div class="attribute-squares color-squares attribute-squares-padding">
|
|
<span class="attribute-square-container" title="@Html.Raw(value.ValueRaw)">
|
|
<span class="attribute-square" style="background-color: @(value.ColorSquaresRgb);"> </span>
|
|
</span>
|
|
</div>
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
<text> </text>
|
|
}
|
|
</td>
|
|
}
|
|
</tr>
|
|
}
|
|
}
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
}
|
|
else
|
|
{
|
|
<div class="no-data">
|
|
@T("Products.Compare.NoItems")
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|