Error executing template "Designs/Mobler2018/_parsed/Clean_NoBreadcrumb.parsed.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at Mobler.Website.CustomModules.MoblerHelpers.MoblerHelpers.createCanonical() in C:\Dynamicweb\git\mobler.dw9\Mobler.Website\CustomModules\MoblerHelpers\MoblerHelpers.cs:line 1549
   at CompiledRazorTemplates.Dynamic.RazorEngine_5b60656c6b4a49df980b993be97cc90d.Execute() in D:\dynamicweb.net\Solutions\mobler.LIVE\Files\Templates\Designs\Mobler2018\_parsed\Clean_NoBreadcrumb.parsed.cshtml:line 76
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @using Mobler.Website.CustomModules.MoblerHelpers; 2 @using System.Web; 3 @using System.Text.RegularExpressions 4 @using Dynamicweb.Core.Helpers 5 @using Dynamicweb.Rendering.Translation 6 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 7 8 @{ 9 string CurrentEcomShopId = Dynamicweb.Frontend.PageView.Current().Area.EcomShopId; 10 string CurrentEcomLanguageId = Dynamicweb.Ecommerce.Common.Context.LanguageID; 11 string MainShopLink = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("MainShopLink"); 12 string shopname = MoblerHelpers.GetShopName(); 13 string shopnameEncoded = HttpUtility.UrlEncode( shopname ); 14 var shopInfo = MoblerHelpers.ShopInfo(); 15 string globalAreaName = GetGlobalValue("Global:Area.Name"); 16 string logosrc = "Files/Images/Shoplogos/logo" + shopname.Replace(" ", "") + ".png"; 17 string logoDesktop = "Files/Images/Shoplogos/logo" + shopname.Replace(" ", "") + ".png"; 18 string logoMobile = "Files/Images/Shoplogos/logoSmall" + shopname.Replace(" ", "") + ".png"; 19 if (shopname == "Møblér") 20 { 21 logosrc = "Files/Images/Shoplogos/moebler.png"; 22 logoMobile = "Files/Images/Shoplogos/moebler_small.png"; 23 } 24 //this defines a shoppage 25 if (GetString("Item.SystemName") == "TextPage") 26 { 27 string CurrentShopName = GetString("DwPageName_2"); 28 logosrc = "Files/Images/Shoplogos/logo" + CurrentShopName.Replace(" ", "") + ".png"; 29 logoDesktop = "Files/Images/Shoplogos/logo" + CurrentShopName.Replace(" ", "") + ".png"; 30 logoMobile = "Files/Images/Shoplogos/logoSmall" + CurrentShopName.Replace(" ", "") + ".png"; 31 } 32 string logoSrcResized = "/Admin/Public/GetImage.ashx?Image=" + logosrc + "&Format=webP&Quality=90&height=50&crop=5"; 33 string logoMobileResized = "/Admin/Public/GetImage.ashx?Image=" + logoMobile + "&Format=webP&Quality=90&height=50&crop=5"; 34 var headerSearchIcon = MoblerHelpers.GetSVGIcon("icon-search"); 35 string imageName = shopname.Replace(" ", string.Empty) + "-owner.png"; 36 string localShopPage = MoblerHelpers.localshopPage(); 37 string FindDealerPage = GetString("Item.Area.FindDealerPage"); 38 string CartPage = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("CartPage"); 39 string ProductInstantSearchUrl = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("ProductInstantSearchUrl"); 40 41 string SearchPagePageSize = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("SearchPagePageSize") != "0" ? Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("SearchPagePageSize") : "20"; 42 string InstantSearchSize = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("InstantsearchPageSize") != "0" ? Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("InstantsearchPageSize") : "10"; 43 string SearchResultPageId = ""; 44 if (Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("SearchResultPage").Split('=').Length > 1) 45 { 46 SearchResultPageId = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("SearchResultPage").Split('=')[1]; 47 } 48 string FooterLinkDestination = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("Link"); 49 int ShopPageId = GetInteger("Item.Area.ShopPageId"); 50 var AllShops = Firstweb.Custom.CustomCode.Frontend.Helpers.Shops.GetAllShops(ShopPageId); 51 string SearchBarPlaceholder = Translate("SearchbarPlaceholderText", "S&oslash;g.."); 52 int GlobalNewsletterParagraphId = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetInt("GlobalNewsletterParagraphId"); 53 int CartCount = GetLoop("OrderLines").Count; 54 bool FirstShopWithSameName = true; 55 string SelectPlaceholder = Translate("ShopSelectPlaceholder", "Indtast by, postnummer eller adresse"); 56 string SelectNoResult = Translate("ShopSelectNoResult", "No such shop found"); 57 int ProductPage = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetInt("PrimaryProductPage"); 58 59 DateTime today = DateTime.Today; 60 string currentYear = today.ToString("yyyy"); 61 62 string BannerBackgroundColor = GetString("Item.Area.BannerBackgroundColor"); 63 string BannerTextColor = GetString("Item.Area.BannerTextColor"); 64 var TopBarNav = GetLoop("Item.Area.TopBarNavigation"); 65 var TopbarHeaderContent = GetLoop("Item.Area.TopbarHeaderContent"); 66 string TilbudBgColor = !String.IsNullOrEmpty(GetString("Item.Area.TilbudBackgroundColor.Value")) ? GetString("Item.Area.TilbudBackgroundColor.Value") : "#00AB5D"; 67 string TilbudTextColor = !String.IsNullOrEmpty(GetString("Item.Area.TilbudTextColor.Value")) ? GetString("Item.Area.TilbudTextColor.Value") : "#FFFFFF"; 68 string StrongPriceBgColor = !String.IsNullOrEmpty(GetString("Item.Area.St_rkPrisBackgroundColor.Value")) ? GetString("Item.Area.St_rkPrisBackgroundColor.Value") : "#9d4778"; 69 string StrongPriceTextColor = !String.IsNullOrEmpty(GetString("Item.Area.St_rkPrisTextColor.Value")) ? GetString("Item.Area.St_rkPrisTextColor.Value") : "#FFFFFF"; 70 var uniqueSellingPoints = GetLoop("Item.Area.UniqueSellingPoints"); 71 string CookieText = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("CookieText"); 72 string CookieReadMore = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("CookieReadMoreText"); 73 var TopLevelGroups = Dynamicweb.Ecommerce.Services.ProductGroups.GetToplevelGroups().Where(g => g.ShopId == CurrentEcomShopId && g.LanguageId == CurrentEcomLanguageId && g.NavigationShowInMenu).ToList(); 74 string CurrentUri = HttpContext.Current.Request.Url.PathAndQuery.ToString().Replace("/Default.aspx", "Default.aspx"); 75 string convertedUri = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(CurrentUri); 76 string CanonicalUri = MoblerHelpers.createCanonical(); 77 string CanonicalDomain = "mobler.dk"; 78 if (Mobler.Website.CustomCode.Frontend.Helper.IsLocalWebshop()) 79 { 80 CanonicalDomain = System.Web.HttpContext.Current.Request.Url.Host; 81 } 82 string CanonicalURL = "https://" + CanonicalDomain + CanonicalUri; 83 string AvisLink = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("Avis"); 84 string FindShopSearchPlaceholder = Translate("HeaderNav.FindShopPlaceholder", "Indtast postnr., by eller adresse"); 85 string GetAllShopsEndpoint = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("GetShopsJson"); 86 string SetBannerEndpoint = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("GetCartJson"); 87 bool ShowTopBanner = Mobler.Website.CustomCode.Frontend.Helpers.MessageBanner.ShowMessageBanner(); 88 bool EnableTopBarHeader = GetBoolean("Item.Area.EnableTopBarHeader.Value") && ShowTopBanner; 89 bool EnableTopBarNavigation = GetBoolean("Item.Area.EnableTopBarBanner.Value") && ShowTopBanner; 90 91 bool EnableGoogleShoppingScript = GetBoolean("Item.Area.EnableGoogleShoppingScript.Value"); 92 string GoogleShoppingContentKey = GetString("Item.Area.GoogleShoppingContentKey.Value"); 93 94 bool EnableFacebookScript = GetBoolean("Item.Area.EnableFacebookScript.Value"); 95 string FacebookScriptContentKey = GetString("Item.Area.FacebookScriptContentKey.Value"); 96 string PinterestDomainVerifyContentKey = GetString("Item.Area.PinterestDomainVerifyContentKey.Value"); 97 98 bool IsCheckoutStep = false || HttpContext.Current.Request.RawUrl.Contains("checkout"); 99 string HeaderIsCheckoutStepModifier = IsCheckoutStep ? "" : "pt-2 pt-md-3"; 100 } 101 102 @SnippetStart("LocalShopPage") 103 <a class="menu-item py-2 px-3 px-md-0" href="@localShopPage"> 104 <span>@Translate("MenuAboutUs.Text", "Om os")</span> 105 <div class="mobile-menu-arrow"> 106 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill-rule="evenodd" clip-rule="evenodd"><path d="M23.245 4l-11.245 14.374-11.219-14.374-.781.619 12 15.381 12-15.391-.755-.609z"></path></svg> 107 </div> 108 </a> 109 @SnippetEnd("LocalShopPage") 110 111 @SnippetStart("MenuArrowSvg") 112 <div class="mobile-menu-arrow"> 113 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill-rule="evenodd" clip-rule="evenodd"><path d="M23.245 4l-11.245 14.374-11.219-14.374-.781.619 12 15.381 12-15.391-.755-.609z"></path></svg> 114 </div> 115 @SnippetEnd("MenuArrowSvg") 116 117 @foreach (var TopLevelGroup in TopLevelGroups) 118 { 119 string snippetName = TopLevelGroup.Id; 120 if (snippetName.Contains("-")) 121 { 122 snippetName = snippetName.Split(new char[] {'-'} )[1]; 123 } 124 125 @SnippetStart(snippetName) 126 foreach (var primaryGroup in TopLevelGroup.Subgroups.Where(pg => pg.NavigationShowInMenu)) 127 { 128 string primaryGroupUrl; 129 string AlternativeLink = primaryGroup.ProductGroupFieldValues.GetProductGroupFieldValue( "alternativelink" ).Value != null ? primaryGroup.ProductGroupFieldValues.GetProductGroupFieldValue( "alternativelink" ).Value.ToString() : ""; 130 if ( !string.IsNullOrEmpty( AlternativeLink ) ) 131 { 132 primaryGroupUrl = AlternativeLink; 133 } 134 else 135 { 136 primaryGroupUrl = !string.IsNullOrEmpty( primaryGroup.ProductGroupFieldValues 137 .GetProductGroupFieldValue( "LinkToGroupsPrimaryPosition" ).Value.ToString() ) ? 138 primaryGroup.ProductGroupFieldValues.GetProductGroupFieldValue( "LinkToGroupsPrimaryPosition" ).Value.ToString() : 139 TopLevelGroup.Meta.PrimaryPage + "&GroupID=" + primaryGroup.Id; 140 } 141 142 // When using alternative link, to display a universe page, let's create an "All" link, for that category 143 string primaryGroupPage = ""; 144 if (!string.IsNullOrEmpty(AlternativeLink)) 145 { 146 primaryGroupPage = !string.IsNullOrEmpty( primaryGroup.ProductGroupFieldValues 147 .GetProductGroupFieldValue( "LinkToGroupsPrimaryPosition" ).Value.ToString() ) ? 148 primaryGroup.ProductGroupFieldValues.GetProductGroupFieldValue( "LinkToGroupsPrimaryPosition" ).Value.ToString() : 149 TopLevelGroup.Meta.PrimaryPage + "&GroupID=" + primaryGroup.Id; 150 } 151 152 <div class="category p-md-3"> 153 <div class="category-header px-3 py-2 p-md-0"> 154 <a class="ml-3 ml-md-0" href="@primaryGroupUrl">@primaryGroup.Name</a> 155 </div> 156 157 @foreach (var SubGroup in primaryGroup.Subgroups.Where(sg => sg.NavigationShowInMenu)) 158 { 159 string GroupLink = SubGroup.ProductGroupFieldValues.GetProductGroupFieldValue("LinkToGroupsPrimaryPosition").HasValue && !String.IsNullOrEmpty(SubGroup.ProductGroupFieldValues.GetProductGroupFieldValue("LinkToGroupsPrimaryPosition").Value.ToString()) ? SubGroup.ProductGroupFieldValues.GetProductGroupFieldValue("LinkToGroupsPrimaryPosition").Value.ToString() : "/" + TopLevelGroup.Meta.PrimaryPage + "&GroupID=" + SubGroup.Id; 160 <div> 161 <a class="px-3 py-2 p-md-0 d-flex justify-content-between align-items-center w-100 ecom-link" href="@GroupLink"> 162 <span class="group-name">@SubGroup.Name</span> 163 <div class="mobile-menu-arrow"> 164 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill-rule="evenodd" clip-rule="evenodd"><path d="M23.245 4l-11.245 14.374-11.219-14.374-.781.619 12 15.381 12-15.391-.755-.609z"></path></svg> 165 </div> 166 </a> 167 168 </div> 169 } 170 171 @if (!string.IsNullOrEmpty(primaryGroupPage)) 172 { 173 <a class="mt-4" href="@primaryGroupPage">@Translate("Navigation.Group.All", "Alle") @primaryGroup.Name.ToLower()</a> 174 } 175 </div> 176 } 177 @SnippetEnd(snippetName) 178 } 179 180 <!doctype html> 181 <html lang="da"> 182 <head> 183 <script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="ec05aeab-ec7b-4d91-81fc-a8ebbcce1f2f" data-blockingmode="auto" type="text/javascript"></script> 184 185 @*GTM*@ 186 <script> 187 var ecomm_pagetype = "other"; 188 var ecomm_totalvalue = 0; 189 var ecomm_prodid = ""; 190 </script> 191 @RenderSnippet("DataLayerOverwrites") 192 <script> 193 dataLayer = [{ 194 'ecomm_pagetype': ecomm_pagetype, 195 'ecomm_totalvalue': ecomm_totalvalue, 196 'ecomm_prodid': ecomm_prodid, 197 }]; 198 </script> 199 @RenderSnippet("DataLayerOverwriteReceipt") 200 <script> 201 (function (w, d, s, l, i) { 202 w[l] = w[l] || []; w[l].push({ 203 'gtm.start': 204 new Date().getTime(), event: 'gtm.js' 205 }); var f = d.getElementsByTagName(s)[0], 206 j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 207 '//www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); 208 })(window, document, 'script', 'dataLayer', 'GTM-PN9ZSS'); 209 </script> 210 211 <!-- Required meta tags --> 212 <meta charset="utf-8"> 213 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 214 215 @if (GetInteger("DwPageID") != ProductPage) 216 { 217 218 } 219 else 220 { 221 @RenderSnippet("ProductDetailsMeta") 222 } 223 224 @if (System.Web.HttpContext.Current.Request.Url.Host.ToLower().Contains("1stweb")) 225 { 226 <meta name="robots" content="noindex"> 227 } 228 229 @if (!Mobler.Website.CustomCode.Frontend.Helper.IsLocalWebshop() && convertedUri != CanonicalUri) 230 { 231 <link rel="canonical" href="@CanonicalURL"> 232 } 233 <!-- Bootstrap CSS --> 234 <title>@GetValue("Title")</title> 235 @GetValue("MetaTags") 236 @GetValue("CopyRightNotice") 237 238 <meta property="og:url" content="@CanonicalURL"> 239 <meta property="og:title" content="@GetValue(" title")"=""> 240 241 <link rel="shortcut icon" type="image/ico" href="/Files/Templates/Designs/Mobler2016/images/icons/favicon.ico"> 242 243 @if (GetString("Item.SystemName") == "BlogPost") 244 { 245 string imageMasterPage = GetString("Item.Billede.Value"); 246 string TeaserText = Regex.Replace(GetString("Item.TeaserTekst"), "<.*?>", String.Empty); 247 <meta property="og:type" content="article"> 248 <meta property="og:description" content="@TeaserText"> 249 <meta property="og:image" content="@imageMasterPage"> 250 } 251 else if (GetString("Item.SystemName") == "Brand") 252 { 253 string imageMasterPage = GetString("Item.Logo.Value"); 254 string TeaserText = GetString("Item.Navn"); 255 <meta property="og:type" content="article"> 256 <meta property="og:description" content="@TeaserText"> 257 <meta property="og:image" content="@imageMasterPage"> 258 } 259 else if (System.Web.HttpContext.Current.Items["OverrideOgTags"] != null) 260 { 261 @RenderSnippet("OgTags") 262 } 263 else 264 { 265 <meta property="og:type" content="business.business"> 266 <meta property="og:description" content="@GetString(" meta.description")"=""> 267 <meta property="og:image" content="https://mobler.dk/Files/Templates/Designs/Mobler2018/assets/img/logos/logoM%C3%B8bl%C3%A9r.png"> 268 } 269 270 271 @if (EnableGoogleShoppingScript && !string.IsNullOrEmpty(GoogleShoppingContentKey)) 272 { 273 <meta name="google-site-verification" content="@GoogleShoppingContentKey"> 274 } 275 276 @if (EnableFacebookScript && !string.IsNullOrEmpty(FacebookScriptContentKey)) 277 { 278 <meta name="facebook-domain-verification" content="@FacebookScriptContentKey"> 279 } 280 281 @if (EnableFacebookScript && !string.IsNullOrEmpty(PinterestDomainVerifyContentKey)) 282 { 283 <meta name="p:domain_verify" content="@PinterestDomainVerifyContentKey"> 284 } 285 <link href="/Files/Templates/Designs/Mobler2018/assets/dist/css/main.60b96d0f0d98f497d7df.css?e2e84643b78017ba4387" rel="stylesheet"> 286 @GetValue("Stylesheets") 287 @GetValue("Javascripts") 288 </head> 289 <body data-bind="viewModel: 'MasterViewModel', Cookies" data-currentshopislocalwebshop="@Mobler.Website.CustomCode.Frontend.Helper.IsLocalWebshop()" data-mainshoplink="@MainShopLink"> 290 291 @*GTM*@ 292 <noscript> 293 <iframe src="//www.googletagmanager.com/ns.html?id=GTM-PN9ZSS" height="0" width="0" style="display:none;visibility:hidden"></iframe> 294 </noscript> 295 296 <div data-bind="viewModel: 'HeaderViewModel'"> 297 <div class="d-none" data-bind="setInitValue: { observable: GetShopsEndpoint, value: '@GetAllShopsEndpoint' }"></div> 298 299 <div class="menu-open-overlay" data-bind="css: { active: MenuOpen }, click: ToggleMenu"></div> 300 <header class="js-header"> 301 @if (EnableTopBarHeader && !IsCheckoutStep) 302 { 303 <div class="container-fluid"> 304 <div class="row"> 305 <div class="col-12 topbarheader"> 306 <div class="container"> 307 <div class="row"> 308 <div class="col-12"> 309 <ul> 310 @if (TopbarHeaderContent != null) 311 { 312 foreach (var topheaderItem in TopbarHeaderContent) 313 { 314 string image = topheaderItem.GetString("Item.Area.TopbarHeaderContent.Image.Value"); 315 string text = topheaderItem.GetString("Item.Area.TopbarHeaderContent.Text.Value"); 316 string link = topheaderItem.GetString("Item.Area.TopbarHeaderContent.Link.Value"); 317 318 <li> 319 <img width="20" height="20" src="@image" alt="@text"> 320 <a href="@link">@text</a> 321 </li> 322 } 323 } 324 </ul> 325 </div> 326 </div> 327 </div> 328 </div> 329 </div> 330 </div> 331 } 332 333 @if (EnableTopBarNavigation && !IsCheckoutStep) 334 { 335 <div class="container-fluid js-top-banner topbar-nav"> 336 <div class="row"> 337 <div class="col-12 text-center" style="background-color:@BannerBackgroundColor;"> 338 <div class="d-flex justify-content-center align-items-center"> 339 <ul class="nav justify-content-center flex-fill"> 340 @if (TopBarNav != null) 341 { 342 foreach (var navItem in TopBarNav) 343 { 344 string ItemLink = navItem.GetString("Item.Area.TopBarNavigation.NavItemLink"); 345 string ItemText = navItem.GetString("Item.Area.TopBarNavigation.NavItemText"); 346 347 <li class="nav-item"></li> 348 <li> 349 <a class="nav-link p-1 rte-content" href='@ItemLink' style="color:@BannerTextColor;"> 350 @ItemText 351 </a> 352 </li> 353 <li class="nav-item topbar-nav--separator font-weight-bold p-1" style="color:@BannerTextColor;">-</li> 354 } 355 } 356 </ul> 357 <div class="ml-2 mt-1"> 358 <svg class="close-icon cursor-pointer" data-bind="topBanner: { target: '.js-top-banner', endpoint: '@SetBannerEndpoint' }" fill="@BannerTextColor" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill-rule="evenodd" clip-rule="evenodd"><path d="M12 11.293l10.293-10.293.707.707-10.293 10.293 10.293 10.293-.707.707-10.293-10.293-10.293 10.293-.707-.707 10.293-10.293-10.293-10.293.707-.707 10.293 10.293z"></path></svg> 359 </div> 360 </div> 361 </div> 362 </div> 363 </div> 364 } 365 <div class="container position-md-relative @HeaderIsCheckoutStepModifier" data-bind="setInitValue: { observable: CurrentShopIsLocalWebshop, value: @Mobler.Website.CustomCode.Frontend.Helper.IsLocalWebshop().ToString().ToLower() }"> 366 <div class="mini-cart box-shadow-cart unimportant-hidden mini-cart-header js-mini-cart-modal" data-bind="css: { 'd-block': CartOpen }"> 367 <div class="modal-closer-custom" data-bind="click: ToggleCart"> 368 <img width="24" height="24" src="/Files/Templates/Designs/Mobler2018/assets/img/icons/close.svg"> 369 </div> 370 <div class="m-0 p-3 font-weight-bold bg-grey fs3 d-flex justify-content-center align-items-center flex-column"> 371 <div class="position-relative" data-bind="click: ToggleCart"> 372 <span class="position-absolute fs-10px cart-counter js-cart-count">@CartCount</span> 373 <svg width="55px" height="44px" viewbox="0 0 21 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 374 <g id="Desktop" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> 375 <g id="Møblér---Forside-med-mega-menu" transform="translate(-1339.000000, -35.000000)" fill-rule="nonzero"> 376 <g id="Cart-Copy" transform="translate(1332.000000, 25.000000)"> 377 <g id="shopping-cart" transform="translate(7.000000, 10.000000)"> 378 <path d="M20.8736917,3.4299738 C20.7591283,3.27470749 20.5822811,3.18376218 20.3949458,3.18376218 L5.00238622,3.18376218 L4.33009275,0.474420121 C4.26078996,0.194991487 4.02004549,0 3.74444792,0 L0.605088327,0 C0.270918214,0 0,0.28382376 0,0.633912508 C0,0.984001256 0.270918214,1.26782502 0.605088327,1.26782502 L3.27651295,1.26782502 L3.94880642,3.97716708 C3.94880642,3.9772516 3.94880642,3.9772516 3.9488871,3.97733612 L6.31930045,13.5256644 C6.38860323,13.8050085 6.62934771,14 6.90486459,14 L18.024129,14 C18.2996459,14 18.5403904,13.8050085 18.6096932,13.5256644 L20.9804293,3.97716708 C21.0277068,3.78733141 20.9882551,3.58515558 20.8736917,3.4299738 Z M9.51013289,12.7322595 L7.37279957,12.7322595 L6.89744218,10.8176747 L9.51013289,10.8176747 L9.51013289,12.7322595 Z M9.51013289,9.54976515 L6.58271557,9.54976515 L6.10711614,7.63391251 L9.51013289,7.63391251 L9.51013289,9.54976515 Z M9.51013289,6.36608749 L5.79230886,6.36608749 L5.31703215,4.4515872 L9.51013289,4.4515872 L9.51013289,6.36608749 Z M14.2090068,12.7322595 L10.7203095,12.7322595 L10.7203095,10.8176747 L14.2090068,10.8176747 L14.2090068,12.7322595 Z M14.2090068,9.54976515 L10.7203095,9.54976515 L10.7203095,7.63391251 L14.2090068,7.63391251 L14.2090068,9.54976515 Z M14.2090068,6.36608749 L10.7203095,6.36608749 L10.7203095,4.4515872 L14.2090068,4.4515872 L14.2090068,6.36608749 Z M17.5563554,12.7322595 L15.4191835,12.7322595 L15.4191835,10.8176747 L18.0317128,10.8176747 L17.5563554,12.7322595 Z M18.3465201,9.54976515 L15.4191835,9.54976515 L15.4191835,7.63391251 L18.8222002,7.63391251 L18.3465201,9.54976515 Z M19.1370075,6.36608749 L15.4192641,6.36608749 L15.4192641,4.4515872 L19.6124456,4.4515872 L19.1370075,6.36608749 Z" id="Shape" fill="#00AB5D"></path> 379 <path d="M8.0000365,14 C6.89722765,14 6,14.8971621 6,15.9998175 C6,17.1026919 6.89722765,18 8.0000365,18 C9.10277235,18 10,17.1026919 10,15.9998175 C10,14.8971621 9.10284536,14 8.0000365,14 Z M8.0000365,16.9050096 C7.50104944,16.9050096 7.09507036,16.4989141 7.09507036,15.9998175 C7.09507036,15.5008669 7.50104944,15.0949904 8.0000365,15.0949904 C8.49895056,15.0949904 8.90492964,15.5009399 8.90492964,15.9998175 C8.90492964,16.4989871 8.49902356,16.9050096 8.0000365,16.9050096 Z" id="Shape" fill="#3F9C54"></path> 380 <path d="M15.999854,14 C14.8971308,14 14,14.8971621 14,15.9998175 C14,17.1026919 14.8971308,18 15.999854,18 C17.1027962,18 18,17.1026919 18,15.9998175 C18,14.8971621 17.1027232,14 15.999854,14 Z M15.999854,16.9050096 C15.5009856,16.9050096 15.0951303,16.4989141 15.0951303,15.9998175 C15.0951303,15.5008669 15.5009856,15.0949904 15.999854,15.0949904 C16.4989414,15.0949904 16.9048697,15.5009399 16.9048697,15.9998175 C16.9048697,16.4989871 16.4988684,16.9050096 15.999854,16.9050096 Z" id="Shape" fill="#3F9C54"></path> 381 </g> 382 </g> 383 </g> 384 </g> 385 </svg> 386 </div> 387 <div class="fs-10px color-primary">@Translate("Minicart.CartContent", "Din indkøbskurv")</div> 388 </div> 389 390 391 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 392 @using Mobler.Website.CustomModules.MoblerHelpers 393 @{ 394 bool AnyLines = GetLoop("OrderLines").Any(); 395 string BlackFridayTheme = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("BlackFridayTheme"); 396 string CartEndpoint = Firstweb.Custom.CustomCode.Frontend.Helpers.AreaItems.GetString("GetCartJson"); 397 } 398 <div class="js-mini-cart-lines position-relative" data-bind="viewModel: 'CartViewModel'"> 399 <div class="d-none js-update-cart" data-bind="setInitValue: { observable: CartEndpoint, value: '@CartEndpoint' }, click: GetCart"></div> 400 401 <div class="cart-command-loader unimportant-hidden justify-content-center align-items-center" data-bind="css: { 'd-flex': Loading }"> 402 <div class="d-flex align-items-center"> 403 <p class="m-0 mr-2">@Translate("Cart.UpdatingCart", "Opdaterer kurv")</p> 404 <i class="fas fa-circle-notch fa-spin"></i> 405 </div> 406 </div> 407 408 <div class="lines" data-bind="foreach: Orderlines"> 409 <div class="cartline d-flex justify-content-between align-items-center px-3 py-2 position-relative"> 410 <span class="delete-orderline color-subtle cursor-pointer mr-2" data-bind="click: $parent.DeleteOrderline.bind($data, OrderlineId), css: { 'd-none': IsDiscount }"> 411 <i class="fas fa-times"></i> 412 </span> 413 <div class="product-image w-10" data-bind="css: { 'd-none': IsDiscount }"> 414 <img width="260" height="200" class="img-fit-contain-x" data-bind="attr: { src: ImagePath }"> 415 </div> 416 <div class="flex-fill px-3 w-75" data-bind="css: { 'd-none': IsDiscount }"> 417 <p class="font-weight-bold m-0" data-bind="text: ProductName"></p> 418 <p class="m-0 color-subtle small-quantity-indicator"><span data-bind="text: Quantity"></span> stk. a <span data-bind="text: QuantityPrice"></span></p> 419 <div class="variant-dimensions" data-bind="foreach: VariantDimensions"> 420 <p class="m-0 color-subtle color-dark-grey font-weight-bold"> 421 <span data-bind="text: Label"></span> 422 <span class="font-weight-normal" data-bind="text: Value"></span> 423 </p> 424 </div> 425 <div class="qty-counter-checkout"> 426 <div class="d-flex"> 427 <div class="quantity-controls d-flex align-items-center mr-3"> 428 <div class="control minus" data-bind="click: $parent.QuantityControl.bind($data, -1, OrderlineId)"> 429 - 430 </div> 431 <input disabled="" type="text" name="Quantity" value="1" data-bind="value: Quantity, attr: { 'data-id': 'js-input-' + OrderlineId }"> 432 <div class="control plus" data-bind="click: $parent.QuantityControl.bind($data, 1, OrderlineId)"> 433 + 434 </div> 435 </div> 436 </div> 437 </div> 438 </div> 439 440 <div class="flex-fill" data-bind="css: { 'd-none': !IsDiscount }"> 441 <p class="font-weight-bold m-0" data-bind="text: ProductName"></p> 442 </div> 443 444 <p class="fs0 m-0 orderline-price" data-bind="text: OrderlinePrice"></p> 445 </div> 446 </div> 447 448 @if (BlackFridayTheme == "True") 449 { 450 <div class="bf-bg-black p-3 d-flex justify-content-between align-items-center price-summary"> 451 <p class="m-0 color-white fs-12px font-weight-semibold">@Translate("MiniCartTotal", "Din kurv i alt (ex. fragt)")</p> 452 <p class="m-0 color-white fs1 font-weight-bold" data-bind="text: CartTotalNoFees"></p> 453 </div> 454 } else { 455 <div class="bg-brand p-3 d-flex justify-content-between align-items-center price-summary"> 456 <p class="m-0 color-white fs-12px font-weight-semibold">@Translate("MiniCartTotal", "Din kurv i alt (ex. fragt)")</p> 457 <p class="m-0 color-white fs1 font-extra-bold" data-bind="text: CartTotalNoFees"></p> 458 </div> 459 } 460 </div> 461 462 463 <div class="p-3 d-flex justify-content-between align-items-center"> 464 <p class="pointer color-black color-white m-0 fs-12px text-underline" data-bind="click: ToggleCart"> 465 @Translate("MiniCartContinueShopping", "Handel videre") 466 </p> 467 <a href="@CartPage" class="pointer py-2 px-3 fs0 font-weight-semibold bg-brand color-white cart-btn-radius d-block no-underline"> 468 @Translate("MiniCartGoToCheckout", "G&aring; til kassen") 469 </a> 470 </div> 471 <div class="p-2 pb-4 bg-white payment-options d-flex justify-content-around justify-content-lg-center align-items-center"> 472 <img width="41" height="25" src="/Admin/Public/GetImage.ashx?Image=/Files/Templates/Designs/Mobler2018/assets/img/DK_Logo_konturstreg.png&Format=webP&Quality=90&Height=30" alt="Dankort"> 473 <img width="34" height="22" src="/Admin/Public/GetImage.ashx?Image=/Files/Templates/Designs/Mobler2018/assets/img/visa.png&Format=webP&Quality=90&Height=30" alt="VISA"> 474 <img width="35" height="22" src="/Admin/Public/GetImage.ashx?Image=/Files/Templates/Designs/Mobler2018/assets/img/visa-elektron.png&Format=webP&Quality=90&Height=30" alt="VISA Elektron"> 475 <img width="33" height="22" src="/Admin/Public/GetImage.ashx?Image=/Files/Templates/Designs/Mobler2018/assets/img/mc_vrt_pos.png&Format=webP&Quality=90&Height=30" alt="American express"> 476 <img width="109" height="20" src="/Admin/Public/GetImage.ashx?Image=/Files/Templates/Designs/Mobler2018/assets/img/santander.png&Format=webP&Quality=90&Height=30" alt="Santander"> 477 <img width="76" height="25" src="/Admin/Public/GetImage.ashx?Image=/Files/Templates/Designs/Mobler2018/assets/img/DK_Logo_mobilepay.png&Format=webP&Quality=90&Height=30" alt="Mobilepay"> 478 </div> 479 </div> 480 481 <div class="find-shop box-shadow-cart unimportant-hidden js-find-shop-modal" data-bind="setInitValue: { observable: MainShopLink, value: '@MainShopLink' }, css: { 'd-block': FindDealerOpen }"> 482 <div class="modal-closer-custom" data-bind="click: ToggleFindDealer"> 483 <img width="24" height="24" src="/Files/Templates/Designs/Mobler2018/assets/img/icons/close.svg"> 484 </div> 485 <div class="m-0 p-3 font-weight-bold bg-grey fs3 d-flex justify-content-center align-items-center flex-column"> 486 <div class="position-relative" data-bind="click: ToggleFindDealer"> 487 <svg width="78px" height="42px" viewbox="0 0 29 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 488 <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> 489 <g id="icon/butik" transform="translate(-10.000000, -12.000000)" fill="#00AB5D"> 490 <path d="M37.0212581,19.8729318 C37.0212581,21.3307953 35.854811,22.4972423 34.3969475,22.4972423 C32.9383027,22.4972423 31.7726369,21.3307953 31.7726369,19.8729318 C31.7726369,19.4838556 31.4804392,19.0955608 30.9944847,19.0955608 C30.5085302,19.0955608 30.2171137,19.3869773 30.2171137,19.8729318 C30.2171137,21.3307953 29.0506667,22.4972423 27.5928031,22.4972423 C26.1349396,22.4972423 24.9684926,21.3307953 24.9684926,19.8729318 C24.9684926,19.4838556 24.6770761,19.0955608 24.1911216,19.0955608 C23.7051671,19.0955608 23.4137507,19.3869773 23.4137507,19.8729318 C23.4137507,21.3307953 22.2465223,22.4972423 20.7886588,22.4972423 C19.3307953,22.4972423 18.1643482,21.3307953 18.1643482,19.8729318 C18.1643482,19.4838556 17.8729318,19.0955608 17.3869773,19.0955608 C16.9010227,19.0955608 16.8041444,19.4838556 16.8041444,19.8729318 C16.8041444,21.3307953 15.636916,22.4972423 14.1790525,22.4972423 C12.721189,22.4972423 11.5547419,21.3307953 11.5547419,19.8729318 C11.5547419,19.580734 11.6524016,19.1924392 11.74928,18.9010227 L11.74928,18.8033631 L12.8180674,13.4578635 L35.9524707,13.4578635 L37.1181365,19.7752721 L37.0212581,19.8729318 Z M35.1743185,33.3835608 C35.1743185,33.7726369 34.882902,34.0640534 34.4946072,34.0640534 L33.8141146,34.0640534 L33.8141146,25.2184313 C33.8141146,24.8301365 33.5219169,24.4410604 33.0359624,24.4410604 L27.6904628,24.4410604 C27.3013867,24.4410604 26.9130919,24.7324768 26.9130919,25.2184313 L26.9130919,34.0640534 L14.1790525,34.0640534 C13.7907577,34.0640534 13.4993412,33.7726369 13.4993412,33.3835608 L13.4993412,23.9551059 C13.6938793,23.9551059 13.887636,24.0519843 14.0821741,24.0519843 C15.4431592,24.0519843 16.7064847,23.372273 17.4838556,22.3027043 C18.2620079,23.372273 19.4276737,24.0519843 20.8863185,24.0519843 C22.344182,24.0519843 23.510629,23.372273 24.288,22.3027043 C25.065371,23.372273 26.231818,24.0519843 27.6904628,24.0519843 C29.1483263,24.0519843 30.3147734,23.372273 31.0921444,22.3027043 C31.8695153,23.372273 33.0359624,24.0519843 34.4946072,24.0519843 C34.7860236,24.0519843 35.0774401,24.0519843 35.2719781,23.9551059 L35.2719781,33.3835608 L35.1743185,33.3835608 Z M38.4791216,19.7752721 L37.1181365,12.5828329 C37.0212581,12.1937568 36.7298416,12 36.4384252,12 L12.1383561,12 C11.74928,12 11.4578635,12.2914164 11.4578635,12.5828329 L10.2914164,18.5119466 C10.0968784,18.9979011 10,19.4838556 10,19.9705914 C10,21.4284549 10.777371,22.7886588 12.0406964,23.4691514 L12.0406964,33.4804392 C12.0406964,34.6476675 13.0133867,35.6195766 14.1790525,35.6195766 L27.7873412,35.6195766 C28.1764173,35.6195766 28.5647122,35.3281601 28.5647122,34.8422056 L28.5647122,34.7445459 L28.5647122,34.6476675 L28.5647122,25.8989239 L32.4523482,25.8989239 L32.4523482,34.6476675 L32.4523482,34.7445459 L32.4523482,34.8422056 C32.4523482,35.2305004 32.7445459,35.6195766 33.2297192,35.6195766 L34.5914856,35.6195766 C35.7579326,35.6195766 36.7298416,34.6476675 36.7298416,33.4804392 L36.7298416,23.2746133 C37.798629,22.5941207 38.4791216,21.4284549 38.576,20.1643482 C38.576,20.0674698 38.576,19.8729318 38.4791216,19.7752721 L38.4791216,19.7752721 Z M25.065371,29.1068486 C25.065371,29.7873412 24.5794164,30.2732957 23.8997052,30.2732957 L17.3869773,30.2732957 C16.7064847,30.2732957 16.2205302,29.7873412 16.2205302,29.1068486 L16.2205302,27.2606903 C16.2205302,26.5794164 16.7064847,26.0934619 17.3869773,26.0934619 L23.8997052,26.0934619 C24.5794164,26.0934619 25.065371,26.5794164 25.065371,27.2606903 L25.065371,29.1068486 Z M23.8997052,24.6355984 L17.3869773,24.6355984 C15.9291137,24.6355984 14.7626667,25.8020455 14.7626667,27.2606903 L14.7626667,29.1068486 C14.7626667,30.5647122 15.9291137,31.7311592 17.3869773,31.7311592 L23.8997052,31.7311592 C25.3567874,31.7311592 26.5232345,30.5647122 26.5232345,29.1068486 L26.5232345,27.2606903 C26.5232345,25.8020455 25.3567874,24.6355984 23.8997052,24.6355984 L23.8997052,24.6355984 Z" id="Fill-1"></path> 491 </g> 492 </g> 493 </svg> 494 </div> 495 <div class="fs-10px color-primary">@Translate("HeaderNav.FindShop", "Find forhandler")</div> 496 <div class="mt-3 w-100"> 497 <input type="text" class="w-100 search-input js-shopsearchinput" placeholder="@FindShopSearchPlaceholder" data-bind="textInput: ShopSearchQuery"> 498 </div> 499 </div> 500 <div class="shop-list" data-bind="foreach: FilteredShops"> 501 <div class="d-flex justify-content-between align-items-center w-100 shop-information p-3" data-bind="click: $parent.SetShop.bind($data, MenuText, IsLocalWebshop, LocalWebshopLink)"> 502 <div class="color-black"> 503 <p class="color-primary font-weight-bold mb-1" data-bind="text: ShopName"></p> 504 <p class="mb-0"><span data-bind="text: Address"></span>, <span data-bind="text: PostalAndCity"></span></p> 505 <p class="mb-0">Tlf. <span data-bind="text: Phone"></span></p> 506 </div> 507 <div> 508 <i class="fas fa-chevron-right color-dark-grey"></i> 509 </div> 510 </div> 511 512 </div> 513 <div> 514 <a class="d-flex justify-content-center align-items-center p-3 bg-brand color-white see-all-link" href="/@FindDealerPage"> 515 <span>@Translate("HeaderNav.FindShopSeeAllLink", "Se alle")</span> 516 <i class="fas fa-chevron-right ml-2"></i> 517 </a> 518 </div> 519 </div> 520 521 <div class="row small-gutter handheld-no-gutter align-items-md-center nav-height menu-row"> 522 <div class="col-md-3 menu-and-logo-col"> 523 <div class="d-flex align-items-center"> 524 <div class="d-md-none"> 525 <div class="d-flex flex-column justify-content-center align-items-center burger-menu-icon py-2" data-bind="click: ToggleMenu"> 526 <img width="30" height="23" class="menu-icon" src="/Files/Templates/Designs/Mobler2018/assets/img/icons/Burgermenu.svg"> 527 <p class="m-0 mt-2 color-primary font-weight-bold">@Translate("MobileMenu.Text", "Menu")</p> 528 </div> 529 </div> 530 <div class="text-center text-lg-left menu-logo"> 531 <a href="/"> 532 @if (shopnameEncoded == "M%c3%b8bl%c3%a9r") 533 { 534 <img width="160" height="42" class="img-fit-contain-x d-none d-md-inline" src="@logoSrcResized" alt='@Translate("LogoAltText", "Møblér: Alt indenfor møbler og boligindretning")'> 535 } 536 else 537 { 538 <img width="315" height="50" class="img-fit-contain-x d-none d-md-inline" src="@logoSrcResized" alt='@Translate("LogoAltText", "Møblér: Alt indenfor møbler og boligindretning")'> 539 } 540 <img width="315" height="50" class="img-fluid d-md-none p-2" src="@logoMobileResized" alt='@Translate("LogoAltText", "Møblér: Alt indenfor møbler og boligindretning")'> 541 </a> 542 </div> 543 </div> 544 </div> 545 546 @if (!IsCheckoutStep) 547 { 548 <div class="col-md-4 col-lg-4 col-xl-3 quick-action-col d-flex justify-content-end align-items-center position-static order-md-2"> 549 550 <div class="d-flex align-items-center w-100 justify-content-end menu-icons"> 551 552 <div class="border-left-1px w-33 p-2"> 553 <a href="@AvisLink" class="no-underline"> 554 <div class="d-flex align-items-center flex-column"> 555 <img width="48" height="40" class="svg-icon" src="/Files/Templates/Designs/Mobler2018/assets/img/icons/paper.svg"> 556 <div class="font-weight-bold color-primary fs-10px mt-2 text-center"> 557 @Translate("HeaderNav.News", "Avis") 558 </div> 559 </div> 560 </a> 561 </div> 562 563 <div class="position-relative border-left-1px w-33 p-2 js-find-shop-modal"> 564 <div class="d-flex align-items-center flex-column cursor-pointer" data-bind="click: ToggleFindDealer"> 565 <div class="position-relative"> 566 <img width="51" height="42" class="svg-icon" src="/Files/Templates/Designs/Mobler2018/assets/img/icons/shop.svg"> 567 </div> 568 <div class="font-weight-bold color-primary fs-10px text-center mt-2"> 569 @Translate("HeaderNav.FindShop", "Find forhandler") 570 </div> 571 </div> 572 </div> 573 574 575 <div class="position-relative border-left-1px w-33 pl-2 js-mini-cart-modal" data-bind="click: ToggleCart"> 576 <div class="d-flex align-items-center flex-column cursor-pointer"> 577 <div class="position-relative"> 578 <span class="position-absolute fs-10px cart-counter js-cart-count">@CartCount</span> 579 <img width="55" height="44" class="svg-icon" src="/Files/Templates/Designs/Mobler2018/assets/img/icons/cart.svg"> 580 </div> 581 <div class="font-weight-bold color-primary fs-10px text-center mt-2"> 582 @Translate("HeaderNav.Cart", "Kurv") 583 </div> 584 </div> 585 </div> 586 </div> 587 </div> 588 <div id="instantSearch" class="col-12 col-md-5 col-lg-4 col-xl-5 offset-lg-1 offset-xl-1 d-flex align-items-center mt-2 mt-md-0 order-md-1" data-bind="setInitValue: { observable: InstantSearchEndpoint, value: '@ProductInstantSearchUrl' }, 589 css: { 'results-found search-br-top shadow-search-top' : Products().length> 590 0 }" data-size="@InstantSearchSize"> 591 <div class="input-group search-bar-container position-relative"> 592 <form id="searchForm" action="/Default.aspx" class="w-100" method="get"> 593 <input type="hidden" name="id" value="@SearchResultPageId"> 594 <input type="text" id="searchInput" autocomplete="off" name="q" class="form-control search-bar" placeholder="@SearchBarPlaceholder" aria-describedby="basic-addon2" data-bind="textInput: SearchQuery"> 595 <input type="hidden" name="take" value="@SearchPagePageSize"> 596 <button class="icon cursor-pointer" type="submit"><i class="fas fa-search"></i></button> 597 </form> 598 </div> 599 600 <div class="instant-search-results unimportant-hidden" data-bind="css: { 'd-block search-br-bottom': Products().length > 0 || SearchError }"> 601 <div data-bind="foreach: Products, visisble: Products().length > 0" class="shadow-search-bottom search-br-bottom"> 602 <a data-bind="attr: { href: Link }" class="col-12 result d-flex justify-content-between align-items-center p-3 no-underline"> 603 <img data-bind="attr: { src: Image }"> 604 <span class="flex-fill px-2 fs-12px" data-bind="text: Name"></span> 605 <span class="d-flex flex-column align-items-end"> 606 <div data-bind="if: parseFloat(BeforePrice) > parseFloat(Price)"> 607 <span class="fs-12px line-through" data-bind="text: BeforePrice">24.998</span> 608 </div> 609 <p class="my-0 d-flex align-items-center"> 610 <span data-bind="css: { 'd-flex': VariantCombinations == true }" class="fs0 mr-1 unimportant-hidden">@Translate("ProductPrice.From", "Fra")</span> 611 <span data-bind="text: Price, css: { 'splash px-2 mb-1': parseFloat(BeforePrice) > parseFloat(Price) }" class="fs0"></span> 612 </p> 613 <div class="splash unimportant-hidden new-item p-1" data-bind="css: { 'd-flex': SplashType == 2 }"><p class="m-0">@Translate("ProductNew", "Nyhed")</p></div> 614 <div class="splash unimportant-hidden low-price p-1" data-bind="css: { 'd-flex': SplashType == 3 }"><p class="m-0">@Translate("ProductLowPrice", "Fast lavpris")</p></div> 615 <div class="splash unimportant-hidden price-shape p-1" data-bind="style: { display: SplashType == 4 ? 'flex' : '', 'background-color': DailyPriceBackgroundColor != null ? DailyPriceBackgroundColor : 'white' }"><p class="m-0" data-bind="style: { color: DailyPriceTextColor != null ? DailyPriceTextColor : 'black' }">@Translate("ProductDailyPriceSplash", "Dagspris")</p></div> 616 <div class="splash unimportant-hidden p-1" data-bind="css: { 'd-flex': SplashType == 5}"><p class="m-0">@Translate("ProductCombinationOffer", "Kombinationstilbud")</p></div> 617 </span> 618 </a> 619 </div> 620 <p class="p-2 m-0" data-bind="visible: SearchError">@Translate("InstantSearchError", "Der forekom en fejl under søgningen")</p> 621 </div> 622 </div> 623 } 624 </div> 625 </div> 626 @if (!IsCheckoutStep) 627 { 628 <div class="nav-bg container"> 629 <div class="position-relative"> 630 <nav class="menu mt-md-3 mt-lg-4" data-bind="css: { open: MenuOpen }, menuToggler: { menuItemSelector: '.menu-item.has-drop', isMenuOpenObs: MenuOpen, productsArray: Products, searchError: SearchError }"> 631 <div class="mobile-navigation-top d-flex justify-content-between d-md-none js-mobile-navigation"> 632 <img class="img-fluid py-2" src="@logoMobileResized" alt="Logo" width="160" height="42"> 633 <div class="mobile-menu-closer px-3 d-flex flex-column align-items-center justify-content-center" data-bind="click: ToggleMenu"> 634 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill-rule="evenodd" clip-rule="evenodd"><path d="M12 11.293l10.293-10.293.707.707-10.293 10.293 10.293 10.293-.707.707-10.293-10.293-10.293 10.293-.707-.707 10.293-10.293-10.293-10.293.707-.707 10.293 10.293z"></path></svg> 635 <p class="mb-0">@Translate("MobileMenu.CloseText", "Luk")</p> 636 </div> 637 </div> 638 <div class="d-none d-md-block"> 639 <div class="menu-closer fs3 pointer" data-bind="click: ToggleMenu"> 640 <img src="/Files/Templates/Designs/Mobler2018/assets/img/icons/close.svg"> 641 </div> 642 </div> 643 <div class="d-flex flex-wrap w-100 justify-content-start"> 644 @RenderNavigation(new 645 { 646 ExpandMode = "All", 647 Template = "navigation.xslt", 648 TilbudTextColor = "color: " + TilbudTextColor + ";", 649 TilbudBgColor = "background-color: " + TilbudBgColor + ";", 650 StrongPriceBg = "background-color: " + StrongPriceBgColor + ";", 651 StrongPriceTextColor = "color: " + StrongPriceTextColor + ";" 652 }) 653 </div> 654 </nav> 655 </div> 656 </div> 657 } 658 </header> 659 <div class="find-shop-popup unimportant-hidden p-4 box-shadow bg-white"> 660 <div class="find-shop-popup-text"> 661 <p>@GetString("Item.Area.LocalWebshopText")</p> 662 </div> 663 <div class="d-flex justify-content-between"> 664 <a href="#" onclick="history.back();" class="pointer py-2 px-3 bg-dark-grey color-white rounded no-underline m-0">@Translate("FindShopPopupCancel", "Tilbage")</a> 665 <a href="#" class="find-shop-popup-link pointer py-2 px-3 bg-brand color-white rounded d-block no-underline" data-shopname="@shopnameEncoded">@Translate("FindShopPopupConfirm", "Godkend")</a></div> 666 </div> 667 </div> 668 669 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 670 671 672 <div id="content1">@GetValue("DwContent(content1)")</div> 673 674 675 @if (!IsCheckoutStep) 676 { 677 var brandsLoop = @GetLoop("Item.Page.Brand_Icon.Value"); 678 679 <div class="py-5"> 680 <div class="container"> 681 <div class="row align-items-center"> 682 @if (brandsLoop.Count <= 0) 683 { 684 foreach (var item in GetLoop("Item.Area.Featured_Brands")) 685 { 686 string Link = item.GetString("Item.Area.Featured_Brands.Brand.Value"); 687 var Brand = Firstweb.Custom.CustomCode.Frontend.Helpers.Brands.GetBrand(Link); 688 689 if (!String.IsNullOrEmpty(Brand.Name)) 690 { 691 <div class="col-4 col-sm-2"> 692 <a href="@Brand.Link"> 693 <img width="900" height="400" class="img-fit-contain-x" src="/Admin/Public/GetImage.ashx?Image=@Brand.Logo&Format=webP&Quality=90&Height=400" alt="@Brand.Name"> 694 </a> 695 </div> 696 } 697 } 698 } 699 else 700 { 701 foreach (var item in brandsLoop) 702 { 703 string image = item.GetString("Item.Page.Brand_Icon.Value.Image.Value"); 704 string link = item.GetString("Item.Page.Brand_Icon.Value.LinkDestination.Value"); 705 706 if (!String.IsNullOrEmpty(image)) 707 { 708 <div class="col-4 col-sm-2"> 709 <a href="@link"> 710 <img width="900" height="400" class="img-fluid" src="/Admin/Public/GetImage.ashx?Image=@image&Format=webP&Quality=90&Height=400" alt=""> 711 </a> 712 </div> 713 } 714 } 715 } 716 </div> 717 </div> 718 </div> 719 <div class="footer-find-dealer bg-grey pt-5"> 720 <div class="container"> 721 <div class="row mt-3"> 722 <div class="col-12 col-sm-12 col-md-8 col-lg-6 mb-5"> 723 @if (shopnameEncoded == "M%c3%b8bl%c3%a9r") 724 { 725 <img class="img-fluid mb-3" src="@logoSrcResized" alt="logo" width="160" height="42"> 726 <div class="color-grey fs2"> 727 <p class="mb-0 font-weight-bold">@GetString("Item.Area.Header")</p> 728 <p> 729 @GetString("Item.Area.About") 730 </p> 731 <a href="@FooterLinkDestination"><u>@Translate("FooterAboutReadMore", "L&aelig;s mere om M&oslash;blér k&aelig;den her")</u></a> 732 </div> 733 } 734 else 735 { 736 if (GetString("Item.SystemName") == "TextPage") 737 { 738 string CurrentAboutUsShopName = GetString("DwPageName_2"); 739 shopInfo = MoblerHelpers.ShopInfo(CurrentAboutUsShopName); 740 shopname = CurrentAboutUsShopName; 741 } 742 <div class="text-center text-md-left"> 743 <img width="315" height="50" class="img-fit-contain-x d-none d-md-inline mb-5" src="@logoSrcResized" alt="Logo"> 744 <img class="img-fluid d-md-none p-2" src="@logoMobileResized" alt="Logo" width="160" height="42"> 745 <div class="row"> 746 <div class="col-12 col-md-6 fs0"> 747 <p class="color-black fs0 font-weight-bold mt-0 mb-3">@shopInfo.ShopName</p> 748 <p class="mb-0">@shopInfo.Address</p> 749 <p class="mb-0">@shopInfo.PostalAndCity</p> 750 <p class="mb-0"><a href="@localShopPage" class="text-underline">@Translate("ShowOnMap", "Vis p&#229; kort")</a></p> 751 @if (!String.IsNullOrEmpty(MoblerHelpers.ShopInfo().Address1)) 752 { 753 <p class="mb-0">@MoblerHelpers.ShopInfo().Address1, @MoblerHelpers.ShopInfo().PostalAndCity1</p> 754 } 755 @if (!String.IsNullOrEmpty(MoblerHelpers.ShopInfo().Address2)) 756 { 757 <p class="mb-0">@MoblerHelpers.ShopInfo().Address2, @MoblerHelpers.ShopInfo().PostalAndCity2</p> 758 } 759 <p class="mt-3 mb-0">@shopInfo.Phone</p> 760 <p class="mb-0"><a href="mailto:@shopInfo.Email">@shopInfo.Email</a></p> 761 </div> 762 <div class="col-12 col-md-6 fs0 mt-4 mt-md-0"> 763 <p class="color-black fs0 font-weight-bold mt-0 mb-3">@Translate("openinghours", "&#197;bningstider")</p> 764 <div class="openinghours">@shopInfo.OpeningHours</div> 765 </div> 766 </div> 767 </div> 768 } 769 </div> 770 <div class="col-12 d-none d-lg-flex align-items-end col-lg-3 text-center"> 771 @{ 772 string footerStaffImagePath = String.Format("/Files/Images/Owners/Large/{0}.png", shopname); 773 string footerStaffGetImage = ""; 774 if (!String.IsNullOrEmpty(footerStaffImagePath)) 775 { 776 footerStaffGetImage = "/Admin/Public/GetImage.ashx?Image=" + footerStaffImagePath + "&Format=webP&Quality=90&width=600&height=200"; 777 } 778 } 779 <img width="600" height="200" class="img-fit-contain-x" src="@footerStaffGetImage" alt="@shopname"> 780 </div> 781 <div class="col-12 col-sm-12 col-md-4 col-lg-3"> 782 <div class="some-icons d-flex justify-content-end mb-3"> 783 @foreach (var Some in GetLoop("Item.Area.SocialMediaIcons")) 784 { 785 string Link = Some.GetString("Item.Area.SocialMediaIcons.Link"); 786 string Icon = Some.GetString("Item.Area.SocialMediaIcons.Icon.Value"); 787 <a href="@Link" target="_blank" class="icon d-flex pr-2 align-items-start justify-content-center"> 788 <img width="37" height="37" src="/Admin/Public/GetImage.ashx?Image=@Icon&Format=webP&Quality=90&Height=40" alt="social icon"> 789 </a> 790 } 791 </div> 792 </div> 793 </div> 794 <div class="row"> 795 <div class="col-12"> 796 <hr> 797 </div> 798 </div> 799 </div> 800 </div> 801 802 <div class="footer-links bg-grey py-4"> 803 <div class="container"> 804 <div class="row"> 805 806 <div class="col-sm-12 col-md-4 col-xl-2 mb-4 mb-md-0"> 807 <h5 class="font-weight-bold">@GetString("Item.Area.Footer_Column_1_Header")</h5> 808 @foreach (var Link in GetLoop("Item.Area.Footer_Column_1_Links")) 809 { 810 string LinkText = Link.GetString("Item.Area.Footer_Column_1_Links.LinkText"); 811 string LinkDestination = "/Default.aspx?id=" + Link.GetString("Item.Area.Footer_Column_1_Links.Link"); 812 <div> 813 <a href="@LinkDestination">@LinkText</a> 814 </div> 815 } 816 </div> 817 <div class="col-sm-12 col-md-4 col-xl-2 mb-4 mb-md-0"> 818 <h5 class="font-weight-bold">@GetString("Item.Area.Footer_Column_2_Header")</h5> 819 @foreach (var Link in GetLoop("Item.Area.Footer_Column_2_Links")) 820 { 821 string LinkText = Link.GetString("Item.Area.Footer_Column_2_Links.LinkText"); 822 string LinkDestination = "/Default.aspx?id=" + Link.GetString("Item.Area.Footer_Column_2_Links.Link"); 823 <div> 824 <a href="@LinkDestination">@LinkText</a> 825 </div> 826 } 827 </div> 828 829 <div class="col-sm-12 col-md-4 col-xl-2 mb-4 mb-md-0"> 830 <h5 class="font-weight-bold">@GetString("Item.Area.Footer_Column_3_Header")</h5> 831 @foreach (var Link in GetLoop("Item.Area.Footer_Column_3_Links")) 832 { 833 string LinkText = Link.GetString("Item.Area.Footer_Column_3_Links.LinkText"); 834 string LinkDestination = "/Default.aspx?id=" + Link.GetString("Item.Area.Footer_Column_3_Links.Link"); 835 <div> 836 <a href="@LinkDestination">@LinkText</a> 837 </div> 838 } 839 </div> 840 841 <div class="col-sm-12 col-md-12 col-xl-5 offset-xl-1"> 842 <h5 class="font-weight-bold">@Translate("Co3.Newsletter.Headline.Text", "Møblérs nyhedsbrev")</h5> 843 <form action="https://mobler.us14.list-manage.com/subscribe/post?u=9d6507ce12e46680cfb3e8d08&amp;id=75c250b3ce" method="get" data-bind="newsletterSignup, submit: function(data, event) { submitNewsletterSignup(data, event) }" class="w-100 validate"> 844 <div class="js-form form-row align-items-center"> 845 <div class="col-12 col-md-6 col-lg-8 mb-4 mb-md-0 form-element"> 846 <input name="EMAIL" type="email" class="form-control rounded-0 background-transparent color-dark-grey" placeholder="@Translate(" newsletter.email","e-mail")"="" required=""> 847 </div> 848 <div class="col-12 col-md-5 col-lg-4 form-element"> 849 <button type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="btn brand-primary-outline w-100"> 850 Tilmeld 851 </button> 852 </div> 853 <div class="col-12 col-md-12 fs0 pt-4 pb-2 align-items-center"> 854 <input id="termsofuse" type="checkbox" value="" required=""> 855 <label class="ml-2 mb-0"> 856 @Translate("Newsletter.TermsOfUseLabel", "Jeg accepterer Møblérs <a href='/'>betingelser</a>") 857 </label> 858 </div> 859 </div> 860 <div class="col-12 pl-0 mt-3 mb-3 success d-none text-success align-items-center"> 861 <span class="fs4 form-element"> 862 @Translate("Newsletter.Success", "Thank you! You have subscribed to our newsletter.") 863 </span> 864 </div> 865 <div class="col-12 pl-0 mt-3 mb-3 already-subscribed d-none text-danger align-items-center"> 866 <span class="fs4 form-element"> 867 @Translate("Newsletter.alreadySubscribed", "Already subscribed") 868 </span> 869 </div> 870 <div class="col-12 pl-0 mt-3 mb-3 mailchimp-error d-none text-danger align-items-center"> 871 <span class="fs4 form-element"> 872 @Translate("Newsletter.mailchimpError", "Sorry. Unable to subscribe. Please try again later.") 873 </span> 874 </div> 875 </form> 876 </div> 877 </div> 878 </div> 879 </div> 880 881 <div class="footer-icons py-4 bg-grey"> 882 <div class="container"> 883 <div class="row"> 884 <div class="col-12 mb-sm-1 col-xl-6"> 885 <div class="copyright d-flex justify-content-center justify-content-lg-start align-items-center"> 886 © @currentYear @Translate("Copyright", "Møblér. All Rights Reserved.") 887 </div> 888 </div> 889 <div class="col-12 mb-sm-1 col-xl-1 offset-xl-1"> 890 <div class="d-flex justify-content-center justify-content-lg-start align-items-center"> 891 <a href='@Translate( "PersondataLink", "link" )'>@Translate("PersondataText", "Persondatapolitik")</a> 892 </div> 893 </div> 894 <div class="col-12 col-xl-4"> 895 <div class="payment-options mt-4 mt-lg-0 d-flex justify-content-end align-items-center"> 896 <img width="41" height="25" src="/Admin/Public/GetImage.ashx?Image=/Files/Templates/Designs/Mobler2018/assets/img/DK_Logo_konturstreg.png&Format=webP&Quality=90&Height=30" alt="Dankort"> 897 <img width="34" height="22" src="/Admin/Public/GetImage.ashx?Image=/Files/Templates/Designs/Mobler2018/assets/img/visa.png&Format=webP&Quality=90&Height=30" alt="VISA"> 898 <img width="35" height="22" src="/Admin/Public/GetImage.ashx?Image=/Files/Templates/Designs/Mobler2018/assets/img/visa-elektron.png&Format=webP&Quality=90&Height=30" alt="VISA Elektron"> 899 <img width="33" height="22" src="/Admin/Public/GetImage.ashx?Image=/Files/Templates/Designs/Mobler2018/assets/img/mc_vrt_pos.png&Format=webP&Quality=90&Height=30" alt="American express"> 900 <img width="109" height="20" src="/Admin/Public/GetImage.ashx?Image=/Files/Templates/Designs/Mobler2018/assets/img/santander.png&Format=webP&Quality=90&Height=30" alt="Santander"> 901 <img width="76" height="25" src="/Admin/Public/GetImage.ashx?Image=/Files/Templates/Designs/Mobler2018/assets/img/DK_Logo_mobilepay.png&Format=webP&Quality=90&Height=30" alt="Mobilepay"> 902 </div> 903 </div> 904 </div> 905 </div> 906 </div> 907 } 908 909 910 <script src="/Files/Templates/Designs/Mobler2018/assets/dist/js/main.60b96d0f0d98f497d7df.js?e2e84643b78017ba4387" data-cookieconsent="ignore"></script> 911 912 </body> 913 </html> 914