Exception in template (Designs/junckers/_parsed/espresso.parsed.cshtml): System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.cebffebbeabfbff.Execute()
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context)
   at RazorEngine.Templating.TemplateService.Run(ITemplate template, DynamicViewBag viewBag)
   at RazorEngine.Templating.TemplateService.Parse(String razorTemplate, Object model, DynamicViewBag viewBag, String cacheName)
   at RazorEngine.Razor.Parse[T](String razorTemplate, T model, DynamicViewBag viewBag, String cacheName)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()
@inherits Co3.Espresso.Website.TemplateBases.Pages.PageBase @using System.Web; @using System.IO @using Dynamicweb.Content @using Dynamicweb.Content.Items @using Dynamicweb.Rendering @using Dynamicweb.Frontend @{ string globalAreaLang = GetGlobalValue( "Global:Area.Lang" ); string baseUrl = GetGlobalValue( "Global:Request.Scheme" ) + "://" + GetGlobalValue( "Global:Request.Host" ); string openGraphUrl = baseUrl + GetGlobalValue( "Global:Pageview.Url" ); string openGraphImage = baseUrl + Espresso.OpenGraphImage; bool isRequestingPDF = System.Web.HttpContext.Current.Request[ "pdfgeneratorworking" ] == "true" || System.Web.HttpContext.Current.Request[ "newpdf" ] == "true" || System.Web.HttpContext.Current.Request[ "newpdf" ] == "test"; if ( isRequestingPDF ) { Espresso.Area.OptimizedLoading = false; Espresso.StylesheetAttributeRel = Espresso.Area.OptimizedLoading ? "preload" : "stylesheet"; Espresso.StylesheetAttributeMedia = Espresso.Area.OptimizedLoading ? "only x" : "all"; } } <!DOCTYPE html> <html lang="@globalAreaLang"> <head> @* @GetValue( "CopyRightNotice" ) *@ <meta charset="utf-8"> <meta content="width=device-width, initial-scale=1, shrink-to-fit=no, minimal-ui" name="viewport"> <meta content="ie=edge" http-equiv="x-ua-compatible"> <title>@GetValue("Title")</title> @GetValue("MetaTags") @GetValue("CopyRightNotice") @if ( Espresso.Area.OptimizedLoading ) { @Espresso.CriticalCSS } <link crossorigin="" href="https://fonts.gstatic.com/" rel="preconnect"> <link href="https://fonts.googleapis.com/css?family=Ubuntu:300,400,500|Material+Icons" media="@Espresso.StylesheetAttributeMedia" rel="@Espresso.StylesheetAttributeRel" as="style"> <link href="/Files/Templates/Designs/junckers/_assets/_dist/css/default.css?v=1.11" media="@Espresso.StylesheetAttributeMedia" rel="@Espresso.StylesheetAttributeRel" as="style"> @if ( isRequestingPDF ) { <link href="/Files/Templates/Designs/junckers/_assets/_dist/css/junckers-pdf.css?v=2.026" media="all" rel="stylesheet"> } @if ( Espresso.Area.OptimizedLoading ) { @Espresso.CriticalJS } @* *@ <link rel="shortcut icon" href="@Espresso.Area.Item.Favicon"> @* @GetValue( "MetaTags" ) *@ @if ( Espresso.IsStagingUrl == true ) { <meta content="noindex,nofollow" name="robots"> } <meta property="og:url" content="@openGraphUrl"> <meta property="og:title" content="@Espresso.OpenGraphTitle"> <meta property="og:description" content="@Espresso.OpenGraphDescription"> <meta property="og:image" content="@openGraphImage"> <meta content="website" property="og:type"> @if ( string.IsNullOrEmpty( Espresso.Area.Item.GoogleSiteVerification ) == false ) { <meta name="google-site-verification" content="@Espresso.Area.Item.GoogleSiteVerification"> } @{ if ( 1 == 2 ) { @GetValue( "Stylesheets" ) } } @if ( string.IsNullOrEmpty( Espresso.Area.GoogleTagManagerID ) == false && Espresso.Area.GoogleTagManagerID != "GTM-XXXX" ) { <!-- Google Tag Manager --> <script> (function(w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', '@Espresso.Area.GoogleTagManagerID'); </script> <!-- End Google Tag Manager --> } <!-- Hreflang --> @{ @* Get areas from service *@ Dynamicweb.Content.AreaService areaService = new Dynamicweb.Content.AreaService(); Dynamicweb.Ecommerce.Products.ProductService productService = new Dynamicweb.Ecommerce.Products.ProductService(); IList< Area > areas = areaService.GetAreas(); bool pageHasParams = HttpContext.Current.Request.QueryString.HasKeys(); string[] expectedParams = new [] { "ID", "productid" }; IEnumerable< string > additionalParams = HttpContext.Current.Request.QueryString.AllKeys.Where(k => !expectedParams.Contains(k)); bool pageHasAllowedParams = true; if ( pageHasParams == true ) { if ( additionalParams.Any()) { pageHasAllowedParams = false; } } bool pageHasXDefault = false; string fallbackXDefaultEnglishPageUrl = string.Empty; string fallbackXDefaultPageUrl = string.Empty; @* Get current page's relation-text from page-item *@ string currentPageRelation = PageView.Current().Page.Item[ "PageRelation" ] != null ? PageView.Current().Page.Item[ "PageRelation" ].ToString() : string.Empty; @* Frontpage must have 'frontpage' as relation-text *@ string CONST_frontpageRelation = "frontpage"; if ( pageHasAllowedParams == true ) { @* Iterate areas *@ foreach ( Area area in areas ) { if ( area.Active == true ) { @* Get current area's culture *@ string culture = area.Culture; @* Check for IsDefault Hreflang on area *@ string isDefaultHrefLang = area.Item[ "IsDefaultHrefLang" ] != null ? area.Item[ "IsDefaultHrefLang" ].ToString() : string.Empty; @* Check for override-culture text on area *@ string hreflangCultureOverride = area.Item[ "HreflangLanguageOverride" ] != null ? area.Item[ "HreflangLanguageOverride" ].ToString() : string.Empty; @* Get scheme and domain *@ string scheme = GetGlobalValue( "Global:Request.Scheme" ); string domain = area.DomainLock; @* If we have a primary domain call pageservice and get pages *@ if ( string.IsNullOrEmpty( currentPageRelation ) == false && string.IsNullOrEmpty( domain ) == false ) { Dynamicweb.Content.PageService pageService = new Dynamicweb.Content.PageService(); IEnumerable< Dynamicweb.Content.Page > pages = pageService.GetPagesByAreaID( area.ID ); @* Iterate pages in area - check if is active + has item + has item-pagerelation + item-pagerelation equals current pagerelation *@ foreach ( Dynamicweb.Content.Page page in pages.Where( p => p.Published && !p.Hidden && p.Item != null && p.Item[ "PageRelation" ] != null && p.Item[ "PageRelation" ].ToString().Equals( currentPageRelation ) ) ) { string productId = HttpContext.Current.Request[ "productid" ]; string url = string.Empty; if ( string.IsNullOrEmpty( productId ) == false ) { @* Build url to area product page *@ Dynamicweb.Ecommerce.Products.Product product = productService.GetProductById( productId, "", area.EcomLanguageId ); if ( product != null && product.Active == true ) { string prodUrl = string.Format( "Default.aspx?ID={0}&ProductId={1}", page.ID, product.Id ); url = string.Format( "{0}://{1}{2}", scheme, domain, SearchEngineFriendlyURLs.GetFriendlyUrl( prodUrl, area.EcomLanguageId) ); } } else { @* Build url to area page *@ url = string.Format( "{0}://{1}{2}", scheme, domain, SearchEngineFriendlyURLs.GetFriendlyUrl( page.GetPageHrefValue() ) ); if ( string.IsNullOrEmpty( fallbackXDefaultPageUrl ) == true ) { fallbackXDefaultPageUrl = url; } if ( string.IsNullOrEmpty( fallbackXDefaultEnglishPageUrl ) == true && culture.ToLower().Contains( "en" ) == true ) { fallbackXDefaultEnglishPageUrl = url; } } @* If our current page relation match frontpage - set link to domain only *@ if ( currentPageRelation == CONST_frontpageRelation ) { url = string.Format( "{0}://{1}", scheme, domain ); } @* If our area item has checked in Default hreflang, we render x-default link *@ if ( isDefaultHrefLang == "True" ) { <link rel="alternate" hreflang="x-default" href="@url"> pageHasXDefault = true; } @* If we have a value in the area-item to overrule the culture, override the value here *@ if ( string.IsNullOrEmpty( hreflangCultureOverride ) == false ) { culture = hreflangCultureOverride; } @* Render hreflang-link *@ if ( string.IsNullOrEmpty( url ) == false ) { <link rel="alternate" hreflang="@culture.ToLower()" href="@url"> } } } } } if ( pageHasXDefault == false ) { if ( string.IsNullOrEmpty( fallbackXDefaultEnglishPageUrl ) ) { <link rel="alternate" hreflang="x-default" href="@fallbackXDefaultPageUrl"> } else { <link rel="alternate" hreflang="x-default" href="@fallbackXDefaultEnglishPageUrl"> } } } } <!-- End Hreflang --> @if ( string.IsNullOrEmpty( GetString( "Item.Area.MailchimpPopupScript.Value" ) ) == false ) { @GetString( "Item.Area.MailchimpPopupScript.Value" ) } else { if ( string.IsNullOrEmpty( GetString( "Item.MailchimpPopupScript.Value" ) ) == false ) { @GetString( "Item.MailchimpPopupScript.Value" ) } } @GetValue("Stylesheets") @GetValue("Javascripts") </head> @{ Item globalPageItem = null; if ( string.IsNullOrWhiteSpace( Espresso.DynamicwebPage.ShortCut ) == false ) { globalPageItem = Co3.Junckers.Frontend.Services.EnglishLanguagesPageItemService.Instance.GetPageItem( Espresso.DynamicwebPage.ShortCut ); } string pdfLink = string.Format( "{0}&newpdf=true&gid={1}", GetGlobalValue( "Global:Pageview.Url.Raw" ).Replace( "&newpdf=true", string.Empty ).Replace( "&newpdf=test", string.Empty ), Guid.NewGuid().ToString( "N" ) ); string junckersHasDocumentationPdfLink = string.Empty; if ( globalAreaLang == "en" && globalPageItem != null ) { junckersHasDocumentationPdfLink = globalPageItem[ "DocumentationPdf" ] != null ? globalPageItem[ "DocumentationPdf" ].ToString() : string.Empty; } else { junckersHasDocumentationPdfLink = string.IsNullOrEmpty( GetString( "Item.DocumentationPdf.Value" ) ) == false ? GetString( "Item.DocumentationPdf.Value" ) : string.Empty; } } <body class="@Espresso.Item.CustomClasses @Espresso.Area.OptimizedLoading" data-pdf="@junckersHasDocumentationPdfLink"> @if ( string.IsNullOrEmpty( Espresso.Area.GoogleTagManagerID ) == false && Espresso.Area.GoogleTagManagerID != "GTM-XXXX" ) { <!-- Google Tag Manager (noscript) --> <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=@Espresso.Area.GoogleTagManagerID" height="0" width="0" style="display: none; visibility: hidden"></iframe> </noscript> <!-- End Google Tag Manager (noscript) --> } @using Co3.Espresso.Website.Models.FrontEnd @{ Espresso.Canvas.ClassList.AddClasses( "js-e-canvas is-loading" ); if ( Espresso.Item.CanvasFullscreen == "True" ) { Espresso.Canvas.ClassList.AddClasses( "is-fullscreen" ); } } @using System.Globalization @using Co3.Espresso.Base.Extensions @using Co3.Espresso.DownloadManager.Models @using Co3.Espresso.Website.Models.FrontEnd @using Co3.Espresso.Website.Services @using Dynamicweb.Content @using Dynamicweb.Frontend @using Dynamicweb.Rendering @using EcomContext = Dynamicweb.Ecommerce.Common.Context @functions { public string getCountryCodeFromArea( Area area ) { RegionInfo regionInfo = new RegionInfo( area.CultureInfo.LCID ); return regionInfo.TwoLetterISORegionName; } } @helper ProductDescription(string sectionClasses = "e-section", bool sectionCollapse = false, string contentClasses = null, string heading = null, string content = null) { if ( string.IsNullOrEmpty( content ) == false ) { ClassList headingClassList = new ClassList(); headingClassList.AddClasses( "col-12" ); ClassList contentClassList = new ClassList(); contentClassList.AddClasses( "col-12" ); @sectionStart( sectionClasses: sectionClasses, sectionCollapse: sectionCollapse, contentClasses: contentClasses ) if ( string.IsNullOrEmpty( heading ) == false ) { <div class="@headingClassList"> <h2>@heading</h2> </div> } <div class="@contentClassList"> @content </div> @sectionEnd() } } @helper ProductVideo(string sectionClasses = "e-section", string contentClasses = null, string heading = null, string videoURL = null) { if ( string.IsNullOrEmpty( videoURL ) == false ) { ClassList headingClassList = new ClassList(); headingClassList.AddClasses( "col-12" ); ClassList contentClassList = new ClassList(); contentClassList.AddClasses( "col-12" ); @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses ) if ( string.IsNullOrEmpty( heading ) == false ) { <div class="@headingClassList"> <h2>@heading</h2> </div> } <div class="@contentClassList"> <div class="embed-responsive embed-responsive-16by9 mb-2"> <iframe class="embed-responsive-item" src="@videoURL" width="1080" height="608" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe> </div> </div> @sectionEnd() } } @helper ProductRelatedProducts(string sectionClasses = "e-section p-section p-section-bg-white pt-3 border-bottom", string contentClasses = null, string heading = null, IEnumerable<RazorTemplateBase<RazorTemplateModel<Template>>.LoopItem> productLoop = null) { if ( productLoop != null && productLoop.Any() == true ) { ClassList headingClassList = new ClassList(); headingClassList.AddClasses( "col-10 mx-auto" ); ClassList contentClassList = new ClassList(); contentClassList.AddClasses( "col-10 mx-auto" ); @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses ) if ( string.IsNullOrEmpty( heading ) == false ) { <div class="@headingClassList"> <h2>@heading</h2> </div> } <div class="@contentClassList"> <div class="e-products mb-2"> <div class="row"> @{ string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth( null ).ToResponsiveClasses(); } @foreach ( RazorTemplateBase<RazorTemplateModel<Template>>.LoopItem product in productLoop ) { @ProductlistItem( product, productlistItemClassList ) } </div> </div> </div> @sectionEnd() } } @helper ProductlistItem(RazorTemplateBase<RazorTemplateModel<Template>>.LoopItem product, string productlistItemClassList = null) { if ( product != null ) { dynamic productData = new { id = product.GetString( "Ecom:Product.ID" ), url = ProductService.Instance.GetProductLink( product.GetString( "Ecom:Product.PrimaryOrFirstGroupID" ), product.GetString( "Ecom:Product.ID" ) ), number = product.GetString( "Ecom:Product.Number" ), name = product.GetString( "Ecom:Product.Name" ), imageLarge = ImageService.Instance.GetImageURL( product.GetString( "Ecom:Product.ImageLarge.Clean" ), 450, 350, 5 ), price = ProductService.Instance.GetPriceFormatted( product.GetDouble( "Ecom:Product.Price.Price" ) ), descriptionShortExtra01 = product.GetString( "Ecom:Product:Field.DescriptionShortExtra01" ), descriptionShort = product.GetString( "Ecom:Product.ShortDescription" ), stock = new { id = product.GetString( "Ecom:Product:Stock.ID" ), quantity = product.GetString( "Ecom:Product.Stock" ), text = product.GetString( "Ecom:Product:Stock.Text" ), delivery = product.GetString( "Ecom:Product:Stock.DeliveryText" ) } }; <div class="@productlistItemClassList"> <div class="e-products-item js-e-products-item"> <div class="e-products-item-container"> <div class="junckers-relatedproducts-item-image-container" style="background: url(@productData.imageLarge)"> @if ( string.IsNullOrEmpty( productData.descriptionShort ) == false ) {<div class="junckers-relatedproducts-item-text-container py-1"> <p class="e-products-item-text mb-0 px-2 small"> <strong>Package Size</strong> </p> <p class="e-products-item-text mb-0 text-muted px-2 small"> @productData.descriptionShort </p> </div> } </div> <div class="e-products-item-text-container text-center"> <h3 class="e-products-item-name mb-0"> @productData.name </h3> @* <p class="e-products-item-text mb-0"> *@ @* <small class="e-products-item-price small text-muted"> *@ @* <a href="@productData.url"> *@ @* @productData.price *@ @* </a> *@ @* </small> *@ @* </p> *@ </div> </div> </div> </div> } } @helper sectionStart(string sectionClasses = "e-section", string contentClasses = null, bool sectionCollapse = false, string collapseToggleTextExpand = "Se mere", string collapseToggleTextCollapse = "Se mindre") { ClassList sectionClassList = new ClassList(); sectionClassList.AddClasses( sectionClasses ); ClassList contentClassList; string collapseId = Guid.NewGuid().ToString( "N" ); ClassList collapseToggleClassList = new ClassList(); if ( contentClasses == null ) { contentClassList = Co3.Espresso.Website.Services.PageService.Instance.GetResponsiveClassesFromPageItem( PageView.Current().Page.Item ); } else { contentClassList = new ClassList(); contentClassList.AddClasses( contentClasses ); } if ( sectionCollapse == true ) { sectionClassList.AddClasses( "p-section-collapse js-p-section-collapse" ); collapseToggleClassList.AddClasses( contentClasses ); collapseToggleClassList.AddClasses( "p-section-collapse-toggle collapsed order-last text-center" ); contentClassList.AddClasses( "p-section-collapse-content collapse is-md" ); } @:<section class="@sectionClassList"> @:<div class="container-fluid"> @:<div class="row"> if ( sectionCollapse == true ) // TODO: SplitPattern into seperate heler function { <div class="@collapseToggleClassList" data-toggle="collapse" data-target="#@collapseId"> <button class="btn btn-primary p-section-collapse-toggle-btn" type="button"> <i class="material-icons p-section-collapse-toggle-icon">keyboard_arrow_down</i> </button> <small class="p-section-collapse-toggle-text h4" data-expand-text="@collapseToggleTextExpand" data-collapse-text="@collapseToggleTextCollapse"></small> </div> } @:<div class="@contentClassList" id="@collapseId"> @:<div class="row"> } @helper sectionEnd() { @:</div> @:</div> @:</div> @:</div> @:</section> } <div class="e-loading-overlay e-page-loading-overlay is-loading js-e-page-loading-overlay"> <div class="e-loading-spinner"></div> </div> <div class="@Espresso.Canvas.ClassList"> @{ ClassList headerClassList = new ClassList(); headerClassList.AddClasses( "e-header js-e-header is-sticky" ); if ( Espresso.Item.HeaderTransparent == "True" ) { headerClassList.AddClasses( "is-transparent" ); } ClassList logoClassList = new ClassList(); logoClassList.AddClasses( "e-logo" ); string backButtonLink = Espresso.Item.BackButtonLink; ClassList backButtonClassList = new ClassList(); ClassList backButtonIconClassList = new ClassList(); if ( Espresso.Item.BackButton == "True" ) { backButtonClassList.AddClasses( "btn btn-sm btn-secondary my-1 align-self-center" ); if ( backButtonLink == "" || backButtonLink == "/" ) { backButtonLink = "/"; backButtonClassList.AddClasses( "js-e-back-link" ); } backButtonIconClassList.AddClasses( "material-icons" ); if ( Espresso.Item.BackButtonPosition == "right" ) { backButtonClassList.AddClasses( "order-last" ); logoClassList.AddClasses( "order-first" ); } else { backButtonClassList.AddClasses( "order-first" ); logoClassList.AddClasses( "mr-0 ml-auto order-last" ); } if ( Espresso.Item.BackButtonIcon == "arrow_back" ) { backButtonClassList.AddClasses( "arrow-left" ); backButtonIconClassList.AddClasses( "d-none" ); } else if ( Espresso.Item.BackButtonIcon == "arrow_forward" ) { backButtonClassList.AddClasses( "arrow-right" ); backButtonIconClassList.AddClasses( "d-none" ); } } string logoPrimary = Espresso.Area.Item.LogoPrimary; string logoSecondary = Espresso.Area.Item.LogoSecondary; if ( string.IsNullOrEmpty( logoSecondary ) == true ) { logoSecondary = logoPrimary; } string tagline = Espresso.Area.Item.Tagline; Dictionary< string, string > navigationHtml = new Dictionary< string, string > { { "global", RenderNavigation( new { id = "dwnav-global", template = "global.xslt", startlevel = 1, endlevel = 8, expandmode = "all" } ) }, { "utilities-primary", RenderNavigation( new { id = "dwnav-utilities-primary", template = "utilities.xslt", startlevel = 4, endlevel = 5, expandmode = "all", parenttag = "utilities-primary" } ) }, { "utilities-secondary", RenderNavigation( new { id = "dwnav-utilities-secondary", template = "utilities.xslt", startlevel = 4, endlevel = 4, expandmode = "all", parenttag = "utilities-secondary" } ) }, { "hamburger-header", RenderNavigation( new { id = "dwnav-hamburger-header", template = "utilities.xslt", startlevel = 4, endlevel = 4, expandmode = "all", parenttag = "hamburger-header" } ) }, { "hamburger-aside", RenderNavigation( new { id = "dwnav-hamburger-aside", template = "utilities.xslt", startlevel = 4, endlevel = 4, expandmode = "all", parenttag = "hamburger-aside" } ) } }; } @if ( Espresso.Item.HeaderHide != "True" ) { <header class="@headerClassList" data-autohide="true"> <div class="e-header-hamburger"> @sectionStart( "e-header-section e-section", "col-12" ) <div class="col-12 e-header-section-content"> <div class="@logoClassList"> <a class="e-logo-link" href="/"> <img src="@logoPrimary" class="e-logo-img e-logo-img-primary"> <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary"> @if ( string.IsNullOrEmpty( tagline ) == false ) { <p class="e-logo-tagline">@tagline</p> } </a> </div> @if ( Espresso.Item.NavigationHide != "True" ) { <section class="e-nav-hamburger-header"> <ul class="nav"> @navigationHtml[ "hamburger-header" ] @* TODO: Move to xslt *@ <li class="e-nav-item-hamburger-open nav-item"> <a class="nav-link" data-target=".modal.e-nav" data-toggle="modal" href="#"> <i class="e-nav-pageicon material-icons">menu</i> <span class="e-nav-pagename">@Translate( "Header - Hamburger menu open - Button", "Menu" )</span> </a> </li> </ul> </section> } @if ( Espresso.Item.BackButton == "True" ) { <a class="@backButtonClassList" href="@backButtonLink"> @if ( Espresso.Item.BackButtonIcon != "" ) { <i class="@backButtonIconClassList">@Espresso.Item.BackButtonIcon</i> } @Espresso.Item.BackButtonText </a> } </div> @sectionEnd() </div> <div class="e-nav js-e-nav modal p-0" data-backdrop="false"> <div class="e-nav-container navbar"> @sectionStart( "e-header-section e-section", "col-12" ) <div class="col-12 e-header-section-content"> <div class="@logoClassList"> <a class="e-logo-link" href="/"> <img src="@logoPrimary" class="e-logo-img e-logo-img-primary" alt="@Espresso.Area.Item.CompanyName"> <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary"> @if ( string.IsNullOrEmpty( tagline ) == false ) { <p class="e-logo-tagline">@tagline</p> } </a> </div> @if ( Espresso.Item.NavigationHide != "True" ) { <nav class="e-nav-global js-e-nav-global"> <ul class="nav"> @navigationHtml[ "global" ] </ul> </nav> <div class="e-nav-item-hamburger-close"> <a class="nav-link" data-target=".modal.e-nav" data-toggle="modal" href="#"> <i class="e-nav-pageicon material-icons">close</i> <span class="e-nav-pagename">@Translate( "Header - Hamburger menu close - Button", "Close" )</span> </a> </div> if ( string.IsNullOrEmpty( navigationHtml[ "utilities-primary" ] ) == false ) { @:</div> @sectionEnd() @sectionStart( "bg-tertiary e-header-section e-section", "col-12" ) @:<div class="col-12 e-header-section-content"> <nav class="e-nav-utilities-primary js-e-nav-utilities-primary"> <ul class="nav"> @navigationHtml[ "utilities-primary" ] </ul> </nav> } if ( string.IsNullOrEmpty( navigationHtml[ "utilities-secondary" ] ) == false ) { <nav class="e-nav-utilities-secondary"> <ul class="nav"> @navigationHtml[ "utilities-secondary" ] </ul> </nav> } if ( string.IsNullOrEmpty( navigationHtml[ "hamburger-aside" ] ) == false ) { <nav class="e-nav-hamburger-aside"> <ul class="nav"> @navigationHtml[ "hamburger-aside" ] </ul> </nav> } } @if ( Espresso.Item.BackButton == "True" ) { <a class="@backButtonClassList" href="@backButtonLink"> @if ( Espresso.Item.BackButtonIcon != "" ) { <i class="@backButtonIconClassList">@Espresso.Item.BackButtonIcon</i> } @Espresso.Item.BackButtonText </a> } </div> @sectionEnd() </div> </div> </header> } @using Dynamicweb.Security.UserManagement @{ User currentUser = User.get_Current( PagePermissionLevels.Frontend ); if ( currentUser != null ) { User currentSecondaryUser = currentUser.CurrentSecondaryUser; if ( currentSecondaryUser != null ) { @sectionStart( "e-section bg-warning", "col-12" ) <div class="align-self-center col-12 col-lg-9 col-md-8 my-1"> <p class="line-height-sm mb-0 text-center text-md-left"> <i class="material-icons material-icons-2x">supervisor_account</i> You are currently impersonating this user: <strong>@currentUser.Name</strong> </p> </div> <div class="align-self-center col-12 col-lg-3 col-md-4 my-1"> <form class="mb-0 small text-center text-md-right" method="post" action="@Espresso.Area.Item.ExtranetImpersonationPage"> <button class="btn btn-primary" name="DwExtranetRemoveSecondaryUser" type="submit">Stop impersonation</button> </form> </div> @sectionEnd() } } } <main class="e-content"> @using Dynamicweb.Content; @using Dynamicweb.Extensibility; @{ string eBreadcrumbClasslist = "e-breadcrumb js-e-breadcrumb d-none d-lg-block"; if ( Espresso.Item.Breadcrumb != "auto" && Espresso.Item.Breadcrumb != "none" && String.IsNullOrEmpty( Espresso.Item.Breadcrumb ) == false ) { eBreadcrumbClasslist += string.Format( " e-breadcrumb-{0}", Espresso.Item.Breadcrumb ); } string navigationHtmlBreadcrumb = RenderNavigation( new { id = "dwnav-breadcrumb", template = "breadcrumb.xslt", startlevel = 1, endlevel = 10, expandmode = "pathonly" } ); } @if ( string.IsNullOrEmpty( navigationHtmlBreadcrumb ) == false && Espresso.Item.Breadcrumb != "none" && string.IsNullOrEmpty( Espresso.Item.Breadcrumb ) == false ) { <section class="e-section @eBreadcrumbClasslist"> <div class="container-fluid"> <div class="row"> <div class="col-12"> <div class="row"> <div class="col-12"> <nav class="e-breadcrumb-container"> <ol class="breadcrumb nav text-muted"> <li class="breadcrumb-item m-0 p-0"> <a class="arrow-left breadcrumb-back-link js-e-back-link px-0" href="/">@Translate( "Breadcrumb - Back link", "Back" )</a> <span class="breadcrumb-prefix-text"> @Translate( "Breadcrumb - Prefix - Text", "You are here:" ) </span> <a href="/"> @ServiceLocator.Current.GetPageService().GetFirstPageForArea( GetInteger( "DwAreaID" ) ).MenuText </a> </li> @navigationHtmlBreadcrumb </ol> </nav> </div> </div> </div> </div> </div> </section> } <article id="dwcontentmain" class="e-content-main @Espresso.ContentArea.ClassList"> @{ string NavigationLocalHorizontalClassList = "e-nav-local e-nav-local-horizontal js-e-nav-local-horizontal"; string NavigationLocalHorizontalContainerClassList = "e-nav-local-container"; if( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "horizontal" ) { NavigationLocalHorizontalClassList += " " + Espresso.Item.NavigationLocalCustomClasses; if( Espresso.Item.NavigationLocalSticky == "True" ) { NavigationLocalHorizontalClassList += " is-sticky"; } if( Espresso.Item.NavigationLocalAbsolute == "True" ) { NavigationLocalHorizontalClassList += " is-absolute"; } else{ if( Espresso.Item.NavigationLocalMarginTop != "0" && Espresso.Item.NavigationLocalMarginTop != "" ) { NavigationLocalHorizontalClassList += " mt-" + Espresso.Item.NavigationLocalMarginTop; } if( Espresso.Item.NavigationLocalMarginBottom != "0" && Espresso.Item.NavigationLocalMarginBottom != "" ) { NavigationLocalHorizontalClassList += " mb-" + Espresso.Item.NavigationLocalMarginBottom; } } } } @if( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "horizontal" ) { <section class="e-section @NavigationLocalHorizontalClassList"> <div class="container-fluid"> <div class="row"> <div class="col-12"> <div class="row"> <div class="col-12"> <nav id="dwnav-local-@Espresso.DynamicwebPage.ID" class="@NavigationLocalHorizontalContainerClassList"> <ul class="nav justify-content-start"> @if( Espresso.Item.NavigationLocalHeading != "" ){ <li class="e-nav-local-heading"><h2>@Espresso.Item.NavigationLocalHeading</h2></li> } @RenderNavigation( new { id = "dwnav-local-" + Espresso.DynamicwebPage.ID, parentid = string.IsNullOrEmpty( Espresso.Item.NavigationLocalParentPage ) == false ? Espresso.Item.NavigationLocalParentPage : Espresso.DynamicwebPage.ID, template = string.IsNullOrEmpty( Espresso.Item.NavigationLocalTemplate ) == false ? Espresso.Item.NavigationLocalTemplate : "local-" + Espresso.Item.NavigationLocalLayout + ".xslt", startlevel = Espresso.Item.NavigationLocalLevelStart, endlevel = Espresso.Item.NavigationLocalLevelEnd, expandmode = Espresso.Item.NavigationLocalPageTreeExpand == "True" ? "all" : "path", } ) </ul> </nav> </div> </div> </div> </div> </div> </section> } @{ string NavigationLocalVerticalClassList = "e-nav-local e-nav-local-vertical js-e-nav-local-vertical"; string NavigationLocalVerticalContainerClassList = "e-nav-local-container"; string NavigationLocalVerticalTemplate = "local-" + Espresso.Item.NavigationLocalLayout + ".xslt"; if ( string.IsNullOrEmpty( Espresso.Item.NavigationLocalTemplate ) == false && Path.GetExtension( Espresso.Item.NavigationLocalTemplate ) == ".xslt" ) { NavigationLocalVerticalTemplate = Path.GetFileName( Espresso.Item.NavigationLocalTemplate ); } if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "vertical" ) { NavigationLocalVerticalClassList += " " + Espresso.Item.NavigationLocalCustomClasses; //NavigationLocalVerticalClassList += " col-3"; if ( Espresso.Item.NavigationLocalMarginTop != "0" && Espresso.Item.NavigationLocalMarginTop != "" ) { NavigationLocalVerticalClassList += " mt-" + Espresso.Item.NavigationLocalMarginTop; } if ( Espresso.Item.NavigationLocalMarginBottom != "0" && Espresso.Item.NavigationLocalMarginBottom != "" ) { NavigationLocalVerticalClassList += " mb-" + Espresso.Item.NavigationLocalMarginBottom; } if ( Espresso.Item.NavigationLocalSticky == "True" ) { NavigationLocalVerticalClassList += " is-sticky"; } if ( Espresso.Item.NavigationLocalAbsolute == "True" ) { NavigationLocalVerticalClassList += " is-absolute"; } else { Espresso.ContentSection.ClassList.Clear(); Espresso.ContentSection.ClassList.AddClasses( "wtf col-12 col-lg-9 ml-auto" ); } } } @if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "vertical" ) { <section class="e-section @NavigationLocalVerticalClassList"> <div class="container-fluid"> <div class="row"> <div class="col-12"> <div class="row"> <div class="col-3"> <nav id="dwnav-local-@Espresso.DynamicwebPage.ID" class="@NavigationLocalVerticalContainerClassList"> <ul class="flex-column nav"> @if ( Espresso.Item.NavigationLocalHeading != "" ) { <li class="e-nav-local-heading"> <h2>@Espresso.Item.NavigationLocalHeading</h2> </li> } @RenderNavigation( new { id = "dwnav-local-" + Espresso.DynamicwebPage.ID, parentid = string.IsNullOrEmpty( Espresso.Item.NavigationLocalParentPage ) == false ? Espresso.Item.NavigationLocalParentPage : Espresso.DynamicwebPage.ID, template = NavigationLocalVerticalTemplate, startlevel = Espresso.Item.NavigationLocalLevelStart, endlevel = Espresso.Item.NavigationLocalLevelEnd, expandmode = Espresso.Item.NavigationLocalPageTreeExpand == "True" ? "all" : "path", } ) </ul> </nav> </div> </div> </div> </div> </div> </section> } @sectionStart() @GetValue("DwContent(dwcontentmain)") @sectionEnd() </article> </main> @using System.Globalization @using Dynamicweb.Frontend @{ string FooterContentClassList = "e-footer-content e-section"; if( Espresso.Item.ContentAnimate == "True" ){ @* FooterContentClassList += " js-e-scroll-reveal"; *@ } } @if( Espresso.Item.FooterHide != "True" ){ <footer class="e-footer"> <article class="e-footer-wrapper"> <section class="@FooterContentClassList"> <div class="container-fluid"> <div class="row"> @if( string.IsNullOrEmpty( Espresso.Area.Item.FooterParagraphs ) == false ){ foreach( string paragraphID in Espresso.Area.Item.FooterParagraphs.Split( new char[]{','}, StringSplitOptions.None ) ){ @RenderParagraphContent( int.Parse( paragraphID ) ); } } @if( string.IsNullOrEmpty( GetString("DwNavigation(dwnavutilitiessecondaryfooter)") ) == false ){ <div class="col-12"> <aside class="e-nav-utilities-secondary"> <ul class="nav nav-inline"> @GetValue("DwNavigation(dwnavutilitiessecondaryfooter)") </ul> </aside> </div> } </div> </div> </section> <section class="e-footer-copyright e-section"> <div class="container-fluid"> <div class="row align-items-center"> <div class="col-12 col-sm-7"> <p class="e-copyright"> @Translate("Footer - Copyright - Text", "Copyright &copy;") @GetGlobalValue("Global:Server.Date.Year") @Espresso.Area.Item.CompanyName. @Translate("Footer - All Rights Reserved - Text", "All rights reserved.") </p> </div> <div class="col-12 col-sm-5 text-left text-sm-right"> <p class="website-by-co3"><a href="https://www.co3.dk/" target="_blank">Website: Co3</a></p> <p class="pdf-only">@Translate("Footer - PDF created - Text", "PDf created:") @DateTime.Now.ToString( PageView.Current().Area.CultureInfo )</p> </div> </div> </div> </section> </article> </footer> } @if( string.IsNullOrEmpty( GetString("DwContent(dwcontentcta)") ) == false ) { <aside id="dwcontentcta" class="js-e-cta e-cta is-hidden fixed-top"> <section class="e-section"> <div class="container-fluid"> <div class="row no-gutters"> <div class="col-12"> <div class="row no-gutters justify-content-center align-items-center"> @GetValue("DwContent(dwcontentcta)") @* <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> *@ </div> </div> </div> </div> </section> </aside> } <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="m-0 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="{{imageLarge}}"> </a> </div> <div class="col-8"> <h3 class="mb-0"> <a href="{{url}}" class="text-decoration-none">{{name}}</a> </h3> <p class="mb-0"> <a href="{{url}}" class="text-auto text-decoration-none"> {{{price}}}<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">Shop videre</a> <a class="arrow-right btn btn-primary" href="/shop/cart">Gå til kurv</a> </div> </div> </div> </div> </div> <div class="modal fade e-search js-e-search js-e-search-modal modal-fullscreen" data-backdrop="false" data-keyboard="true" data-focus="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <a class="btn btn-sm btn-secondary js-e-back-link arrow-left" href="/" data-dismiss="modal"> @Translate("Search - Back button", "Back") </a> <div class="e-logo"> <a href="/" class="e-logo-link my-0"> <img src="@logoPrimary" class="e-logo-img e-logo-img-primary"> <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary"> </a> </div> </div> <div class="modal-body"> <div class="container-fluid"> <div class="e-search-form-container"> <div class="row justify-content-center"> <div class="col-12 col-md-10 col-lg-8 col-xl-6 mt-3"> <form action="" class="e-search-form js-e-search-form"> <div class="js-e-search-input-group e-search-input-group is-empty"> <label class="e-search-label" for="e-search-input"><i class="material-icons">search</i></label> @{ string Translate_Search_InputText = Translate("Search - Input Placeholder - Text", "Search"); } <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"> <span class="js-e-search-clear e-search-clear"><i class="material-icons">close</i></span> <button class="e-search-submit btn btn-primary" type="submit"><i class="material-icons">search</i></button> </div> </form> </div> </div> </div> <div class="js-e-search-result-container e-search-result-container"> <div class="row justify-content-center"> <div class="col-12 col-md-10 col-lg-8 col-xl-6"> <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> </div> </div> <div class="row justify-content-center"> <div class="col-12 col-xl-10"> <div class="js-e-search-result-products e-search-result-products is-empty mb-4"> <script id="js-e-handlebars-tmpl-search-result-item-product" type="text/x-handlebars-template"> <div class="e-products"> <div class="row"> {{#loop products}} <div class="col-6 col-sm-6 col-md-4 col-lg-4"> <div class="e-products-item"> <div class="e-products-item-container"> <div class="e-products-item-image-container"> <a class="e-products-item-image-wrapper" href="{{url}}"> <img src="{{imageLarge}}" alt="" class="e-products-item-image j-img-productcategory-{{category}}"> </a> </div> <div class="e-products-item-text-container text-center small"> <h3 class="e-products-item-name mb-0"><a href="{{url}}">{{name}}</a></h3> {{#if floorCategoryName}} <p>{{{floorCategoryName}}}</p> {{/if}} {{#if descriptionShortExtra01}} <p class="e-products-item-text mb-0 small"> <a href="{{url}}"> {{descriptionShortExtra01}} </a> </p> {{/if}} @* <p class="e-products-item-text mb-0 small"> *@ @* <span class="e-products-item-price"> *@ @* <a href="{{url}}"> *@ @* {{{price}}} *@ @* </a> *@ @* </span> *@ @* </p> *@ </div> </div> </div> </div> {{/loop}} </div> <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> </div> </script> </div> </div> </div> <div class="row justify-content-center"> <div class="col-12 col-md-10 col-lg-8 col-xl-6"> <div class="js-e-search-result-pages e-search-result-pages is-empty mb-3"> <script id="js-e-handlebars-tmpl-search-result-item-page" type="text/x-handlebars-template"> <div class="row"> {{#loop pages}} <div class="col-12"> <p class="mb-0"><a href="{{{url}}}" class="text-bold">{{{title}}}</a></p> <p class="mb-0 small text-truncate"> <a href="{{{url}}}" class="text-auto text-muted text-decoration-none"><span class="d-none d-sm-inline">@GetGlobalValue( "Global:Request.Host" )</span>{{{url}}}</a></p> <p class="small">{{{text}}}...</p> </div> {{/loop}} </div> </script> </div> </div> </div> <div class="js-e-search-loading-overlay e-loading-overlay e-search-loading-overlay"> <div class="e-loading-spinner"></div> </div> </div> </div> </div> </div> </div> </div> @if( Espresso.Area.Item.BackToTopLink == "True" ){ <a href="#top" class="e-back-to-top js-e-back-to-top"><i class="material-icons">keyboard_arrow_up</i></a> } @using System.Web; @inherits Co3.Espresso.Website.TemplateBases.Pages.PageBase @{ HttpCookie optInLevel = HttpContext.Current.Request.Cookies[ "Dynamicweb.CookieOptInLevel" ]; bool showCookieWarning = optInLevel == null; if ( optInLevel != null ) { showCookieWarning = optInLevel.Value != "2"; } } @if ( showCookieWarning ) { <div class="e-cookie js-e-cookie py-1" hidden=""> <aside class="e-cookie-wrapper"> <section class="e-section"> <div class="container-fluid"> <div class="align-items-center row"> <div class="col-12 col-lg-10 col-md-9 my-1"> <p class="line-height-sm mb-0 small text-center text-md-left"> <span class="d-md-inline d-none"> @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" ) </span> <span class="d-md-none"> @Translate( "Cookie Warning - Message Short - Text", "This website uses cookies to improve your experience. Learn more about our" ) </span> &nbsp; <a href="@Espresso.Area.Item.CookieMessage">@Translate( "Cookie Warning - Policy - Link", "cookie policy" )</a> </p> </div> <div class="col-12 col-lg-2 col-md-3 my-1"> <p class="mb-0 text-center text-md-right"> <button class="btn e-cookie-accept-btn js-e-cookie-accept-btn" type="button"> @Translate( "Cookie Warning - Accept - Button", "OKAY" ) </button> </p> </div> </div> </div> </section> </aside> </div> } @if ( 1 == 2 ) { @GetValue( "DwCookieWarning" ) } <div class="d-none flex-column"> <div class="bg-primary"> <br> </div> <div class="bg-secondary"> <br> </div> <div class="bg-tertiary"> <br> </div> </div> <script async="" src="/Files/Templates/Designs/junckers/_assets/_dist/js/default.js?v=1.13"></script> <a class="js-junckers-documentation-link junckers-documentation-pdf-link pdf-hidden" href="#" target="_blank"> <i class="material-icons">picture_as_pdf</i> </a> </body> @GetValue( "CopyRightNotice" ) </html>