Error executing template "Designs/Tapas/_parsed/cleanpage.parsed.cshtml"
System.TypeInitializationException: The type initializer for 'Roslyn.Utilities.TextKeyedCache`1' threw an exception. ---> System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at Roslyn.Utilities.TextKeyedCache`1..cctor()
--- End of inner exception stack trace ---
at Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LexerCache..ctor()
at Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.Lexer..ctor(SourceText text, CSharpParseOptions options, Boolean allowPreprocessorDirectives, Boolean interpolationFollowedByColon)
at Microsoft.CodeAnalysis.CSharp.CSharpSyntaxTree.ParseText(SourceText text, CSharpParseOptions options, String path, ImmutableDictionary`2 diagnosticOptions, CancellationToken cancellationToken)
at RazorEngine.Roslyn.CSharp.CSharpRoslynCompilerService.GetSyntaxTree(String sourceCode, String sourceCodePath)
at RazorEngine.Roslyn.CSharp.RoslynCompilerServiceBase.CompileType(TypeContext context)
at RazorEngine.Templating.RazorEngineCore.CreateTemplateType(ITemplateSource razorTemplate, Type modelType)
at RazorEngine.Templating.RazorEngineCore.Compile(ITemplateKey key, Type modelType)
at RazorEngine.Templating.RazorEngineService.CompileAndCacheInternal(ITemplateKey key, Type modelType)
at RazorEngine.Templating.RazorEngineService.GetCompiledTemplate(ITemplateKey key, Type modelType, Boolean compileOnCacheMiss)
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 RazorTemplateBase<RazorTemplateModel<Template>>
2 @using Dynamicweb.Rendering;
3 @using System.Configuration;
4 @using System.Collections.Generic;
5 @using Dynamicweb.Core;
6 @using System.Web;
7
8 @{
9 //Pages
10 string CurrentPageId = Dynamicweb.Frontend.PageView.Current().ID.ToString();
11 string CurrentAreaId = Dynamicweb.Frontend.PageView.Current().AreaID.ToString();
12 string cartContext = Firstweb.Custom.CustomCode.Frontend.Helpers.Cart.GetCurrentCartContext();
13
14 string instantSearch_PageId = Firstweb.Custom.CustomCode.Tapas.Context.AreaPages.GetPageId("instantsearch");
15
16
17 string cartUrl = Firstweb.Custom.CustomCode.Frontend.Helpers.Cart.GetCartPageUrl();
18 string cart_PageId = Firstweb.Custom.CustomCode.Frontend.Helpers.Cart.GetCartPageId();
19
20
21 string productCatalog_PageId = Firstweb.Custom.CustomCode.Tapas.Context.AreaPages.GetPageId("productcatalog");
22 string login_PageId = Firstweb.Custom.CustomCode.Tapas.Context.AreaPages.GetPageId("login");
23
24 bool isCheckout = (CurrentPageId == cart_PageId);
25
26 //logo and fav icons
27 string logo = Firstweb.Custom.CustomCode.Tapas.Context.AreaItem.GetString("Logo", "files/templates/designs/tapas/assets/img/TapasLogoMountain.svg");
28
29 string favIcon = Firstweb.Custom.CustomCode.Tapas.Context.AreaItem.GetString("FavIcon");
30 string small = string.Format("/Admin/Public/GetImage.ashx?Image={0}&Width=16&Height=16&Compression=90&Crop=0", favIcon);
31 string medium = string.Format("/Admin/Public/GetImage.ashx?Image={0}&Width=32&Height=32&Compression=90&Crop=0", favIcon);
32 string large = string.Format("/Admin/Public/GetImage.ashx?Image={0}&Width=96&Height=96&Compression=90&Crop=0", favIcon);
33 string olderIphone = string.Format("/Admin/Public/GetImage.ashx?Image={0}&Width=120&Height=120&Compression=90&Crop=0", favIcon);
34 string iphone6 = string.Format("/Admin/Public/GetImage.ashx?Image={0}&Width=180&Height=180&Compression=90&Crop=0", favIcon);
35 string retina = string.Format("/Admin/Public/GetImage.ashx?Image={0}&Width=152&Height=152&Compression=90&Crop=0", favIcon);
36 string ipadPro = string.Format("/Admin/Public/GetImage.ashx?Image={0}&Width=167&Height=167&Compression=90&Crop=0", favIcon);
37
38 //Footer
39 string companyName = Firstweb.Custom.CustomCode.Tapas.Context.AreaItem.GetString("CompanyName");
40 string companyAddress1 = Firstweb.Custom.CustomCode.Tapas.Context.AreaItem.GetString("CompanyAddress1");
41 string companyAddress2 = Firstweb.Custom.CustomCode.Tapas.Context.AreaItem.GetString("CompanyAddress2");
42 string companyPhone = Firstweb.Custom.CustomCode.Tapas.Context.AreaItem.GetString("CompanyPhone");
43 string companyMail = Firstweb.Custom.CustomCode.Tapas.Context.AreaItem.GetString("CompanyMail");
44 string companyGroup = Firstweb.Custom.CustomCode.Tapas.Context.AreaItem.GetString("CompanyGroup");
45 string companyLink = Firstweb.Custom.CustomCode.Tapas.Context.AreaItem.GetString("CompanyLink");
46
47 //Translations
48 var translationAddToCart = Translate("Product.AddToCart", "Tilføj til kurv");
49 var translationAddingToCart = Translate("Product.AddingToCart", "Tilføjer til kurv");
50
51 var translationGotoCheckout = Translate("Page.GotoCheckout", "Gå til checkout");
52 var translationQuickOrderFieldPlaceholder = Translate("Page.QuickOrderFieldPlaceholder", "Søg...");
53 var translationInstantSearchFieldPlaceholder = Translate("Page.InstantSearchFieldPlaceholder", "Søg...");
54 var translationMiniCartHeader = Translate("Page.MiniCartHeader", "Din kurv");
55
56 var translationQuantity = Translate("Quantity", "Antal");
57
58 var translationUpdatingCart = Translate("Cart.UpdatingCart", "Opdatere kurv");
59 var translationCartIsEmpty = Translate("Cart.IsEmpty", "Din kurv er tom");
60
61 var translationCartTotalAmountInclVAT = Translate("Cart.TotalAmountInclVAT", "Total inkl. moms");
62 var translationCartTotalAmountExclVAT = Translate("Cart.TotalAmountExclVAT", "Total eksl. moms");
63 var translationCartTotalVAT = Translate("Cart.TotalVAT", "Moms");
64
65 //Google tag manager
66 bool gtmIdDefined = !String.IsNullOrEmpty(GetString("Item.Area.Google_Tag_Manager_ID"));
67 string gtmId = GetString("Item.Area.Google_Tag_Manager_ID");
68
69 //Misc
70 int searchDebounceInterval = Firstweb.Custom.CustomCode.Tapas.Context.AreaItem.GetInt("SearchDebounceInterval", 500);
71 var enviromentType = System.Configuration.ConfigurationManager.AppSettings["EnvironmentType"] as string;
72 string cssMobileClass = (GetGlobalValue("Global:Device.IsMobile") == "True") ? "js-is-mobile" : string.Empty;
73 string ExcelQuickAdd = "/Default.aspx?id=" + Firstweb.Custom.CustomCode.Tapas.Context.AreaPages.GetPageId("ExcelAdd");
74 string InstantSearchResultsHeader = Translate("InstantSearch.ResultsHeader", "Søgeresultat");
75
76 bool showFreeFreightLimit = Firstweb.Custom.CustomCode.Frontend.Helpers.Cart.ShowFreeFreightLimit();
77 string MenuContentBackground = GetString("Item.Area.Baggrundsfarve.Value");
78 string MenuContent = GetString("Item.Area.ProductMenuBox_Content.Value");
79 string MenuContentLinkText = GetString("Item.Area.KnapTekst.Value");
80 string MenuContentLinkDestination = GetString("Item.Area.KnapLink.Value");
81 string MenuContentBackgroundImage = GetString("Item.Area.Baggrundsbillede.Value");
82 string MenuContentBackgroundImageCss = "";
83 if (!String.IsNullOrEmpty(MenuContentBackgroundImage))
84 {
85 MenuContentBackgroundImageCss = "background-image:url('" + MenuContentBackgroundImage + "');";
86 }
87 }
88
89 <!doctype html>
90 <html lang="en">
91
92 <head>
93
94 @if (gtmIdDefined)
95 {
96 <!-- Google Tag Manager -->
97 <script data-cookieconsent="”ignore”">
98 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
99 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
100 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
101 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
102 })(window,document,'script','dataLayer','@gtmId');</script>
103 <!-- End Google Tag Manager -->
104 }
105
106 <title>@GetValue("Title")</title>
107 @GetValue("MetaTags")
108 @GetValue("CopyRightNotice")
109
110 <meta charset="utf-8">
111 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
112 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
113
114 <link rel="icon" type="image/png" href='@small' sizes="16x16">
115 <link rel="icon" type="image/png" href='@medium' sizes="32x32">
116 <link rel="icon" type="image/png" href='@large' sizes="96x96">
117 <link rel="apple-touch-icon" href='@olderIphone'>
118 <link rel="apple-touch-icon" href='@iphone6'>
119 <link rel="apple-touch-icon" href='@retina'>
120 <link rel="apple-touch-icon" href='@ipadPro'>
121
122 @if (System.Web.HttpContext.Current.Request.Url.Host.ToLower().Contains("1stweb"))
123 {
124 <meta name="robots" content="noindex">
125 }
126
127 @if (!string.IsNullOrWhiteSpace(enviromentType))
128 {
129 <meta name="EnviromentType" content="@enviromentType">
130 }
131
132 <!--
133 Made by:
134 1st Web
135 Klostergade 56 B 2 th.
136 8000 Aarhus C.
137 www.1stweb.dk
138 -->
139
140 <link rel="stylesheet" href="https://use.typekit.net/bis2pfe.css">
141 <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/js-marker-clusterer/1.0.0/markerclusterer.js" data-cookieconsent="necessary"></script>
142 <link href="/Files/Templates/Designs/Tapas/assets/dist/css/main.5d4bc4a4207dcdb59a8d6ffaeff21d90.css?f749ebb640230fefef35" rel="stylesheet">@GetValue("Stylesheets")
143 @GetValue("Javascripts")
144 </head>
145
146
147 <body data-bind="click: closeMenu(),
148 css: { 'loading': stuffLoading},
149 style: {'overflow-y' : (appModalOpened() == 'cart-quick-view') ? 'hidden' : 'scroll'},
150 modals: { modalOpened: appModalOpened, previousModals: previousAppModalOpened },
151 closeMenuItems: { menuOpenObservable: appModalOpened, miniCartVisibleObservable: miniCartVisible }" class="is-flex is-flex-col @cssMobileClass">
152
153 @if (gtmIdDefined)
154 {
155 <!-- Google Tag Manager (noscript) -->
156 <noscript>
157 <iframe src="https://www.googletagmanager.com/ns.html?id=@gtmId" height="0" width="0" style="display:none;visibility:hidden"></iframe>
158 </noscript>
159 <!-- End Google Tag Manager (noscript) -->
160 }
161
162 @SnippetStart("DropDownMenuArrow")
163
164 <i class="fas fa-chevron-right drop-down-arrow"></i>
165
166 @SnippetEnd("DropDownMenuArrow")
167
168 @SnippetStart("MobileBack")
169
170 <div class="mobile-back" data-bind="mobileBack">
171 <i class="fas fa-chevron-left drop-down-arrow"></i>
172 <span>@Translate("Navigation.Back", "Tilbage")</span>
173 </div>
174
175 @SnippetEnd("MobileBack")
176
177 @SnippetStart("ShowAll")
178
179 @Translate("Menu.ShowAll", "Vis alle")
180
181 @SnippetEnd("ShowAll")
182
183 <div class="desktopSection min-height-100-vh" data-bind="css: { 'open': showResponsiveMenu }">
184
185 <nav class="top-content-navigation">
186
187 <div class="container">
188
189 <div class="is-flex">
190
191 <div>
192 @RenderWebsites(CurrentAreaId)
193 </div>
194
195 <div class="link-list">
196
197 @GetValue("DwNavigation(contentnav)")
198
199 <div class="xs-m-l-2">
200 @RenderLogin(CurrentAreaId, login_PageId)
201 </div>
202
203 </div>
204 </div>
205
206 </div>
207
208 </nav>
209
210
211 <header class="menuWrap" data-bind="viewModel: 'HeaderViewModel', floatingMenu">
212 <div class="menuBar xs-is-flex sm-is-flex md-is-flex">
213 <div class="logo-menu-container position-relative">
214 <div class="container xs-width-100 sm-width-100 xs-p-l-0 xs-p-r-0 md-p-l-2 md-p-r-2">
215 <div class="row is-flex xs-m-l-0 xs-m-r-0 navbar-height">
216
217 <section class="right-menu col-xs-12 xs-p-r-0 xs-p-l-0 position-static is-flex xs-flex-wrap">
218 <div class="pull-left mobile-menu-opener" data-bind="click: toggleMobileMenu">
219 <i class="fas fa-bars"></i>
220 </div>
221 <a class="logo-container" href="/">
222 <img class="logo img-responsive ie-logo-width" src='@logo' alt="logo">
223 </a>
224 <div class="quickActions js-menu-item-parent clearfix">
225
226 <div class="instant-search-wrapper">
227 <instant-search params="{
228 opened: appModalOpened() == 'instant-search',
229 instantSearchPageId: '@instantSearch_PageId',
230 searchResults: instantSearchResult,
231 instantSearchPlaceholder: '@translationInstantSearchFieldPlaceholder',
232 instantSearchResultsHeader: '@InstantSearchResultsHeader',
233 onAddToCart: function(id, qty) {
234 addItemToCart(id, qty, '', '', '', '@translationAddToCart','@cartContext')
235 },
236 onSearchObservable: instantSearchObservable,
237 debounceInterval: @searchDebounceInterval,
238 stuffLoadingQueue: $root.stuffLoadingQueue,
239 onSubmitSearch: function(query) {
240 window.location.href = '/Default.aspx?ID=@productCatalog_PageId&Search=' + query;
241 }
242 }"></instant-search>
243 </div>
244
245
246 <div class="quick-action-wrapper go-to-cart">
247 <a href="@cartUrl" class="quick-action-button tertiary-font clear-button xs-p-l-1 xs-p-r-1 md-p-r-0">
248 <div class="quick-search-content">
249 <i class="fa fa-shopping-cart" aria-hidden="true"></i>
250 <span class="quick-action-button-label pull-right"><span data-bind="text: cart().TotalProductLines"></span> (<span data-bind="text: cart().TotalProductQuantity"></span>)</span>
251 <div class="font-size-10px text-uppercase margin-top-5px">@Translate("NavMenuCart", "Kurv")</div>
252 </div>
253 </a>
254
255 @if (showFreeFreightLimit)
256 {
257 <div data-bind="visible: cart().TotalProductLines() != 0, css: { 'open': freightInfoOpen }, click: toggleFreightInfo" class="free-freight-info">
258 <div class="freight-icon">
259 <i class="fas fa-truck"></i>
260 <div class="free-freight-indicator">
261 Fri fragt <span><i class="fas fa-times" data-bind="css: { 'show': cart().FreeFreightGapAmount() != 0 }"></i><i class="fas fa-check" data-bind="css: { 'show': cart().FreeFreightGapAmount() == 0 }"></i></span>
262 </div>
263 </div>
264 <div class="freight-information" data-bind="visible: cart().FreeFreightGapAmount() == 0">
265 <p>
266 @Translate("Cart.FreeFreightObtainedText", "Ordren er nu fragtfri")
267 </p>
268 </div>
269 <div class="freight-information" data-bind="visible: cart().FreeFreightGapAmount() != 0">
270 <p>
271 @Translate("Cart.FreeFreightNotObtainedText", "Resterende beløb til fri fragt")
272 </p>
273 <p class="sum" data-bind="text:cart().FreeFreightGapAmountFormatted"></p>
274 </div>
275 </div>
276 }
277
278 </div>
279
280 @if (Firstweb.Custom.CustomCode.Tapas.Context.Current.ShopFunctionsVisibility.ShowShopFunctions())
281 {
282 <div class="quick-action-wrapper hidden-xs hidden-sm">
283 <button class="quick-action-button tertiary-font clear-button xs-p-r-1 xs-p-l-1 md-m-l-3 md-m-r-3" data-bind="
284 toggleMenuModal: { target: 'quick-order', modalObservable: appModalOpened },
285 css: { 'quick-action-button--active': appModalOpened() === 'quick-order' }">
286 <i class="fa fa-bolt"></i>
287 </button>
288
289 <quick-order params="{
290 opened: appModalOpened() === 'quick-order',
291 instantSearchPageId: '@instantSearch_PageId',
292 updateCartLabel: '@translationUpdatingCart',
293 addToCartLabel: '@translationAddToCart',
294 searchResults: quickOrderSearchResult,
295 debounceInterval: @searchDebounceInterval,
296 onSearchObservable: quickOrderObservable,
297 translatePlaceholder: '@translationQuickOrderFieldPlaceholder',
298 excelLink: '@ExcelQuickAdd',
299 onAddToCart: function(id, qty) {
300 addItemToCart(id, qty, '', '', '', '@translationAddToCart','@cartContext');
301 }}"></quick-order>
302 </div>
303 }
304
305 </div>
306 </section>
307 </div>
308 </div>
309 </div>
310 <nav class="container nav-container" data-bind="css: { 'open': mobileMenuOpen }, menuState: { menuItemsSelector: '.js-menu-item', openClass: 'open', toggler: '.js-toggle-menu', submenuContainer: '.js-submenu', menuCloser: 'js-menu-closer' }">
311 <div class="mobile-menu-closer">
312 <i class="fas fa-times icon-close" data-bind="click: toggleMobileMenu"></i>
313 </div>
314 @GetValue("DwNavigation(dwnav)")
315 </nav>
316 </div>
317 <div class="floatingPlaceholder"></div>
318 </header>
319
320
321 @GetValue("Title(Clean Page)")
322 @GetValue("Description(Clean Page skabelon)")
323
324 <div id="content1">@GetValue("DwContent(content1)")</div>
325
326
327 <footer>
328 <div class="container position-relative">
329 <div class="row">
330
331 <div class="col-xs-12 col-sm-6 col-md-3 footer-column">
332
333 <p class="footer-heading">@GetString("Item.Area.Kolonne_1Overskrift.Value")</p>
334
335 <div class="rte-content">
336 @GetString("Item.Area.Kolonne_1Tekst.Value")
337 </div>
338
339 </div>
340
341 <div class="col-xs-12 col-sm-6 col-md-3 footer-column">
342
343 <p class="footer-heading">@GetString("Item.Area.Kolonne_2Overskrift.Value")</p>
344
345 <div class="rte-content">
346 @GetString("Item.Area.Kolonne_2Tekst.Value")
347 </div>
348
349 </div>
350
351 <div class="col-xs-12 col-sm-6 col-md-3 footer-column">
352
353 <p class="footer-heading">@GetString("Item.Area.Kolonne_3Overskrift.Value")</p>
354
355 <div class="rte-content">
356 @GetString("Item.Area.Kolonne_3Tekst.Value")
357 </div>
358
359 </div>
360
361 <div class="col-xs-12 col-sm-6 col-md-3 footer-column">
362
363 <p class="footer-heading">@GetString("Item.Area.Kolonne_4Overskrift.Value")</p>
364
365 @if (GetLoop("Item.Area.Kolonne_4Ikoner").Any())
366 {
367 <div class="soc-media-links">
368
369 @foreach (var Link in GetLoop("Item.Area.Kolonne_4Ikoner"))
370 {
371 string Name = Link.GetString("Item.Area.Kolonne_4Ikoner.Navn.Value");
372 string Destination = Link.GetString("Item.Area.Kolonne_4Ikoner.Link.Value");
373 string FontAwesomeIcon = Link.GetString("Item.Area.Kolonne_4Ikoner.FontAwesomeIkon.Value");
374 string FileIcon = "/admin/public/getimage.ashx?image=" + Link.GetString("Item.Area.Kolonne_4Ikoner.FilIkon.Value") + "&height=20&width=20&crop=5";
375 <a class="soc-media" href="@Destination" target="_blank" title="@Name">
376 @if (!String.IsNullOrEmpty(Link.GetString("Item.Area.Kolonne_4Ikoner.FilIkon.Value")))
377 {
378 <img src="@FileIcon" alt="@Name">
379 }
380 else
381 {
382 <i class="@FontAwesomeIcon"></i>
383 }
384 </a>
385 }
386
387 </div>
388 }
389
390 <div class="rte-content">
391 @GetString("Item.Area.Kolonne_4Tekst.Value")
392 </div>
393
394 </div>
395
396 </div>
397 <!-- go to top-->
398 <div class="to-the-top" data-bind="scrollToTop">
399 <i class="fa fa-angle-up" aria-hidden="true"></i>
400 </div>
401 </div>
402 </footer>
403
404 <div class="is-flex is-flex-col bg-white">
405
406 <div class="overlay">
407 <div class="loader">
408 <div class="dot"></div>
409 <div class="dot"></div>
410 <div class="dot"></div>
411 <div data-bind="if: stuffLoading() === true">
412 <p class="loaderText" data-bind="text: load().text"></p>
413 </div>
414 </div>
415 </div>
416
417 @RenderNewsletter()
418
419 <!-- fade -->
420 <div class="hidden-xs hidden-sm hidden-md modal-backdrop fade in" data-bind=" style: { display: $root.appModalOpened() === 'produckter-modal' ? 'block' : 'none' }, click: function() { onModalClose() }" style="display: block;">
421 </div>
422 </div>
423
424 <script src="https://www.youtube.com/iframe_api" type="text/plain" data-cookieconsent="marketing"></script>
425 <script src="https://code.jquery.com/jquery-3.1.0.js" data-cookieconsent="necessary" integrity="sha256-slogkvB1K3VOkzAI8QITxV3VzpOnkeNVsKvtkYLMjfk=" crossorigin="anonymous"></script>
426 <script src="/Files/Templates/Designs/Tapas/assets/libraries/blueimp/blueimp.js" data-cookieconsent="necessary"></script>
427 <script type="text/javascript" src="//s7.addthis.com/js/300/addthis_widget.js#pubid=ra-5cf750c94b867eee" data-cookieconsent="marketing"></script>
428 </div>
429 <script type="text/javascript" src="/Files/Templates/Designs/Tapas/assets/dist/js/vendor.c21780b59a448ca85c55.js?f749ebb640230fefef35" data-cookieconsent="ignore"></script>
430 <script type="text/javascript" src="/Files/Templates/Designs/Tapas/assets/dist/js/main.ede67f8e6ccd30009f4c.js?f749ebb640230fefef35" data-cookieconsent="ignore"></script>
431 </body>
432 </html>
433
434
435 @helper RenderLogin(string CurrentAreaId, string loginPageId)
436 {
437 var translationRememberMe = Translate("LoginDialog.RememberMe", "Husk mig");
438 string forgotPasswordMailTemplate = GetString("Item.Area.ForgotPasswordMailTemplate");
439 string forgotPasswordSenderEmail = GetString("Item.Area.ForgotPasswordSenderEmail");
440 string forgotPasswordMailSubject = GetString("Item.Area.ForgotPasswordMailSubject");
441
442 string action = GetString("DWExtranetAction");
443 string userName = GetString("DWExtranetUsername");
444 string password = GetString("DWExtranetPassword");
445 string rememberUsername = GetString("DWExtranetUsernameRemember");
446 string rememberPassword = GetString("DWExtranetPasswordRemember");
447
448 int NewUserFormParagraphId = Firstweb.Custom.CustomCode.Tapas.Context.AreaItem.GetInt("NewUserFormParagraphId");
449
450
451
452 <div class="loginDetails pull-right">
453 <div data-bind="with: LoginViewModel">
454 <div class="login-dropdpown">
455 <a id="user" style="display: none;" data-toggle="modal" data-target=".loginModal" data-bind="visible: !$root.User().IsLoggedIn(), value: loginModal = '.loginModal'" role="button">
456 <i class="icon user font-size-small line-height-base">
457 </i>
458 <span data-bind="text: $root.User().Name()">
459 </span>
460 <span class="color-concrete font-size-small text-uppercase line-height-base" data-bind="visible: !$root.User().IsLoggedIn()">
461 @Translate("Page.Login", "Log ind")
462 </span>
463 </a>
464 </div>
465
466 <div class="dropdown UserLinks" data-bind="visible: $root.User().IsLoggedIn()" style="display: none;">
467 <a class="color-concrete" id="user" data-toggle="dropdown" role="button">
468 <span class="login-user font-size-small text-uppercase" data-bind="text: $root.User().Name()"></span>
469 <span class="caret"></span>
470 </a>
471 @GetValue("DwNavigation(dwusernav)")
472 @SnippetStart("IsImpersonating")
473 @if (Firstweb.Custom.CustomCode.Frontend.Helpers.SecondaryUsers.IsImpersonating())
474 {
475 <li data-bind="">
476 <a href="@Firstweb.Custom.CustomCode.Frontend.Helpers.Page.GetStopImpersonatingLink()">
477 <i class="icon "> </i><span>@Translate("Usermenu.MenuText.StopImpersonating", "Log af som kunde")</span>
478 </a>
479 </li>
480 }
481 @SnippetEnd("IsImpersonating")
482
483
484
485 @SnippetStart("ShowHideFunctionsSnippet")
486 @if (Firstweb.Custom.CustomCode.Frontend.Helpers.Product.HidePrices())
487 {
488 <li>
489 <a href="@Firstweb.Custom.CustomCode.Frontend.Helpers.Page.GetHidePricesLink(false)">
490 <i class="far fa-check-square"></i> <span>@Translate("Usermenu.MenuText.HidePrice", "Skjul priser")</span>
491 </a>
492 </li>
493 }
494 else
495 {
496 <li>
497 <a href="@Firstweb.Custom.CustomCode.Frontend.Helpers.Page.GetHidePricesLink(true)">
498 <i class="far fa-square"></i> <span>@Translate("Usermenu.MenuText.HidePrice", "Skjul priser")</span>
499 </a>
500 </li>
501 }
502
503 @if (Firstweb.Custom.CustomCode.Frontend.Helpers.Product.HideVat())
504 {
505 <li>
506 <a href="@Firstweb.Custom.CustomCode.Frontend.Helpers.Page.GetHideVatLink(false)">
507 <i class="far fa-check-square"></i> <span>@Translate("Usermenu.MenuText.HideVat", "Skjul moms")</span>
508 </a>
509 </li>
510 }
511 else
512 {
513 <li>
514 <a href="@Firstweb.Custom.CustomCode.Frontend.Helpers.Page.GetHideVatLink(true)">
515 <i class="far fa-square"></i> <span>@Translate("Usermenu.MenuText.HideVat", "Skjul moms")</span>
516 </a>
517 </li>
518 }
519 @SnippetEnd("ShowHideFunctionsSnippet")
520 </div>
521
522 <!--New user popup-->
523 <div class="modal fade new-user-modal js-new-user-modal" id="newUserModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-bind="initValue:{ observable: newUserModalSelector, value: '.js-new-user-modal'}">
524 <div class="modal-dialog modal-lg" role="document">
525 <div class="modal-content popupBox login">
526 <div class="modal-header">
527 <h4 class="modal-title h2 tertiary-font xs-m-t-0 xs-m-b-2" id="myModalLabel">@Translate("NewUserModal.Header", "Ny bruger? - Anmod om adgang")</h4>
528 </div>
529 <div class="modal-body">
530 @if (NewUserFormParagraphId > 0)
531 {
532 <div>@RenderParagraphContent(NewUserFormParagraphId)</div>
533 }
534 </div>
535 </div>
536 </div>
537 </div>
538
539 <!--Login popup-->
540 <div class="modal loginModal bs-example-modal-sm fade js-login-modal" role="dialog" aria-labelledby="mySmallModalLabel" data-bind="initValue:{ observable: loginModalSelector, value: '.js-login-modal'}">
541 <div class="modal-dialog">
542 <div class="popupBox login modal-content">
543 <h3 class="modal-header h2 tertiary-font xs-m-t-0 xs-m-b-2">
544 @Translate("LoginDialog.Header", "Log ind")
545 </h3>
546 <div id="login-error" class="xs-m-b-1 xs-p-1 bg-danger hidden">
547 <span>@Translate("LoginDialog.SessionHasExpired", "Sessionen er udløbet")</span>
548 </div>
549 <div data-bind="if: wrongCredentials()">
550 <div class="xs-m-b-1 xs-p-1 bg-danger">@Translate("LoginDialog.InvalidCredentials", " Forkert brugernavn eller adgangskode")</div>
551 </div>
552 <div class="modal-body" data-bind="Fadevisible: ToggleForgottenPassword, delayIn:250">
553 <form name="ExtUserForm" id="ExtUserForm" method="post" action="@action">
554 <input id="AreaId" type="hidden" name="AreaId" data-bind="initValue:{ observable: AreaId, value: '@CurrentAreaId'}, value: AreaId">
555 <div class="form-group">
556 <label class="xs-m-b-1" for="Username">@Translate("LoginDialog.Username", "Brugernavn")</label>
557 <input id="Username" class="form-control xs-p-l-1 xs-p-r-1 height-3 line-height-base" type="text" name="Username" value="@userName" data-bind="value: UserName, hasFocus: addFocus">
558 </div>
559
560 <div class="form-group xs-m-t-1">
561 <label class="xs-m-b-1" for="Password">@Translate("LoginDialog.Password", "Adgangskode")</label>
562 <input id="Password" class="form-control xs-p-l-1 xs-p-r-1 height-3 line-height-base" type="password" name="Password" value="@password" data-bind="value: Password">
563 </div>
564
565 <div class="form-group action lg-m-b-0 clearfix">
566 <div class="pull-left color-dark font-bold">
567
568 <label class="custom-checkbox">
569 <input type="checkbox" data-bind="click: handleCheckbox">
570 <div class="is-checkbox pull-left">
571 <i data-bind="style: { visibility: rememberMe() ? 'visible' : 'hidden' }" class="fa fa-check" aria-hidden="true"></i>
572 </div>
573 <span class="font-bold font-size-small text-not-bold">@translationRememberMe</span>
574 </label>
575
576 <br>
577
578 <a class="forgottenPass color-dark hidden" href="#" data-bind="click: OpenNewUserModal">@Translate("LoginModal.CreateNewUser", "Ny bruger")</a>
579 </div>
580
581 <div class="pull-right">
582
583 <div class="xs-m-b-1">
584 <a href="#" class="color-dark forgottenPass" data-bind="toggleClick: ToggleForgottenPassword" style="color: #1E2A01;">
585 @Translate("LoginDialog.ForgotPasswordLink", "Glemt adgangskode?")
586 </a>
587
588 </div>
589
590 <button class="btn btn-primary" value="LOG IND" data-bind="click: Login, toggleClick: Loader">
591 @Translate("LoginDialog.LoginButton", "Log ind")
592 </button>
593 </div>
594 </div>
595 <span data-bind="Fadevisible: !Loader(),
596 css:{ loginsuccess : $root.User().IsLoggedIn(),
597 loginFail : LoginFailed(),
598 ringLoader: !wrongCredentials() }">
599 </span>
600 </form>
601 </div>
602
603 <div class="modal-body forgotten" data-bind="Fadevisible: !ToggleForgottenPassword(), delayIn:250">
604
605 <form name="ExtUserForm" id="ExtUserForm1" method="post" action="@action" data-bind="submit: recover">
606 <input id="ForgotPasswordMailTemplate" type="hidden" name="ForgotPasswordMailTemplate" data-bind="initValue:{ observable: forgotPasswordMailTemplate, value: '@forgotPasswordMailTemplate'}">
607
608 <input id="ForgotPasswordSenderEmail" type="hidden" name="ForgotPasswordSenderEmail" data-bind="initValue:{ observable: forgotPasswordSenderEmail, value: '@forgotPasswordSenderEmail'}">
609
610 <input id="ForgotPasswordMailSubject" type="hidden" name="ForgotPasswordMailSubject" data-bind="initValue:{ observable: forgotPasswordMailSubject, value: '@forgotPasswordMailSubject'}, value: AreaId">
611 <div class="form-group">
612 <label for="Email">@Translate("Email", "Email")</label>
613 <input type="text" name="Email" class="form-control lg-p-l-1 lg-p-r-1 ie-input-height" data-bind="value: email">
614
615 <div class="alert alert-success" role="alert" data-bind="visible: statusCode() == '0'">
616 @Translate("LoginDialog.ForgotPasswordStatusText:Success", "Din adgangskode er blevet sendt til din e-mail adresse")
617 </div>
618
619 <div class="alert alert-warning" role="alert" data-bind="visible: statusCode() == '100'">
620 @Translate("LoginDialog.ForgotPasswordStatusText:NotFound", "Den indtaste e-mail adresse findes ikke")
621 </div>
622 <div class="alert alert-danger" role="alert" data-bind="visible: statusCode() == '150'">
623 @Translate("LoginDialog.ForgotPasswordStatusText:Error", "Der er opstået en fejl i systemet, prøv igen senere.")
624 </div>
625
626 </div>
627
628 <div class="form-group action clearfix">
629 <button type="button" class="btn btn-secondary pull-left" data-bind="toggleClick: ToggleForgottenPassword">
630 @Translate("Back", "Tilbage")
631 </button>
632
633 <button type="submit" class="btn btn-primary pull-right" data-bind="initValue:{ observable: loginId, value: '@loginPageId'}">
634 @Translate("LoginDialog.GetPasswordButton", "Få tilsendt kode")
635 </button>
636
637 <span data-bind="Fadevisible: ForgottenLoader" class="ringLoader"></span>
638 </div>
639 </form>
640 </div>
641 </div>
642 </div>
643 </div>
644 </div>
645 </div>
646
647
648
649 }
650
651 @helper RenderNewsletter()
652 {
653 var translationEmailFieldPlaceholder = Translate("NewsletterDialog.EmailFieldPlaceholder", "Indtast e-mail adresse");
654
655 <div class="newsletterWidget hidden" data-bind="css: { 'open': showNewsletterWidget }, value: newsletterModal = '.newsletterModal' ">
656 <div class="newsletterOpen" data-bind="click: toggleNewsletterWidget">@Translate("Page.NewsletterSignupButton", "Tilmeld nyhedsbrev")</div>
657
658 <div class="newsletterContent">
659 <div class="newsletterClose" data-bind="click: hideNewsletterWidget"></div>
660 <form name="UserManagementEditForm" data-bind="submit: submitNewsletterSubscription">
661 <input type="hidden" name="UserManagementForm" value="1">
662 <input name="UserManagement_Form_EmailAllowed" type="hidden" id="UserManagement_Form_EmailAllowed" value="True">
663 <input name="UserManagement_Form_EmailAllowed_ApplyValue" type="hidden" id="UserManagement_Form_EmailAllowed_ApplyValue" value="AllowEmail">
664
665 <div class="newsletterHead">
666 @Translate("NewsletterDialog.Header", "Få nyheder fra Tapas!")
667 </div>
668
669 <div class="newsletterSubHead">
670 @Translate("NewsletterDialog.Subheader", "Modtag nyheder og gode tilbud fra Tapas")
671 </div>
672
673 <input name="UserManagement_Form_Email" id="UserManagement_Form_Email" type="email" placeholder="@translationEmailFieldPlaceholder" required="">
674 <button class="button" type="submit">@Translate("NewsletterDialog.SignupButton", "Tilmeld")</button>
675 </form>
676 </div>
677 </div>
678
679 <div class="newsletterModal modal fade" tabindex="-1" role="dialog" data-bind="css: { 'subSuccess': newsletterSubscriptionStatus, 'subError': !newsletterSubscriptionStatus() }">
680 <div class="modal-dialog">
681 <div class="modal-content">
682 <div class="modal-header">
683 <button type="button" class="close" data-dismiss="modal" aria-label="Close"></button>
684 <h4 class="modal-title subSuccess">@Translate("NewsletterDialog.SignupSuccessText", "Du er nu tilmeldt nyhedsbrev!")</h4>
685 <h4 class="modal-title subError">@Translate("NewsletterDialog.SignupErrorText", "Der skete en uventet fejl, prøv igen senere.")</h4>
686 </div>
687
688 <div class="modal-footer">
689 <button type="button" class="button" data-dismiss="modal" aria-label="Close">@Translate("OK", "OK")</button>
690 </div>
691 </div>
692 </div>
693 </div>
694 }
695
696 @helper RenderWebsites(string _CurrentAreaId)
697 {
698 var websiteLoop = GetLoop("Item.Area.Websites");
699 if (websiteLoop.Count > 0)
700 {
701 var websiteItem = websiteLoop.FirstOrDefault(w => w.GetString("Item.Area.Websites.AreaId") == _CurrentAreaId);
702 var currentIcon = websiteItem.GetString("Item.Area.Websites.Icon");
703 var currentLabel = websiteItem.GetString("Item.Area.Websites.Label");
704
705 <div class="dropdown UserLinks">
706 <a class="country" id="dLabel" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
707 <img src="@currentIcon">
708 <span>@currentLabel</span>
709 <span class="caret xs-m-l-1"></span>
710 </a>
711
712 <ul class="dropdown-menu bg-secondary language-dropdown" aria-labelledby="dLabel">
713 @foreach (var item in websiteLoop)
714 {
715 string areaId = item.GetString("Item.Area.Websites.AreaId");
716 string label = item.GetString("Item.Area.Websites.Label");
717 string link = item.GetString("Item.Area.Websites.Link");
718 string icon = item.GetString("Item.Area.Websites.Icon");
719
720 if (areaId != _CurrentAreaId)
721 {
722 <li>
723 <a class="country" href="@link">
724 <img src="@icon">
725 <span>@label</span>
726 </a>
727 </li>
728 }
729 }
730 </ul>
731 </div>
732 }
733
734
735 }