Error executing template "Designs/Swift-v2/Paragraph/Swift-v2_ProductCatalogDetailsApp.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_0f405311b4344f56a9b33abff84efc76.ExecuteAsync() at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 68 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 847
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Ecommerce.ProductCatalog 3 4 @{ 5 //Set default product data for use in Visual Editor 6 if (Pageview.IsVisualEditorMode) 7 { 8 ProductViewModelSettings productSetting = new ProductViewModelSettings 9 { 10 LanguageId = Dynamicweb.Ecommerce.Common.Context.LanguageID, 11 CurrencyCode = Dynamicweb.Ecommerce.Common.Context.Currency.Code, 12 CountryCode = Dynamicweb.Ecommerce.Common.Context.Country.Code2, 13 ShopId = Pageview.Area.EcomShopId 14 }; 15 } 16 else if (!Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 17 { 18 ProductViewModel product = new ProductViewModel(); 19 Dynamicweb.Context.Current.Items.Add("ProductDetails", product); 20 } 21 } 22 23 @if (Pageview.IsVisualEditorMode) 24 { 25 <div class="alert alert-info" role="alert"> 26 <span>@Translate("Product catalog App: Edit this column to configure. (Product catalog app must be attached this paragraph)")</span> 27 </div> 28 } 29 30 <div class="item_@Model.Item.SystemName.ToLower()"> 31 @Model.GetModuleOutput() 32 </div> 33
Error executing template "Designs/Swift-v2/Paragraph/Swift-v2_BackInStockNotification.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_a93a630c5e82497fb08a36f78035f9f5.ExecuteAsync() at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 68 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 847
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using System.Linq 3 @using Dynamicweb.Ecommerce 4 @using Dynamicweb.Ecommerce.ProductCatalog 5 @using Dynamicweb.Ecommerce.Products 6 @using Dynamicweb.Ecommerce.Stocks 7 8 @functions 9 { 10 private static bool BackInStockRegisteredForUser(ProductViewModel product, string unitId = "", long stocklocationId = 0) 11 { 12 if (!Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn()) return false; 13 14 Product productObject = Services.Products.GetProductById(product.Id, product.VariantId, product.LanguageId); 15 StockLocation stockLocation = Services.StockService.GetStockLocation(stocklocationId); 16 double unitStock = productObject.GetUnitStock(stockLocation, unitId); 17 return unitStock <= 0d && ProductBackInStockNotification.BackInStockNotificationExists(productObject, unitId); 18 } 19 } 20 21 @{ 22 ProductViewModel product = null; 23 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 24 { 25 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 26 } 27 } 28 29 @if ((product is object && product.ProductType == Dynamicweb.Ecommerce.Products.ProductType.Stock)) 30 { 31 bool productInStock = product.StockLevel > 0 || product.NeverOutOfstock; 32 33 if (!productInStock) 34 { 35 string notifiedMessage = Model.Item.GetString("NotifiedMessage"); 36 string notifiedMessageId = $"NotifiedMessage_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 37 38 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 39 horizontalAlign = horizontalAlign == "center" ? "justify-content-center" : horizontalAlign; 40 horizontalAlign = horizontalAlign == "end" ? "justify-content-end" : horizontalAlign; 41 horizontalAlign = horizontalAlign == "full" ? "" : horizontalAlign; 42 43 string flexFill = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "flex-fill" : ""; 44 string fullWidth = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "w-100" : ""; 45 46 bool notificationRegisteredForUser = BackInStockRegisteredForUser(product); 47 48 <div class="d-flex flex-row w-100 @horizontalAlign @fullWidth item_@Model.Item.SystemName.ToLower()"> 49 <div class="@horizontalAlign @fullWidth @(notificationRegisteredForUser ? "" : "d-none")" id="@notifiedMessageId"> 50 @notifiedMessage 51 </div> 52 53 @if (!notificationRegisteredForUser) 54 { 55 56 string notifyIcon = Model.Item.GetString("Icon"); 57 string notifyLabel = !notifyIcon.Contains("_none") ? "<span class=\"icon-2\">" + ReadFile(notifyIcon) + "</span>" : ""; 58 notifyLabel += " " + Translate("Notify me when available"); 59 60 string modalId = $"modal_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 61 string formId = $"NotificationForm_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 62 string notificationButtonId = $"NotificationButton_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 63 string notificationOnClick = !Pageview.IsVisualEditorMode ? $"swift.BackInStockNotification.SubmitNotification('{formId}', '{modalId}', '{notifiedMessageId}', '{notificationButtonId}')" : ""; 64 65 string productPage = $"/Default.aspx?ID={GetPageIdByNavigationTag("ProductDetailPage")}"; 66 67 <div class="d-flex @horizontalAlign @fullWidth js-input-group"> 68 <div class="input-group input-primary-button-group flex-nowrap"> 69 <button type="button" class="btn btn-primary @flexFill" data-dw-button="primary" id="@notificationButtonId" data-bs-toggle="modal" data-bs-target="#@modalId"> 70 <span class="text-nowrap d-flex align-items-center justify-content-center gap-2"> 71 @notifyLabel 72 </span> 73 </button> 74 </div> 75 </div> 76 77 <div class="modal fade" id="@modalId" tabindex="-1" aria-labelledby="label_@modalId" aria-hidden="true"> 78 <div class="modal-dialog pt-8"> 79 <div class="modal-content"> 80 <div class="modal-header"> 81 <h5 class="modal-title" id="label_@modalId">@Translate("Back in stock")</h5> 82 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="@Translate("Close")"></button> 83 </div> 84 <div class="modal-body"> 85 <form name="@product.Id" id="@formId" method="post" action="@productPage"> 86 <input type="hidden" name="ProductID" value="@product.Id" /> 87 <input type="hidden" name="VariantID" value="@product.VariantId" /> 88 <input type="hidden" name="LanguageID" value="@product.LanguageId" /> 89 <input type="hidden" name="CartCmd" value="createnotificationforthisproduct" /> 90 <div class="m-2"> 91 @Translate("Send me an email when the product is in stock.") 92 </div> 93 <div class="form-floating m-2"> 94 <input class="form-control" type="text" id="NotificationEmail" value="@(Pageview.User != null ? Pageview.User.Email : "")" name="NotificationEmail" placeholder="@Translate("Email")" required="required" aria-required="aria-required" /> 95 <label for="NotificationEmail" class="form-label">@Translate("Email")</label> 96 </div> 97 </form> 98 </div> 99 <div class="modal-footer"> 100 <button type="button" class="btn btn-primary" data-dw-button="primary" onclick="@notificationOnClick">@Translate("Submit")</button> 101 </div> 102 </div> 103 </div> 104 </div> 105 } 106 </div> 107 } 108 } 109 else if (Pageview.IsVisualEditorMode) 110 { 111 <div class="alert alert-dark m-0">@Translate("Back in stock notification will be shown here")</div> 112 } 113
Error executing template "Designs/Swift-v2/Paragraph/Swift-v2_BackInStockNotification.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_a93a630c5e82497fb08a36f78035f9f5.ExecuteAsync() at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 68 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 847
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using System.Linq 3 @using Dynamicweb.Ecommerce 4 @using Dynamicweb.Ecommerce.ProductCatalog 5 @using Dynamicweb.Ecommerce.Products 6 @using Dynamicweb.Ecommerce.Stocks 7 8 @functions 9 { 10 private static bool BackInStockRegisteredForUser(ProductViewModel product, string unitId = "", long stocklocationId = 0) 11 { 12 if (!Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn()) return false; 13 14 Product productObject = Services.Products.GetProductById(product.Id, product.VariantId, product.LanguageId); 15 StockLocation stockLocation = Services.StockService.GetStockLocation(stocklocationId); 16 double unitStock = productObject.GetUnitStock(stockLocation, unitId); 17 return unitStock <= 0d && ProductBackInStockNotification.BackInStockNotificationExists(productObject, unitId); 18 } 19 } 20 21 @{ 22 ProductViewModel product = null; 23 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 24 { 25 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 26 } 27 } 28 29 @if ((product is object && product.ProductType == Dynamicweb.Ecommerce.Products.ProductType.Stock)) 30 { 31 bool productInStock = product.StockLevel > 0 || product.NeverOutOfstock; 32 33 if (!productInStock) 34 { 35 string notifiedMessage = Model.Item.GetString("NotifiedMessage"); 36 string notifiedMessageId = $"NotifiedMessage_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 37 38 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 39 horizontalAlign = horizontalAlign == "center" ? "justify-content-center" : horizontalAlign; 40 horizontalAlign = horizontalAlign == "end" ? "justify-content-end" : horizontalAlign; 41 horizontalAlign = horizontalAlign == "full" ? "" : horizontalAlign; 42 43 string flexFill = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "flex-fill" : ""; 44 string fullWidth = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "w-100" : ""; 45 46 bool notificationRegisteredForUser = BackInStockRegisteredForUser(product); 47 48 <div class="d-flex flex-row w-100 @horizontalAlign @fullWidth item_@Model.Item.SystemName.ToLower()"> 49 <div class="@horizontalAlign @fullWidth @(notificationRegisteredForUser ? "" : "d-none")" id="@notifiedMessageId"> 50 @notifiedMessage 51 </div> 52 53 @if (!notificationRegisteredForUser) 54 { 55 56 string notifyIcon = Model.Item.GetString("Icon"); 57 string notifyLabel = !notifyIcon.Contains("_none") ? "<span class=\"icon-2\">" + ReadFile(notifyIcon) + "</span>" : ""; 58 notifyLabel += " " + Translate("Notify me when available"); 59 60 string modalId = $"modal_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 61 string formId = $"NotificationForm_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 62 string notificationButtonId = $"NotificationButton_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 63 string notificationOnClick = !Pageview.IsVisualEditorMode ? $"swift.BackInStockNotification.SubmitNotification('{formId}', '{modalId}', '{notifiedMessageId}', '{notificationButtonId}')" : ""; 64 65 string productPage = $"/Default.aspx?ID={GetPageIdByNavigationTag("ProductDetailPage")}"; 66 67 <div class="d-flex @horizontalAlign @fullWidth js-input-group"> 68 <div class="input-group input-primary-button-group flex-nowrap"> 69 <button type="button" class="btn btn-primary @flexFill" data-dw-button="primary" id="@notificationButtonId" data-bs-toggle="modal" data-bs-target="#@modalId"> 70 <span class="text-nowrap d-flex align-items-center justify-content-center gap-2"> 71 @notifyLabel 72 </span> 73 </button> 74 </div> 75 </div> 76 77 <div class="modal fade" id="@modalId" tabindex="-1" aria-labelledby="label_@modalId" aria-hidden="true"> 78 <div class="modal-dialog pt-8"> 79 <div class="modal-content"> 80 <div class="modal-header"> 81 <h5 class="modal-title" id="label_@modalId">@Translate("Back in stock")</h5> 82 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="@Translate("Close")"></button> 83 </div> 84 <div class="modal-body"> 85 <form name="@product.Id" id="@formId" method="post" action="@productPage"> 86 <input type="hidden" name="ProductID" value="@product.Id" /> 87 <input type="hidden" name="VariantID" value="@product.VariantId" /> 88 <input type="hidden" name="LanguageID" value="@product.LanguageId" /> 89 <input type="hidden" name="CartCmd" value="createnotificationforthisproduct" /> 90 <div class="m-2"> 91 @Translate("Send me an email when the product is in stock.") 92 </div> 93 <div class="form-floating m-2"> 94 <input class="form-control" type="text" id="NotificationEmail" value="@(Pageview.User != null ? Pageview.User.Email : "")" name="NotificationEmail" placeholder="@Translate("Email")" required="required" aria-required="aria-required" /> 95 <label for="NotificationEmail" class="form-label">@Translate("Email")</label> 96 </div> 97 </form> 98 </div> 99 <div class="modal-footer"> 100 <button type="button" class="btn btn-primary" data-dw-button="primary" onclick="@notificationOnClick">@Translate("Submit")</button> 101 </div> 102 </div> 103 </div> 104 </div> 105 } 106 </div> 107 } 108 } 109 else if (Pageview.IsVisualEditorMode) 110 { 111 <div class="alert alert-dark m-0">@Translate("Back in stock notification will be shown here")</div> 112 } 113
Error executing template "Designs/Swift-v2/Paragraph/Swift-v2_BackInStockNotification.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_a93a630c5e82497fb08a36f78035f9f5.ExecuteAsync() at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 68 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 847
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using System.Linq 3 @using Dynamicweb.Ecommerce 4 @using Dynamicweb.Ecommerce.ProductCatalog 5 @using Dynamicweb.Ecommerce.Products 6 @using Dynamicweb.Ecommerce.Stocks 7 8 @functions 9 { 10 private static bool BackInStockRegisteredForUser(ProductViewModel product, string unitId = "", long stocklocationId = 0) 11 { 12 if (!Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn()) return false; 13 14 Product productObject = Services.Products.GetProductById(product.Id, product.VariantId, product.LanguageId); 15 StockLocation stockLocation = Services.StockService.GetStockLocation(stocklocationId); 16 double unitStock = productObject.GetUnitStock(stockLocation, unitId); 17 return unitStock <= 0d && ProductBackInStockNotification.BackInStockNotificationExists(productObject, unitId); 18 } 19 } 20 21 @{ 22 ProductViewModel product = null; 23 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 24 { 25 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 26 } 27 } 28 29 @if ((product is object && product.ProductType == Dynamicweb.Ecommerce.Products.ProductType.Stock)) 30 { 31 bool productInStock = product.StockLevel > 0 || product.NeverOutOfstock; 32 33 if (!productInStock) 34 { 35 string notifiedMessage = Model.Item.GetString("NotifiedMessage"); 36 string notifiedMessageId = $"NotifiedMessage_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 37 38 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 39 horizontalAlign = horizontalAlign == "center" ? "justify-content-center" : horizontalAlign; 40 horizontalAlign = horizontalAlign == "end" ? "justify-content-end" : horizontalAlign; 41 horizontalAlign = horizontalAlign == "full" ? "" : horizontalAlign; 42 43 string flexFill = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "flex-fill" : ""; 44 string fullWidth = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "w-100" : ""; 45 46 bool notificationRegisteredForUser = BackInStockRegisteredForUser(product); 47 48 <div class="d-flex flex-row w-100 @horizontalAlign @fullWidth item_@Model.Item.SystemName.ToLower()"> 49 <div class="@horizontalAlign @fullWidth @(notificationRegisteredForUser ? "" : "d-none")" id="@notifiedMessageId"> 50 @notifiedMessage 51 </div> 52 53 @if (!notificationRegisteredForUser) 54 { 55 56 string notifyIcon = Model.Item.GetString("Icon"); 57 string notifyLabel = !notifyIcon.Contains("_none") ? "<span class=\"icon-2\">" + ReadFile(notifyIcon) + "</span>" : ""; 58 notifyLabel += " " + Translate("Notify me when available"); 59 60 string modalId = $"modal_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 61 string formId = $"NotificationForm_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 62 string notificationButtonId = $"NotificationButton_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 63 string notificationOnClick = !Pageview.IsVisualEditorMode ? $"swift.BackInStockNotification.SubmitNotification('{formId}', '{modalId}', '{notifiedMessageId}', '{notificationButtonId}')" : ""; 64 65 string productPage = $"/Default.aspx?ID={GetPageIdByNavigationTag("ProductDetailPage")}"; 66 67 <div class="d-flex @horizontalAlign @fullWidth js-input-group"> 68 <div class="input-group input-primary-button-group flex-nowrap"> 69 <button type="button" class="btn btn-primary @flexFill" data-dw-button="primary" id="@notificationButtonId" data-bs-toggle="modal" data-bs-target="#@modalId"> 70 <span class="text-nowrap d-flex align-items-center justify-content-center gap-2"> 71 @notifyLabel 72 </span> 73 </button> 74 </div> 75 </div> 76 77 <div class="modal fade" id="@modalId" tabindex="-1" aria-labelledby="label_@modalId" aria-hidden="true"> 78 <div class="modal-dialog pt-8"> 79 <div class="modal-content"> 80 <div class="modal-header"> 81 <h5 class="modal-title" id="label_@modalId">@Translate("Back in stock")</h5> 82 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="@Translate("Close")"></button> 83 </div> 84 <div class="modal-body"> 85 <form name="@product.Id" id="@formId" method="post" action="@productPage"> 86 <input type="hidden" name="ProductID" value="@product.Id" /> 87 <input type="hidden" name="VariantID" value="@product.VariantId" /> 88 <input type="hidden" name="LanguageID" value="@product.LanguageId" /> 89 <input type="hidden" name="CartCmd" value="createnotificationforthisproduct" /> 90 <div class="m-2"> 91 @Translate("Send me an email when the product is in stock.") 92 </div> 93 <div class="form-floating m-2"> 94 <input class="form-control" type="text" id="NotificationEmail" value="@(Pageview.User != null ? Pageview.User.Email : "")" name="NotificationEmail" placeholder="@Translate("Email")" required="required" aria-required="aria-required" /> 95 <label for="NotificationEmail" class="form-label">@Translate("Email")</label> 96 </div> 97 </form> 98 </div> 99 <div class="modal-footer"> 100 <button type="button" class="btn btn-primary" data-dw-button="primary" onclick="@notificationOnClick">@Translate("Submit")</button> 101 </div> 102 </div> 103 </div> 104 </div> 105 } 106 </div> 107 } 108 } 109 else if (Pageview.IsVisualEditorMode) 110 { 111 <div class="alert alert-dark m-0">@Translate("Back in stock notification will be shown here")</div> 112 } 113
Vininformation
Error executing template "Designs/Swift-v2/Paragraph/Swift-v2_BackInStockNotification.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_a93a630c5e82497fb08a36f78035f9f5.ExecuteAsync() at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 68 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 847
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using System.Linq 3 @using Dynamicweb.Ecommerce 4 @using Dynamicweb.Ecommerce.ProductCatalog 5 @using Dynamicweb.Ecommerce.Products 6 @using Dynamicweb.Ecommerce.Stocks 7 8 @functions 9 { 10 private static bool BackInStockRegisteredForUser(ProductViewModel product, string unitId = "", long stocklocationId = 0) 11 { 12 if (!Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn()) return false; 13 14 Product productObject = Services.Products.GetProductById(product.Id, product.VariantId, product.LanguageId); 15 StockLocation stockLocation = Services.StockService.GetStockLocation(stocklocationId); 16 double unitStock = productObject.GetUnitStock(stockLocation, unitId); 17 return unitStock <= 0d && ProductBackInStockNotification.BackInStockNotificationExists(productObject, unitId); 18 } 19 } 20 21 @{ 22 ProductViewModel product = null; 23 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 24 { 25 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 26 } 27 } 28 29 @if ((product is object && product.ProductType == Dynamicweb.Ecommerce.Products.ProductType.Stock)) 30 { 31 bool productInStock = product.StockLevel > 0 || product.NeverOutOfstock; 32 33 if (!productInStock) 34 { 35 string notifiedMessage = Model.Item.GetString("NotifiedMessage"); 36 string notifiedMessageId = $"NotifiedMessage_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 37 38 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 39 horizontalAlign = horizontalAlign == "center" ? "justify-content-center" : horizontalAlign; 40 horizontalAlign = horizontalAlign == "end" ? "justify-content-end" : horizontalAlign; 41 horizontalAlign = horizontalAlign == "full" ? "" : horizontalAlign; 42 43 string flexFill = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "flex-fill" : ""; 44 string fullWidth = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "w-100" : ""; 45 46 bool notificationRegisteredForUser = BackInStockRegisteredForUser(product); 47 48 <div class="d-flex flex-row w-100 @horizontalAlign @fullWidth item_@Model.Item.SystemName.ToLower()"> 49 <div class="@horizontalAlign @fullWidth @(notificationRegisteredForUser ? "" : "d-none")" id="@notifiedMessageId"> 50 @notifiedMessage 51 </div> 52 53 @if (!notificationRegisteredForUser) 54 { 55 56 string notifyIcon = Model.Item.GetString("Icon"); 57 string notifyLabel = !notifyIcon.Contains("_none") ? "<span class=\"icon-2\">" + ReadFile(notifyIcon) + "</span>" : ""; 58 notifyLabel += " " + Translate("Notify me when available"); 59 60 string modalId = $"modal_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 61 string formId = $"NotificationForm_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 62 string notificationButtonId = $"NotificationButton_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 63 string notificationOnClick = !Pageview.IsVisualEditorMode ? $"swift.BackInStockNotification.SubmitNotification('{formId}', '{modalId}', '{notifiedMessageId}', '{notificationButtonId}')" : ""; 64 65 string productPage = $"/Default.aspx?ID={GetPageIdByNavigationTag("ProductDetailPage")}"; 66 67 <div class="d-flex @horizontalAlign @fullWidth js-input-group"> 68 <div class="input-group input-primary-button-group flex-nowrap"> 69 <button type="button" class="btn btn-primary @flexFill" data-dw-button="primary" id="@notificationButtonId" data-bs-toggle="modal" data-bs-target="#@modalId"> 70 <span class="text-nowrap d-flex align-items-center justify-content-center gap-2"> 71 @notifyLabel 72 </span> 73 </button> 74 </div> 75 </div> 76 77 <div class="modal fade" id="@modalId" tabindex="-1" aria-labelledby="label_@modalId" aria-hidden="true"> 78 <div class="modal-dialog pt-8"> 79 <div class="modal-content"> 80 <div class="modal-header"> 81 <h5 class="modal-title" id="label_@modalId">@Translate("Back in stock")</h5> 82 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="@Translate("Close")"></button> 83 </div> 84 <div class="modal-body"> 85 <form name="@product.Id" id="@formId" method="post" action="@productPage"> 86 <input type="hidden" name="ProductID" value="@product.Id" /> 87 <input type="hidden" name="VariantID" value="@product.VariantId" /> 88 <input type="hidden" name="LanguageID" value="@product.LanguageId" /> 89 <input type="hidden" name="CartCmd" value="createnotificationforthisproduct" /> 90 <div class="m-2"> 91 @Translate("Send me an email when the product is in stock.") 92 </div> 93 <div class="form-floating m-2"> 94 <input class="form-control" type="text" id="NotificationEmail" value="@(Pageview.User != null ? Pageview.User.Email : "")" name="NotificationEmail" placeholder="@Translate("Email")" required="required" aria-required="aria-required" /> 95 <label for="NotificationEmail" class="form-label">@Translate("Email")</label> 96 </div> 97 </form> 98 </div> 99 <div class="modal-footer"> 100 <button type="button" class="btn btn-primary" data-dw-button="primary" onclick="@notificationOnClick">@Translate("Submit")</button> 101 </div> 102 </div> 103 </div> 104 </div> 105 } 106 </div> 107 } 108 } 109 else if (Pageview.IsVisualEditorMode) 110 { 111 <div class="alert alert-dark m-0">@Translate("Back in stock notification will be shown here")</div> 112 } 113
Error executing template "Designs/Swift-v2/Paragraph/Swift-v2_BackInStockNotification.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_a93a630c5e82497fb08a36f78035f9f5.ExecuteAsync() at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 68 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 847
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using System.Linq 3 @using Dynamicweb.Ecommerce 4 @using Dynamicweb.Ecommerce.ProductCatalog 5 @using Dynamicweb.Ecommerce.Products 6 @using Dynamicweb.Ecommerce.Stocks 7 8 @functions 9 { 10 private static bool BackInStockRegisteredForUser(ProductViewModel product, string unitId = "", long stocklocationId = 0) 11 { 12 if (!Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn()) return false; 13 14 Product productObject = Services.Products.GetProductById(product.Id, product.VariantId, product.LanguageId); 15 StockLocation stockLocation = Services.StockService.GetStockLocation(stocklocationId); 16 double unitStock = productObject.GetUnitStock(stockLocation, unitId); 17 return unitStock <= 0d && ProductBackInStockNotification.BackInStockNotificationExists(productObject, unitId); 18 } 19 } 20 21 @{ 22 ProductViewModel product = null; 23 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 24 { 25 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 26 } 27 } 28 29 @if ((product is object && product.ProductType == Dynamicweb.Ecommerce.Products.ProductType.Stock)) 30 { 31 bool productInStock = product.StockLevel > 0 || product.NeverOutOfstock; 32 33 if (!productInStock) 34 { 35 string notifiedMessage = Model.Item.GetString("NotifiedMessage"); 36 string notifiedMessageId = $"NotifiedMessage_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 37 38 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 39 horizontalAlign = horizontalAlign == "center" ? "justify-content-center" : horizontalAlign; 40 horizontalAlign = horizontalAlign == "end" ? "justify-content-end" : horizontalAlign; 41 horizontalAlign = horizontalAlign == "full" ? "" : horizontalAlign; 42 43 string flexFill = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "flex-fill" : ""; 44 string fullWidth = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "w-100" : ""; 45 46 bool notificationRegisteredForUser = BackInStockRegisteredForUser(product); 47 48 <div class="d-flex flex-row w-100 @horizontalAlign @fullWidth item_@Model.Item.SystemName.ToLower()"> 49 <div class="@horizontalAlign @fullWidth @(notificationRegisteredForUser ? "" : "d-none")" id="@notifiedMessageId"> 50 @notifiedMessage 51 </div> 52 53 @if (!notificationRegisteredForUser) 54 { 55 56 string notifyIcon = Model.Item.GetString("Icon"); 57 string notifyLabel = !notifyIcon.Contains("_none") ? "<span class=\"icon-2\">" + ReadFile(notifyIcon) + "</span>" : ""; 58 notifyLabel += " " + Translate("Notify me when available"); 59 60 string modalId = $"modal_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 61 string formId = $"NotificationForm_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 62 string notificationButtonId = $"NotificationButton_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 63 string notificationOnClick = !Pageview.IsVisualEditorMode ? $"swift.BackInStockNotification.SubmitNotification('{formId}', '{modalId}', '{notifiedMessageId}', '{notificationButtonId}')" : ""; 64 65 string productPage = $"/Default.aspx?ID={GetPageIdByNavigationTag("ProductDetailPage")}"; 66 67 <div class="d-flex @horizontalAlign @fullWidth js-input-group"> 68 <div class="input-group input-primary-button-group flex-nowrap"> 69 <button type="button" class="btn btn-primary @flexFill" data-dw-button="primary" id="@notificationButtonId" data-bs-toggle="modal" data-bs-target="#@modalId"> 70 <span class="text-nowrap d-flex align-items-center justify-content-center gap-2"> 71 @notifyLabel 72 </span> 73 </button> 74 </div> 75 </div> 76 77 <div class="modal fade" id="@modalId" tabindex="-1" aria-labelledby="label_@modalId" aria-hidden="true"> 78 <div class="modal-dialog pt-8"> 79 <div class="modal-content"> 80 <div class="modal-header"> 81 <h5 class="modal-title" id="label_@modalId">@Translate("Back in stock")</h5> 82 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="@Translate("Close")"></button> 83 </div> 84 <div class="modal-body"> 85 <form name="@product.Id" id="@formId" method="post" action="@productPage"> 86 <input type="hidden" name="ProductID" value="@product.Id" /> 87 <input type="hidden" name="VariantID" value="@product.VariantId" /> 88 <input type="hidden" name="LanguageID" value="@product.LanguageId" /> 89 <input type="hidden" name="CartCmd" value="createnotificationforthisproduct" /> 90 <div class="m-2"> 91 @Translate("Send me an email when the product is in stock.") 92 </div> 93 <div class="form-floating m-2"> 94 <input class="form-control" type="text" id="NotificationEmail" value="@(Pageview.User != null ? Pageview.User.Email : "")" name="NotificationEmail" placeholder="@Translate("Email")" required="required" aria-required="aria-required" /> 95 <label for="NotificationEmail" class="form-label">@Translate("Email")</label> 96 </div> 97 </form> 98 </div> 99 <div class="modal-footer"> 100 <button type="button" class="btn btn-primary" data-dw-button="primary" onclick="@notificationOnClick">@Translate("Submit")</button> 101 </div> 102 </div> 103 </div> 104 </div> 105 } 106 </div> 107 } 108 } 109 else if (Pageview.IsVisualEditorMode) 110 { 111 <div class="alert alert-dark m-0">@Translate("Back in stock notification will be shown here")</div> 112 } 113
Error executing template "Designs/Swift-v2/Paragraph/Swift-v2_BackInStockNotification.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_a93a630c5e82497fb08a36f78035f9f5.ExecuteAsync() at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 68 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 847
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using System.Linq 3 @using Dynamicweb.Ecommerce 4 @using Dynamicweb.Ecommerce.ProductCatalog 5 @using Dynamicweb.Ecommerce.Products 6 @using Dynamicweb.Ecommerce.Stocks 7 8 @functions 9 { 10 private static bool BackInStockRegisteredForUser(ProductViewModel product, string unitId = "", long stocklocationId = 0) 11 { 12 if (!Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn()) return false; 13 14 Product productObject = Services.Products.GetProductById(product.Id, product.VariantId, product.LanguageId); 15 StockLocation stockLocation = Services.StockService.GetStockLocation(stocklocationId); 16 double unitStock = productObject.GetUnitStock(stockLocation, unitId); 17 return unitStock <= 0d && ProductBackInStockNotification.BackInStockNotificationExists(productObject, unitId); 18 } 19 } 20 21 @{ 22 ProductViewModel product = null; 23 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 24 { 25 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 26 } 27 } 28 29 @if ((product is object && product.ProductType == Dynamicweb.Ecommerce.Products.ProductType.Stock)) 30 { 31 bool productInStock = product.StockLevel > 0 || product.NeverOutOfstock; 32 33 if (!productInStock) 34 { 35 string notifiedMessage = Model.Item.GetString("NotifiedMessage"); 36 string notifiedMessageId = $"NotifiedMessage_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 37 38 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 39 horizontalAlign = horizontalAlign == "center" ? "justify-content-center" : horizontalAlign; 40 horizontalAlign = horizontalAlign == "end" ? "justify-content-end" : horizontalAlign; 41 horizontalAlign = horizontalAlign == "full" ? "" : horizontalAlign; 42 43 string flexFill = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "flex-fill" : ""; 44 string fullWidth = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "w-100" : ""; 45 46 bool notificationRegisteredForUser = BackInStockRegisteredForUser(product); 47 48 <div class="d-flex flex-row w-100 @horizontalAlign @fullWidth item_@Model.Item.SystemName.ToLower()"> 49 <div class="@horizontalAlign @fullWidth @(notificationRegisteredForUser ? "" : "d-none")" id="@notifiedMessageId"> 50 @notifiedMessage 51 </div> 52 53 @if (!notificationRegisteredForUser) 54 { 55 56 string notifyIcon = Model.Item.GetString("Icon"); 57 string notifyLabel = !notifyIcon.Contains("_none") ? "<span class=\"icon-2\">" + ReadFile(notifyIcon) + "</span>" : ""; 58 notifyLabel += " " + Translate("Notify me when available"); 59 60 string modalId = $"modal_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 61 string formId = $"NotificationForm_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 62 string notificationButtonId = $"NotificationButton_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 63 string notificationOnClick = !Pageview.IsVisualEditorMode ? $"swift.BackInStockNotification.SubmitNotification('{formId}', '{modalId}', '{notifiedMessageId}', '{notificationButtonId}')" : ""; 64 65 string productPage = $"/Default.aspx?ID={GetPageIdByNavigationTag("ProductDetailPage")}"; 66 67 <div class="d-flex @horizontalAlign @fullWidth js-input-group"> 68 <div class="input-group input-primary-button-group flex-nowrap"> 69 <button type="button" class="btn btn-primary @flexFill" data-dw-button="primary" id="@notificationButtonId" data-bs-toggle="modal" data-bs-target="#@modalId"> 70 <span class="text-nowrap d-flex align-items-center justify-content-center gap-2"> 71 @notifyLabel 72 </span> 73 </button> 74 </div> 75 </div> 76 77 <div class="modal fade" id="@modalId" tabindex="-1" aria-labelledby="label_@modalId" aria-hidden="true"> 78 <div class="modal-dialog pt-8"> 79 <div class="modal-content"> 80 <div class="modal-header"> 81 <h5 class="modal-title" id="label_@modalId">@Translate("Back in stock")</h5> 82 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="@Translate("Close")"></button> 83 </div> 84 <div class="modal-body"> 85 <form name="@product.Id" id="@formId" method="post" action="@productPage"> 86 <input type="hidden" name="ProductID" value="@product.Id" /> 87 <input type="hidden" name="VariantID" value="@product.VariantId" /> 88 <input type="hidden" name="LanguageID" value="@product.LanguageId" /> 89 <input type="hidden" name="CartCmd" value="createnotificationforthisproduct" /> 90 <div class="m-2"> 91 @Translate("Send me an email when the product is in stock.") 92 </div> 93 <div class="form-floating m-2"> 94 <input class="form-control" type="text" id="NotificationEmail" value="@(Pageview.User != null ? Pageview.User.Email : "")" name="NotificationEmail" placeholder="@Translate("Email")" required="required" aria-required="aria-required" /> 95 <label for="NotificationEmail" class="form-label">@Translate("Email")</label> 96 </div> 97 </form> 98 </div> 99 <div class="modal-footer"> 100 <button type="button" class="btn btn-primary" data-dw-button="primary" onclick="@notificationOnClick">@Translate("Submit")</button> 101 </div> 102 </div> 103 </div> 104 </div> 105 } 106 </div> 107 } 108 } 109 else if (Pageview.IsVisualEditorMode) 110 { 111 <div class="alert alert-dark m-0">@Translate("Back in stock notification will be shown here")</div> 112 } 113
Error executing template "Designs/Swift-v2/Paragraph/Swift-v2_BackInStockNotification.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_a93a630c5e82497fb08a36f78035f9f5.ExecuteAsync() at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 68 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 847
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using System.Linq 3 @using Dynamicweb.Ecommerce 4 @using Dynamicweb.Ecommerce.ProductCatalog 5 @using Dynamicweb.Ecommerce.Products 6 @using Dynamicweb.Ecommerce.Stocks 7 8 @functions 9 { 10 private static bool BackInStockRegisteredForUser(ProductViewModel product, string unitId = "", long stocklocationId = 0) 11 { 12 if (!Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn()) return false; 13 14 Product productObject = Services.Products.GetProductById(product.Id, product.VariantId, product.LanguageId); 15 StockLocation stockLocation = Services.StockService.GetStockLocation(stocklocationId); 16 double unitStock = productObject.GetUnitStock(stockLocation, unitId); 17 return unitStock <= 0d && ProductBackInStockNotification.BackInStockNotificationExists(productObject, unitId); 18 } 19 } 20 21 @{ 22 ProductViewModel product = null; 23 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 24 { 25 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 26 } 27 } 28 29 @if ((product is object && product.ProductType == Dynamicweb.Ecommerce.Products.ProductType.Stock)) 30 { 31 bool productInStock = product.StockLevel > 0 || product.NeverOutOfstock; 32 33 if (!productInStock) 34 { 35 string notifiedMessage = Model.Item.GetString("NotifiedMessage"); 36 string notifiedMessageId = $"NotifiedMessage_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 37 38 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 39 horizontalAlign = horizontalAlign == "center" ? "justify-content-center" : horizontalAlign; 40 horizontalAlign = horizontalAlign == "end" ? "justify-content-end" : horizontalAlign; 41 horizontalAlign = horizontalAlign == "full" ? "" : horizontalAlign; 42 43 string flexFill = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "flex-fill" : ""; 44 string fullWidth = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "w-100" : ""; 45 46 bool notificationRegisteredForUser = BackInStockRegisteredForUser(product); 47 48 <div class="d-flex flex-row w-100 @horizontalAlign @fullWidth item_@Model.Item.SystemName.ToLower()"> 49 <div class="@horizontalAlign @fullWidth @(notificationRegisteredForUser ? "" : "d-none")" id="@notifiedMessageId"> 50 @notifiedMessage 51 </div> 52 53 @if (!notificationRegisteredForUser) 54 { 55 56 string notifyIcon = Model.Item.GetString("Icon"); 57 string notifyLabel = !notifyIcon.Contains("_none") ? "<span class=\"icon-2\">" + ReadFile(notifyIcon) + "</span>" : ""; 58 notifyLabel += " " + Translate("Notify me when available"); 59 60 string modalId = $"modal_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 61 string formId = $"NotificationForm_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 62 string notificationButtonId = $"NotificationButton_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 63 string notificationOnClick = !Pageview.IsVisualEditorMode ? $"swift.BackInStockNotification.SubmitNotification('{formId}', '{modalId}', '{notifiedMessageId}', '{notificationButtonId}')" : ""; 64 65 string productPage = $"/Default.aspx?ID={GetPageIdByNavigationTag("ProductDetailPage")}"; 66 67 <div class="d-flex @horizontalAlign @fullWidth js-input-group"> 68 <div class="input-group input-primary-button-group flex-nowrap"> 69 <button type="button" class="btn btn-primary @flexFill" data-dw-button="primary" id="@notificationButtonId" data-bs-toggle="modal" data-bs-target="#@modalId"> 70 <span class="text-nowrap d-flex align-items-center justify-content-center gap-2"> 71 @notifyLabel 72 </span> 73 </button> 74 </div> 75 </div> 76 77 <div class="modal fade" id="@modalId" tabindex="-1" aria-labelledby="label_@modalId" aria-hidden="true"> 78 <div class="modal-dialog pt-8"> 79 <div class="modal-content"> 80 <div class="modal-header"> 81 <h5 class="modal-title" id="label_@modalId">@Translate("Back in stock")</h5> 82 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="@Translate("Close")"></button> 83 </div> 84 <div class="modal-body"> 85 <form name="@product.Id" id="@formId" method="post" action="@productPage"> 86 <input type="hidden" name="ProductID" value="@product.Id" /> 87 <input type="hidden" name="VariantID" value="@product.VariantId" /> 88 <input type="hidden" name="LanguageID" value="@product.LanguageId" /> 89 <input type="hidden" name="CartCmd" value="createnotificationforthisproduct" /> 90 <div class="m-2"> 91 @Translate("Send me an email when the product is in stock.") 92 </div> 93 <div class="form-floating m-2"> 94 <input class="form-control" type="text" id="NotificationEmail" value="@(Pageview.User != null ? Pageview.User.Email : "")" name="NotificationEmail" placeholder="@Translate("Email")" required="required" aria-required="aria-required" /> 95 <label for="NotificationEmail" class="form-label">@Translate("Email")</label> 96 </div> 97 </form> 98 </div> 99 <div class="modal-footer"> 100 <button type="button" class="btn btn-primary" data-dw-button="primary" onclick="@notificationOnClick">@Translate("Submit")</button> 101 </div> 102 </div> 103 </div> 104 </div> 105 } 106 </div> 107 } 108 } 109 else if (Pageview.IsVisualEditorMode) 110 { 111 <div class="alert alert-dark m-0">@Translate("Back in stock notification will be shown here")</div> 112 } 113
Error executing template "Designs/Swift-v2/Paragraph/Swift-v2_BackInStockNotification.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_a93a630c5e82497fb08a36f78035f9f5.ExecuteAsync() at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 68 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 847
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using System.Linq 3 @using Dynamicweb.Ecommerce 4 @using Dynamicweb.Ecommerce.ProductCatalog 5 @using Dynamicweb.Ecommerce.Products 6 @using Dynamicweb.Ecommerce.Stocks 7 8 @functions 9 { 10 private static bool BackInStockRegisteredForUser(ProductViewModel product, string unitId = "", long stocklocationId = 0) 11 { 12 if (!Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn()) return false; 13 14 Product productObject = Services.Products.GetProductById(product.Id, product.VariantId, product.LanguageId); 15 StockLocation stockLocation = Services.StockService.GetStockLocation(stocklocationId); 16 double unitStock = productObject.GetUnitStock(stockLocation, unitId); 17 return unitStock <= 0d && ProductBackInStockNotification.BackInStockNotificationExists(productObject, unitId); 18 } 19 } 20 21 @{ 22 ProductViewModel product = null; 23 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 24 { 25 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 26 } 27 } 28 29 @if ((product is object && product.ProductType == Dynamicweb.Ecommerce.Products.ProductType.Stock)) 30 { 31 bool productInStock = product.StockLevel > 0 || product.NeverOutOfstock; 32 33 if (!productInStock) 34 { 35 string notifiedMessage = Model.Item.GetString("NotifiedMessage"); 36 string notifiedMessageId = $"NotifiedMessage_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 37 38 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 39 horizontalAlign = horizontalAlign == "center" ? "justify-content-center" : horizontalAlign; 40 horizontalAlign = horizontalAlign == "end" ? "justify-content-end" : horizontalAlign; 41 horizontalAlign = horizontalAlign == "full" ? "" : horizontalAlign; 42 43 string flexFill = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "flex-fill" : ""; 44 string fullWidth = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "w-100" : ""; 45 46 bool notificationRegisteredForUser = BackInStockRegisteredForUser(product); 47 48 <div class="d-flex flex-row w-100 @horizontalAlign @fullWidth item_@Model.Item.SystemName.ToLower()"> 49 <div class="@horizontalAlign @fullWidth @(notificationRegisteredForUser ? "" : "d-none")" id="@notifiedMessageId"> 50 @notifiedMessage 51 </div> 52 53 @if (!notificationRegisteredForUser) 54 { 55 56 string notifyIcon = Model.Item.GetString("Icon"); 57 string notifyLabel = !notifyIcon.Contains("_none") ? "<span class=\"icon-2\">" + ReadFile(notifyIcon) + "</span>" : ""; 58 notifyLabel += " " + Translate("Notify me when available"); 59 60 string modalId = $"modal_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 61 string formId = $"NotificationForm_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 62 string notificationButtonId = $"NotificationButton_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 63 string notificationOnClick = !Pageview.IsVisualEditorMode ? $"swift.BackInStockNotification.SubmitNotification('{formId}', '{modalId}', '{notifiedMessageId}', '{notificationButtonId}')" : ""; 64 65 string productPage = $"/Default.aspx?ID={GetPageIdByNavigationTag("ProductDetailPage")}"; 66 67 <div class="d-flex @horizontalAlign @fullWidth js-input-group"> 68 <div class="input-group input-primary-button-group flex-nowrap"> 69 <button type="button" class="btn btn-primary @flexFill" data-dw-button="primary" id="@notificationButtonId" data-bs-toggle="modal" data-bs-target="#@modalId"> 70 <span class="text-nowrap d-flex align-items-center justify-content-center gap-2"> 71 @notifyLabel 72 </span> 73 </button> 74 </div> 75 </div> 76 77 <div class="modal fade" id="@modalId" tabindex="-1" aria-labelledby="label_@modalId" aria-hidden="true"> 78 <div class="modal-dialog pt-8"> 79 <div class="modal-content"> 80 <div class="modal-header"> 81 <h5 class="modal-title" id="label_@modalId">@Translate("Back in stock")</h5> 82 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="@Translate("Close")"></button> 83 </div> 84 <div class="modal-body"> 85 <form name="@product.Id" id="@formId" method="post" action="@productPage"> 86 <input type="hidden" name="ProductID" value="@product.Id" /> 87 <input type="hidden" name="VariantID" value="@product.VariantId" /> 88 <input type="hidden" name="LanguageID" value="@product.LanguageId" /> 89 <input type="hidden" name="CartCmd" value="createnotificationforthisproduct" /> 90 <div class="m-2"> 91 @Translate("Send me an email when the product is in stock.") 92 </div> 93 <div class="form-floating m-2"> 94 <input class="form-control" type="text" id="NotificationEmail" value="@(Pageview.User != null ? Pageview.User.Email : "")" name="NotificationEmail" placeholder="@Translate("Email")" required="required" aria-required="aria-required" /> 95 <label for="NotificationEmail" class="form-label">@Translate("Email")</label> 96 </div> 97 </form> 98 </div> 99 <div class="modal-footer"> 100 <button type="button" class="btn btn-primary" data-dw-button="primary" onclick="@notificationOnClick">@Translate("Submit")</button> 101 </div> 102 </div> 103 </div> 104 </div> 105 } 106 </div> 107 } 108 } 109 else if (Pageview.IsVisualEditorMode) 110 { 111 <div class="alert alert-dark m-0">@Translate("Back in stock notification will be shown here")</div> 112 } 113
Error executing template "Designs/Swift-v2/Paragraph/Swift-v2_BackInStockNotification.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_a93a630c5e82497fb08a36f78035f9f5.ExecuteAsync() at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 68 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\dw10agent\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 847
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using System.Linq 3 @using Dynamicweb.Ecommerce 4 @using Dynamicweb.Ecommerce.ProductCatalog 5 @using Dynamicweb.Ecommerce.Products 6 @using Dynamicweb.Ecommerce.Stocks 7 8 @functions 9 { 10 private static bool BackInStockRegisteredForUser(ProductViewModel product, string unitId = "", long stocklocationId = 0) 11 { 12 if (!Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn()) return false; 13 14 Product productObject = Services.Products.GetProductById(product.Id, product.VariantId, product.LanguageId); 15 StockLocation stockLocation = Services.StockService.GetStockLocation(stocklocationId); 16 double unitStock = productObject.GetUnitStock(stockLocation, unitId); 17 return unitStock <= 0d && ProductBackInStockNotification.BackInStockNotificationExists(productObject, unitId); 18 } 19 } 20 21 @{ 22 ProductViewModel product = null; 23 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 24 { 25 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 26 } 27 } 28 29 @if ((product is object && product.ProductType == Dynamicweb.Ecommerce.Products.ProductType.Stock)) 30 { 31 bool productInStock = product.StockLevel > 0 || product.NeverOutOfstock; 32 33 if (!productInStock) 34 { 35 string notifiedMessage = Model.Item.GetString("NotifiedMessage"); 36 string notifiedMessageId = $"NotifiedMessage_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 37 38 string horizontalAlign = Model.Item.GetRawValueString("HorizontalAlignment", ""); 39 horizontalAlign = horizontalAlign == "center" ? "justify-content-center" : horizontalAlign; 40 horizontalAlign = horizontalAlign == "end" ? "justify-content-end" : horizontalAlign; 41 horizontalAlign = horizontalAlign == "full" ? "" : horizontalAlign; 42 43 string flexFill = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "flex-fill" : ""; 44 string fullWidth = Model.Item.GetRawValueString("HorizontalAlignment", "") == "full" ? "w-100" : ""; 45 46 bool notificationRegisteredForUser = BackInStockRegisteredForUser(product); 47 48 <div class="d-flex flex-row w-100 @horizontalAlign @fullWidth item_@Model.Item.SystemName.ToLower()"> 49 <div class="@horizontalAlign @fullWidth @(notificationRegisteredForUser ? "" : "d-none")" id="@notifiedMessageId"> 50 @notifiedMessage 51 </div> 52 53 @if (!notificationRegisteredForUser) 54 { 55 56 string notifyIcon = Model.Item.GetString("Icon"); 57 string notifyLabel = !notifyIcon.Contains("_none") ? "<span class=\"icon-2\">" + ReadFile(notifyIcon) + "</span>" : ""; 58 notifyLabel += " " + Translate("Notify me when available"); 59 60 string modalId = $"modal_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 61 string formId = $"NotificationForm_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 62 string notificationButtonId = $"NotificationButton_item_{Model.Item.SystemName.ToLower()}_{product.Id}_{product.VariantId.Replace(".", "_")}"; 63 string notificationOnClick = !Pageview.IsVisualEditorMode ? $"swift.BackInStockNotification.SubmitNotification('{formId}', '{modalId}', '{notifiedMessageId}', '{notificationButtonId}')" : ""; 64 65 string productPage = $"/Default.aspx?ID={GetPageIdByNavigationTag("ProductDetailPage")}"; 66 67 <div class="d-flex @horizontalAlign @fullWidth js-input-group"> 68 <div class="input-group input-primary-button-group flex-nowrap"> 69 <button type="button" class="btn btn-primary @flexFill" data-dw-button="primary" id="@notificationButtonId" data-bs-toggle="modal" data-bs-target="#@modalId"> 70 <span class="text-nowrap d-flex align-items-center justify-content-center gap-2"> 71 @notifyLabel 72 </span> 73 </button> 74 </div> 75 </div> 76 77 <div class="modal fade" id="@modalId" tabindex="-1" aria-labelledby="label_@modalId" aria-hidden="true"> 78 <div class="modal-dialog pt-8"> 79 <div class="modal-content"> 80 <div class="modal-header"> 81 <h5 class="modal-title" id="label_@modalId">@Translate("Back in stock")</h5> 82 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="@Translate("Close")"></button> 83 </div> 84 <div class="modal-body"> 85 <form name="@product.Id" id="@formId" method="post" action="@productPage"> 86 <input type="hidden" name="ProductID" value="@product.Id" /> 87 <input type="hidden" name="VariantID" value="@product.VariantId" /> 88 <input type="hidden" name="LanguageID" value="@product.LanguageId" /> 89 <input type="hidden" name="CartCmd" value="createnotificationforthisproduct" /> 90 <div class="m-2"> 91 @Translate("Send me an email when the product is in stock.") 92 </div> 93 <div class="form-floating m-2"> 94 <input class="form-control" type="text" id="NotificationEmail" value="@(Pageview.User != null ? Pageview.User.Email : "")" name="NotificationEmail" placeholder="@Translate("Email")" required="required" aria-required="aria-required" /> 95 <label for="NotificationEmail" class="form-label">@Translate("Email")</label> 96 </div> 97 </form> 98 </div> 99 <div class="modal-footer"> 100 <button type="button" class="btn btn-primary" data-dw-button="primary" onclick="@notificationOnClick">@Translate("Submit")</button> 101 </div> 102 </div> 103 </div> 104 </div> 105 } 106 </div> 107 } 108 } 109 else if (Pageview.IsVisualEditorMode) 110 { 111 <div class="alert alert-dark m-0">@Translate("Back in stock notification will be shown here")</div> 112 } 113