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_5fbf7e8acb7d403e864f353a387af380.Execute() in E:\Dynamicweb.NET\Solutions\kabooki.espresso4.dk\files\Templates\Designs\kabooki-shop\_parsed\espresso.parsed.cshtml:line 1475at 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 string addWordsId = "" + PageView.Current().Area.Item["AdWordsScriptID"]; 28 if ( GetGlobalValue( "Global:Pageview.Url" ).IndexOf( "?" ) > -1 ) 29 { 30 globalValueUrl = GetGlobalValue( "Global:Pageview.Url" ).Substring( 0, GetGlobalValue( "Global:Pageview.Url" ).IndexOf( "?" ) ); 31 } 32 } 33 <!DOCTYPE html> 34 <html lang="@globalAreaLang" data-separator-integer="@currencySeparatorInteger" data-separator-decimal="@currencySeparatorDecimal"> 35 <head> 36 <!-- TEST --> 37 <script id="CookieConsent" src="https://policy.app.cookieinformation.com/uc.js" data-culture="@globalAreaLang" type="text/javascript"></script> 38 @GetValue( "CopyRightNotice" ) 39 <meta charset="utf-8"> 40 <meta content="width=device-width, initial-scale=1, shrink-to-fit=no, minimal-ui" name="viewport"> 41 <meta content="ie=edge" http-equiv="x-ua-compatible"> 42 @Espresso.CriticalCSS 43 @if ( webfontsSnippetHtml != "<!--@Snippet(webfonts)-->" ) 44 { 45 @webfontsSnippetHtml 46 } 47 <link href="/Files/Templates/Designs/kabooki-shop/_assets/_dist/css/default.css?v=1.1.2" media="@Espresso.StylesheetAttributeMedia" rel="@Espresso.StylesheetAttributeRel" as="style"> 48 @Espresso.CriticalJS 49 50 <link rel="shortcut icon" href="@Espresso.Area.Item.Favicon"> 51 @GetValue( "MetaTags" ) 52 @if ( Espresso.IsStagingUrl ) 53 { 54 <meta content="noindex,nofollow" name="robots"> 55 } 56 <meta property="og:url" content="@openGraphUrl"> 57 @if ( isProductPage ) 58 { 59 <link rel="canonical" href="@eComCanonicalSnippetTag"> 60 } 61 else 62 { 63 <title>@GetValue("Title")</title> 64 @GetValue("MetaTags") 65 @GetValue("CopyRightNotice") 66 67 68 69 if ( string.IsNullOrEmpty( pageCanonical ) == true ) 70 { 71 if ( GetString( "DwPageID" ) == GetString( "DwAreaFirstPageID" ) ) 72 { 73 <link rel="canonical" href="/"> 74 } 75 else 76 { 77 <link rel="canonical" href="@canonicalPageView"> 78 } 79 } 80 else 81 { 82 <link rel="canonical" href="@pageCanonical"> 83 } 84 } 85 86 @if ( isProductPage ) 87 { 88 @RenderSnippet( "productSpecificData" ) 89 } 90 else 91 { 92 if ( !string.IsNullOrEmpty( Espresso.OpenGraphTitle ) ) 93 { 94 <meta property="og:title" content="@Espresso.OpenGraphTitle"> 95 } 96 else 97 { 98 <meta property="og:title" content="@Espresso.DynamicwebPage.MetaTitle"> 99 }100101 if ( !string.IsNullOrEmpty( Espresso.OpenGraphDescription ) )102 {103 <meta property="og:description" content="@Espresso.OpenGraphDescription">104 }105 else106 {107 <meta property="og:description" content="@Espresso.DynamicwebPage.Description">108 }109 <meta property="og:image" content="@openGraphImage">110 <meta property="og:type" content="website">111 }112 @*<meta property="og:title" content="@Espresso.OpenGraphTitle">113 <meta property="og:description" content="@Espresso.OpenGraphDescription">114 <meta property="og:image" content="@openGraphImage">115 <meta property="og:type" content="website">*@116 @if ( string.IsNullOrEmpty( Espresso.Area.Item.GoogleSiteVerification ) == false )117 {118 <meta name="google-site-verification" content="@Espresso.Area.Item.GoogleSiteVerification">119 }120 @{121 if ( 1 == 2 )122 {123 @GetValue( "Stylesheets" )124 }125 }126127 @if ( GetString( "LongLang" ) == "da-DK" )128 {129 <script id="CookieConsent" src="https://policy.app.cookieinformation.com/uc.js" data-culture="DA" type="text/javascript"></script>130 <meta name="facebook-domain-verification" content="ucyk8feccxtvf93mlymvsp30hx7vmh">131 }132133 @if ( GetString( "LongLang" ) == "en-GB" )134 {135 <script id="CookieConsent" src="https://policy.app.cookieinformation.com/uc.js" data-culture="EN" type="text/javascript"></script>136 <meta name="facebook-domain-verification" content="xeo4pn8t7z8im5viijklcth2nyk9sb">137 }138139 @if ( GetString( "LongLang" ) == "de-DE" )140 {141 <meta name="facebook-domain-verification" content="ecng27y061tl8ntstvqm15v4ew2jty">142 }143144 @if ( string.IsNullOrEmpty( Espresso.Area.GoogleTagManagerID ) == false && Espresso.Area.GoogleTagManagerID != "GTM-XXXX" )145 {146 <!-- Google Tag Manager -->147 string gtmDomain = PageView.Current().Area.DomainLock?.Replace("www", "https://gtm");148149 <script>150 (function(w, d, s, l, i) {151 w[l] = w[l] || [];152 w[l].push({153 'gtm.start':154 new Date().getTime(),155 event: 'gtm.js'156 });157 var f = d.getElementsByTagName(s)[0],158 j = d.createElement(s),159 dl = l != 'dataLayer' ? '&l=' + l : '';160 j.async = true;161 j.src =162 '@(gtmDomain)/gtm.js?id=' + i + dl;163 f.parentNode.insertBefore(j, f);164 })(window, document, 'script', 'dataLayer', '@Espresso.Area.GoogleTagManagerID');165 </script>166 <!-- End Google Tag Manager -->167 }168169 @if (!string.IsNullOrEmpty(ga4scriptId))170 {171 <!-- Google tag (gtag.js) -->172 <script async="" src="https://www.googletagmanager.com/gtag/js?id=@ga4scriptId"></script>173 <script>174 window.dataLayer = window.dataLayer || [];175 function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '@( ga4scriptId )');176 </script>177 }178 @if (!string.IsNullOrEmpty(addWordsId))179 {180 <!-- AdWords tag -->181 <script async="" src="https://www.googletagmanager.com/gtag/js?id=@addWordsId"></script>182 <script>183 window.dataLayer = window.dataLayer || [];184 function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '@( addWordsId )');185 </script>186 }187188 <!-- Meta Pixel Code -->189 <script>190 !function(f,b,e,v,n,t,s)191 {if(f.fbq)return;n=f.fbq=function(){n.callMethod?192 n.callMethod.apply(n,arguments):n.queue.push(arguments)};193 if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';194 n.queue=[];t=b.createElement(e);t.async=!0;195 t.src=v;s=b.getElementsByTagName(e)[0];196 s.parentNode.insertBefore(t,s)}(window, document,'script',197 'https://connect.facebook.net/en_US/fbevents.js');198 fbq('init', '628783555831575');199 fbq('track', 'PageView');200 </script>201 <noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1020600119298148&ev=PageView&noscript=1"></noscript>202 <!-- End Meta Pixel Code -->203204 <!--Pinterest-->205 <meta name="p:domain_verify" content="1e670d58c7f2c96a569cc4b2eb6e3efe">206207 @GetValue("Stylesheets")208 @GetValue("Javascripts")209 </head>210211 <body class="@Espresso.Item.CustomClasses" data-userauthenticated="@isUserAuthenticated.ToString().ToLower()" data-imagebank-area="@isImageBankArea.ToString().ToLower()">212 @if ( string.IsNullOrEmpty( Espresso.Area.GoogleTagManagerID ) == false && Espresso.Area.GoogleTagManagerID != "GTM-XXXX" )213 {214 <!-- Google Tag Manager (noscript) -->215 <noscript>216 <iframe src="https://www.googletagmanager.com/ns.html?id=@Espresso.Area.GoogleTagManagerID" height="0" width="0" style="display: none; visibility: hidden"></iframe>217 </noscript>218 <!-- End Google Tag Manager (noscript) -->219 }220221 @using Dynamicweb.Ecommerce.Common222 @inherits Co3.Espresso.Website.TemplateBases.Pages.PageBase223 @{224 Espresso.Canvas.ClassList.AddClasses( "js-e-canvas is-loading" );225 if ( Espresso.Item.CanvasFullscreen == "True" )226 {227 Espresso.Canvas.ClassList.AddClasses( "is-fullscreen" );228 }229230 string daDomain = "//www.kabooki.dk/";231 string enDomain = "//www.kabooki.com/";232 string deDomain = "//www.kabooki.de/";233234 string contextCountryCode = Context.Country.Code2;235236 contextCountryCode = contextCountryCode == "GB" ? "IE" : contextCountryCode;237238 if ( Context.Cart != null )239 {240 if ( !string.IsNullOrEmpty( Context.Cart.DeliveryCountryCode ) )241 {242 contextCountryCode = Context.Cart.DeliveryCountryCode;243 }244 }245246 Dictionary< string, dynamic > selectorCountries = new Dictionary< string, dynamic >247 {248 {249 "DK", new250 {251 domain = daDomain,252 title = "Denmark",253 countrycode = "DK",254 currencycode = "DKK"255 }256 },257 {258 "SE", new259 {260 domain = daDomain,261 title = "Sweden",262 countrycode = "SE",263 currencycode = "SEK"264 }265 },266 {267 "IE", new268 {269 domain = enDomain,270 title = "Ireland",271 countrycode = "IE",272 currencycode = "EUR"273 }274 },275 {276 "FI", new277 {278 domain = enDomain,279 title = "Finland",280 countrycode = "FI",281 currencycode = "EUR"282 }283 },284 {285 "FR", new286 {287 domain = enDomain,288 title = "France",289 countrycode = "FR",290 currencycode = "EUR"291 }292 },293 {294 "PT", new295 {296 domain = enDomain,297 title = "Portugal",298 countrycode = "PT",299 currencycode = "EUR"300 }301 },302 {303 "IT", new304 {305 domain = enDomain,306 title = "Italy",307 countrycode = "IT",308 currencycode = "EUR"309 }310 },311 {312 "ES", new313 {314 domain = enDomain,315 title = "Spain",316 countrycode = "ES",317 currencycode = "EUR"318 }319 },320 {321 "NL", new322 {323 domain = enDomain,324 title = "Netherlands",325 countrycode = "NL",326 currencycode = "EUR"327 }328 },329 {330 "BE", new331 {332 domain = enDomain,333 title = "Belgium",334 countrycode = "BE",335 currencycode = "EUR"336 }337 },338 {339 "DE", new340 {341 domain = deDomain,342 title = "Germany",343 countrycode = "DE",344 currencycode = "EUR"345 }346 },347 {348 "AT", new349 {350 domain = deDomain,351 title = "Austria",352 countrycode = "AT",353 currencycode = "EUR"354 }355 }356 };357 dynamic JSONcountrySelector = new358 {359 contextCountryCode = contextCountryCode,360 selectorCountries = selectorCountries361 };362 }363364365366 @using System.Globalization367 @using System.Security.Cryptography.X509Certificates368 @using Co3.Espresso.Base.Extensions369 @using Co3.Espresso.Website.Models.FrontEnd370 @using Co3.Espresso.Website.Services371 @using Dynamicweb.Content372 @using Dynamicweb.Ecommerce.Stocks373 @using Dynamicweb.Frontend374 @using Dynamicweb.Rendering375 @using EcomContext = Dynamicweb.Ecommerce.Common.Context376 @using System.Web377 @using EspressoProductService = Co3.Espresso.Website.Services.ProductService378 @using Co3.Kabooki.Dw.Models379 @using Co3.Espresso.Website.Models.FrontEnd.Elements380 @using Dynamicweb.Rendering.Translation381382 @functions {383384 public string getCountryCodeFromArea( Area area )385 {386 RegionInfo regionInfo = new RegionInfo( area.CultureInfo.LCID );387 return regionInfo.TwoLetterISORegionName;388 }389390 public static string GetStandardCollapseToggleTextExpand()391 {392 return "Se mere";393 }394395 public static string GetStandardCollapseToggleTextCollapse()396 {397 return "Se mindre";398 }399400 public static string getProductlistItemImageColorDot( string variantColorImageName = "" )401 {402 string getImageSyntax = "/admin/public/getimage.ashx?Image={0}&Width=30&Height=140&Format=jpg&Quality=10&Crop=7&AlternativeImage={1}";403 string imagePath = string.Format( "/Files/Images/produkter/{0}_4.jpg", variantColorImageName );404 string altImagePath = string.Format( "/Files/Images/produkter/{0}_3.jpg", variantColorImageName );405 string image = string.Format( getImageSyntax, imagePath, altImagePath );406 return image;407 }408409 public static string getProductImageColorDot(string productNumber = "", string variantImageNumber = "" )410 {411 string getImageSyntax = "/admin/public/getimage.ashx?Image={0}&Width=80&Height=350&Format=jpg&Quality=10&Crop=7&AlternativeImage={1}";412 string imagePath = string.Format( "/Files/Images/produkter/{0}-{1}_4.jpg", productNumber, variantImageNumber );413 string altImagePath = string.Format( "/Files/Images/produkter/{0}-{1}_3.jpg", productNumber, variantImageNumber );414 string image = string.Format( getImageSyntax, imagePath, altImagePath );415 return image;416 }417418 public static string getKabookiProductImageColorDot(string productNumber = "", string variantImageNumber = "" )419 {420 //string getImageSyntax = "/admin/public/getimage.ashx?Image={0}&Width=200&Height=200&Format=jpg&Quality=10&Crop=3&AlternativeImage={1}";421 //string imagePath = string.Format( "/Files/Images/produkter/{0}-{1}_4.jpg", productNumber, variantImageNumber );422 //string altImagePath = string.Format( "/Files/Images/produkter/{0}-{1}_5.jpg", productNumber, variantImageNumber );423 string getImageSyntax = "/admin/public/getimage.ashx?Image={0}&Width=75&Format=jpg&Quality=10&Crop=0&AlternativeImage={1}";424 string imagePath = string.Format( "/Files/Images/produkter/{0}-{1}_01.jpg", productNumber, variantImageNumber );425 string altImagePath = imagePath;426 string image = string.Format( getImageSyntax, imagePath, altImagePath );427 return image;428 }429 }430431 @helper ProductDescription( string sectionClasses = "e-section", bool sectionCollapse = false, string contentClasses = null, string heading = null, string content = null, string collapseToggleTextExpand = null, string collapseToggleTextCollapse = null )432 {433 if ( string.IsNullOrEmpty( content ) == false )434 {435 ClassList headingClassList = new ClassList();436 headingClassList.AddClasses( "col-12" );437 ClassList contentClassList = new ClassList();438 contentClassList.AddClasses( "col-12" );439440 @sectionStart( sectionClasses: sectionClasses, sectionCollapse: sectionCollapse, contentClasses: contentClasses, collapseToggleTextCollapse: collapseToggleTextCollapse, collapseToggleTextExpand: collapseToggleTextExpand )441442 if ( string.IsNullOrEmpty( heading ) == false )443 {444 <div class="@headingClassList">445 <h2>@heading</h2>446 </div>447 }448 <div class="@contentClassList">449 @content450 </div>451452 @sectionEnd()453 }454 }455456457 @helper ProductVideo( string sectionClasses = "e-section", string contentClasses = null, string heading = null, string videoURL = null )458 {459 if ( string.IsNullOrEmpty( videoURL ) == false )460 {461 ClassList headingClassList = new ClassList();462 headingClassList.AddClasses( "col-12" );463 ClassList contentClassList = new ClassList();464 contentClassList.AddClasses( "col-12" );465466467 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )468469 if ( string.IsNullOrEmpty( heading ) == false )470 {471 <div class="@headingClassList">472 <h2>@heading</h2>473 </div>474 }475476 <div class="@contentClassList">477 <div class="embed-responsive embed-responsive-16by9 mb-2">478 <iframe class="embed-responsive-item" src="@videoURL" width="1080" height="608" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>479 </div>480 </div>481 @sectionEnd()482 }483 }484485 @helper ProductRelatedProducts( string sectionClasses = "e-section", string contentClasses = null, string heading = null,486 IEnumerable< RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem > productLoop = null )487 {488 if ( productLoop != null && productLoop.Any() == true )489 {490 ClassList headingClassList = new ClassList();491 headingClassList.AddClasses( "col-12" );492 ClassList contentClassList = new ClassList();493 contentClassList.AddClasses( "col-12" );494495 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )496497 if ( string.IsNullOrEmpty( heading ) == false )498 {499 <div class="@headingClassList">500 <h2 class="text-center">@heading</h2>501 </div>502 }503 <div class="@contentClassList">504 <div class="e-products mb-2">505 <div class="row">506 @{507 string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth( null ).ToResponsiveClasses();508 }509 @foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product in productLoop )510 {511 @ProductlistItem( product, productlistItemClassList )512 }513 </div>514 </div>515 </div>516517 @sectionEnd()518 }519 }520521 @helper ProductlistItem( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product, string productlistItemClassList = null )522 {523 if ( product != null )524 {525 Dynamicweb.Ecommerce.Products.Product dwProduct = Dynamicweb.Ecommerce.Services.Products.GetProductById( product.GetString( "Ecom:Product.ID" ), product.GetString( "Ecom:Product.VariantID" ), EcomContext.LanguageID, false );526527 ProductPriceInfo variantPriceInfo = Co3.Kabooki.Dw.Services.ProductService.Instance.GetProductPriceInfo( dwProduct );528 EspressoPrice espressoPrice = new EspressoPrice(variantPriceInfo.Price.PriceWithVAT);529 EspressoPrice espressoListPrice = new EspressoPrice(variantPriceInfo.ListPrice.PriceWithVAT);530 bool hasDiscount = variantPriceInfo.Price.PriceWithVAT < variantPriceInfo.ListPrice.PriceWithVAT;531532 dynamic colorVariantImages = new List< dynamic >();533 int colorVariantImagesCount = 0;534 foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem variantCombination in product.GetLoop( "VariantCombinations" ) )535 {536 string variantColorImageName = variantCombination.GetString( "Ecom:Product:Field.VariantImage.Value.Clean" );537 //string imagePath = ImageService.Instance.GetImageURL( string.Format( "/Files/Images/produkter/{0}_3.jpg", variantColorImageName ), 80, 80, 5, 10, "png" );538 string imagePath = getProductlistItemImageColorDot( variantColorImageName );539 if ( JsonService.Instance.ToJson( colorVariantImages ).ToString().Contains( imagePath ) == false )540 {541 colorVariantImages.Add( new542 {543 path = imagePath544 } );545 ++colorVariantImagesCount;546 }547 }548549 string imageLarge = string.Empty;550 List< RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem > alternativeImages = product.GetLoop( "Ecom:Product.AlternativeImages" ).ToList();551552 if (alternativeImages.Any())553 {554 if (alternativeImages.Any( ai => ai.GetString("Ecom:Product.AlternativeImages.Image").Contains("_15." )) )555 {556 imageLarge = alternativeImages?.FirstOrDefault( ai => ai.GetString("Ecom:Product.AlternativeImages.Image").Contains("_15." )).GetString("Ecom:Product.AlternativeImages.Image");557 }558559 if (string.IsNullOrEmpty(imageLarge) && alternativeImages.Any( ai => ai.GetString("Ecom:Product.AlternativeImages.Image").Contains("_03." )) )560 {561 imageLarge = alternativeImages?.FirstOrDefault( ai => ai.GetString("Ecom:Product.AlternativeImages.Image").Contains("_03." )).GetString("Ecom:Product.AlternativeImages.Image");562 }563564 if (string.IsNullOrEmpty(imageLarge) && alternativeImages.Any( ai => ai.GetString("Ecom:Product.AlternativeImages.Image").Contains("_01." )) )565 {566 imageLarge = alternativeImages?.FirstOrDefault( ai => ai.GetString("Ecom:Product.AlternativeImages.Image").Contains("_01." )).GetString("Ecom:Product.AlternativeImages.Image");567 }568 }569570 if ( string.IsNullOrEmpty(imageLarge) )571 {572 imageLarge = product.GetString( "Ecom:Product.ImageDefault.Default.Clean" );573 }574575 dynamic productData = new576 {577 id = product.GetString( "Ecom:Product.ID" ),578 variantId = product.GetString( "Ecom:Product.VariantID" ),579 url = ProductService.Instance.GetProductLink( product.GetString( "Ecom:Product.PrimaryOrFirstGroupID" ), product.GetString( "Ecom:Product.ID" ) ),580 number = product.GetString( "Ecom:Product.Number" ),581 name = ProductService.Instance.GetName( product.GetString( "Ecom:Product.ID" ), product.GetString( "Ecom:Product.VariantID" ) ),582 typeRO = product.GetString( "Ecom:Product:Field.ProducttypeRO.Value.Clean" ),583 imageLarge = ImageService.Instance.GetImageURL( imageLarge, 400, 400, 5, 10, "png" ),584 price = espressoPrice,585 beforePrice = espressoListPrice,586 descriptionShortExtra01 = product.GetString( "Ecom:Product:Field.DescriptionShortExtra01" ),587 hasDiscount = hasDiscount,588 stock = dwProduct.Stock,589 stockStatus = dwProduct.get_StockStatus(EcomContext.LanguageID),590 colorVariantImagesCount = colorVariantImagesCount,591 colorVariantImages = colorVariantImages592 };593594 string labelColor = Translation.GetTranslation( "eCom Product - Color - Text" );595 if ( productData.colorVariantImagesCount > 1 )596 {597 labelColor = Translation.GetTranslation( "eCom Product - Colors - Text" );598 }599600 if (PageView.Current().Layout.Design.Name == "kabooki-shop")601 {602603 <div class="@productlistItemClassList">604 <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;">605 <div class="e-products-item-container">606 <div class="e-products-item-image-container">607 <a class="e-products-item-image-wrapper" href="@productData.url">608 @*<img src="@productData.imageLarge" alt="" class="e-products-item-image">*@609 @if (productData.hasDiscount)610 {611 <img src="/Files/Images/kabooki/system/lego_wear_badge_percentage.svg" alt="" class="custom-products-item-badge">612 }613 </a>614 </div>615616 </div>617 </div>618 <div class="e-products-item-text-container text-left small">619 <h3 class="e-products-item-name mb-0 mt-0">620 <a href="@productData.url">@productData.name @if(productData.typeRO != "") {<span>- @productData.typeRO</span>}</a>621 </h3>622 <p class="e-products-item-text mb-4">623 <span class="e-products-item-price">624 <a href="@productData.url">625 @productData.price626 @if (productData.hasDiscount)627 {628 <span class="custom-products-item-beforeprice">@productData.beforePrice</span>629 }630 </a>631 </span>632 </p>633 </div>634 </div>635 }636 else637 {638 <div class="@productlistItemClassList">639 <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">640 <div class="e-products-item-container">641 <div class="e-products-item-image-container">642 <a class="e-products-item-image-wrapper" href="@productData.url">643 <img src="@productData.imageLarge" alt="" class="e-products-item-image">644 @if (productData.hasDiscount)645 {646 <img src="/Files/Images/kabooki/system/lego_wear_badge_percentage.svg" alt="" class="custom-products-item-badge">647 }648 </a>649 </div>650651 <div class="e-products-item-text-container text-left small">652 <div class="custom-color-options-wrapper">653 <div class="custom-color-options-text">654 <p class="m-0 p-0">@productData.colorVariantImagesCount @labelColor</p>655 </div>656 <div class="custom-color-options-colors">657 @foreach (dynamic colorVariantImage in colorVariantImages)658 {659 <span class="custom-color-dot" style="background-image: url('@colorVariantImage.path');"></span>660 }661662 </div>663 </div>664665 <h3 class="e-products-item-name mb-0 mt-0">666 <a href="@productData.url">@productData.name @if(productData.typeRO != "") {<span>@productData.typeRO</span>}</a>667 </h3>668 <p class="e-products-item-text mb-0">669 <span class="e-products-item-price">670 <a href="@productData.url">671 @productData.price672 @if (productData.hasDiscount)673 {674 <span class="custom-products-item-beforeprice">@productData.beforePrice</span>675 }676 </a>677 </span>678 </p>679 </div>680 </div>681 </div>682 </div>683 }684 }685 }686687688 @helper sectionStart( string sectionClasses = "e-section", string contentClasses = null, bool sectionCollapse = false, string sectionId = null, string collapseToggleTextExpand = null, string collapseToggleTextCollapse = null )689 {690 sectionId = string.IsNullOrEmpty( sectionId ) ? Guid.NewGuid().ToString( "N" ) : sectionId;691 ClassList sectionClassList = new ClassList();692 sectionClassList.AddClasses( sectionClasses );693 ClassList contentClassList;694695 if ( contentClasses == null )696 {697 contentClassList = Co3.Espresso.Website.Services.PageService.Instance.GetResponsiveClassesFromPageItem( PageView.Current().Page.Item );698 }699 else700 {701 contentClassList = new ClassList();702 contentClassList.AddClasses( contentClasses );703 }704705 // TODO: Split collapse logic into separate helper function.706 string collapseId = Guid.NewGuid().ToString( "N" );707 ClassList collapseToggleClassList = new ClassList();708 if ( sectionCollapse )709 {710 sectionClassList.AddClasses( "p-section-collapse js-p-section-collapse" );711 collapseToggleClassList.AddClasses( contentClasses );712 collapseToggleClassList.AddClasses( "p-section-collapse-toggle collapsed order-last text-center" );713 contentClassList.AddClasses( "p-section-collapse-content collapse is-md" );714 }715716 @:<section class="@sectionClassList" id="@sectionId">717 @:<div class="container-fluid">718 @:<div class="row">719720 // TODO: Split collapse logic into separate helper function.721 if ( sectionCollapse )722 {723 <div class="@collapseToggleClassList" data-toggle="collapse" data-target="#@collapseId">724 <button class="btn btn-primary p-section-collapse-toggle-btn" type="button">725 <i class="material-icons p-section-collapse-toggle-icon">keyboard_arrow_down</i>726 </button>727 <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>728 </div>729 }730731 @:<div class="@contentClassList" id="@collapseId">732 @:<div class="row">733 }734735 @helper sectionEnd()736 {737 @:</div>738 @:</div>739 @:</div>740 @:</div>741 @:</section>742 }743744745746747 <div class="e-loading-overlay e-page-loading-overlay is-loading js-e-page-loading-overlay">748 <div class="e-loading-spinner"></div>749 </div>750751752 @* https://medium.com/clio-calliope/making-google-fonts-faster-aadf3c02a36d *@753 @SnippetStart("webfonts")754 <link crossorigin="" href="https://fonts.gstatic.com/" rel="preconnect">755 <link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:400,700|Material+Icons" media="@Espresso.StylesheetAttributeMedia" rel="@Espresso.StylesheetAttributeRel" as="style">756 @SnippetEnd("webfonts")757758759760 <div class="@Espresso.Canvas.ClassList">761 @using System.Drawing762 @using Co3.Espresso.Website.Services763 @using Dynamicweb.Core764 @using Dynamicweb.Frontend;765 @using Dynamicweb.Ecommerce.Common766 @using Dynamicweb.Ecommerce.Orders767 @{768769 bool isExtranet = GetGlobalValue( "Global:Extranet.UserID" ) == "0" ? false : true;770 string imageBankLoginPage = Espresso.Area.Item.ImageBankLoginPage;771772 ClassList headerClassList = new ClassList();773 headerClassList.AddClasses( "e-header js-e-header is-sticky" );774 if ( Espresso.Item.HeaderTransparent == "True" )775 {776 headerClassList.AddClasses( "is-transparent" );777 }778779 ClassList logoClassList = new ClassList();780 logoClassList.AddClasses( "e-logo" );781782 string backButtonLink = Espresso.Item.BackButtonLink;783 ClassList backButtonClassList = new ClassList();784 ClassList backButtonIconClassList = new ClassList();785 if ( Espresso.Item.BackButton == "True" )786 {787 backButtonClassList.AddClasses( "btn btn-sm btn-secondary my-1 align-self-center" );788 if ( backButtonLink == "" || backButtonLink == "/" )789 {790 backButtonLink = "/";791 backButtonClassList.AddClasses( "js-e-back-link" );792 }793 backButtonIconClassList.AddClasses( "material-icons material-icons-large" );794 if ( Espresso.Item.BackButtonPosition == "right" )795 {796 backButtonClassList.AddClasses( "mr-0 ml-auto order-last" );797 logoClassList.AddClasses( "order-first" );798 }799 else800 {801 backButtonClassList.AddClasses( "order-first" );802 logoClassList.AddClasses( "mr-0 ml-auto order-last" );803 }804 if ( Espresso.Item.BackButtonIcon == "arrow_back" )805 {806 backButtonClassList.AddClasses( "arrow-left" );807 backButtonIconClassList.AddClasses( "d-none" );808 }809 else if ( Espresso.Item.BackButtonIcon == "arrow_forward" )810 {811 backButtonClassList.AddClasses( "arrow-right" );812 backButtonIconClassList.AddClasses( "d-none" );813 }814 }815816 string logoPrimary = Espresso.Area.Item.LogoPrimary;817 string logoSecondary = Espresso.Area.Item.LogoSecondary;818 if ( string.IsNullOrEmpty( logoSecondary ) == true )819 {820 logoSecondary = logoPrimary;821 }822 string tagline = Espresso.Area.Item.Tagline;823824 string checkoutPage = string.Empty;825 if ( !string.IsNullOrEmpty( Espresso.Area.Item.CheckoutPage ) )826 {827 checkoutPage = string.Format("Default.aspx?ID={0}", Espresso.Area.Item.CheckoutPage);828 checkoutPage = SearchEngineFriendlyURLs.GetFriendlyUrl( checkoutPage );829 }830831 string cartPage = string.Empty;832 if ( !string.IsNullOrEmpty( Espresso.Area.Item.CartPage ) )833 {834 cartPage = string.Format("Default.aspx?ID={0}", Espresso.Area.Item.CartPage);835 cartPage = SearchEngineFriendlyURLs.GetFriendlyUrl( cartPage );836 }837838 string customerServicePage = string.Empty;839 if ( !string.IsNullOrEmpty( Espresso.Area.Item.CustomerServicePage ) )840 {841 customerServicePage = string.Format("Default.aspx?ID={0}", Espresso.Area.Item.CustomerServicePage);842 customerServicePage = SearchEngineFriendlyURLs.GetFriendlyUrl( customerServicePage );843 }844845 Dictionary< string, string > navigationHtml = new Dictionary< string, string >846 {847 {848 "global", RenderNavigation( new849 {850 id = "dwnav-global",851 template = "global.xslt",852 startlevel = 1,853 endlevel = 8,854 expandmode = "all"855 } )856 },857 {858 "utilities-primary", RenderNavigation( new859 {860 id = "dwnav-utilities-primary",861 template = "utilities.xslt",862 startlevel = 4,863 endlevel = 5,864 expandmode = "all",865 parenttag = "utilities-primary"866 } )867 },868 {869 "utilities-secondary", RenderNavigation( new870 {871 id = "dwnav-utilities-secondary",872 template = "utilities.xslt",873 startlevel = 4,874 endlevel = 4,875 expandmode = "all",876 parenttag = "utilities-secondary"877 } )878 },879 {880 "hamburger-header", RenderNavigation( new881 {882 id = "dwnav-hamburger-header",883 template = "utilities.xslt",884 startlevel = 4,885 endlevel = 4,886 expandmode = "all",887 parenttag = "hamburger-header"888 } )889 },890 {891 "hamburger-aside", RenderNavigation( new892 {893 id = "dwnav-hamburger-aside",894 template = "utilities.xslt",895 startlevel = 4,896 endlevel = 4,897 expandmode = "all",898 parenttag = "hamburger-aside"899 } )900 }901 };902903 string logoLink = "/";904 if ( isExtranet )905 {906 logoLink = "/Default.asp?ID=6532";907 }908909910 // STREAMER911912 int pageId = PageView.Current().ID;913 string streamerActive = Espresso.Area.Item.StreamerActive;914 string streamerMarquee = Espresso.Area.Item.StreamerAsMarquee;915 string streamerMessage = Espresso.Area.Item.StreamerMessage;916 string streamerTextColor = Espresso.Area.Item.StreamerTextColor;917 string streamerBackgroundColor = Espresso.Area.Item.StreamerBackgroundColor;918 string streamerLink = Espresso.Area.Item.StreamerLink;919 }920921 @if ( Espresso.Item.HeaderHide != "True" )922 {923 <header class="@headerClassList" data-autohide="true" data-imagebank-area="@isImageBankArea">924925 <div class="e-header-hamburger">926 @sectionStart( "e-header-section e-section", "col-12" )927 <div class="col-12 e-header-section-content">928 <div class="@logoClassList">929 @if ( isImageBankArea == false )930 {931 <a class="e-logo-link" href="/">932 <img src="@logoPrimary" class="e-logo-img e-logo-img-primary" alt="@Espresso.Area.Item.CompanyName">933 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary" alt="@Espresso.Area.Item.CompanyName">934 @if ( string.IsNullOrEmpty( tagline ) == false )935 {936 <p class="e-logo-tagline">@tagline</p>937 }938 </a>939 }940 else941 {942 <a class="e-logo-link" href="@logoLink">943 <img src="@logoPrimary" class="e-logo-img e-logo-img-primary" alt="@Espresso.Area.Item.CompanyName">944 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary" alt="@Espresso.Area.Item.CompanyName">945 @if ( string.IsNullOrEmpty( tagline ) == false )946 {947 <p class="e-logo-tagline">@tagline</p>948 }949 </a>950 }951952 </div>953 @if ( Espresso.Item.NavigationHide != "True" )954 {955 <section class="e-nav-hamburger-header">956 <ul class="nav">957 @navigationHtml[ "hamburger-header" ]958 @* TODO: Move to xslt *@959 <li class="e-nav-item-hamburger-open nav-item">960 <a class="nav-link" data-target=".modal.e-nav" data-toggle="modal" href="#">961 <i class="e-nav-pageicon material-icons">menu</i>962 @*<span class="e-nav-pagename">@Translate( "Header - Hamburger menu open - Button", "Menu" )</span>*@963 </a>964 </li>965 </ul>966 </section>967968969970971972 }973 @if ( Espresso.Item.BackButton == "True" )974 {975 <a class="@backButtonClassList" href="@backButtonLink">976 @if ( Espresso.Item.BackButtonIcon != "" )977 {978 <i class="@backButtonIconClassList">@Espresso.Item.BackButtonIcon</i>979 }980 @Espresso.Item.BackButtonText981 </a>982 }983 </div>984 @sectionEnd()985986987 @if ( streamerActive != "False" )988 {989 <section class="e-header-section e-section kabooki-seasonal-streamer" style="background-color: @streamerBackgroundColor;">990991 @if ( streamerLink == "" )992 {993 <div class="container-fluid">994 <div class="row">995 <div class="col-12">996 <div class="row">997 <div class="col-12 d-flex pt-1 pb-1 small @streamerTextColor" style="min-height: 2em;">998 @if ( streamerMarquee == "True" )999 {1000 <marquee>@streamerMessage</marquee>1001 }1002 else1003 {1004 @streamerMessage1005 }1006 </div>1007 </div>1008 </div>1009 </div>1010 </div>1011 }1012 else1013 {1014 <a href="@streamerLink">1015 <div class="container-fluid">1016 <div class="row">1017 <div class="col-12">1018 <div class="row">1019 <div class="col-12 d-flex pt-1 pb-1 small @streamerTextColor" style="min-height: 2em;">1020 @if ( streamerMarquee == "True" )1021 {1022 <marquee>@streamerMessage</marquee>1023 }1024 else1025 {1026 @streamerMessage1027 }1028 </div>1029 </div>1030 </div>1031 </div>1032 </div>1033 </a>1034 }1035 </section>1036 }10371038 </div>1039 <div class="e-nav js-e-nav modal p-0" data-backdrop="false">1040 <div class="e-nav-container navbar">10411042 @if ( !string.IsNullOrEmpty( Espresso.Area.Item.HeaderPageID ) && isImageBankArea == false )1043 {1044 @sectionStart( "e-header-section p-section e-section custom-USP-bar bg-light order-4", "col-12" )10451046 @RenderPageContent( int.Parse( Espresso.Area.Item.HeaderPageID ) )10471048 @sectionEnd()1049 }10501051 @if ( string.IsNullOrEmpty( navigationHtml[ "utilities-primary" ] ) == false && isImageBankArea == false )1052 {1053 @sectionStart( "e-header-section e-section order-3 order-lg-1", "col-12" )1054 @:<div class="col-12 e-header-section-content">1055 <nav class="e-nav-utilities-primary js-e-nav-utilities-primary">1056 <ul class="nav">1057 <li class="dropdown nav-item mr-auto">1058 <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">1059 <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>1060 </a>1061 <div class="dropdown-menu collapse" id="countries">1062 <ul class="nav">1063 @foreach ( KeyValuePair< string, dynamic > selectorCountry in selectorCountries )1064 {1065 if ( selectorCountry.Value.countrycode.ToLower() != contextCountryCode.ToLower() )1066 {1067 <li class="dropdown-item nav-item ">1068 <form action="@selectorCountry.Value.domain.ToLower()" method="post">1069 <input type="hidden" name="countrycode" value="@selectorCountry.Value.countrycode">1070 <input type="hidden" name="currencycode" value="@selectorCountry.Value.currencycode">1071 <input type="hidden" name="EcomOrderDeliveryCountry" value="@selectorCountry.Value.countrycode">1072 <input type="hidden" name="EcomOrderDeliveryCountryCode" value="@selectorCountry.Value.countrycode">1073 <input type="hidden" name="EcomOrderCustomerCountry" value="@selectorCountry.Value.countrycode">1074 <input type="hidden" name="EcomOrderCustomerCountryCode" value="@selectorCountry.Value.countrycode">1075 <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>1076 </form>1077 </li>1078 }1079 }1080 </ul>1081 </div>1082 </li>1083 @navigationHtml[ "utilities-primary" ]1084 </ul>1085 </nav>1086 @:</div>1087 @sectionEnd()1088 }10891090 @sectionStart( "e-header-section e-header-section-primary e-section order-2 order-lg-1", "col-12" )1091 <div class="col-12 e-header-section-content">10921093 @if ( isImageBankArea == false )1094 {1095 <div class="@logoClassList">1096 <a class="e-logo-link" href="/">1097 <img src="@logoPrimary" class="e-logo-img e-logo-img-primary" alt="@Espresso.Area.Item.CompanyName">1098 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary" alt="@Espresso.Area.Item.CompanyName">1099 @if ( string.IsNullOrEmpty( tagline ) == false )1100 {1101 <p class="e-logo-tagline">@tagline</p>1102 }1103 </a>1104 </div>1105 }1106 else1107 {1108 <div class="@logoClassList">1109 <a class="e-logo-link my-2 p-0" href="@logoLink">1110 <img src="@logoPrimary" class="e-logo-img e-logo-img-primary" alt="@Espresso.Area.Item.CompanyName">1111 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary" alt="@Espresso.Area.Item.CompanyName">1112 @if ( string.IsNullOrEmpty( tagline ) == false )1113 {1114 <p class="e-logo-tagline">@tagline</p>1115 }1116 </a>1117 </div>1118 }111911201121 @if ( Espresso.Item.NavigationHide != "True" )1122 {1123 <nav class="e-nav-global mx-auto js-e-nav-global">1124 <ul class="nav">1125 @navigationHtml[ "global" ]1126 </ul>1127 </nav>11281129 <div class="e-nav-item-hamburger-close">1130 <a class="nav-link" data-target=".modal.e-nav" data-toggle="modal" href="#">1131 <i class="e-nav-pageicon material-icons">close</i>1132 <span class="e-nav-pagename">@Translate( "Header - Hamburger menu close - Button", "Close" )</span>1133 </a>1134 </div>113511361137 if ( isImageBankArea == false )1138 {11391140 }11411142 if ( string.IsNullOrEmpty( navigationHtml[ "hamburger-aside" ] ) == false )1143 {1144 <nav class="e-nav-hamburger-aside">1145 <ul class="nav">1146 @navigationHtml[ "hamburger-aside" ]1147 </ul>1148 </nav>1149 }1150 }1151 @if ( Espresso.Item.BackButton == "True" )1152 {1153 <a class="@backButtonClassList" href="@backButtonLink">1154 @if ( Espresso.Item.BackButtonIcon != "" )1155 {1156 <i class="@backButtonIconClassList">@Espresso.Item.BackButtonIcon</i>1157 }1158 @Espresso.Item.BackButtonText1159 </a>1160 }1161 </div>1162 @sectionEnd()1163116411651166 @if ( isExtranet )1167 {1168 @sectionStart( "e-header-section e-section bg-light", "col-12" )1169 @:<div class="col-12 e-header-section-content kabooki-imagebank-bar">11701171 <p>1172 <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>1173 </p>1174 <p>1175 <a class="btn" href="/Admin/Public/extranetlogoff.aspx">@Translate( "Header - Imagebank login - button", "Log ud" )</a>1176 </p>1177 @:</div>1178 @sectionEnd()1179 }118011811182 @if ( streamerActive != "False" )1183 {1184 <section class="e-header-section e-section kabooki-seasonal-streamer" style="background-color: @streamerBackgroundColor;">11851186 @if ( streamerLink == "" )1187 {1188 <div class="container-fluid">1189 <div class="row">1190 <div class="col-12">1191 <div class="row">1192 <div class="col-12 d-flex pt-1 pb-1 @streamerTextColor" style="min-height: 2em;">1193 @if ( streamerMarquee == "True" )1194 {1195 <marquee>@streamerMessage</marquee>1196 }1197 else1198 {1199 @streamerMessage1200 }1201 </div>1202 </div>1203 </div>1204 </div>1205 </div>1206 }1207 else1208 {1209 <a href="@streamerLink">1210 <div class="container-fluid">1211 <div class="row">1212 <div class="col-12">1213 <div class="row">1214 <div class="col-12 d-flex pt-1 pb-1 @streamerTextColor" style="min-height: 2em;">1215 @if ( streamerMarquee == "True" )1216 {1217 <marquee>@streamerMessage</marquee>1218 }1219 else1220 {1221 @streamerMessage1222 }1223 </div>1224 </div>1225 </div>1226 </div>1227 </div>1228 </a>1229 }1230 </section>1231 }12321233123412351236 </div>1237 </div>12381239 </header>1240 }12411242 @using Dynamicweb.Frontend1243 @using Dynamicweb.Security.UserManagement1244 @{1245 User currentUser = PageView.Current().User;1246 if ( currentUser != null )1247 {1248 User currentSecondaryUser = currentUser.CurrentSecondaryUser;1249 if ( currentSecondaryUser != null )1250 {1251 @sectionStart( "e-section bg-warning e-text-dark js-e-section is-sticky zi-fixed py-1", "col-12 small" )1252 <div class="align-self-center col-12 col-lg-9 col-md-8">1253 <p class="line-height-sm mb-1 mb-md-0 text-center text-md-left">1254 <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>1255 </p>1256 </div>1257 <div class="align-self-center col-12 col-lg-3 col-md-4">1258 <form class="mb-0 small text-center text-md-right" method="post" action="@Espresso.Area.Item.ExtranetImpersonationPage">1259 <button class="btn btn-primary" name="DwExtranetRemoveSecondaryUser" type="submit">@Translate( "Extranet Impersonation - Stop impersonation - Button", "Stop impersonation" )</button>1260 </form>1261 </div>1262 @sectionEnd()1263 }1264 }1265 }126612671268 <main id="dwcontentmain" class="e-content js-e-content @Espresso.ContentArea.ClassList">1269 @using Dynamicweb.Content;1270 @using Dynamicweb.Extensibility;1271 @{1272 string eBreadcrumbClasslist = "e-breadcrumb js-e-breadcrumb d-none d-lg-block";1273 if ( Espresso.Item.Breadcrumb != "auto" && Espresso.Item.Breadcrumb != "none" && String.IsNullOrEmpty( Espresso.Item.Breadcrumb ) == false )1274 {1275 eBreadcrumbClasslist += string.Format( " e-breadcrumb-{0}", Espresso.Item.Breadcrumb );1276 }1277 string navigationHtmlBreadcrumb = RenderNavigation( new1278 {1279 id = "dwnav-breadcrumb",1280 template = "breadcrumb.xslt",1281 startlevel = 1,1282 endlevel = 10,1283 expandmode = "pathonly",1284 sitemapmode = true1285 } );1286 }12871288 @if ( string.IsNullOrEmpty( navigationHtmlBreadcrumb ) == false && Espresso.Item.Breadcrumb != "none" && string.IsNullOrEmpty( Espresso.Item.Breadcrumb ) == false )1289 {1290 <section class="e-section @eBreadcrumbClasslist">1291 <div class="container-fluid">1292 <div class="row">1293 <div class="col-12">1294 <div class="row">12951296 <div class="col-12">1297 <nav class="e-breadcrumb-container">1298 <ol class="breadcrumb nav">1299 <li class="breadcrumb-item m-0 p-0">1300 <a class="arrow-left breadcrumb-back-link js-e-back-link px-0" href="/">@Translate( "Breadcrumb - Back link", "Back" )</a>1301 <span class="breadcrumb-prefix-text">1302 @Translate( "Breadcrumb - Prefix - Text", "You are here:" )1303 </span>1304 <a href="/">1305 @ServiceLocator.Current.GetPageService().GetFirstPageForArea( GetInteger( "DwAreaID" ) ).MenuText1306 </a>1307 </li>1308 @navigationHtmlBreadcrumb1309 </ol>1310 </nav>1311 </div>13121313 </div>1314 </div>1315 </div>1316 </div>1317 </section>1318 }13191320 <article class="e-content-article">1321 @{1322 int NavigationLocalHorizontalParentPageId = 0;1323 if ( !string.IsNullOrEmpty( Espresso.Item.NavigationLocalParentPage ) )1324 {1325 int.TryParse( Espresso.Item.NavigationLocalParentPage, out NavigationLocalHorizontalParentPageId );1326 }1327 if ( NavigationLocalHorizontalParentPageId == 0 )1328 {1329 NavigationLocalHorizontalParentPageId = PageView.Current().Page.ID;1330 if ( !Dynamicweb.Services.Pages.GetPagesByParentID( NavigationLocalHorizontalParentPageId ).Any() )1331 {1332 NavigationLocalHorizontalParentPageId = PageView.Current().Page.ParentPageId;1333 }1334 }1335 string NavigationLocalHorizontalClassList = "e-nav-local e-nav-local-horizontal js-e-nav-local-horizontal";1336 string NavigationLocalHorizontalContainerClassList = "e-nav-local-container";1337 string NavigationLocalHorizontalTemplate = "local-" + Espresso.Item.NavigationLocalLayout + ".xslt";1338 if ( string.IsNullOrEmpty( Espresso.Item.NavigationLocalTemplate ) == false && Path.GetExtension( Espresso.Item.NavigationLocalTemplate ) == ".xslt" )1339 {1340 NavigationLocalHorizontalTemplate = Path.GetFileName( Espresso.Item.NavigationLocalTemplate );1341 }13421343 if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "horizontal" )1344 {1345 NavigationLocalHorizontalClassList += " " + Espresso.Item.NavigationLocalCustomClasses;1346 if ( Espresso.Item.NavigationLocalSticky == "True" )1347 {1348 NavigationLocalHorizontalClassList += " is-sticky";1349 }1350 if ( Espresso.Item.NavigationLocalAbsolute == "True" )1351 {1352 NavigationLocalHorizontalClassList += " is-absolute";1353 }1354 else1355 {1356 if ( Espresso.Item.NavigationLocalMarginTop != "0" && Espresso.Item.NavigationLocalMarginTop != "" )1357 {1358 NavigationLocalHorizontalClassList += " mt-" + Espresso.Item.NavigationLocalMarginTop;1359 }1360 if ( Espresso.Item.NavigationLocalMarginBottom != "0" && Espresso.Item.NavigationLocalMarginBottom != "" )1361 {1362 NavigationLocalHorizontalClassList += " mb-" + Espresso.Item.NavigationLocalMarginBottom;1363 }1364 }1365 }1366 }1367 @if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "horizontal" )1368 {1369 <section class="e-section @NavigationLocalHorizontalClassList">1370 <div class="container-fluid">1371 <div class="row">1372 <div class="col-12">1373 <div class="row">13741375 <div class="col-12">1376 <nav id="dwnav-local-horizontal-@NavigationLocalHorizontalParentPageId" class="@NavigationLocalHorizontalContainerClassList">1377 <ul class="justify-content-start nav">1378 @if ( Espresso.Item.NavigationLocalHeading != "" )1379 {1380 <li class="e-nav-local-heading">1381 <h2>@Espresso.Item.NavigationLocalHeading</h2>1382 </li>1383 }1384 @RenderNavigation( new1385 {1386 id = "dwnav-local-horizontal-" + NavigationLocalHorizontalParentPageId,1387 parentid = NavigationLocalHorizontalParentPageId,1388 template = NavigationLocalHorizontalTemplate,1389 startlevel = Espresso.Item.NavigationLocalLevelStart,1390 endlevel = Espresso.Item.NavigationLocalLevelEnd,1391 expandmode = Espresso.Item.NavigationLocalPageTreeExpand == "True" ? "all" : "path"1392 } )1393 </ul>1394 </nav>1395 </div>13961397 </div>1398 </div>1399 </div>1400 </div>1401 </section>1402 }140314041405 @{1406 int NavigationLocalVerticalParentPageId = 0;1407 if ( !string.IsNullOrEmpty( Espresso.Item.NavigationLocalParentPage ) )1408 {1409 int.TryParse( Espresso.Item.NavigationLocalParentPage, out NavigationLocalVerticalParentPageId );1410 }1411 if ( NavigationLocalVerticalParentPageId == 0 )1412 {1413 NavigationLocalVerticalParentPageId = PageView.Current().Page.ID;1414 if ( !Dynamicweb.Services.Pages.GetPagesByParentID( NavigationLocalVerticalParentPageId ).Any() )1415 {1416 NavigationLocalVerticalParentPageId = PageView.Current().Page.ParentPageId;1417 }1418 }14191420 string NavigationLocalVerticalClassList = "e-nav-local e-nav-local-vertical js-e-nav-local-vertical";1421 string NavigationLocalVerticalContainerClassList = "e-nav-local-container";1422 string NavigationLocalVerticalTemplate = "local-" + Espresso.Item.NavigationLocalLayout + ".xslt";1423 if ( string.IsNullOrEmpty( Espresso.Item.NavigationLocalTemplate ) == false && Path.GetExtension( Espresso.Item.NavigationLocalTemplate ) == ".xslt" )1424 {1425 NavigationLocalVerticalTemplate = Path.GetFileName( Espresso.Item.NavigationLocalTemplate );1426 }14271428 if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "vertical" )1429 {1430 NavigationLocalVerticalClassList += " " + Espresso.Item.NavigationLocalCustomClasses;14311432 if ( Espresso.Item.NavigationLocalMarginTop != "0" && Espresso.Item.NavigationLocalMarginTop != "" )1433 {1434 NavigationLocalVerticalClassList += " mt-" + Espresso.Item.NavigationLocalMarginTop;1435 }1436 if ( Espresso.Item.NavigationLocalMarginBottom != "0" && Espresso.Item.NavigationLocalMarginBottom != "" )1437 {1438 NavigationLocalVerticalClassList += " mb-" + Espresso.Item.NavigationLocalMarginBottom;1439 }14401441 if ( Espresso.Item.NavigationLocalSticky == "True" )1442 {1443 NavigationLocalVerticalClassList += " is-sticky";1444 }14451446 if ( Espresso.Item.NavigationLocalAbsolute == "True" )1447 {1448 NavigationLocalVerticalClassList += " is-absolute";1449 }1450 else1451 {1452 Espresso.ContentSection.ClassList.Clear();1453 Espresso.ContentSection.ClassList.AddClasses( "wtf col-12 col-lg-9 ml-auto" );1454 }1455 }1456 }14571458 @if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "vertical" )1459 {1460 <section class="e-section @NavigationLocalVerticalClassList">1461 <div class="container-fluid">1462 <div class="row">1463 <div class="col-12">1464 <div class="row">14651466 <div class="col-3">1467 <nav id="dwnav-local-@NavigationLocalVerticalParentPageId" class="@NavigationLocalVerticalContainerClassList">1468 <ul class="flex-column nav">1469 @if ( Espresso.Item.NavigationLocalHeading != "" )1470 {1471 <li class="e-nav-local-heading">1472 <h2>@Espresso.Item.NavigationLocalHeading</h2>1473 </li>1474 }1475 @RenderNavigation( new1476 {1477 id = "dwnav-local-" + NavigationLocalVerticalParentPageId,1478 parentid = NavigationLocalVerticalParentPageId,1479 template = NavigationLocalVerticalTemplate,1480 startlevel = Espresso.Item.NavigationLocalLevelStart,1481 endlevel = Espresso.Item.NavigationLocalLevelEnd,1482 expandmode = Espresso.Item.NavigationLocalPageTreeExpand == "True" ? "all" : "path",1483 } )1484 </ul>1485 </nav>1486 </div>14871488 </div>1489 </div>1490 </div>1491 </div>1492 </section>1493 }149414951496 @sectionStart()1497 @GetValue("DwContent(dwcontentmain)")1498 @sectionEnd()1499 </article>1500 </main>1501 @using Dynamicweb.Frontend1502 @{1503 string FooterContentClassList = "e-footer-content e-section";1504 }1505 @if ( Espresso.Item.FooterHide != "True" )1506 {1507 <footer class="e-footer">1508 <article class="e-footer-wrapper">1509 <section class="@FooterContentClassList">1510 <div class="container-fluid">1511 <div class="row">1512 @if ( !string.IsNullOrEmpty( Espresso.Area.Item.FooterPageId ) )1513 {1514 @RenderPageContent( int.Parse( Espresso.Area.Item.FooterPageId ) )1515 }1516 @*1517 @if ( string.IsNullOrEmpty( GetString( "DwNavigation(dwnavutilitiessecondaryfooter)" ) ) == false )1518 {1519 <div class="col-12">1520 <aside class="e-nav-utilities-secondary">1521 <ul class="nav nav-inline">1522 @GetValue("DwNavigation(dwnavutilitiessecondaryfooter)")1523 </ul>1524 </aside>1525 </div>1526 }*@1527 </div>1528 </div>1529 </section>1530 <section class="e-footer-copyright e-section">1531 <div class="container-fluid">1532 <div class="align-items-center row">1533 <div class="col-12 col-sm-9">1534 <p class="e-copyright">1535 &copy; @DateTime.Now.Year.ToString()&nbsp;1536 @Translate( "Footer - Copyright - Text", "Copyright &copy;" )&nbsp;15371538 &nbsp;@Translate( "Footer - All Rights Reserved - Text", "All rights reserved." )1539 </p>1540 </div>1541 @if ( isImageBankArea == false )1542 {1543 string creditcardImage = "creditcards_DK.svg";1544 if ( areaID == 25 )1545 {1546 creditcardImage = "creditcards_EN.svg";1547 }1548 if ( areaID == 27 )1549 {1550 creditcardImage = "creditcards_DE.svg";1551 }1552 <div class="col-12 col-sm-3 text-left text-sm-right custom-creditcards-wrapper">1553 <img class="custom-creditcards" src="/Files/Templates/Designs/legowear/_assets/img/@creditcardImage" alt="">1554 </div>1555 }1556 </div>1557 </div>1558 </section>1559 </article>1560 </footer>1561 }15621563 @if( string.IsNullOrEmpty( GetString("DwContent(dwcontentcta)") ) == false ) {1564 <aside id="dwcontentcta" class="js-e-cta e-cta is-hidden fixed-top">1565 <section class="e-section">1566 <div class="container-fluid">1567 <div class="row no-gutters">1568 <div class="col-12">1569 <div class="row no-gutters justify-content-center align-items-center">1570 @GetValue("DwContent(dwcontentcta)")1571 @* <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> *@1572 </div>1573 </div>1574 </div>1575 </div>1576 </section>1577 </aside>1578 }15791580 <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>1581 @using Dynamicweb.Frontend1582 @{1583 string ecomOrderDeliveryCountry = HttpContext.Current.Request.Form[ "EcomOrderDeliveryCountry" ];1584 bool modalDeliveryCountryFormPosted = !string.IsNullOrEmpty(ecomOrderDeliveryCountry);1585 string currentDomain = "//" + PageView.GetAreaByDomain().DomainLock + "/";1586 string currentUrl = PageView.Current().SearchFriendlyUrl;1587 string formAction = "";1588 }15891590 <!-- Modal -->1591 <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">1592 <div class="modal-dialog" role="document">1593 <div class="modal-content">1594 <div class="modal-body">1595 <div class="" id="countries">1596 <h3 class="text-center mb-0 text-uppercase">@Translate( "global Modal - Langauge select - Heading", "Select your country" )</h3>1597 <p class="text-center mb-2">@Translate( "global Modal - Langauge select - Text", "So we can easily deliver to you" )</p>1598 <div class="e-nav-utilities-primary kabooki-custom-language-select">15991600 @foreach (KeyValuePair<string, dynamic> selectorCountry in selectorCountries)1601 {1602 if (selectorCountry.Value.domain.ToLower() == currentDomain)1603 {1604 formAction = currentUrl;1605 }1606 else1607 {1608 formAction = selectorCountry.Value.domain.ToLower();1609 }1610 <div>1611 <form action="@formAction" method="post">1612 <input type="hidden" name="countrycode" value="@selectorCountry.Value.countrycode">1613 <input type="hidden" name="currencycode" value="@selectorCountry.Value.currencycode">1614 <input type="hidden" name="EcomOrderDeliveryCountry" value="@selectorCountry.Value.countrycode">1615 <input type="hidden" name="EcomOrderDeliveryCountryCode" value="@selectorCountry.Value.countrycode">1616 <input type="hidden" name="EcomOrderCustomerCountry" value="@selectorCountry.Value.countrycode">1617 <input type="hidden" name="EcomOrderCustomerCountryCode" value="@selectorCountry.Value.countrycode">1618 <button class="nav-link border-0 bg-transparent icon-flag-@selectorCountry.Value.countrycode.ToLower()" type="submit">1619 <i class="e-nav-pageicon e-nav-pageicon-language js-e-nav-pageicon-language"></i><span class="e-nav-pagename">@selectorCountry.Value.title</span>1620 </button>1621 </form>1622 </div>1623 }1624 </div>1625 </div>1626 </div>1627 </div>1628 </div>1629 </div>16301631 </div>16321633 @using Co3.Espresso.Base.Extensions1634 @using Co3.Espresso.Website.Services1635 <div class="modal fade e-search js-e-search js-e-search-modal modal-fullscreen" data-backdrop="false" data-keyboard="true" data-focus="true">1636 <div class="modal-dialog">1637 <div class="modal-content">16381639 <div class="modal-header">1640 <a class="btn btn-sm btn-secondary js-e-back-link arrow-left" href="/" data-dismiss="modal">1641 @Translate("Search - Back button", "Back")1642 </a>1643 <div class="e-logo">1644 <a href="/" class="e-logo-link my-0">1645 <img src="@logoPrimary" class="e-logo-img e-logo-img-primary" alt="@Espresso.Area.Item.CompanyName">1646 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary" alt="@Espresso.Area.Item.CompanyName">1647 </a>1648 </div>1649 </div>16501651 <div class="modal-body">16521653 <div class="container-fluid">16541655 <div class="e-search-form-container">1656 <div class="row justify-content-center">1657 <div class="col-12 col-md-10 col-lg-8 col-xl-6 mt-3">1658 <form action="" class="e-search-form js-e-search-form">1659 <div class="js-e-search-input-group e-search-input-group is-empty">1660 <label class="e-search-label" for="e-search-input"><span class="search-custom-search-icon"></span></label>1661 @{ string Translate_Search_InputText = Translate("Search - Input Placeholder - Text", "Search"); }1662 <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">1663 <span class="js-e-search-clear e-search-clear"><i class="material-icons">close</i></span>1664 <button class="e-search-submit btn btn-primary" type="submit"><span class="search-custom-search-icon white"></span></button>1665 </div>1666 </form>1667 </div>1668 </div>1669 </div>16701671 <div class="js-e-search-result-container e-search-result-container">16721673 <div class="row justify-content-center">1674 <div class="col-12 col-md-10 col-lg-8 col-xl-6">1675 <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>1676 </div>1677 </div>16781679 <div class="row justify-content-center">1680 <div class="col-12 col-xl-10">1681 <div class="js-e-search-result-products e-search-result-products is-empty mb-4">1682 @{string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth( null ).ToResponsiveClasses();}1683 <script id="js-e-handlebars-tmpl-search-result-item-product" type="text/x-handlebars-template">1684 <div class="e-products">1685 <div class="row justify-content-center">1686 {{#each products}}1687 <div class="@productlistItemClassList"">1688 <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;">1689 <div class="e-products-item-container">1690 <div class="e-products-item-image-container">1691 <a class="e-products-item-image-wrapper" href="{{{url}}}">1692 @*<img src="{{{imageLarge}}}" alt="" class="e-products-item-image">*@1693 {{#if hasDiscount}}1694 <img src="/Files/Images/kabooki/system/lego_wear_badge_percentage.svg" alt="" class="custom-products-item-badge">1695 {{/if}}1696 </a>1697 </div>1698 </div>1699 </div>17001701 <div class="e-products-item-text-container text-left small mb-2">1702 <h3 class="e-products-item-name mb-0 mt-0">1703 <a href="{{{url}}}">{{name}} {{#if hasTypeRO}}<span>{{typeRO}}</span>{{/if}}</a>1704 </h3>1705 <p class="e-products-item-text mb-0">1706 <span class="e-products-item-price">1707 <a href="{{{url}}}">1708 {{{price}}}1709 {{#if hasDiscount}}1710 <span class="custom-products-item-beforeprice">{{{priceBefore}}}</span>1711 {{/if}}1712 </a>1713 </span>1714 </p>1715 </div>17161717 </div>1718 {{/each}}1719 </div>1720 <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>1721 </div>1722 </script>1723 </div>1724 </div>1725 </div>17261727 <div class="row justify-content-center">1728 <div class="col-12 col-md-10 col-lg-8 col-xl-6">1729 <div class="js-e-search-result-pages e-search-result-pages is-empty mb-3">1730 <script id="js-e-handlebars-tmpl-search-result-item-page" type="text/x-handlebars-template">1731 <div class="row">1732 {{#each pages}}1733 <div class="col-12">1734 <p class="mb-0"><a href="{{{url}}}" class="text-bold">{{{title}}}</a></p>1735 <p class="mb-0 small text-truncate">1736 <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>1737 <p class="small">{{{text}}}...</p>1738 </div>1739 {{/each}}1740 </div>1741 </script>1742 </div>1743 </div>1744 </div>17451746 <div class="js-e-search-loading-overlay e-loading-overlay e-search-loading-overlay">1747 <div class="e-loading-spinner"></div>1748 </div>17491750 </div>17511752 </div>1753 </div>1754 </div>1755 </div>1756 </div>17571758 @if( Espresso.Area.Item.BackToTopLink == "True" ){1759 <a href="#top" class="e-back-to-top js-e-back-to-top"><i class="material-icons">keyboard_arrow_up</i></a>1760 }176117621763 @*1764 @using System.Web;1765 @inherits Co3.Espresso.Website.TemplateBases.Pages.PageBase17661767 @{1768 HttpCookie optInLevel = HttpContext.Current.Request.Cookies[ "Dynamicweb.CookieOptInLevel" ];1769 bool showCookieWarning = optInLevel == null;1770 if ( optInLevel != null )1771 {1772 showCookieWarning = optInLevel.Value != "2";1773 }1774 }17751776 @if ( showCookieWarning )1777 {1778 <div class="e-cookie js-e-cookie py-1" hidden="">1779 <aside class="e-cookie-wrapper">1780 <section class="e-section">1781 <div class="container-fluid">1782 <div class="align-items-center row">1783 <div class="col-12 col-lg-10 col-md-9 my-1">1784 <p class="line-height-sm mb-0 small text-center text-md-left">1785 <span class="d-md-inline d-none">1786 @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" )1787 </span>1788 <span class="d-md-none">1789 @Translate( "Cookie Warning - Message Short - Text", "This website uses cookies to improve your experience. Learn more about our" )1790 </span>1791 &nbsp;1792 <a href="@Espresso.Area.Item.CookieMessage">@Translate( "Cookie Warning - Policy - Link", "cookie policy" )</a>1793 </p>1794 </div>1795 <div class="col-12 col-lg-2 col-md-3 my-1">1796 <p class="mb-0 text-center text-md-right">1797 <button class="btn e-cookie-accept-btn js-e-cookie-accept-btn" type="button">1798 @Translate( "Cookie Warning - Accept - Button", "OKAY" )1799 </button>1800 </p>1801 </div>1802 </div>1803 </div>1804 </section>1805 </aside>1806 </div>1807 }18081809 @if ( 1 == 2 )1810 {1811 @GetValue( "DwCookieWarning" )1812 }18131814 *@181518161817 <script async="" src="/Files/Templates/Designs/kabooki-shop/_assets/_dist/js/default.js?v=1.2.3"></script>18181819 @*<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>*@18201821 <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>1822 </body>18231824 @GetValue( "CopyRightNotice" )1825 </html>1826