Skip to content

Commit 0ed234b

Browse files
committed
#1673 Warning on adding associated product with attributes as product attribute value
1 parent f3b34af commit 0ed234b

File tree

7 files changed

+43
-6
lines changed

7 files changed

+43
-6
lines changed

src/Presentation/Nop.Web/Administration/Content/styles.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ ul, ol {
3535
.field-validation-valid.warning {
3636
color: #fff;
3737
background-color: #f39c12;
38-
margin-top: 5px;
39-
display: inline-block;
38+
margin: 5px 0;
39+
display: block;
4040
padding: 5px;
4141
border-radius: 3px;
4242
border-left: 5px solid #c87f0a;

src/Presentation/Nop.Web/Administration/Content/styles.rtl.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ ul, ol {
3535
.field-validation-valid.warning {
3636
color: #fff;
3737
background-color: #f39c12;
38-
margin-top: 5px;
39-
display: inline-block;
38+
margin: 5px 0;
39+
display: block;
4040
padding: 5px;
4141
border-radius: 3px;
4242
border-right: 5px solid #c87f0a;

src/Presentation/Nop.Web/Administration/Controllers/ProductController.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4344,7 +4344,6 @@ public ActionResult AssociateProductToAttributeValuePopup(string productIdInput,
43444344
if (_workContext.CurrentVendor != null && associatedProduct.VendorId != _workContext.CurrentVendor.Id)
43454345
return Content("This is not your product");
43464346

4347-
//a vendor should have access only to his products
43484347
model.IsLoggedInAsVendor = _workContext.CurrentVendor != null;
43494348
ViewBag.RefreshPage = true;
43504349
ViewBag.productIdInput = productIdInput;
@@ -4354,6 +4353,21 @@ public ActionResult AssociateProductToAttributeValuePopup(string productIdInput,
43544353
return View(model);
43554354
}
43564355

4356+
//action displaying notification (warning) to a store owner that associated product has attributes
4357+
[ValidateInput(false)]
4358+
public ActionResult AssociatedProductHasAttributes(int productId)
4359+
{
4360+
var associatedProduct = _productService.GetProductById(productId);
4361+
if (associatedProduct != null && associatedProduct.ProductAttributeMappings.Any())
4362+
{
4363+
if (associatedProduct.ProductAttributeMappings.Any(attribute => attribute.IsRequired))
4364+
return Json(new { Result = _localizationService.GetResource("Admin.Catalog.Products.ProductAttributes.Attributes.Values.Fields.AssociatedProduct.HasRequiredAttributes") }, JsonRequestBehavior.AllowGet);
4365+
4366+
return Json(new { Result = _localizationService.GetResource("Admin.Catalog.Products.ProductAttributes.Attributes.Values.Fields.AssociatedProduct.HasAttributes") }, JsonRequestBehavior.AllowGet);
4367+
}
4368+
4369+
return Json(new { Result = string.Empty }, JsonRequestBehavior.AllowGet);
4370+
}
43574371

43584372
#endregion
43594373

src/Presentation/Nop.Web/Administration/Views/Product/AssociateProductToAttributeValuePopup.cshtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
{
1414
<script type="text/javascript">
1515
try {
16-
window.opener.document.getElementById('@(ViewBag.productIdInput)').value = '@(ViewBag.productId)';
16+
window.opener.$('#@(ViewBag.productIdInput)').val('@(ViewBag.productId)').trigger('change');
1717
window.opener.document.getElementById('@(ViewBag.productNameInput)').innerHTML = '@(ViewBag.productName)';
1818
}
1919
catch (e){}

src/Presentation/Nop.Web/Administration/Views/Product/_CreateOrUpdateProductAttributeValue.cshtml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,17 @@
8484
<button type="submit" onclick="javascript:OpenWindow('@(Url.Action("AssociateProductToAttributeValuePopup", "Product", new {productIdInput = Html.FieldIdFor(model => model.AssociatedProductId), productNameInput = "associate-product-name"}))', 800, 850, true); return false;" class="btn btn-primary">
8585
@T("Admin.Catalog.Products.ProductAttributes.Attributes.Values.Fields.AssociatedProduct.AddNew")
8686
</button>
87+
<script type="text/javascript">
88+
$(document).ready(function () {
89+
if (@Model.AssociatedProductId > 0) {
90+
warningValidation('@Url.Action("AssociatedProductHasAttributes", "Product")', '@Html.FieldNameFor(model => model.AssociatedProductId)', { productId: '@Model.AssociatedProductId' });
91+
}
92+
93+
$('#@Html.FieldIdFor(model => model.AssociatedProductId)').on('change', function () {
94+
warningValidation('@Url.Action("AssociatedProductHasAttributes", "Product")', '@Html.FieldNameFor(model => model.AssociatedProductId)', { productId: $(this).val() });
95+
});
96+
});
97+
</script>
8798
</div>
8899
</div>
89100
<div class="form-group" id="group-customer-enters-qty">

src/Presentation/Nop.Web/App_Data/Localization/defaultResources.nopres.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3465,6 +3465,12 @@
34653465
<LocaleResource Name="Admin.Catalog.Products.ProductAttributes.Attributes.Values.Fields.AssociatedProduct.Choose">
34663466
<Value>Choose an associated product</Value>
34673467
</LocaleResource>
3468+
<LocaleResource Name="Admin.Catalog.Products.ProductAttributes.Attributes.Values.Fields.AssociatedProduct.HasAttributes">
3469+
<Value>The associated product has attributes, keep in mind that customers can not select them in the product details page.</Value>
3470+
</LocaleResource>
3471+
<LocaleResource Name="Admin.Catalog.Products.ProductAttributes.Attributes.Values.Fields.AssociatedProduct.HasRequiredAttributes">
3472+
<Value>The associated product has required product attributes, so customers won't be able to choose this product attribute value.</Value>
3473+
</LocaleResource>
34683474
<LocaleResource Name="Admin.Catalog.Products.ProductAttributes.Attributes.Values.Fields.AssociatedProduct.Hint">
34693475
<Value>Associated product.</Value>
34703476
</LocaleResource>

upgradescripts/3.80-the next version/upgrade.sql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1106,6 +1106,12 @@ set @resources='
11061106
<LocaleResource Name="Admin.ContentManagement.News.Comments.Fields.StoreName">
11071107
<Value>Store name</Value>
11081108
</LocaleResource>
1109+
<LocaleResource Name="Admin.Catalog.Products.ProductAttributes.Attributes.Values.Fields.AssociatedProduct.HasAttributes">
1110+
<Value>The associated product has attributes, keep in mind that customers can not select them in the product details page.</Value>
1111+
</LocaleResource>
1112+
<LocaleResource Name="Admin.Catalog.Products.ProductAttributes.Attributes.Values.Fields.AssociatedProduct.HasRequiredAttributes">
1113+
<Value>The associated product has required product attributes, so customers won''t be able to choose this product attribute value.</Value>
1114+
</LocaleResource>
11091115
</Language>
11101116
'
11111117

0 commit comments

Comments
 (0)