Error executing template "Designs/Rapido/_parsed/Page.parsed.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_d489fab84f2e40a9a6e17aed63c73fc3.Execute() in D:\Dynamicweb.net\Solutions\Peritus\subaru.dw9.dynamicweb-cms.com\Files\Templates\Designs\Rapido\_parsed\Page.parsed.cshtml:line 621
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 2 3 @* Rapido version 2.0.1 *@ 4 5 @using Dynamicweb.Frontend.Devices 6 @using Dynamicweb.Extensibility 7 @using Dynamicweb.Content 8 @using Dynamicweb.Security 9 @using System 10 @using System.Linq 11 @using System.Web 12 @using System.IO 13 14 @{ 15 //General settings 16 string favicon = Model.Area.Item.GetFile("LogoFavicon") != null ? Model.Area.Item.GetFile("LogoFavicon").Path : "/Files/Images/favicon.png"; 17 string logo = Model.Area.Item.GetFile("LogoImage") != null ? Model.Area.Item.GetFile("LogoImage").Path : "/Files/Images/logo-dynamicweb.png"; 18 if (Path.GetExtension(logo).ToLower() != ".svg") 19 { 20 logo = "/Admin/Public/GetImage.ashx?height=40&amp;crop=5&amp;Compression=75&amp;image=" + @logo; 21 } 22 string searchPlaceholder = Translate("Search products", "Search products"); 23 string searchValue = HttpContext.Current.Request.QueryString.Get("Search") != null ? HttpContext.Current.Request.QueryString.Get("Search") : ""; 24 string wireframeMode = Model.Area.Item.GetBoolean("WireframeMode").ToString(); 25 26 //Font settings 27 string navigationFont = Model.Area.Item.GetItem("NavigationFont").GetGoogleFont("FontFamily").Family.Replace(" ", "+"); 28 string mobileNavigationFont = Model.Area.Item.GetItem("MobileNavigationFont").GetGoogleFont("FontFamily").Family.Replace(" ", "+"); 29 string headerFont = Model.Area.Item.GetItem("ContentLayoutHeaderFont").GetGoogleFont("FontFamily").Family.Replace(" ", "+"); 30 string subHeaderFont = Model.Area.Item.GetItem("ContentLayoutSubheaderFont").GetGoogleFont("FontFamily").Family.Replace(" ", "+"); 31 string contentFont = Model.Area.Item.GetItem("ContentLayoutBodyText").GetGoogleFont("FontFamily").Family.Replace(" ", "+"); 32 string newStickersFont = Model.Area.Item.GetItem("NewStickersFont").GetGoogleFont("FontFamily").Family.Replace(" ", "+"); 33 string customStickersFont = Model.Area.Item.GetItem("CustomStickersFont").GetGoogleFont("FontFamily").Family.Replace(" ", "+"); 34 string toolsMenuFont = Model.Area.Item.GetItem("ToolsMenuFont").GetGoogleFont("FontFamily").Family.Replace(" ", "+"); 35 36 //Page IDs for use in the template 37 int pageId = Model.TopPage.ID; 38 string firstPageId = Model.Area.FirstActivePage.ID.ToString(); 39 int cartPageId = GetPageIdByNavigationTag("CartPage"); 40 int miniCartFeedPageId = GetPageIdByNavigationTag("MiniCartFeed"); 41 int cartFeedPageId = GetPageIdByNavigationTag("CartOrderlinesFeed"); 42 int productsPageId = GetPageIdByNavigationTag("ProductsPage"); 43 int productsSearchFeedId = productsPageId; 44 int productGroupsPageId = GetPageIdByNavigationTag("ProductGroupsFeed"); 45 int impersonationPageId = GetPageIdByNavigationTag("Impersonation"); 46 47 bool stickyMenu = Pageview.Device.ToString() == "Mobile" || Pageview.Device.ToString() == "Tablet" ? false : Model.Area.Item.GetBoolean("NavigationStickyMenu"); 48 string stickyTop = stickyMenu ? "top-container--sticky" : ""; 49 string pagePos = stickyMenu ? "js-page-pos" : ""; 50 string topLayout = Model.Area.Item.GetList("LayoutTop").SelectedValue; 51 bool renderPagesInToolBar = Model.Area.Item.GetBoolean("RenderPagesInToolBar"); 52 string toolbarText = Model.Area.Item.GetString("ToolbarText"); 53 bool onlyPreview = Model.Area.Item.GetBoolean("OnlyPreviewForAnonymous") && Model.CurrentUser.ID == 0; 54 55 string autoCssLink = "/Files/Templates/Designs/Rapido/css/rapido/rapido_" + Model.Area.ID.ToString() + ".min.css?ticks=" + Model.Area.UpdatedDate.Ticks; 56 57 string userInitials = ""; 58 if (Model.CurrentUser.ID != 0) 59 { 60 if (!String.IsNullOrEmpty(Model.CurrentUser.Name)) 61 { 62 string[] names = Model.CurrentUser.Name.Split(' '); 63 userInitials += Model.CurrentUser.Name.Substring(0, 1); 64 65 if (names.Length > 1) 66 { 67 userInitials += names[names.Length - 1].Substring(0, 1); 68 } 69 } 70 else 71 { 72 userInitials += Model.CurrentUser.FirstName != null && Model.CurrentUser.FirstName != "" ? Model.CurrentUser.FirstName.Substring(0, 1) : ""; 73 userInitials += Model.CurrentUser.LastName != null && Model.CurrentUser.LastName != "" ? Model.CurrentUser.LastName.Substring(0, 1) : ""; 74 userInitials += userInitials.Length == 1 && Model.CurrentUser.FirstName != null && Model.CurrentUser.FirstName.Length > 1 ? Model.CurrentUser.FirstName.Substring(1, 2) : ""; 75 userInitials += userInitials == "" && Model.CurrentUser.Email != null && Model.CurrentUser.Email.Length > 1 ? Model.CurrentUser.Email.Substring(0, 2) : ""; 76 userInitials += userInitials == "" ? Model.CurrentUser.UserName.Substring(0, 2) : ""; 77 } 78 } 79 80 string siteURL = Dynamicweb.Context.Current.Request.Url.Scheme + "://" + Dynamicweb.Context.Current.Request.Url.Host; 81 string businessPhotoPath = Model.Area.Item.GetFile("BusinessPhoto") != null ? Model.Area.Item.GetFile("BusinessPhoto").Path : ""; 82 string businessName = Model.Area.Item.GetString("BusinessName"); 83 var address = Model.Area.Item.GetItem("Address"); 84 string streetAddress = ""; 85 string addressLocality = ""; 86 string addressRegion = ""; 87 string postalCode = ""; 88 string addressCountry = ""; 89 if (address != null) 90 { 91 streetAddress = address.GetString("StreetAddress"); 92 addressLocality = address.GetString("City"); 93 addressRegion = address.GetString("Region"); 94 postalCode = address.GetString("PostalCode"); 95 addressCountry = address.GetString("Country"); 96 } 97 string contactEmail = Model.Area.Item.GetString("ContactEmail"); 98 string contactNumber = Model.Area.Item.GetString("ContactNumber"); 99 } 100 <!DOCTYPE html> 101 102 <html lang="@Pageview.Area.CultureInfo.TwoLetterISOLanguageName"> 103 <head> 104 <meta charset="utf-8" /> 105 <title>@Model.Title</title> 106 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1"> 107 <meta name="robots" content="index, follow"> 108 @Model.MetaTags 109 <!-- Favicon --> 110 <link href="@favicon" rel="icon" type="image/png"> 111 112 <!-- Font awesome --> 113 <link rel="stylesheet" href="/Files/Templates/Designs/Rapido/css/rapido/font-awesome.min.css" type="text/css"> 114 115 <!-- Base (Default, wireframe) styles --> 116 <link rel="stylesheet" href="/Files/Templates/Designs/Rapido/css/base/base.min.css" type="text/css"> 117 118 <!-- Rapido Css from Website Settings --> 119 <link id="rapidoCss" rel="stylesheet" href="@autoCssLink" type="text/css"> 120 121 <!-- Ignite Css (Custom site specific styles) --> 122 <link id="igniteCss" type="text/css" href="/Files/Templates/Designs/Rapido/css/ignite/ignite.min.css" rel="stylesheet"> 123 124 <!-- Google fonts --> 125 @{ 126 var fonts = new string[8] { navigationFont, mobileNavigationFont, headerFont, subHeaderFont, contentFont, newStickersFont, customStickersFont, toolsMenuFont }; 127 var family = string.Join("%7C", fonts.Distinct().Select(x => string.Format("{0}:100,200,300,400,500,600,700,800,900", x))); 128 } 129 <link href="https://fonts.googleapis.com/css?family=@family" rel="stylesheet"> 130 131 <script src="//ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 132 <script type="text/javascript"> 133 function PTSEmptyCart(e) { 134 $.ajax({ 135 url: "PTSEmptyCartHandler.ashx", 136 secureuri: true, 137 type: "POST", 138 data: { orderId: "" }, 139 dataType: "text", 140 async: false, 141 success: function (result) { 142 if (result.startsWith("Success")) { 143 Cart.EmptyCart(e); 144 //location.reload(); 145 } 146 else { 147 alert(result.replace("Error;", "")); 148 } 149 }, 150 error: function (err) { 151 alert(err.statusText); 152 } 153 }); 154 } 155 </script> 156 157 @if (!string.IsNullOrEmpty(businessPhotoPath) && 158 !string.IsNullOrEmpty(businessName) && 159 !string.IsNullOrEmpty(streetAddress) && 160 !string.IsNullOrEmpty(addressLocality) && 161 !string.IsNullOrEmpty(addressRegion) && 162 !string.IsNullOrEmpty(postalCode) && 163 !string.IsNullOrEmpty(addressCountry)) 164 { 165 <script type="application/ld+json"> 166 { 167 "@@context": "http://schema.org", 168 "@@type": "Store", 169 "image": [ 170 "@siteURL/Admin/Public/GetImage.ashx?width=400&height=400&crop=0&Compression=75&DoNotUpscale=true&image=@businessPhotoPath", 171 "@siteURL/Admin/Public/GetImage.ashx?width=400&height=300&crop=0&Compression=75&DoNotUpscale=true&image=@businessPhotoPath", 172 "@siteURL/Admin/Public/GetImage.ashx?width=448&height=225&crop=0&Compression=75&DoNotUpscale=true&image=@businessPhotoPath" 173 ], 174 "@@id": "@siteURL", 175 "name": "@businessName", 176 "address": { 177 "@@type": "PostalAddress", 178 "streetAddress": "@streetAddress", 179 "addressLocality": "@addressLocality", 180 "addressRegion": "@addressRegion", 181 "postalCode": "@postalCode", 182 "addressCountry": "@addressCountry" 183 } 184 @if (!string.IsNullOrEmpty(contactEmail)) 185 { 186 <text>,"email": "@Model.Area.Item.GetString("ContactEmail")"</text> 187 } 188 @if (!string.IsNullOrEmpty(contactNumber)) 189 { 190 <text>,"telephone": "@Model.Area.Item.GetString("ContactNumber")"</text> 191 } 192 } 193 </script> 194 } 195 196 <style> 197 #clockdiv { 198 font-family: sans-serif; 199 color: #DC143C; 200 display: inline-block; 201 text-align: center; 202 font-size: 14px; 203 } 204 205 #clockdiv > div { 206 padding: 1px; 207 color: #000; 208 display: inline-block; 209 } 210 211 #clockdiv div > span { 212 display: inline-block; 213 } 214 </style> 215 </head> 216 217 <body> 218 219 @MobileNavigation(userInitials) 220 221 @LoginModal() 222 223 224 <main class="site dw-mod"> 225 <header class="top-container @stickyTop dw-mod" id="Top"> 226 @if (renderPagesInToolBar && Pageview.Device.ToString() != "Mobile" && Pageview.Device.ToString() != "Tablet") 227 { 228 <div class="tools-navigation dw-mod"> 229 <div class="center-container grid top-container__center-container dw-mod"> 230 <div class="grid__cell"> 231 <div class="u-pull--left u-margin-top">@toolbarText</div> 232 <div class="u-pull--right"> 233 @RenderNavigation(new 234 { 235 id = "topToolsNavigation", 236 cssclass = "menu menu-tools dw-mod dwnavigation", 237 template = "TopMenu.xslt" 238 }) 239 </div> 240 </div> 241 </div> 242 </div> 243 } 244 245 @if (Pageview.Device.ToString() != "Mobile" && Pageview.Device.ToString() != "Tablet") 246 { 247 switch (topLayout) 248 { 249 case "condensed": //2 250 <!-- Main navigation --> 251 <nav class="main-navigation dw-mod"> 252 <div class="center-container top-container__center-container dw-mod"> 253 <div class="grid"> 254 255 <div class="grid__col-md-3 grid--align-self-center grid__col--bleed-y"> 256 <div class="logo u-padding--xs dw-mod"> 257 <a href="/Default.aspx?ID=@firstPageId"> 258 <img class="grid__cell-img" src="@logo" alt="@businessName" /> 259 </a> 260 </div> 261 </div> 262 263 @* Navigation *@ 264 <div class="u-pull--left"> 265 @RenderHeaderNavigation() 266 </div> 267 268 <div class="grid__cell grid__cell--align-middle-right"> 269 <ul class="menu dw-mod u-pull--right"> 270 @RenderSignIn("inNavigation", userInitials) 271 @RenderLanguageSelector() 272 @RenderFavorites() 273 @RenderMiniCart() 274 </ul> 275 </div> 276 </div> 277 </div> 278 </nav> 279 280 <!-- Searchbar --> 281 <div class="u-box-shadow u-color-light-gray--bg u-inline-block u-full-width"> 282 <div class="center-container top-container__center-container dw-mod"> 283 <div class="typeahead typeahead--centered u-color-inherit js-typeahead dw-mod" data-page-size="10" id="ProductSearchBar" data-search-page-id="@productsSearchFeedId&feed=true" data-result-page-id="@productsPageId" data-groups-page-id="@productGroupsPageId"> 284 @*<button type="button" class="btn btn--condensed u-color-light-gray--bg typeahead-group-btn dw-mod js-typeahead-groups-btn" data-group-id="all">@Translate("All")</button>*@ 285 @*<ul class="dropdown dropdown--absolute-position u-min-w220px js-handlebars-root js-typeahead-groups-content dw-mod" id="ProductSearchBarGroupsContent" data-template="SearchGroupsTemplate" data-json-feed="/Default.aspx?ID=@productGroupsPageId&feedType=productGroups" data-init-onload="false" data-preloader="minimal"></ul>*@ 286 <div class="typeahead-search-field"> 287 <input type="text" class="u-no-margin u-full-width js-typeahead-search-field" placeholder="@searchPlaceholder" value="@searchValue"> 288 <ul class="dropdown dropdown--absolute-position u-min-w220px u-full-width js-handlebars-root js-typeahead-search-content dw-mod" id="ProductSearchBarContent" data-template="SearchContentTemplate" data-json-feed="/Default.aspx?ID=@productsSearchFeedId&feedType=productsOnly&feed=true" data-init-onload="false"></ul> 289 </div> 290 <button type="button" class="btn btn--condensed btn--primary u-no-margin dw-mod js-typeahead-enter-btn"><i class="fa fa-search"></i></button> 291 </div> 292 </div> 293 </div> 294 295 break; 296 case "minimal": //3 297 <!-- Main navigation --> 298 <nav class="main-navigation dw-mod"> 299 <div class="center-container top-container__center-container dw-mod"> 300 <div class="grid"> 301 302 <div class="grid__col-md-3 grid--align-self-center grid__col--bleed-y"> 303 <div class="logo u-padding--xs dw-mod"> 304 <a href="/Default.aspx?ID=@firstPageId"> 305 <img class="grid__cell-img" src="@logo" alt="@businessName" /> 306 </a> 307 </div> 308 </div> 309 310 @* Navigation *@ 311 <div class="u-pull--left"> 312 @RenderHeaderNavigation() 313 </div> 314 315 <div class="grid__cell grid__cell--align-middle-right"> 316 <ul class="menu dw-mod u-pull--right"> 317 318 @* Search *@ 319 <li class="menu__item menu__item--horizontal menu__item--top-level u-hidden-xxs dw-mod" onmouseover="document.getElementById('headerSearch').focus()"> 320 <div class="menu__link u-w50px is-dropdown is-dropdown--no-icon dw-mod"> 321 <i class="fa fa-search fa-1_5x"></i> 322 <div class="menu menu--dropdown u-w340px top-micro-search dw-mod"> 323 <div class="typeahead js-typeahead" data-page-size="10" id="ProductSearchBar" data-search-page-id="@productsSearchFeedId&feed=true" data-result-page-id="@productsPageId" data-groups-page-id="@productGroupsPageId"> 324 <div class="typeahead-search-field"> 325 <input type="text" class="u-no-margin u-full-width js-typeahead-search-field" id="headerSearch" placeholder="@searchPlaceholder" value="@searchValue"> 326 <ul class="dropdown dropdown--absolute-position u-min-w220px u-full-width js-handlebars-root js-typeahead-search-content" id="ProductSearchBarContent" data-template="SearchContentTemplate" data-json-feed="/Default.aspx?ID=@productsSearchFeedId&feedType=productsOnly&feed=true" data-init-onload="false" data-preloader="minimal"></ul> 327 </div> 328 </div> 329 </div> 330 </div> 331 </li> 332 333 @RenderSignIn("inNavigation", userInitials) 334 @RenderLanguageSelector() 335 @RenderFavorites() 336 @RenderMiniCart() 337 </ul> 338 </div> 339 </div> 340 </div> 341 </nav> 342 break; 343 case "splitted": //4 344 <!-- Header --> 345 <div class="header header-top dw-mod"> 346 <div class="center-container top-container__center-container dw-mod"> 347 <div class="grid"> 348 349 @* Logo *@ 350 <div class="grid__col-md-6 grid__col-sm-6 grid--align-self-center grid__col--bleed-y"> 351 <div class="grid__cell"> 352 <div class="logo u-max-w220px u-margin-top u-margin-bottom dw-mod"> 353 <a href="/Default.aspx?ID=@firstPageId"> 354 <img class="grid__cell-img" src="@logo" alt="@businessName" /> 355 </a> 356 </div> 357 </div> 358 </div> 359 360 @* Search *@ 361 <div class="grid__col-md-6 grid__col-sm-6 grid__col-xs-12 grid--align-self-center grid__col--bleed"> 362 <div class="grid__cell"> 363 <div class="typeahead u-no-margin u-margin-top u-margin-bottom u-color-inherit js-typeahead" data-page-size="10" id="TopProductSearch" data-search-page-id="@productsSearchFeedId&feed=true" data-result-page-id="@productsPageId" data-groups-page-id="@productGroupsPageId"> 364 <button type="button" class="btn btn--condensed u-color-light-gray--bg typeahead-group-btn dw-mod js-typeahead-groups-btn" data-group-id="all">@Translate("All")</button> 365 <ul class="dropdown dropdown--absolute-position u-min-w220px js-handlebars-root js-typeahead-groups-content dw-mod" id="TopProductSearchGroupsContent" data-template="SearchGroupsTemplate" data-json-feed="/Default.aspx?ID=@productGroupsPageId&feedType=productGroups" data-init-onload="false" data-preloader="minimal"></ul> 366 <input type="text" class="typeahead-search-field u-no-margin js-typeahead-search-field" placeholder="@searchPlaceholder" value="@searchValue"> 367 <ul class="dropdown dropdown--absolute-position u-min-w220px u-full-width js-handlebars-root js-typeahead-search-content u-full-width dw-mod" id="TopProductSearchContent" data-template="SearchContentTemplate" data-json-feed="/Default.aspx?ID=@productsSearchFeedId&feedType=productsOnly&feed=true" data-init-onload="false" data-preloader="minimal"></ul> 368 <button type="button" class="btn btn--condensed btn--primary u-no-margin dw-mod js-typeahead-enter-btn"><i class="fa fa-search"></i></button> 369 </div> 370 </div> 371 </div> 372 </div> 373 </div> 374 </div> 375 <!-- Main navigation --> 376 <nav class="main-navigation dw-mod"> 377 <div class="center-container top-container__center-container dw-mod"> 378 <div class="grid"> 379 <div class="u-pull--left"> 380 @RenderHeaderNavigation() 381 </div> 382 <div class="grid__cell grid__cell--align-middle-right"> 383 <ul class="menu dw-mod u-pull--right"> 384 @RenderSignIn("inNavigation", userInitials) 385 @RenderLanguageSelector() 386 @RenderFavorites() 387 @if (!onlyPreview) 388 { 389 @RenderMiniCart() 390 } 391 </ul> 392 </div> 393 </div> 394 </div> 395 </nav> 396 397 break; 398 case "normal": //1 399 default: 400 <!-- Header --> 401 <div class="header header-top dw-mod"> 402 <div class="center-container top-container__center-container dw-mod"> 403 <div class="grid"> 404 405 @* Logo *@ 406 <div class="grid__col-md-3 grid__col-sm-3 grid__col-xs-12 grid--align-self-center grid__col--bleed-y"> 407 <div class="logo dw-mod"> 408 <a href="/Default.aspx?ID=@firstPageId"> 409 <img class="grid__cell-img" src="@logo" alt="@businessName" /> 410 </a> 411 </div> 412 </div> 413 414 @* Search *@ 415 @if (Model.CurrentUser.ID != 0) 416 { 417 <div class="grid__col-md-4 grid__col-sm-4 grid__col-xs-12 grid__col--bleed-y grid--align-self-center"> 418 <div class="typeahead u-margin u-color-inherit js-typeahead" data-page-size="10" id="TopProductSearch" data-search-page-id="@productsSearchFeedId&feed=true" data-result-page-id="@productsPageId" data-groups-page-id="@productGroupsPageId"> 419 @*<button type="button" class="btn btn--condensed u-color-light-gray--bg typeahead-group-btn dw-mod js-typeahead-groups-btn" data-group-id="all">@Translate("All")</button>*@ 420 @*<ul class="dropdown dropdown--absolute-position js-handlebars-root js-typeahead-groups-content u-min-w220px dw-mod" id="TopProductSearchGroupsContent" data-template="SearchGroupsTemplate" data-json-feed="/Default.aspx?ID=@productGroupsPageId&feedType=productGroups" data-init-onload="false" data-preloader="minimal"></ul>*@ 421 <input type="text" class="typeahead-search-field u-no-margin js-typeahead-search-field" placeholder="@searchPlaceholder" value="@searchValue"> 422 <ul class="dropdown dropdown--absolute-position u-min-w220px u-full-width js-handlebars-root js-typeahead-search-content u-full-width dw-mod" id="TopProductSearchContent" data-template="SearchContentTemplate" data-json-feed="/Default.aspx?ID=@productsSearchFeedId&feedType=productsOnly&feed=true" data-init-onload="false" data-preloader="minimal"></ul> 423 <button type="button" class="btn btn--condensed btn--primary u-no-margin dw-mod js-typeahead-enter-btn"><i class="fa fa-search"></i></button> 424 </div> 425 </div> 426 Dynamicweb.Content.Items.Item customSettings = Dynamicweb.Content.Items.Item.GetItemById("CustomWebsiteSettings", Pageview.Area.Item["CustomSettings"].ToString()); 427 428 DateTime frist = DateTime.Now.AddDays(2); //if no date set 429 if (customSettings["Bestillingsfrist"] != null) 430 { 431 if (!DateTime.TryParse(customSettings["Bestillingsfrist"].ToString(), out frist)) 432 { 433 frist = DateTime.Now.AddDays(2); //if no date set 434 } 435 //frist = DateTime.Parse(customSettings["Bestillingsfrist"].ToString()); 436 } 437 DateTime start = DateTime.Now; 438 DayOfWeek day = frist.DayOfWeek; 439 int daysToAdd = ((int)day - (int)start.DayOfWeek + 7) % 7; 440 441 //time has passed 442 if (daysToAdd == 0 && start.TimeOfDay > frist.TimeOfDay) 443 { 444 daysToAdd = 7; 445 } 446 DateTime nextDueDate = start.AddDays(daysToAdd); 447 448 TimeSpan ts = new TimeSpan(frist.Hour, frist.Minute, 0); 449 nextDueDate = nextDueDate.Date + ts; 450 451 <script type="text/javascript"> 452 var currDate = new Date(@start.Year, @start.Month - 1, @start.Day, @start.Hour, @start.Minute, @start.Second, @start.Millisecond) 453 var nextDueDate = new Date(@nextDueDate.Year, @nextDueDate.Month - 1, @nextDueDate.Day, @nextDueDate.Hour, @nextDueDate.Minute, @nextDueDate.Second, @nextDueDate.Millisecond) 454 </script> 455 456 <!-- <div class="grid__col-md-1 grid__col-sm-1 grid__col-xs-12 grid__col--bleed-y grid--align-self-end"> 457 <img class=" b-lazy b-loaded" src="/Admin/Public/GetImage.ashx?width=496&amp;height=380&amp;crop=5&amp;Compression=75&amp;FillCanvas=true&amp;DoNotUpscale=true&amp;image=%2fFiles%2fImages%2fSubaru%2ffly.png" alt="Bestillingsfrister flyfrakt"> 458 </div> --> 459 <div class="grid__col-md-3 grid__col-sm-3 grid__col-xs-12 grid__col--bleed-y grid--align-self-center"> 460 <div id="clockdiv"> 461 <strong>Neste bestillingsfrist</strong><br /> 462 <div> 463 <span class="nextDueDate u-bold"></span> 464 </div><br /> 465 <div> 466 &nbsp;<span class="days"></span>d&nbsp;<span class="hours"></span>t&nbsp;<span class="minutes"></span>m 467 </div> 468 469 </div> 470 </div> 471 <div class="grid__col-md-2 grid__col-sm-2 grid__col-xs-12 grid__col--bleed-y grid--align-self-center"> 472 <div class="grid__cell grid__cell--align-middle-right"> 473 <ul class="menu dw-mod u-pull--right"> 474 @RenderSignIn("outsideNavigation", userInitials) 475 @RenderLanguageSelector("outsideNavigation") 476 @RenderFavorites("outsideNavigation") 477 @if (!onlyPreview && Pageview.User.GroupsIds.Contains(26) == false) 478 { 479 @RenderMiniCart("outsideNavigation") 480 } 481 </ul> 482 </div> 483 @{ 484 if (Dynamicweb.Ecommerce.Common.Context.Cart != null && Pageview.User.GroupsIds.Contains(26) == false) 485 { 486 <div class="handlekurv">@String.Format("Levering: {0}<br />{2:dd.MM.yy} {1}", Translate(Dynamicweb.Ecommerce.Common.Context.Cart.OrderFieldValues.GetOrderFieldValue("PTSDelivery").Value.ToString(), Dynamicweb.Ecommerce.Common.Context.Cart.OrderFieldValues.GetOrderFieldValue("PTSDelivery").Value.ToString()), Dynamicweb.Ecommerce.Common.Context.Cart.OrderFieldValues.GetOrderFieldValue("PTSComments").Value,"")</div> 487 } 488 } 489 </div> 490 } 491 </div> 492 </div> 493 </div> 494 495 <!-- Main navigation --> 496 <nav class="main-navigation dw-mod"> 497 <div class="center-container top-container__center-container dw-mod"> 498 <div class="grid"> 499 @RenderHeaderNavigation() 500 </div> 501 </div> 502 </nav> 503 504 break; 505 } 506 } 507 else 508 { 509 string style = (topLayout == "normal" || topLayout == "splitted" ? "main-navigation--top-style" : "main-navigation--nav-style"); 510 <!-- Main navigation --> 511 <nav class="main-navigation dw-mod @style"> 512 <div class="center-container top-container__center-container dw-mod"> 513 <div class="grid"> 514 @MobileNavigationTrigger() 515 516 <div class="logo u-max-w220px u-middle dw-mod"> 517 <a href="/Default.aspx?ID=@firstPageId"> 518 <img class="grid__cell-img u-w-100prc" src="@logo" alt="@businessName" /> 519 </a> 520 </div> 521 522 @if (!onlyPreview) 523 { 524 <ul class="menu dw-mod u-pull--right"> 525 @RenderMiniCart() 526 </ul> 527 } 528 </div> 529 </div> 530 </nav> 531 532 @* Mobile search *@ 533 <div class="u-padding"> 534 <div class="js-typeahead" data-page-size="10" id="MobileProductSearch" data-search-page-id="@productsSearchFeedId&feed=true" data-result-page-id="@productsPageId"> 535 <input type="text" class="u-full-width js-typeahead-search-field u-no-margin" placeholder="@searchPlaceholder" value="@searchValue"> 536 <ul class="dropdown dropdown--absolute-position u-min-w220px js-handlebars-root js-typeahead-search-content dw-mod" id="MobileProductSearchContent" data-template="SearchContentTemplate" data-json-feed="/Default.aspx?ID=@productsSearchFeedId&feedType=productsOnly&feed=true" data-init-onload="false"></ul> 537 </div> 538 </div> 539 } 540 541 @* Impersonation bar *@ 542 @if (Model.CurrentUser.ID > 0 && Model.SecondaryUsers.Count > 0) 543 { 544 <div class="u-color-warning--bg"> 545 <div class="center-container top-container__center-container dw-mod"> 546 @*Impersonation*@ 547 <div class="grid"> 548 <div class="grid--align-self-center grid__col-x"> 549 @if (Model.CurrentSecondaryUser != null && Model.CurrentSecondaryUser.ID > 0) 550 { 551 string stopImpersonateTranslation = Translate("Stop impersonation"); 552 string username = ""; 553 if (!string.IsNullOrEmpty(Model.CurrentSecondaryUser.FirstName) && !string.IsNullOrEmpty(Model.CurrentSecondaryUser.LastName)) 554 { 555 username = Model.CurrentSecondaryUser.FirstName + " " + Model.CurrentSecondaryUser.LastName; 556 } 557 else if (!string.IsNullOrEmpty(Model.CurrentSecondaryUser.Name)) 558 { 559 username = Model.CurrentSecondaryUser.Name; 560 } 561 else if (!string.IsNullOrEmpty(Model.CurrentSecondaryUser.Email)) 562 { 563 username = Model.CurrentSecondaryUser.Email; 564 } 565 else 566 { 567 username = Model.CurrentSecondaryUser.UserName; 568 } 569 <div class="grid-cell"> 570 <div class="u-pull--left u-bold u-margin-top"> 571 <i class="fa fa-user-secret"></i> 572 @username<text>&nbsp;</text>@Translate("is impersonated by")<text>&nbsp;</text>@Pageview.User.UserName 573 </div> 574 <form method="post" class="u-pull--right u-no-margin"> 575 <input type="submit" class="btn btn--secondary dw-mod u-no-margin" name="DwExtranetRemoveSecondaryUser" value="@stopImpersonateTranslation"> 576 </form> 577 </div> 578 } 579 else 580 { 581 string viewListTranslation = Translate("View the list of users you can impersonate"); 582 <div class="grid-cell u-bold"> 583 <i class="fa fa-user-secret"></i> 584 <a href="/Default.aspx?ID=@impersonationPageId" title="@viewListTranslation" class="u-color-font-black">@viewListTranslation</a> 585 </div> 586 } 587 </div> 588 </div> 589 </div> 590 </div> 591 } 592 </header> 593 594 <!-- Floating mini cart --> 595 @if (!onlyPreview && !stickyMenu && pageId == productsPageId && Pageview.Device.ToString() != "Mobile" && Pageview.Device.ToString() != "Tablet") 596 { 597 <div class="floating-mini-cart u-hidden dw-mod" id="FloatingMiniCart"> 598 <div class="mini-cart dw-mod"> 599 <a href="/Default.aspx?ID=@cartPageId&Purge=True" class="menu-tools__link menu__link--condensed dw-mod js-mini-cart-button" onmouseover="Cart.UpdateMiniCart(event, 'SecondaryMiniCart', '/Default.aspx?ID=@miniCartFeedPageId&feedType=MiniCart')"> 600 <i class="fa fa-shopping-cart fa-4x"></i> 601 <div class="mini-cart__counter mini-cart__counter--lg dw-mod"> 602 <div class="js-handlebars-root js-mini-cart-counter" id="FloatingCartCounter" data-template="MiniCartCounterContent" data-json-feed="/Default.aspx?ID=@miniCartFeedPageId&feedType=Counter" data-preloader="false" data-init-onload="false"> 603 <div class="js-mini-cart-counter-content"> 604 @Model.Cart.TotalProductsCount 605 </div> 606 </div> 607 </div> 608 </a> 609 610 <div class="mini-cart-dropdown js-handlebars-root js-mini-cart dw-mod" id="SecondaryMiniCart" data-template="MiniCartContent" data-cart-id="@miniCartFeedPageId" data-json-feed="/Default.aspx?ID=@miniCartFeedPageId&feedType=MiniCart" data-init-onload="false"></div> 611 </div> 612 </div> 613 } 614 615 <!-- Render the content --> 616 <div id="Page" class="page @pagePos"> 617 <section class="center-container content-container dw-mod" id="content"> 618 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 619 620 621 @if (Model.PropertyItem.GetList("ShowBreadcrumb").SelectedValue == "True" && String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("ListID"))) 622 { 623 <div class="grid__col-12 grid__col--bleed-y"> 624 @RenderNavigation(new 625 { 626 id = "breadcrumb", 627 template = "Breadcrumb.xslt" 628 }) 629 </div> 630 } 631 632 <div class="grid"> 633 @if (Model.PropertyItem.GetList("LeftMenu").SelectedValue == "True") 634 { 635 var navigationMarkup = RenderNavigation(new 636 { 637 id = "leftnav", 638 cssclass = "menu dwnavigation", 639 startLevel = 2, 640 endlevel = 5, 641 template = "LeftNavigation.xslt" 642 }); 643 if (!string.IsNullOrEmpty(navigationMarkup)) 644 { 645 <nav class="grid__col-md-3 grid__col-sm-12 grid__col-xs-12"> 646 <div class="grid"> 647 <div class="grid__col-12"> 648 <div class="grid__cell"> 649 @navigationMarkup 650 </div> 651 </div> 652 </div> 653 </nav> 654 } 655 } 656 <div class="grid__col-auto grid__col--bleed"> 657 <div class="grid"> 658 @* Divs count is equal divs in ParagraphContainer.cshtml *@ 659 @Model.Placeholder("dwcontent", "content", "default:true;sort:1") 660 </div> 661 </div> 662 </div> 663 </section> 664 </div> 665 </main> 666 @if (Model.CurrentUser.ID != 0) 667 { 668 @RenderFooter() 669 } 670 671 <!-- Content rendering helpers --> 672 673 @helper MobileNavigation(string userInitials) 674 { 675 int pageId = Model.TopPage.ID; 676 string mobileNavigationLevels = Model.Area.Item.GetBoolean("MobileNavigationLevels") ? Model.Area.Item.GetString("MobileNavigationLevels") : "3"; 677 678 bool showCreateAccountLink = Model.Area.Item.GetBoolean("ShowCreateAccountLink"); 679 680 int miniCartFeedPageId = GetPageIdByNavigationTag("MiniCartFeed"); 681 int cartFeedPageId = GetPageIdByNavigationTag("CartOrderlinesFeed"); 682 int createAccountPageId = GetPageIdByNavigationTag("CreateAccount"); 683 684 string myProfilePageId = (Model.CurrentUser.ID <= 0) ? GetPageIdByNavigationTag("SignInPage").ToString() + "&RedirectPageId=" + GetPageIdByNavigationTag("CustomerProfile").ToString() : GetPageIdByNavigationTag("CustomerProfile").ToString(); 685 string myOrdersPageId = (Model.CurrentUser.ID <= 0) ? GetPageIdByNavigationTag("SignInPage").ToString() + "&RedirectPageId=" + GetPageIdByNavigationTag("CustomerOrders").ToString() : GetPageIdByNavigationTag("CustomerOrders").ToString(); 686 string myFavoritesPageId = (Model.CurrentUser.ID <= 0) ? GetPageIdByNavigationTag("SignInPage").ToString() + "&RedirectPageId=" + GetPageIdByNavigationTag("CustomerFavorites").ToString() : GetPageIdByNavigationTag("CustomerFavorites").ToString(); 687 bool showMyProfileLink = Model.Area.Item.GetBoolean("ShowMyProfileLink"); 688 bool showMyOrdersLink = Model.Area.Item.GetBoolean("ShowMyOrdersLink"); 689 bool showMyFavoritesLink = Model.Area.Item.GetBoolean("ShowMyFavoritesLink"); 690 691 bool renderPagesInToolBar = Model.Area.Item.GetBoolean("RenderPagesInToolBar"); 692 int startLevel = renderPagesInToolBar ? 1 : 0; 693 694 bool onlyPreview = Model.Area.Item.GetBoolean("OnlyPreviewForAnonymous") && Model.CurrentUser.ID == 0; 695 696 if (Pageview.Device.ToString() == "Mobile" || Pageview.Device.ToString() == "Tablet") 697 { 698 <!-- Trigger for mobile navigation --> 699 <input type="checkbox" id="MobileNavTrigger" class="mobile-nav-trigger" /> 700 701 <!-- Mobile navigation --> 702 <nav class="mobile-navigation dw-mod"> 703 @if (Model.CurrentUser.ID > 0) 704 { 705 string userName = Model.CurrentUser.FirstName != null ? Model.CurrentUser.FirstName : ""; 706 userName += " " + Model.CurrentUser.LastName != null ? Model.CurrentUser.LastName : ""; 707 userName += userName == "" && Model.CurrentUser.UserName != null ? Model.CurrentUser.UserName : ""; 708 709 <ul class="menu menu-mobile"> 710 <li class="menu-mobile__item"> 711 <a href="/default.aspx?ID=@myProfilePageId" class="menu-mobile__link dw-mod"><i class="fa fa-user menu-mobile__link-icon"></i> @userName</a> 712 </li> 713 </ul> 714 } 715 716 @RenderNavigation(new 717 { 718 id = "mobilenavigation", 719 cssclass = "menu menu-mobile dwnavigation", 720 startLevel = @startLevel, 721 ecomStartLevel = @startLevel + 1, 722 endlevel = @mobileNavigationLevels, 723 expandmode = "all", 724 template = "BaseMenuForMobile.xslt" 725 }) 726 727 @if (Model.Area.Item.GetBoolean("RenderPagesInToolBar")) 728 { 729 @RenderNavigation(new 730 { 731 id = "topToolsMobileNavigation", 732 cssclass = "menu menu-mobile dwnavigation", 733 template = "ToolsMenuForMobile.xslt" 734 }) 735 } 736 737 <ul class="menu menu-mobile"> 738 @if (Model.CurrentUser.ID <= 0) 739 { 740 <li class="menu-mobile__item"> 741 <label for="SignInModalTrigger" onclick="document.getElementById('MobileNavTrigger').checked = false;" class="menu-mobile__link dw-mod menu-mobile__link--highlighted"><i class="fa fa-user menu-mobile__link-icon"></i> @Translate("Sign in")</label> 742 </li> 743 if (showCreateAccountLink) 744 { 745 <li class="menu-mobile__item"> 746 <a class="menu-mobile__link menu-mobile__link--highlighted dw-mod" href="/Default.aspx?ID=@createAccountPageId"><i class="fa fa-user menu-mobile__link-icon"></i> @Translate("Create account")</a> 747 </li> 748 } 749 } 750 else 751 { 752 if (showMyProfileLink) 753 { 754 <li class="menu-mobile__item"> 755 <a href="/default.aspx?ID=@myProfilePageId" class="menu-mobile__link menu-mobile__link--highlighted dw-mod"><i class="fa fa-user menu-mobile__link-icon"></i> @Translate("My Profile")</a> 756 </li> 757 } 758 if (showMyOrdersLink) 759 { 760 <li class="menu-mobile__item"> 761 <a href="/default.aspx?ID=@myOrdersPageId" class="menu-mobile__link menu-mobile__link--highlighted dw-mod"><i class="fa fa-list menu-mobile__link-icon"></i> @Translate("My Orders")</a> 762 </li> 763 } 764 if (showMyFavoritesLink) 765 { 766 <li class="menu-mobile__item"> 767 <a href="/default.aspx?ID=@myFavoritesPageId" class="menu-mobile__link menu-mobile__link--highlighted dw-mod"><i class="fa fa-star menu-mobile__link-icon"></i> @Translate("My Favorites")</a> 768 </li> 769 } 770 <li class="menu-mobile__item"> 771 <a class="menu-mobile__link menu-mobile__link--highlighted dw-mod" href="/Admin/Public/ExtranetLogoff.aspx?ID=@pageId"><i class="fa fa-user menu-mobile__link-icon"></i> @Translate("Sign out")</a> 772 </li> 773 } 774 @if (Model.Languages.Count > 0) 775 { 776 string selectedLanguage = ""; 777 foreach (var lang in Model.Languages) 778 { 779 if (lang.IsCurrent) 780 { 781 selectedLanguage = lang.Name; 782 } 783 } 784 785 <li class="menu-mobile__item dw-mod"> 786 <label for="MobileMenuCheck_Language" class="menu-mobile__link menu-mobile__link--highlighted dw-mod"><i class="fa fa-globe menu-mobile__link-icon"></i> @selectedLanguage</label> 787 <input id="MobileMenuCheck_Language" type="checkbox" class="expand-trigger"> 788 <label for="MobileMenuCheck_Language" class="menu-mobile__trigger"></label> 789 <ul class="menu-mobile menu-mobile__submenu expand-menu"> 790 @foreach (var lang in Model.Languages) 791 { 792 <li class="menu-mobile__item dw-mod"> 793 <a class="menu-mobile__link menu-mobile__link--highlighted dw-mod menu-mobile__link--level-1" href="/Default.aspx?ID=@lang.Page.ID&CurrencyCode=@Dynamicweb.Services.Areas.GetArea(lang.ID).EcomCurrencyId">@lang.Name</a> 794 </li> 795 } 796 </ul> 797 </li> 798 } 799 </ul> 800 </nav> 801 <label class="mobile-nav-trigger-off" for="MobileNavTrigger"></label> 802 803 if (!onlyPreview) 804 { 805 <div class="u-visually-hidden js-handlebars-root js-mini-cart" id="miniCart" data-template="MiniCartContent" data-cart-id="@cartFeedPageId" data-json-feed="/Default.aspx?ID=@miniCartFeedPageId&feedType=MiniCart" data-init-onload="false"></div> 806 } 807 } 808 } 809 810 @helper LoginModal() 811 { 812 int pageId = Model.TopPage.ID; 813 string topLayout = Model.Area.Item.GetList("LayoutTop").SelectedValue; 814 int createAccountPageId = GetPageIdByNavigationTag("CreateAccount"); 815 int signInProfilePageId = GetPageIdByNavigationTag("SignInPage"); 816 string forgotPasswordPageId = signInProfilePageId.ToString() + "&LoginAction=Recovery"; 817 string userSignedInError = !Model.LogOnFailed ? "" : "checked"; 818 string userSignedInErrorText = ""; 819 var shopId = GetPageIdByNavigationTag("ProductsPage").ToString(); //GetGlobalValue("Global.PageId"); 820 821 if (Model.LogOnFailed) 822 { 823 switch (Model.LogOnFailedReason) 824 { 825 case Dynamicweb.Security.UserManagement.LogOnFailedReason.PasswordLengthInvalid: 826 userSignedInErrorText = Translate("Password length is invalid"); 827 break; 828 case Dynamicweb.Security.UserManagement.LogOnFailedReason.IncorrectLogin: 829 userSignedInErrorText = Translate("Invalid email or password"); 830 break; 831 case Dynamicweb.Security.UserManagement.LogOnFailedReason.ExceededFailedLogOnLimit: 832 userSignedInErrorText = Translate("You have exceeded the limit of allowed login attempts. The user account is temporarily locked"); 833 break; 834 case Dynamicweb.Security.UserManagement.LogOnFailedReason.LoginLocked: 835 userSignedInErrorText = Translate("The user account is temporarily locked"); 836 break; 837 case Dynamicweb.Security.UserManagement.LogOnFailedReason.PasswordExpired: 838 userSignedInErrorText = Translate("The password has expired and needs to be renewed"); 839 break; 840 default: 841 userSignedInErrorText = Translate("An unknown error occured"); 842 break; 843 } 844 } 845 else 846 { 847 if (Dynamicweb.Ecommerce.Common.Context.Cart == null) 848 { 849 Dynamicweb.Security.UserManagement.User curUser = Dynamicweb.Security.UserManagement.User.GetCurrentExtranetUser(); 850 string shop = ""; 851 if(shopId == "885") 852 { 853 shop = "SHOP7"; 854 } 855 else if(shopId == "765") 856 { 857 shop = "SHOP6"; 858 } 859 else if(shopId == "952") 860 { 861 shop = "SHOP8"; 862 } 863 else 864 { 865 shop = "SHOP1"; 866 } 867 868 if (curUser != null) 869 { 870 var sqlStatement = "select * from EcomOrders where OrderCustomerAccessUserUserName = '" + curUser.UserName + "' and OrderStateId IS NULL and OrderShopId = '" + shop + "';"; 871 foreach (Dynamicweb.Ecommerce.Orders.Order o in Dynamicweb.Ecommerce.Orders.Order.GetOrders(sqlStatement, false)) 872 { 873 Dynamicweb.Ecommerce.Common.Context.SetCart(o); 874 return; 875 } 876 877 //Oppretter ny kurv dersom det ikke eksisterer noen fra før, hvis ikke så velger den første eksisterende. 878 Dynamicweb.Ecommerce.Orders.Order order = null; 879 880 order = new Dynamicweb.Ecommerce.Orders.Order(); 881 order.IsCart = true; 882 order.LanguageId = Dynamicweb.Ecommerce.Common.Context.LanguageID; 883 order.ShopId = shop; 884 order.CustomerAccessUserId = curUser.ID; 885 order.CustomerAccessUserUserName = curUser.UserName; 886 order.CurrencyName = "NOK"; 887 order.CurrencyRate = 100; 888 order.CustomerCompany = curUser.Company; 889 order.CustomerName = curUser.Name; 890 order.CustomerPhone = curUser.Phone; 891 order.CustomerEmail = curUser.Email; 892 order.CustomerAddress = curUser.Address; 893 order.CustomerAddress2 = curUser.Address2; 894 order.CustomerZip = curUser.Zip; 895 order.CustomerCity = curUser.City; 896 order.CustomerCountry = curUser.Country; 897 order.HasSetUserDetails = true; 898 order.CheckoutPageId = 530; 899 order.OrderFieldValues.GetOrderFieldValue("PTSDelivery").Value = "Første fraktfrie"; 900 order.OrderFieldValues.GetOrderFieldValue("PTSComments").Value = "Standard handlekurv"; 901 902 Dynamicweb.Ecommerce.Common.Context.SetCart(order); 903 } 904 } 905 } 906 <!-- Trigger for the login modal --> 907 <input type="checkbox" id="SignInModalTrigger" class="modal-trigger @topLayout" @userSignedInError /> 908 909 <!-- Login modal --> 910 <div class="modal-container"> 911 <label for="SignInModalTrigger" id="SignInModalOverlay" class="modal-overlay"></label> 912 <div class="modal modal--xs" id="SignInModal"> 913 <div class="modal__header"> 914 <h2>@Translate("Sign in")</h2> 915 </div> 916 <div class="modal__body"> 917 <form method="post" id="LoginForm" class="u-no-margin"> 918 <input type="hidden" name="ID" value="@pageId" /> 919 <input type="hidden" name="DWExtranetUsernameRemember" value="True" /> 920 <input type="hidden" name="DWExtranetPasswordRemember" value="True" /> 921 <input type="text" class="u-full-width" id="LoginUsername" name="username" placeholder="@Translate("Email")" /> 922 <input type="password" class="u-full-width" id="LoginPassword" name="password" placeholder="@Translate("Password")" /> 923 <div class="field-error dw-mod">@userSignedInErrorText</div> 924 925 <label> 926 <input type="checkbox" id="RememberMe" name="Autologin" checked="checked" value="True"> 927 <span>@Translate("Remember me", "Remember me")</span> 928 </label> 929 930 <button type="submit" class="btn btn--primary btn--full dw-mod" name="LoginAction" value="Login" onclick="Buttons.LockButton(event)">@Translate("Sign in")</button> 931 932 <a class="btn btn--link-clean dw-mod" href="/Default.aspx?id=@forgotPasswordPageId">@Translate("Forgot your password?", "Forgot your password?")</a> 933 934 <a class="btn btn--link-clean dw-mod" href="/default.aspx?ID=@createAccountPageId">@Translate("Create account")?</a> 935 </form> 936 </div> 937 </div> 938 </div> 939 } 940 941 @helper RenderHeaderNavigation() 942 { 943 bool megaMenu = Model.Area.Item.GetList("NavigationMegaMenu").SelectedValue.ToLower() == "true" ? true : false; 944 string megamenuPromotionImage = Model.Area.Item.GetFile("NavigationMegamenuPromotionImage") != null ? Model.Area.Item.GetFile("NavigationMegamenuPromotionImage").Path : ""; 945 bool renderPagesInToolBar = Model.Area.Item.GetBoolean("RenderPagesInToolBar"); 946 int startLevel = renderPagesInToolBar ? 1 : 0; 947 948 if (Pageview.Device.ToString() != "Mobile" && Pageview.Device.ToString() != "Tablet") 949 { 950 if (!megaMenu) 951 { 952 @RenderNavigation(new 953 { 954 id = "topnavigation", 955 cssclass = "menu dw-mod dwnavigation", 956 startLevel = @startLevel, 957 ecomStartLevel = @startLevel + 1, 958 endlevel = 5, 959 expandmode = "all", 960 template = "BaseMenuWithDropdown.xslt" 961 }); 962 } 963 else 964 { 965 @RenderNavigation(new 966 { 967 id = "topnavigation", 968 cssclass = "menu dw-mod dwnavigation", 969 startLevel = @startLevel, 970 ecomStartLevel = @startLevel + 1, 971 endlevel = 5, 972 promotionImage = megamenuPromotionImage, 973 promotionLink = Model.Area.Item.GetString("NavigationMegamenuPromotionLink"), 974 expandmode = "all", 975 template = "BaseMegaMenu.xslt" 976 }); 977 } 978 } 979 } 980 981 @helper MobileNavigationTrigger() 982 { 983 @* Mobile navigation trigger *@ 984 985 if (Pageview.Device.ToString() == "Mobile" || Pageview.Device.ToString() == "Tablet") 986 { 987 <div class="menu dw-mod u-pull--left"> 988 <div class="menu__item menu__item--horizontal menu__item--top-level dw-mod"> 989 <label for="MobileNavTrigger" class="mobile-nav-trigger-button menu__link dw-mod"></label> 990 </div> 991 </div> 992 } 993 } 994 995 @helper RenderLanguageSelector(string type = "inNavigation") 996 { 997 string liClasses = type == "inNavigation" ? "menu__item menu__item--horizontal menu__item--top-level dw-mod u-hidden-xxs" : "menu__item menu__item--horizontal menu--clean u-w40px dw-mod"; 998 string menuLinkClass = type == "inNavigation" ? "menu__link" : "header-menu__link"; 999 1000 @* Language selector *@ 1001 if (Model.Languages.Count > 1) 1002 { 1003 <li class="@liClasses"> 1004 <div class="@menuLinkClass u-w40px is-dropdown is-dropdown--no-icon dw-mod"> 1005 <i class="fa fa-globe fa-1_5x"></i> 1006 <div class="menu menu--dropdown u-w100px dw-mod"> 1007 @foreach (var lang in Model.Languages) 1008 { 1009 <a href="/Default.aspx?ID=@lang.Page.ID&CurrencyCode=@Dynamicweb.Services.Areas.GetArea(lang.ID).EcomCurrencyId" class="menu-dropdown__item menu-dropdown__item--link dw-mod">@lang.Name</a> 1010 } 1011 </div> 1012 </div> 1013 </li> 1014 } 1015 } 1016 1017 @helper RenderMiniCart(string type = "inNavigation") 1018 { 1019 string liClasses = type == "inNavigation" ? "menu__item menu__item--horizontal menu__item--top-level dw-mod" : "menu__item menu__item--horizontal menu--clean dw-mod"; 1020 string menuLinkClass = type == "inNavigation" ? "menu__link" : "header-menu__link"; 1021 1022 int miniCartFeedPageId = GetPageIdByNavigationTag("MiniCartFeed"); 1023 int cartFeedPageId = GetPageIdByNavigationTag("CartOrderlinesFeed"); 1024 int cartPageId = GetPageIdByNavigationTag("CartPage"); 1025 double cartProductsCount = Model.Cart.TotalProductsCount; 1026 1027 @* Mini cart *@ 1028 <li class="@liClasses"> 1029 <div class="mini-cart dw-mod"> 1030 <a href="/Default.aspx?ID=@cartPageId&Purge=True" id="miniCartCounterWrap" class="@menuLinkClass dw-mod js-mini-cart-button" onmouseenter="Cart.UpdateMiniCart(event, 'miniCart', '/Default.aspx?ID=@miniCartFeedPageId&feedType=MiniCart')"> 1031 <i class="fa fa-shopping-cart fa-1_5x"></i> 1032 <div class="mini-cart__counter mini-cart__counter--inline dw-mod"> 1033 <div class="js-handlebars-root js-mini-cart-counter" id="cartCounter" data-template="MiniCartCounterContent" data-json-feed="/Default.aspx?ID=@miniCartFeedPageId&feedType=Counter" data-init-onload="false" data-preloader="false"> 1034 <div class="js-mini-cart-counter-content"> 1035 @cartProductsCount 1036 </div> 1037 </div> 1038 </div> 1039 </a> 1040 @if (Pageview.Device.ToString() != "Mobile" && Pageview.Device.ToString() != "Tablet") 1041 { 1042 <div class="mini-cart-dropdown js-handlebars-root js-mini-cart dw-mod" id="miniCart" data-template="MiniCartContent" data-cart-id="@miniCartFeedPageId" data-json-feed="/Default.aspx?ID=@miniCartFeedPageId&feedType=MiniCart" data-init-onload="false"></div> 1043 } 1044 </div> 1045 </li> 1046 } 1047 1048 @helper RenderSignIn(string type = "inNavigation", string userInitials = "") 1049 { 1050 string liClasses = type == "inNavigation" ? "menu__item menu__item--horizontal menu__item--top-level dw-mod u-hidden-xxs" : "menu__item menu__item--horizontal menu__item--clean u-w40px dw-mod"; 1051 string menuLinkClass = type == "inNavigation" ? "menu__link" : "header-menu__link"; 1052 1053 int pageId = Model.TopPage.ID; 1054 string myProfilePageId = (Model.CurrentUser.ID <= 0) ? GetPageIdByNavigationTag("SignInPage").ToString() + "&RedirectPageId=" + GetPageIdByNavigationTag("CustomerProfile").ToString() : GetPageIdByNavigationTag("CustomerProfile").ToString(); 1055 string myOrdersPageId = (Model.CurrentUser.ID <= 0) ? GetPageIdByNavigationTag("SignInPage").ToString() + "&RedirectPageId=" + GetPageIdByNavigationTag("CustomerOrders").ToString() : GetPageIdByNavigationTag("CustomerOrders").ToString(); 1056 int myDashboardPageId = GetPageIdByNavigationTag("CustomerDashboard"); 1057 string myFavoritesPageId = (Model.CurrentUser.ID <= 0) ? GetPageIdByNavigationTag("SignInPage").ToString() + "&RedirectPageId=" + GetPageIdByNavigationTag("CustomerFavorites").ToString() : GetPageIdByNavigationTag("CustomerFavorites").ToString(); 1058 string mySavedCardsPageId = (Model.CurrentUser.ID <= 0) ? GetPageIdByNavigationTag("SignInPage").ToString() + "&RedirectPageId=" + GetPageIdByNavigationTag("SavedCards").ToString() : GetPageIdByNavigationTag("SavedCards").ToString(); 1059 int createAccountPageId = GetPageIdByNavigationTag("CreateAccount"); 1060 int signInProfilePageId = GetPageIdByNavigationTag("SignInPage"); 1061 string forgotPasswordPageId = signInProfilePageId.ToString() + "&LoginAction=Recovery"; 1062 1063 bool showCreateAccountLink = Model.Area.Item.GetBoolean("ShowCreateAccountLink"); 1064 bool showMyProfileLink = Model.Area.Item.GetBoolean("ShowMyProfileLink"); 1065 bool showMyOrdersLink = Model.Area.Item.GetBoolean("ShowMyOrdersLink"); 1066 bool showMyFavoritesLink = Model.Area.Item.GetBoolean("ShowMyFavoritesLink"); 1067 bool showMySavedCardsLink = Model.Area.Item.GetBoolean("ShowMySavedCardsLink"); 1068 1069 @* Sign in + Customer center links *@ 1070 <li class="@liClasses"> 1071 <div class="@menuLinkClass is-dropdown is-dropdown--no-icon u-w40px dw-mod"> 1072 @if (Model.CurrentUser.ID <= 0) 1073 { 1074 <i class="fa fa-user fa-1_5x"></i> 1075 } 1076 else 1077 { 1078 <a href="/default.aspx?ID=@myDashboardPageId" class="u-color-inherit"><div class="circle-icon-btn">@userInitials.ToUpper()</div></a> 1079 } 1080 1081 <div class="menu menu--dropdown sign-in-dropdown dw-mod"> 1082 <ul class="list list--clean dw-mod"> 1083 @if (Model.CurrentUser.ID <= 0) 1084 { 1085 <li> 1086 <label for="SignInModalTrigger" class="btn btn--primary btn--full u-no-margin sign-in-modal-trigger-button dw-mod" onclick="setTimeout(function () { document.getElementById('LoginUsername').focus() }, 10)">@Translate("Sign in")</label> 1087 </li> 1088 if (showCreateAccountLink) 1089 { 1090 <li> 1091 <a href="/default.aspx?ID=@createAccountPageId" class="list__link dw-mod">@Translate("Create account")</a> 1092 </li> 1093 } 1094 <li> 1095 <a href="/default.aspx?ID=@forgotPasswordPageId" class="list__link dw-mod">@Translate("Forgot your password?")</a> 1096 </li> 1097 if (showMyProfileLink || showMyOrdersLink || showMyFavoritesLink || showMySavedCardsLink) 1098 { 1099 <li class="list__seperator dw-mod"></li> 1100 } 1101 } 1102 @if (showMyProfileLink) 1103 { 1104 <li> 1105 <a href="/default.aspx?ID=@myProfilePageId" class="list__link dw-mod"><i class="fa fa-user"></i> @Translate("My Profile")</a> 1106 </li> 1107 } 1108 @if (showMyOrdersLink) 1109 { 1110 <li> 1111 <a href="/default.aspx?ID=@myOrdersPageId" class="list__link dw-mod"><i class="fa fa-list"></i> @Translate("My Orders")</a> 1112 </li> 1113 } 1114 @if (showMyFavoritesLink) 1115 { 1116 <li> 1117 <a href="/default.aspx?ID=@myFavoritesPageId" class="list__link dw-mod"><i class="fa fa-star"></i> @Translate("My Favorites")</a> 1118 </li> 1119 } 1120 @if (showMySavedCardsLink) 1121 { 1122 <li> 1123 <a href="/default.aspx?ID=@mySavedCardsPageId" class="list__link dw-mod"><i class="fa fa-credit-card"></i> @Translate("My Saved cards")</a> 1124 </li> 1125 } 1126 @if (Model.CurrentUser.ID > 0) 1127 { 1128 if (showMyProfileLink || showMyOrdersLink || showMyFavoritesLink || showMySavedCardsLink) 1129 { 1130 <li class="list__seperator dw-mod"></li> 1131 } 1132 <li> 1133 <a href="/Admin/Public/ExtranetLogoff.aspx?ID=@pageId" class="list__link dw-mod">@Translate("Sign out")</a> 1134 </li> 1135 } 1136 </ul> 1137 </div> 1138 </div> 1139 </li> 1140 } 1141 1142 @helper RenderFavorites(string type = "inNavigation") 1143 { 1144 string liClasses = type == "inNavigation" ? "menu__item menu__item--horizontal menu__item--top-level dw-mod u-hidden-xxs" : "menu__item menu__item--horizontal menu--clean u-w40px dw-mod"; 1145 string menuLinkClass = type == "inNavigation" ? "menu__link" : "header-menu__link"; 1146 1147 string myFavoritesPageId = GetPageIdByNavigationTag("CustomerFavorites").ToString(); 1148 1149 @* Favorites *@ 1150 if (Model.CurrentUser.ID > 0) 1151 { 1152 <li class="@liClasses"> 1153 <a href="/Default.aspx?ID=@myFavoritesPageId" class="@menuLinkClass dw-mod"> 1154 <i class="fa fa-star fa-1_5x"></i> 1155 </a> 1156 </li> 1157 } 1158 } 1159 1160 1161 @helper RenderFooter() 1162 { 1163 string footerColumnOneContent = !string.IsNullOrEmpty(Model.Area.Item.GetString("FooterColumnOne")) ? Model.Area.Item.GetString("FooterColumnOne") : ""; 1164 string footerColumnTwoContent = !string.IsNullOrEmpty(Model.Area.Item.GetString("FooterColumnTwo")) ? Model.Area.Item.GetString("FooterColumnTwo") : ""; 1165 string footerColumnThreeContent = !string.IsNullOrEmpty(Model.Area.Item.GetString("FooterColumnThree")) ? Model.Area.Item.GetString("FooterColumnThree") : ""; 1166 string footerColumnOneHeader = Model.Area.Item.GetString("FooterColumnOneHeader"); 1167 string footerColumnTwoHeader = Model.Area.Item.GetString("FooterColumnTwoHeader"); 1168 string footerColumnThreeHeader = Model.Area.Item.GetString("FooterColumnThreeHeader"); 1169 int newsletterSignUpPageId = GetPageIdByNavigationTag("NewsletterSignUp"); 1170 1171 <!-- Footer section --> 1172 <footer class="footer dw-mod"> 1173 <div class="center-container top-container__center-container dw-mod"> 1174 <div class="grid"> 1175 @if (!string.IsNullOrEmpty(footerColumnOneContent) || !string.IsNullOrEmpty(footerColumnOneHeader)) 1176 { 1177 <div class="grid__col-md-auto"> 1178 <h4 class="footer__heading dw-mod">@footerColumnOneHeader</h4> 1179 <div class="footer__content dw-mod"> 1180 @footerColumnOneContent 1181 </div> 1182 </div> 1183 } 1184 @if (!string.IsNullOrEmpty(footerColumnTwoContent) || !string.IsNullOrEmpty(footerColumnTwoHeader)) 1185 { 1186 <div class="grid__col-md-auto"> 1187 <h4 class="footer__heading dw-mod">@footerColumnTwoHeader</h4> 1188 <div class="footer__content dw-mod"> 1189 @footerColumnTwoContent 1190 </div> 1191 </div> 1192 } 1193 @if (!string.IsNullOrEmpty(footerColumnThreeContent) || !string.IsNullOrEmpty(footerColumnThreeHeader)) 1194 { 1195 <div class="grid__col-md-auto"> 1196 <h4 class="footer__heading dw-mod">@footerColumnThreeHeader</h4> 1197 <div class="footer__content dw-mod"> 1198 @footerColumnThreeContent 1199 </div> 1200 </div> 1201 } @* 1202 @if (Model.Area.Item.GetBoolean("FooterNewsletterSignUp")) 1203 { 1204 <div class="grid__col-md-auto"> 1205 <h4 class="footer__heading dw-mod">@Translate("Mailing list", "Mailing list")</h4> 1206 <div class="footer__content dw-mod"> 1207 <p>@Translate("Sign up if you would like to receive occasional treats from us", "Sign up if you would like to receive occasional treats from us").</p> 1208 <form class="form dw-mod" name="NewsletterRedirect" action='/Default.aspx' method="get" enctype="multipart/form-data"> 1209 <input name="ID" id="ID" value="@newsletterSignUpPageId" type="hidden" /> 1210 <div class="form__field-combi"> 1211 <input name="NewsletterEmail" id="NewsletterEmail" type="text" placeholder='@Translate("Your email address", "Your email address")' /> 1212 <input class="btn btn--primary btn--condensed dw-mod" type="submit" id="Submitter" value='@Translate("Go", "Go")' /> 1213 </div> 1214 </form> 1215 </div> 1216 </div> 1217 }*@ 1218 @if (Model.Area.Item.GetItems("FooterSocialLinks").Count > 0) 1219 { 1220 <div class="grid--align-self-end"> 1221 <h4 class="footer__heading dw-mod">@Translate("Social links", "Social links")</h4> 1222 <div class="footer__content dw-mod"> 1223 <div class="collection dw-mod"> 1224 @foreach (var socialitem in Model.Area.Item.GetItems("FooterSocialLinks")) 1225 { 1226 //Fields.FirstOrDefault(x => x.SystemName == "Icon").GetString() 1227 var socialIcon = socialitem.GetValue("Icon") as Dynamicweb.Frontend.ListViewModel; 1228 string socialIconClass = socialIcon.SelectedValue; 1229 string socialIconTitle = socialIcon.SelectedName; 1230 string socialLink = socialitem.GetString("Link"); 1231 1232 <a href="@socialLink" target="_blank" title="@socialIconTitle"><i class="fa @socialIconClass fa-2x"></i></a> 1233 } 1234 </div> 1235 </div> 1236 </div> 1237 } 1238 <div class="grid__col-12 footer__copyright dw-mod"> 1239 <p>@Model.Area.Item.GetString("FooterCopyrightText")</p> 1240 </div> 1241 </div> 1242 </div> 1243 </footer> 1244 } 1245 1246 1247 @* Templates for Typeahead *@ 1248 <script id="SearchGroupsTemplate" type="text/x-template"> 1249 {{#.}} 1250 <li class="dropdown__item dw-mod" onclick="Search.UpdateGroupSelection(this)" data-group-id="{{id}}">{{name}}</li> 1251 {{/.}} 1252 </script> 1253 1254 <script id="SearchContentTemplate" type="text/x-template"> 1255 {{#each .}} 1256 {{#Product}} 1257 {{#ifCond template "!==" "SearchMore"}} 1258 <li class="dropdown__item dropdown__item--seperator dw-mod"> 1259 <div> 1260 <a href="{{link}}" class="js-typeahead-link u-color-inherit u-pull--left"> 1261 <div class="u-margin-right u-pull--left {{noimage}} u-hidden-xs u-hidden-xxs"><img src="/Admin/Public/GetImage.ashx?width=45&height=36&crop=5&FillCanvas=True&Compression=75&image={{image}}" alt="{{name}}"></div> 1262 <div class="u-pull--left"> 1263 <div class="u-bold u-max-w220px u-truncate-text js-typeahead-name">{{productId}}</div> 1264 <div class="u-bold u-max-w220px u-truncate-text js-typeahead-name">{{name}}</div> 1265 @if (!onlyPreview) 1266 { 1267 <div class="{{onlyPreview}}">{{price}}</div> 1268 } 1269 </div> 1270 </a> 1271 <div class="u-margin-left u-pull--right u-w80px u-hidden-xs u-hidden-xxs"> 1272 <button class="btn btn--primary btn--condensed btn--full u-no-margin dw-mod {{hideBuyOptions}} js-ignore-click-outside" onclick="Cart.AddToCart(event, '{{productId}}', '1')"><i class="fa fa-shopping-cart js-ignore-click-outside"></i></button> 1273 <a href="{{link}}" class="btn btn--secondary btn--condensed btn--full u-no-margin dw-mod {{hideViewMore}} js-ignore-click-outside">@Translate("View")</a> 1274 </div> 1275 </div> 1276 </li> 1277 {{/ifCond}} 1278 {{#ifCond template "===" "SearchMore"}} 1279 {{>SearchMore}} 1280 {{/ifCond}} 1281 {{/Product}} 1282 {{else}} 1283 <li class="dropdown__item dropdown__item--seperator dw-mod"> 1284 @Translate("No products found") 1285 </li> 1286 {{/each}} 1287 </script> 1288 1289 <script id="SearchMore" type="text/x-template"> 1290 <li class="dropdown__item dropdown__item--not-selectable dw-mod"> 1291 <a href="/Default.aspx?ID=@productsPageId&Search={{searchParameter}}&GroupID={{groupId}}" class="btn btn--primary btn--full u-no-margin dw-mod js-typeahead-link"> 1292 @Translate("View all") 1293 </a> 1294 </li> 1295 </script> 1296 1297 @* Templates for the mini cart *@ 1298 <script id="MiniCartCounterContent" type="text/x-template"> 1299 {{#.}} 1300 <div class="js-mini-cart-counter-content dw-mod"> 1301 {{numberofproducts}} 1302 </div> 1303 {{/.}} 1304 </script> 1305 <script id="MiniCartContent" type="text/x-template"> 1306 {{#.}} 1307 <div class="mini-cart-dropdown__inner {{isempty}} dw-mod"> 1308 <h4 class="u-ta-center u-no-margin u-margin-bottom u-margin-top">@Translate("Shopping cart")</h4> 1309 @{ 1310 if (Dynamicweb.Ecommerce.Common.Context.Cart != null) 1311 { 1312 <div class="handlekurvmini">@String.Format("Levering: {0}<br />{2:dd.MM.yy} {1}", Translate(Dynamicweb.Ecommerce.Common.Context.Cart.OrderFieldValues.GetOrderFieldValue("PTSDelivery").Value.ToString(), Dynamicweb.Ecommerce.Common.Context.Cart.OrderFieldValues.GetOrderFieldValue("PTSDelivery").Value.ToString()), Dynamicweb.Ecommerce.Common.Context.Cart.OrderFieldValues.GetOrderFieldValue("PTSComments").Value, "")</div> 1313 } 1314 } 1315 1316 1317 @*DateTime.Parse(Dynamicweb.Ecommerce.Common.Context.Cart.OrderFieldValues.GetOrderFieldValue("PTSDeliveryDate").Value.ToString()).Year > 1970 ? Dynamicweb.Ecommerce.Common.Context.Cart.OrderFieldValues.GetOrderFieldValue("PTSDeliveryDate").Value : ""*@ 1318 <div class="mini-cart-dropdown__body dw-mod"> 1319 <table class="table mini-cart-table dw-mod"> 1320 <thead> 1321 <tr> 1322 <td>&nbsp;</td> 1323 <td>@Translate("Product")</td> 1324 <td class="u-ta-right">@Translate("Qty")</td> 1325 <td class="u-ta-right" width="120">@Translate("Price")</td> 1326 </tr> 1327 </thead> 1328 1329 {{#OrderLines}} 1330 {{#ifCond template "===" "CartOrderline"}} 1331 {{>MiniCartOrderline}} 1332 {{/ifCond}} 1333 {{#ifCond template "===" "CartOrderlineMobile"}} 1334 {{>MiniCartOrderlineMobile}} 1335 {{/ifCond}} 1336 {{#ifCond template "===" "CartOrderlineDiscount"}} 1337 {{>MiniCartOrderlineDiscount}} 1338 {{/ifCond}} 1339 {{/OrderLines}} 1340 @* 1341 <tr> 1342 <td><i class="fa fa-credit-card"></i></td> 1343 <td>{{paymentmethod}}</td> 1344 <td colspan="2" class="u-ta-right" width="130">{{paymentfee}}</td> 1345 </tr> 1346 <tr> 1347 <td><i class="fa fa-truck"></i></td> 1348 <td>{{shippingmethod}}</td) 1349 <td colspan="2" class="u-ta-right" width="130">{{shippingfee}}</td> 1350 </tr> 1351 *@ 1352 <tr class="mini-cart-totals dw-mod"> 1353 <td colspan="2">@Translate("Total")</td> 1354 <td class="u-ta-right">{{numberofproducts}}</td> 1355 <td class="u-ta-right" width="130">{{totalprice}}</td> 1356 </tr> 1357 </table> 1358 </div> 1359 1360 <table class="table mini-cart-table dw-mod"> 1361 <tr class="mini-cart-orderlines__footer dw-mod"> 1362 @*<td colspan="2"><button type="button" class="btn btn--secondary u-pull--left u-no-margin dw-mod btn--sm" onclick="Cart.EmptyCart(event)">@Translate("Empty cart")</button></td>*@ 1363 <td colspan="2"><button type="button" class="btn btn--secondary u-pull--left u-no-margin dw-mod btn--sm" onclick="PTSEmptyCart(event)">@Translate("Empty cart")</button></td> 1364 <td colspan="2" class="u-ta-right"><a href="/Default.aspx?ID=@cartPageId" class="btn btn--primary u-pull--right u-no-margin dw-mod btn--sm">@Translate("Proceed to checkout")</a></td> 1365 </tr> 1366 </table> 1367 </div> 1368 {{/.}} 1369 </script> 1370 1371 <script id="MiniCartOrderline" type="text/x-template"> 1372 <tr class="{{isempty}}"> 1373 <td><a href="{{link}}" class="{{hideimage}}"><img src="/Admin/Public/GetImage.ashx?width=50&height=50&crop=5&Compression=75&image={{image}}" alt="{{name}}"></a></td> 1374 <td> 1375 <a href="{{link}}" class="mini-cart-orderlines__name" title="{{productnumber}}">{{productnumber}}</a> 1376 <a href="{{link}}" class="mini-cart-orderlines__name item-number">{{variantname}}</a> 1377 <div class="item-number">{{unitname}}</div> 1378 </td> 1379 <td class="u-ta-right">{{quantity}}</td> 1380 <td class="u-ta-right">{{totalprice}}</td> 1381 </tr> 1382 </script> 1383 1384 <script id="MiniCartOrderlineMobile" type="text/x-template"> 1385 <tr class="{{isempty}}"> 1386 <td><a href="{{link}}" class="{{hideimage}}"><img src="/Admin/Public/GetImage.ashx?width=50&height=50&crop=5&Compression=75&image={{image}}" alt="{{name}}"></a></td> 1387 <td> 1388 <a href="{{link}}" class="mini-cart-orderlines__name">{{name}}</a> 1389 <a href="{{link}}" class="mini-cart-orderlines__name item-number">{{variantname}}</a> 1390 <div class="item-number">{{unitname}}</div> 1391 </td> 1392 <td class="u-ta-right">{{quantity}}</td> 1393 <td class="u-ta-right">{{totalprice}}</td> 1394 </tr> 1395 </script> 1396 1397 <script id="MiniCartOrderlineDiscount" type="text/x-template"> 1398 <tr class="table__row--no-border {{isempty}}"> 1399 <td>&nbsp;</td> 1400 <td><div class="mini-cart-orderlines__name dw-mod">{{name}}</div></td> 1401 <td class="u-ta-right">&nbsp;</td> 1402 <td class="u-ta-right">{{totalprice}}</td> 1403 </tr> 1404 </script> 1405 1406 <!-- Javascript --> 1407 <script src="/Files/Templates/Designs/Rapido/js/handlebars-v4.0.11.js"></script> 1408 <script src="/Files/Templates/Designs/Rapido/js/master.min.js"></script> 1409 1410 @if (Model.Area.Item.GetBoolean("UseCustomJavascript")) 1411 { 1412 <script src="/Files/Templates/Designs/Rapido/js/custom.min.js"></script> 1413 } 1414 1415 <script> 1416 Wireframe.Init(@wireframeMode.ToLower()); 1417 </script> 1418 </body> 1419 </html> 1420 1421