Error executing template "Designs/Tapas/_parsed/cleanpage.parsed.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at CompiledRazorTemplates.Dynamic.RazorEngine_393d41d8f5ec43ea9b4db3e4467bd037.Execute() in E:\Websites\elma.LIVE\Files\Templates\Designs\Tapas\_parsed\cleanpage.parsed.cshtml:line 217
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 Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
2 @using Dynamicweb.Rendering
3 @using System.Collections.Generic
4 @using Dynamicweb.Environment
5
6 @{
7 object objInstantSearchId = (object)null;
8 Dynamicweb.Frontend.PageView.Current().Area.Item.TryGetValue("InstantSearchId", out objInstantSearchId);
9 int instantSearchId = int.Parse(objInstantSearchId.ToString());
10
11 object objProductCatalogId = (object)null;
12 Dynamicweb.Frontend.PageView.Current().Area.Item.TryGetValue("ProductCatalogId", out objProductCatalogId);
13 int productCatalogId = int.Parse(objProductCatalogId.ToString());
14
15 object objLoginId = (object)null;
16 Dynamicweb.Frontend.PageView.Current().Area.Item.TryGetValue("LoginId", out objLoginId);
17 int loginId = int.Parse(objLoginId.ToString());
18
19 object objFooterId = (object)null;
20 Dynamicweb.Frontend.PageView.Current().Area.Item.TryGetValue("FooterId", out objFooterId);
21 int footerId = int.Parse(objFooterId.ToString());
22
23 object objCheckoutId = (object)null;
24 Dynamicweb.Frontend.PageView.Current().Area.Item.TryGetValue("CheckoutId", out objCheckoutId);
25 int checkoutId = int.Parse(objCheckoutId.ToString());
26
27 object objNewsletterId = (object)null;
28 Dynamicweb.Frontend.PageView.Current().Area.Item.TryGetValue("NewsletterId", out objNewsletterId);
29 int newsletterId = int.Parse(objNewsletterId.ToString());
30
31 object objLogo = (object)null;
32 Dynamicweb.Frontend.PageView.Current().Area.Item.TryGetValue("Logo", out objLogo);
33 string logo = objLogo.ToString();
34
35 object objSearchResultId = (object)null;
36 Dynamicweb.Frontend.PageView.Current().Area.Item.TryGetValue("SearchResultId", out objSearchResultId);
37 int searchResultId = int.Parse(objSearchResultId.ToString());
38
39 string googleMapsLink = Dynamicweb.Core.Converter.ToString(Pageview.Area.Item["MapsLink"]);
40
41 var CurrentUser = Dynamicweb.Security.UserManagement.User.GetCurrentUser();
42 string action = GetString("DWExtranetAction");
43 string userName = GetString("DWExtranetUsername");
44 string password = GetString("DWExtranetPassword");
45 string rememberUsername = GetString("DWExtranetUsernameRemember");
46 string rememberPassword = GetString("DWExtranetPasswordRemember");
47 string pageid = GetGlobalValue("Global:Page.ID");
48
49 var websiteLoop = GetLoop("Item.Area.Websites");
50 string currentAreaId = GetString("DwAreaID");
51
52 string globalValueUrl = GetGlobalValue( "Global:Pageview.Url" );
53 bool isProductPage = string.IsNullOrEmpty( System.Web.HttpContext.Current.Request["productid"] ) == false;
54 string canonicalPageView = String.Format( "{0}://{1}{2}", GetGlobalValue( "Global:Request.Scheme" ), GetGlobalValue( "Global:Request.Host" ), globalValueUrl );
55 bool printActivated = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.GetString("activatePrint"));
56 string printCssClass = printActivated ? "print-ready" : "";
57 string doctypeprops1 = string.Empty;
58 string doctypeprops2 = string.Empty;
59 string htmltype = string.Empty;
60 string fixoverflow = string.Empty;
61
62 DateTime today = DateTime.Today;
63 string currentYear = today.ToString("yyyy");
64
65 var footerNavigationLoop = GetLoop("Item.Area.FooterNavigation");
66
67 var isCheckout = false;
68 if (checkoutId == int.Parse(pageid))
69 {
70 isCheckout = true;
71 }
72 string CustomerType = Firstweb.Custom.CustomCode.Webshop.Frontend.Helpers.CustomerType.GetCustomerType();
73 string privateSelected = CustomerType == "Privat" ? "selected" : "";
74 string companySelected = CustomerType == "Erhverv" ? "selected" : "";
75 string assetVersion = "2.1.43X";
76
77 string paymentImage = Dynamicweb.Core.Converter.ToString(Pageview.Area.Item["PaymentImage"]);
78
79 string eComCanonicalSnippetTag = RenderSnippet( "eComCanonical" ).ToString().Trim();
80 string scheme = Dynamicweb.Context.Current.Request.Url.Scheme;
81 string host = Dynamicweb.Context.Current.Request.Url.Host;
82 }
83
84 @SnippetStart("Logo")
85 <a href="/" class="branding">
86 <img class="img-responsive" src='@logo' alt='@Translate("LogoAlt", "Elma Instruments A/S")'>
87 </a>
88 @SnippetEnd("Logo")
89
90 @if (printActivated)
91 {
92 doctypeprops1 = "\"-//W3C//DTD XHTML 1.0 Strict//EN\"";
93 doctypeprops2 = "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"";
94 htmltype = "http://www.w3.org/1999/xhtml";
95 fixoverflow = "overflow:hidden;";
96 }
97
98 <!DOCTYPE html PUBLIC @doctypeprops1 @doctypeprops2>
99 <html lang="@Pageview.Area.CultureInfo.TwoLetterISOLanguageName" xmlns='@htmltype' style='@fixoverflow'>
100
101 <head>
102 @if (GetBoolean("Item.Area.Custom_Activate_ABTest"))
103 {
104 <!-- AB Split test script DK -->
105 if (currentAreaId == "8")
106 {
107 <script type="text/javascript" src="https://cdn-sitegainer.com/5620463/es6/index.bundle.js"></script>
108 }
109
110 <!-- AB Split test script Se -->
111 if (currentAreaId == "9")
112 {
113 <script type="text/javascript" src="https://cdn-sitegainer.com/5620464/es6/index.bundle.js"></script>
114 }
115
116 <!-- AB Split test script NO -->
117 if (currentAreaId == "10")
118 {
119 <script type="text/javascript" src="https://cdn-sitegainer.com/5620465/es6/index.bundle.js"></script>
120 }
121
122 <!-- anti-flicker snippet (recommended) -->
123 <style>
124 .async-hide {
125 opacity: 0 !important
126 }
127 </style>
128 <script data-cookieconsent="ignore">
129 (function (a, s, y, n, c, h, i, d, e) {
130 s.className += ' ' + y; h.start = 1 * new Date;
131 h.end = i = function () { s.className = s.className.replace(RegExp(' ?' + y), '') };
132 (a[n] = a[n] || []).hide = h; setTimeout(function () { i(); h.end = null }, c); h.timeout = c;
133 })(window, document.documentElement, 'async-hide', 'dataLayer', 4000,
134 { 'GTM-567PQPG': true });</script>
135 }
136 @if (!String.IsNullOrEmpty(GetString("Item.Area.CookiebotHeader.Value")))
137 {
138 <text>@GetString("Item.Area.CookiebotHeader.Value")</text>
139 }
140
141 <!-- Google Tag Manager -->
142
143 <script data-cookieconsent="ignore">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
144
145 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
146
147 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
148
149 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
150
151 })(window,document,'script','dataLayer','GTM-567PQPG');</script>
152
153 <!-- End Google Tag Manager -->
154
155 <meta name="google-site-verification" content="gjghbJwNSc0kdCeOim65Q67ZWJ2QAwQTbg_--ucyRuA">
156
157
158 <title>@GetValue("Title")</title>
159 @GetValue("MetaTags")
160 @GetValue("CopyRightNotice")
161
162 <link rel="icon" type="image/png" href="/Files/Templates/Designs/Tapas/assets/img/favicon.png">
163 <meta charset="utf-8">
164 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
165 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
166
167 @if (System.Web.HttpContext.Current.Request.Url.Host.ToLower().Contains("1stweb"))
168 {
169 <meta name="robots" content="noindex">
170 }
171
172 @if ( isProductPage == false )
173 {
174 <link rel="canonical" href="@canonicalPageView">
175 }
176 else
177 {
178 <link rel="canonical" href="@eComCanonicalSnippetTag">
179 }
180
181 @RenderSnippet("NoTelephoneDetection")
182
183 <!--
184 Made by:
185 1st Web
186 Klostergade 56 B 2 th.
187 8000 Aarhus C.
188 www.1stweb.dk
189 -->
190 <!--inject:css-->
191 <link rel="stylesheet" href="/Files/Templates/Designs/Tapas/assets/min/library.min.css?v=@assetVersion">
192 <link rel="stylesheet" href="/Files/Templates/Designs/Tapas/assets/min/main.min.css?v=@assetVersion">
193 <link rel="stylesheet" href="/Files/Templates/Designs/Tapas/assets/dist/css/tapas.css?v=@assetVersion">
194 <!--endinject-->
195 <!-- fonts start -->
196 <link rel="preconnect" href="https://fonts.googleapis.com">
197 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
198 <link href="https://fonts.googleapis.com/css2?family=Arvo:wght@700&family=Lato:wght@400;700;900&family=Questrial&display=swap" rel="stylesheet">
199 <!-- fonts end -->
200
201 @foreach (var script in GetLoop("Item.Area.Scripts"))
202 {
203 @script.GetString("Item.Area.Scripts.Script")
204 }
205 @{
206 string currentGroupId = Dynamicweb.Context.Current.Request.GetString("GroupID");
207 var breadCrumbGroupList = Firstweb.Custom.CustomCode.Webshop.Frontend.Helpers.EcomGroups.getBreadCrumbGroupList(currentGroupId, true);
208 string productPageID = Dynamicweb.Core.Converter.ToString(Pageview.Area.Item["ProductCatalogId"]);
209 string productPageHref = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl($"Default.aspx?ID={productPageID}");
210 int index = 3;
211 Dynamicweb.Ecommerce.Products.Product product = new Dynamicweb.Ecommerce.Products.Product();
212 string productUrl = "";
213
214 if (isProductPage)
215 {
216 product = Dynamicweb.Ecommerce.Products.Product.GetProductById(Dynamicweb.Context.Current.Request.GetString("productid"));
217 productUrl = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl($"Default.aspx?ID={productPageID}&ProductId={product.Id}");
218 }
219
220 if (!string.IsNullOrWhiteSpace(currentGroupId) ||
221 !string.IsNullOrWhiteSpace(Dynamicweb.Context.Current.Request.GetString("productid")) ||
222 !string.IsNullOrWhiteSpace(Dynamicweb.Context.Current.Request.GetString("compare")) ||
223 !string.IsNullOrWhiteSpace(Dynamicweb.Context.Current.Request.GetString("Search")) ||
224 Dynamicweb.Core.Converter.ToInt32(Pageview.Area.Item["ProductCatalogId"]) == Pageview.ID ||
225 GetBoolean("Item.Page.RemoveStandardBreadcrumbs.Value"))
226 {
227 <script type="application/ld+json">
228 {
229 "@@context": "https://schema.org",
230 "@@type": "BreadcrumbList",
231 "itemListElement":
232 [
233 @RenderSchemaItem(@Translate("Firstweb.Content.Breadcrumbs.Frontpage", "Forside"), "", 1),
234 @RenderSchemaItem(@Translate("Firstweb.Content.Breadcrumbs.ProductPage", "Produkter"), productPageHref, 2)
235 @foreach (var g in breadCrumbGroupList)
236 {
237 <text>,</text>
238 string breadCrumbLink = $"Default.aspx?ID={productPageID}&GroupID={g.Id}";
239 string friendlyBreadCrumbLink = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(breadCrumbLink);
240 @RenderSchemaItem(g.Name, friendlyBreadCrumbLink, index)
241 index++;
242 }
243 @if (isProductPage)
244 {
245 <text>,</text>
246 @RenderSchemaItem(product.Name, productUrl, index)
247 }
248 ]
249 }
250 </script>
251 }
252
253 if (isProductPage)
254 {
255 List<string> productImages = Firstweb.Custom.CustomCode.Webshop.Frontend.Helpers.ProductImages.getProductImages(product.Id);
256 var ProductPriceInfo = product.GetPrice(Dynamicweb.Ecommerce.Common.Context.Currency.Code, Dynamicweb.Ecommerce.Common.Context.Country.Code2);
257 string productDescription = Dynamicweb.Core.Converter.ToString(Dynamicweb.Ecommerce.Services.Products.GetProductFieldValue(product, "DescriptionWithoutHtml"));
258 <script type="application/ld+json">
259 {
260 "@@context": "https://schema.org",
261 "@@type": "Product",
262 "@@id": "@(scheme + "://" + host + productUrl)",
263 "name": "@System.Web.HttpUtility.HtmlEncode(product.Name)",
264 @if (productImages.Count > 0) {<text> "image": [
265 "@(scheme + "://" + host + productImages.First())"
266 ],</text>}
267 "sku": "@product.Number",
268 "gtin13": "@product.Number",
269 "brand": {
270 "@@type": "Brand",
271 "name": "ELMA"
272 },
273 "url": "@(scheme + "://" + host + productUrl)",
274 @if (!string.IsNullOrEmpty(productDescription)){<text>"description": "@System.Text.Json.JsonEncodedText.Encode(productDescription)",</text>}
275 @if(ProductPriceInfo.PriceWithVAT > 0 && !Dynamicweb.Core.Converter.ToBoolean(product.GetProductFieldValue("FirstwebAskForPrice")))
276 {
277 <text>"offers": {
278 "@@type": "Offer",
279 "url": "@(scheme + "://" + host + productUrl)",
280 "price": "@ProductPriceInfo.PriceWithVAT.ToString().Replace(',','.')",
281 "priceCurrency": "@Dynamicweb.Ecommerce.Common.Context.Currency.Code",
282 "availability": @if(product.Stock > 0){<text>"https://schema.org/InStock"</text>}else{<text>"https://schema.org/OutOfStock"</text>}
283
284 },</text>
285 }
286 "itemCondition": "https://schema.org/NewCondition"
287 }
288 </script>
289 }
290
291 if (GetString("Item.SystemName") == "News")
292 {
293 <script type="application/ld+json">
294 {
295 "@@context": "https://schema.org",
296 "@@type": "Article",
297 "headline": "@GetString("Item.NewsHeader")",
298 "description": "@System.Web.HttpUtility.HtmlEncode(GetString("Item.NewsTeaser.Value"))",
299 "image": [
300 "@(scheme + "://" + host + GetString("Item.NewsImage.Value"))"
301 ],
302 "datePublished": "@GetString("Item.NewsDate.Value")",
303 "author": {
304 "@@type": "Organization",
305 "name": "Elma Instruments"
306 },
307 "publisher": {
308 "@@type": "Organization",
309 "name": "Elma Instruments",
310 "logo": {
311 "@@type": "ImageObject",
312 "url": "https://elma.dk/media/elma-logo.png"
313 }
314 },
315 "mainEntityOfPage": {
316 "@@type": "WebPage",
317 "@@id": "@(scheme + "://" + host + Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl($"Default.aspx?ID={Pageview.Page.ID}"))"
318 }
319 }
320 </script>
321 }
322 }
323
324 <!--inject:css--><!--endinject-->
325 @GetValue("Stylesheets")
326 @GetValue("Javascripts")
327 </head>
328
329
330 <body class="@printCssClass" data-bind="closeMenuItems: { menuOpenObservable: menuOpen, miniCartVisibleObservable: miniCartVisible }, css: { 'loading': load().active }">
331 <!-- Google Tag Manager (noscript) -->
332 <noscript>
333 <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-567PQPG" height="0" width="0" style="display:none;visibility:hidden"></iframe>
334 </noscript>
335 <!-- End Google Tag Manager (noscript) -->
336 <!-- ko if: responsive-->
337 <div class="mobileSection visible-sm visible-xs" data-bind="css: { 'open': showResponsiveMenu }">
338 <div class="mobile-menu-closer" data-bind="click: toggleResponsiveMenu">
339 </div>
340 @GetValue("DwNavigation(responsivenav)")
341 </div>
342 <!-- /ko -->
343
344 <div class="desktopSection js-wrapper" data-bind="css: { 'open': showResponsiveMenu }">
345 @if (printActivated == false)
346 {
347
348 <header class="header">
349
350 <div class="header__primary" data-bind="floatingMenu">
351 <div class="header__secondary hidden-print">
352 <div class="container">
353 <div class="header__secondary__inner hidden-xs">
354 <div class="vat-selector">
355 <button class="@companySelected" data-bind="click: setCustomerType.bind($data, 'Erhverv')">@Translate("Erhverv", "Erhverv")</button>
356 <button class="@privateSelected" data-bind="click: setCustomerType.bind($data, 'Privat')">@Translate("Privat", "Privat")</button>
357 </div>
358 <nav class="navigation navigation--secondary">
359 @GetValue("DwNavigation(dwtopnav)")
360 </nav>
361 </div>
362 </div>
363 </div>
364 <div class="header__primary__inner">
365 @RenderSnippet("Logo")
366
367 <div class="navigation-links">
368
369 <!-- ko ifnot: responsive-->
370 <nav class="navigation navigation--primary visible-md visible-lg">
371 @GetValue("DwNavigation(dwnav)")
372 </nav>
373 <!-- /ko -->
374
375 <div class="header__search visible-md visible-lg js-instant-search-container" data-bind="viewModel: Tapas.ViewModels.InstantSearchViewModel">
376 <div data-bind="instantSearchButtonControls: '.productCount'">
377 @inherits RazorTemplateBase<RazorTemplateModel<Template>>
378 @using Dynamicweb.Rendering;
379
380 <form style="margin-bottom: 0;" name="EcomSearch" method="get" action="Default.aspx" data-bind='value: instantSearchPageId(@instantSearchId), loadOnBool: { observableBool: CartLoading, text: "@Firstweb.Custom.CustomCode.Webshop.Frontend.Helpers.Base.JSTrimTranslation(Translate("addproduct", "Tilføjer produkt"))" }'>
381 <div class="instant-search-form">
382 <input type="hidden" name="ID" value="@searchResultId">
383 <input type="text" placeholder='@Translate("SearchForProduct", "Søg efter produkt")' id="instantSearch" class="form-control" data-bind="textInput: searchQuery" autocomplete="off" name="Search">
384 <span class="instant-search-icon" data-bind="submitParentForm, css: { animate: searchLoading }">
385 <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 512 512"><path fill="#97c93d" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"></path></svg>
386 </span>
387 </div>
388
389 <div class="result instant-search-results container elma-card" data-bind="html: result, visible: allResults">
390 </div>
391 </form>
392 </div>
393 </div>
394
395 <div class="header__actions">
396
397 <div class="item mobile-search visible-xs visible-sm" data-bind="menu, focusFirstInputOnClick">
398 <div class="elma-menu-icon">
399 <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 512 512"><path fill="#97c93d" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"></path></svg>
400 </div>
401 <div class="search-container">
402 <div class="header__search js-instant-search-container" data-bind="viewModel: Tapas.ViewModels.InstantSearchViewModel">
403 <div data-bind="instantSearchButtonControls: '.productCount'">
404 @inherits RazorTemplateBase<RazorTemplateModel<Template>>
405 @using Dynamicweb.Rendering;
406
407 <form style="margin-bottom: 0;" name="EcomSearch" method="get" action="Default.aspx" data-bind='value: instantSearchPageId(@instantSearchId), loadOnBool: { observableBool: CartLoading, text: "@Firstweb.Custom.CustomCode.Webshop.Frontend.Helpers.Base.JSTrimTranslation(Translate("addproduct", "Tilføjer produkt"))" }'>
408 <div class="instant-search-form">
409 <input type="hidden" name="ID" value="@searchResultId">
410 <input type="text" placeholder='@Translate("SearchForProduct", "Søg efter produkt")' id="instantSearch" class="form-control" data-bind="textInput: searchQuery" autocomplete="off" name="Search">
411 <span class="instant-search-icon" data-bind="submitParentForm, css: { animate: searchLoading }">
412 <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="search" class="svg-inline--fa fa-search fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 512 512"><path fill="#97c93d" d="M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z"></path></svg>
413 </span>
414 </div>
415
416 <div class="result instant-search-results container elma-card" data-bind="html: result, visible: allResults">
417 </div>
418 </form>
419 </div>
420 </div>
421 </div>
422 </div>
423
424 @if (CurrentUser != null)
425 {
426 <div class="item user-menu" data-bind="menu">
427 <div class="elma-menu-icon">
428 <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="user" class="svg-inline--fa fa-user fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 448 512"><path fill="#97c93d" d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path></svg>
429 </div>
430 @GetValue("DwNavigation(usernavigation)")
431 </div>
432 }
433 else
434 {
435 <div class="item user-menu" data-toggle="modal" data-target=".loginModal">
436 <div class="elma-menu-icon">
437 <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="user" class="svg-inline--fa fa-user fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 448 512"><path fill="#97c93d" d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path></svg>
438 </div>
439 <div class="dropDown elma-card elma-card--white">
440 @inherits RazorTemplateBase<RazorTemplateModel<Template>>
441 @using Dynamicweb.Rendering;
442
443 <div class="loginDetails login-container">
444 <div>
445 <div class="dropdown UserLinks" data-bind="visible: $root.User().IsLoggedIn()" style="display: none;">
446 <a id="user" data-toggle="dropdown" role="button">
447 <i class="elma-icon-lock"></i> <span data-bind="text: $root.User().Name"></span><span class="caret"></span>
448 </a>
449 @GetValue("DwNavigation(dwusernav)")
450 </div>
451 </div>
452 </div>
453 </div>
454 </div>
455 }
456
457 <div class="item cart-info" data-bind="viewModel: Elma.ViewModels.MiniCartViewModel, menu, css: { 'visible': miniCartVisible }">
458 <div class="elma-menu-icon">
459 <svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="shopping-cart" class="svg-inline--fa fa-shopping-cart fa-w-18" role="img" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 576 512"><path fill="#97c93d" d="M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z"></path></svg>
460 </div>
461 <span class="count-indicator" data-bind="css: { ShowCartIndicator: ShowCartIndicator }, text: Cart().TotalProductLines"></span>
462 <div class="dropDown miniCart elma-card">
463 <div class="col-md-12 col-sm-12 col-xs-12 customTable">
464 <div class="row tableRow">
465 <div class="col-md-12 col-sm-12 col-xs-12">
466 @inherits RazorTemplateBase<RazorTemplateModel<Template>>
467 @using Dynamicweb.Rendering;
468
469 @{
470 var currentLocale = GetGlobalValue("Global:Area.LongLang");
471 bool IsPrivateCustomer = Firstweb.Custom.CustomCode.Webshop.Frontend.Helpers.CustomerType.GetCustomerType() == "Privat";
472 }
473
474 <div class="col-md-12 col-sm-12 col-xs-12 headlineBlock" data-bind="visible: ShowEmptyMiniCart">
475 <h2 class="headline">@Translate("yourorderlines", "Ordrelinjer")</h2>
476 <a href="/Default.aspx?ID=@checkoutId&step=1" class="quickAdd btn btn-primary quick-search-btn pull-right">
477 @Translate("gotopayment", "Til betaling")
478 </a>
479 </div>
480
481 <div class="col-md-12 col-sm-12 col-xs-12 headlineBlock" data-bind="visible: !ShowEmptyMiniCart()">
482 <h2 class="headline">@Translate("cartisempty", "Din kurv er tom")</h2>
483 </div>
484
485 <div class="col-md-12 col-sm-12 col-xs-12 orderlines" data-bind="visible: ShowEmptyMiniCart">
486 <div class="row">
487 <div class="col-md-12 col-sm-12 col-xs-12">
488 <div class="row minicart-tableheader">
489 <div class="col-md-5 col-sm-5 col-xs-5 miniCart name">@Translate("ItemName", "Vare")</div>
490 <div class="col-md-2 col-md-offset-0 col-sm-offset-0 col-sm-2 col-xs-2 miniCart alignRight unitPrice hidden-xs">@Translate("UnitPrice", "Enhedspris")</div>
491 <div class="col-md-2 col-md-offset-0 col-sm-offset-0 col-sm-2 col-xs-3 col-xs-offset-0 miniCart alignRight quantity">@Translate("quantity", "Antal")</div>
492 <div class="col-md-2 col-sm-2 col-xs-3 miniCart alignRight totalPrice">@Translate("total", "Total")</div>
493 </div>
494 </div>
495 <div class="col-md-12 col-sm-12 col-xs-12" data-bind="foreach: { data: Cart().CartLines.slice(0).reverse(), as: 'cartItem', afterRender: EverythingHasLoaded }">
496 <div class="orderLine">
497 <div class="product-info" data-bind="attr: {'data-product-info': [cartItem.ProductName(), cartItem.ProductNumber(), 'Denmark', '0', cartItem.ProductUnitPriceWithVat(), 'Elma', 'Elma']}"></div>
498 <div class="row">
499 <div class="col-md-5 col-sm-5 col-xs-6 miniCart name">
500 <h5 class="no-margin-top"><strong data-bind="text: cartItem.ProductName"></strong></h5>
501 <p class="desktop-inline-block">@Translate("Firstweb:Product.ProductInfo.Eannumber", "EAN:"): <span data-bind="text: cartItem.ProductNumber"></span></p>
502 <div data-bind="foreach: { data: cartItem.CustomProductFields, as: 'pf'}" class="desktop-inline-block">
503 <p data-bind="if: $data.Id() == 'FirstwebElNo'"><span class="hidden-xs"> / </span>@Translate("Firstweb:Product.ProductInfo.Elnumber", "EL-NR.:") <span data-bind="text: $data.Value()"></span></p>
504 </div>
505 </div>
506 @if (IsPrivateCustomer)
507 {
508 <div class="col-md-2 col-sm-2 col-xs-2 miniCart alignRight unitPrice hidden-xs" data-bind="formatNumber: { locale: '@currentLocale', observable: cartItem.ProductUnitPriceWithVat }"></div>
509 }
510 else
511 {
512 <div class="col-md-2 col-sm-2 col-xs-2 miniCart alignRight unitPrice hidden-xs" data-bind="formatNumber: { locale: '@currentLocale', observable: cartItem.ProductUnitPrice }"></div>
513 }
514 <div class="col-md-1 col-md-offset-1 col-sm-1 col-xs-2 miniCart alignRight quantity col-sm-offset-1 custom-spinedit"><input class="spinedit-input" type="tel" data-bind="value: cartItem.Quantity, spinEdit: { minimum: 1 }, event: { change: $parent.UpdateQuantity }, attr: {'ftw-olid': LineId }"></div>
515 @if (IsPrivateCustomer)
516 {
517 <div class="col-md-2 col-sm-2 col-xs-3 miniCart alignRight totalPrice" data-bind="formatNumber: { locale: '@currentLocale', observable: ProductPrice }"></div>
518 }
519 else
520 {
521 <div class="col-md-2 col-sm-2 col-xs-3 miniCart alignRight totalPrice" data-bind="formatNumber: { locale: '@currentLocale', observable: ProductPriceWithoutVAT }"></div>
522 }
523 <div data-bind="click: $parent.DeleteOrderLine, attr: {'ftw-olid': cartItem.LineId }" class="col-md-1 col-sm-1 col-xs-1 miniCart delete">X</div>
524 </div>
525 </div>
526 </div>
527 <div class="col-md-12 col-sm-12 col-xs-12 mini-cart-total">
528 <div class="full-width text-right miniCart summary">
529 @Translate("Cart.TotalWithoutVat", "Total beløb ekls. moms") <span data-bind="formatNumber: { locale: '@currentLocale', observable: CartTotalAmountNoVat }">@GetString("Ecom:Order.PriceWithoutFees.PriceWithoutVAT") </span> @GetString("Ecom:Order.Currency.Code")
530 </div>
531 <div class="full-width text-right miniCart summary">
532 @Translate("Cart.TotalWithVat", "Total beløb inkl. moms") <span data-bind="formatNumber: { locale: '@currentLocale', observable: CartTotalAmount }">@GetString("Ecom:Order.PriceWithoutFees.PriceWithVAT")</span> @GetString("Ecom:Order.Currency.Code")
533 </div>
534 </div>
535 </div>
536 </div>
537
538
539 </div>
540 </div>
541 </div>
542 </div>
543 </div>
544
545 <div class="collapseBtn js-collapse-btn" data-bind="click: toggleResponsiveMenu"></div>
546
547 </div>
548
549 </div>
550 </div>
551 </div>
552 </header>
553 }
554
555
556
557 @using Dynamicweb.Environment
558
559
560 @{
561 var hasGroupId = !string.IsNullOrWhiteSpace(Dynamicweb.Context.Current.Request.GetString("groupid"));
562 var hasProductId = !string.IsNullOrWhiteSpace(Dynamicweb.Context.Current.Request.GetString("productid"));
563 var hasCompare = !string.IsNullOrWhiteSpace(Dynamicweb.Context.Current.Request.GetString("compare"));
564 var hasSearch = !string.IsNullOrWhiteSpace(Dynamicweb.Context.Current.Request.GetString("Search"));
565 int productPageId = Dynamicweb.Core.Converter.ToInt32(Pageview.Area.Item["ProductCatalogId"]);
566 bool disabledBreadcrumbs = GetBoolean("Item.Page.RemoveStandardBreadcrumbs.Value");
567 var isEcom = hasGroupId || hasProductId || hasCompare || hasSearch || productPageId == Pageview.ID || disabledBreadcrumbs;
568 }
569
570 <div class="container-fluid">
571 <div class="row">
572 <div class="col-xs-12">
573 <div class="row header-image" id="headerImage">@GetValue("DwContent(headerImage)")</div>
574 </div>
575 </div>
576 </div>
577
578 @if (isEcom == false)
579 {
580
581 @* only show breadcrumbs on non-ecom pages *@
582 @* ecom pages have their own custom breadcrumbs from our 1stweb helpers *@
583
584 <div class="container">
585 <div class="row">
586 @RenderNavigation(new
587 {
588 template = "breadcrumbs.xslt",
589 id = "breadcrumb",
590 sitemapmode = "true",
591 homepageText = Translate("homepage", "Forside")
592 })
593 </div>
594 </div>
595 }
596
597 <div id="headlineOneColumn">@GetValue("DwContent(headlineOneColumn)")</div>
598
599 <div id="content1">@GetValue("DwContent(content1)")</div>
600
601 @if (!printActivated)
602 {
603 <section class="newsletter">
604 <div class="container">
605 <div class="row flex-row align-items-center">
606 <div class="col-md-4">
607 <p class="newsletter__heading--large">@Translate("NewsletterText.Heading", "Tilmeld dig E-News!")</p>
608 <p class="newsletter__heading">@Translate("NewsletterText", "Hold dig opdateret og få vores fantastiske tilbud i din indbakke")</p>
609 </div>
610 <div class="col-md-8">
611 @RenderPageContent(newsletterId)
612 </div>
613 </div>
614 </div>
615 </section>
616
617 <footer class="footer hidden-print">
618 <div class="container">
619 @RenderItem(new { ItemType = "WebshopFooter", SourceItemEntry = footerId, ItemFields = "*", DetailsTemplate = "RenderItem/footer.cshtml" })
620 <div class="row flex-row footer__secondary">
621 <div class="col-xs-12 col-md-4 footer__secondary-item">
622 <p>@Translate("PaymentText", "Betalingsmetoder")</p>
623 <img src="@paymentImage" alt="" style="height: 30px;">
624 </div>
625
626 <div class="col-xs-12 col-md-4 justify-content-center footer__secondary-item footer__secondary-item--nav">
627 @foreach (var footerNavItem in footerNavigationLoop) {
628 string itemText = footerNavItem.GetString("Item.Area.FooterNavigation.ColText.Value");
629 string itemLink = footerNavItem.GetString("Item.Area.FooterNavigation.ColLink.Value");
630 <a href="@itemLink">@itemText</a>
631 }
632 </div>
633 <div class="col-xs-12 col-md-4 footer__secondary-item">
634 <p>© @currentYear @Translate("ElmaCopyrightText", "Elma Instruments. All Rights Reserved.")</p>
635 </div>
636 </div>
637 </div>
638 </footer>
639
640 <div class="overlay">
641 <div class="loader">
642 <div class="dot"></div>
643 <div class="dot"></div>
644 <div class="dot"></div>
645 <div class="loaderText" data-bind="text: load().text"></div>
646 </div>
647 </div>
648
649 <div class="modal fade js-customer-type-modal customer-type-modal" id="customerTypeSelector" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
650 <div class="modal-dialog" role="document">
651 <div class="modal-content elma-card elma-card--padded">
652 <div class="modal-body">
653 <p class="customer-type-modal_header">@Translate("CustomerTypeModal.Header", "Vælg kundetype")</p>
654 <button type="button" class="btn btn-secondary" data-bind="click: setCustomerType.bind($data, 'Privat')">@Translate("Privat", "Privat")</button>
655 <button type="button" class="btn btn-secondary" data-bind="click: setCustomerType.bind($data, 'Erhverv')">@Translate("Erhverv", "Erhverv")</button>
656 </div>
657 </div>
658 </div>
659 </div>
660
661 <a href='@googleMapsLink' class="display-none-sm find-me-container text-center border-top-radius-left" rel='noopener noreferrer' target='_blank'>
662 <div class="footer-trigger-icon">
663 <i class="elma-icon-find-me"></i>
664 </div>
665 <p class="footer-trigger-text">@Translate("footerFindMe", "Find os")</p>
666 </a>
667
668
669 <div class="newsletter-widget" data-bind="css: { 'open': showNewsletterWidget }, value: newsletterModal = '.newsletter-modal' ">
670
671 <div class="newsletter-open text-center border-top-radius-right" data-bind="click: toggleNewsletterWidget">
672 <div class="footer-trigger-icon">
673 <i class="elma-icon-newsletter"></i>
674 </div>
675 <p class="footer-trigger-text">@Translate("newsletterOpenTag", "Nyhedsbrev")</p>
676 </div>
677
678 <div class="newsletter-content elma-card">
679 <div class="newsletter-close" data-bind="click: hideNewsletterWidget"></div>
680 <form name="UserManagementEditForm" data-bind="submit: submitNewsletterSubscription, value: newsletterFormID = '@newsletterId'">
681 <input type="hidden" name="UserManagementForm" value="1">
682 <input type="hidden" id="HiddenField.CustomField.AccessUser_AccessUser_NewsletterSubscription" name="CustomField.AccessUser_AccessUser_NewsletterSubscription" value="True">
683 <input name="UserManagement_Form_EmailAllowed" type="hidden" id="UserManagement_Form_EmailAllowed" value="True">
684 <input name="UserManagement_Form_EmailAllowed_ApplyValue" type="hidden" id="UserManagement_Form_EmailAllowed_ApplyValue" value="AllowEmail">
685
686 <div class="newsletter-head">
687 @Translate("Nesletter.Header", "Tilmeld dig E-news!")
688 </div>
689
690 <div class="newsletter-subhead">
691 <p>
692 @Translate("Nesletter.Subhead1", "Tilmeld dig vores spændende nyhedsbrev og få alle de gode tilbud og nyheder først.")
693 </p>
694 <p>
695 @Translate("Newsletter.Subhead2", "Det eneste du skal gøre er at udfylde nedenfor.")
696 </p>
697 </div>
698 <div class="row">
699 <div class="col-sm-6">
700 <input name="UserManagement_Form_Name" class="form-control" id="UserManagement_Form_Name" type="text" placeholder='@Translate("Newsletter.Input.Name", "Skrit dit navn")' required="">
701 </div>
702 <div class="col-sm-6">
703 <input name="UserManagement_Form_Email" class="form-control" id="UserManagement_Form_Email" type="email" placeholder='@Translate("Newsletter.Input.Email", "Skrit din E-mail")' required="">
704 </div>
705 </div>
706
707 <div class="row">
708 <div class="col-sm-12 newsletter-checkbox">
709 <label class="bs-label">
710 <input class="checkbox-field bs" type="checkbox" name="CustomField.AccessUser_AccessUser_NewsMagazineSubscription" data-bind="checked: newsMagazineSubscription">
711 <span class="checkbox-text">@Translate("Newsletter.SubscribeToMagazine", "Jeg ønsker også at modtage Elma's nyhedsmagasin Instrument News med posten")</span>
712 </label>
713 </div>
714 </div>
715
716 <div class="row">
717 <div class="col-sm-12 hide" data-bind="css: {'show': newsMagazineSubscription }">
718 <div class="form-group">
719 <input class="form-control" name="UserManagement_Form_Company" type="text" maxlength="255" placeholder='@Translate("Newsletter.Company", "Firmnavn")' value="">
720 </div>
721 <div class="form-group">
722 <input class="form-control" name="UserManagement_Form_FirstName" type="text" maxlength="255" placeholder='@Translate("Newsletter.Name", "Navn")' value="">
723 </div>
724 <div class="form-group">
725 <input class="form-control" name="UserManagement_Form_Address" type="text" maxlength="255" placeholder='@Translate("Newsletter.Address", "Adresse")' value="">
726 </div>
727 <div class="row form-group">
728 <div class="col-sm-4">
729 <input class="form-control" name="UserManagement_Form_Zip" type="text" maxlength="255" placeholder='@Translate("Newsletter.Zip", "Postnr")' value="">
730 </div>
731 <div class="col-sm-8">
732 <input class="form-control" name="UserManagement_Form_City" type="text" maxlength="255" placeholder='@Translate("Newsletter.City", "By")' value="">
733 </div>
734 </div>
735 </div>
736 </div>
737
738 <button class="btn btn-block btn-primary" type="submit" data-bind="disable: newsletterSubmitting">@Translate("Newsletter.Submit", "Tilmeld nyhedsbrev")</button>
739 </form>
740 </div>
741 </div>
742
743 <div class="newsletter-modal modal fade" tabindex="-1" role="dialog" data-bind="css: { 'subSuccess': newsletterSubscriptionStatus, 'subError': !newsletterSubscriptionStatus() }">
744 <div class="modal-dialog">
745 <div class="modal-content">
746 <div class="modal-header">
747 <button type="button" class="close" data-dismiss="modal" aria-label="Close"></button>
748 <h4 class="modal-title subSuccess">@Translate("newslettersuccess", "Du er nu tilmeldt nyhedsbrev!")</h4>
749 <h4 class="modal-title subError">@Translate("newslettererror", "Der skete en uventet fejl, prøv igen senere.")</h4>
750 </div>
751
752 <div class="modal-footer">
753 <button type="button" class="button" data-dismiss="modal" aria-label="Close">@Translate("newsletterbtn", "okay")</button>
754 </div>
755 </div>
756 </div>
757 </div>
758
759 <div class="js-backdrop elma-backdrop hide-elm"></div>
760 }
761 </div>
762
763 <div data-bind="viewModel: Elma.ViewModels.LoginViewModel">
764
765 @{
766 string forgotEmail = Dynamicweb.Core.Converter.ToString(Pageview.Area.Item["ForgotEmail"]);
767 string forgotPasswordEmailSubject = Translate("ForgotPasswordMailSubject", "Her er dit password");
768 }
769
770 @if (!string.IsNullOrEmpty(forgotEmail))
771 {
772 <!-- ko initValue: {observable: dwForgotEmail, value:'@forgotEmail'}--><!-- /ko-->
773 }
774
775 @* Because of happy DW - we need to add ../ before the path in order for Extranet to find the correct path *@
776
777 <!-- ko initValue: {observable: dwForgotPasswordMailTemplate, value:'../Extranet/mail.cshtml'}--><!-- /ko-->
778 <!-- ko initValue: {observable: dwForgotPasswordMailSubject, value:'@Firstweb.Custom.CustomCode.Webshop.Frontend.Helpers.Base.JSTrimTranslation(forgotPasswordEmailSubject)'}--><!-- /ko-->
779 <!--Login popup-->
780 <div class="modal loginModal" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel">
781 <div class="modal-dialog elma-card elma-card--white">
782 <div class="popupBox login modal-content">
783 <div class="modal-header">
784 <button type="button" class="close" data-dismiss="modal" aria-label="Close"></button>
785 <span class="modal__title m-t-0">@Translate("login", "Log ind")</span>
786 </div>
787 <div class="modal-body" data-bind="Fadevisible: ToggleForgottenPassword, delayIn:250">
788 <form name="ExtUserForm" id="ExtUserForm" method="post" action="@action">
789 <div class="form">
790 <div class="form-group">
791 <input class="form-control" type="text" name="Username" placeholder='@Translate("username", "Brugernavn")' value="@userName" data-bind="value: UserName, hasFocus: addFocus" required="">
792 </div>
793 <div class="form-group">
794 <input class="form-control" type="password" name="Password" placeholder='@Translate("password", "Adgangskode")' value="@password" data-bind="value: Password" required="">
795 </div>
796
797 </div>
798 <div class="action">
799 <div class="">
800 <label class="customRadio">
801 <input type="checkbox" name="Autologin" data-bind="checked: rememberMe">
802 <div class="radio"></div>
803 @Translate("stayloggedin", "Husk mig")
804 </label>
805 <div class="forgottenPass elma-link elma-link--grey" data-bind="toggleClick: ToggleForgottenPassword">
806 @Translate("forgottenpassword", "Glemt adgangskode")
807 </div>
808
809 <div class="modal-login-failed" data-bind="visible: LoginFailed">
810 <div class="alert alert-danger">
811 @Translate("LoginFailed", "Du har indtastet et forkert kode eller forkert brugernavn, Prøv venligst igen")
812 </div>
813 </div>
814 <div class="row" data-bind="visible: LoginWrongDomain">
815 <div class="col-sm-12">
816 <div class="alert alert-danger">
817 @Translate("LoginWrongDomain", "Du har logget ind på det forkerte domæne")
818 </div>
819 </div>
820 </div>
821 </div>
822 <div class="modal-buttons pull-right">
823 <div class="btn btn-secondary" data-bind="click: newUser">
824 @Translate("donthavealogin", "Opret bruger")
825 </div>
826 <button class="btn btn-primary pull-right" tabindex="3" value="LOG IND" data-bind="click: Login, toggleClick: Loader">@Translate("login", "Log ind")</button>
827 </div>
828 <span data-bind="Fadevisible: !Loader(), css:{ loginsuccess : $root.User().IsLoggedIn(), loginFail : LoginFailed() }" class="ringLoader"></span>
829 </div>
830 </form>
831 </div>
832 <div class="modal-body forgotten" data-bind="Fadevisible: !ToggleForgottenPassword(), delayIn:250">
833 <div class="back" data-bind="toggleClick: ToggleForgottenPassword">@Translate("back", "Tilbage")</div>
834 <div class="action">
835 <form name="ExtUserForm" id="ExtUserForm" method="post" action="@action" data-bind="submit: recover">
836 <input type="text" class="form-control" name="Email" placeholder='@Translate("email", "Email")' data-bind="value: email" required="">
837 <div class="confirmation" data-bind="html: confirmation"></div>
838 <button type="submit" class="btn btn-primary pull-right col-xs-12" tabindex="3">@Translate("getpassword", "Få tilsendt kode")</button>
839 <span data-bind="Fadevisible: ForgottenLoader" class="ringLoader"></span>
840 </form>
841 </div>
842 </div>
843 </div>
844 </div>
845 </div>
846 <!--New user popup-->
847 <div class="modal newUser fade" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" data-bind="value: newUserModal = '.newUser'">
848 <div class="modal-dialog">
849 <div class="popupBox login modal-content">
850 <!-- ko initValue: {observable: userType, value:'1'}--><!-- /ko-->
851
852 <div class="modal-header subHeading">
853 <button type="button" class="close" data-dismiss="modal" aria-label="Close"></button>
854 <span data-bind="visible: !successOrFail()">@Translate("makenewuser", "Opret ny bruger")</span>
855 <span data-bind="visible: successOrFail">@Translate("congratulations", "Tillykke.")</span>
856 </div>
857 <div class="modal-body" data-bind="value: loginId = @loginId, visible: !successOrFail()">
858 <form name="MakeNewUserForm" id="MakeNewUserForm" data-bind="createUser: { link: '/Handlers/Firstweb.ERP.Users.ashx?cmd=createcustomer', type: 'login'}">
859 <div class="form">
860 <div class="form-group margin-top-half margin-bottom-half">
861 <label class="radio-inline bs-label block-radio" for="customertype_1">
862 <input type="radio" class="bs" name="customertype" id="customertype_1" value="1" data-bind="checked: userType" checked="checked"> <span>@Translate("CustomerType_1", "Privat")</span>
863 </label>
864 <label class="radio-inline bs-label block-radio" for="customertype_2">
865 <input type="radio" data-bind="checked: userType" class="bs" name="customertype" id="customertype_2" value="2"> <span>@Translate("CustomerType_2", "Virksomhed")</span>
866 </label>
867
868 <label class="radio-inline bs-label block-radio" for="customertype_3">
869 <input type="radio" data-bind="checked: userType" class="bs" name="customertype" id="customertype_1" value="3"> <span>@Translate("CustomerType_3", "Offentlig")</span>
870 </label>
871 </div>
872
873 <div class="form-group js-form-group">
874 <label for="Companyname">
875 @Translate("companyname", "Firmanavn")
876 </label>
877 <input class="form-control" type="text" name="Companyname" placeholder="" data-bind="hasFocus: makeNewUserOpen, value: companyName, renderInputForm: { myArray: visibleFields, name: 'company'}" required="">
878 </div>
879
880 <div class="form-group">
881 <label for="Name">
882 @Translate("contactperson", "Kontaktperson")
883 </label>
884 <input class="form-control" type="text" name="Name" placeholder="" data-bind="value: contactperson" required="">
885 </div>
886
887 <div class="form-group">
888 <label for="Address1">
889 @Translate("address1", "Adresse 1")
890 </label>
891 <input class="form-control" type="text" name="address" placeholder="" data-bind="value: address1" required="">
892 </div>
893
894 <div class="form-group">
895 <label for="Address2">
896 @Translate("address2", "Adresse 2")
897 </label>
898 <input class="form-control" type="text" name="Address2" placeholder="" data-bind="value: address2">
899 </div>
900
901 <div class="form-group js-form-group">
902 <label for="cvr">
903 @Translate("cvr", "CVR nr.")
904 </label>
905 <input class="form-control" type="tel" name="cvr" placeholder="" data-bind="value: cvr, renderInputForm: { myArray: visibleFields, name: 'cvr'}">
906 </div>
907
908
909 <div class="form-group js-form-group">
910 <label for="ean">
911 @Translate("ean", "EAN nr.")
912 </label>
913 <input class="form-control" type="tel" name="ean" placeholder="" data-bind="value: ean, renderInputForm: { myArray: visibleFields, name: 'ean'}">
914 </div>
915
916 <div class="form-group">
917 <div class="row">
918 <div class="col-sm-6 mobile-m-b-15">
919 <label for="zip">
920 @Translate("zip", "Postnr.")
921 </label>
922 <input class="form-control" type="tel" name="zipcode" placeholder="" data-bind="value: zip" required="">
923 </div>
924 <div class="col-sm-6">
925 <label for="city">
926 @Translate("city", "By")
927 </label>
928 <input class="form-control" type="text" name="city" placeholder="" data-bind="value: city" required="">
929 </div>
930 </div>
931
932
933 </div>
934
935
936 <div class="form-group">
937 <label for="country">
938 @Translate("country", "Land")
939 </label>
940
941 <select name="country" class="form-control">
942 @foreach (var item in Dynamicweb.Ecommerce.International.Country.GetCountries())
943 {
944 var selected = item.Code2 == Dynamicweb.Ecommerce.Common.Context.Country.Code2 ? "selected" : "";
945 <option value="@item.Code2" @selected="">@item.CountryText.Name</option>
946 }
947 </select>
948
949 @*<input class="form-control" type="text" name="country" placeholder="" data-bind="value: country">*@
950 </div>
951
952 <div class="form-group">
953 <label for="Email">
954
955 @Translate("email", "E-mail")
956 </label>
957 <input class="form-control" type="email" name="Email" placeholder="" data-bind="value: useremail" required="">
958 </div>
959
960
961 <div class="form-group">
962 <label for="Phone">
963 @Translate("phone", "Telefon")
964 </label>
965 <input class="form-control" type="tel" name="Phone" placeholder="" data-bind="value: phone" required="">
966 </div>
967 <div class="form-group">
968 <label for="Password">
969 @Translate("password", "Adgangskode")
970 </label>
971 <input class="form-control" type="password" name="Password" placeholder="" required="">
972 </div>
973
974
975 <div class="row">
976 <div class="col-sm-12 margin-bottom-half">
977 <div class="checkbox">
978 <label class="bs-label">
979 <input class="bs" type="checkbox" name="NewsletterSubscription" id="newslettersubscription" value="True">
980 <span>@Translate("NewsletterSubscriptionLabel", "Jeg ønsker at modtage Elma E-news (nyhedsbrev på e-mail)")</span>
981 </label>
982 @if (GetString("LongLang") != "en-GB")
983 {
984 <label class="bs-label">
985 <input class="bs" type="checkbox" name="NewsMagazineSubscription" id="newsmagazinesubscription" value="True">
986 <span>@Translate("NewsMagazineSubscriptionLabel", "Jeg ønsker også at modtage Elma's nyhedsmagasin Instruments News med posten")</span>
987 </label>
988 }
989 </div>
990 </div>
991 </div>
992
993 <input type="hidden" name="groups" id="groups" data-bind="value: group = 5">
994 <div class="status error-180 margin-bottom-desktop">@Translate("mailalreadyexists", "E-mail adressen er allerede i brug")</div>
995 </div>
996 <div class="action">
997 <button class="btn btn-primary pull-right mobile-full-width" tabindex="3">@Translate("makenewuser", "Opret ny bruger")</button>
998 <span data-bind="Fadevisible: newUserLoader" class="ringLoader"></span>
999 </div>
1000 </form>
1001 </div>
1002 <div class="modal-body confirmation" data-bind="visible: successOrFail">
1003 <h2>@Translate("youhavemadeanewuser", "Du er nu oprettet som bruger")</h2>
1004 <p class="margin-bottom-half">@Translate("wehavesentaemailwithuserdetails", "- Vi har sendt en E-mail med brugeroplysninger.")</p>
1005 <button class="btn btn-primary" tabindex="3" data-dismiss="modal" value="luk">@Translate("closepopup", "Luk popup")</button>
1006 </div>
1007 </div>
1008 </div>
1009 </div>
1010
1011
1012 </div>
1013
1014
1015 <script data-cookieconsent="ignore" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
1016 <script data-cookieconsent="ignore" src="/Files/templates/designs/tapas/assets/libraries/crypto-js.min.js"></script>
1017 <script data-cookieconsent="ignore">
1018 window.jQuery || document.write('<script src="files/templates/designs/tapas/assets/lbriaries/jquery-2.1.4.min.js"><\/script>')
1019 </script>
1020
1021 <!--inject:js-->
1022 <script data-cookieconsent="ignore" src="/Files/Templates/Designs/Tapas/assets/min/library.min.js?v=@assetVersion"></script>
1023 <script data-cookieconsent="ignore" src="/Files/Templates/Designs/Tapas/assets/min/_main.min.js?v=@assetVersion"></script>
1024 <script data-cookieconsent="ignore" src="/Files/Templates/Designs/Tapas/assets/dist/js/tapas.js?v=@assetVersion"></script>
1025 <!--endinject-->
1026 <script data-cookieconsent="ignore">
1027 Elma.Init()
1028 </script>
1029
1030 <!--inject:css--><!--endinject-->
1031 </body>
1032 </html>
1033
1034 @helper RenderSchemaItem(string name, string item, int position)
1035 {
1036 <text>{
1037 "@@type": "ListItem",
1038 "position": @position,
1039 "name": "@System.Web.HttpUtility.HtmlEncode(name)",
1040 "item": "@(Dynamicweb.Context.Current.Request.Url.Scheme + "://" + Dynamicweb.Context.Current.Request.Url.Host + item)"
1041 }</text>
1042 }