Empty cart
You do not have any item in the cart
Error executing template "/Designs/Swift/Grid/Page/RowTemplates/4ColumnsFlex.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_3152daae7a7d41ce9fad94e489d3cec8.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) at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.GridRowViewModel> 2 3 @{ 4 string containerClass = "container-xl"; 5 6 string width = Model.Item.GetRawValueString("Width", "").ToLower(); 7 if (width == "stretch") 8 { 9 containerClass = "container-fluid"; 10 } 11 if (width == "none") 12 { 13 containerClass = "container-fluid px-0"; 14 } 15 16 string rowClass = "gap-3"; 17 string spaceBetweenColumns = Model.Item.GetRawValueString("SpaceBetweenColumns", "").ToLower(); 18 19 if (spaceBetweenColumns == "stick") 20 { 21 rowClass = "gap-0"; 22 } 23 if (spaceBetweenColumns == "spacing-large") 24 { 25 rowClass = "gap-1 gap-md-4 gap-lg-5"; 26 } 27 28 string columnPosition = Model.Item.GetRawValueString("columnPosition", "align-items-center").ToLower(); 29 if (columnPosition == "top") 30 { 31 columnPosition = "align-items-start"; 32 } 33 if (columnPosition == "center") 34 { 35 columnPosition = "align-items-center"; 36 } 37 if (columnPosition == "bottom") 38 { 39 columnPosition = "align-items-end"; 40 } 41 42 string rowHeight = Model.Item.GetRawValueString("RowHeight", "0").ToLower(); 43 rowHeight = "py-" + rowHeight; 44 45 string column1width = Model.Item.GetRawValueString("Column_1Width", "").ToLower(); 46 column1width = column1width == "grow" ? "flex-grow-1" : "flex-grow-0"; 47 48 string column2width = Model.Item.GetRawValueString("Column_2Width", "").ToLower(); 49 column2width = column2width == "grow" ? "flex-grow-1" : "flex-grow-0"; 50 51 string column3width = Model.Item.GetRawValueString("Column_3Width", "").ToLower(); 52 column3width = column3width == "grow" ? "flex-grow-1" : "flex-grow-0"; 53 54 string column4width = Model.Item.GetRawValueString("Column_4Width", "").ToLower(); 55 column4width = column4width == "grow" ? "flex-grow-1" : "flex-grow-0"; 56 57 string hideOnScroll = Model.Item.GetRawValueString("HideOnScroll", "").ToLower(); 58 hideOnScroll = hideOnScroll == "hide" ? "js-hide-on-scroll" : ""; 59 60 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 61 string alternativeTheme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("AlternativeTheme")) ? " theme " + Model.Item.GetRawValueString("AlternativeTheme").Replace(" ", "").Trim().ToLower() : ""; 62 string mainTheme = theme; 63 64 string headerCssClass = "sticky-top"; 65 if (Pageview.Page.PropertyItem != null) { 66 headerCssClass = Pageview.Page.PropertyItem["MoveThisPageBehindTheHeader"] != null ? Pageview.Page.PropertyItem["MoveThisPageBehindTheHeader"].ToString() : "sticky-top"; 67 } 68 headerCssClass = headerCssClass == "" ? "sticky-top" : headerCssClass; 69 headerCssClass = Pageview.IsVisualEditorMode ? "" : headerCssClass; 70 71 string themeSwitchers = ""; 72 string themeAnimated = ""; 73 if (headerCssClass == "fixed-top") { 74 theme = alternativeTheme; 75 themeSwitchers = "data-main-theme=\"" + mainTheme + "\" data-alternative-theme=\"" + alternativeTheme + "\""; 76 themeAnimated = "theme-animated "; 77 } 78 79 var decorations = Model.Item?.GetList("CssDecorations")?.GetRawValue().OfType<string>() ?? Enumerable.Empty<string>(); 80 var css = string.Empty; 81 var cssClasses = new List<string> { }; 82 83 foreach (var itemId in decorations) 84 { 85 var item = Dynamicweb.Content.Services.Items.GetItem("Swift_Css", itemId); 86 item.TryGetValue("Class", out object classes); 87 if (classes is null) 88 { 89 continue; 90 } 91 92 var cssString = (string)classes; 93 if (cssString.StartsWith("[")) 94 { 95 var cssArray = Dynamicweb.Core.Converter.Deserialize<string[]>(cssString); 96 cssClasses.AddRange(cssArray); 97 } 98 else 99 { 100 cssClasses.Add(cssString.Replace(",", " ")); 101 } 102 } 103 css = string.Join(" ", cssClasses).Trim(); 104 105 var columnContent1 = Model.Column(1).Output(); 106 var columnContent2 = Model.Column(2).Output(); 107 var columnContent3 = Model.Column(3).Output(); 108 var columnContent4 = Model.Column(4).Output(); 109 110 if (Pageview.IsVisualEditorMode || !string.IsNullOrWhiteSpace(columnContent1) || !string.IsNullOrWhiteSpace(columnContent2) || !string.IsNullOrWhiteSpace(columnContent3) || !string.IsNullOrWhiteSpace(columnContent4)) 111 { 112 <div class="@rowHeight @themeAnimated @theme @hideOnScroll @(css) item_@Model.Item.SystemName.ToLower()" @themeSwitchers data-swift-gridrow> 113 <div class="@containerClass"> 114 <div class="d-flex flex-row @rowClass @columnPosition"> 115 <div class="col @column1width"> 116 @columnContent1 117 </div> 118 <div class="col @column2width"> 119 @columnContent2 120 </div> 121 <div class="col @column3width"> 122 @columnContent3 123 </div> 124 <div class="col @column4width"> 125 @columnContent4 126 </div> 127 </div> 128 </div> 129 </div> 130 } 131 } 132
Error compiling template "Designs/Swift/Paragraph/Custom__CurrentVehicle.cshtml" Line 10: The type or namespace name 'Dna' could not be found (are you missing a using directive or an assembly reference?) Line 21: The name 'Constants' does not exist in the current context Line 22: The name 'Constants' does not exist in the current context Line 25: The name 'Helpers' does not exist in the current context Line 28: The name 'Helpers' does not exist in the current context Line 34: The name 'Constants' does not exist in the current context Line 41: The name 'Constants' does not exist in the current context Line 41: The name 'Constants' does not exist in the current context Line 43: The name 'Constants' does not exist in the current context Line 44: The name 'Constants' does not exist in the current context Line 44: The name 'Constants' does not exist in the current context Line 47: The name 'Constants' does not exist in the current context Line 48: The name 'Constants' does not exist in the current context Line 67: The name 'Helpers' does not exist in the current context Line 68: The name 'Helpers' does not exist in the current context
1 // <auto-generated/> 2 #pragma warning disable 1591 3 namespace CompiledRazorTemplates.Dynamic 4 { 5 #line hidden 6 using System.Threading.Tasks; 7 using System; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dna.Keystone.Vin; 11 using Dynamicweb; 12 using Dynamicweb.Core; 13 using Dynamicweb.Frontend; 14 internal class RazorEngine_c555f6a4ece54844a352f4a4ba0fda77 : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 15 { 16 #pragma warning disable 1998 17 public async override global::System.Threading.Tasks.Task ExecuteAsync() 18 { 19 WriteLiteral("\r\n"); 20 21 var bodyOnly = Converter.ToBoolean(Context.Current.Request[Constants.Request.BodyOnly]); 22 var removeSelectedVinNumber = Converter.ToBoolean(Context.Current.Request[Constants.Request.RemoveSelectedVin]); 23 if (removeSelectedVinNumber) 24 { 25 Helpers.UpdatedSelectedVinNumberCache(null); 26 } 27 28 var selectedVinRow = Helpers.GetSelectedVinRow(); 29 30 var contentPadding = Model.Item?.GetRawValueString("contentPadding", ""); 31 var theme = !string.IsNullOrWhiteSpace(Model.Item?.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 32 33 var vinLookUpServicePageId = GetPageIdByNavigationTag("VinLookupServicePage"); 34 var vinLookupServicePageUrl = vinLookUpServicePageId > 0 ? $"Default.aspx?ID={vinLookUpServicePageId}&{Constants.Request.CloseModalAfterSelect}=True" : ""; 35 36 var currentVehicleServicePageId = GetPageIdByNavigationTag("CurrentVehicleServicePage"); 37 var currentVehicleServicePageFriendlyUrl = SearchEngineFriendlyURLs.GetFriendlyUrl(currentVehicleServicePageId); 38 39 var showAddVinButton = Converter.ToString(selectedVinRow == null).ToLowerInvariant(); 40 var showAddVinButtonInRow = Converter.ToBoolean(Model.Item?.GetBoolean("RenderAddVinButtonInRow")) 41 || (!string.IsNullOrEmpty(Context.Current.Request[Constants.Request.ShowAddVinIconInRow]) && Converter.ToBoolean(Context.Current.Request[Constants.Request.ShowAddVinIconInRow])); 42 43 var updateUrl = $"{currentVehicleServicePageFriendlyUrl}?{Constants.Request.BodyOnly}=True"; 44 var removeUrl = $"{currentVehicleServicePageFriendlyUrl}?{Constants.Request.BodyOnly}=True&{Constants.Request.RemoveSelectedVin}=True"; 45 if (showAddVinButtonInRow) 46 { 47 updateUrl += $"&{Constants.Request.ShowAddVinIconInRow}=True"; 48 removeUrl += $"&{Constants.Request.ShowAddVinIconInRow}=True"; 49 } 50 51 var wrapperDivCssClasses = bodyOnly ? "" : $"{theme} {contentPadding} currentVehicleRow item_{Model.Item?.SystemName.ToLower()}"; 52 var wrapperDivDataAttributes = bodyOnly ? "" : $"data-update-url='{updateUrl}' data-remove-url='{removeUrl}'"; 53 54 var iconSize = Model.Item?.GetRawValueString("IconSize", "icon-3"); 55 WriteLiteral("\r\n<div"); 56 BeginWriteAttribute("class", " class=\"", 2482, "\"", 2511, 1); 57 WriteAttributeValue("", 2490, wrapperDivCssClasses, 2490, 21, false); 58 EndWriteAttribute(); 59 WriteLiteral(" "); 60 Write(wrapperDivDataAttributes); 61 WriteLiteral(">\r\n"); 62 if (selectedVinRow != null && Model.Item != null) 63 { 64 var title = Model.Item.GetRawValueString("Title", string.Empty); 65 var hideTitle = Model.Item.GetBoolean("HideTitle"); 66 67 var shipDateFormatted = Helpers.GetDateFormatted(selectedVinRow.ShipDate); 68 var selectedVinRowProductGroupId = Helpers.GetVinRowProductGroupId(selectedVinRow); 69 70 var unitDetailPageId = GetPageIdByNavigationTag("UnitDetails"); 71 var unitDetailPageFriendlyUrl = unitDetailPageId > 0 ? SearchEngineFriendlyURLs.GetFriendlyUrl($"Default.aspx?ID={unitDetailPageId}") : string.Empty; 72 73 if (!hideTitle) 74 { 75 WriteLiteral(" <h2 class=\"h5 mb-4\">"); 76 Write(title); 77 WriteLiteral("</h2>\r\n"); 78 } 79 80 WriteLiteral(" <div class=\"currentVehicleContent\">\r\n \r\n <div class=\"d-flex flex-row gap-3 justify-content-center align-items-center\">\r\n <span class=\"fs-5\">"); 81 Write(Translate("Current Vehicle")); 82 WriteLiteral("</span>\r\n\r\n <dl class=\"d-flex flex-row gap-2 align-items-center mb-0\">\r\n <dt>"); 83 Write(Translate("VIN")); 84 WriteLiteral("</dt>\r\n <dd class=\"mb-0 me-2\">\r\n"); 85 if (!string.IsNullOrEmpty(unitDetailPageFriendlyUrl)) 86 { 87 var url = $"{unitDetailPageFriendlyUrl}?vq={selectedVinRow.Vin}"; 88 WriteLiteral(" <a"); 89 BeginWriteAttribute("href", " href=\"", 3897, "\"", 3908, 1); 90 WriteAttributeValue("", 3904, url, 3904, 4, false); 91 EndWriteAttribute(); 92 WriteLiteral(" target=\"_blank\">"); 93 Write(selectedVinRow.Vin); 94 WriteLiteral("</a>\r\n"); 95 } 96 else 97 { 98 Write(selectedVinRow.Vin); 99 100 } 101 WriteLiteral(" </dd>\r\n\r\n <dt>"); 102 Write(Translate("Make")); 103 WriteLiteral("</dt>\r\n <dd class=\"mb-0 me-2\">"); 104 Write(selectedVinRow.Make); 105 WriteLiteral("</dd>\r\n\r\n <dt>"); 106 Write(Translate("Model")); 107 WriteLiteral("</dt>\r\n <dd class=\"mb-0 me-2\">"); 108 Write(selectedVinRow.Model); 109 WriteLiteral("</dd>\r\n\r\n <dt>"); 110 Write(Translate("Warranty")); 111 WriteLiteral("</dt>\r\n <dd class=\"mb-0 me-2\">"); 112 Write(selectedVinRow.GetWarrantyStatus(Pageview.Area.Layout.Design)); 113 WriteLiteral("</dd>\r\n\r\n <dt>"); 114 Write(Translate("Retail Sold")); 115 WriteLiteral("</dt>\r\n <dd class=\"mb-0 me-2\">"); 116 Write(shipDateFormatted); 117 WriteLiteral("</dd>\r\n\r\n <dt>"); 118 Write(Translate("Model Year")); 119 WriteLiteral("</dt>\r\n <dd class=\"mb-0 me-2\">"); 120 Write(selectedVinRow.ModelYear); 121 WriteLiteral("</dd>\r\n </dl>\r\n\r\n <div class=\"d-flex gap-2\">\r\n"); 122 if (!string.IsNullOrEmpty(selectedVinRowProductGroupId)) 123 { 124 var productGroupUrl = $"Default.aspx?ID={GetPageIdByNavigationTag("Shop")}&GroupID={selectedVinRowProductGroupId}"; 125 126 WriteLiteral(" <a class=\"btn btn-secondary btn-sm me-3\""); 127 BeginWriteAttribute("href", " href=\"", 5182, "\"", 5246, 1); 128 WriteAttributeValue("", 5189, SearchEngineFriendlyURLs.GetFriendlyUrl(productGroupUrl), 5189, 57, false); 129 EndWriteAttribute(); 130 WriteLiteral(">\r\n "); 131 Write(Translate("View Products")); 132 WriteLiteral("\r\n </a>\r\n"); 133 } 134 WriteLiteral("\r\n <button class=\"btn p-0\" onclick=\"CurrentVehicle.OpenVinLookupModal();\">\r\n <span"); 135 BeginWriteAttribute("class", " class=\"", 5480, "\"", 5497, 1); 136 WriteAttributeValue("", 5488, iconSize, 5488, 9, false); 137 EndWriteAttribute(); 138 WriteLiteral(">\r\n "); 139 Write(ReadFile("/Files/Templates/Designs/Swift/Assets/icons/edit.svg")); 140 WriteLiteral("\r\n </span>\r\n </button>\r\n\r\n <button class=\"btn p-0\" onclick=\"CurrentVehicle.RemoveCurrentVehicle();\">\r\n <span"); 141 BeginWriteAttribute("class", " class=\"", 5774, "\"", 5791, 1); 142 WriteAttributeValue("", 5782, iconSize, 5782, 9, false); 143 EndWriteAttribute(); 144 WriteLiteral(">\r\n "); 145 Write(ReadFile("/Files/Templates/Designs/Swift/Assets/icons/trash-2.svg")); 146 WriteLiteral("\r\n </span>\r\n </button>\r\n\r\n </div>\r\n </div>\r\n \r\n"); 147 if (selectedVinRow.ServiceCampaigns != null && selectedVinRow.ServiceCampaigns.Any()) 148 { 149 var serviceCampaignIds = selectedVinRow.ServiceCampaigns.Select(sc => sc.Id).ToList(); 150 var backgroundColor = Model.Item.GetString("ServiceCampaignsBackgroundColor"); 151 var serviceCampaignDetailPageId = GetPageIdByNavigationTag("ServiceCampaignDetailView"); 152 var serviceCampaignDetailUrl = serviceCampaignDetailPageId > 0 ? $"{SearchEngineFriendlyURLs.GetFriendlyUrl(serviceCampaignDetailPageId)}?ServiceCampaignId=" : string.Empty; 153 154 WriteLiteral(" <div class=\"p-2 d-flex gap-2 justify-content-center align-items-center\""); 155 BeginWriteAttribute("style", " style=\"", 6726, "\"", 6768, 2); 156 WriteAttributeValue("", 6734, "background-color:", 6734, 17, true); 157 WriteAttributeValue(" ", 6751, backgroundColor, 6752, 16, false); 158 EndWriteAttribute(); 159 WriteLiteral(">\r\n <span"); 160 BeginWriteAttribute("class", " class=\"", 6797, "\"", 6814, 1); 161 WriteAttributeValue("", 6805, iconSize, 6805, 9, false); 162 EndWriteAttribute(); 163 WriteLiteral(">"); 164 Write(ReadFile("/Files/Templates/Designs/Swift/Assets/icons/circle-info-solid.svg")); 165 WriteLiteral("</span>\r\n <span class=\"fw-bold\">"); 166 Write(Translate("This unit requires repair or inspection for service campaign(s):")); 167 WriteLiteral("</span>\r\n <span>\r\n"); 168 if (!string.IsNullOrEmpty(serviceCampaignDetailUrl)) 169 { 170 var serviceCampaignsFormated = serviceCampaignIds.ConvertAll(item => $"<a href='{serviceCampaignDetailUrl}{item}'>{item}</a>"); 171 172 Write(string.Join(",", serviceCampaignsFormated)); 173 174 } 175 else 176 { 177 Write(string.Join(",", serviceCampaignIds)); 178 179 } 180 WriteLiteral(" </span>\r\n \r\n \r\n \r\n </div>\r\n"); 181 } 182 WriteLiteral(" </div>\r\n"); 183 } 184 else if (showAddVinButtonInRow) 185 { 186 var addVinButtonIconSize = Model.Item.GetRawValueString("AddVinButtonIconSize", "icon-4"); 187 188 WriteLiteral(" <div class=\"w-100 text-center\">\r\n <button class=\"rowAddVinButton btn p-0 text-uppercase\" onclick=\"CurrentVehicle.OpenVinLookupModal();\">\r\n <span"); 189 BeginWriteAttribute("class", " class=\"", 8097, "\"", 8126, 1); 190 WriteAttributeValue("", 8105, addVinButtonIconSize, 8105, 21, false); 191 EndWriteAttribute(); 192 WriteLiteral(">\r\n "); 193 Write(ReadFile("/Files/Templates/Designs/Swift/Assets/icons/" + "add-vin-asset.svg")); 194 WriteLiteral("\r\n </span>\r\n <span>"); 195 Write(Translate("Add Vin")); 196 WriteLiteral("</span>\r\n </button>\r\n </div>\r\n"); 197 } 198 else if (Pageview.IsVisualEditorMode) 199 { 200 WriteLiteral(" <div class=\"alert alert-info\" role=\"alert\">\r\n <span>"); 201 Write(Translate("Current Vehicle will be rendered here if any")); 202 WriteLiteral("</span>\r\n </div>\r\n"); 203 } 204 WriteLiteral("\r\n <script type=\"text/javascript\">\r\n window.showAddVinButton = "); 205 Write(showAddVinButton); 206 WriteLiteral(";\r\n window.addVinButtonText = \'"); 207 Write(Translate("Add VIN")); 208 WriteLiteral(@"'; 209 210 const currentVehicleRow = document.querySelector("".currentVehicleRow""); 211 if (currentVehicleRow){ 212 const hasContent = currentVehicleRow.querySelector("".currentVehicleContent""); 213 const hasAddVinRowButton = currentVehicleRow.querySelector("".rowAddVinButton""); 214 const closestSwiftItem = currentVehicleRow.parentElement.closest(""div[class*='item_swift']""); 215 216 hasContent || hasAddVinRowButton ? closestSwiftItem.classList.remove(""d-none"") : closestSwiftItem.classList.add(""d-none""); 217 } 218 </script> 219 </div> 220 221 "); 222 if (!bodyOnly) 223 { 224 WriteLiteral(@" <script id=""CurrentVehicleVinLookupModal"" type=""text/html""> 225 <div class=""modal-dialog modal-xl modal-fullscreen-xl-down""> 226 <div class=""modal-content""> 227 <div class=""modal-header""> 228 <button type=""button"" class=""btn-close"" data-bs-dismiss=""modal"""); 229 BeginWriteAttribute("aria-label", " aria-label=\"", 9642, "\"", 9674, 1); 230 WriteAttributeValue("", 9655, Translate("Close"), 9655, 19, false); 231 EndWriteAttribute(); 232 WriteLiteral("></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div class=\"ratio ratio-16x9\">\r\n <iframe class=\"w-100 h-100\""); 233 BeginWriteAttribute("src", " src=\"", 9856, "\"", 9886, 1); 234 WriteAttributeValue("", 9862, vinLookupServicePageUrl, 9862, 24, false); 235 EndWriteAttribute(); 236 WriteLiteral("></iframe>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </script>\r\n"); 237 WriteLiteral(" <script id=\"CurrentVehicleAddVinButtonIcon\" type=\"text/html\">\r\n "); 238 Write(ReadFile("/Files/Templates/Designs/Swift/Assets/icons/" + "add-vin-asset.svg")); 239 WriteLiteral("\r\n </script>\r\n"); 240 } 241 } 242 #pragma warning restore 1998 243 } 244 } 245 #pragma warning restore 1591 246
1 @using Dna.Keystone.Vin 2 @using Dynamicweb 3 @using Dynamicweb.Core 4 @using Dynamicweb.Frontend 5 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 6 7 @{ 8 var bodyOnly = Converter.ToBoolean(Context.Current.Request[Constants.Request.BodyOnly]); 9 var removeSelectedVinNumber = Converter.ToBoolean(Context.Current.Request[Constants.Request.RemoveSelectedVin]); 10 if (removeSelectedVinNumber) 11 { 12 Helpers.UpdatedSelectedVinNumberCache(null); 13 } 14 15 var selectedVinRow = Helpers.GetSelectedVinRow(); 16 17 var contentPadding = Model.Item?.GetRawValueString("contentPadding", ""); 18 var theme = !string.IsNullOrWhiteSpace(Model.Item?.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 19 20 var vinLookUpServicePageId = GetPageIdByNavigationTag("VinLookupServicePage"); 21 var vinLookupServicePageUrl = vinLookUpServicePageId > 0 ? $"Default.aspx?ID={vinLookUpServicePageId}&{Constants.Request.CloseModalAfterSelect}=True" : ""; 22 23 var currentVehicleServicePageId = GetPageIdByNavigationTag("CurrentVehicleServicePage"); 24 var currentVehicleServicePageFriendlyUrl = SearchEngineFriendlyURLs.GetFriendlyUrl(currentVehicleServicePageId); 25 26 var showAddVinButton = Converter.ToString(selectedVinRow == null).ToLowerInvariant(); 27 var showAddVinButtonInRow = Converter.ToBoolean(Model.Item?.GetBoolean("RenderAddVinButtonInRow")) 28 || (!string.IsNullOrEmpty(Context.Current.Request[Constants.Request.ShowAddVinIconInRow]) && Converter.ToBoolean(Context.Current.Request[Constants.Request.ShowAddVinIconInRow])); 29 30 var updateUrl = $"{currentVehicleServicePageFriendlyUrl}?{Constants.Request.BodyOnly}=True"; 31 var removeUrl = $"{currentVehicleServicePageFriendlyUrl}?{Constants.Request.BodyOnly}=True&{Constants.Request.RemoveSelectedVin}=True"; 32 if (showAddVinButtonInRow) 33 { 34 updateUrl += $"&{Constants.Request.ShowAddVinIconInRow}=True"; 35 removeUrl += $"&{Constants.Request.ShowAddVinIconInRow}=True"; 36 } 37 38 var wrapperDivCssClasses = bodyOnly ? "" : $"{theme} {contentPadding} currentVehicleRow item_{Model.Item?.SystemName.ToLower()}"; 39 var wrapperDivDataAttributes = bodyOnly ? "" : $"data-update-url='{updateUrl}' data-remove-url='{removeUrl}'"; 40 41 var iconSize = Model.Item?.GetRawValueString("IconSize", "icon-3"); 42 } 43 44 <div class="@wrapperDivCssClasses" @wrapperDivDataAttributes> 45 @if (selectedVinRow != null && Model.Item != null) 46 { 47 var title = Model.Item.GetRawValueString("Title", string.Empty); 48 var hideTitle = Model.Item.GetBoolean("HideTitle"); 49 50 var shipDateFormatted = Helpers.GetDateFormatted(selectedVinRow.ShipDate); 51 var selectedVinRowProductGroupId = Helpers.GetVinRowProductGroupId(selectedVinRow); 52 53 var unitDetailPageId = GetPageIdByNavigationTag("UnitDetails"); 54 var unitDetailPageFriendlyUrl = unitDetailPageId > 0 ? SearchEngineFriendlyURLs.GetFriendlyUrl($"Default.aspx?ID={unitDetailPageId}") : string.Empty; 55 56 if (!hideTitle) 57 { 58 <h2 class="h5 mb-4">@title</h2> 59 } 60 61 <div class="currentVehicleContent"> 62 63 <div class="d-flex flex-row gap-3 justify-content-center align-items-center"> 64 <span class="fs-5">@Translate("Current Vehicle")</span> 65 66 <dl class="d-flex flex-row gap-2 align-items-center mb-0"> 67 <dt>@Translate("VIN")</dt> 68 <dd class="mb-0 me-2"> 69 @if (!string.IsNullOrEmpty(unitDetailPageFriendlyUrl)) 70 { 71 var url = $"{unitDetailPageFriendlyUrl}?vq={selectedVinRow.Vin}"; 72 <a href="@url" target="_blank">@selectedVinRow.Vin</a> 73 } 74 else 75 { 76 @selectedVinRow.Vin 77 } 78 </dd> 79 80 <dt>@Translate("Make")</dt> 81 <dd class="mb-0 me-2">@selectedVinRow.Make</dd> 82 83 <dt>@Translate("Model")</dt> 84 <dd class="mb-0 me-2">@selectedVinRow.Model</dd> 85 86 <dt>@Translate("Warranty")</dt> 87 <dd class="mb-0 me-2">@(selectedVinRow.GetWarrantyStatus(Pageview.Area.Layout.Design))</dd> 88 89 <dt>@Translate("Retail Sold")</dt> 90 <dd class="mb-0 me-2">@shipDateFormatted</dd> 91 92 <dt>@Translate("Model Year")</dt> 93 <dd class="mb-0 me-2">@selectedVinRow.ModelYear</dd> 94 </dl> 95 96 <div class="d-flex gap-2"> 97 @if (!string.IsNullOrEmpty(selectedVinRowProductGroupId)) 98 { 99 var productGroupUrl = $"Default.aspx?ID={GetPageIdByNavigationTag("Shop")}&GroupID={selectedVinRowProductGroupId}"; 100 101 <a class="btn btn-secondary btn-sm me-3" href="@SearchEngineFriendlyURLs.GetFriendlyUrl(productGroupUrl)"> 102 @Translate("View Products") 103 </a> 104 } 105 106 <button class="btn p-0" onclick="CurrentVehicle.OpenVinLookupModal();"> 107 <span class="@iconSize"> 108 @ReadFile("/Files/Templates/Designs/Swift/Assets/icons/edit.svg") 109 </span> 110 </button> 111 112 <button class="btn p-0" onclick="CurrentVehicle.RemoveCurrentVehicle();"> 113 <span class="@iconSize"> 114 @ReadFile("/Files/Templates/Designs/Swift/Assets/icons/trash-2.svg") 115 </span> 116 </button> 117 118 </div> 119 </div> 120 121 @if (selectedVinRow.ServiceCampaigns != null && selectedVinRow.ServiceCampaigns.Any()) 122 { 123 var serviceCampaignIds = selectedVinRow.ServiceCampaigns.Select(sc => sc.Id).ToList(); 124 var backgroundColor = Model.Item.GetString("ServiceCampaignsBackgroundColor"); 125 var serviceCampaignDetailPageId = GetPageIdByNavigationTag("ServiceCampaignDetailView"); 126 var serviceCampaignDetailUrl = serviceCampaignDetailPageId > 0 ? $"{SearchEngineFriendlyURLs.GetFriendlyUrl(serviceCampaignDetailPageId)}?ServiceCampaignId=" : string.Empty; 127 128 <div class="p-2 d-flex gap-2 justify-content-center align-items-center" style="background-color: @backgroundColor"> 129 <span class="@iconSize">@ReadFile("/Files/Templates/Designs/Swift/Assets/icons/circle-info-solid.svg")</span> 130 <span class="fw-bold">@Translate("This unit requires repair or inspection for service campaign(s):")</span> 131 <span> 132 @if (!string.IsNullOrEmpty(serviceCampaignDetailUrl)) 133 { 134 var serviceCampaignsFormated = serviceCampaignIds.ConvertAll(item => $"<a href='{serviceCampaignDetailUrl}{item}'>{item}</a>"); 135 136 @(string.Join(",", serviceCampaignsFormated)) 137 } 138 else 139 { 140 @(string.Join(",", serviceCampaignIds)) 141 } 142 </span> 143 144 145 146 </div> 147 } 148 </div> 149 } 150 else if (showAddVinButtonInRow) 151 { 152 var addVinButtonIconSize = Model.Item.GetRawValueString("AddVinButtonIconSize", "icon-4"); 153 154 <div class="w-100 text-center"> 155 <button class="rowAddVinButton btn p-0 text-uppercase" onclick="CurrentVehicle.OpenVinLookupModal();"> 156 <span class="@addVinButtonIconSize"> 157 @ReadFile("/Files/Templates/Designs/Swift/Assets/icons/" + "add-vin-asset.svg") 158 </span> 159 <span>@Translate("Add Vin")</span> 160 </button> 161 </div> 162 } 163 else if (Pageview.IsVisualEditorMode) 164 { 165 <div class="alert alert-info" role="alert"> 166 <span>@Translate("Current Vehicle will be rendered here if any")</span> 167 </div> 168 } 169 170 <script type="text/javascript"> 171 window.showAddVinButton = @showAddVinButton; 172 window.addVinButtonText = '@Translate("Add VIN")'; 173 174 const currentVehicleRow = document.querySelector(".currentVehicleRow"); 175 if (currentVehicleRow){ 176 const hasContent = currentVehicleRow.querySelector(".currentVehicleContent"); 177 const hasAddVinRowButton = currentVehicleRow.querySelector(".rowAddVinButton"); 178 const closestSwiftItem = currentVehicleRow.parentElement.closest("div[class*='item_swift']"); 179 180 hasContent || hasAddVinRowButton ? closestSwiftItem.classList.remove("d-none") : closestSwiftItem.classList.add("d-none"); 181 } 182 </script> 183 </div> 184 185 @if (!bodyOnly) 186 { 187 <script id="CurrentVehicleVinLookupModal" type="text/html"> 188 <div class="modal-dialog modal-xl modal-fullscreen-xl-down"> 189 <div class="modal-content"> 190 <div class="modal-header"> 191 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="@Translate("Close")"></button> 192 </div> 193 <div class="modal-body"> 194 <div class="ratio ratio-16x9"> 195 <iframe class="w-100 h-100" src="@vinLookupServicePageUrl"></iframe> 196 </div> 197 </div> 198 </div> 199 </div> 200 </script> 201 202 <script id="CurrentVehicleAddVinButtonIcon" type="text/html"> 203 @ReadFile("/Files/Templates/Designs/Swift/Assets/icons/" + "add-vin-asset.svg") 204 </script> 205 }
You do not have any item in the cart