Exception in template (Designs/StandardWebshop/_parsed/StandardPage.parsed.cshtml): System.ArgumentException: An item with the same key has already been added.
   at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at Dynamicweb.Ecommerce.Products.GroupRelation.get_GroupRelationsByParentId(String theParentId)
   at Dynamicweb.Ecommerce.Products.Group.get_Subgroups()
   at Dynamicweb.Ecommerce.Frontend.NavigationProviders.GroupNavigationProvider._Closure$__21-0._Lambda$__0(GroupCollection items, Int32 thisLevel)
   at Dynamicweb.Ecommerce.Frontend.NavigationProviders.GroupNavigationProvider._Closure$__21-0._Lambda$__0(GroupCollection items, Int32 thisLevel)
   at Dynamicweb.Ecommerce.Frontend.NavigationProviders.GroupNavigationProvider._Closure$__21-0._Lambda$__0(GroupCollection items, Int32 thisLevel)
   at Dynamicweb.Ecommerce.Frontend.NavigationProviders.GroupNavigationProvider._Closure$__21-0._Lambda$__0(GroupCollection items, Int32 thisLevel)
   at Dynamicweb.Ecommerce.Frontend.NavigationProviders.GroupNavigationProvider.BuildGroupsProductCounts(GroupCollection topGroups, Int32 level, Int32 maxLevel)
   at Dynamicweb.Ecommerce.Frontend.NavigationProviders.GroupNavigationProvider.MakeGroupTree(Page page, NavigationItem parentNode, Boolean applyStartAndEndLevelToNavigation)
   at Dynamicweb.Ecommerce.Frontend.NavigationProviders.GroupNavigationProvider.Process(NavigationItem node, Boolean applyStartAndEndLevelToNavigation)
   at Dynamicweb.Frontend.XmlNavigation.XML(Int32 parentID, Int32 levelStart, Int32 levelStop, Expand expand, Int32 selectedAreaId)
   at Dynamicweb.Frontend.XmlNavigation.GetNavigationHtml(Int32 parentId, Int32 levelStart, Int32 levelStop, Expand expand, String name, String xsltPath, Int32 selectedAreaId, Boolean sitemapMode, NameValueCollection settings, NameValueCollection attributes, IncludeMode mode)
   at Dynamicweb.Frontend.XmlNavigation.GetNavigationHtml(NameValueCollection settings, NameValueCollection attributes)
   at CompiledRazorTemplates.Dynamic.dbabbcfbbbb.Execute()
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context)
   at RazorEngine.Templating.TemplateService.Run(ITemplate template, DynamicViewBag viewBag)
   at RazorEngine.Templating.TemplateService.Parse(String razorTemplate, Object model, DynamicViewBag viewBag, String cacheName)
   at RazorEngine.Razor.Parse[T](String razorTemplate, T model, String cacheName)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()
@inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> @using NORRIQ.Common8.Razor; <!DOCTYPE html> <html lang="@Pageview.Area.Culture"> <head> <title>@Model.Title - @Pageview.Area.Title</title> @if (Model.Item.GetBoolean("NoIndex")) { <meta name="robots" content="noindex, nofollow" /> <!-- TODO: remove on launch--> } @RenderSnippet("AddNoIndex") <meta charset='utf-8' /> <meta name="description" content="@Model.Description" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, shrink-to-fit=no" /> <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic' rel='stylesheet' type='text/css' /> <link href='@(Model.Item.GetBoolean("NIQ:JavaScriptDebug") ? "/Files/Templates/Designs/StandardWebshop/css/style.css" : "/Files/Templates/Designs/StandardWebshop/css/style.css")' rel='stylesheet' /> @Model.Area.Item.GetString("GTM_Header_Script") <!--[if IE]> <style>.productlist-grid { float: left; }</style> <![endif]--> <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]--> </head> <body data-is-desktop="@(Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Desktop ? "true" : "false")" data-is-tablet="@(Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Tablet ? "true" : "false")" data-is-phone="@(Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Mobile ? "true" : "false")" data-is-loggedin="@(Pageview.Security.UserLoggedIn ? "true" : "false")"> @Model.Area.Item.GetString("GTM_BodyIFrame") <div class="wrap" id="body-wrap"> @using System.Web; @using NORRIQ.Common8.Razor; @using Dynamicweb @using Dynamicweb.Ecommerce.Common; @using Dynamicweb.Ecommerce.Prices @using Dynamicweb.Frontend @using NORRIQ.Universal.Extensions @using StandardWebshop.CustomCode.InclExclVat @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> @{ var isCartEmpty = (Dynamicweb.Ecommerce.Common.Context.Cart == null || Dynamicweb.Ecommerce.Common.Context.Cart.OrderLines.Count == 0); var hasSubGroups = @System.Web.HttpContext.Current.Request.QueryString["groupid"]; var ecomtag = hasSubGroups != null ? hasSubGroups.First().ToString() : "C"; var inclVat = InclExclVatPageTemplateExtender.InclVat(); var inclVatLink = HttpContext.Current.Request.Url.SetQuery("inclvat", "on").PathAndQuery; var exclVatLink = HttpContext.Current.Request.Url.SetQuery("inclvat", "off").PathAndQuery; } <header class="header-default"> <div class="header-default-top"> <div class="container"> <div class="col-xs-12 col-sm-6 text-right"> <div class="toggle-vat"> @{ var inclVatLinkClass = inclVat ? "text-danger" : ""; var exclVatLinkClass = !inclVat ? "text-danger" : ""; } <span class="toggle-vat-label">@Translate("label_show_prices", "Vis priser"):</span> <a href="@inclVatLink" class="@inclVatLinkClass"> @Translate("label_show_prices_withVAT", "inkl. moms")</a> | <a href="@exclVatLink" class="@exclVatLinkClass"> @Translate("label_show_prices_withoutVAT", "ekskl. moms")</a> </div> </div> <div class="header-default-helper"> @if (Pageview.Security.UserLoggedIn) { <span class="header-default-user"> <span class="header-default-username">@Model.CurrentUser.Name</span> <a href='/admin/public/extranetlogoff.aspx?ID=@(Pageview.Page.ID)'> @Translate("Logout", "Logout") </a> </span> } @if (Model.Languages.Any()) { var areaService = NLWI.Core.Factory.ObjectFactory.GetInstance<Dynamicweb.Content.AreaService>(); foreach (var lang in Model.Languages) { var area = areaService.GetArea(lang.ID); var Domain = lang.PrimaryDomain; if (string.IsNullOrEmpty(Domain)) { Domain = area.Domain.Split(new char[0]).First(); } var Flag = "flag_" + lang.Culture.Split('-').Last() + ".png"; if (!lang.IsCurrent) { <a href='/@lang.Culture.ToLower()' class="culture"> <span>@lang.Name</span> <img src="/Admin/Images/Flags/@Flag" width="16" alt="@lang.Culture.Split('-').Last()-Flag" class="img-responsive lang-select"/> </a> } } } </div> </div> </div> <div class="container"> <div class="header-default-logo"> <a href="/@(Pageview.Area.Culture.ToLower())" title='@Translate("Go to frontpage", "Go to frontpage")'> @{ var logo = Model.Area.Item.GetFile("Logo"); if (logo != null) { <img class="img-responsive" src="@logo.Path" alt='@Translate("Website Logo Alt", "Shutter - Standard Webshop")' /> } else { <i>No logo found, please configure it in the Dynamicweb Administration</i> } } </a> </div> <ul class="nav navbar-nav header-default-nav"> <li class="@(Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Mobile ? "dropdown dropdown-icon dropdown-mobile" : "header-default-search")"> @if (Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Mobile) { <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> <i class="icon-search"></i> <span class="dropdown-label">@Translate("Search", "Search")</span> </a> <div class="dropdown-menu"> @using NORRIQ.Common8.Razor; @{ var searchLabel = Translate("Search products", "Search products"); var searchResultPageId = Navigation.GetPageIdByNavigationTag("search"); var searchQuery = @System.Web.HttpContext.Current.Request.QueryString["ecomQuery"]; } <div class="form-search" id="instantsearch"> <form class="form form-search-form" id="search-form" action="/Default.aspx" method="get"> <input type="hidden" value="@searchQuery" id="searchstring"> <input type="hidden" name="ID" value="@searchResultPageId" /> <label for="searchTerm" class="sr-only"> @searchLabel </label> <div class="input-group"> <input type="search" class="form-control" id="searchTerm" name="eComQuery" placeholder="@searchLabel" autocomplete="off" data-tabindex="0" value="@searchQuery" /> <span class="input-group-addon"> <button type="submit" id="instantSearchBtn" class="btn btn-primary js-search-btn"> <i id="instantSearchIcon" class="icon-search" aria-hidden="true"></i><span class="sr-only">@Translate("Search", "Search")</span> </button> </span> </div> </form> <div class="form-search-collapse collapse" id="search-result-foldout"> <div class="form-search-result" id="search-result-container"></div> </div> </div> <script type="text/x-jsrender" id="quicksearchtemplate"> <table class="table table-condensed productlist-table"> <tbody> {{for Products}} <tr data-product-id="{{:Id}}" data-product-key='{{:AutoAddProductKey}}' data-product-language-id="{{:LanguageId}}"> <td class="productlist-table-thumb text-center" width="70"> <img src="/Admin/Public/GetImage.ashx?Image={{:ThumbnailImageName}}&amp;Width=60&amp;Height=60&amp;Crop=5&amp;Compression=80" height="60" class="img-responsive" alt="{{:ThumbnailImageAltText}}" /> </td> <td class="productlist-table-product"> <a href="{{:Link}}" class="productlist-table-name"> {{:Name}} </a> <div class="clearfix"> <div class="pull-left text-small"> @Translate("Product Number", "Product Number"): {{:Number}}<br /> @*@Translate("Price", "Price"): {{:UnitPrice}}*@ </div> <div class="productlist-table-quantity pull-right text-right"> <a href="{{:Link}}" class="btn btn-success"> <i class="icon-angle-left" aria-hidden="true"></i> </a> @*<a href="/Default.aspx?productid={{:Id}}&cartcmd=add" class="btn btn-primary"><i class="icon-minicart" aria-hidden="true"></i></a>*@ </div> </div> </td> </tr> {{/for}} </tbody> </table> {{if MoreResults}} <a href="{{:LinkToFullResults}}" class="btn btn-primary btn-sm">@Translate("Show all results", "Show all results") ({{:NumberOfResults}})</a> {{/if}} </script> <script type="text/x-jsrender" id="quicksearchloadingtemplate"> <p class="product-search-label"> <i class="icon-async icon-pulse" aria-hidden="true"></i> @Translate("Searching", "Searching...") </p> </script> <script type="text/x-jsrender" id="noquerytemplate"> <p class="product-search-label"><i class="icon-keyboard" aria-hidden="true"></i> @Translate("Start typing", "Start typing to search")</p> </script> <script type="text/x-jsrender" id="failedsearchtemplate"> <p class="product-search-label"><i class="icon-warning" aria-hidden="true"></i> @Translate("Search error", "An error occured")</p> </script> <script type="text/x-jsrender" id="noresultstemplate"> <p class="product-search-label"><i class="icon-warning" aria-hidden="true"></i> @Translate("Search empty", "We didn't find any products, matching your search")</p> </script> <script type="text/x-jsrender" id="qsautoaddfeedbackloading"> <i class="icon-async icon-pulse"></i> </script> <script type="text/x-jsrender" id="qsautoaddfeedbacksuccess"> <i class="icon-added" title="@Translate("autoadd_added_to_basket", "Produktet blev tilføjet til kurven.")"></i> </script> <script type="text/x-jsrender" id="qsautoaddfeedbackerror"> {{if error == "badinput"}} <i class="icon-warning" title="@Translate("auto_add_bad_input", "Det indtastede var ikke et tal.")"></i> {{else error == "servererror"}} <i class="icon-warning" title="@Translate("auto_add_server_error", "Der skete en serverfejl, din kurv er ikke opdateret.")"></i> {{else}} <i class="icon-warning"></i> {{/if}} </script> <script append="true"> require(["jquery", "standardwebshop/areas/ecom/instantsearch"], function ($, search) { search.init({ WaitTime: 250, $SearchResultTemplate: $('#quicksearchtemplate'), $SearchInput: $('#searchTerm'), $ResultContainer: $('#search-result-container'), $ResultLoadingTemplate: $('#quicksearchloadingtemplate'), $NoQueryTemplate: $('#noquerytemplate'), $FailedSearchTemplate: $('#failedsearchtemplate'), $CollapseContainer: $('#search-result-foldout'), $NoResulsTemplate: $('#noresultstemplate'), $SearchContainer: $('#instantsearch'), LinkToSearchResults: "/default.aspx?ID=@Navigation.GetPageIdByNavigationTag("search")", PostPageId: "@Navigation.GetPageIdByNavigationTag("instant-search")", $searchBtn: $('.js-search-btn') }); }); </script> </div> } else { <text>@using NORRIQ.Common8.Razor; @{ var searchLabel = Translate("Search products", "Search products"); var searchResultPageId = Navigation.GetPageIdByNavigationTag("search"); var searchQuery = @System.Web.HttpContext.Current.Request.QueryString["ecomQuery"]; } <div class="form-search" id="instantsearch"> <form class="form form-search-form" id="search-form" action="/Default.aspx" method="get"> <input type="hidden" value="@searchQuery" id="searchstring"> <input type="hidden" name="ID" value="@searchResultPageId" /> <label for="searchTerm" class="sr-only"> @searchLabel </label> <div class="input-group"> <input type="search" class="form-control" id="searchTerm" name="eComQuery" placeholder="@searchLabel" autocomplete="off" data-tabindex="0" value="@searchQuery" /> <span class="input-group-addon"> <button type="submit" id="instantSearchBtn" class="btn btn-primary js-search-btn"> <i id="instantSearchIcon" class="icon-search" aria-hidden="true"></i><span class="sr-only">@Translate("Search", "Search")</span> </button> </span> </div> </form> <div class="form-search-collapse collapse" id="search-result-foldout"> <div class="form-search-result" id="search-result-container"></div> </div> </div> <script type="text/x-jsrender" id="quicksearchtemplate"> <table class="table table-condensed productlist-table"> <tbody> {{for Products}} <tr data-product-id="{{:Id}}" data-product-key='{{:AutoAddProductKey}}' data-product-language-id="{{:LanguageId}}"> <td class="productlist-table-thumb text-center" width="70"> <img src="/Admin/Public/GetImage.ashx?Image={{:ThumbnailImageName}}&amp;Width=60&amp;Height=60&amp;Crop=5&amp;Compression=80" height="60" class="img-responsive" alt="{{:ThumbnailImageAltText}}" /> </td> <td class="productlist-table-product"> <a href="{{:Link}}" class="productlist-table-name"> {{:Name}} </a> <div class="clearfix"> <div class="pull-left text-small"> @Translate("Product Number", "Product Number"): {{:Number}}<br /> @*@Translate("Price", "Price"): {{:UnitPrice}}*@ </div> <div class="productlist-table-quantity pull-right text-right"> <a href="{{:Link}}" class="btn btn-success"> <i class="icon-angle-left" aria-hidden="true"></i> </a> @*<a href="/Default.aspx?productid={{:Id}}&cartcmd=add" class="btn btn-primary"><i class="icon-minicart" aria-hidden="true"></i></a>*@ </div> </div> </td> </tr> {{/for}} </tbody> </table> {{if MoreResults}} <a href="{{:LinkToFullResults}}" class="btn btn-primary btn-sm">@Translate("Show all results", "Show all results") ({{:NumberOfResults}})</a> {{/if}} </script> <script type="text/x-jsrender" id="quicksearchloadingtemplate"> <p class="product-search-label"> <i class="icon-async icon-pulse" aria-hidden="true"></i> @Translate("Searching", "Searching...") </p> </script> <script type="text/x-jsrender" id="noquerytemplate"> <p class="product-search-label"><i class="icon-keyboard" aria-hidden="true"></i> @Translate("Start typing", "Start typing to search")</p> </script> <script type="text/x-jsrender" id="failedsearchtemplate"> <p class="product-search-label"><i class="icon-warning" aria-hidden="true"></i> @Translate("Search error", "An error occured")</p> </script> <script type="text/x-jsrender" id="noresultstemplate"> <p class="product-search-label"><i class="icon-warning" aria-hidden="true"></i> @Translate("Search empty", "We didn't find any products, matching your search")</p> </script> <script type="text/x-jsrender" id="qsautoaddfeedbackloading"> <i class="icon-async icon-pulse"></i> </script> <script type="text/x-jsrender" id="qsautoaddfeedbacksuccess"> <i class="icon-added" title="@Translate("autoadd_added_to_basket", "Produktet blev tilføjet til kurven.")"></i> </script> <script type="text/x-jsrender" id="qsautoaddfeedbackerror"> {{if error == "badinput"}} <i class="icon-warning" title="@Translate("auto_add_bad_input", "Det indtastede var ikke et tal.")"></i> {{else error == "servererror"}} <i class="icon-warning" title="@Translate("auto_add_server_error", "Der skete en serverfejl, din kurv er ikke opdateret.")"></i> {{else}} <i class="icon-warning"></i> {{/if}} </script> <script append="true"> require(["jquery", "standardwebshop/areas/ecom/instantsearch"], function ($, search) { search.init({ WaitTime: 250, $SearchResultTemplate: $('#quicksearchtemplate'), $SearchInput: $('#searchTerm'), $ResultContainer: $('#search-result-container'), $ResultLoadingTemplate: $('#quicksearchloadingtemplate'), $NoQueryTemplate: $('#noquerytemplate'), $FailedSearchTemplate: $('#failedsearchtemplate'), $CollapseContainer: $('#search-result-foldout'), $NoResulsTemplate: $('#noresultstemplate'), $SearchContainer: $('#instantsearch'), LinkToSearchResults: "/default.aspx?ID=@Navigation.GetPageIdByNavigationTag("search")", PostPageId: "@Navigation.GetPageIdByNavigationTag("instant-search")", $searchBtn: $('.js-search-btn') }); }); </script></text> } </li> @if (Pageview.IsCurrentUserAllowed) { <li class="@(Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Desktop ? "dropdown" : "dropdown") dropdown-icon"> <a href="javascript:void(0)" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> <i class="icon-user" aria-hidden="true"></i> <span class="dropdown-label"> @if (Pageview.Security.UserLoggedIn) { @Translate("Account", "Account") } else { @Translate("Login", "Login") } </span> </a> @if (Pageview.Security.UserLoggedIn) { <ul class="dropdown-menu"> @RenderNavigation(new { Template = "navbar-nav-customer.xslt", Expandmode = "all", StartLevel = 1, EndLevel = 2 }) </ul> } else { <div class="dropdown-menu"> @using NORRIQ.Common8.Razor; <form name="ExtUserForm" id="loginForm" method="post" class="form" role="form" action="@(System.Web.HttpContext.Current.Request.Url.PathAndQuery)"> <input type="hidden" name="pid" value="@Pageview.Page.ID" /> <div class="form-group"> <label for="Username">@Translate("Username", "Username")</label> <input id="Username" name="Username" type="text" value="" class="form-control" autocomplete="off"> </div> <div class="form-group"> <label for="Password">@Translate("Password", "Password")</label> <input id="Password" name="Password" type="password" value="" class="form-control" autocomplete="off"> </div> <div class="form-group"> <div id="loginFeedback"></div> <button type="submit" role="button" class="btn btn-primary btn-block" id="loginBtn"> @Translate("Login", "Login") </button> </div> <ul class="form-login-links"> <li> <a href="@Navigation.GetUrlByNavigationTag("forgot-password")">@Translate("Forgot password", "Forgot password")</a> </li> <li> <a href="@Navigation.GetUrlByNavigationTag("b2b-customer")">@Translate("Register user", "Register user")</a> </li> </ul> </form> <script id="loginBtnDefaultTemplate" type="text/x-jsrender"> @Translate("Login", "Login") </script> <script id="loginBtnLoggingInTemplate" type="text/x-jsrender"> <i class="icon-async icon-pulse" aria-hidden="true"></i> @Translate("Logging in", "Logging in") </script> <script id="loginLoadingTemplate" type="text/x-jsrender"> <p class="user-login-loading"><i class="icon-async icon-pulse" aria-hidden="true"></i> @Translate("Logging in", "Logging in")</p> </script> <script id="loginErrorTemplate" type="text/x-jsrender"> <p class="user-login-error">@Translate("An error occured during login", "An error occured during login!")</p> </script> <script id="loginBadLoginInfoTemplate" type="text/x-jsrender"> <p class="user-login-error">@Translate("Username or password is incorrect", "Username or password is incorrect!")</p> </script> </div> } </li> } <li class="@(Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Desktop && !isCartEmpty ? "dropdown" : "dropdown") dropdown-icon" id="cart-information"> @{ double quantity = 0; var price = new PriceInfo(); var emptyCart = Translate("Your cart is empty", "Your cart is empty"); var dropdown = string.Format("title=\"{0}\"", emptyCart); if (!isCartEmpty) { quantity = Dynamicweb.Ecommerce.Common.Context.Cart.OrderLines.Sum(s => s.Quantity); price = Dynamicweb.Ecommerce.Common.Context.Cart.Price; dropdown = "class=\"dropdown-toggle dropdown-minicart\" data-toggle=\"dropdown\" role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\""; } } <a href="@(!isCartEmpty ? Navigation.GetUrlByNavigationTag("cart") : "javascript:void(0)")"> <i class="icon-minicart" aria-hidden="true"></i> <span class="dropdown-label">@Translate("Cart", "Cart")</span> @if (!isCartEmpty) { <span class="dropdown-qty">@quantity</span> } </a> @*@if (!isCartEmpty && Pageview.Security.UserLoggedIn || !isCartEmpty) { <div class="dropdown-menu"> <table class="table table-mini"> <tr> <td class="text-left">@Translate("Purchase", "Purchase"): @quantity</td> <td class="text-right"><strong>@price.PriceWithoutVATFormattedNoSymbol</strong></td> </tr> <tr> <td colspan="2" class="text-right"><i>@Translate("Prices without VAT", "Prices without VAT")</i></td> </tr> </table> <a href="@Navigation.GetUrlByNavigationTag("cart")" class="btn btn-primary btn-block">@Translate("Show cart", "Show cart")</a> </div> }*@ </li> <li class="dropdown dropdown-icon dropdown-mobile"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> <i class="icon-hamburger"></i> <span class="dropdown-label">Menu</span> </a> @RenderNavigation(new { Template = "navbar-nav-dropdown.xslt", Expandmode = "all", StartLevel = 1, EndLevel = 2 }) </li> </ul> </div> </header> <script type="text/x-jsrender" id="cart-information-template-show"> <a href="javascript:void(0) " class="dropdown-toggle dropdown-minicart" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> <i class="icon-minicart" aria-hidden="true"></i> <span class="dropdown-label">@Translate("Cart", "Cart")</span> <span class="dropdown-qty">{{:Quantity}}</span> </a> <div class="dropdown-menu"> <table class="table table-mini"> <tr> <td class="text-left">@Translate("Purchase", "Purchase"): {{:Quantity}}</td> <td class="text-right"><strong>{{:Price.PriceWithoutVATFormattedNoSymbol}}</strong></td> </tr> <tr> <td colspan="2" class="text-right"><i>@Translate("Prices without VAT", "Prices without VAT")</i></td> </tr> </table> <a href="@Navigation.GetUrlByNavigationTag("cart")" class="btn btn-primary btn-block">@Translate("Show cart", "Show cart")</a> </div> </script> <script type="text/x-jsrender" id="cart-information-template-empty"> <a href="javascript:void(0) " class="dropdown-toggle dropdown-minicart" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> <span class="dropdown-item"> <i class="icon-minicart" aria-hidden="true"></i> <span class="dropdown-label sr-only">@Translate("Cart", "Cart")</span> </span> </a> <div class="dropdown-menu"> <p>@Translate("Your cart is empty", "Your cart is empty")</p> </div> </script> <nav class="navbar navbar-inverse navbar-mixed"> <div class="navbar-container"> @RenderSnippet("EcomInline") @RenderNavigation(new { Template = "navbar-nav-pages.xslt", Expandmode = "all", StartLevel = 1, EndLevel = 2 }) </div> </nav> @if (hasSubGroups != null) { <nav class="navbar navbar-default navbar-mixed-mega" data-subgroup="@hasSubGroups" data-ecom="@ecomtag"> <div class="container"> @RenderSnippet("EcomMega") </div> </nav> } @using Dynamicweb.Ecommerce.Products @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> @Title("Standad Page") @Description("Page Template") @{ var PageType = Model.Item.GetString("PageType"); var ecomquery = @System.Web.HttpContext.Current.Request.QueryString["ecomQuery"]; var prodid = @System.Web.HttpContext.Current.Request.QueryString["productid"]; var groupid = @System.Web.HttpContext.Current.Request.QueryString["groupid"]; } @if (!Pageview.IsCurrentUserAllowed && !Pageview.Security.UserLoggedIn) { <main data-page-type="protected"> <div class="container"> <h1 class="title-styled" data-align="center"> @Model.Area.Item.GetString("RestrictedTitle") </h1> <div class="row-flex"> @if (!String.IsNullOrEmpty(Model.Area.Item.GetString("NewUserText"))) { <div class="col-xs-12 col-sm-6 col-md-5 col-md-offset-1" data-display="flex"> <div data-align="left" data-content-border="boxed" data-content-type="box"> @Model.Area.Item.GetString("LoginText") @using NORRIQ.Common8.Razor; @{ var ResetPassword = Navigation.GetUrlByNavigationTag("forgot-password"); } <form name="ExtUserForm" id="loginForm" method="post" class="form" role="form" action="@(System.Web.HttpContext.Current.Request.Url.PathAndQuery)"> <div class="form-group"> <label for="Username">@Translate("Username", "Username")</label> <input id="Username" name="Username" type="text" value="" class="form-control" autocomplete="off"> </div> <div class="form-group"> <label for="Password">@Translate("Password", "Password")</label> <input id="Password" name="Password" type="password" value="" class="form-control" autocomplete="off"> </div> <div id="loginFeedback"></div> <a href="@ResetPassword" class="forgot-password">@Translate("Forgot password", "Forgot password")</a> <button type="submit" role="button" class="btn btn-primary" id="loginBtn" data-float="right"> @Translate("Login", "Login") </button> </form> <script id="loginBtnDefaultTemplate" type="text/x-jsrender"> @Translate("Login", "Login") </script> <script id="loginBtnLoggingInTemplate" type="text/x-jsrender"> <i class="icon-async icon-pulse" aria-hidden="true"></i> @Translate("Logging in", "Logging in") </script> <script id="loginLoadingTemplate" type="text/x-jsrender"> <p class="user-login-loading"><i class="icon-async icon-pulse" aria-hidden="true"></i> @Translate("Logging in", "Logging in")</p> </script> <script id="loginErrorTemplate" type="text/x-jsrender"> <p class="user-login-error">@Translate("An error occured during login", "An error occured during login!")</p> </script> <script id="loginBadLoginInfoTemplate" type="text/x-jsrender"> <p class="user-login-error">@Translate("Username or password is incorrect", "Username or password is incorrect!")</p> </script> </div> </div> <div class="col-xs-12 col-sm-6 col-md-5" data-display="flex"> <div data-align="left" data-content-border="boxed" data-content-type="box"> @Model.Area.Item.GetString("NewUserText") </div> </div> } else { <div class="col-xs-12 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4" data-display="flex"> <div data-align="left" data-content-border="boxed" data-content-type="box"> @Model.Area.Item.GetString("LoginText") @using NORRIQ.Common8.Razor; @{ var ResetPassword = Navigation.GetUrlByNavigationTag("forgot-password"); } <form name="ExtUserForm" id="loginForm" method="post" class="form" role="form" action="@(System.Web.HttpContext.Current.Request.Url.PathAndQuery)"> <div class="form-group"> <label for="Username">@Translate("Username", "Username")</label> <input id="Username" name="Username" type="text" value="" class="form-control" autocomplete="off"> </div> <div class="form-group"> <label for="Password">@Translate("Password", "Password")</label> <input id="Password" name="Password" type="password" value="" class="form-control" autocomplete="off"> </div> <div id="loginFeedback"></div> <a href="@ResetPassword" class="forgot-password">@Translate("Forgot password", "Forgot password")</a> <button type="submit" role="button" class="btn btn-primary" id="loginBtn" data-float="right"> @Translate("Login", "Login") </button> </form> <script id="loginBtnDefaultTemplate" type="text/x-jsrender"> @Translate("Login", "Login") </script> <script id="loginBtnLoggingInTemplate" type="text/x-jsrender"> <i class="icon-async icon-pulse" aria-hidden="true"></i> @Translate("Logging in", "Logging in") </script> <script id="loginLoadingTemplate" type="text/x-jsrender"> <p class="user-login-loading"><i class="icon-async icon-pulse" aria-hidden="true"></i> @Translate("Logging in", "Logging in")</p> </script> <script id="loginErrorTemplate" type="text/x-jsrender"> <p class="user-login-error">@Translate("An error occured during login", "An error occured during login!")</p> </script> <script id="loginBadLoginInfoTemplate" type="text/x-jsrender"> <p class="user-login-error">@Translate("Username or password is incorrect", "Username or password is incorrect!")</p> </script> </div> </div> } </div> </div> </main> } else { @RenderBreadcrumb() <main class="page-content" data-page-type="@PageType"> @if (PageType == "default") { <div class="container"> <div class="row-flex"> <div class="col-xs-12 col-sm-12 col-md-3" data-content="sidebar" id="sidebar"> @RenderNavigation() @RenderSidebar() </div> <div class="col-xs-12 col-sm-12 col-md-9 pull-right"> @RenderHeader() @RenderPrimary() @RenderSecondary() @RenderTertiary() </div> </div> </div> } else if (PageType == "ecom") { <div class="container"> @RenderPrimary() @RenderSecondary() @RenderTertiary() @RenderSidebar() </div> } else if (PageType == "frontpage") { <div class="container-fluid"> @RenderPrimary() </div> <div class="container"> @RenderSecondary() @RenderTertiary() @RenderSidebar() </div> } else if (PageType == "boxed" || PageType == "cart") { <div class="container"> @RenderHeader() @RenderPrimary() @RenderSecondary() @RenderTertiary() @RenderSidebar() </div> } </main> } @* Default content for pages *@ @helper RenderPrimary() { if (Placeholder1() != null) { <div class="row-flex"> @Placeholder1() </div> } } @helper RenderSecondary() { if (Placeholder2() != null) { <div class="row-flex"> @Placeholder2() </div> } } @helper RenderTertiary() { if (Placeholder3() != null) { <div class="row-flex"> @Placeholder3() </div> } } @helper RenderSidebar() { if (Aside() != null) { <div class="row-flex"> @Aside() </div> } } @helper RenderNavigation() { @RenderNavigation(new { Template = "nav-sidebar.xslt", Expandmode = "all", StartLevel = 1, EndLevel = 6 }) } @helper RenderBreadcrumb() { // Model.PropertyItem may sometimes be null, thus we must check for it. if (Model.PropertyItem != null) { if (!Model.PropertyItem.GetBoolean("HideBreadcrumb")) { <nav class="clearfix breadcrumb-container"> <div class="container"> <ol class="breadcrumb"> @RenderSnippet("Breadcrumb") @{ var productId = System.Web.HttpContext.Current.Request.QueryString["ProductID"]; } @*@if (productId != null) { var product = Product.GetProductById(productId); if (product != null) { <li><span class="disabled">@(product.Name)</span></li> } }*@ </ol> </div> </nav> } } } @helper RenderHeader() { if (Model.Item.GetString("TitleStyle") != "hidden") { var TitleStyle = Model.Item.GetString("TitleStyle"); <header> <h1 class="@TitleStyle"> @Model.Item.GetString("Title") </h1> </header> } } @*Definition of Content areas*@ @helper Placeholder1() { @Model.Placeholder("Primary", "Content", "unwrap:true;default:true") } @helper Placeholder2() { @Model.Placeholder("Secondary", "Content", "unwrap:true") } @helper Placeholder3() { @Model.Placeholder("Tertiary", "Content", "unwrap:true") } @helper Aside() { @Model.Placeholder("Sidebar", "Sidebar", "unwrap:true") } @RenderItemList(new { ItemType = "Footer", ListSourceType = "SelfArea", ItemFieldsList = "*", IncludeParagraphItems = true, IncludeAllChildItems = true, ListOrderBy = "Sort", ListTemplate = "ItemPublisher/List/Footer.cshtml", ListPageSize = "3" }) </div> <script append="true"> require(['standardwebshop/areas/user/login'], function (AsyncLogin) { var login = new AsyncLogin({ $loginForm: $("#loginForm"), $username: $("#Username"), $password: $("#Password") }); login.init(); }); </script> @if (true) { <script src="/scripts/require.js"></script> @StandardWebshop.CustomCode.Razor.TimestampSource.GetJavaScriptWithTimestamp("/scripts/standardwebshop/main.js") } else { @StandardWebshop.CustomCode.Razor.TimestampSource.GetJavaScriptWithTimestamp("/scripts/standardwebshop/main.min.js") } <script> //Loads master along with the localized validation messages (read from the template tag "lang"). @* Loading the datepicker localizations via the aliasses in main.js failed and caused them to be loaded from the original files instead of from the minified file. *@ require(['jQueryUI.localization/jquery.ui.datepicker-en-GB', 'jQueryUI.localization/jquery.ui.datepicker-da'], function () { }); require(['standardwebshop/areas/master'], function (master) { master.init(); }); @* Fool the minifier to include all validation localizations, but only trigger the one actually needed. *@ require([], function () { @if (String.Equals(Pageview.Area.Culture.Split('-').First(), "sv", StringComparison.OrdinalIgnoreCase)) { <text> require(["jquery.validation-1.13.1/localization/messages_sv"], function () { }); </text> } else if (String.Equals(Pageview.Area.Culture.Split('-').First(), "en", StringComparison.OrdinalIgnoreCase)) { <text> require(["jquery.validation-1.13.1/localization/messages_en"], function () { }); </text> } }); //require(['jquery', '//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js'], function() { // (function ($) { window.fnames = new Array(); window.ftypes = new Array(); fnames[0] = 'EMAIL'; ftypes[0] = 'email'; }(jQuery)); var $mcj = jQuery.noConflict(true); //}); </script> <script append="replace"></script> @*@if (!String.IsNullOrEmpty(Model.Area.Item.GetString("Google"))) { <script> (function (i, s, o, g, r, a, m) { i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () { (i[r].q = i[r].q || []).push(arguments) }, i[r].l = 1 * new Date(); a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m) })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); ga('create', '@Model.Area.Item.GetString("Google")', 'auto'); ga('send', 'pageview'); </script> }*@ @SnippetStart("EcomMega") @RenderNavigation(new { Template = "navbar-nav-ecom-mega.xslt", Expandmode = "all", StartLevel = 1, EndLevel = 4, NavigationTag = ecomtag }) @SnippetEnd("EcomMega") @SnippetStart("EcomInline") @RenderNavigation(new { Template = "navbar-nav-ecom-inline.xslt", Expandmode = "all", StartLevel = 1, EndLevel = 4, NavigationTag = ecomtag }) @SnippetEnd("EcomInline") @SnippetStart("Breadcrumb") @RenderNavigation(new { Template = "breadcrumb.xslt", StartLevel = 1, EndLevel = 3 }) @SnippetEnd("Breadcrumb") </body> </html>