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&oslash;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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;<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&aring; 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&aring; 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&oslash;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 }