Error executing template "Designs/isabella/_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.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 Dynamicweb.Rendering.TemplateBase`1.RenderNavigation(Object settings)at CompiledRazorTemplates.Dynamic.RazorEngine_08bb5c7845e44f0ebe66f9c0c2985a5e.Execute() in D:\dynamicweb.net\Solutions\isabella.espresso4.dk\files\Templates\Designs\isabella\_parsed\espresso.parsed.cshtml:line 1008at 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 Co3.Espresso.Website.Services 5 @using Dynamicweb.Admin.dk.dynamicweb.templates 6 @using Dynamicweb.Ecommerce.Common 7 @using Dynamicweb.Frontend 8 @using System.Net 9 @using System.Net.Sockets 10 @{ 11 string globalAreaLang = PageView.Current().Area.CultureInfo.TwoLetterISOLanguageName; 12 string globalAreaName = string.Empty; 13 globalAreaName = PageView.Current().Area.Name; 14 string currencySeparatorDecimal = PageView.Current().Area.CultureInfo.NumberFormat.NumberDecimalSeparator; 15 string currencySeparatorInteger = PageView.Current().Area.CultureInfo.NumberFormat.NumberGroupSeparator; 16 string openGraphUrl = PageView.Current().SearchFriendlyUrl; 17 string openGraphImage = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Host + Espresso.OpenGraphImage; 18 bool isUserAuthenticated = PageView.Current().User != null; 19 string webfontsSnippetHtml = RenderSnippet( "webfonts" ).ToString().Trim(); 20 string customWebsite = PageView.Current().Area.Item["CustomWebsite"]?.ToString(); 21 string shopType = PageView.Current().Area.Item["ShopType"]?.ToString(); 22 23 //string hostName = Dns.GetHostName(); 24 //List< string > visitorIP = ( from ip in host.AddressList where ip.AddressFamily == AddressFamily.InterNetwork select ip.ToString() ).ToList(); 25 } 26 <!DOCTYPE html> 27 <html lang="@globalAreaLang" data-separator-integer="@currencySeparatorInteger" data-separator-decimal="@currencySeparatorDecimal" data-area="@globalAreaName" data-shop="@shopType"> 28 <head> 29 @GetValue( "CopyRightNotice" ) 30 <meta charset="utf-8"> 31 <meta content="width=device-width, initial-scale=1, shrink-to-fit=no, minimal-ui" name="viewport"> 32 <meta content="ie=edge" http-equiv="x-ua-compatible"> 33 <title>@GetValue("Title")</title> 34 @Espresso.CriticalCSS 35 @if ( webfontsSnippetHtml != "<!--@Snippet(webfonts)-->" ) 36 { 37 @webfontsSnippetHtml 38 } 39 <link href="/Files/Templates/Designs/isabella/_assets/_dist/css/default.css?v=1.07" media="@Espresso.StylesheetAttributeMedia" rel="@Espresso.StylesheetAttributeRel" as="style"> 40 @Espresso.CriticalJS 41 @*<meta name="description" content="@Espresso.DynamicwebPage.Description">*@ 42 <link rel="shortcut icon" href="@Espresso.Area.Item.Favicon"> 43 @GetValue( "MetaTags" ) 44 @if ( Espresso.IsStagingUrl ) 45 { 46 <meta content="noindex,nofollow" name="robots"> 47 } 48 <meta property="og:url" content="@openGraphUrl"> 49 <meta property="og:title" content="@Espresso.OpenGraphTitle"> 50 <meta property="og:description" content="@Espresso.OpenGraphDescription"> 51 <meta property="og:image" content="@openGraphImage"> 52 <meta property="og:type" content="website"> 53 <meta name="facebook-domain-verification" content="8kymtn6m9jq0t3gqsk3y6dqbadc3qf"> 54 @if ( string.IsNullOrEmpty( Espresso.Area.Item.GoogleSiteVerification ) == false ) 55 { 56 <meta name="google-site-verification" content="@Espresso.Area.Item.GoogleSiteVerification"> 57 } 58 @{ 59 if ( 1 == 2 ) 60 { 61 @GetValue( "Stylesheets" ) 62 } 63 } 64 65 @inherits Co3.Espresso.Website.TemplateBases.Pages.PageBase 66 @using System.Web; 67 @using System.IO 68 @using Dynamicweb.Content 69 @using Dynamicweb.Content.Items 70 @using Dynamicweb.Rendering 71 @using Dynamicweb.Frontend 72 73 <!-- Hreflang --> 74 @{ 75 @* Get areas from service *@ 76 Dynamicweb.Content.AreaService areaService = new Dynamicweb.Content.AreaService(); 77 IList<Area> areas = areaService.GetAreas(); 78 @* Get current page's relation-text from page-item *@ 79 string currentPageRelation = PageView.Current().Page.Item["PageRelation"] != null ? PageView.Current().Page.Item["PageRelation"].ToString() : string.Empty; 80 @* Frontpage must have 'frontpage' as relation-text *@ 81 82 string frontpageRelation = "i-frontpage"; 83 int REDIRECT_ID = 1; 84 if (PageView.Current().Area.Item["CustomWebsite"] != null && PageView.Current().Area.Item["CustomWebsite"].ToString() == "timeout-website") 85 { 86 frontpageRelation = "t-frontpage"; 87 REDIRECT_ID = 63; 88 } 89 string domainBase = areas.FirstOrDefault( a => a?.ID == REDIRECT_ID ).DomainLock; 90 List<dynamic> areaInfoList = new List< dynamic >(); 91 92 @* Iterate areas *@ 93 foreach ( Area area in areas ) 94 { 95 if ( area.Active == true && area.ID != REDIRECT_ID ) 96 { 97 98 @* Get current area's culture *@ 99 string culture = area.Culture;100 string name = area.Name;101 @* Check for IsDefault Hreflang on area *@102 string isDefaultHrefLang = area.Item[ "IsDefaultHrefLang" ] != null ? area.Item[ "IsDefaultHrefLang" ].ToString() : string.Empty;103 @* Check for override-culture text on area *@104 string hreflangCultureOverride = area.Item[ "HreflangLanguageOverride" ] != null ? area.Item[ "HreflangLanguageOverride" ].ToString() : string.Empty;105106 string isWebsiteExcluded = area.Item["ExcludeFromHreflang"] != null ? area.Item["ExcludeFromHreflang"]?.ToString() : string.Empty;107 @* Get scheme and domain *@108 string scheme = GetGlobalValue("Global:Request.Scheme");109 string domain = domainBase;110 @* If we have a primary domain call pageservice and get pages *@111112 string productId = HttpContext.Current.Request[ "productid" ];113 if (string.IsNullOrEmpty(productId) == false)114 {115 currentPageRelation = PageView.Current().Page.Parent.Item["PageRelation"].ToString();116 }117118 if ( string.IsNullOrEmpty(currentPageRelation) == false && string.IsNullOrEmpty(domain) == false )119 {120121122 Dynamicweb.Content.PageService pageService = new Dynamicweb.Content.PageService();123 IEnumerable< Dynamicweb.Content.Page > pages = pageService.GetPagesByAreaID(area.ID);124 @* Iterate pages in area - check if is active + has item + has item-pagerelation + item-pagerelation equals current pagerelation *@125 foreach ( Dynamicweb.Content.Page page in pages.Where(p => p.Published && p.Item != null && p.Item[ "PageRelation" ] != null && p.Item[ "PageRelation" ].ToString().Equals(currentPageRelation)) )126 {127128 string url = string.Empty;129 if ( string.IsNullOrEmpty(productId) == false )130 {131 @* Build url to area product page *@132 string prodUrl = string.Format("Default.aspx?ID={0}&ProductId={1}", pageService.GetPagesByParentID(page.ID)?.FirstOrDefault()?.ID, productId);133 url = string.Format("{0}://{1}{2}", scheme, domain, SearchEngineFriendlyURLs.GetFriendlyUrl(prodUrl, area.EcomLanguageId));134 }135 else136 {137 @* Build url to area page *@138 url = string.Format("{0}://{1}{2}", scheme, domain, SearchEngineFriendlyURLs.GetFriendlyUrl(page.GetPageHrefValue()));139 }140 @* If our current page relation match frontpage - set link to domain only *@141 if ( currentPageRelation == frontpageRelation )142 {143 url = string.Format("{0}://{1}/{2}", scheme, domain, name);144 }145146 @* If our area item has checked in Default hreflang, we render x-default link *@147 if ( isDefaultHrefLang == "True" )148 {149 <link rel="alternate" hreflang="x-default" href="@url">150 }151 @* If we have a value in the area-item to overrule the culture, override the value here *@152 if ( string.IsNullOrEmpty(hreflangCultureOverride) == false )153 {154 culture = hreflangCultureOverride;155 }156 @* Render hreflang-link *@157 if ( isWebsiteExcluded != "True")158 {159 <link rel="alternate" hreflang="@culture.ToLower()" href="@url">160 }161162 }163 }164 }165 }166167 }168 <!-- End Hreflang -->169170 @if ( string.IsNullOrEmpty( Espresso.Area.GoogleTagManagerID ) == false && Espresso.Area.GoogleTagManagerID != "GTM-XXXX" )171 {172 <!-- Google Tag Manager -->173 <script>174 (function(w, d, s, l, i) {175 w[l] = w[l] || [];176 w[l].push({177 'gtm.start':178 new Date().getTime(),179 event: 'gtm.js'180 });181 var f = d.getElementsByTagName(s)[0],182 j = d.createElement(s),183 dl = l != 'dataLayer' ? '&l=' + l : '';184 j.async = true;185 j.src =186 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;187 f.parentNode.insertBefore(j, f);188 })(window, document, 'script', 'dataLayer', '@Espresso.Area.GoogleTagManagerID');189 </script>190 <!-- End Google Tag Manager -->191 }192193 <meta name="p:domain_verify" content="f3602094bd5d9d79dad3925721bc1ae4">194 <meta name="msvalidate.01" content="DF1E6C310BF3052B5579FABC80E4444D">195196 </dynamic></head>197198 @*199 @{200 if ( Context.Currency.Code != Pageview.Area.EcomCurrencyId)201 {202 Context.Currency.Code = Pageview.Area.EcomCurrencyId;203 Dynamicweb.Context.Current.Response.Redirect(Dynamicweb.Context.Current.Request.RawUrl);204 }205 }206207 *@208209 <body class="@Espresso.Item.CustomClasses @customWebsite" data-cart-currencycode="@Context.Currency.Code" data-shop-currencycode="@Pageview.Area.EcomCurrencyId" data-userauthenticated="@isUserAuthenticated.ToString().ToLower()">210 @if ( string.IsNullOrEmpty( Espresso.Area.GoogleTagManagerID ) == false && Espresso.Area.GoogleTagManagerID != "GTM-XXXX" )211 {212 <!-- Google Tag Manager (noscript) -->213 <noscript>214 <iframe src="https://www.googletagmanager.com/ns.html?id=@Espresso.Area.GoogleTagManagerID" height="0" width="0" style="display: none; visibility: hidden"></iframe>215 </noscript>216 <!-- End Google Tag Manager (noscript) -->217 }218 @using Dynamicweb.Frontend219 @inherits Co3.Espresso.Website.TemplateBases.Pages.PageBase220 @{221 Espresso.Canvas.ClassList.AddClasses( "js-e-canvas is-loading" );222 if ( Espresso.Item.CanvasFullscreen == "True" )223 {224 Espresso.Canvas.ClassList.AddClasses( "is-fullscreen" );225 }226227 }228229230231 @using System.Globalization232 @using System.Security.Cryptography.X509Certificates233 @using Co3.Espresso.Base.Extensions234 @using Co3.Espresso.Website.Models.FrontEnd235 @using Co3.Espresso.Website.Services236 @using Co3.Isabella.Dw.Models.FrontEnd.Ecommerce237 @using Dynamicweb.Content238 @using Dynamicweb.Ecommerce.Products239 @using Dynamicweb.Frontend240 @using Dynamicweb.Rendering241 @using Dynamicweb.Rendering.Translation242 @using EcomContext = Dynamicweb.Ecommerce.Common.Context243 @using eProductService = Co3.Espresso.Website.Services.ProductService244245 @functions {246247 public string getCountryCodeFromArea(Area area)248 {249 RegionInfo regionInfo = new RegionInfo( area.CultureInfo.LCID );250 return regionInfo.TwoLetterISORegionName;251 }252253 public string getCheckoutSetup(string shopType = "")254 {255 bool isB2bCheckout = PageView.Current().User != null;256 string checkoutStepSetup = isB2bCheckout ? "shipping,customer,approve" : shopType == "B2C" ? "shipping,customer,payment,approve" : "customer,approve";257 return checkoutStepSetup;258 }259260 public static string GetStandardCollapseToggleTextExpand()261 {262 return "Se mere";263 }264265 public static string GetStandardCollapseToggleTextCollapse()266 {267 return "Se mindre";268 }269270 public string getModelTypeLink()271 {272 bool isUserAuthenticated = PageView.Current().User != null;273 string eComCountryCode = PageView.Current().Area.Item[ "EcommerceCountryCode" ] != null ? PageView.Current().Area.Item[ "EcommerceCountryCode" ].ToString() : "";274 string returnValue = string.Empty;275276 if ( isUserAuthenticated == false )277 {278 if ( string.IsNullOrEmpty(eComCountryCode) == false)279 {280 {281 returnValue = string.Format( "Ecom:Product.CategoryField.ModelType.ModelTypeLink_{0}.Value", eComCountryCode );282 }283 }284 else285 {286 returnValue = "Ecom:Product.CategoryField.ModelType.ModelTypeLink.Value";287 }288 }289 else290 {291 if ( string.IsNullOrEmpty(eComCountryCode) == false)292 {293 {294 returnValue = string.Format( "Ecom:Product.CategoryField.ModelType.ModelTypeLinkB2B_{0}.Value", eComCountryCode );295 }296 }297 else298 {299 returnValue = "Ecom:Product.CategoryField.ModelType.ModelTypeLinkB2B.Value";300 }301 }302303 return returnValue;304 }305306 }307308 @helper ProductDescription(string sectionClasses = "e-section", bool sectionCollapse = false, string contentClasses = null, string heading = null, string content = null, string collapseToggleTextExpand = null, string collapseToggleTextCollapse = null)309 {310 if ( string.IsNullOrEmpty( content ) == false )311 {312 ClassList headingClassList = new ClassList();313 headingClassList.AddClasses( "col-12" );314 ClassList contentClassList = new ClassList();315 contentClassList.AddClasses( "col-12" );316317 @sectionStart( sectionClasses: sectionClasses, sectionCollapse: sectionCollapse, contentClasses: contentClasses, collapseToggleTextCollapse: collapseToggleTextCollapse, collapseToggleTextExpand: collapseToggleTextExpand )318319 if ( string.IsNullOrEmpty( heading ) == false )320 {321 <div class="@headingClassList">322 <h2>@heading</h2>323 </div>324 }325 <div class="@contentClassList">326 @content327 </div>328329 @sectionEnd()330 }331 }332333334 @helper ProductVideo(string sectionClasses = "e-section", string contentClasses = null, string heading = null, string videoURL = null)335 {336 if ( string.IsNullOrEmpty( videoURL ) == false )337 {338 ClassList headingClassList = new ClassList();339 headingClassList.AddClasses( "col-12" );340 ClassList contentClassList = new ClassList();341 contentClassList.AddClasses( "col-12" );342343344 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )345346 if ( string.IsNullOrEmpty( heading ) == false )347 {348 <div class="@headingClassList">349 <h2>@heading</h2>350 </div>351 }352353 <div class="@contentClassList">354 <div class="embed-responsive embed-responsive-16by9 mb-2">355 <iframe class="embed-responsive-item" src="@videoURL" width="1080" height="608" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>356 </div>357 </div>358 @sectionEnd()359 }360 }361362 @helper ProductRelatedProducts(string sectionClasses = "e-section", bool sectionCollapse = false, string contentClasses = null, string heading = null, string content = null, string collapseToggleTextExpand = null, string collapseToggleTextCollapse = null,363 IEnumerable< Product > productLoop = null)364 {365 if ( productLoop != null && productLoop.Any() == true )366 {367 ClassList headingClassList = new ClassList();368 headingClassList.AddClasses( "col-12" );369 ClassList contentClassList = new ClassList();370 contentClassList.AddClasses( "col-12" );371372 @sectionStart( sectionClasses: sectionClasses, sectionCollapse: sectionCollapse, contentClasses: contentClasses, collapseToggleTextCollapse: collapseToggleTextCollapse, collapseToggleTextExpand: collapseToggleTextExpand )373374 if ( string.IsNullOrEmpty( heading ) == false )375 {376 <div class="@headingClassList">377 <h4 class="isabella-text-bullets-left mb-3">@heading</h4>378 </div>379 }380 <div class="@contentClassList">381 <div class="e-products mb-2">382 <div class="row">383 @{384 string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth( null ).ToResponsiveClasses();385 }386 @foreach ( Product product in productLoop.Where(p => p.Groups.Any(g => g.ShopId.Equals("SHOP1")) && (bool) p.GetCategoryValue( "ProductsGeneral", "PIMActive" ) != false && (bool) p.ShowInProductList == true && Co3.Isabella.Dw.Services.ProductService.Instance.IsProductAllowed(PageView.Current().User, p)) )387 {388 @ProductlistItem(product, productlistItemClassList)389 }390 </div>391 </div>392 </div>393394 @sectionEnd()395 }396 }397398399 @helper ProductlistItem(Product product, string productlistItemClassList = null, string isModelProductList = null)400 {401 Dynamicweb.Ecommerce.Products.ProductService dwProductService = new Dynamicweb.Ecommerce.Products.ProductService();402403 string productLink = eProductService.Instance.GetProductLink( product.GetDefaultGroupByShopId( product.DefaultShopId ).Id, product.Id, product.VariantId );404 productLink = SearchEngineFriendlyURLs.GetFriendlyUrl( productLink );405406 string productlistDetailImage = product.Details.FirstOrDefault( pd => pd.Type == 0 && pd.GroupId == 4 )?.Value;407408 if ( product != null )409 {410 dynamic productData = new411 {412 id = product.Id,413 url = productLink,414 number = product.Number,415 name = product.Name,416 imageDefault = Co3.Isabella.Dw.Services.ImageService.Instance.GetImageURL( Dynamicweb.Ecommerce.Services.Details.GetDefaultDetail( product.Id, product.VariantId,417 EcomContext.LanguageID )?.Value, 400, 225, 0, 75, "jpg", "/Files/Templates/Designs/isabella/_assets/img/NoImage.gif" ),418 price = Co3.Isabella.Dw.Services.ProductService.Instance.GetPrice( product.Id ).Format(),419 priceClean = Co3.Isabella.Dw.Services.ProductService.Instance.GetPrice( product.Id ).Price,420 productIntroText = product.GetCategoryValue( "ProductsGeneral", "ProductIntroText" )?.ToString(),421 news = product.GetCategoryValue( "ProductsGeneral", "News" )?.ToString(),422 productType = product.GetCategoryValue( "ProductsGeneral", "ProductType" )?.ToString(),423 isModelProductList = isModelProductList,424 productlistDetailImage = Co3.Isabella.Dw.Services.ImageService.Instance.GetImageURL( productlistDetailImage ),425 };426427 <div class="@productlistItemClassList">428 <div class="border-1 card mb-6">429 <a href="@productData.url">430 @if ( productData.isModelProductList == "True" )431 {432 <img src="@productData.productlistDetailImage" alt="@productData.name @productData.productType" class="col-12 p-0">433 }434 else435 {436 <img src="@productData.imageDefault" alt="@productData.name @productData.productType" class="col-12 p-0">437 }438 @if ( productData.news == "True" )439 {440 <div class="isabella-product-item-news">441 @Translation.GetTranslation( "Ecom Product - News Badge - Text" )442 </div>443 }444 </a>445 <div class="card-body p-1 p-lg-3">446 <h4 class="e-products-item-name mb-0">447 <a href="@productData.url">448 @productData.name449 </a>450 </h4>451 @if ( string.IsNullOrEmpty( productData.productIntroText ) == false )452 {453 @productData.productIntroText454 }455 @* <p class="e-products-item-text mt-2 mb-0 @Co3.Isabella.Dw.Services.ProductService.Instance.GetNoBuyB2CandB2B()" style="display: flex">456 <small class="e-products-item-price small">457 <a href="@productData.url" class="text-dark" style="text-decoration: none">458 @productData.price459 </a>460 </small>461 <a href="@productData.url" style="left: 0" class="isabella-arrow arrow-primary-small ml-auto"></a>462 </p>463 *@464 </div>465 </div>466 </div>467 }468 }469470471 @helper sectionStart(string sectionClasses = "e-section", string contentClasses = null, bool sectionCollapse = false, string sectionId = null, string collapseToggleTextExpand = null, string collapseToggleTextCollapse = null)472 {473 sectionId = string.IsNullOrEmpty( sectionId ) ? Guid.NewGuid().ToString( "N" ) : sectionId;474 ClassList sectionClassList = new ClassList();475 sectionClassList.AddClasses( sectionClasses );476 ClassList contentClassList;477478 if ( contentClasses == null )479 {480 contentClassList = Co3.Espresso.Website.Services.PageService.Instance.GetResponsiveClassesFromPageItem( PageView.Current().Page.Item );481 }482 else483 {484 contentClassList = new ClassList();485 contentClassList.AddClasses( contentClasses );486 }487488 // TODO: Split collapse logic into separate helper function.489 string collapseId = Guid.NewGuid().ToString( "N" );490 ClassList collapseToggleClassList = new ClassList();491 if ( sectionCollapse )492 {493 sectionClassList.AddClasses( "p-section-collapse js-p-section-collapse" );494 collapseToggleClassList.AddClasses( contentClasses );495 collapseToggleClassList.AddClasses( "p-section-collapse-toggle collapsed order-last text-center" );496 contentClassList.AddClasses( "p-section-collapse-content collapse is-md" );497 }498499 @:<section class="@sectionClassList" id="@sectionId">500 @:<div class="container-fluid">501 @:<div class="row">502503 // TODO: Split collapse logic into separate helper function.504 if ( sectionCollapse )505 {506 <div class="@collapseToggleClassList" data-toggle="collapse" data-target="#@collapseId">507 <button class="btn btn-primary p-section-collapse-toggle-btn" type="button">508 <i class="material-icons p-section-collapse-toggle-icon">keyboard_arrow_down</i>509 </button>510 <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>511 </div>512 }513514 @:<div class="@contentClassList" id="@collapseId">515 @:<div class="row">516 }517518 @helper sectionEnd()519 {520 @:</div>521 @:</div>522 @:</div>523 @:</div>524 @:</section>525 }526527528529530531 <div class="e-loading-overlay e-page-loading-overlay is-loading js-e-page-loading-overlay">532 <svg class="e-loading-spinner isabella-loading-spinner-logo" viewbox="0 0 316.9 383">533 <path class="isabella-logo crown-top" d="M264.2,150.9l-30.5,45.4L220.2,57.9l-18.5-5l-45.4,122.8L113.7,52.9l-17,5L81.1,196.3l-27.7-46.1534 c-10,5.1-10,5.1-10,5.1s0,0-5.7,3.4c14.9,39.8,28.4,91.6,35.5,142c45.4-11.4,120.7-12.8,168.3-1.4c8.5-47.6,22-102.9,37.6-140.6535 L264.2,150.9z"></path>536 <path class="isabella-logo crown-bottom" d="M76.1,324.8c64.6-14.2,102.2-14.2,163.3-0.7c-2.1,21.3-4.3,40.5-5.7,57.5c-43.3-9.2-105.1-9.2-154.1,1.4537 C79.6,364.6,78.2,345.4,76.1,324.8"></path>538 <path class="isabella-logo circle-1" d="M54,153.1c0,0,19-23-1.9-44S0.7,110.7,0,127.7s10.4,25.4,10.4,25.4S33.8,172.8,54,153.1z"></path>539 <path class="isabella-logo circle-3" d="M241.2,52.4c0,0,19-23-1.9-44s-51.4,1.6-52.1,18.6s10.4,25.4,10.4,25.4S221,72.2,241.2,52.4z"></path>540 <path class="isabella-logo circle-4" d="M309,110.4c0,0,19,23-1.9,44s-51.4-1.6-52.1-18.6c-0.6-17.1,10.4-25.4,10.4-25.4S288.8,90.7,309,110.4z"></path>541 <path class="isabella-logo circle-2" d="M122.1,8.8c0,0,19,23-1.9,44s-51.4-1.6-52.1-18.6S78.5,8.8,78.5,8.8S101.9-11,122.1,8.8z"></path>542 </svg>543544545 </div>546 @* https://medium.com/clio-calliope/making-google-fonts-faster-aadf3c02a36d *@547 @SnippetStart("webfonts")548 <link crossorigin="" href="https://fonts.gstatic.com/" rel="preconnect">549 <link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:400,700|Material+Icons" media="@Espresso.StylesheetAttributeMedia" rel="@Espresso.StylesheetAttributeRel" as="style">550 @SnippetEnd("webfonts")551552553554 <div class="@Espresso.Canvas.ClassList">555 @using Dynamicweb.Frontend556 @{557 ClassList headerClassList = new ClassList();558 headerClassList.AddClasses( "e-header js-e-header is-sticky" );559 if ( Espresso.Item.HeaderTransparent == "True" )560 {561 headerClassList.AddClasses( "is-transparent" );562 }563564 ClassList logoClassList = new ClassList();565 logoClassList.AddClasses( "e-logo" );566567 string backButtonLink = Espresso.Item.BackButtonLink;568 ClassList backButtonClassList = new ClassList();569 ClassList backButtonIconClassList = new ClassList();570 if ( Espresso.Item.BackButton == "True" )571 {572 backButtonClassList.AddClasses( "btn btn-sm btn-secondary my-1 align-self-center" );573 if ( backButtonLink == "" || backButtonLink == "/" )574 {575 backButtonLink = "/";576 backButtonClassList.AddClasses( "js-e-back-link" );577 }578 backButtonIconClassList.AddClasses( "material-icons material-icons-large" );579 if ( Espresso.Item.BackButtonPosition == "right" )580 {581 backButtonClassList.AddClasses( "mr-0 ml-auto order-last" );582 logoClassList.AddClasses( "order-first" );583 }584 else585 {586 backButtonClassList.AddClasses( "order-first" );587 logoClassList.AddClasses( "mr-0 ml-auto order-last" );588 }589 if ( Espresso.Item.BackButtonIcon == "arrow_back" )590 {591 backButtonClassList.AddClasses( "arrow-left" );592 backButtonIconClassList.AddClasses( "d-none" );593 }594 else if ( Espresso.Item.BackButtonIcon == "arrow_forward" )595 {596 backButtonClassList.AddClasses( "arrow-right" );597 backButtonIconClassList.AddClasses( "d-none" );598 }599 }600601 string logoPrimary = Espresso.Area.Item.LogoPrimary;602 string logoSecondary = Espresso.Area.Item.LogoSecondary;603 if ( string.IsNullOrEmpty( logoSecondary ) == true )604 {605 logoSecondary = logoPrimary;606 }607 string tagline = Espresso.Area.Item.Tagline;608 Dictionary< string, string > navigationHtml = new Dictionary< string, string >609 {610 {611 "global", RenderNavigation( new612 {613 id = "dwnav-global",614 template = "global.xslt",615 startlevel = 1,616 endlevel = 8,617 expandmode = "all"618 } )619 },620 {621 "utilities-primary", RenderNavigation( new622 {623 id = "dwnav-utilities-primary",624 template = "utilities.xslt",625 startlevel = 4,626 endlevel = 5,627 expandmode = "all",628 parenttag = "utilities-primary"629 } )630 },631 {632 "utilities-secondary", RenderNavigation( new633 {634 id = "dwnav-utilities-secondary",635 template = "utilities.xslt",636 startlevel = 4,637 endlevel = 4,638 expandmode = "all",639 parenttag = "utilities-secondary"640 } )641 },642 {643 "hamburger-header", RenderNavigation( new644 {645 id = "dwnav-hamburger-header",646 template = "utilities.xslt",647 startlevel = 4,648 endlevel = 4,649 expandmode = "all",650 parenttag = "hamburger-header"651 } )652 },653 {654 "hamburger-aside", RenderNavigation( new655 {656 id = "dwnav-hamburger-aside",657 template = "utilities.xslt",658 startlevel = 4,659 endlevel = 4,660 expandmode = "all",661 parenttag = "hamburger-aside"662 } )663 }664 };665666 }667 @if ( Espresso.Item.HeaderHide != "True" )668 {669 <header class="@headerClassList" data-autohide="true">670671 <div class="e-header-hamburger">672 @sectionStart( "e-header-section e-section", "col-12" )673 <div class="col-12 e-header-section-content">674 <div class="@logoClassList">675 <a class="e-logo-link" href="/@globalAreaName/">676 <img src="@logoPrimary" class="e-logo-img e-logo-img-primary" alt="@Espresso.Area.Item.CompanyName">677 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary" alt="@Espresso.Area.Item.CompanyName">678 @if ( string.IsNullOrEmpty( tagline ) == false )679 {680 <p class="e-logo-tagline">@tagline</p>681 }682 </a>683 </div>684 @if ( Espresso.Item.NavigationHide != "True" )685 {686 <section class="e-nav-hamburger-header">687 <ul class="nav">688 @navigationHtml[ "hamburger-header" ]689 @* TODO: Move to xslt *@690 <li class="e-nav-item-hamburger-open nav-item">691 <a class="nav-link" data-target=".modal.e-nav" data-toggle="modal" href="#">692 <i class="e-nav-pageicon material-icons">menu</i>693 <span class="e-nav-pagename">@Translate( "Header - Hamburger menu open - Button", "Menu" )</span>694 </a>695 </li>696 </ul>697 </section>698 }699 @if ( Espresso.Item.BackButton == "True" )700 {701 <a class="@backButtonClassList" href="@backButtonLink">702 @if ( Espresso.Item.BackButtonIcon != "" )703 {704 <i class="@backButtonIconClassList">@Espresso.Item.BackButtonIcon</i>705 }706 @Espresso.Item.BackButtonText707 </a>708 }709 </div>710 @sectionEnd()711 </div>712 <div class="e-nav js-e-nav modal p-0" data-backdrop="false">713 <div class="e-nav-container navbar flex-column d-flex">714715 @sectionStart( "e-header-section e-header-section-primary e-section order-xl-2", "col-12" )716 <div class="col-12 e-header-section-content">717 <div class="@logoClassList">718 <a class="e-logo-link" href="/@globalAreaName/">719 <span class="d-none d-xl-inline">@GetSvgFileData(@logoPrimary)</span>720 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary" alt="@Espresso.Area.Item.CompanyName">721 @if ( string.IsNullOrEmpty( tagline ) == false )722 {723 <p class="e-logo-tagline">@tagline</p>724 }725 </a>726 </div>727728 @if ( Espresso.Item.NavigationHide != "True" )729 {730 <nav class="e-nav-global js-e-nav-global">731 <ul class="nav">732 @navigationHtml[ "global" ]733 </ul>734 </nav>735736 <div class="e-nav-item-hamburger-close">737 <a class="nav-link" data-target=".modal.e-nav" data-toggle="modal" href="#">738 <i class="e-nav-pageicon material-icons">close</i>739 <span class="e-nav-pagename">@Translate( "Header - Hamburger menu close - Button", "Close" )</span>740 </a>741 </div>742743 if ( string.IsNullOrEmpty( navigationHtml[ "utilities-primary" ] ) == false )744 {745 @:</div>746 @sectionEnd()747 @sectionStart( "e-header-section e-header-section-secondary e-section order-xl-1", "col-12" )748 @:<div class="col-12 e-header-section-content">749750 <nav class="e-nav-utilities-primary js-e-nav-utilities-primary">751 <ul class="nav">752 @navigationHtml[ "utilities-primary" ]753 </ul>754 </nav>755 }756757 if ( string.IsNullOrEmpty( navigationHtml[ "utilities-secondary" ] ) == false )758 {759 <nav class="e-nav-utilities-secondary">760 <ul class="nav">761 @navigationHtml[ "utilities-secondary" ]762 </ul>763 </nav>764 }765 if ( string.IsNullOrEmpty( navigationHtml[ "hamburger-aside" ] ) == false )766 {767 <nav class="e-nav-hamburger-aside">768 <ul class="nav">769 @navigationHtml[ "hamburger-aside" ]770 </ul>771 </nav>772 }773 }774 @if ( Espresso.Item.BackButton == "True" )775 {776 <a class="@backButtonClassList" href="@backButtonLink">777 @if ( Espresso.Item.BackButtonIcon != "" )778 {779 <i class="@backButtonIconClassList">@Espresso.Item.BackButtonIcon</i>780 }781 @Espresso.Item.BackButtonText782 </a>783 }784 </div>785 @sectionEnd()786787 </div>788 </div>789790 </header>791 }792793 @helper GetSvgFileData(string svgfile)794 {795 string rtnValue = svgfile;796 if (!string.IsNullOrEmpty(svgfile))797 {798 string FilePath = svgfile;799800 if (System.IO.Path.GetExtension(FilePath) == ".svg")801 {802 System.Xml.XmlReaderSettings settings = new System.Xml.XmlReaderSettings();803 settings.DtdProcessing = System.Xml.DtdProcessing.Ignore;804 string svgFilePath = System.Web.HttpContext.Current.Server.MapPath(FilePath) ?? string.Empty;805 if (System.IO.File.Exists(svgFilePath))806 {807 using (System.IO.StreamReader sr = new System.IO.StreamReader(svgFilePath))808 {809 using (System.Xml.XmlReader xr = System.Xml.XmlReader.Create(sr, settings))810 {811 bool done = false;812 while (xr.Read() && !done)813 {814 if (xr.NodeType == System.Xml.XmlNodeType.Element && xr.Name == "svg")815 {816 rtnValue = xr.ReadOuterXml();817 done = true;818 }819 }820 }821 }822 }823 }824 }825 @rtnValue;826 }827828829 @*General - Website Settings*@830831 @if ( Espresso.Item.Notificationbar != "True" )832 {833 if ( !string.IsNullOrEmpty(Espresso.Area.Item.NotificationbarPageId) )834 {835 <section class="e-section">836 <div class="container-fluid">837 <div class="row">838 <div class="col-12">839 <div class="row">840 @RenderPageContent(int.Parse(Espresso.Area.Item.NotificationbarPageId))841 </div>842 </div>843 </div>844 </div>845 </section>846 }847 }848849 @*Specific - Page*@850851 @if ( !string.IsNullOrEmpty(Espresso.Item.NotificationbarPageId) )852 {853 <section class="e-section">854 <div class="container-fluid">855 <div class="row">856 <div class="col-12">857 <div class="row">858 @RenderPageContent(int.Parse(Espresso.Item.NotificationbarPageId))859 </div>860 </div>861 </div>862 </div>863 </section>864 }865 @using Dynamicweb.Frontend866 @using Dynamicweb.Security.UserManagement867 @{868 User currentUser = PageView.Current().User;869 if ( currentUser != null )870 {871 User currentSecondaryUser = currentUser.CurrentSecondaryUser;872 if ( currentSecondaryUser != null )873 {874 @sectionStart( "e-section bg-warning e-text-dark js-e-section is-sticky zi-fixed py-1", "col-12 small" )875 <div class="align-self-center col-12 col-lg-9 col-md-8">876 <p class="line-height-sm mb-1 mb-md-0 text-center text-md-left">877 <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>878 </p>879 </div>880 <div class="align-self-center col-12 col-lg-3 col-md-4">881 <form class="mb-0 small text-center text-md-right" method="post" action="@Espresso.Area.Item.ExtranetImpersonationPage">882 <button class="btn btn-primary" name="DwExtranetRemoveSecondaryUser" type="submit">@Translate( "Extranet Impersonation - Stop impersonation - Button", "Stop impersonation" )</button>883 </form>884 </div>885 @sectionEnd()886 }887 }888 }889890891 <main id="dwcontentmain" class="e-content js-e-content @Espresso.ContentArea.ClassList">892 @using Dynamicweb.Content;893 @using Dynamicweb.Extensibility;894 @{895 string eBreadcrumbClasslist = "e-breadcrumb js-e-breadcrumb d-none d-lg-block";896 if ( Espresso.Item.Breadcrumb != "auto" && Espresso.Item.Breadcrumb != "none" && String.IsNullOrEmpty( Espresso.Item.Breadcrumb ) == false )897 {898 eBreadcrumbClasslist += string.Format( " e-breadcrumb-{0}", Espresso.Item.Breadcrumb );899 }900 string navigationHtmlBreadcrumb = RenderNavigation( new901 {902 id = "dwnav-breadcrumb",903 template = "breadcrumb.xslt",904 startlevel = 1,905 endlevel = 10,906 expandmode = "pathonly",907 sitemapmode = true908 } );909 }910911 @if ( string.IsNullOrEmpty( navigationHtmlBreadcrumb ) == false && Espresso.Item.Breadcrumb != "none" && string.IsNullOrEmpty( Espresso.Item.Breadcrumb ) == false )912 {913 <section class="e-section @eBreadcrumbClasslist">914 <div class="container-fluid">915 <div class="row">916 <div class="col-12">917 <div class="row">918919 <div class="col-12">920 <nav class="e-breadcrumb-container">921 <ol class="breadcrumb nav text-muted" itemscope="" itemtype="https://schema.org/BreadcrumbList">922 <li class="breadcrumb-item m-0 p-0">923 <a class="arrow-left breadcrumb-back-link js-e-back-link px-0" href="/">@Translate( "Breadcrumb - Back link", "Back" )</a>924 <span class="breadcrumb-prefix-text">925 @Translate( "Breadcrumb - Prefix - Text", "You are here:" )926 </span>927 <a href="/">928 @ServiceLocator.Current.GetPageService().GetFirstPageForArea( GetInteger( "DwAreaID" ) ).MenuText929 </a>930 </li>931 @navigationHtmlBreadcrumb932 </ol>933 </nav>934 </div>935936 </div>937 </div>938 </div>939 </div>940 </section>941 }942943944 <article class="e-content-article">945 @{946 int NavigationLocalHorizontalParentPageId = 0;947 if ( !string.IsNullOrEmpty( Espresso.Item.NavigationLocalParentPage ) )948 {949 int.TryParse( Espresso.Item.NavigationLocalParentPage, out NavigationLocalHorizontalParentPageId );950 }951 if ( NavigationLocalHorizontalParentPageId == 0 )952 {953 NavigationLocalHorizontalParentPageId = PageView.Current().Page.ID;954 if ( !Dynamicweb.Services.Pages.GetPagesByParentID( NavigationLocalHorizontalParentPageId ).Any() )955 {956 NavigationLocalHorizontalParentPageId = PageView.Current().Page.ParentPageId;957 }958 }959 string NavigationLocalHorizontalClassList = "e-nav-local e-nav-local-horizontal js-e-nav-local-horizontal";960 string NavigationLocalHorizontalContainerClassList = "e-nav-local-container";961 string NavigationLocalHorizontalTemplate = "local-" + Espresso.Item.NavigationLocalLayout + ".xslt";962 if ( string.IsNullOrEmpty( Espresso.Item.NavigationLocalTemplate ) == false && Path.GetExtension( Espresso.Item.NavigationLocalTemplate ) == ".xslt" )963 {964 NavigationLocalHorizontalTemplate = Path.GetFileName( Espresso.Item.NavigationLocalTemplate );965 }966967 if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "horizontal" )968 {969 NavigationLocalHorizontalClassList += " " + Espresso.Item.NavigationLocalCustomClasses;970 if ( Espresso.Item.NavigationLocalSticky == "True" )971 {972 NavigationLocalHorizontalClassList += " is-sticky";973 }974 if ( Espresso.Item.NavigationLocalAbsolute == "True" )975 {976 NavigationLocalHorizontalClassList += " is-absolute";977 }978 else979 {980 if ( Espresso.Item.NavigationLocalMarginTop != "0" && Espresso.Item.NavigationLocalMarginTop != "" )981 {982 NavigationLocalHorizontalClassList += " mt-" + Espresso.Item.NavigationLocalMarginTop;983 }984 if ( Espresso.Item.NavigationLocalMarginBottom != "0" && Espresso.Item.NavigationLocalMarginBottom != "" )985 {986 NavigationLocalHorizontalClassList += " mb-" + Espresso.Item.NavigationLocalMarginBottom;987 }988 }989 }990 }991 @if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "horizontal" )992 {993 <section class="e-section @NavigationLocalHorizontalClassList">994 <div class="container-fluid">995 <div class="row">996 <div class="col-12">997 <div class="row">998999 <div class="col-12">1000 <nav id="dwnav-local-horizontal-@NavigationLocalHorizontalParentPageId" class="@NavigationLocalHorizontalContainerClassList">1001 <ul class="justify-content-start nav">1002 @if ( Espresso.Item.NavigationLocalHeading != "" )1003 {1004 <li class="e-nav-local-heading">1005 <h2>@Espresso.Item.NavigationLocalHeading</h2>1006 </li>1007 }1008 @RenderNavigation( new1009 {1010 id = "dwnav-local-horizontal-" + NavigationLocalHorizontalParentPageId,1011 parentid = NavigationLocalHorizontalParentPageId,1012 template = NavigationLocalHorizontalTemplate,1013 startlevel = Espresso.Item.NavigationLocalLevelStart,1014 endlevel = Espresso.Item.NavigationLocalLevelEnd,1015 expandmode = Espresso.Item.NavigationLocalPageTreeExpand == "True" ? "all" : "path"1016 } )1017 </ul>1018 </nav>1019 </div>10201021 </div>1022 </div>1023 </div>1024 </div>1025 </section>1026 }102710281029 @{1030 int NavigationLocalVerticalParentPageId = 0;1031 if ( !string.IsNullOrEmpty( Espresso.Item.NavigationLocalParentPage ) )1032 {1033 int.TryParse( Espresso.Item.NavigationLocalParentPage, out NavigationLocalVerticalParentPageId );1034 }1035 if ( NavigationLocalVerticalParentPageId == 0 )1036 {1037 NavigationLocalVerticalParentPageId = PageView.Current().Page.ID;1038 if ( !Dynamicweb.Services.Pages.GetPagesByParentID( NavigationLocalVerticalParentPageId ).Any() )1039 {1040 NavigationLocalVerticalParentPageId = PageView.Current().Page.ParentPageId;1041 }1042 }10431044 string NavigationLocalVerticalClassList = "e-nav-local e-nav-local-vertical js-e-nav-local-vertical";1045 string NavigationLocalVerticalContainerClassList = "e-nav-local-container";1046 string NavigationLocalVerticalTemplate = "local-" + Espresso.Item.NavigationLocalLayout + ".xslt";1047 if ( string.IsNullOrEmpty( Espresso.Item.NavigationLocalTemplate ) == false && Path.GetExtension( Espresso.Item.NavigationLocalTemplate ) == ".xslt" )1048 {1049 NavigationLocalVerticalTemplate = Path.GetFileName( Espresso.Item.NavigationLocalTemplate );1050 }10511052 if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "vertical" )1053 {1054 NavigationLocalVerticalClassList += " " + Espresso.Item.NavigationLocalCustomClasses;10551056 if ( Espresso.Item.NavigationLocalMarginTop != "0" && Espresso.Item.NavigationLocalMarginTop != "" )1057 {1058 NavigationLocalVerticalClassList += " mt-" + Espresso.Item.NavigationLocalMarginTop;1059 }1060 if ( Espresso.Item.NavigationLocalMarginBottom != "0" && Espresso.Item.NavigationLocalMarginBottom != "" )1061 {1062 NavigationLocalVerticalClassList += " mb-" + Espresso.Item.NavigationLocalMarginBottom;1063 }10641065 if ( Espresso.Item.NavigationLocalSticky == "True" )1066 {1067 NavigationLocalVerticalClassList += " is-sticky";1068 }10691070 if ( Espresso.Item.NavigationLocalAbsolute == "True" )1071 {1072 NavigationLocalVerticalClassList += " is-absolute";1073 }1074 else1075 {1076 Espresso.ContentSection.ClassList.Clear();1077 Espresso.ContentSection.ClassList.AddClasses( "wtf col-12 col-lg-9 ml-auto" );1078 }1079 }1080 }10811082 @if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "vertical" )1083 {1084 <section class="e-section @NavigationLocalVerticalClassList">1085 <div class="container-fluid">1086 <div class="row">1087 <div class="col-12">1088 <div class="row">10891090 <div class="col-3">1091 <nav id="dwnav-local-@NavigationLocalVerticalParentPageId" class="@NavigationLocalVerticalContainerClassList">1092 <ul class="flex-column nav">1093 @if ( Espresso.Item.NavigationLocalHeading != "" )1094 {1095 <li class="e-nav-local-heading">1096 <h2>@Espresso.Item.NavigationLocalHeading</h2>1097 </li>1098 }1099 @RenderNavigation( new1100 {1101 id = "dwnav-local-" + NavigationLocalVerticalParentPageId,1102 parentid = NavigationLocalVerticalParentPageId,1103 template = NavigationLocalVerticalTemplate,1104 startlevel = Espresso.Item.NavigationLocalLevelStart,1105 endlevel = Espresso.Item.NavigationLocalLevelEnd,1106 expandmode = Espresso.Item.NavigationLocalPageTreeExpand == "True" ? "all" : "path",1107 } )1108 </ul>1109 </nav>1110 </div>11111112 </div>1113 </div>1114 </div>1115 </div>1116 </section>1117 }111811191120 @sectionStart()1121 @GetValue("DwContent(dwcontentmain)")1122 @sectionEnd()1123 </article>1124 </main>1125 @{1126 string FooterContentClassList = "e-footer-content e-section";1127 }1128 @if ( Espresso.Item.FooterHide != "True" )1129 {1130 <footer class="e-footer">1131 <article class="e-footer-wrapper">1132 <section class="@FooterContentClassList">1133 <div class="container-fluid">1134 <div class="row">1135 @if ( !string.IsNullOrEmpty( Espresso.Area.Item.FooterPageId ) )1136 {1137 @RenderPageContent( int.Parse( Espresso.Area.Item.FooterPageId ) )1138 }1139 </div>1140 </div>1141 </section>1142 <section class="e-footer-copyright e-section">1143 <div class="container-fluid">1144 <div class="align-items-baseline row">1145 <div class="col-12 col-lg-5">1146 @if (string.IsNullOrEmpty(Espresso.Area.Item.Adresse) == false)1147 {1148 @Espresso.Area.Item.Adresse1149 }1150 </div>1151 <div class="col-12 col-lg-4">1152 @if ( string.IsNullOrEmpty( GetString( "DwNavigation(dwnavutilitiessecondaryfooter)" ) ) == false )1153 {1154 <div class="col-12 p-0">1155 <aside class="e-nav-utilities-secondary">1156 <ul class="nav nav-inline">1157 @GetValue("DwNavigation(dwnavutilitiessecondaryfooter)")1158 </ul>1159 </aside>1160 </div>1161 }1162 </div>1163 <div class="col-12 col-lg-3 text-lg-right">1164 <p class="e-copyright nav-link">1165 @*@Translate( "Footer - Copyright - Text", "Copyright &copy;" )&nbsp;*@1166 @*@DateTime.Now.Year.ToString()&nbsp;*@1167 @Translate( "Footer - All Rights Reserved - Text", "All rights reserved." )&nbsp;1168 @Espresso.Area.Item.CompanyName.&nbsp;1169 </p>1170 </div>1171 </div>1172 </div>1173 </section>1174 </article>1175 </footer>1176 }1177 @if( string.IsNullOrEmpty( GetString("DwContent(dwcontentcta)") ) == false ) {1178 <aside id="dwcontentcta" class="js-e-cta e-cta is-hidden fixed-top">1179 <section class="e-section">1180 <div class="container-fluid">1181 <div class="row no-gutters">1182 <div class="col-12">1183 <div class="row no-gutters justify-content-center align-items-center">1184 @GetValue("DwContent(dwcontentcta)")1185 @* <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> *@1186 </div>1187 </div>1188 </div>1189 </div>1190 </section>1191 </aside>1192 }11931194 @using Dynamicweb.Frontend11951196 @{1197 string cartUrl = "/cart";11981199 if ( PageView.Current().Area.Name.Contains( "webshop" ) == false )1200 {1201 cartUrl = string.Format("{0}{1}", PageView.Current().Area.Name, cartUrl);1202 }1203 else1204 {1205 cartUrl = string.Format("{0}/shop{1}", PageView.Current().Area.Name.ToLower(), cartUrl);1206 }1207 }1208 <div class="e-cart-msg modal fade small" id="js-e-cart-msg" data-backdrop="false">1209 <div class="modal-dialog e-cart-msg-modal-dialog">1210 <div class="modal-content">1211 <div class="modal-header">1212 <h4 class="js-e-cart-msg-heading modal-title">1213 <i class="material-icons material-icons-large text-success">check_circle</i>1214 <span>@Translate( "eCom Cart - Product Added - Heading", "Added to your cart" )</span>1215 </h4>1216 <button class="close" data-dismiss="modal" type="button">1217 <i class="material-icons">close</i>1218 </button>1219 </div>1220 <div class="modal-body">1221 <div class="js-e-cart-msg-content">1222 <script id="js-e-handlebars-tmpl-cart-msg-lastadded" type="text/x-handlebars-template">1223 <div class="row">1224 {{#each cart.lastAdded}}1225 <div class="col-12 py-1">1226 <div class="row">1227 <div class="col-4">1228 <a class="" href="{{url}}">1229 <img alt="" class="img-fluid" src="{{imageDefault}}">1230 </a>1231 </div>1232 <div class="col-8">1233 <h3 class="mb-0">1234 <a href="{{url}}" class="text-decoration-none">{{name}}</a>1235 </h3>1236 <p class="mb-0">1237 <a href="{{url}}" class="text-auto text-decoration-none">1238 {{{price}}}<br>1239 {{{stock.text}}}<br>1240 {{{stock.delivery}}}<br>1241 </a>1242 </p>1243 </div>1244 </div>1245 </div>1246 {{/each}}1247 </div>1248 </script>1249 </div>1250 </div>1251 <div class="bg-info e-cart-msg-footer modal-footer border-top-0">1252 <a class="btn btn-secondary mr-1" href="/" data-dismiss="modal">@Translate( "eCom Cart - Continue Shopping - Button", "Continue shopping" )</a>1253 <a class="arrow-right btn btn-primary" href="@cartUrl">@Translate( "eCom Cart - Checkout - Button", "Checkout" )</a>1254 </div>1255 </div>1256 </div>1257 </div>12581259 </div>12601261 @using Co3.Espresso.Base.Extensions1262 @using Co3.Espresso.Website.Services1263 @using Dynamicweb.Frontend12641265 <div class="modal fade e-search js-e-search js-e-search-modal modal-fullscreen" data-backdrop="false" data-keyboard="true" data-focus="true">1266 <div class="modal-dialog">1267 <div class="modal-content">126812691270 <div class="modal-header">1271 <a class="btn btn-sm btn-secondary js-e-back-link arrow-left" href="/" data-dismiss="modal">1272 @Translate("Search - Back button", "Back")1273 </a>1274 <div class="e-logo">1275 <a href="/" class="e-logo-link my-0">1276 <img src="@logoPrimary" class="e-logo-img e-logo-img-primary" alt="@Espresso.Area.Item.CompanyName">1277 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary" alt="@Espresso.Area.Item.CompanyName">1278 </a>1279 </div>1280 </div>12811282 <div class="modal-body">12831284 <div class="container-fluid">12851286 <div class="e-search-form-container">1287 <div class="row justify-content-center">1288 <div class="col-12 col-md-10 col-lg-8 col-xl-6 mt-3">1289 <form action="" class="e-search-form js-e-search-form">1290 <div class="js-e-search-input-group e-search-input-group is-empty">1291 <label class="e-search-label" for="e-search-input"><i class="material-icons">search</i></label>1292 @{ string Translate_Search_InputText = Translate("Search - Input Placeholder - Text", "Search"); }1293 <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">1294 <span class="js-e-search-clear e-search-clear"><i class="material-icons">close</i></span>1295 <button class="e-search-submit btn btn-primary" type="submit"><i class="material-icons">search</i></button>1296 </div>1297 </form>1298 </div>1299 </div>1300 </div>13011302 <div class="js-e-search-result-container e-search-result-container">13031304 <div class="row justify-content-center">1305 <div class="col-12 col-md-10 col-lg-8 col-xl-6">1306 <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>1307 </div>1308 </div>13091310 <div class="row justify-content-center">1311 <div class="col-12 col-xl-10">1312 <div class="js-e-search-result-products e-search-result-products is-empty mb-4">1313 @{string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth(null).ToResponsiveClasses();}1314 <script id="js-e-handlebars-tmpl-search-result-item-product" type="text/x-handlebars-template">1315 <div class="e-products">1316 <div class="row justify-content-center">1317 {{#each products}}1318 <div class="@productlistItemClassList">1319 <div class="card border-1 mb-6">1320 <a href="{{url}}">1321 @if (Espresso.Item.ModelProductlist == "True")1322 {1323 <img src="{{productlistDetailImage}}" alt="{{name}}" class="col-12 p-0">1324 }1325 else1326 {1327 <img src="{{imageDefault}}" alt="{{name}}" class="col-12 p-0">1328 }1329 {{#if news}}1330 <div class="isabella-product-item-news">1331 @Translate("Ecom Product - News Badge - Text", "Nyhed")1332 </div>1333 {{/if}}1334 </a>1335 <div class="card-body p-1 p-lg-3">1336 <h4 class="e-products-item-name mb-0">1337 <a href="{{url}}">1338 {{{name}}}1339 </a>1340 </h4>1341 {{#if shortDescription}}1342 {{{shortDescription}}}1343 {{/if}}1344 @* @if (PageView.Current().Area.Name.Contains("webshop") != false)1345 {1346 <p class="e-products-item-text mt-2 mb-0 @Co3.Isabella.Dw.Services.ProductService.Instance.GetNoBuyB2CandB2B()" style="display: flex">1347 <small class="e-products-item-price small">1348 <a href="{{url}}" class="text-dark" style="text-decoration: none">1349 {{#if pimActive}}{{{price}}}{{else}}@Translate("eCom Product - Add To Cart Form Table - Accessory Discontinued - Text", "Udgået"){{/if}}1350 </a>1351 </small>1352 <a href="{{url}}" style="left: 0" class="isabella-arrow arrow-primary-small ml-auto"></a>1353 </p>1354 }1355 *@1356 </div>1357 </div>1358 </div>1359 {{/each}}1360 </div>1361 <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>1362 </div>1363 </script>1364 </div>1365 </div>1366 </div>13671368 <div class="row justify-content-center">1369 <div class="col-12 col-md-10 col-lg-8 col-xl-6">1370 <div class="js-e-search-result-pages e-search-result-pages is-empty mb-3">1371 <script id="js-e-handlebars-tmpl-search-result-item-page" type="text/x-handlebars-template">1372 <div class="row">1373 {{#each pages}}1374 <div class="col-12">1375 <p class="mb-0"><a href="{{{url}}}" class="text-bold">{{{title}}}</a></p>1376 <p class="mb-0 small text-truncate">1377 <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>1378 <p class="small">{{{text}}}...</p>1379 </div>1380 {{/each}}1381 </div>1382 </script>1383 </div>1384 </div>1385 </div>13861387 <div class="js-e-search-loading-overlay e-loading-overlay e-search-loading-overlay">1388 <div class="e-loading-spinner"></div>1389 </div>13901391 </div>13921393 </div>1394 </div>1395 </div>1396 </div>1397 </div>13981399 @if( Espresso.Area.Item.BackToTopLink == "True" ){1400 <a href="#top" class="e-back-to-top js-e-back-to-top"><i class="material-icons">keyboard_arrow_up</i></a>1401 }140214031404 @* @using System.Web;1405 @inherits Co3.Espresso.Website.TemplateBases.Pages.PageBase14061407 @{1408 HttpCookie optInLevel = HttpContext.Current.Request.Cookies[ "Dynamicweb.CookieOptInLevel" ];1409 bool showCookieWarning = optInLevel == null;1410 if ( optInLevel != null )1411 {1412 showCookieWarning = optInLevel.Value != "2";1413 }1414 }14151416 @if ( showCookieWarning )1417 {1418 <div class="e-cookie js-e-cookie py-1" hidden="">1419 <aside class="e-cookie-wrapper">1420 <section class="e-section">1421 <div class="container-fluid">1422 <div class="align-items-center row">1423 <div class="col-12 col-lg-10 col-md-9 my-1">1424 <p class="line-height-sm mb-0 small text-center text-md-left">1425 <span class="d-md-inline d-none">1426 @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" )1427 </span>1428 <span class="d-md-none">1429 @Translate( "Cookie Warning - Message Short - Text", "This website uses cookies to improve your experience. Learn more about our" )1430 </span>1431 &nbsp;1432 <a href="@Espresso.Area.Item.CookieMessage">@Translate( "Cookie Warning - Policy - Link", "cookie policy" )</a>1433 </p>1434 </div>1435 <div class="col-12 col-lg-2 col-md-3 my-1">1436 <p class="mb-0 text-center text-md-right">1437 <button class="btn e-cookie-accept-btn js-e-cookie-accept-btn" type="button">1438 @Translate( "Cookie Warning - Accept - Button", "OKAY" )1439 </button>1440 </p>1441 </div>1442 </div>1443 </div>1444 </section>1445 </aside>1446 </div>1447 }14481449 @if ( 1 == 2 )1450 {1451 @GetValue( "DwCookieWarning" )1452 }14531454 *@14551456 <script data-cookieconsent="ignore" async="" src="/Files/Templates/Designs/isabella/_assets/_dist/js/default.js?v=2.0.2"></script>1457 <script>14581459 window.dataLayer.push({1460 'event':'ipEvent',1461 'ipAddress' : '@Dynamicweb.Context.Current.Request.UserHostAddress'1462 });1463 </script>1464 </body>14651466 @GetValue( "CopyRightNotice" )1467 </html>1468