Error executing template "Designs/junckers/_parsed/espresso.parsed.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at CompiledRazorTemplates.Dynamic.RazorEngine_03214eba54134d39bf7d75ee0fb36f77.Execute() in E:\Dynamicweb.NET\Solutions\junckers.espresso4.dk\files\Templates\Designs\junckers\_parsed\espresso.parsed.cshtml:line 65
at 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.<RunCompile>b__0(TextWriter writer)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @inherits Co3.Espresso.Website.TemplateBases.Pages.PageBase
2 @using System.Web;
3 @using System.IO
4 @using Co3.Espresso.Website.Services
5 @using Dynamicweb.Content
6 @using Dynamicweb.Content.Items
7 @using Dynamicweb.Rendering
8 @using Dynamicweb.Frontend
9 @{
10 string globalAreaLang = GetGlobalValue( "Global:Area.Lang" );
11 string globalPageID = GetGlobalValue( "Global:Page.ID" );
12 string baseUrl = GetGlobalValue( "Global:Request.Scheme" ) + "://" + GetGlobalValue( "Global:Request.Host" );
13 string openGraphUrl = baseUrl + GetGlobalValue( "Global:Pageview.Url" );
14 string openGraphImage = baseUrl + Espresso.OpenGraphImage;
15 string productIdParam = "" + HttpContext.Current.Request["productid"];
16 bool isProductPage = string.IsNullOrEmpty(productIdParam) == false;
17 string pdfProductId = HttpUtility.HtmlAttributeEncode(productIdParam);
18 string pdfPageId = HttpUtility.HtmlAttributeEncode( globalPageID );
19 string pageCanonical = PageView.Current().Page.MetaCanonical;
20 string globalValueUrl = GetGlobalValue("Global:Pageview.Url");
21 string canonicalPageView = String.Format("{0}://{1}{2}", GetGlobalValue("Global:Request.Scheme"), GetGlobalValue("Global:Request.Host"), globalValueUrl);
22 bool isRequestingPDF = System.Web.HttpContext.Current.Request[ "pdfgeneratorworking" ] == "true" || System.Web.HttpContext.Current.Request[ "newpdf" ] == "true" || System.Web.HttpContext.Current.Request[ "newpdf" ] == "test";
23 if ( isRequestingPDF )
24 {
25 Espresso.Area.OptimizedLoading = false;
26 Espresso.StylesheetAttributeRel = Espresso.Area.OptimizedLoading ? "preload" : "stylesheet";
27 Espresso.StylesheetAttributeMedia = Espresso.Area.OptimizedLoading ? "only x" : "all";
28 }
29
30 string isUsingCookiebot = string.Empty;
31
32 if ( GetBoolean( "Item.Area.IsUsingCookiebot.Value" ) == false )
33 {
34 isUsingCookiebot = "false";
35 }
36 else
37 {
38 isUsingCookiebot = "true";
39 }
40 }
41 <!DOCTYPE html>
42 <html lang="@globalAreaLang">
43 <head>
44 @* @GetValue( "CopyRightNotice" ) *@
45 <meta charset="utf-8">
46 <meta content="width=device-width, initial-scale=1, shrink-to-fit=no, minimal-ui" name="viewport">
47 <meta content="ie=edge" http-equiv="x-ua-compatible">
48
49 @if ( isProductPage == false )
50 {
51 <title>@GetValue("Title")</title>
52 @GetValue("MetaTags")
53 @GetValue("CopyRightNotice")
54
55 if ( string.IsNullOrEmpty(pageCanonical) == true )
56 {
57 <link rel="canonical" href="@canonicalPageView">
58 }
59 }
60 else
61 {
62 @RenderSnippet( "productMetaTags" )
63 }
64
65 @if ( Espresso.Area.OptimizedLoading )
66 {
67 @Espresso.CriticalCSS
68 }
69 <link crossorigin="" href="https://fonts.gstatic.com/" rel="preconnect">
70 <link href="https://fonts.googleapis.com/css?family=Ubuntu:300,400,500%7CMaterial+Icons" media="@Espresso.StylesheetAttributeMedia" rel="@Espresso.StylesheetAttributeRel" as="style">
71 <link href="/Files/Templates/Designs/junckers/_assets/_dist/css/default.css?v=1.1.32" media="@Espresso.StylesheetAttributeMedia" rel="@Espresso.StylesheetAttributeRel" as="style">
72 @if ( isRequestingPDF )
73 {
74 <link href="/Files/Templates/Designs/junckers/_assets/_dist/css/junckers-pdf.css?v=2.026" media="all" rel="stylesheet">
75 }
76
77 @*if ( PageView.Current().Page.ID != 29515 )
78 {
79 <script type='text/javascript' src='https://platform-api.sharethis.com/js/sharethis.js#property=601be95843bf770011180384&product=sop' async='async'></script>
80 }*@
81
82 @if ( Espresso.Area.OptimizedLoading )
83 {
84 @Espresso.CriticalJS
85 }
86 @* *@
87 <link rel="shortcut icon" href="@Espresso.Area.Item.Favicon">
88 @* @GetValue( "MetaTags" ) *@
89 @if ( Espresso.IsStagingUrl == true )
90 {
91 <meta content="noindex,nofollow" name="robots">
92 }
93 <meta property="og:url" content="@openGraphUrl">
94 <meta property="og:title" content="@Espresso.OpenGraphTitle">
95 <meta property="og:description" content="@Espresso.OpenGraphDescription">
96 <meta property="og:image" content="@openGraphImage">
97 <meta content="website" property="og:type">
98 @if ( string.IsNullOrEmpty( Espresso.Area.Item.GoogleSiteVerification ) == false )
99 {
100 <meta name="google-site-verification" content="@Espresso.Area.Item.GoogleSiteVerification">
101 }
102 @{
103 if ( 1 == 2 )
104 {
105 @GetValue( "Stylesheets" )
106 }
107 }
108 @if ( string.IsNullOrEmpty( Espresso.Area.GoogleTagManagerID ) == false && Espresso.Area.GoogleTagManagerID != "GTM-XXXX" )
109 {
110 <!-- Google Tag Manager -->
111 <script data-cookieconsent="ignore">
112 (function(w, d, s, l, i) {
113 w[l] = w[l] || [];
114 w[l].push({
115 'gtm.start':
116 new Date().getTime(),
117 event: 'gtm.js'
118 });
119 var f = d.getElementsByTagName(s)[0],
120 j = d.createElement(s),
121 dl = l != 'dataLayer' ? '&l=' + l : '';
122 j.async = true;
123 j.src =
124 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
125 f.parentNode.insertBefore(j, f);
126 })(window, document, 'script', 'dataLayer', '@Espresso.Area.GoogleTagManagerID');
127 </script>
128 <!-- End Google Tag Manager -->
129 }
130
131 <!-- Hreflang -->
132 @{
133 @* Get areas from service *@
134 Dynamicweb.Content.AreaService areaService = new Dynamicweb.Content.AreaService();
135 Dynamicweb.Ecommerce.Products.ProductService productService = new Dynamicweb.Ecommerce.Products.ProductService();
136 IList< Area > areas = areaService.GetAreas();
137
138 bool pageHasParams = HttpContext.Current.Request.QueryString.HasKeys();
139 string[] expectedParams = new [] { "ID", "productid" };
140 IEnumerable< string > additionalParams = HttpContext.Current.Request.QueryString.AllKeys.Where(k => !expectedParams.Contains(k));
141 bool pageHasAllowedParams = true;
142
143 if ( pageHasParams == true )
144 {
145 if ( additionalParams.Any())
146 {
147 pageHasAllowedParams = false;
148 }
149 }
150
151 bool pageHasXDefault = false;
152 string fallbackXDefaultEnglishPageUrl = string.Empty;
153 string fallbackXDefaultPageUrl = string.Empty;
154
155 @* Get current page's relation-text from page-item *@
156 string currentPageRelation = PageView.Current().Page.Item[ "PageRelation" ] != null ? PageView.Current().Page.Item[ "PageRelation" ].ToString() : string.Empty;
157
158 @* Frontpage must have 'frontpage' as relation-text *@
159 string CONST_frontpageRelation = "frontpage";
160
161 if ( pageHasAllowedParams == true )
162 {
163 @* Iterate areas *@
164 foreach ( Area area in areas.Where(a => a.Active) )
165 {
166 bool excludeFromHrefLang = area.Item.Keys.Contains("ExcludeFromHrefLang") && area.Item["ExcludeFromHrefLang"] != null && area.Item["ExcludeFromHrefLang"].ToString() == "True";
167
168 if ( !excludeFromHrefLang )
169 {
170 @* Get current area's culture *@
171 string culture = area.Culture;
172 @* Check for IsDefault Hreflang on area *@
173 string isDefaultHrefLang = area.Item[ "IsDefaultHrefLang" ] != null ? area.Item[ "IsDefaultHrefLang" ].ToString() : string.Empty;
174 @* Check for override-culture text on area *@
175 string hreflangCultureOverride = area.Item[ "HreflangLanguageOverride" ] != null ? area.Item[ "HreflangLanguageOverride" ].ToString() : string.Empty;
176
177 @* Get scheme and domain *@
178 string scheme = GetGlobalValue( "Global:Request.Scheme" );
179
180 string domain = area.DomainLock;
181 @* If we have a primary domain call pageservice and get pages *@
182 if ( string.IsNullOrEmpty( currentPageRelation ) == false && string.IsNullOrEmpty( domain ) == false )
183 {
184 Dynamicweb.Content.PageService pageService = new Dynamicweb.Content.PageService();
185 IEnumerable< Dynamicweb.Content.Page > pages = pageService.GetPagesByAreaID( area.ID );
186
187 @* Iterate pages in area - check if is active + has item + has item-pagerelation + item-pagerelation equals current pagerelation *@
188 foreach ( Dynamicweb.Content.Page page in pages.Where( p => p.Published && !p.Hidden && p.Item != null && p.Item[ "PageRelation" ] != null && p.Item[ "PageRelation" ].ToString().Equals( currentPageRelation ) ) )
189 {
190 string productId = HttpContext.Current.Request[ "productid" ];
191
192 string url = string.Empty;
193
194 if ( string.IsNullOrEmpty( productId ) == false )
195 {
196 @* Build url to area product page *@
197 Dynamicweb.Ecommerce.Products.Product product = productService.GetProductById( productId, "", area.EcomLanguageId );
198 if ( product != null && product.Active == true )
199 {
200 string prodUrl = string.Format( "Default.aspx?ID={0}&ProductId={1}", page.ID, product.Id );
201 url = string.Format( "{0}://{1}{2}", scheme, domain, SearchEngineFriendlyURLs.GetFriendlyUrl( prodUrl, area.EcomLanguageId) );
202 }
203 }
204 else
205 {
206 @* Build url to area page *@
207 url = string.Format( "{0}://{1}{2}", scheme, domain, SearchEngineFriendlyURLs.GetFriendlyUrl( page.GetPageHrefValue() ) );
208 if ( string.IsNullOrEmpty( fallbackXDefaultPageUrl ) == true )
209 {
210 fallbackXDefaultPageUrl = url;
211 }
212 if ( string.IsNullOrEmpty( fallbackXDefaultEnglishPageUrl ) == true && culture.ToLower().Contains( "en" ) == true )
213 {
214 fallbackXDefaultEnglishPageUrl = url;
215 }
216 }
217
218 @* If our current page relation match frontpage - set link to domain only *@
219 if ( currentPageRelation == CONST_frontpageRelation )
220 {
221 url = string.Format( "{0}://{1}", scheme, domain );
222 }
223 @* If our area item has checked in Default hreflang, we render x-default link *@
224 if ( isDefaultHrefLang == "True" )
225 {
226 <link rel="alternate" hreflang="x-default" href="@url">
227 pageHasXDefault = true;
228 }
229 @* If we have a value in the area-item to overrule the culture, override the value here *@
230 if ( string.IsNullOrEmpty( hreflangCultureOverride ) == false )
231 {
232 culture = hreflangCultureOverride;
233 }
234 @* Render hreflang-link *@
235 if ( string.IsNullOrEmpty( url ) == false )
236 {
237 <link rel="alternate" hreflang="@culture.ToLower()" href="@url">
238 }
239
240 }
241 }
242 }
243 }
244 if ( pageHasXDefault == false )
245 {
246 if ( string.IsNullOrEmpty( fallbackXDefaultEnglishPageUrl ) )
247 {
248 <link rel="alternate" hreflang="x-default" href="@fallbackXDefaultPageUrl">
249 }
250 else
251 {
252 <link rel="alternate" hreflang="x-default" href="@fallbackXDefaultEnglishPageUrl">
253 }
254
255 }
256 }
257 }
258 <!-- End Hreflang -->
259
260 @if ( string.IsNullOrEmpty( GetString( "Item.Area.MailchimpPopupScript.Value" ) ) == false )
261 {
262 @GetString( "Item.Area.MailchimpPopupScript.Value" )
263 }
264
265 @if ( string.IsNullOrEmpty( GetString( "Item.MailchimpPopupScript.Value" ) ) == false )
266 {
267 @GetString( "Item.MailchimpPopupScript.Value" )
268 }
269
270
271 @GetValue("Stylesheets")
272 @GetValue("Javascripts")
273 </head>
274
275 @{
276 Item globalPageItem = null;
277
278 if ( string.IsNullOrWhiteSpace( Espresso.DynamicwebPage.ShortCut ) == false )
279 {
280 globalPageItem = Co3.Junckers.Frontend.Services.EnglishLanguagesPageItemService.Instance.GetPageItem( Espresso.DynamicwebPage.ShortCut );
281 }
282
283 string pdfLink = string.Format( "{0}&newpdf=true&gid={1}", GetGlobalValue( "Global:Pageview.Url.Raw" ).Replace( "&newpdf=true", string.Empty ).Replace( "&newpdf=test", string.Empty ), Guid.NewGuid().ToString( "N" ) );
284
285 string junckersHasDocumentationPdfLink = string.Empty;
286
287 if ( globalAreaLang == "en" && globalPageItem != null )
288 {
289 junckersHasDocumentationPdfLink = globalPageItem[ "DocumentationPdf" ] != null ? globalPageItem[ "DocumentationPdf" ].ToString() : string.Empty;
290 }
291 else
292 {
293 junckersHasDocumentationPdfLink = string.IsNullOrEmpty( GetString( "Item.DocumentationPdf.Value" ) ) == false ? GetString( "Item.DocumentationPdf.Value" ) : string.Empty;
294 }
295 }
296
297 <body class="@Espresso.Item.CustomClasses @Espresso.Area.OptimizedLoading" data-pdf="@junckersHasDocumentationPdfLink" data-cookiebot="@isUsingCookiebot">
298
299 @SnippetStart( "PasswordProtectedPage" )
300 @{
301 string pwProtectedPageContent = "";
302 }
303 @foreach ( LoopItem pwProtectedPage in GetLoop( "Item.Area.PasswordProtectedPage" ) )
304 {
305 string pwProtectedPagePageID = pwProtectedPage.GetString( "Item.Area.PasswordProtectedPage.PasswordProtectedPage_PageID" );
306
307 if ( globalPageID == pwProtectedPagePageID )
308 {
309 pwProtectedPageContent = pwProtectedPage.GetString( "Item.Area.PasswordProtectedPage.PasswordProtectedPage_Content" );
310 @pwProtectedPageContent
311 }
312 }
313 @if ( pwProtectedPageContent == "" )
314 {
315 <h1>Login</h1>
316 <p class="lead">@Translate( "Junckers_PasswordPage_Text", "Input password" )</p>
317 }
318 @SnippetEnd( "PasswordProtectedPage" )
319
320 @if ( string.IsNullOrEmpty( Espresso.Area.GoogleTagManagerID ) == false && Espresso.Area.GoogleTagManagerID != "GTM-XXXX" )
321 {
322 <!-- Google Tag Manager (noscript) -->
323 <noscript>
324 <iframe src="https://www.googletagmanager.com/ns.html?id=@Espresso.Area.GoogleTagManagerID" height="0" width="0" style="display: none; visibility: hidden"></iframe>
325 </noscript>
326 <!-- End Google Tag Manager (noscript) -->
327 }
328 @using Co3.Espresso.Website.Models.FrontEnd
329 @{
330 Espresso.Canvas.ClassList.AddClasses( "js-e-canvas is-loading" );
331 if ( Espresso.Item.CanvasFullscreen == "True" )
332 {
333 Espresso.Canvas.ClassList.AddClasses( "is-fullscreen" );
334 }
335 if ( Espresso.Item.DisablePDFHeader != null && Espresso.Item.DisablePDFHeader == "True" )
336 {
337 Espresso.ContentArea.ClassList.AddClasses( "pdf-header-disabled" );
338 }
339 }
340
341
342
343 @using System.Globalization
@using Co3.Espresso.Base.Extensions
@using Co3.Espresso.DownloadManager.Models
@using Co3.Espresso.Website.Models.FrontEnd
@using Co3.Espresso.Website.Services
@using Dynamicweb.Content
@using Dynamicweb.Frontend
@using Dynamicweb.Rendering
@using EcomContext = Dynamicweb.Ecommerce.Common.Context
@functions {
public string getCountryCodeFromArea( Area area )
{
RegionInfo regionInfo = new RegionInfo( area.CultureInfo.LCID );
return regionInfo.TwoLetterISORegionName;
}
public dynamic GetPriceInfo( string beforePrice = "", string basicPrice = "" )
{
double vat = EcomContext.Country.Vat;
double dblBeforePrice = 0;
double.TryParse( beforePrice, out dblBeforePrice );
double dblBasicPrice = 0;
double.TryParse( basicPrice, out dblBasicPrice );
double dblBeforePriceWithVat = 0;
double dblDiffPrice = 0;
int pct = 0;
if ( dblBeforePrice > 0 )
{
dblBeforePriceWithVat = dblBeforePrice * ( ( vat / 100d ) + 1 );
if ( dblBeforePriceWithVat > dblBasicPrice )
{
dblDiffPrice = dblBeforePriceWithVat - dblBasicPrice;
pct = (int)Math.Ceiling((( 100d / dblBeforePriceWithVat ) * dblDiffPrice));
}
}
dynamic returnValue = new
{
beforePriceWithVat = dblBeforePriceWithVat,
beforePriceWithVatFormatted = ProductService.Instance.GetPriceFormatted(dblBeforePriceWithVat),
basicPrice = dblBasicPrice,
basicPriceFormatted = ProductService.Instance.GetPriceFormatted(dblBasicPrice),
diffPrice = dblDiffPrice,
diffPriceFormatted = ProductService.Instance.GetPriceFormatted(dblDiffPrice),
pct = pct,
vat = vat
};
return returnValue;
}
}
@helper ProductDescription(string sectionClasses = "e-section", bool sectionCollapse = false, string contentClasses = null, string heading = null, string content = null)
{
if ( string.IsNullOrEmpty( content ) == false )
{
ClassList headingClassList = new ClassList();
headingClassList.AddClasses( "col-12" );
ClassList contentClassList = new ClassList();
contentClassList.AddClasses( "col-12" );
@sectionStart( sectionClasses: sectionClasses, sectionCollapse: sectionCollapse, contentClasses: contentClasses )
if ( string.IsNullOrEmpty( heading ) == false )
{
<div class="@headingClassList">
<h2>@heading</h2>
</div>
}
<div class="@contentClassList">
@content
</div>
@sectionEnd()
}
}
@helper ProductVideo(string sectionClasses = "e-section", string contentClasses = null, string heading = null, string videoURL = null)
{
if ( string.IsNullOrEmpty( videoURL ) == false )
{
ClassList headingClassList = new ClassList();
headingClassList.AddClasses( "col-12" );
ClassList contentClassList = new ClassList();
contentClassList.AddClasses( "col-12" );
@sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )
if ( string.IsNullOrEmpty( heading ) == false )
{
<div class="@headingClassList">
<h2>@heading</h2>
</div>
}
<div class="@contentClassList">
<div class="embed-responsive embed-responsive-16by9 mb-2">
<iframe class="embed-responsive-item" src="@videoURL" width="1080" height="608" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
</div>
</div>
@sectionEnd()
}
}
@helper ProductRelatedProducts(string sectionClasses = "e-section p-section p-section-bg-white pt-3 border-bottom", string contentClasses = null, string heading = null,
IEnumerable<RazorTemplateBase<RazorTemplateModel<Template>>.LoopItem> productLoop = null)
{
if ( productLoop != null && productLoop.Any() == true )
{
ClassList headingClassList = new ClassList();
headingClassList.AddClasses( "col-10 mx-auto" );
ClassList contentClassList = new ClassList();
contentClassList.AddClasses( "col-10 mx-auto" );
@sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )
if ( string.IsNullOrEmpty( heading ) == false )
{
<div class="@headingClassList">
<h2>@heading</h2>
</div>
}
<div class="@contentClassList">
<div class="e-products mb-2">
<div class="row">
@{
string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth( null ).ToResponsiveClasses();
}
@foreach ( RazorTemplateBase<RazorTemplateModel<Template>>.LoopItem product in productLoop )
{
@ProductlistItem( product, productlistItemClassList )
}
</div>
</div>
</div>
@sectionEnd()
}
}
@helper ProductlistItem(RazorTemplateBase<RazorTemplateModel<Template>>.LoopItem product, string productlistItemClassList = null)
{
if ( product != null )
{
dynamic productData = new
{
id = product.GetString( "Ecom:Product.ID" ),
url = ProductService.Instance.GetProductLink( product.GetString( "Ecom:Product.PrimaryOrFirstGroupID" ), product.GetString( "Ecom:Product.ID" ) ),
number = product.GetString( "Ecom:Product.Number" ),
name = product.GetString( "Ecom:Product.Name" ),
imageLarge = ImageService.Instance.GetImageURL( product.GetString( "Ecom:Product.ImageLarge.Clean" ), 450, 350, 5 ),
price = ProductService.Instance.GetPriceFormatted( product.GetDouble( "Ecom:Product.Price.Price" ) ),
descriptionShortExtra01 = product.GetString( "Ecom:Product:Field.DescriptionShortExtra01" ),
descriptionShort = product.GetString( "Ecom:Product.ShortDescription" ),
stock = new
{
id = product.GetString( "Ecom:Product:Stock.ID" ),
quantity = product.GetString( "Ecom:Product.Stock" ),
text = product.GetString( "Ecom:Product:Stock.Text" ),
delivery = product.GetString( "Ecom:Product:Stock.DeliveryText" )
}
};
<div class="@productlistItemClassList">
<div class="e-products-item js-e-products-item">
<div class="e-products-item-container">
<div class="junckers-relatedproducts-item-image-container" style="background: url(@productData.imageLarge)">
@if ( string.IsNullOrEmpty( productData.descriptionShort ) == false )
{<div class="junckers-relatedproducts-item-text-container py-1">
<p class="e-products-item-text mb-0 px-2 small">
<strong>Package Size</strong>
</p>
<p class="e-products-item-text mb-0 text-muted px-2 small">
@productData.descriptionShort
</p>
</div>
}
</div>
<div class="e-products-item-text-container text-center">
<h3 class="e-products-item-name mb-0">
@productData.name
</h3>
@* <p class="e-products-item-text mb-0"> *@
@* <small class="e-products-item-price small text-muted"> *@
@* <a href="@productData.url"> *@
@* @productData.price *@
@* </a> *@
@* </small> *@
@* </p> *@
</div>
</div>
</div>
</div>
}
}
@helper sectionStart(string sectionClasses = "e-section", string contentClasses = null, bool sectionCollapse = false, string collapseToggleTextExpand = "Se mere", string collapseToggleTextCollapse = "Se mindre")
{
ClassList sectionClassList = new ClassList();
sectionClassList.AddClasses( sectionClasses );
ClassList contentClassList;
string collapseId = Guid.NewGuid().ToString( "N" );
ClassList collapseToggleClassList = new ClassList();
if ( contentClasses == null )
{
contentClassList = Co3.Espresso.Website.Services.PageService.Instance.GetResponsiveClassesFromPageItem( PageView.Current().Page.Item );
}
else
{
contentClassList = new ClassList();
contentClassList.AddClasses( contentClasses );
}
if ( sectionCollapse == true )
{
sectionClassList.AddClasses( "p-section-collapse js-p-section-collapse" );
collapseToggleClassList.AddClasses( contentClasses );
collapseToggleClassList.AddClasses( "p-section-collapse-toggle collapsed order-last text-center" );
contentClassList.AddClasses( "p-section-collapse-content collapse is-md" );
}
@:<section class="@sectionClassList">
@:<div class="container-fluid">
@:<div class="row">
if ( sectionCollapse == true )
// TODO: SplitPattern into seperate heler function
{
<div class="@collapseToggleClassList" data-toggle="collapse" data-target="#@collapseId">
<button class="btn btn-primary p-section-collapse-toggle-btn" type="button">
<i class="material-icons p-section-collapse-toggle-icon">keyboard_arrow_down</i>
</button>
<small class="p-section-collapse-toggle-text h4" data-expand-text="@collapseToggleTextExpand" data-collapse-text="@collapseToggleTextCollapse"></small>
</div>
}
@:<div class="@contentClassList" id="@collapseId">
@:<div class="row">
}
@helper sectionEnd()
{
@:</div>
@:</div>
@:</div>
@:</div>
@:</section>
}
344
345
346
347 <div class="e-loading-overlay e-page-loading-overlay is-loading js-e-page-loading-overlay">
348 <div class="e-loading-spinner"></div>
349 </div>
350
351
352
353 <div class="@Espresso.Canvas.ClassList">
354 @{
355 ClassList headerClassList = new ClassList();
356 headerClassList.AddClasses( "e-header js-e-header is-sticky" );
357 if ( Espresso.Item.HeaderTransparent == "True" )
358 {
359 headerClassList.AddClasses( "is-transparent" );
360 }
361
362 ClassList logoClassList = new ClassList();
363 logoClassList.AddClasses( "e-logo" );
364
365 string backButtonLink = Espresso.Item.BackButtonLink;
366 ClassList backButtonClassList = new ClassList();
367 ClassList backButtonIconClassList = new ClassList();
368 if ( Espresso.Item.BackButton == "True" )
369 {
370 backButtonClassList.AddClasses( "btn btn-sm btn-secondary my-1 align-self-center" );
371 if ( backButtonLink == "" || backButtonLink == "/" )
372 {
373 backButtonLink = "/";
374 backButtonClassList.AddClasses( "js-e-back-link" );
375 }
376 backButtonIconClassList.AddClasses( "material-icons" );
377 if ( Espresso.Item.BackButtonPosition == "right" )
378 {
379 backButtonClassList.AddClasses( "order-last" );
380 logoClassList.AddClasses( "order-first" );
381 }
382 else
383 {
384 backButtonClassList.AddClasses( "order-first" );
385 logoClassList.AddClasses( "mr-0 ml-auto order-last" );
386 }
387 if ( Espresso.Item.BackButtonIcon == "arrow_back" )
388 {
389 backButtonClassList.AddClasses( "arrow-left" );
390 backButtonIconClassList.AddClasses( "d-none" );
391 }
392 else if ( Espresso.Item.BackButtonIcon == "arrow_forward" )
393 {
394 backButtonClassList.AddClasses( "arrow-right" );
395 backButtonIconClassList.AddClasses( "d-none" );
396 }
397 }
398
399 string logoPrimary = Espresso.Area.Item.LogoPrimary;
400 string logoSecondary = Espresso.Area.Item.LogoSecondary;
401 if ( string.IsNullOrEmpty( logoSecondary ) == true )
402 {
403 logoSecondary = logoPrimary;
404 }
405 string tagline = Espresso.Area.Item.Tagline;
406 Dictionary< string, string > navigationHtml = new Dictionary< string, string >
407 {
408 {
409 "global", RenderNavigation( new
410 {
411 id = "dwnav-global",
412 template = "global.xslt",
413 startlevel = 1,
414 endlevel = 8,
415 expandmode = "all"
416 } )
417 },
418 {
419 "utilities-primary", RenderNavigation( new
420 {
421 id = "dwnav-utilities-primary",
422 template = "utilities.xslt",
423 startlevel = 4,
424 endlevel = 5,
425 expandmode = "all",
426 parenttag = "utilities-primary"
427 } )
428 },
429 {
430 "utilities-secondary", RenderNavigation( new
431 {
432 id = "dwnav-utilities-secondary",
433 template = "utilities.xslt",
434 startlevel = 4,
435 endlevel = 4,
436 expandmode = "all",
437 parenttag = "utilities-secondary"
438 } )
439 },
440 {
441 "hamburger-header", RenderNavigation( new
442 {
443 id = "dwnav-hamburger-header",
444 template = "utilities.xslt",
445 startlevel = 4,
446 endlevel = 4,
447 expandmode = "all",
448 parenttag = "hamburger-header"
449 } )
450 },
451 {
452 "hamburger-aside", RenderNavigation( new
453 {
454 id = "dwnav-hamburger-aside",
455 template = "utilities.xslt",
456 startlevel = 4,
457 endlevel = 4,
458 expandmode = "all",
459 parenttag = "hamburger-aside"
460 } )
461 }
462 };
463 }
464 @if ( Espresso.Item.HeaderHide != "True" )
465 {
466 <header class="@headerClassList" data-autohide="true">
467
468 <div class="e-header-hamburger">
469 @sectionStart( "e-header-section e-section", "col-12" )
470 <div class="col-12 e-header-section-content">
471 <div class="@logoClassList">
472 <a class="e-logo-link" href="/">
473 <img src="@logoPrimary" class="e-logo-img e-logo-img-primary">
474 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary">
475 @if ( string.IsNullOrEmpty( tagline ) == false )
476 {
477 <p class="e-logo-tagline">@tagline</p>
478 }
479 </a>
480 </div>
481 @if ( Espresso.Item.NavigationHide != "True" )
482 {
483 <section class="e-nav-hamburger-header">
484 <ul class="nav">
485 @navigationHtml[ "hamburger-header" ]
486 @* TODO: Move to xslt *@
487 <li class="e-nav-item-hamburger-open nav-item">
488 <a class="nav-link" data-target=".modal.e-nav" data-toggle="modal" href="#">
489 <i class="e-nav-pageicon material-icons">menu</i>
490 <span class="e-nav-pagename">@Translate( "Header - Hamburger menu open - Button", "Menu" )</span>
491 </a>
492 </li>
493 </ul>
494 </section>
495 }
496 @if ( Espresso.Item.BackButton == "True" )
497 {
498 <a class="@backButtonClassList" href="@backButtonLink">
499 @if ( Espresso.Item.BackButtonIcon != "" )
500 {
501 <i class="@backButtonIconClassList">@Espresso.Item.BackButtonIcon</i>
502 }
503 @Espresso.Item.BackButtonText
504 </a>
505 }
506 </div>
507 @sectionEnd()
508 </div>
509 <div class="e-nav js-e-nav modal p-0" data-backdrop="false">
510 <div class="e-nav-container navbar">
511
512 @sectionStart( "e-header-section e-section", "col-12" )
513 <div class="col-12 e-header-section-content">
514 <div class="@logoClassList">
515 <a class="e-logo-link" href="/">
516 <img src="@logoPrimary" class="e-logo-img e-logo-img-primary" alt="@Espresso.Area.Item.CompanyName">
517 <img src="@logoSecondary" class="e-logo-img e-logo-img-secondary">
518 @if ( string.IsNullOrEmpty( tagline ) == false )
519 {
520 <p class="e-logo-tagline">@tagline</p>
521 }
522 </a>
523 </div>
524
525 @if ( Espresso.Item.NavigationHide != "True" )
526 {
527 <nav class="e-nav-global js-e-nav-global">
528 <ul class="nav">
529 @navigationHtml[ "global" ]
530 </ul>
531 </nav>
532
533 <div class="e-nav-item-hamburger-close">
534 <a class="nav-link" data-target=".modal.e-nav" data-toggle="modal" href="#">
535 <i class="e-nav-pageicon material-icons">close</i>
536 <span class="e-nav-pagename">@Translate( "Header - Hamburger menu close - Button", "Close" )</span>
537 </a>
538 </div>
539
540 if ( string.IsNullOrEmpty( navigationHtml[ "utilities-primary" ] ) == false )
541 {
542 @:</div>
543 @sectionEnd()
544 @sectionStart( "bg-tertiary e-header-section e-section", "col-12" )
545 @:<div class="col-12 e-header-section-content">
546
547 <nav class="e-nav-utilities-primary js-e-nav-utilities-primary">
548 <ul class="nav">
549 @navigationHtml[ "utilities-primary" ]
550 </ul>
551 </nav>
552 }
553 if ( string.IsNullOrEmpty( navigationHtml[ "utilities-secondary" ] ) == false )
554 {
555 <nav class="e-nav-utilities-secondary">
556 <ul class="nav">
557 @navigationHtml[ "utilities-secondary" ]
558 </ul>
559 </nav>
560 }
561 if ( string.IsNullOrEmpty( navigationHtml[ "hamburger-aside" ] ) == false )
562 {
563 <nav class="e-nav-hamburger-aside">
564 <ul class="nav">
565 @navigationHtml[ "hamburger-aside" ]
566 </ul>
567 </nav>
568 }
569 }
570 @if ( Espresso.Item.BackButton == "True" )
571 {
572 <a class="@backButtonClassList" href="@backButtonLink">
573 @if ( Espresso.Item.BackButtonIcon != "" )
574 {
575 <i class="@backButtonIconClassList">@Espresso.Item.BackButtonIcon</i>
576 }
577 @Espresso.Item.BackButtonText
578 </a>
579 }
580 </div>
581 @sectionEnd()
582
583 </div>
584 </div>
585
586 </header>
587 }
588
589
590
591 @using Dynamicweb.Security.UserManagement
592 @{
593 User currentUser = User.get_Current( PagePermissionLevels.Frontend );
594 if ( currentUser != null )
595 {
596 User currentSecondaryUser = currentUser.CurrentSecondaryUser;
597 if ( currentSecondaryUser != null )
598 {
599 @sectionStart( "e-section bg-warning", "col-12" )
600 <div class="align-self-center col-12 col-lg-9 col-md-8 my-1">
601 <p class="line-height-sm mb-0 text-center text-md-left">
602 <i class="material-icons material-icons-2x">supervisor_account</i> You are currently impersonating this user: <strong>@currentUser.Name</strong>
603 </p>
604 </div>
605 <div class="align-self-center col-12 col-lg-3 col-md-4 my-1">
606 <form class="mb-0 small text-center text-md-right" method="post" action="@Espresso.Area.Item.ExtranetImpersonationPage">
607 <button class="btn btn-primary" name="DwExtranetRemoveSecondaryUser" type="submit">Stop impersonation</button>
608 </form>
609 </div>
610 @sectionEnd()
611 }
612 }
613 }
614
615
616 <main class="e-content">
617 @using Dynamicweb.Content;
618 @using Dynamicweb.Extensibility;
619 @{
620 string eBreadcrumbClasslist = "e-breadcrumb js-e-breadcrumb d-none d-lg-block";
621 if ( Espresso.Item.Breadcrumb != "auto" && Espresso.Item.Breadcrumb != "none" && String.IsNullOrEmpty( Espresso.Item.Breadcrumb ) == false )
622 {
623 eBreadcrumbClasslist += string.Format( " e-breadcrumb-{0}", Espresso.Item.Breadcrumb );
624 }
625 string navigationHtmlBreadcrumb = RenderNavigation( new
626 {
627 id = "dwnav-breadcrumb",
628 template = "breadcrumb.xslt",
629 startlevel = 1,
630 endlevel = 10,
631 expandmode = "pathonly"
632 } );
633 }
634
635 @if ( string.IsNullOrEmpty( navigationHtmlBreadcrumb ) == false && Espresso.Item.Breadcrumb != "none" && string.IsNullOrEmpty( Espresso.Item.Breadcrumb ) == false )
636 {
637 <section class="e-section @eBreadcrumbClasslist">
638 <div class="container-fluid">
639 <div class="row">
640 <div class="col-12">
641 <div class="row">
642
643 <div class="col-12">
644 <nav class="e-breadcrumb-container">
645 <ol class="breadcrumb nav text-muted">
646 <li class="breadcrumb-item m-0 p-0">
647 <a class="arrow-left breadcrumb-back-link js-e-back-link px-0" href="/">@Translate( "Breadcrumb - Back link", "Back" )</a>
648 <span class="breadcrumb-prefix-text">
649 @Translate( "Breadcrumb - Prefix - Text", "You are here:" )
650 </span>
651 <a href="/">
652 @ServiceLocator.Current.GetPageService().GetFirstPageForArea( GetInteger( "DwAreaID" ) ).MenuText
653 </a>
654 </li>
655 @navigationHtmlBreadcrumb
656 </ol>
657 </nav>
658 </div>
659
660 </div>
661 </div>
662 </div>
663 </div>
664 </section>
665 }
666
667
668 <article id="dwcontentmain" class="e-content-main @Espresso.ContentArea.ClassList">
669 @{
670 string NavigationLocalHorizontalClassList = "e-nav-local e-nav-local-horizontal js-e-nav-local-horizontal";
671 string NavigationLocalHorizontalContainerClassList = "e-nav-local-container";
672 if( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "horizontal" ) {
673 NavigationLocalHorizontalClassList += " " + Espresso.Item.NavigationLocalCustomClasses;
674 if( Espresso.Item.NavigationLocalSticky == "True" ) {
675 NavigationLocalHorizontalClassList += " is-sticky";
676 }
677 if( Espresso.Item.NavigationLocalAbsolute == "True" ) {
678 NavigationLocalHorizontalClassList += " is-absolute";
679 }
680 else{
681 if( Espresso.Item.NavigationLocalMarginTop != "0" && Espresso.Item.NavigationLocalMarginTop != "" ) {
682 NavigationLocalHorizontalClassList += " mt-" + Espresso.Item.NavigationLocalMarginTop;
683 }
684 if( Espresso.Item.NavigationLocalMarginBottom != "0" && Espresso.Item.NavigationLocalMarginBottom != "" ) {
685 NavigationLocalHorizontalClassList += " mb-" + Espresso.Item.NavigationLocalMarginBottom;
686 }
687 }
688 }
689 }
690 @if( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "horizontal" ) {
691 <section class="e-section @NavigationLocalHorizontalClassList">
692 <div class="container-fluid">
693 <div class="row">
694 <div class="col-12">
695 <div class="row">
696
697 <div class="col-12">
698 <nav id="dwnav-local-@Espresso.DynamicwebPage.ID" class="@NavigationLocalHorizontalContainerClassList">
699 <ul class="nav justify-content-start">
700 @if( Espresso.Item.NavigationLocalHeading != "" ){
701 <li class="e-nav-local-heading"><h2>@Espresso.Item.NavigationLocalHeading</h2></li>
702 }
703 @RenderNavigation( new {
704 id = "dwnav-local-" + Espresso.DynamicwebPage.ID,
705 parentid = string.IsNullOrEmpty( Espresso.Item.NavigationLocalParentPage ) == false ? Espresso.Item.NavigationLocalParentPage : Espresso.DynamicwebPage.ID,
706 template = string.IsNullOrEmpty( Espresso.Item.NavigationLocalTemplate ) == false ? Espresso.Item.NavigationLocalTemplate : "local-" + Espresso.Item.NavigationLocalLayout + ".xslt",
707 startlevel = Espresso.Item.NavigationLocalLevelStart,
708 endlevel = Espresso.Item.NavigationLocalLevelEnd,
709 expandmode = Espresso.Item.NavigationLocalPageTreeExpand == "True" ? "all" : "path",
710 } )
711 </ul>
712 </nav>
713 </div>
714
715 </div>
716 </div>
717 </div>
718 </div>
719 </section>
720 }
721
722
723 @{
724 string NavigationLocalVerticalClassList = "e-nav-local e-nav-local-vertical js-e-nav-local-vertical";
725 string NavigationLocalVerticalContainerClassList = "e-nav-local-container";
726 string NavigationLocalVerticalTemplate = "local-" + Espresso.Item.NavigationLocalLayout + ".xslt";
727 if ( string.IsNullOrEmpty( Espresso.Item.NavigationLocalTemplate ) == false && Path.GetExtension( Espresso.Item.NavigationLocalTemplate ) == ".xslt" )
728 {
729 NavigationLocalVerticalTemplate = Path.GetFileName( Espresso.Item.NavigationLocalTemplate );
730 }
731
732 if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "vertical" )
733 {
734 NavigationLocalVerticalClassList += " " + Espresso.Item.NavigationLocalCustomClasses;
735 //NavigationLocalVerticalClassList += " col-3";
736
737 if ( Espresso.Item.NavigationLocalMarginTop != "0" && Espresso.Item.NavigationLocalMarginTop != "" )
738 {
739 NavigationLocalVerticalClassList += " mt-" + Espresso.Item.NavigationLocalMarginTop;
740 }
741 if ( Espresso.Item.NavigationLocalMarginBottom != "0" && Espresso.Item.NavigationLocalMarginBottom != "" )
742 {
743 NavigationLocalVerticalClassList += " mb-" + Espresso.Item.NavigationLocalMarginBottom;
744 }
745
746 if ( Espresso.Item.NavigationLocalSticky == "True" )
747 {
748 NavigationLocalVerticalClassList += " is-sticky";
749 }
750
751 if ( Espresso.Item.NavigationLocalAbsolute == "True" )
752 {
753 NavigationLocalVerticalClassList += " is-absolute";
754 }
755 else
756 {
757 Espresso.ContentSection.ClassList.Clear();
758 Espresso.ContentSection.ClassList.AddClasses( "wtf col-12 col-lg-9 ml-auto" );
759 }
760 }
761 }
762
763 @if ( Espresso.Item.NavigationLocalShow == "True" && Espresso.Item.NavigationLocalLayout == "vertical" )
764 {
765 <section class="e-section @NavigationLocalVerticalClassList">
766 <div class="container-fluid">
767 <div class="row">
768 <div class="col-12">
769 <div class="row">
770
771 <div class="col-3">
772 <nav id="dwnav-local-@Espresso.DynamicwebPage.ID" class="@NavigationLocalVerticalContainerClassList">
773 <ul class="flex-column nav">
774 @if ( Espresso.Item.NavigationLocalHeading != "" )
775 {
776 <li class="e-nav-local-heading">
777 <h2>@Espresso.Item.NavigationLocalHeading</h2>
778 </li>
779 }
780 @RenderNavigation( new
781 {
782 id = "dwnav-local-" + Espresso.DynamicwebPage.ID,
783 parentid = string.IsNullOrEmpty( Espresso.Item.NavigationLocalParentPage ) == false ? Espresso.Item.NavigationLocalParentPage : Espresso.DynamicwebPage.ID,
784 template = NavigationLocalVerticalTemplate,
785 startlevel = Espresso.Item.NavigationLocalLevelStart,
786 endlevel = Espresso.Item.NavigationLocalLevelEnd,
787 expandmode = Espresso.Item.NavigationLocalPageTreeExpand == "True" ? "all" : "path",
788 } )
789 </ul>
790 </nav>
791 </div>
792
793 </div>
794 </div>
795 </div>
796 </div>
797 </section>
798 }
799
800
801 @sectionStart()
802 @GetValue("DwContent(dwcontentmain)")
803 @sectionEnd()
804 </article>
805 </main>
806 @using System.Globalization
@using Dynamicweb.Frontend
@{
string FooterContentClassList = "e-footer-content e-section";
if( Espresso.Item.ContentAnimate == "True" ){
@* FooterContentClassList += " js-e-scroll-reveal"; *@
}
}
@if( Espresso.Item.FooterHide != "True" ){
<footer class="e-footer">
<article class="e-footer-wrapper">
<section class="@FooterContentClassList">
<div class="container-fluid">
<div class="row">
@if( string.IsNullOrEmpty( Espresso.Area.Item.FooterParagraphs ) == false ){
foreach( string paragraphID in Espresso.Area.Item.FooterParagraphs.Split( new char[]{','}, StringSplitOptions.None ) ){
@RenderParagraphContent( int.Parse( paragraphID ) );
}
}
@if( string.IsNullOrEmpty( GetString("DwNavigation(dwnavutilitiessecondaryfooter)") ) == false ){
<div class="col-12">
<aside class="e-nav-utilities-secondary">
<ul class="nav nav-inline">
@GetValue("DwNavigation(dwnavutilitiessecondaryfooter)")
</ul>
</aside>
</div>
}
</div>
</div>
</section>
<section class="e-footer-copyright e-section">
<div class="container-fluid">
<div class="row align-items-center">
<div class="col-12 col-sm-7">
<p class="e-copyright">
@Translate("Footer - Copyright - Text", "Copyright ©")
@GetGlobalValue("Global:Server.Date.Year")
@Espresso.Area.Item.CompanyName.
@Translate("Footer - All Rights Reserved - Text", "All rights reserved.")
</p>
</div>
<div class="col-12 col-sm-5 text-left text-sm-right">
<p class="website-by-co3"><a href="https://www.co3.dk/pim" target="_blank">Website: Co3</a></p>
<p class="pdf-only">@Translate("Footer - PDF created - Text", "PDf created:") @DateTime.Now.ToString( PageView.Current().Area.CultureInfo )</p>
</div>
</div>
</div>
</section>
</article>
<script data-cookieconsent="statistics" type="text/plain">
(function(e,t,o,n,p,r,i){e.visitorGlobalObjectAlias=n;e[e.visitorGlobalObjectAlias]=e[e.visitorGlobalObjectAlias]||function(){(e[e.visitorGlobalObjectAlias].q=e[e.visitorGlobalObjectAlias].q||[]).push(arguments)};e[e.visitorGlobalObjectAlias].l=(new Date).getTime();r=t.createElement("script");r.src=o;r.async=true;i=t.getElementsByTagName("script")[0];i.parentNode.insertBefore(r,i)})(window,document,"https://diffuser-cdn.app-us1.com/diffuser/diffuser.js","vgo");
vgo('setAccount', '92226054');
vgo('setTrackByDefault', true);
vgo('process');
</script>
</footer>
}
807 @if( string.IsNullOrEmpty( GetString("DwContent(dwcontentcta)") ) == false ) {
808 <aside id="dwcontentcta" class="js-e-cta e-cta is-hidden fixed-top">
809 <section class="e-section">
810 <div class="container-fluid">
811 <div class="row no-gutters">
812 <div class="col-12">
813 <div class="row no-gutters justify-content-center align-items-center">
814 @GetValue("DwContent(dwcontentcta)")
815 @* <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> *@
816 </div>
817 </div>
818 </div>
819 </div>
820 </section>
821 </aside>
822 }
823
824 <div class="e-cart-msg modal fade small" id="js-e-cart-msg" data-backdrop="false">
<div class="modal-dialog e-cart-msg-modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="m-0 js-e-cart-msg-heading modal-title">
<i class="material-icons material-icons-large text-black">check_circle</i>
<span>@Translate( "eCom Cart - Product Added - Heading", "Added to your cart" )</span>
</h4>
<button class="close" data-dismiss="modal" type="button">
<i class="material-icons">close</i>
</button>
</div>
<div class="modal-body d-none">
<div class="js-e-cart-msg-content">
<script id="js-e-handlebars-tmpl-cart-msg-lastadded" type="text/x-handlebars-template">
<div class="row">
{{#each cart.lastAdded}}
<div class="col-12 py-1">
<div class="row">
<div class="col-4">
<a class="" href="{{url}}">
<img alt="" class="img-fluid" src="{{imageLarge}}">
</a>
</div>
<div class="col-8">
<h3 class="mb-0">
<a href="{{url}}" class="text-decoration-none">{{name}}</a>
</h3>
<p class="mb-0">
<a href="{{url}}" class="text-auto text-decoration-none">
{{{price}}}<br>
{{{stock.text}}}<br>
{{{stock.delivery}}}<br>
</a>
</p>
</div>
</div>
</div>
{{/each}}
</div>
</script>
</div>
</div>
<div class="bg-light e-cart-msg-footer modal-footer border-top-0">
<a class="btn btn-secondary mr-1" href="/shop/cart" data-dismiss="modal">@Translate( "eCom Checkout - Continue Shopping - Button","Continue Shopping" )</a>
<a class="arrow-right btn btn-success" href="/shop/cart">@Translate( "eCom Checkout - Go to cart - Button","Go to cart" )</a>
</div>
</div>
</div>
</div>
825 </div>
826
827 <div class="modal fade e-search js-e-search js-e-search-modal modal-fullscreen" data-backdrop="false" data-keyboard="true" data-focus="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<a class="btn btn-sm btn-secondary js-e-back-link arrow-left" href="/" data-dismiss="modal">
@Translate("Search - Back button", "Back")
</a>
<div class="e-logo">
<a href="/" class="e-logo-link my-0">
<img src="@logoPrimary" class="e-logo-img e-logo-img-primary">
<img src="@logoSecondary" class="e-logo-img e-logo-img-secondary">
</a>
</div>
</div>
<div class="modal-body">
<div class="container-fluid">
<div class="e-search-form-container">
<div class="row justify-content-center">
<div class="col-12 col-md-10 col-lg-8 col-xl-6 mt-3">
<form action="" class="e-search-form js-e-search-form">
<div class="js-e-search-input-group e-search-input-group is-empty">
<label class="e-search-label" for="e-search-input"><i class="material-icons">search</i></label>
@{ string Translate_Search_InputText = Translate("Search - Input Placeholder - Text", "Search"); }
<input type="text" class="js-e-search-input e-search-input form-control-plaintext border-0" name="q" id="e-search-input" placeholder="@Translate_Search_InputText">
<span class="js-e-search-clear e-search-clear"><i class="material-icons">close</i></span>
<button class="e-search-submit btn btn-primary" type="submit"><i class="material-icons">search</i></button>
</div>
</form>
</div>
</div>
</div>
<div class="js-e-search-result-container e-search-result-container">
<div class="row justify-content-center">
<div class="col-12 col-md-10 col-lg-8 col-xl-6">
<p class="e-search-result-info small text-muted mt-1 mb-3"><span class="js-e-search-result-count">0</span> @Translate("Search - Result Count - Text", "results")</p>
</div>
</div>
<div class="row justify-content-center">
<div class="col-12 col-xl-10">
<div class="js-e-search-result-products e-search-result-products is-empty mb-4">
<script id="js-e-handlebars-tmpl-search-result-item-product" type="text/x-handlebars-template">
<div class="e-products">
<div class="row">
{{#loop products}}
<div class="col-6 col-sm-6 col-md-4 col-lg-4">
<div class="e-products-item">
<div class="e-products-item-container">
<div class="e-products-item-image-container">
<a class="e-products-item-image-wrapper" href="{{url}}">
<img src="{{imageMedium}}" alt="" class="e-products-item-image j-img-productcategory-{{category}}">
</a>
</div>
<div class="e-products-item-text-container text-center small">
<h3 class="e-products-item-name mb-0"><a href="{{url}}">{{name}}</a></h3>
{{#if floorCategoryName}}
<p>{{{floorCategoryName}}}</p>
{{/if}}
{{#if descriptionShortExtra01}}
<p class="e-products-item-text mb-0 small">
<a href="{{url}}">
{{descriptionShortExtra01}}
</a>
</p>
{{/if}}
@* <p class="e-products-item-text mb-0 small"> *@
@* <span class="e-products-item-price"> *@
@* <a href="{{url}}"> *@
@* {{{price}}} *@
@* </a> *@
@* </span> *@
@* </p> *@
</div>
</div>
</div>
</div>
{{/loop}}
</div>
<p class="js-e-search-products-show-all text-center"><a href="" class="btn btn-secondary px-6">@Translate("Search - View All Products - Button", "View All Products")</a></p>
</div>
</script>
</div>
</div>
</div>
<div class="row justify-content-center">
<div class="col-12 col-md-10 col-lg-8 col-xl-6">
<div class="js-e-search-result-pages e-search-result-pages is-empty mb-3">
<script id="js-e-handlebars-tmpl-search-result-item-page" type="text/x-handlebars-template">
<div class="row">
{{#loop pages}}
<div class="col-12">
<p class="mb-0"><a href="{{{url}}}" class="text-bold">{{{title}}}</a></p>
<p class="mb-0 small text-truncate">
<a href="{{{url}}}" class="text-auto text-muted text-decoration-none"><span class="d-none d-sm-inline">@GetGlobalValue( "Global:Request.Host" )</span>{{{url}}}</a></p>
<p class="small">{{{text}}}...</p>
</div>
{{/loop}}
</div>
</script>
</div>
</div>
</div>
<div class="js-e-search-loading-overlay e-loading-overlay e-search-loading-overlay">
<div class="e-loading-spinner"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
828 @if( Espresso.Area.Item.BackToTopLink == "True" ){
829 <a href="#top" class="e-back-to-top js-e-back-to-top"><i class="material-icons">keyboard_arrow_up</i></a>
830 }
831
832
833
834
835 <div class="d-none flex-column">
836 <div class="bg-primary">
837 <br>
838 </div>
839 <div class="bg-secondary">
840 <br>
841 </div>
842 <div class="bg-tertiary">
843 <br>
844 </div>
845 </div>
846 <script data-cookieconsent="ignore" async="" src="/Files/Templates/Designs/junckers/_assets/_dist/js/default.js?v=1.17.18"></script>
847
848 <a class="js-junckers-documentation-link junckers-documentation-pdf-link js-junckers-pdf-link pdf-hidden" href="#" target="_blank" data-product-id="@pdfProductId" data-page-id="@pdfPageId">
849 <i class="material-icons">picture_as_pdf</i>
850 </a>
851 </body>
852 @GetValue( "CopyRightNotice" )
853 </html>
854