Error executing template "Designs/kabooki-shop/_parsed/espresso.parsed.cshtml"System.ArgumentNullException: Value cannot be null.Parameter name: sourceat System.Linq.Enumerable.Where[TSource](IEnumerable`1 source, Func`2 predicate)at Dynamicweb.Frontend.XmlNavigation.FilterPages(IEnumerable`1 pages)at Dynamicweb.Frontend.XmlNavigation.MakeXml(Int32 parentId, Int32 levelStart, Int32 levelStop, Expand expand, Int32 selectedAreaId)at Dynamicweb.Frontend.XmlNavigation.GetNavigationHtml(Int32 parentId, Int32 levelStart, Int32 levelStop, Expand expand, String name, String xsltPath, Int32 selectedAreaId, Boolean sitemapMode, NameValueCollection settings, NameValueCollection attributes, IncludeMode mode)at Dynamicweb.Frontend.XmlNavigation.GetNavigationHtml(NameValueCollection settings, NameValueCollection attributes)at CompiledRazorTemplates.Dynamic.RazorEngine_82760e8b4d7f4caba8abdc9404c7ad3c.Execute() in E:\Dynamicweb.NET\Solutions\kabooki.espresso4.dk\files\Templates\Designs\kabooki-shop\_parsed\espresso.parsed.cshtml:line 1443at 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.b__0(TextWriter writer)at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @inherits Co3.Espresso.Website.TemplateBases.Pages.PageBase 2 @using System.IO 3 @using System.Web 4 @using Dynamicweb.Core 5 @using Dynamicweb.Frontend 6 @using Dynamicweb.Ecommerce.Common 7 @{ 8 string globalAreaLang = PageView.Current().Area.CultureInfo.TwoLetterISOLanguageName; 9 //string currencySeparatorDecimal = PageView.Current().Area.CultureInfo.NumberFormat.CurrencyDecimalSeparator; 10 //string currencySeparatorInteger = PageView.Current().Area.CultureInfo.NumberFormat.CurrencyGroupSeparator; 11 string currencySeparatorDecimal = PageView.Current().Area.CultureInfo.NumberFormat.NumberDecimalSeparator; 12 string currencySeparatorInteger = PageView.Current().Area.CultureInfo.NumberFormat.NumberGroupSeparator; 13 string openGraphUrl = PageView.Current().SearchFriendlyUrl; 14 string openGraphImage = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Host + Espresso.OpenGraphImage; 15 bool isUserAuthenticated = PageView.Current().User != null; 16 string webfontsSnippetHtml = RenderSnippet( "webfonts" ).ToString().Trim(); 17 int areaID = PageView.Current().Area.ID; 18 bool isImageBankArea = PageView.Current().Area.ID == 24; 19 20 bool isProductPage = string.IsNullOrEmpty( HttpContext.Current.Request[ "productid" ] ) == false; 21 string globalValueUrl = GetGlobalValue( "Global:Pageview.Url" ); 22 23 string canonicalPageView = String.Format( "{0}://{1}{2}", GetGlobalValue( "Global:Request.Scheme" ), GetGlobalValue( "Global:Request.Host" ), globalValueUrl ); 24 string pageCanonical = PageView.Current().Page.MetaCanonical; 25 string eComCanonicalSnippetTag = RenderSnippet( "eComCanonical" ).ToString().Trim(); 26 string ga4scriptId = "" + PageView.Current().Area.Item["GA4ScriptID"]; 27 if ( GetGlobalValue( "Global:Pageview.Url" ).IndexOf( "?" ) > -1 ) 28 { 29 globalValueUrl = GetGlobalValue( "Global:Pageview.Url" ).Substring( 0, GetGlobalValue( "Global:Pageview.Url" ).IndexOf( "?" ) ); 30 } 31 } 32 <!DOCTYPE html> 33 <html lang="@globalAreaLang" data-separator-integer="@currencySeparatorInteger" data-separator-decimal="@currencySeparatorDecimal"> 34 <head> 35 <script id="CookieConsent" src="https://policy.app.cookieinformation.com/uc.js" data-culture="@globalAreaLang" type="text/javascript"></script> 36 @GetValue( "CopyRightNotice" ) 37 <meta charset="utf-8"> 38 <meta content="width=device-width, initial-scale=1, shrink-to-fit=no, minimal-ui" name="viewport"> 39 <meta content="ie=edge" http-equiv="x-ua-compatible"> 40 @Espresso.CriticalCSS 41 @if ( webfontsSnippetHtml != "<!--@Snippet(webfonts)-->" ) 42 { 43 @webfontsSnippetHtml 44 } 45 <link href="/Files/Templates/Designs/kabooki-shop/_assets/_dist/css/default.css?v=1.1.2" media="@Espresso.StylesheetAttributeMedia" rel="@Espresso.StylesheetAttributeRel" as="style"> 46 @Espresso.CriticalJS 47 48 <link rel="shortcut icon" href="@Espresso.Area.Item.Favicon"> 49 @GetValue( "MetaTags" ) 50 @if ( Espresso.IsStagingUrl ) 51 { 52 <meta content="noindex,nofollow" name="robots"> 53 } 54 <meta property="og:url" content="@openGraphUrl"> 55 @if ( isProductPage ) 56 { 57 <link rel="canonical" href="@eComCanonicalSnippetTag"> 58 } 59 else 60 { 61 <title>@GetValue("Title")</title> 62 @GetValue("MetaTags") 63 @GetValue("CopyRightNotice") 64 65 66 67 if ( string.IsNullOrEmpty( pageCanonical ) == true ) 68 { 69 if ( GetString( "DwPageID" ) == GetString( "DwAreaFirstPageID" ) ) 70 { 71 <link rel="canonical" href="/"> 72 } 73 else 74 { 75 <link rel="canonical" href="@canonicalPageView"> 76 } 77 } 78 else 79 { 80 <link rel="canonical" href="@pageCanonical"> 81 } 82 } 83 84 @if ( isProductPage ) 85 { 86 @RenderSnippet( "productSpecificData" ) 87 } 88 else 89 { 90 if ( !string.IsNullOrEmpty( Espresso.OpenGraphTitle ) ) 91 { 92 <meta property="og:title" content="@Espresso.OpenGraphTitle"> 93 } 94 else 95 { 96 <meta property="og:title" content="@Espresso.DynamicwebPage.MetaTitle"> 97 } 98 99 if ( !string.IsNullOrEmpty( Espresso.OpenGraphDescription ) )100 {101 <meta property="og:description" content="@Espresso.OpenGraphDescription">102 }103 else104 {105 <meta property="og:description" content="@Espresso.DynamicwebPage.Description">106 }107 <meta property="og:image" content="@openGraphImage">108 <meta property="og:type" content="website">109 }110 @*<meta property="og:title" content="@Espresso.OpenGraphTitle">111 <meta property="og:description" content="@Espresso.OpenGraphDescription">112 <meta property="og:image" content="@openGraphImage">113 <meta property="og:type" content="website">*@114 @if ( string.IsNullOrEmpty( Espresso.Area.Item.GoogleSiteVerification ) == false )115 {116 <meta name="google-site-verification" content="@Espresso.Area.Item.GoogleSiteVerification">117 }118 @{119 if ( 1 == 2 )120 {121 @GetValue( "Stylesheets" )122 }123 }124125 @if ( GetString( "LongLang" ) == "da-DK" )126 {127 <script id="CookieConsent" src="https://policy.app.cookieinformation.com/uc.js" data-culture="DA" type="text/javascript"></script>128 <meta name="facebook-domain-verification" content="ucyk8feccxtvf93mlymvsp30hx7vmh">129 }130131 @if ( GetString( "LongLang" ) == "en-GB" )132 {133 <script id="CookieConsent" src="https://policy.app.cookieinformation.com/uc.js" data-culture="EN" type="text/javascript"></script>134 <meta name="facebook-domain-verification" content="xeo4pn8t7z8im5viijklcth2nyk9sb">135 }136137 @if ( GetString( "LongLang" ) == "de-DE" )138 {139 <meta name="facebook-domain-verification" content="ecng27y061tl8ntstvqm15v4ew2jty">140 }141142 @if ( string.IsNullOrEmpty( Espresso.Area.GoogleTagManagerID ) == false && Espresso.Area.GoogleTagManagerID != "GTM-XXXX" )143 {144 <!-- Google Tag Manager -->145 string gtmDomain = PageView.Current().Area.DomainLock?.Replace("www", "https://gtm");146147 <script>148 (function(w, d, s, l, i) {149 w[l] = w[l] || [];150 w[l].push({151 'gtm.start':152 new Date().getTime(),153 event: 'gtm.js'154 });155 var f = d.getElementsByTagName(s)[0],156 j = d.createElement(s),157 dl = l != 'dataLayer' ? '&l=' + l : '';158 j.async = true;159 j.src =160 '@(gtmDomain)/gtm.js?id=' + i + dl;161 f.parentNode.insertBefore(j, f);162 })(window, document, 'script', 'dataLayer', '@Espresso.Area.GoogleTagManagerID');163 </script>164 <!-- End Google Tag Manager -->165 }166 @if (!string.IsNullOrEmpty(ga4scriptId))167 {168 <!-- Google tag (gtag.js) -->169 <script async="" src="https://www.googletagmanager.com/gtag/js?id=@ga4scriptId"></script>170 <script>171 window.dataLayer = window.dataLayer || [];172 function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '@( ga4scriptId )');173 </script>174 }175 @GetValue("Stylesheets")176 @GetValue("Javascripts")177 </head>178179 <body data-test="true" class="@Espresso.Item.CustomClasses" data-userauthenticated="@isUserAuthenticated.ToString().ToLower()" data-imagebank-area="@isImageBankArea.ToString().ToLower()">180 @if ( string.IsNullOrEmpty( Espresso.Area.GoogleTagManagerID ) == false && Espresso.Area.GoogleTagManagerID != "GTM-XXXX" )181 {182 <!-- Google Tag Manager (noscript) -->183 <noscript>184 <iframe src="https://www.googletagmanager.com/ns.html?id=@Espresso.Area.GoogleTagManagerID" height="0" width="0" style="display: none; visibility: hidden"></iframe>185 </noscript>186 <!-- End Google Tag Manager (noscript) -->187 }188189 @using Dynamicweb.Ecommerce.Common190 @inherits Co3.Espresso.Website.TemplateBases.Pages.PageBase191 @{192 Espresso.Canvas.ClassList.AddClasses( "js-e-canvas is-loading" );193 if ( Espresso.Item.CanvasFullscreen == "True" )194 {195 Espresso.Canvas.ClassList.AddClasses( "is-fullscreen" );196 }197198 string daDomain = "//www.kabooki.dk/";199 string enDomain = "//www.kabooki.com/";200 string deDomain = "//www.kabooki.de/";201202 string contextCountryCode = Context.Country.Code2;203204 contextCountryCode = contextCountryCode == "GB" ? "IE" : contextCountryCode;205206 if ( Context.Cart != null )207 {208 if ( !string.IsNullOrEmpty( Context.Cart.DeliveryCountryCode ) )209 {210 contextCountryCode = Context.Cart.DeliveryCountryCode;211 }212 }213214 Dictionary< string, dynamic > selectorCountries = new Dictionary< string, dynamic >215 {216 {217 "DK", new218 {219 domain = daDomain,220 title = "Denmark",221 countrycode = "DK",222 currencycode = "DKK"223 }224 },225 {226 "SE", new227 {228 domain = daDomain,229 title = "Sweden",230 countrycode = "SE",231 currencycode = "SEK"232 }233 },234 {235 "IE", new236 {237 domain = enDomain,238 title = "Ireland",239 countrycode = "IE",240 currencycode = "EUR"241 }242 },243 {244 "FI", new245 {246 domain = enDomain,247 title = "Finland",248 countrycode = "FI",249 currencycode = "EUR"250 }251 },252 {253 "FR", new254 {255 domain = enDomain,256 title = "France",257 countrycode = "FR",258 currencycode = "EUR"259 }260 },261 {262 "PT", new263 {264 domain = enDomain,265 title = "Portugal",266 countrycode = "PT",267 currencycode = "EUR"268 }269 },270 {271 "IT", new272 {273 domain = enDomain,274 title = "Italy",275 countrycode = "IT",276 currencycode = "EUR"277 }278 },279 {280 "ES", new281 {282 domain = enDomain,283 title = "Spain",284 countrycode = "ES",285 currencycode = "EUR"286 }287 },288 {289 "NL", new290 {291 domain = enDomain,292 title = "Netherlands",293 countrycode = "NL",294 currencycode = "EUR"295 }296 },297 {298 "BE", new299 {300 domain = enDomain,301 title = "Belgium",302 countrycode = "BE",303 currencycode = "EUR"304 }305 },306 {307 "DE", new308 {309 domain = deDomain,310 title = "Germany",311 countrycode = "DE",312 currencycode = "EUR"313 }314 },315 {316 "AT", new317 {318 domain = deDomain,319 title = "Austria",320 countrycode = "AT",321 currencycode = "EUR"322 }323 }324 };325 dynamic JSONcountrySelector = new326 {327 contextCountryCode = contextCountryCode,328 selectorCountries = selectorCountries329 };330 }331332333334 @using System.Globalization335 @using System.Security.Cryptography.X509Certificates336 @using Co3.Espresso.Base.Extensions337 @using Co3.Espresso.Website.Models.FrontEnd338 @using Co3.Espresso.Website.Services339 @using Dynamicweb.Content340 @using Dynamicweb.Ecommerce.Stocks341 @using Dynamicweb.Frontend342 @using Dynamicweb.Rendering343 @using EcomContext = Dynamicweb.Ecommerce.Common.Context344 @using System.Web345 @using EspressoProductService = Co3.Espresso.Website.Services.ProductService346 @using Co3.Kabooki.Dw.Models347 @using Co3.Espresso.Website.Models.FrontEnd.Elements348 @using Dynamicweb.Rendering.Translation349350 @functions {351352 public string getCountryCodeFromArea( Area area )353 {354 RegionInfo regionInfo = new RegionInfo( area.CultureInfo.LCID );355 return regionInfo.TwoLetterISORegionName;356 }357358 public static string GetStandardCollapseToggleTextExpand()359 {360 return "Se mere";361 }362363 public static string GetStandardCollapseToggleTextCollapse()364 {365 return "Se mindre";366 }367368 public static string getProductlistItemImageColorDot( string variantColorImageName = "" )369 {370 string getImageSyntax = "/admin/public/getimage.ashx?Image={0}&Width=30&Height=140&Format=jpg&Quality=10&Crop=7&AlternativeImage={1}";371 string imagePath = string.Format( "/Files/Images/produkter/{0}_4.jpg", variantColorImageName );372 string altImagePath = string.Format( "/Files/Images/produkter/{0}_3.jpg", variantColorImageName );373 string image = string.Format( getImageSyntax, imagePath, altImagePath );374 return image;375 }376377 public static string getProductImageColorDot(string productNumber = "", string variantImageNumber = "" )378 {379 string getImageSyntax = "/admin/public/getimage.ashx?Image={0}&Width=80&Height=350&Format=jpg&Quality=10&Crop=7&AlternativeImage={1}";380 string imagePath = string.Format( "/Files/Images/produkter/{0}-{1}_4.jpg", productNumber, variantImageNumber );381 string altImagePath = string.Format( "/Files/Images/produkter/{0}-{1}_3.jpg", productNumber, variantImageNumber );382 string image = string.Format( getImageSyntax, imagePath, altImagePath );383 return image;384 }385386 public static string getKabookiProductImageColorDot(string productNumber = "", string variantImageNumber = "" )387 {388 //string getImageSyntax = "/admin/public/getimage.ashx?Image={0}&Width=200&Height=200&Format=jpg&Quality=10&Crop=3&AlternativeImage={1}";389 //string imagePath = string.Format( "/Files/Images/produkter/{0}-{1}_4.jpg", productNumber, variantImageNumber );390 //string altImagePath = string.Format( "/Files/Images/produkter/{0}-{1}_5.jpg", productNumber, variantImageNumber );391 string getImageSyntax = "/admin/public/getimage.ashx?Image={0}&Width=75&Format=jpg&Quality=10&Crop=0&AlternativeImage={1}";392 string imagePath = string.Format( "/Files/Images/produkter/{0}-{1}_01.jpg", productNumber, variantImageNumber );393 string altImagePath = imagePath;394 string image = string.Format( getImageSyntax, imagePath, altImagePath );395 return image;396 }397 }398399 @helper ProductDescription( string sectionClasses = "e-section", bool sectionCollapse = false, string contentClasses = null, string heading = null, string content = null, string collapseToggleTextExpand = null, string collapseToggleTextCollapse = null )400 {401 if ( string.IsNullOrEmpty( content ) == false )402 {403 ClassList headingClassList = new ClassList();404 headingClassList.AddClasses( "col-12" );405 ClassList contentClassList = new ClassList();406 contentClassList.AddClasses( "col-12" );407408 @sectionStart( sectionClasses: sectionClasses, sectionCollapse: sectionCollapse, contentClasses: contentClasses, collapseToggleTextCollapse: collapseToggleTextCollapse, collapseToggleTextExpand: collapseToggleTextExpand )409410 if ( string.IsNullOrEmpty( heading ) == false )411 {412 <div class="@headingClassList">413 <h2>@heading</h2>414 </div>415 }416 <div class="@contentClassList">417 @content418 </div>419420 @sectionEnd()421 }422 }423424425 @helper ProductVideo( string sectionClasses = "e-section", string contentClasses = null, string heading = null, string videoURL = null )426 {427 if ( string.IsNullOrEmpty( videoURL ) == false )428 {429 ClassList headingClassList = new ClassList();430 headingClassList.AddClasses( "col-12" );431 ClassList contentClassList = new ClassList();432 contentClassList.AddClasses( "col-12" );433434435 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )436437 if ( string.IsNullOrEmpty( heading ) == false )438 {439 <div class="@headingClassList">440 <h2>@heading</h2>441 </div>442 }443444 <div class="@contentClassList">445 <div class="embed-responsive embed-responsive-16by9 mb-2">446 <iframe class="embed-responsive-item" src="@videoURL" width="1080" height="608" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>447 </div>448 </div>449 @sectionEnd()450 }451 }452453 @helper ProductRelatedProducts( string sectionClasses = "e-section", string contentClasses = null, string heading = null,454 IEnumerable< RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem > productLoop = null )455 {456 if ( productLoop != null && productLoop.Any() == true )457 {458 ClassList headingClassList = new ClassList();459 headingClassList.AddClasses( "col-12" );460 ClassList contentClassList = new ClassList();461 contentClassList.AddClasses( "col-12" );462463 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )464465 if ( string.IsNullOrEmpty( heading ) == false )466 {467 <div class="@headingClassList">468 <h2 class="text-center">@heading</h2>469 </div>470 }471 <div class="@contentClassList">472 <div class="e-products mb-2">473 <div class="row">474 @{475 string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth( null ).ToResponsiveClasses();476 }477 @foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product in productLoop )478 {479 @ProductlistItem( product, productlistItemClassList )480 }481 </div>482 </div>483 </div>484485 @sectionEnd()486 }487 }488489 @helper ProductlistItem( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product, string productlistItemClassList = null )490 {491 if ( product != null )492 {493 Dynamicweb.Ecommerce.Products.Product dwProduct = Dynamicweb.Ecommerce.Services.Products.GetProductById( product.GetString( "Ecom:Product.ID" ), product.GetString( "Ecom:Product.VariantID" ), EcomContext.LanguageID, false );494495 ProductPriceInfo variantPriceInfo = Co3.Kabooki.Dw.Services.ProductService.Instance.GetProductPriceInfo( dwProduct );496 EspressoPrice espressoPrice = new EspressoPrice(variantPriceInfo.Price.PriceWithVAT);497 EspressoPrice espressoListPrice = new EspressoPrice(variantPriceInfo.ListPrice.PriceWithVAT);498 bool hasDiscount = variantPriceInfo.Price.PriceWithVAT < variantPriceInfo.ListPrice.PriceWithVAT;499500 dynamic colorVariantImages = new List< dynamic >();501 int colorVariantImagesCount = 0;502 foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem variantCombination in product.GetLoop( "VariantCombinations" ) )503 {504 string variantColorImageName = variantCombination.GetString( "Ecom:Product:Field.VariantImage.Value.Clean" );505 //string imagePath = ImageService.Instance.GetImageURL( string.Format( "/Files/Images/produkter/{0}_3.jpg", variantColorImageName ), 80, 80, 5, 10, "png" );506 string imagePath = getProductlistItemImageColorDot( variantColorImageName );507 if ( JsonService.Instance.ToJson( colorVariantImages ).ToString().Contains( imagePath ) == false )508 {509 colorVariantImages.Add( new510 {511 path = imagePath512 } );513 ++colorVariantImagesCount;514 }515 }516517 string imageLarge = string.Empty;518 List< RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem > alternativeImages = product.GetLoop( "Ecom:Product.AlternativeImages" ).ToList();519520 if (alternativeImages.Any())521 {522 if (alternativeImages.Any( ai => ai.GetString("Ecom:Product.AlternativeImages.Image").Contains("_15." )) )523 {524 imageLarge = alternativeImages?.FirstOrDefault( ai => ai.GetString("Ecom:Product.AlternativeImages.Image").Contains("_15." )).GetString("Ecom:Product.AlternativeImages.Image");525 }526527 if (string.IsNullOrEmpty(imageLarge) && alternativeImages.Any( ai => ai.GetString("Ecom:Product.AlternativeImages.Image").Contains("_03." )) )528 {529 imageLarge = alternativeImages?.FirstOrDefault( ai => ai.GetString("Ecom:Product.AlternativeImages.Image").Contains("_03." )).GetString("Ecom:Product.AlternativeImages.Image");530 }531532 if (string.IsNullOrEmpty(imageLarge) && alternativeImages.Any( ai => ai.GetString("Ecom:Product.AlternativeImages.Image").Contains("_01." )) )533 {534 imageLarge = alternativeImages?.FirstOrDefault( ai => ai.GetString("Ecom:Product.AlternativeImages.Image").Contains("_01." )).GetString("Ecom:Product.AlternativeImages.Image");535 }536 }537538 if ( string.IsNullOrEmpty(imageLarge) )539 {540 imageLarge = product.GetString( "Ecom:Product.ImageDefault.Default.Clean" );541 }542543 dynamic productData = new544 {545 id = product.GetString( "Ecom:Product.ID" ),546 variantId = product.GetString( "Ecom:Product.VariantID" ),547 url = ProductService.Instance.GetProductLink( product.GetString( "Ecom:Product.PrimaryOrFirstGroupID" ), product.GetString( "Ecom:Product.ID" ) ),548 number = product.GetString( "Ecom:Product.Number" ),549 name = ProductService.Instance.GetName( product.GetString( "Ecom:Product.ID" ), product.GetString( "Ecom:Product.VariantID" ) ),550 typeRO = product.GetString( "Ecom:Product:Field.ProducttypeRO.Value.Clean" ),551 imageLarge = ImageService.Instance.GetImageURL( imageLarge, 400, 400, 5, 10, "png" ),552 price = espressoPrice,553 beforePrice = espressoListPrice,554 descriptionShortExtra01 = product.GetString( "Ecom:Product:Field.DescriptionShortExtra01" ),555 hasDiscount = hasDiscount,556 stock = dwProduct.Stock,557 stockStatus = dwProduct.get_StockStatus(EcomContext.LanguageID),558 colorVariantImagesCount = colorVariantImagesCount,559 colorVariantImages = colorVariantImages560 };561562 string labelColor = Translation.GetTranslation( "eCom Product - Color - Text" );563 if ( productData.colorVariantImagesCount > 1 )564 {565 labelColor = Translation.GetTranslation( "eCom Product - Colors - Text" );566 }567568 if (PageView.Current().Layout.Design.Name == "kabooki-shop")569 {570571 <div class="@productlistItemClassList">572 <div class="e-products-item js-e-products-item js-e-products-item-@productData.id js-e-block-link e-block-link" data-variant-id="@productData.variantId" style="background-image:url('@productData.imageLarge'); background-position:center; background-size: cover;">573 <div class="e-products-item-container">574 <div class="e-products-item-image-container">575 <a class="e-products-item-image-wrapper" href="@productData.url">576 @*<img src="@productData.imageLarge" alt="" class="e-products-item-image">*@577 @if (productData.hasDiscount)578 {579 <img src="/Files/Images/kabooki/system/lego_wear_badge_percentage.svg" alt="" class="custom-products-item-badge">580 }581 </a>582 </div>583584 </div>585 </div>586 <div class="e-products-item-text-container text-left small">587 <h3 class="e-products-item-name mb-0 mt-0">588 <a href="@productData.url">@productData.name @if(productData.typeRO != "") {<span>- @productData.typeRO</span>}</a>589 </h3>590 <p class="e-products-item-text mb-4">591 <span class="e-products-item-price">592 <a href="@productData.url">593 @productData.price594 @if (productData.hasDiscount)595 {596 <span class="custom-products-item-beforeprice">@productData.beforePrice</span>597 }598 </a>599 </span>600 </p>601 </div>602 </div>603 }604 else605 {606 <div class="@productlistItemClassList">607 <div class="e-products-item js-e-products-item js-e-products-item-@productData.id js-e-block-link e-block-link" data-variant-id="@productData.variantId">608 <div class="e-products-item-container">609 <div class="e-products-item-image-container">610 <a class="e-products-item-image-wrapper" href="@productData.url">611 <img src="@productData.imageLarge" alt="" class="e-products-item-image">612 @if (productData.hasDiscount)613 {614 <img src="/Files/Images/kabooki/system/lego_wear_badge_percentage.svg" alt="" class="custom-products-item-badge">615 }616 </a>617 </div>618619 <div class="e-products-item-text-container text-left small">620 <div class="custom-color-options-wrapper">621 <div class="custom-color-options-text">622 <p class="m-0 p-0">@productData.colorVariantImagesCount @labelColor</p>623 </div>624 <div class="custom-color-options-colors">625 @foreach (dynamic colorVariantImage in colorVariantImages)626 {627 <span class="custom-color-dot" style="background-image: url('@colorVariantImage.path');"></span>628 }629630 </div>631 </div>632633 <h3 class="e-products-item-name mb-0 mt-0">634 <a href="@productData.url">@productData.name @if(productData.typeRO != "") {<span>@productData.typeRO</span>}</a>635 </h3>636 <p class="e-products-item-text mb-0">637 <span class="e-products-item-price">638 <a href="@productData.url">639 @productData.price640 @if (productData.hasDiscount)641 {642 <span class="custom-products-item-beforeprice">@productData.beforePrice</span>643 }644 </a>645 </span>646 </p>647 </div>648 </div>649 </div>650 </div>651 }652 }653 }654655656 @helper sectionStart( string sectionClasses = "e-section", string contentClasses = null, bool sectionCollapse = false, string sectionId = null, string collapseToggleTextExpand = null, string collapseToggleTextCollapse = null )657 {658 sectionId = string.IsNullOrEmpty( sectionId ) ? Guid.NewGuid().ToString( "N" ) : sectionId;659 ClassList sectionClassList = new ClassList();660 sectionClassList.AddClasses( sectionClasses );661 ClassList contentClassList;662663 if ( contentClasses == null )664 {665 contentClassList = Co3.Espresso.Website.Services.PageService.Instance.GetResponsiveClassesFromPageItem( PageView.Current().Page.Item );666 }667 else668 {669 contentClassList = new ClassList();670 contentClassList.AddClasses( contentClasses );671 }672673 // TODO: Split collapse logic into separate helper function.674 string collapseId = Guid.NewGuid().ToString( "N" );675 ClassList collapseToggleClassList = new ClassList();676 if ( sectionCollapse )677 {678 sectionClassList.AddClasses( "p-section-collapse js-p-section-collapse" );679 collapseToggleClassList.AddClasses( contentClasses );680 collapseToggleClassList.AddClasses( "p-section-collapse-toggle collapsed order-last text-center" );681 contentClassList.AddClasses( "p-section-collapse-content collapse is-md" );682 }683684 @:<section class="@sectionClassList" id="@sectionId">685 @:<div class="container-fluid">686 @:<div class="row">687688 // TODO: Split collapse logic into separate helper function.689 if ( sectionCollapse )690 {691 <div class="@collapseToggleClassList" data-toggle="collapse" data-target="#@collapseId">692 <button class="btn btn-primary p-section-collapse-toggle-btn" type="button">693 <i class="material-icons p-section-collapse-toggle-icon">keyboard_arrow_down</i>694 </button>695 <small class="h4 p-section-collapse-toggle-text" data-expand-text="@( string.IsNullOrEmpty( collapseToggleTextExpand ) ? GetStandardCollapseToggleTextExpand() : collapseToggleTextExpand )" data-collapse-text="@( string.IsNullOrEmpty( collapseToggleTextCollapse ) ? GetStandardCollapseToggleTextCollapse() : collapseToggleTextCollapse )"></small>696 </div>697 }698699 @:<div class="@contentClassList" id="@collapseId">700 @:<div class="row">701 }702703 @helper sectionEnd()704 {705 @:</div>706 @:</div>707 @:</div>708 @:</div>709 @:</section>710 }711712713714715 <div class="e-loading-overlay e-page-loading-overlay is-loading js-e-page-loading-overlay">716 <div class="e-loading-spinner"></div>717 </div>718719720 @* https://medium.com/clio-calliope/making-google-fonts-faster-aadf3c02a36d *@721 @SnippetStart("webfonts")722 <link crossorigin="" href="https://fonts.gstatic.com/" rel="preconnect">723 <link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:400,700|Material+Icons" media="@Espresso.StylesheetAttributeMedia" rel="@Espresso.StylesheetAttributeRel" as="style">724 @SnippetEnd("webfonts")725726727728 <div class="@Espresso.Canvas.ClassList">729 @using System.Drawing730 @using Co3.Espresso.Website.Services731 @using Dynamicweb.Core732 @using Dynamicweb.Frontend;733 @using Dynamicweb.Ecommerce.Common734 @using Dynamicweb.Ecommerce.Orders735 @{736737 bool isExtranet = GetGlobalValue( "Global:Extranet.UserID" ) == "0" ? false : true;738 string imageBankLoginPage = Espresso.Area.Item.ImageBankLoginPage;739740 ClassList headerClassList = new ClassList();741 headerClassList.AddClasses( "e-header js-e-header is-sticky" );742 if ( Espresso.Item.HeaderTransparent == "True" )743 {744 headerClassList.AddClasses( "is-transparent" );745 }746747 ClassList logoClassList = new ClassList();748 logoClassList.AddClasses( "e-logo" );749750 string backButtonLink = Espresso.Item.BackButtonLink;751 ClassList backButtonClassList = new ClassList();752 ClassList backButtonIconClassList = new ClassList();753 if ( Espresso.Item.BackButton == "True" )754 {755 backButtonClassList.AddClasses( "btn btn-sm btn-secondary my-1 align-self-center" );756 if ( backButtonLink == "" || backButtonLink == "/" )757 {758 backButtonLink = "/";759 backButtonClassList.AddClasses( "js-e-back-link" );760 }761 backButtonIconClassList.AddClasses( "material-icons material-icons-large" );762 if ( Espresso.Item.BackButtonPosition == "right" )763 {764 backButtonClassList.AddClasses( "mr-0 ml-auto order-last" );765 logoClassList.AddClasses( "order-first" );766 }767 else768 {769 backButtonClassList.AddClasses( "order-first" );770 logoClassList.AddClasses( "mr-0 ml-auto order-last" );771 }772 if ( Espresso.Item.BackButtonIcon == "arrow_back" )773 {774 backButtonClassList.AddClasses( "arrow-left" );775 backButtonIconClassList.AddClasses( "d-none" );776 }777 else if ( Espresso.Item.BackButtonIcon == "arrow_forward" )778 {779 backButtonClassList.AddClasses( "arrow-right" );780 backButtonIconClassList.AddClasses( "d-none" );781 }782 }783784 string logoPrimary = Espresso.Area.Item.LogoPrimary;785 string logoSecondary = Espresso.Area.Item.LogoSecondary;786 if ( string.IsNullOrEmpty( logoSecondary ) == true )787 {788 logoSecondary = logoPrimary;789 }790 string tagline = Espresso.Area.Item.Tagline;791792 string checkoutPage = string.Empty;793 if ( !string.IsNullOrEmpty( Espresso.Area.Item.CheckoutPage ) )794 {795 checkoutPage = string.Format("Default.aspx?ID={0}", Espresso.Area.Item.CheckoutPage);796 checkoutPage = SearchEngineFriendlyURLs.GetFriendlyUrl( checkoutPage );797 }798799 string cartPage = string.Empty;800 if ( !string.IsNullOrEmpty( Espresso.Area.Item.CartPage ) )801 {802 cartPage = string.Format("Default.aspx?ID={0}", Espresso.Area.Item.CartPage);803 cartPage = SearchEngineFriendlyURLs.GetFriendlyUrl( cartPage );804 }805806 string customerServicePage = string.Empty;807 if ( !string.IsNullOrEmpty( Espresso.Area.Item.CustomerServicePage ) )808 {809 customerServicePage = string.Format("Default.aspx?ID={0}", Espresso.Area.Item.CustomerServicePage);810 customerServicePage = SearchEngineFriendlyURLs.GetFriendlyUrl( customerServicePage );811 }812813 Dictionary< string, string > navigationHtml = new Dictionary< string, string >814 {815 {816 "global", RenderNavigation( new817 {818 id = "dwnav-global",819 template = "global.xslt",820 startlevel = 1,821 endlevel = 8,822 expandmode = "all"823 } )824 },825 {826 "utilities-primary", RenderNavigation( new827 {828 id = "dwnav-utilities-primary",829 template = "utilities.xslt",830 startlevel = 4,831 endlevel = 5,832 expandmode = "all",833 parenttag = "utilities-primary"834 } )835 },836 {837 "utilities-secondary", RenderNavigation( new838 {839 id = "dwnav-utilities-secondary",840 template = "utilities.xslt",841 startlevel = 4,842 endlevel = 4,843 expandmode = "all",844 parenttag = "utilities-secondary"845 } )846 },847 {848 "hamburger-header", RenderNavigation( new849 {850 id = "dwnav-hamburger-header",851 template = "utilities.xslt",852 startlevel = 4,853 endlevel = 4,854 expandmode = "all",855 parenttag = "hamburger-header"856 } )857 },858 {859 "hamburger-aside", RenderNavigation( new860 {861 id = "dwnav-hamburger-aside",862 template = "utilities.xslt",863 startlevel = 4,864 endlevel = 4,865 expandmode = "all",866 parenttag = "hamburger-aside"867 } )868 }869 };870871 string logoLink = "/";872 if ( isExtranet )873 {874 logoLink = "/Default.asp?ID=6532";875 }876877878 // STREAMER879880 int pageId = PageView.Current().ID;881 string streamerActive = Espresso.Area.Item.StreamerActive;882 string streamerMarquee = Espresso.Area.Item.StreamerAsMarquee;883 string streamerMessage = Espresso.Area.Item.StreamerMessage;884 string streamerTextColor = Espresso.Area.Item.StreamerTextColor;885 string streamerBackgroundColor = Espresso.Area.Item.StreamerBackgroundColor;886 string streamerLink = Espresso.Area.Item.StreamerLink;887 }888889 @if ( Espresso.Item.HeaderHide != "True" )890 {891 <header class="@headerClassList" data-autohide="true" data-imagebank-area="@isImageBankArea">892893 <div class="e-header-hamburger">894 @sectionStart( "e-header-section e-section", "col-12" )895 <div class="col-12 e-header-section-content">896 <div class="@logoClassList">897 @if ( isImageBankArea == false )898 {899 <a class="e-logo-link" href="/">900 <img src="@logoPrimary" class="e-logo-img e-logo-img-primary" alt="@Espresso.Area.Item.CompanyName">901 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary" alt="@Espresso.Area.Item.CompanyName">902 @if ( string.IsNullOrEmpty( tagline ) == false )903 {904 <p class="e-logo-tagline">@tagline</p>905 }906 </a>907 }908 else909 {910 <a class="e-logo-link" href="@logoLink">911 <img src="@logoPrimary" class="e-logo-img e-logo-img-primary" alt="@Espresso.Area.Item.CompanyName">912 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary" alt="@Espresso.Area.Item.CompanyName">913 @if ( string.IsNullOrEmpty( tagline ) == false )914 {915 <p class="e-logo-tagline">@tagline</p>916 }917 </a>918 }919920 </div>921 @if ( Espresso.Item.NavigationHide != "True" )922 {923 <section class="e-nav-hamburger-header">924 <ul class="nav">925 @navigationHtml[ "hamburger-header" ]926 @* TODO: Move to xslt *@927 <li class="e-nav-item-hamburger-open nav-item">928 <a class="nav-link" data-target=".modal.e-nav" data-toggle="modal" href="#">929 <i class="e-nav-pageicon material-icons">menu</i>930 @*<span class="e-nav-pagename">@Translate( "Header - Hamburger menu open - Button", "Menu" )</span>*@931 </a>932 </li>933 </ul>934 </section>935936937938939940 }941 @if ( Espresso.Item.BackButton == "True" )942 {943 <a class="@backButtonClassList" href="@backButtonLink">944 @if ( Espresso.Item.BackButtonIcon != "" )945 {946 <i class="@backButtonIconClassList">@Espresso.Item.BackButtonIcon</i>947 }948 @Espresso.Item.BackButtonText949 </a>950 }951 </div>952 @sectionEnd()953954955 @if ( streamerActive != "False" )956 {957 <section class="e-header-section e-section kabooki-seasonal-streamer" style="background-color: @streamerBackgroundColor;">958959 @if ( streamerLink == "" )960 {961 <div class="container-fluid">962 <div class="row">963 <div class="col-12">964 <div class="row">965 <div class="col-12 d-flex pt-1 pb-1 small @streamerTextColor" style="min-height: 2em;">966 @if ( streamerMarquee == "True" )967 {968 <marquee>@streamerMessage</marquee>969 }970 else971 {972 @streamerMessage973 }974 </div>975 </div>976 </div>977 </div>978 </div>979 }980 else981 {982 <a href="@streamerLink">983 <div class="container-fluid">984 <div class="row">985 <div class="col-12">986 <div class="row">987 <div class="col-12 d-flex pt-1 pb-1 small @streamerTextColor" style="min-height: 2em;">988 @if ( streamerMarquee == "True" )989 {990 <marquee>@streamerMessage</marquee>991 }992 else993 {994 @streamerMessage995 }996 </div>997 </div>998 </div>999 </div>1000 </div>1001 </a>1002 }1003 </section>1004 }10051006 </div>1007 <div class="e-nav js-e-nav modal p-0" data-backdrop="false">1008 <div class="e-nav-container navbar">10091010 @if ( !string.IsNullOrEmpty( Espresso.Area.Item.HeaderPageID ) && isImageBankArea == false )1011 {1012 @sectionStart( "e-header-section p-section e-section custom-USP-bar bg-light order-4", "col-12" )10131014 @RenderPageContent( int.Parse( Espresso.Area.Item.HeaderPageID ) )10151016 @sectionEnd()1017 }10181019 @if ( string.IsNullOrEmpty( navigationHtml[ "utilities-primary" ] ) == false && isImageBankArea == false )1020 {1021 @sectionStart( "e-header-section e-section order-3 order-lg-1", "col-12" )1022 @:<div class="col-12 e-header-section-content">1023 <nav class="e-nav-utilities-primary js-e-nav-utilities-primary">1024 <ul class="nav">1025 <li class="dropdown nav-item mr-auto">1026 <a href="@selectorCountries[ contextCountryCode ].domain?countrycode=@selectorCountries[ contextCountryCode ].countrycode.ToLower()&currencycode=@selectorCountries[ contextCountryCode ].currencycode.ToLower()" class="dropdown-toggle nav-link icon-flag-@selectorCountries[ contextCountryCode ].countrycode.ToLower() nav-utility-bg-light-gray " data-toggle="dropdown" data-collapse-toggle="true" data-collapse-target="#countries">1027 <i class="e-nav-pageicon e-nav-pageicon-language js-e-nav-pageicon-language"></i><span class="e-nav-pagename ">@selectorCountries[ contextCountryCode ].title</span><i class="material-icons e-nav-pageicon-dropdown ">keyboard_arrow_down</i>1028 </a>1029 <div class="dropdown-menu collapse" id="countries">1030 <ul class="nav">1031 @foreach ( KeyValuePair< string, dynamic > selectorCountry in selectorCountries )1032 {1033 if ( selectorCountry.Value.countrycode.ToLower() != contextCountryCode.ToLower() )1034 {1035 <li class="dropdown-item nav-item ">1036 <form action="@selectorCountry.Value.domain.ToLower()" method="post">1037 <input type="hidden" name="countrycode" value="@selectorCountry.Value.countrycode">1038 <input type="hidden" name="currencycode" value="@selectorCountry.Value.currencycode">1039 <input type="hidden" name="EcomOrderDeliveryCountry" value="@selectorCountry.Value.countrycode">1040 <input type="hidden" name="EcomOrderDeliveryCountryCode" value="@selectorCountry.Value.countrycode">1041 <input type="hidden" name="EcomOrderCustomerCountry" value="@selectorCountry.Value.countrycode">1042 <input type="hidden" name="EcomOrderCustomerCountryCode" value="@selectorCountry.Value.countrycode">1043 <button class="nav-link border-0 bg-transparent icon-flag-@selectorCountry.Value.countrycode.ToLower()" type="submit"><i class="e-nav-pageicon e-nav-pageicon-language js-e-nav-pageicon-language"></i><span class="e-nav-pagename">@selectorCountry.Value.title</span></button>1044 </form>1045 </li>1046 }1047 }1048 </ul>1049 </div>1050 </li>1051 @navigationHtml[ "utilities-primary" ]1052 </ul>1053 </nav>1054 @:</div>1055 @sectionEnd()1056 }10571058 @sectionStart( "e-header-section e-header-section-primary e-section order-2 order-lg-1", "col-12" )1059 <div class="col-12 e-header-section-content">10601061 @if ( isImageBankArea == false )1062 {1063 <div class="@logoClassList">1064 <a class="e-logo-link" href="/">1065 <img src="@logoPrimary" class="e-logo-img e-logo-img-primary" alt="@Espresso.Area.Item.CompanyName">1066 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary" alt="@Espresso.Area.Item.CompanyName">1067 @if ( string.IsNullOrEmpty( tagline ) == false )1068 {1069 <p class="e-logo-tagline">@tagline</p>1070 }1071 </a>1072 </div>1073 }1074 else1075 {1076 <div class="@logoClassList">1077 <a class="e-logo-link my-2 p-0" href="@logoLink">1078 <img src="@logoPrimary" class="e-logo-img e-logo-img-primary" alt="@Espresso.Area.Item.CompanyName">1079 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary" alt="@Espresso.Area.Item.CompanyName">1080 @if ( string.IsNullOrEmpty( tagline ) == false )1081 {1082 <p class="e-logo-tagline">@tagline</p>1083 }1084 </a>1085 </div>1086 }108710881089 @if ( Espresso.Item.NavigationHide != "True" )1090 {1091 <nav class="e-nav-global mx-auto js-e-nav-global">1092 <ul class="nav">1093 @navigationHtml[ "global" ]1094 </ul>1095 </nav>10961097 <div class="e-nav-item-hamburger-close">1098 <a class="nav-link" data-target=".modal.e-nav" data-toggle="modal" href="#">1099 <i class="e-nav-pageicon material-icons">close</i>1100 <span class="e-nav-pagename">@Translate( "Header - Hamburger menu close - Button", "Close" )</span>1101 </a>1102 </div>110311041105 if ( isImageBankArea == false )1106 {11071108 }11091110 if ( string.IsNullOrEmpty( navigationHtml[ "hamburger-aside" ] ) == false )1111 {1112 <nav class="e-nav-hamburger-aside">1113 <ul class="nav">1114 @navigationHtml[ "hamburger-aside" ]1115 </ul>1116 </nav>1117 }1118 }1119 @if ( Espresso.Item.BackButton == "True" )1120 {1121 <a class="@backButtonClassList" href="@backButtonLink">1122 @if ( Espresso.Item.BackButtonIcon != "" )1123 {1124 <i class="@backButtonIconClassList">@Espresso.Item.BackButtonIcon</i>1125 }1126 @Espresso.Item.BackButtonText1127 </a>1128 }1129 </div>1130 @sectionEnd()1131113211331134 @if ( isExtranet )1135 {1136 @sectionStart( "e-header-section e-section bg-light", "col-12" )1137 @:<div class="col-12 e-header-section-content kabooki-imagebank-bar">11381139 <p>1140 <i class="material-icons">lock_open</i> @Translate( "Header - Imagebank login - Intro", "Du er logget ind i vores" ) <a href="@imageBankLoginPage">@Translate( "Header - Imagebank login - Imagebank", "image bank" )</a>1141 </p>1142 <p>1143 <a class="btn" href="/Admin/Public/extranetlogoff.aspx">@Translate( "Header - Imagebank login - button", "Log ud" )</a>1144 </p>1145 @:</div>1146 @sectionEnd()1147 }114811491150 @if ( streamerActive != "False" )1151 {1152 <section class="e-header-section e-section kabooki-seasonal-streamer" style="background-color: @streamerBackgroundColor;">11531154 @if ( streamerLink == "" )1155 {1156 <div class="container-fluid">1157 <div class="row">1158 <div class="col-12">1159 <div class="row">1160 <div class="col-12 d-flex pt-1 pb-1 @streamerTextColor" style="min-height: 2em;">1161 @if ( streamerMarquee == "True" )1162 {1163 <marquee>@streamerMessage</marquee>1164 }1165 else1166 {1167 @streamerMessage1168 }1169 </div>1170 </div>1171 </div>1172 </div>1173 </div>1174 }1175 else1176 {1177 <a href="@streamerLink">1178 <div class="container-fluid">1179 <div class="row">1180 <div class="col-12">1181 <div class="row">1182 <div class="col-12 d-flex pt-1 pb-1 @streamerTextColor" style="min-height: 2em;">1183 @if ( streamerMarquee == "True" )1184 {1185 <marquee>@streamerMessage</marquee>1186 }1187 else1188 {1189 @streamerMessage1190 }1191 </div>1192 </div>1193 </div>1194 </div>1195 </div>1196 </a>1197 }1198 </section>1199 }12001201120212031204 </div>1205 </div>12061207 </header>1208 }12091210 @using Dynamicweb.Frontend1211 @using Dynamicweb.Security.UserManagement1212 @{1213 User currentUser = PageView.Current().User;1214 if ( currentUser != null )1215 {1216 User currentSecondaryUser = currentUser.CurrentSecondaryUser;1217 if ( currentSecondaryUser != null )1218 {1219 @sectionStart( "e-section bg-warning e-text-dark js-e-section is-sticky zi-fixed py-1", "col-12 small" )1220 <div class="align-self-center col-12 col-lg-9 col-md-8">1221 <p class="line-height-sm mb-1 mb-md-0 text-center text-md-left">1222 <i class="material-icons material-icons-2x">supervisor_account</i>&nbsp;@Translate( "Extranet Impersonation - Active impersonation message - Text", "You are currently impersonating this user:" ) <strong>@currentUser.Name &mdash; @currentUser.Company </strong>1223 </p>1224 </div>1225 <div class="align-self-center col-12 col-lg-3 col-md-4">1226 <form class="mb-0 small text-center text-md-right" method="post" action="@Espresso.Area.Item.ExtranetImpersonationPage">1227 <button class="btn btn-primary" name="DwExtranetRemoveSecondaryUser" type="submit">@Translate( "Extranet Impersonation - Stop impersonation - Button", "Stop impersonation" )</button>1228 </form>1229 </div>1230 @sectionEnd()1231 }1232 }1233 }123412351236 <main id="dwcontentmain" class="e-content js-e-content @Espresso.ContentArea.ClassList">1237 @using Dynamicweb.Content;1238 @using Dynamicweb.Extensibility;1239 @{1240 string eBreadcrumbClasslist = "e-breadcrumb js-e-breadcrumb d-none d-lg-block";1241 if ( Espresso.Item.Breadcrumb != "auto" && Espresso.Item.Breadcrumb != "none" && String.IsNullOrEmpty( Espresso.Item.Breadcrumb ) == false )1242 {1243 eBreadcrumbClasslist += string.Format( " e-breadcrumb-{0}", Espresso.Item.Breadcrumb );1244 }1245 string navigationHtmlBreadcrumb = RenderNavigation( new1246 {1247 id = "dwnav-breadcrumb",1248 template = "breadcrumb.xslt",1249 startlevel = 1,1250 endlevel = 10,1251 expandmode = "pathonly",1252 sitemapmode = true1253 } );1254 }12551256 @if ( string.IsNullOrEmpty( navigationHtmlBreadcrumb ) == false && Espresso.Item.Breadcrumb != "none" && string.IsNullOrEmpty( Espresso.Item.Breadcrumb ) == false )1257 {1258 <section class="e-section @eBreadcrumbClasslist">1259 <div class="container-fluid">1260 <div class="row">1261 <div class="col-12">1262 <div class="row">12631264 <div class="col-12">1265 <nav class="e-breadcrumb-container">1266 <ol class="breadcrumb nav">1267 <li class="breadcrumb-item m-0 p-0">1268 <a class="arrow-left breadcrumb-back-link js-e-back-link px-0" href="/">@Translate( "Breadcrumb - Back link", "Back" )</a>1269 <span class="breadcrumb-prefix-text">1270 @Translate( "Breadcrumb - Prefix - Text", "You are here:" )1271 </span>1272 <a href="/">1273 @ServiceLocator.Current.GetPageService().GetFirstPageForArea( GetInteger( "DwAreaID" ) ).MenuText1274 </a>1275 </li>1276 @navigationHtmlBreadcrumb1277 </ol>1278 </nav>1279 </div>12801281 </div>1282 </div>1283 </div>1284 </div>1285 </section>1286 }12871288 <article class="e-content-article">1289 @{1290 int NavigationLocalHorizontalParentPageId = 0;1291 if ( !string.IsNullOrEmpty( Espresso.Item.NavigationLocalParentPage ) )1292 {1293 int.TryParse( Espresso.Item.NavigationLocalParentPage, out NavigationLocalHorizontalParentPageId );1294 }1295 if ( NavigationLocalHorizontalParentPageId == 0 )1296 {1297 NavigationLocalHorizontalParentPageId = PageView.Current().Page.ID;1298 if ( !Dynamicweb.Services.Pages.GetPagesByParentID( NavigationLocalHorizontalParentPageId ).Any() )1299 {1300 NavigationLocalHorizontalParentPageId = PageView.Current().Page.ParentPageId;1301 }1302 }1303 string NavigationLocalHorizontalClassList = "e-nav-local e-nav-local-horizontal js-e-nav-local-horizontal";1304 string NavigationLocalHorizontalContainerClassList = "e-nav-local-container";1305 string NavigationLocalHorizontalTemplate = "local-" + Espresso.Item.NavigationLocalLayout + ".xslt";1306 if ( string.IsNullOrEmpty( Espresso.Item.NavigationLocalTemplate ) == false && Path.GetExtension( Espresso.Item.NavigationLocalTemplate ) == ".xslt" )1307 {1308 NavigationLocalHorizontalTemplate = Path.GetFileName( Espresso.Item.NavigationLocalTemplate );1309 }13101311 if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "horizontal" )1312 {1313 NavigationLocalHorizontalClassList += " " + Espresso.Item.NavigationLocalCustomClasses;1314 if ( Espresso.Item.NavigationLocalSticky == "True" )1315 {1316 NavigationLocalHorizontalClassList += " is-sticky";1317 }1318 if ( Espresso.Item.NavigationLocalAbsolute == "True" )1319 {1320 NavigationLocalHorizontalClassList += " is-absolute";1321 }1322 else1323 {1324 if ( Espresso.Item.NavigationLocalMarginTop != "0" && Espresso.Item.NavigationLocalMarginTop != "" )1325 {1326 NavigationLocalHorizontalClassList += " mt-" + Espresso.Item.NavigationLocalMarginTop;1327 }1328 if ( Espresso.Item.NavigationLocalMarginBottom != "0" && Espresso.Item.NavigationLocalMarginBottom != "" )1329 {1330 NavigationLocalHorizontalClassList += " mb-" + Espresso.Item.NavigationLocalMarginBottom;1331 }1332 }1333 }1334 }1335 @if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "horizontal" )1336 {1337 <section class="e-section @NavigationLocalHorizontalClassList">1338 <div class="container-fluid">1339 <div class="row">1340 <div class="col-12">1341 <div class="row">13421343 <div class="col-12">1344 <nav id="dwnav-local-horizontal-@NavigationLocalHorizontalParentPageId" class="@NavigationLocalHorizontalContainerClassList">1345 <ul class="justify-content-start nav">1346 @if ( Espresso.Item.NavigationLocalHeading != "" )1347 {1348 <li class="e-nav-local-heading">1349 <h2>@Espresso.Item.NavigationLocalHeading</h2>1350 </li>1351 }1352 @RenderNavigation( new1353 {1354 id = "dwnav-local-horizontal-" + NavigationLocalHorizontalParentPageId,1355 parentid = NavigationLocalHorizontalParentPageId,1356 template = NavigationLocalHorizontalTemplate,1357 startlevel = Espresso.Item.NavigationLocalLevelStart,1358 endlevel = Espresso.Item.NavigationLocalLevelEnd,1359 expandmode = Espresso.Item.NavigationLocalPageTreeExpand == "True" ? "all" : "path"1360 } )1361 </ul>1362 </nav>1363 </div>13641365 </div>1366 </div>1367 </div>1368 </div>1369 </section>1370 }137113721373 @{1374 int NavigationLocalVerticalParentPageId = 0;1375 if ( !string.IsNullOrEmpty( Espresso.Item.NavigationLocalParentPage ) )1376 {1377 int.TryParse( Espresso.Item.NavigationLocalParentPage, out NavigationLocalVerticalParentPageId );1378 }1379 if ( NavigationLocalVerticalParentPageId == 0 )1380 {1381 NavigationLocalVerticalParentPageId = PageView.Current().Page.ID;1382 if ( !Dynamicweb.Services.Pages.GetPagesByParentID( NavigationLocalVerticalParentPageId ).Any() )1383 {1384 NavigationLocalVerticalParentPageId = PageView.Current().Page.ParentPageId;1385 }1386 }13871388 string NavigationLocalVerticalClassList = "e-nav-local e-nav-local-vertical js-e-nav-local-vertical";1389 string NavigationLocalVerticalContainerClassList = "e-nav-local-container";1390 string NavigationLocalVerticalTemplate = "local-" + Espresso.Item.NavigationLocalLayout + ".xslt";1391 if ( string.IsNullOrEmpty( Espresso.Item.NavigationLocalTemplate ) == false && Path.GetExtension( Espresso.Item.NavigationLocalTemplate ) == ".xslt" )1392 {1393 NavigationLocalVerticalTemplate = Path.GetFileName( Espresso.Item.NavigationLocalTemplate );1394 }13951396 if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "vertical" )1397 {1398 NavigationLocalVerticalClassList += " " + Espresso.Item.NavigationLocalCustomClasses;13991400 if ( Espresso.Item.NavigationLocalMarginTop != "0" && Espresso.Item.NavigationLocalMarginTop != "" )1401 {1402 NavigationLocalVerticalClassList += " mt-" + Espresso.Item.NavigationLocalMarginTop;1403 }1404 if ( Espresso.Item.NavigationLocalMarginBottom != "0" && Espresso.Item.NavigationLocalMarginBottom != "" )1405 {1406 NavigationLocalVerticalClassList += " mb-" + Espresso.Item.NavigationLocalMarginBottom;1407 }14081409 if ( Espresso.Item.NavigationLocalSticky == "True" )1410 {1411 NavigationLocalVerticalClassList += " is-sticky";1412 }14131414 if ( Espresso.Item.NavigationLocalAbsolute == "True" )1415 {1416 NavigationLocalVerticalClassList += " is-absolute";1417 }1418 else1419 {1420 Espresso.ContentSection.ClassList.Clear();1421 Espresso.ContentSection.ClassList.AddClasses( "wtf col-12 col-lg-9 ml-auto" );1422 }1423 }1424 }14251426 @if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "vertical" )1427 {1428 <section class="e-section @NavigationLocalVerticalClassList">1429 <div class="container-fluid">1430 <div class="row">1431 <div class="col-12">1432 <div class="row">14331434 <div class="col-3">1435 <nav id="dwnav-local-@NavigationLocalVerticalParentPageId" class="@NavigationLocalVerticalContainerClassList">1436 <ul class="flex-column nav">1437 @if ( Espresso.Item.NavigationLocalHeading != "" )1438 {1439 <li class="e-nav-local-heading">1440 <h2>@Espresso.Item.NavigationLocalHeading</h2>1441 </li>1442 }1443 @RenderNavigation( new1444 {1445 id = "dwnav-local-" + NavigationLocalVerticalParentPageId,1446 parentid = NavigationLocalVerticalParentPageId,1447 template = NavigationLocalVerticalTemplate,1448 startlevel = Espresso.Item.NavigationLocalLevelStart,1449 endlevel = Espresso.Item.NavigationLocalLevelEnd,1450 expandmode = Espresso.Item.NavigationLocalPageTreeExpand == "True" ? "all" : "path",1451 } )1452 </ul>1453 </nav>1454 </div>14551456 </div>1457 </div>1458 </div>1459 </div>1460 </section>1461 }146214631464 @sectionStart()1465 @GetValue("DwContent(dwcontentmain)")1466 @sectionEnd()1467 </article>1468 </main>1469 @using Dynamicweb.Frontend1470 @{1471 string FooterContentClassList = "e-footer-content e-section";1472 }1473 @if ( Espresso.Item.FooterHide != "True" )1474 {1475 <footer class="e-footer">1476 <article class="e-footer-wrapper">1477 <section class="@FooterContentClassList">1478 <div class="container-fluid">1479 <div class="row">1480 @if ( !string.IsNullOrEmpty( Espresso.Area.Item.FooterPageId ) )1481 {1482 @RenderPageContent( int.Parse( Espresso.Area.Item.FooterPageId ) )1483 }1484 @*1485 @if ( string.IsNullOrEmpty( GetString( "DwNavigation(dwnavutilitiessecondaryfooter)" ) ) == false )1486 {1487 <div class="col-12">1488 <aside class="e-nav-utilities-secondary">1489 <ul class="nav nav-inline">1490 @GetValue("DwNavigation(dwnavutilitiessecondaryfooter)")1491 </ul>1492 </aside>1493 </div>1494 }*@1495 </div>1496 </div>1497 </section>1498 <section class="e-footer-copyright e-section">1499 <div class="container-fluid">1500 <div class="align-items-center row">1501 <div class="col-12 col-sm-9">1502 <p class="e-copyright">1503 &copy; @DateTime.Now.Year.ToString()&nbsp;1504 @Translate( "Footer - Copyright - Text", "Copyright &copy;" )&nbsp;15051506 &nbsp;@Translate( "Footer - All Rights Reserved - Text", "All rights reserved." )1507 </p>1508 </div>1509 @if ( isImageBankArea == false )1510 {1511 string creditcardImage = "creditcards_DK.svg";1512 if ( areaID == 25 )1513 {1514 creditcardImage = "creditcards_EN.svg";1515 }1516 if ( areaID == 27 )1517 {1518 creditcardImage = "creditcards_DE.svg";1519 }1520 <div class="col-12 col-sm-3 text-left text-sm-right custom-creditcards-wrapper">1521 <img class="custom-creditcards" src="/Files/Templates/Designs/legowear/_assets/img/@creditcardImage" alt="">1522 </div>1523 }1524 </div>1525 </div>1526 </section>1527 </article>1528 </footer>1529 }15301531 @if( string.IsNullOrEmpty( GetString("DwContent(dwcontentcta)") ) == false ) {1532 <aside id="dwcontentcta" class="js-e-cta e-cta is-hidden fixed-top">1533 <section class="e-section">1534 <div class="container-fluid">1535 <div class="row no-gutters">1536 <div class="col-12">1537 <div class="row no-gutters justify-content-center align-items-center">1538 @GetValue("DwContent(dwcontentcta)")1539 @* <p><a class="d-flex align-items-center justify-content-center justify-content-lg-left text-black text-decoration-none small" href="/bliv-ringet-op"><i class="material-icons material-icons-large text-primary mr-1">phone</i>Bliv ringet op</a></p> *@1540 </div>1541 </div>1542 </div>1543 </div>1544 </section>1545 </aside>1546 }15471548 <div class="e-cart-msg modal fade small" id="js-e-cart-msg" data-backdrop="false"><div class="modal-dialog e-cart-msg-modal-dialog"><div class="modal-content"><div class="modal-header"><h4 class="js-e-cart-msg-heading modal-title"><i class="material-icons material-icons-large text-success">check_circle</i><span>@Translate( "eCom Cart - Product Added - Heading", "Added to your cart" )</span></h4><button class="close" data-dismiss="modal" type="button"><i class="material-icons">close</i></button></div><div class="modal-body"><div class="js-e-cart-msg-content"><script id="js-e-handlebars-tmpl-cart-msg-lastadded" type="text/x-handlebars-template"><div class="row">{{#each cart.lastAdded}}<div class="col-12 py-1"><div class="row"><div class="col-4"><a class="" href="{{url}}"><img alt="" class="img-fluid" src="{{alternativeImage}}"></a></div><div class="col-8"><h3 class="mb-0"><a href="{{url}}" class="text-decoration-none">{{name}} {{#if hasTypeRO}}<span>{{typeRO}}</span>{{/if}}</a></h3><p class="mb-0 text-muted">{{variantText}}</p><p class="mb-0"><a href="{{url}}" class="text-auto text-decoration-none">{{{cartMsgPrice}}}<br>{{{stock.text}}}<br>{{{stock.delivery}}}<br></a></p></div></div></div>{{/each}}</div></script></div></div><div class="bg-info e-cart-msg-footer modal-footer border-top-0"><a class="btn btn-secondary mr-1" href="/shop/cart" data-dismiss="modal">@Translate( "eCom Cart - Continue Shopping - Button", "Continue shopping" )</a><a class="arrow-right btn btn-primary" href="/shop/cart">@Translate( "eCom Cart - Checkout - Button", "Checkout" )</a></div></div></div></div>1549 @using Dynamicweb.Frontend1550 @{1551 string ecomOrderDeliveryCountry = HttpContext.Current.Request.Form[ "EcomOrderDeliveryCountry" ];1552 bool modalDeliveryCountryFormPosted = !string.IsNullOrEmpty(ecomOrderDeliveryCountry);1553 string currentDomain = "//" + PageView.GetAreaByDomain().DomainLock + "/";1554 string currentUrl = PageView.Current().SearchFriendlyUrl;1555 string formAction = "";1556 }15571558 <!-- Modal -->1559 <div class="modal fade js-modal-deliverycountry" data-form-posted="@modalDeliveryCountryFormPosted" data-param-ecomorderdeliverycountry="@ecomOrderDeliveryCountry" id="modalDeliveryCountry" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">1560 <div class="modal-dialog" role="document">1561 <div class="modal-content">1562 <div class="modal-body">1563 <div class="" id="countries">1564 <h3 class="text-center mb-0 text-uppercase">@Translate( "global Modal - Langauge select - Heading", "Select your country" )</h3>1565 <p class="text-center mb-2">@Translate( "global Modal - Langauge select - Text", "So we can easily deliver to you" )</p>1566 <div class="e-nav-utilities-primary kabooki-custom-language-select">15671568 @foreach (KeyValuePair<string, dynamic> selectorCountry in selectorCountries)1569 {1570 if (selectorCountry.Value.domain.ToLower() == currentDomain)1571 {1572 formAction = currentUrl;1573 }1574 else1575 {1576 formAction = selectorCountry.Value.domain.ToLower();1577 }1578 <div>1579 <form action="@formAction" method="post">1580 <input type="hidden" name="countrycode" value="@selectorCountry.Value.countrycode">1581 <input type="hidden" name="currencycode" value="@selectorCountry.Value.currencycode">1582 <input type="hidden" name="EcomOrderDeliveryCountry" value="@selectorCountry.Value.countrycode">1583 <input type="hidden" name="EcomOrderDeliveryCountryCode" value="@selectorCountry.Value.countrycode">1584 <input type="hidden" name="EcomOrderCustomerCountry" value="@selectorCountry.Value.countrycode">1585 <input type="hidden" name="EcomOrderCustomerCountryCode" value="@selectorCountry.Value.countrycode">1586 <button class="nav-link border-0 bg-transparent icon-flag-@selectorCountry.Value.countrycode.ToLower()" type="submit">1587 <i class="e-nav-pageicon e-nav-pageicon-language js-e-nav-pageicon-language"></i><span class="e-nav-pagename">@selectorCountry.Value.title</span>1588 </button>1589 </form>1590 </div>1591 }1592 </div>1593 </div>1594 </div>1595 </div>1596 </div>1597 </div>15981599 </div>16001601 @using Co3.Espresso.Base.Extensions1602 @using Co3.Espresso.Website.Services1603 <div class="modal fade e-search js-e-search js-e-search-modal modal-fullscreen" data-backdrop="false" data-keyboard="true" data-focus="true">1604 <div class="modal-dialog">1605 <div class="modal-content">16061607 <div class="modal-header">1608 <a class="btn btn-sm btn-secondary js-e-back-link arrow-left" href="/" data-dismiss="modal">1609 @Translate("Search - Back button", "Back")1610 </a>1611 <div class="e-logo">1612 <a href="/" class="e-logo-link my-0">1613 <img src="@logoPrimary" class="e-logo-img e-logo-img-primary" alt="@Espresso.Area.Item.CompanyName">1614 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary" alt="@Espresso.Area.Item.CompanyName">1615 </a>1616 </div>1617 </div>16181619 <div class="modal-body">16201621 <div class="container-fluid">16221623 <div class="e-search-form-container">1624 <div class="row justify-content-center">1625 <div class="col-12 col-md-10 col-lg-8 col-xl-6 mt-3">1626 <form action="" class="e-search-form js-e-search-form">1627 <div class="js-e-search-input-group e-search-input-group is-empty">1628 <label class="e-search-label" for="e-search-input"><span class="search-custom-search-icon"></span></label>1629 @{ string Translate_Search_InputText = Translate("Search - Input Placeholder - Text", "Search"); }1630 <input type="text" class="js-e-search-input e-search-input form-control-plaintext border-0" name="q" id="e-search-input" placeholder="@Translate_Search_InputText">1631 <span class="js-e-search-clear e-search-clear"><i class="material-icons">close</i></span>1632 <button class="e-search-submit btn btn-primary" type="submit"><span class="search-custom-search-icon white"></span></button>1633 </div>1634 </form>1635 </div>1636 </div>1637 </div>16381639 <div class="js-e-search-result-container e-search-result-container">16401641 <div class="row justify-content-center">1642 <div class="col-12 col-md-10 col-lg-8 col-xl-6">1643 <p class="e-search-result-info small text-muted mt-1 mb-3"><span class="js-e-search-result-count">0</span> @Translate("Search - Result Count - Text", "results")</p>1644 </div>1645 </div>16461647 <div class="row justify-content-center">1648 <div class="col-12 col-xl-10">1649 <div class="js-e-search-result-products e-search-result-products is-empty mb-4">1650 @{string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth( null ).ToResponsiveClasses();}1651 <script id="js-e-handlebars-tmpl-search-result-item-product" type="text/x-handlebars-template">1652 <div class="e-products">1653 <div class="row justify-content-center">1654 {{#each products}}1655 <div class="@productlistItemClassList"">1656 <div class="e-products-item js-e-products-item js-e-products-item-{{id}} js-e-block-link e-block-link" data-variant-id="{{variantId}}" style="background-image:url('{{imageLarge}}'); background-position:center; background-size: cover;">1657 <div class="e-products-item-container">1658 <div class="e-products-item-image-container">1659 <a class="e-products-item-image-wrapper" href="{{{url}}}">1660 @*<img src="{{{imageLarge}}}" alt="" class="e-products-item-image">*@1661 {{#if hasDiscount}}1662 <img src="/Files/Images/kabooki/system/lego_wear_badge_percentage.svg" alt="" class="custom-products-item-badge">1663 {{/if}}1664 </a>1665 </div>1666 </div>1667 </div>16681669 <div class="e-products-item-text-container text-left small mb-2">1670 <h3 class="e-products-item-name mb-0 mt-0">1671 <a href="{{{url}}}">{{name}} {{#if hasTypeRO}}<span>{{typeRO}}</span>{{/if}}</a>1672 </h3>1673 <p class="e-products-item-text mb-0">1674 <span class="e-products-item-price">1675 <a href="{{{url}}}">1676 {{{price}}}1677 {{#if hasDiscount}}1678 <span class="custom-products-item-beforeprice">{{{priceBefore}}}</span>1679 {{/if}}1680 </a>1681 </span>1682 </p>1683 </div>16841685 </div>1686 {{/each}}1687 </div>1688 <p class="js-e-search-products-show-all text-center"><a href="" class="btn btn-secondary px-6">@Translate( "Search - View All Products - Button", "View All Products" )</a></p>1689 </div>1690 </script>1691 </div>1692 </div>1693 </div>16941695 <div class="row justify-content-center">1696 <div class="col-12 col-md-10 col-lg-8 col-xl-6">1697 <div class="js-e-search-result-pages e-search-result-pages is-empty mb-3">1698 <script id="js-e-handlebars-tmpl-search-result-item-page" type="text/x-handlebars-template">1699 <div class="row">1700 {{#each pages}}1701 <div class="col-12">1702 <p class="mb-0"><a href="{{{url}}}" class="text-bold">{{{title}}}</a></p>1703 <p class="mb-0 small text-truncate">1704 <a href="{{{url}}}" class="text-auto text-muted text-decoration-none"><span class="d-none d-sm-inline">@HttpContext.Current.Request.Url.Host</span>{{{url}}}</a></p>1705 <p class="small">{{{text}}}...</p>1706 </div>1707 {{/each}}1708 </div>1709 </script>1710 </div>1711 </div>1712 </div>17131714 <div class="js-e-search-loading-overlay e-loading-overlay e-search-loading-overlay">1715 <div class="e-loading-spinner"></div>1716 </div>17171718 </div>17191720 </div>1721 </div>1722 </div>1723 </div>1724 </div>17251726 @if( Espresso.Area.Item.BackToTopLink == "True" ){1727 <a href="#top" class="e-back-to-top js-e-back-to-top"><i class="material-icons">keyboard_arrow_up</i></a>1728 }172917301731 @*1732 @using System.Web;1733 @inherits Co3.Espresso.Website.TemplateBases.Pages.PageBase17341735 @{1736 HttpCookie optInLevel = HttpContext.Current.Request.Cookies[ "Dynamicweb.CookieOptInLevel" ];1737 bool showCookieWarning = optInLevel == null;1738 if ( optInLevel != null )1739 {1740 showCookieWarning = optInLevel.Value != "2";1741 }1742 }17431744 @if ( showCookieWarning )1745 {1746 <div class="e-cookie js-e-cookie py-1" hidden="">1747 <aside class="e-cookie-wrapper">1748 <section class="e-section">1749 <div class="container-fluid">1750 <div class="align-items-center row">1751 <div class="col-12 col-lg-10 col-md-9 my-1">1752 <p class="line-height-sm mb-0 small text-center text-md-left">1753 <span class="d-md-inline d-none">1754 @Translate( "Cookie Warning - Message Long - Text", "This website uses cookies to provide necessary site functionality and improve your experience. By using our website, you agree to our" )1755 </span>1756 <span class="d-md-none">1757 @Translate( "Cookie Warning - Message Short - Text", "This website uses cookies to improve your experience. Learn more about our" )1758 </span>1759 &nbsp;1760 <a href="@Espresso.Area.Item.CookieMessage">@Translate( "Cookie Warning - Policy - Link", "cookie policy" )</a>1761 </p>1762 </div>1763 <div class="col-12 col-lg-2 col-md-3 my-1">1764 <p class="mb-0 text-center text-md-right">1765 <button class="btn e-cookie-accept-btn js-e-cookie-accept-btn" type="button">1766 @Translate( "Cookie Warning - Accept - Button", "OKAY" )1767 </button>1768 </p>1769 </div>1770 </div>1771 </div>1772 </section>1773 </aside>1774 </div>1775 }17761777 @if ( 1 == 2 )1778 {1779 @GetValue( "DwCookieWarning" )1780 }17811782 *@178317841785 <script async="" src="/Files/Templates/Designs/kabooki-shop/_assets/_dist/js/default.js?v=1.2.3"></script>17861787 @*<script type="text/javascript">var _lf_popup='00f7213ba4f7722d2117fd8747b47663';"undefined"!=typeof window.lf_popup_runtime?-1===window.lf_popup_runtime.indexOf(_lf_popup)&&window.lf_popup_runtime.push(_lf_popup):window.lf_popup_runtime=[_lf_popup],function(e,d,t){var i,o=e.getElementsByTagName(d)[0];e.getElementById(t)||(i=e.createElement(d),i.id=t,i.async=true,i.src="https://zone-1.cdn.leadfamly.com/campaign/sdk/popup.min.js",o.parentNode.insertBefore(i,o))}(document,"script","lf-popup");</script>*@17881789 <script type="text/javascript">var _lf_popup='00f7213ba4f7722d2117fd8747b47663';"undefined"!=typeof window.lf_popup_runtime?-1===window.lf_popup_runtime.indexOf(_lf_popup)&&window.lf_popup_runtime.push(_lf_popup):window.lf_popup_runtime=[_lf_popup],function(e,d,t){var i,o=e.getElementsByTagName(d)[0];e.getElementById(t)||(i=e.createElement(d),i.id=t,i.async=true,i.src="https://zone-1.cdn.leadfamly.com/campaign/sdk/popup.min.js",o.parentNode.insertBefore(i,o))}(document,"script","lf-popup");</script>1790 </body>17911792 @GetValue( "CopyRightNotice" )1793 </html>1794