Error executing template "Designs/eurowater/_parsed/espresso.parsed.cshtml"System.NullReferenceException: Object reference not set to an instance of an object.at CompiledRazorTemplates.Dynamic.RazorEngine_b249a37a2f594a6c827abef30eccc506.Execute() in E:\Dynamicweb.NET\Solutions\Co3\eurowater.espresso4.dk\files\Templates\Designs\eurowater\_parsed\espresso.parsed.cshtml:line 43at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.b__0(TextWriter writer)at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @inherits Co3.Espresso.Website.TemplateBases.Pages.PageBase 2 @using System.IO 3 @using System.Web 4 @using Dynamicweb.Content 5 @using Dynamicweb.Frontend 6 @{ 7 string globalAreaLang = PageView.Current().Area.CultureInfo.TwoLetterISOLanguageName; 8 string currencySeparatorDecimal = PageView.Current().Area.CultureInfo.NumberFormat.CurrencyDecimalSeparator; 9 string currencySeparatorInteger = PageView.Current().Area.CultureInfo.NumberFormat.CurrencyGroupSeparator; 10 string openGraphUrl = PageView.Current().SearchFriendlyUrl; 11 string openGraphImage = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Host + Espresso.OpenGraphImage; 12 string openGraphTitle = !string.IsNullOrEmpty( Espresso.OpenGraphTitle ) ? Espresso.OpenGraphTitle : GetValue( "Title" ).ToString(); 13 string openGraphDescription = !string.IsNullOrEmpty( Espresso.OpenGraphDescription ) ? Espresso.OpenGraphDescription : GetString( "Meta.Description" ); 14 bool isUserAuthenticated = PageView.Current().User != null; 15 string webfontsSnippetHtml = RenderSnippet( "webfonts" ).ToString().Trim(); 16 string areaID = GetGlobalValue( "Global:Area.ID" ); 17 string logoStyle = ""; 18 if ( areaID != "" ) 19 { 20 logoStyle = "logoStyle"; 21 } 22 23 string searchPage = GetString( "Item.Area.SearchPage" ); 24 string searchPageUrl = "/search"; 25 if ( searchPage != "" ) 26 { 27 searchPageUrl = SearchEngineFriendlyURLs.GetFriendlyUrl( searchPage ); 28 } 29 30 string testDomainName = HttpContext.Current.Request.Url.Host; 31 32 PageView.Current().Meta.AddTag( "", "" ); 33 string globalValueUrl = GetGlobalValue( "Global:Pageview.Url" ); 34 string canonicalPageView = String.Format( "{0}://{1}{2}", GetGlobalValue( "Global:Request.Scheme" ), GetGlobalValue( "Global:Request.Host" ), globalValueUrl ); 35 string pageCanonical = PageView.Current().Page.MetaCanonical; 36 37 string areaName = PageView.Current().Area.Name; 38 } 39 <!DOCTYPE html> 40 <html data-area-name="/@areaName" data-separator-decimal="@currencySeparatorDecimal" data-separator-integer="@currencySeparatorInteger" lang="@globalAreaLang"> 41 <head> 42 43 @if ( string.IsNullOrEmpty( Espresso.Area.GoogleTagManagerID ) == false && Espresso.Area.GoogleTagManagerID != "GTM-XXXX" ) 44 { 45 <!-- Google Tag Manager --> 46 <script> 47 (function(w, d, s, l, i) { 48 w[l] = w[l] || []; 49 w[l].push({ 50 'gtm.start': 51 new Date().getTime(), 52 event: 'gtm.js' 53 }); 54 var f = d.getElementsByTagName(s)[0], 55 j = d.createElement(s), 56 dl = l != 'dataLayer' ? '&l=' + l : ''; 57 j.async = true; 58 j.src = 59 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 60 f.parentNode.insertBefore(j, f); 61 })(window, document, 'script', 'dataLayer', '@Espresso.Area.GoogleTagManagerID'); 62 </script> 63 <!-- End Google Tag Manager --> 64 } 65 66 @GetValue( "CopyRightNotice" ) 67 <meta charset="utf-8"> 68 <meta content="width=device-width, initial-scale=1, shrink-to-fit=no, minimal-ui" name="viewport"> 69 <meta content="ie=edge" http-equiv="x-ua-compatible"> 70 71 @if ( string.IsNullOrEmpty( pageCanonical ) == true ) 72 { 73 if ( GetString( "DwPageID" ) == GetString( "DwAreaFirstPageID" ) ) 74 { 75 <link href="/@areaName" rel="canonical"> 76 } 77 else 78 { 79 <link href="@canonicalPageView" rel="canonical"> 80 } 81 } 82 83 <title>@GetValue("Title")</title> 84 @GetValue("MetaTags") 85 @GetValue("CopyRightNotice") 86 87 88 @Espresso.CriticalCSS 89 <link rel="preload" as="font" type="font/woff2" href="/Files/Templates/Designs/eurowater/_assets/fonts/Lato-Light.woff2" crossorigin=""> 90 <link rel="preload" as="font" type="font/woff2" href="/Files/Templates/Designs/eurowater/_assets/fonts/LatoLatin-Light.woff2" crossorigin=""> 91 <link rel="preload" as="font" type="font/woff2" href="/Files/Templates/Designs/eurowater/_assets/fonts/Lato-Regular.woff2" crossorigin=""> 92 <link rel="preload" as="font" type="font/woff2" href="/Files/Templates/Designs/eurowater/_assets/fonts/LatoLatin-Regular.woff2" crossorigin=""> 93 <link rel="preload" as="font" type="font/woff2" href="/Files/Templates/Designs/eurowater/_assets/fonts/Lato-Bold.woff2" crossorigin=""> 94 <link rel="preload" as="font" type="font/woff2" href="/Files/Templates/Designs/eurowater/_assets/fonts/LatoLatin-Bold.woff2" crossorigin=""> 95 <link href="/Files/Templates/Designs/eurowater/_assets/fonts/fonts.css" rel="stylesheet" type="text/css"> 96 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""> 97 <link href="https://fonts.googleapis.com/css?family=EB+Garamond:400,500&display=swap" media="@Espresso.StylesheetAttributeMedia" rel="@Espresso.StylesheetAttributeRel" as="style"> 98 99 @if ( webfontsSnippetHtml != "<!--@Snippet(webfonts)-->" )100 {101 @webfontsSnippetHtml102 }103 <link as="style" href="/Files/Templates/Designs/eurowater/_assets/_dist/css/default.css?v=1.2.91" media="@Espresso.StylesheetAttributeMedia" rel="@Espresso.StylesheetAttributeRel">104 @Espresso.CriticalJS105106 <link href="@Espresso.Area.Item.Favicon" rel="shortcut icon">107 @if ( Espresso.IsStagingUrl || testDomainName.StartsWith( "dev." ) || testDomainName.StartsWith( "dummy" ) || testDomainName.StartsWith( "training" ) && HttpContext.Current.Request.Url.Scheme != "https" )108 {109 <meta content="noindex,nofollow" name="robots">110 }111 <meta content="@openGraphUrl" property="og:url">112 <meta content="@openGraphTitle" property="og:title">113 <meta content="@openGraphDescription" property="og:description">114 <meta content="@openGraphImage" property="og:image">115 <meta content="website" property="og:type">116 @if ( string.IsNullOrEmpty( Espresso.Area.Item.GoogleSiteVerification ) == false )117 {118 <meta content="@Espresso.Area.Item.GoogleSiteVerification" name="google-site-verification">119 }120 @{121 if ( 1 == 2 )122 {123 @GetValue( "Stylesheets" )124 }125 }126127 <!-- Hreflang -->128 @{129 @* Get areas from service *@130 Dynamicweb.Content.AreaService areaService = new Dynamicweb.Content.AreaService();131 IList<Area> areas = areaService.GetAreas();132133 @* Get current page's relation-text from page-item *@134 string currentPageRelation = PageView.Current().Page.Item["PageRelation"] != null ? PageView.Current().Page.Item["PageRelation"].ToString() : string.Empty;135136 @* Frontpage must have 'frontpage' as relation-text *@137 string CONST_frontpageRelation = "frontpage";138139 @* Iterate areas *@140 foreach ( Area area in areas )141 {142 if ( area.Active == true )143 {144 @* Get current area's culture *@145 string culture = area.Culture;146 string countryCode = area.Name;147 @* Check for IsDefault Hreflang on area *@148 string isDefaultHrefLang = area.Item["IsDefaultHrefLang"] != null ? area.Item["IsDefaultHrefLang"].ToString() : string.Empty;149 @* Check for override-culture text on area *@150 string hreflangCultureOverride = area.Item["HreflangLanguageOverride"] != null ? area.Item["HreflangLanguageOverride"].ToString() : string.Empty;151152 @* Get scheme and domain *@153 string scheme = GetGlobalValue( "Global:Request.Scheme" );154155 string domain = area.DomainLock;156 @* If we have a primary domain call pageservice and get pages *@157 if ( string.IsNullOrEmpty( currentPageRelation ) == false && (!domain.Contains( "dev." ) && !domain.StartsWith( "dummy" ) && !domain.StartsWith( "training" )) )158 {159 Dynamicweb.Content.PageService pageService = new Dynamicweb.Content.PageService();160 IEnumerable<Dynamicweb.Content.Page> pages = pageService.GetPagesByAreaID( area.ID );161162 @* Iterate pages in area - check if is active + has item + has item-pagerelation + item-pagerelation equals current pagerelation *@163 foreach ( Dynamicweb.Content.Page page in pages.Where( p => p.Published && p.Item != null && p.Item["PageRelation"] != null && p.Item["PageRelation"].ToString().Equals( currentPageRelation ) ) )164 {165 string productId = HttpContext.Current.Request["productid"];166167 string url = string.Empty;168169 if ( string.IsNullOrEmpty( productId ) == false )170 {171 @* Build url to area product page *@172 string prodUrl = string.Format( "Default.aspx?ID={0}&ProductId={1}", page.ID, productId );173 url = string.Format( "{0}://{1}{2}", scheme, "www.eurowater.com", SearchEngineFriendlyURLs.GetFriendlyUrl( prodUrl, area.EcomLanguageId ) );174 }175 else176 {177 @* Build url to area page *@178 url = string.Format( "{0}://{1}{2}", scheme, "www.eurowater.com", SearchEngineFriendlyURLs.GetFriendlyUrl( page.GetPageHrefValue() ) );179 }180181 @* If our current page relation match frontpage - set link to domain only *@182 if ( currentPageRelation == CONST_frontpageRelation )183 {184 url = string.Format( "{0}://{1}/{2}", scheme, "www.eurowater.com", countryCode );185 }186 @* If our area item has checked in Default hreflang, we render x-default link *@187 if ( isDefaultHrefLang == "True" )188 {189 <link href="@url" hreflang="x-default" rel="alternate">190 }191 @* If we have a value in the area-item to overrule the culture, override the value here *@192 if ( string.IsNullOrEmpty( hreflangCultureOverride ) == false )193 {194 culture = hreflangCultureOverride;195 }196 @* Render hreflang-link *@197 <link href="@url" hreflang="@culture.ToLower()" rel="alternate">198 }199 }200 }201 }202 }203 <!-- End Hreflang -->204 @GetValue("Stylesheets")205 @GetValue("Javascripts")206 </head>207208 <body class="@Espresso.Item.CustomClasses @logoStyle" data-userauthenticated="@isUserAuthenticated.ToString().ToLower()">209 @if ( string.IsNullOrEmpty( Espresso.Area.GoogleTagManagerID ) == false && Espresso.Area.GoogleTagManagerID != "GTM-XXXX" )210 {211 <!-- Google Tag Manager (noscript) -->212 <noscript>213 <iframe height="0" src="https://www.googletagmanager.com/ns.html?id=@Espresso.Area.GoogleTagManagerID" style="display: none; visibility: hidden" width="0"></iframe>214 </noscript>215 <!-- End Google Tag Manager (noscript) -->216 }217 @using Dynamicweb.Admin.dk.dynamicweb.templates218 @using Dynamicweb.Content219 @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 }226 }227 <script>228 var eurowaterPDFData = {};229 </script>230231232233 @using System.Globalization234 @using System.Security.Cryptography.X509Certificates235 @using Co3.Espresso.Base.Extensions236 @using Co3.Espresso.Website.Models.FrontEnd237 @using Co3.Espresso.Website.Services238 @using Dynamicweb.Content239 @using Dynamicweb.Frontend240 @using Dynamicweb.Rendering241 @using EcomContext = Dynamicweb.Ecommerce.Common.Context242243 @functions {244245 public string getCountryCodeFromArea( Area area )246 {247 RegionInfo regionInfo = new RegionInfo( area.CultureInfo.LCID );248 return regionInfo.TwoLetterISORegionName;249 }250251 public static string GetStandardCollapseToggleTextExpand()252 {253 return "Se mere";254 }255256 public static string GetStandardCollapseToggleTextCollapse()257 {258 return "Se mindre";259 }260261 }262263 @helper ProductDescription( string sectionClasses = "e-section", bool sectionCollapse = false, string contentClasses = null, string heading = null, string content = null, string collapseToggleTextExpand = null, string collapseToggleTextCollapse = null )264 {265 if ( string.IsNullOrEmpty( content ) == false )266 {267 ClassList headingClassList = new ClassList();268 headingClassList.AddClasses( "col-12" );269 ClassList contentClassList = new ClassList();270 contentClassList.AddClasses( "col-12" );271272 @sectionStart( sectionClasses: sectionClasses, sectionCollapse: sectionCollapse, contentClasses: contentClasses, collapseToggleTextCollapse: collapseToggleTextCollapse, collapseToggleTextExpand: collapseToggleTextExpand )273274 if ( string.IsNullOrEmpty( heading ) == false )275 {276 <div class="@headingClassList">277 <h2>@heading</h2>278 </div>279 }280 <div class="@contentClassList">281 @content282 </div>283284 @sectionEnd()285 }286 }287288289 @helper ProductVideo( string sectionClasses = "e-section", string contentClasses = null, string heading = null, string videoURL = null )290 {291 if ( string.IsNullOrEmpty( videoURL ) == false )292 {293 ClassList headingClassList = new ClassList();294 headingClassList.AddClasses( "col-12" );295 ClassList contentClassList = new ClassList();296 contentClassList.AddClasses( "col-12" );297298299 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )300301 if ( string.IsNullOrEmpty( heading ) == false )302 {303 <div class="@headingClassList">304 <h2>@heading</h2>305 </div>306 }307308 <div class="@contentClassList">309 <div class="embed-responsive embed-responsive-16by9 mb-2">310 <iframe class="embed-responsive-item" src="@videoURL" width="1080" height="608" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>311 </div>312 </div>313 @sectionEnd()314 }315 }316317 @helper ProductRelatedProducts( string sectionClasses = "e-section", string contentClasses = null, string heading = null,318 IEnumerable< RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem > productLoop = null )319 {320 if ( productLoop != null && productLoop.Any() == true )321 {322 ClassList headingClassList = new ClassList();323 headingClassList.AddClasses( "col-12" );324 ClassList contentClassList = new ClassList();325 contentClassList.AddClasses( "col-12" );326327 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )328329 if ( string.IsNullOrEmpty( heading ) == false )330 {331 <div class="@headingClassList">332 <h2 class="text-center">@heading</h2>333 </div>334 }335 <div class="@contentClassList">336 <div class="e-products mb-2">337 <div class="row">338 @{339 string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth( null ).ToResponsiveClasses();340 }341 @foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product in productLoop )342 {343 @ProductlistItem( product, productlistItemClassList )344 }345 </div>346 </div>347 </div>348349 @sectionEnd()350 }351 }352353 @helper ProductlistItem( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product, string productlistItemClassList = null )354 {355 if ( product != null )356 {357 dynamic productData = new358 {359 id = product.GetString( "Ecom:Product.ID" ),360 variantId = product.GetString( "Ecom:Product.VariantID" ),361 url = ProductService.Instance.GetProductLink( product.GetString( "Ecom:Product.PrimaryOrFirstGroupID" ), product.GetString( "Ecom:Product.ID" ) ),362 number = product.GetString( "Ecom:Product.Number" ),363 name = ProductService.Instance.GetName( product.GetString( "Ecom:Product.ID" ), product.GetString( "Ecom:Product.VariantID" ) ),364 imageLarge = ImageService.Instance.GetImageURL( product.GetString( "Ecom:Product.ImageLarge.Clean" ), 240, 240, 5 ),365 price = ProductService.Instance.GetPrice( product.GetString( "Ecom:Product.ID" ) ),366 descriptionShortExtra01 = product.GetString( "Ecom:Product:Field.DescriptionShortExtra01" ),367 stock = new368 {369 id = product.GetString( "Ecom:Product:Stock.ID" ),370 quantity = product.GetString( "Ecom:Product.Stock" ),371 text = product.GetString( "Ecom:Product:Stock.Text" ),372 delivery = product.GetString( "Ecom:Product:Stock.DeliveryText" )373 }374 };375376 <div class="@productlistItemClassList">377 <div class="e-products-item js-e-products-item js-e-products-item-@productData.id js-e-block-link e-block-link border-bottom" data-variant-id="@productData.variantId">378 <div class="e-products-item-container">379 <div class="e-products-item-image-container">380 <a class="e-products-item-image-wrapper" href="@productData.url">381 <img src="@productData.imageLarge" alt="" class="e-products-item-image">382 </a>383 </div>384 <div class="e-products-item-text-container text-center">385 <h3 class="e-products-item-name mb-0">386 <a href="@productData.url">387 @productData.name388 </a>389 </h3>390 @if ( string.IsNullOrEmpty( productData.descriptionShortExtra01 ) == false )391 {392 <p class="e-products-item-text mb-0">393 <a href="@productData.url">394 @productData.descriptionShortExtra01395 </a>396 </p>397 }398 <p class="e-products-item-text mb-0">399 <small class="e-products-item-price small text-muted">400 <a href="@productData.url">401 @productData.price402 </a>403 </small>404 </p>405 </div>406 </div>407 </div>408 </div>409 }410 }411412413 @helper sectionStart( string sectionClasses = "e-section", string contentClasses = null, bool sectionCollapse = false, string sectionId = null, string collapseToggleTextExpand = null, string collapseToggleTextCollapse = null )414 {415 sectionId = string.IsNullOrEmpty( sectionId ) ? Guid.NewGuid().ToString( "N" ) : sectionId;416 ClassList sectionClassList = new ClassList();417 sectionClassList.AddClasses( sectionClasses );418 ClassList contentClassList;419420 if ( contentClasses == null )421 {422 contentClassList = Co3.Espresso.Website.Services.PageService.Instance.GetResponsiveClassesFromPageItem( PageView.Current().Page.Item );423 }424 else425 {426 contentClassList = new ClassList();427 contentClassList.AddClasses( contentClasses );428 }429430 // TODO: Split collapse logic into separate helper function.431 string collapseId = Guid.NewGuid().ToString( "N" );432 ClassList collapseToggleClassList = new ClassList();433 if ( sectionCollapse )434 {435 sectionClassList.AddClasses( "p-section-collapse js-p-section-collapse" );436 collapseToggleClassList.AddClasses( contentClasses );437 collapseToggleClassList.AddClasses( "p-section-collapse-toggle collapsed order-last text-center" );438 contentClassList.AddClasses( "p-section-collapse-content collapse is-md" );439 }440441 @:<section class="@sectionClassList" id="@sectionId">442 @:<div class="container-fluid">443 @:<div class="row">444445 // TODO: Split collapse logic into separate helper function.446 if ( sectionCollapse )447 {448 <div class="@collapseToggleClassList" data-toggle="collapse" data-target="#@collapseId">449 <button class="btn btn-primary p-section-collapse-toggle-btn" type="button">450 <i class="material-icons p-section-collapse-toggle-icon">keyboard_arrow_down</i>451 </button>452 <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>453 </div>454 }455456 @:<div class="@contentClassList" id="@collapseId">457 @:<div class="row">458 }459460 @helper sectionEnd()461 {462 @:</div>463 @:</div>464 @:</div>465 @:</div>466 @:</section>467 }468469470471472 <div class="e-loading-overlay e-page-loading-overlay is-loading js-e-page-loading-overlay">473 <div class="e-loading-spinner"></div>474 </div>475476477 @* https://medium.com/clio-calliope/making-google-fonts-faster-aadf3c02a36d *@478 @SnippetStart("webfonts")479 <link crossorigin="" href="https://fonts.gstatic.com/" rel="preconnect">480 <link href="https://fonts.googleapis.com/css?family=IBM+Plex+Sans:400,700|Material+Icons" media="@Espresso.StylesheetAttributeMedia" rel="@Espresso.StylesheetAttributeRel" as="style">481 @SnippetEnd("webfonts")482483484 @using System.Activities.Statements485 @using Dynamicweb.Frontend486 @{487488 int areaId2 = PageView.Current().Area.ID;489490 // Redirect danish domain to root491 if ( areaId2 == 20 )492 {493 areaName = "";494 }495496 ClassList headerClassList = new ClassList();497 headerClassList.AddClasses( "e-header js-e-header is-sticky" );498 if ( Espresso.Item.HeaderTransparent == "True" )499 {500 headerClassList.AddClasses( "is-transparent" );501 }502503 ClassList logoClassList = new ClassList();504 logoClassList.AddClasses( "e-logo" );505506 string backButtonLink = Espresso.Item.BackButtonLink;507 ClassList backButtonClassList = new ClassList();508 ClassList backButtonIconClassList = new ClassList();509 if ( Espresso.Item.BackButton == "True" )510 {511 backButtonClassList.AddClasses( "btn btn-sm btn-secondary my-1 align-self-center" );512 if ( backButtonLink == "" || backButtonLink == "/" )513 {514 backButtonLink = "/";515 backButtonClassList.AddClasses( "js-e-back-link" );516 }517 backButtonIconClassList.AddClasses( "material-icons material-icons-large" );518 if ( Espresso.Item.BackButtonPosition == "right" )519 {520 backButtonClassList.AddClasses( "mr-0 ml-auto order-last" );521 logoClassList.AddClasses( "order-first" );522 }523 else524 {525 backButtonClassList.AddClasses( "order-first" );526 logoClassList.AddClasses( "mr-0 ml-auto order-last" );527 }528 if ( Espresso.Item.BackButtonIcon == "arrow_back" )529 {530 backButtonClassList.AddClasses( "arrow-left" );531 backButtonIconClassList.AddClasses( "d-none" );532 }533 else if ( Espresso.Item.BackButtonIcon == "arrow_forward" )534 {535 backButtonClassList.AddClasses( "arrow-right" );536 backButtonIconClassList.AddClasses( "d-none" );537 }538 }539540 string logoPrimary = Espresso.Area.Item.LogoPrimary;541 string logoSecondary = Espresso.Area.Item.LogoSecondary;542 if ( string.IsNullOrEmpty( logoSecondary ) == true )543 {544 logoSecondary = logoPrimary;545 }546 string tagline = Espresso.Area.Item.Tagline;547 Dictionary<string, string> navigationHtml = new Dictionary<string, string>548 {549 {550 "global", RenderNavigation( new551 {552 id = "dwnav-global",553 template = "global.xslt",554 startlevel = 1,555 endlevel = 8,556 expandmode = "all"557 } )558 },559 {560 "utilities-primary", RenderNavigation( new561 {562 id = "dwnav-utilities-primary",563 template = "utilities.xslt",564 startlevel = 4,565 endlevel = 5,566 expandmode = "all",567 parenttag = "utilities-primary"568 } )569 },570 {571 "utilities-secondary", RenderNavigation( new572 {573 id = "dwnav-utilities-secondary",574 template = "utilities.xslt",575 startlevel = 4,576 endlevel = 4,577 expandmode = "all",578 parenttag = "utilities-secondary"579 } )580 },581 {582 "hamburger-header", RenderNavigation( new583 {584 id = "dwnav-hamburger-header",585 template = "utilities.xslt",586 startlevel = 4,587 endlevel = 4,588 expandmode = "all",589 parenttag = "hamburger-header"590 } )591 },592 {593 "hamburger-aside", RenderNavigation( new594 {595 id = "dwnav-hamburger-aside",596 template = "utilities.xslt",597 startlevel = 4,598 endlevel = 4,599 expandmode = "all",600 parenttag = "hamburger-aside"601 } )602 }603 };604 }605 @if ( Espresso.Item.HeaderHide != "True" )606 {607 <header class="@headerClassList" data-autohide="true">608 <div class="e-header-hamburger">609 @sectionStart( "e-header-section e-section", "col-12" )610 <div class="bg-primary col-12 e-header-section-content">611 <div class="@logoClassList">612 <a class="e-logo-link" href="/@areaName">613 <img alt="@Espresso.Area.Item.CompanyName" class="e-logo-img e-logo-img-primary" src="@logoPrimary">614 <img alt="@Espresso.Area.Item.CompanyName" class="e-logo-img e-logo-img-secondary" src="@logoSecondary">615 @if ( string.IsNullOrEmpty( tagline ) == false )616 {617 <p class="e-logo-tagline">@tagline</p>618 }619 </a>620 </div>621 @if ( Espresso.Item.NavigationHide != "True" )622 {623 <section class="e-nav-hamburger-header">624 <ul class="nav">625 @navigationHtml["hamburger-header"]626 @* TODO: Move to xslt *@627 <li class="e-nav-item-hamburger-open nav-item">628 <a class="nav-link" data-target=".modal.e-nav" data-toggle="modal" href="#">629 <i class="e-nav-pageicon material-icons text-white">menu</i>630631 </a>632 </li>633 </ul>634 </section>635 }636 @if ( Espresso.Item.BackButton == "True" )637 {638 <a class="@backButtonClassList" href="@backButtonLink">639 @if ( Espresso.Item.BackButtonIcon != "" )640 {641 <i class="@backButtonIconClassList">@Espresso.Item.BackButtonIcon</i>642 }643 @Espresso.Item.BackButtonText644 </a>645 }646 </div>647 @sectionEnd()648 </div>649 <div class="e-nav js-e-nav modal p-0" data-backdrop="false">650 <div class="e-nav-container navbar">651652 @if ( string.IsNullOrEmpty( navigationHtml["utilities-primary"] ) == false )653 {654 @sectionStart( "e-header-section e-header-section-white order-2 order-lg-1 e-section", "col-12 " )655 <div class="container-fluid inner-header mx-auto p-0">656 <div class="col-12 e-header-section-content">657658 <nav class="e-nav-utilities-primary js-e-nav-utilities-primary">659 <ul class="nav">660661 @navigationHtml["utilities-primary"]662 </ul>663664 </nav>665 </div>666 </div>667 @sectionEnd()668 }669670 @sectionStart( "e-header-section e-header-section-primary e-section", "col-12 position-relative" )671 <div class="container-fluid inner-header mx-auto p-0 position-relative">672 <div class="col-12 e-header-section-content pl-xl-0">673 <div class="@logoClassList">674675 <p class="d-lg-none e-logo-link">676 <i class="e-nav-pageicon material-icons text-primary">menu</i>677 </p>678 <a class="e-logo-link" href="/@areaName">679 <img alt="@Espresso.Area.Item.CompanyName" class="e-logo-img e-logo-img-primary" src="@logoPrimary">680 <img alt="@Espresso.Area.Item.CompanyName" class="e-logo-img e-logo-img-secondary" src="@logoSecondary">681 @if ( string.IsNullOrEmpty( tagline ) == false )682 {683 <p class="e-logo-tagline">@tagline</p>684 }685 </a>686 </div>687688 @if ( Espresso.Item.NavigationHide != "True" )689 {690 <nav class="e-nav-global js-e-nav-global">691 <ul class="nav">692 @navigationHtml["global"]693 </ul>694 </nav>695696 <div class="e-nav-item-hamburger-close">697 <a class="nav-link" data-target=".modal.e-nav" data-toggle="modal" href="#">698 <i class="e-nav-pageicon material-icons">close</i>699 <span class="e-nav-pagename">@Translate( "Header - Hamburger menu close - Button", "Close" )</span>700 </a>701 </div>702703704 if ( string.IsNullOrEmpty( navigationHtml["utilities-secondary"] ) == false )705 {706 <nav class="d-none e-nav-utilities-secondary">707 <ul class="nav">708 @navigationHtml["utilities-secondary"]709 </ul>710 </nav>711 }712 if ( string.IsNullOrEmpty( navigationHtml["hamburger-aside"] ) == false )713 {714 <nav class="e-nav-hamburger-aside">715 <ul class="nav">716 @navigationHtml["hamburger-aside"]717 </ul>718 </nav>719 }720 }721 @if ( Espresso.Item.BackButton == "True" )722 {723 <a class="@backButtonClassList" href="@backButtonLink">724 @if ( Espresso.Item.BackButtonIcon != "" )725 {726 <i class="@backButtonIconClassList">@Espresso.Item.BackButtonIcon</i>727 }728 @Espresso.Item.BackButtonText729 </a>730 }731 </div>732 <div class="d-lg-block d-none e-search-form-container js-e-search-form-container">733 <div class="justify-content-end row">734 <div class="align-items-center bg-primary col-8 d-flex mt-1">735736 <form action="@searchPageUrl" class="e-search-form js-e-search-form">737 <div class="e-search-input-group is-empty js-e-search-input-group">738 @{739 string Translate_Search_InputText = Translate( "Search - Input Placeholder - Text", "Search" );740 string query = HttpContext.Current.Request["q"];741 }742 <input class="border-0 e-search-input form-control-plaintext js-e-search-input" id="e-search-input" name="q" placeholder="@Translate_Search_InputText" type="text" value="@HttpUtility.HtmlAttributeEncode( query )">743 <span class="e-search-clear js-e-search-clear">744 <i class="material-icons">close</i>745 </span>746 <button class="btn btn-primary e-search-submit" type="submit">747 <i class="material-icons">search</i>748 </button>749 </div>750 </form>751 <a class="js-toggle-search-bar nav-link toggle-search-bar">752 <i class="e-nav-pageicon material-icons">clear</i>753 </a>754 </div>755 </div>756 </div>757 </div>758 @sectionEnd()759760 </div>761 </div>762763 </header>764 }765 <div class="@Espresso.Canvas.ClassList">766767 @using Dynamicweb.Frontend768 @using Dynamicweb.Security.UserManagement769 @{770 User currentUser = PageView.Current().User;771 if ( currentUser != null )772 {773 User currentSecondaryUser = currentUser.CurrentSecondaryUser;774 if ( currentSecondaryUser != null )775 {776 @sectionStart( "e-section bg-warning e-text-dark js-e-section is-sticky zi-fixed py-1", "col-12 small" )777 <div class="align-self-center col-12 col-lg-9 col-md-8">778 <p class="line-height-sm mb-1 mb-md-0 text-center text-md-left">779 <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>780 </p>781 </div>782 <div class="align-self-center col-12 col-lg-3 col-md-4">783 <form class="mb-0 small text-center text-md-right" method="post" action="@Espresso.Area.Item.ExtranetImpersonationPage">784 <button class="btn btn-primary" name="DwExtranetRemoveSecondaryUser" type="submit">@Translate( "Extranet Impersonation - Stop impersonation - Button", "Stop impersonation" )</button>785 </form>786 </div>787 @sectionEnd()788 }789 }790 }791792793 <main id="dwcontentmain" class="e-content js-e-content @Espresso.ContentArea.ClassList">794 @using Dynamicweb.Content;795 @using Dynamicweb.Extensibility;796 @{797 string eBreadcrumbClasslist = "e-breadcrumb js-e-breadcrumb d-none d-lg-block";798 if ( Espresso.Item.Breadcrumb != "auto" && Espresso.Item.Breadcrumb != "none" && String.IsNullOrEmpty( Espresso.Item.Breadcrumb ) == false )799 {800 eBreadcrumbClasslist += string.Format( " e-breadcrumb-{0}", Espresso.Item.Breadcrumb );801 }802 string navigationHtmlBreadcrumb = RenderNavigation( new803 {804 id = "dwnav-breadcrumb",805 template = "breadcrumb.xslt",806 startlevel = 1,807 endlevel = 10,808 expandmode = "pathonly",809 sitemapmode = true810 } );811 }812813 @if ( string.IsNullOrEmpty( navigationHtmlBreadcrumb ) == false && Espresso.Item.Breadcrumb != "none" && string.IsNullOrEmpty( Espresso.Item.Breadcrumb ) == false )814 {815 <section class="e-section @eBreadcrumbClasslist">816 <div class="container-fluid">817 <div class="row">818 <div class="col-12">819 <div class="row">820821 <div class="col-12">822 <nav class="e-breadcrumb-container">823 <ol class="breadcrumb nav text-muted" itemscope="" itemtype="https://schema.org/BreadcrumbList">824 <li class="breadcrumb-item m-0 p-0">825 <a class="arrow-left breadcrumb-back-link js-e-back-link px-0" href="/@areaName">@Translate( "Breadcrumb - Back link", "Back" )</a>826 <span class="breadcrumb-prefix-text">827 @Translate( "Breadcrumb - Prefix - Text", "You are here:" )828 </span>829 <a href="/@areaName">830 @ServiceLocator.Current.GetPageService().GetFirstPageForArea( GetInteger( "DwAreaID" ) ).MenuText831 </a>832 </li>833 @navigationHtmlBreadcrumb834 </ol>835 </nav>836 </div>837838 </div>839 </div>840 </div>841 </div>842 </section>843 }844 <article class="e-content-article">845 @{846 int NavigationLocalHorizontalParentPageId = 0;847 if ( !string.IsNullOrEmpty( Espresso.Item.NavigationLocalParentPage ) )848 {849 int.TryParse( Espresso.Item.NavigationLocalParentPage, out NavigationLocalHorizontalParentPageId );850 }851 if ( NavigationLocalHorizontalParentPageId == 0 )852 {853 NavigationLocalHorizontalParentPageId = PageView.Current().Page.ID;854 if ( !Dynamicweb.Services.Pages.GetPagesByParentID( NavigationLocalHorizontalParentPageId ).Any() )855 {856 NavigationLocalHorizontalParentPageId = PageView.Current().Page.ParentPageId;857 }858 }859 string NavigationLocalHorizontalClassList = "e-nav-local e-nav-local-horizontal js-e-nav-local-horizontal";860 string NavigationLocalHorizontalContainerClassList = "e-nav-local-container";861 string NavigationLocalHorizontalTemplate = "local-" + Espresso.Item.NavigationLocalLayout + ".xslt";862 if ( string.IsNullOrEmpty( Espresso.Item.NavigationLocalTemplate ) == false && Path.GetExtension( Espresso.Item.NavigationLocalTemplate ) == ".xslt" )863 {864 NavigationLocalHorizontalTemplate = Path.GetFileName( Espresso.Item.NavigationLocalTemplate );865 }866867 if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "horizontal" )868 {869 NavigationLocalHorizontalClassList += " " + Espresso.Item.NavigationLocalCustomClasses;870 if ( Espresso.Item.NavigationLocalSticky == "True" )871 {872 NavigationLocalHorizontalClassList += " is-sticky";873 }874 if ( Espresso.Item.NavigationLocalAbsolute == "True" )875 {876 NavigationLocalHorizontalClassList += " is-absolute";877 }878 else879 {880 if ( Espresso.Item.NavigationLocalMarginTop != "0" && Espresso.Item.NavigationLocalMarginTop != "" )881 {882 NavigationLocalHorizontalClassList += " mt-" + Espresso.Item.NavigationLocalMarginTop;883 }884 if ( Espresso.Item.NavigationLocalMarginBottom != "0" && Espresso.Item.NavigationLocalMarginBottom != "" )885 {886 NavigationLocalHorizontalClassList += " mb-" + Espresso.Item.NavigationLocalMarginBottom;887 }888 }889 }890 }891 @if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "horizontal" )892 {893 <section class="e-section @NavigationLocalHorizontalClassList">894 <div class="container-fluid">895 <div class="row">896 <div class="col-12">897 <div class="row">898899 <div class="col-12">900 <nav id="dwnav-local-horizontal-@NavigationLocalHorizontalParentPageId" class="@NavigationLocalHorizontalContainerClassList">901 <ul class="justify-content-start nav">902 @if ( Espresso.Item.NavigationLocalHeading != "" )903 {904 <li class="e-nav-local-heading">905 <h2>@Espresso.Item.NavigationLocalHeading</h2>906 </li>907 }908 @RenderNavigation( new909 {910 id = "dwnav-local-horizontal-" + NavigationLocalHorizontalParentPageId,911 parentid = NavigationLocalHorizontalParentPageId,912 template = NavigationLocalHorizontalTemplate,913 startlevel = Espresso.Item.NavigationLocalLevelStart,914 endlevel = Espresso.Item.NavigationLocalLevelEnd,915 expandmode = Espresso.Item.NavigationLocalPageTreeExpand == "True" ? "all" : "path"916 } )917 </ul>918 </nav>919 </div>920921 </div>922 </div>923 </div>924 </div>925 </section>926 }927928929 @{930 int NavigationLocalVerticalParentPageId = 0;931 if ( !string.IsNullOrEmpty( Espresso.Item.NavigationLocalParentPage ) )932 {933 int.TryParse( Espresso.Item.NavigationLocalParentPage, out NavigationLocalVerticalParentPageId );934 }935 if ( NavigationLocalVerticalParentPageId == 0 )936 {937 NavigationLocalVerticalParentPageId = PageView.Current().Page.ID;938 if ( !Dynamicweb.Services.Pages.GetPagesByParentID( NavigationLocalVerticalParentPageId ).Any() )939 {940 NavigationLocalVerticalParentPageId = PageView.Current().Page.ParentPageId;941 }942 }943944 string NavigationLocalVerticalClassList = "e-nav-local e-nav-local-vertical js-e-nav-local-vertical";945 string NavigationLocalVerticalContainerClassList = "e-nav-local-container";946 string NavigationLocalVerticalTemplate = "local-" + Espresso.Item.NavigationLocalLayout + ".xslt";947 if ( string.IsNullOrEmpty( Espresso.Item.NavigationLocalTemplate ) == false && Path.GetExtension( Espresso.Item.NavigationLocalTemplate ) == ".xslt" )948 {949 NavigationLocalVerticalTemplate = Path.GetFileName( Espresso.Item.NavigationLocalTemplate );950 }951952 if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "vertical" )953 {954 NavigationLocalVerticalClassList += " " + Espresso.Item.NavigationLocalCustomClasses;955956 if ( Espresso.Item.NavigationLocalMarginTop != "0" && Espresso.Item.NavigationLocalMarginTop != "" )957 {958 NavigationLocalVerticalClassList += " mt-" + Espresso.Item.NavigationLocalMarginTop;959 }960 if ( Espresso.Item.NavigationLocalMarginBottom != "0" && Espresso.Item.NavigationLocalMarginBottom != "" )961 {962 NavigationLocalVerticalClassList += " mb-" + Espresso.Item.NavigationLocalMarginBottom;963 }964965 if ( Espresso.Item.NavigationLocalSticky == "True" )966 {967 NavigationLocalVerticalClassList += " is-sticky";968 }969970 if ( Espresso.Item.NavigationLocalAbsolute == "True" )971 {972 NavigationLocalVerticalClassList += " is-absolute";973 }974 else975 {976 Espresso.ContentSection.ClassList.Clear();977 Espresso.ContentSection.ClassList.AddClasses( "wtf col-12 col-lg-9 ml-auto" );978 }979 }980 }981982 @if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "vertical" )983 {984 <section class="e-section @NavigationLocalVerticalClassList">985 <div class="container-fluid">986 <div class="row">987 <div class="col-12">988 <div class="row">989990 <div class="col-3">991 <nav id="dwnav-local-@NavigationLocalVerticalParentPageId" class="@NavigationLocalVerticalContainerClassList">992 <ul class="flex-column nav">993 @if ( Espresso.Item.NavigationLocalHeading != "" )994 {995 <li class="e-nav-local-heading">996 <h2>@Espresso.Item.NavigationLocalHeading</h2>997 </li>998 }999 @RenderNavigation( new1000 {1001 id = "dwnav-local-" + NavigationLocalVerticalParentPageId,1002 parentid = NavigationLocalVerticalParentPageId,1003 template = NavigationLocalVerticalTemplate,1004 startlevel = Espresso.Item.NavigationLocalLevelStart,1005 endlevel = Espresso.Item.NavigationLocalLevelEnd,1006 expandmode = Espresso.Item.NavigationLocalPageTreeExpand == "True" ? "all" : "path",1007 } )1008 </ul>1009 </nav>1010 </div>10111012 </div>1013 </div>1014 </div>1015 </div>1016 </section>1017 }101810191020 @sectionStart()1021 @GetValue("DwContent(dwcontentmain)")1022 @sectionEnd()1023 </article>1024 </main>1025 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>1026 @inherits Co3.Espresso.Website.TemplateBases.Paragraphs.Module102710281029 @{1030 string FooterContentClassList = "e-footer-content e-section";1031 string FooterLogo = Espresso.Area.Item.FooterLogo;1032 string FooterText = "";1033 string FooterTextString = Espresso.Area.Item.FooterText;1034 string FooterTextLink = Espresso.Area.Item.FooterTextLink;1035 string areaId = GetGlobalValue( "Global:Area.ID" );1036 string customfooter = "";1037 if( areaId == "21" )1038 {1039 customfooter = "customfooter";1040 }1041 if ( FooterTextLink != "" )1042 {1043 FooterText = "<a href=" + FooterTextLink + ">" + FooterTextString + "</a>";1044 }1045 else1046 {1047 FooterText = FooterTextString;1048 }1049 }10501051 @if ( Espresso.Item.FooterHide != "True" )1052 {1053 @:</div>1054 <footer class="e-footer @customfooter">1055 <article class="e-footer-wrapper">1056 <section class="@FooterContentClassList">1057 <div class="container-fluid">1058 <div class="row">1059 @if ( !string.IsNullOrEmpty( Espresso.Area.Item.FooterPageId ) )1060 {1061 @RenderPageContent( int.Parse( Espresso.Area.Item.FooterPageId ) )1062 }1063 </div>1064 </div>1065 </section>10661067 <section class="@FooterContentClassList pt-0 pb-0 bg-primary">1068 <div class="container-fluid">1069 <div class="align-items-center row">1070 <div class="col-12 px-3 pt-2 pb-1">1071 <div class="row">1072 <div class="col-12 col-xl-4 footerText">1073 @if( FooterLogo != "" ) {1074 <img src="@FooterLogo" alt="logo">1075 }1076 @if ( FooterText != "" )1077 {1078 <p>@FooterText</p>1079 }1080 <ul class="eurowater-social-media-footer">1081 @foreach ( LoopItem soMeItem in GetLoop( "Item.Area.SoMe_Footer" ) )1082 {1083 string SoMeIcon = soMeItem.GetString( "Item.Area.SoMe_Footer.SoMeIcon" );1084 string SoMeLink = soMeItem.GetString( "Item.Area.SoMe_Footer.SoMeLink" );1085 string SoMeAltText = soMeItem.GetString( "Item.Area.SoMe_Footer.SoMeAltText" );1086 <li><a href="@SoMeLink" target="_blank"><img src="@SoMeIcon" alt="@SoMeAltText" title="@SoMeAltText"></a></li>1087 }1088 </ul>1089 </div>1090 <div class="col-12 col-xl-4 d-flex align-items-center">1091 <p class="e-copyright pl-md-2 mb-0 small">1092 @Translate( "Footer - Copyright - Text", "Copyright &copy;" )&nbsp;1093 @Translate( "Footer - All Rights Reserved - Text", "All rights reserved." )&nbsp;1094 @Espresso.Area.Item.CompanyName1095 </p>1096 </div>1097 <div class="col-12 col-xl-4">1098 @if ( string.IsNullOrEmpty( GetString( "DwNavigation(dwnavutilitiessecondaryfooter)" ) ) == false )1099 {1100 <aside class="e-nav-utilities-secondary d-flex justify-content-end align-items-baseline text-sm-right">1101 <ul class="nav nav-inline">1102 @GetValue("DwNavigation(dwnavutilitiessecondaryfooter)")1103 </ul>1104 </aside>1105 }1106 </div>1107 </div>1108 </div>1109 </div>1110 </div>1111 </section>1112 </article>1113 </footer>1114 }11151116 @if( string.IsNullOrEmpty( GetString("DwContent(dwcontentcta)") ) == false ) {1117 <aside id="dwcontentcta" class="js-e-cta e-cta is-hidden fixed-top">1118 <section class="e-section">1119 <div class="container-fluid">1120 <div class="row no-gutters">1121 <div class="col-12">1122 <div class="row no-gutters justify-content-center align-items-center">1123 @GetValue("DwContent(dwcontentcta)")1124 @* <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> *@1125 </div>1126 </div>1127 </div>1128 </div>1129 </section>1130 </aside>1131 }1132113311341135 @if( Espresso.Area.Item.BackToTopLink == "True" ){1136 <a href="#top" class="e-back-to-top js-e-back-to-top"><i class="material-icons">keyboard_arrow_up</i></a>1137 }113811391140 @inherits Co3.Espresso.Website.TemplateBases.Pages.PageBase1141 @using Co3.Espresso.Base.Extensions1142 @using Co3.Espresso.Website.Services1143 @using System.Web1144 @using System.Web.Util11451146 @{1147 string mquery = HttpContext.Current.Request[ "q" ];1148 }11491150 <div class="modal fade e-search js-e-search js-e-search-modal eurowater-custom-modal-search" data-backdrop="false" data-keyboard="true" data-focus="true">1151 <div class="modal-dialog">1152 <div class="modal-content">1153115411551156 <div class="modal-body">1157 <button class="btn-link" data-dismiss="modal">1158 <i class="material-icons">close</i>1159 </button>1160 <div class="container-fluid">11611162 <div class="e-search-form-container">1163 <div class="row justify-content-center">1164 <div class="col-12 col-md-10 mt-2">11651166 <form action="@searchPageUrl" class="e-search-form js-e-search-form">1167 <div class="js-e-search-input-group e-search-input-group is-empty">1168 @{ string mTranslate_Search_InputText = Translate( "Search - Input Placeholder - Text", "Search" ); }1169 <input type="text" class="js-e-search-input e-search-input form-control-plaintext border-0" name="q" id="e-search-input" placeholder="@mTranslate_Search_InputText" value="@HttpUtility.HtmlAttributeEncode( mquery )">1170 <span class="js-e-search-clear e-search-clear"><i class="material-icons">close</i></span>1171 <button class="e-search-submit btn btn-primary" type="submit"><i class="material-icons">search</i></button>1172 </div>1173 </form>1174 </div>1175 </div>1176 </div>1177 @*1178 <div class="js-e-search-result-container e-search-result-container">11791180 <div class="row justify-content-center">1181 <div class="col-12 col-md-10 col-lg-8 col-xl-6">1182 <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>1183 </div>1184 </div>11851186 <div class="row justify-content-center">1187 <div class="col-12 col-xl-10">1188 <div class="js-e-search-result-products e-search-result-products is-empty mb-4">1189 @{string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth( null ).ToResponsiveClasses();}1190 <script id="js-e-handlebars-tmpl-search-result-item-product" type="text/x-handlebars-template">1191 <div class="e-products">1192 <div class="row justify-content-center">1193 {{#each products}}1194 <div class="@productlistItemClassList">1195 <div class="e-products-item">1196 <div class="e-products-item-container">1197 <div class="e-products-item-image-container">1198 <a class="e-products-item-image-wrapper" href="{{url}}">1199 <img src="{{imageLarge}}" alt="" class="e-products-item-image">1200 </a>1201 </div>1202 <div class="e-products-item-text-container text-center small">1203 <h3 class="e-products-item-name mb-0"><a href="{{url}}">{{name}}</a></h3>1204 {{#if descriptionShortExtra01}}1205 <p class="e-products-item-text mb-0 small">1206 <a href="{{url}}">1207 {{descriptionShortExtra01}}1208 </a>1209 </p>1210 {{/if}}1211 <p class="e-products-item-text mb-0 small">1212 <span class="e-products-item-price">1213 <a href="{{url}}">1214 {{{price}}}1215 </a>1216 </span>1217 </p>1218 </div>1219 </div>1220 </div>1221 </div>1222 {{/each}}1223 </div>1224 <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>1225 </div>1226 </script>1227 </div>1228 </div>1229 </div>12301231 <div class="row justify-content-center">1232 <div class="col-12 col-md-10 col-lg-8 col-xl-6">1233 <div class="js-e-search-result-pages e-search-result-pages is-empty mb-3">1234 <script id="js-e-handlebars-tmpl-search-result-item-page" type="text/x-handlebars-template">1235 <div class="row">1236 {{#each pages}}1237 <div class="col-12">1238 <p class="mb-0"><a href="{{{url}}}" class="text-bold">{{{title}}}</a></p>1239 <p class="mb-0 small text-truncate">1240 <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>1241 <p class="small">{{{text}}}...</p>1242 </div>1243 {{/each}}1244 </div>1245 </script>1246 </div>1247 </div>1248 </div>12491250 <div class="js-e-search-loading-overlay e-loading-overlay e-search-loading-overlay">1251 <div class="e-loading-spinner"></div>1252 </div>12531254 </div>1255 *@1256 </div>1257 </div>1258 </div>1259 </div>1260 </div>126112621263 <script crossorigin="anonymous" integrity="sha256-gJWdmuCRBovJMD9D/TVdo4TIK8u5Sti11764sZT1DhI=" src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.5.3/jspdf.min.js"></script>1264 <script crossorigin="anonymous" integrity="sha256-w6/1B0uwkpR3uX0YUw3k2zzHnq6xDNdVZHLIdz8xV6I=" src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.5.0-beta4/html2canvas.min.js"></script>1265 <script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/6.8.4/swiper-bundle.min.js"></script>1266 <script async="" src="/Files/Templates/Designs/eurowater/_assets/_dist/js/default.js?v=1.1.5"></script>1267 </body>12681269 @GetValue( "CopyRightNotice" )1270 </html>1271