Error executing template "Designs/Junget/_parsed/PageBrand2024.parsed.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_f51f041b69d14677800ac22c036fc1f1.Execute() in D:\Web\Junget\Website\Files\Templates\Designs\Junget\_parsed\PageBrand2024.parsed.cshtml:line 1388
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @{ 2 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 3 Layout = null; 4 string cultureName = GetGlobalValue("Global:Area.Culture.Name").Split('-')[0]; 5 6 List<int> myJungetPageList = new List<int>(); 7 8 myJungetPageList.Add(GetPageIdByNavigationTag("MyJungetPage")); 9 myJungetPageList.Add(GetPageIdByNavigationTag("MyJungetReorderPage")); 10 myJungetPageList.Add(GetPageIdByNavigationTag("MyJungetFavoritePage")); 11 myJungetPageList.Add(GetPageIdByNavigationTag("MyJungetOrderPage")); 12 myJungetPageList.Add(GetPageIdByNavigationTag("MyJungetDocumentPage")); 13 myJungetPageList.Add(GetPageIdByNavigationTag("MyJungetProfilePage")); 14 15 Dynamicweb.Security.UserManagement.User MainUserMain = Pageview.User?.CurrentSecondaryUser != null ? Pageview.User.CurrentSecondaryUser : Pageview.User; 16 17 string device = System.Web.HttpContext.Current.Request.UserAgent.Contains("iPhone;") ? "iphone" : "generic"; 18 Dynamicweb.Content.PageService pageService = new Dynamicweb.Content.PageService(); 19 bool isHome = Pageview.Page.ID.Equals(pageService.GetFirstActivePageForArea(Pageview.AreaID).ID); 20 21 int cartPageIDJs = GetPageIdByNavigationTag("cartpageid"); 22 int miniCartPageIDJs = GetPageIdByNavigationTag("minicartpageid"); 23 } 24 25 <!doctype html> 26 <html lang="@cultureName" class="no-js" data-device="@(device)" data-cartpage-id="@cartPageIDJs" data-minicartpage-id="@miniCartPageIDJs"> 27 <head> 28 29 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> 30 <meta name="robots" content="noindex,nofollow"> 31 32 <!-- Hreflang stuff--> 33 @{ 34 35 if (Pageview.Page.Item != null) 36 { 37 string productId = ""; 38 string productVariantId = ""; 39 bool isProductPage = false; 40 41 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["ProductId"])) 42 { 43 productId = Dynamicweb.Context.Current.Request.QueryString["ProductId"]; 44 isProductPage = true; 45 46 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["variantid"])) 47 { 48 productVariantId = Dynamicweb.Context.Current.Request.QueryString["variantid"]; 49 } 50 } 51 52 string groupId = ""; 53 54 if (Pageview.Page.Item["ShopCategoryNumber"] != null) 55 { 56 groupId = Pageview.Page.Item["ShopCategoryNumber"].ToString(); 57 } 58 59 if (!string.IsNullOrEmpty(groupId)) 60 { 61 62 var areas = new AreaService().GetAreas(); 63 64 foreach (Dynamicweb.Content.Area area in areas) 65 { 66 67 if (area.Active == true && area.ID != 7) 68 { 69 70 if (isProductPage) 71 { 72 var product = new Dynamicweb.Ecommerce.Products.ProductService().GetProductById(productId, productVariantId, area.EcomLanguageId); 73 74 if (product != null && product.Active == false) 75 { 76 continue; 77 } 78 else if (product != null && Dynamicweb.Core.Converter.ToBoolean(product.GetProductFieldValue("WebshopOK")) == false) 79 { 80 continue; 81 } 82 else if (product == null) 83 { 84 continue; 85 } 86 87 } 88 89 List<string> itemTypes = new List<string> { "PageShopList" }; 90 var pages = new Dynamicweb.Content.PageService().GetPagesForItems(itemTypes); 91 var _pages = pages.Where(p => p.AreaId != 7 && p.Active && p.AreaId == area.ID && p.AreaId != Pageview.AreaID && p.Item["ShopCategoryNumber"] != null && p.Item["ShopCategoryNumber"].ToString() == groupId).ToList(); 92 93 foreach (var page in _pages) 94 { 95 96 string initialUrl = "Default.aspx?ID=" + page.ID; 97 if (!string.IsNullOrEmpty(productId)) 98 { 99 initialUrl += "&ProductId=" + productId; 100 101 if (!string.IsNullOrEmpty(productVariantId)) 102 { 103 initialUrl += "&variantid=" + productVariantId; 104 } 105 } 106 107 string friendlyUrl = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(initialUrl, area.EcomLanguageId); 108 string fullUrl = "https://www.junget.com" + friendlyUrl; 109 string hrefLang = area.CultureInfo.Name.ToLower(); 110 111 <link rel="alternate" href="@fullUrl" hreflang=" @hrefLang"> 112 113 } 114 115 } 116 117 } 118 } 119 } 120 121 } 122 123 124 <!-- Preconnects --> 125 <link rel="preconnect" href="//fonts.googleapis.com"> 126 <link rel="preconnect" href="//ajax.googleapis.com"> 127 <link rel="preconnect" href="//www.googletagmanager.com"> 128 <link rel="preconnect" href="//www.google-analytics.com"> 129 <link rel="preconnect" href="//connect.facebook.net"> 130 <link rel="preconnect" href="//code.jquery.com"> 131 <link rel="preconnect" href="//sleeknotecustomerscripts.sleeknote.com"> 132 <link rel="preconnect" href="//script.hotjar.com"> 133 <link rel="preconnect" href="//googleads.g.doubleclick.net"> 134 <link rel="preconnect" href="//static.hotjar.com"> 135 <link rel="preconnect" href="//cdn.jsdelivr.net"> 136 <link rel="preconnect" href="//cdnjs.cloudflare.com"> 137 138 <!-- DNS Prefetches --> 139 <link rel="dns-prefetch" href="//fonts.googleapis.com"> 140 <link rel="dns-prefetch" href="//ajax.googleapis.com"> 141 <link rel="dns-prefetch" href="//www.googletagmanager.com"> 142 <link rel="dns-prefetch" href="//www.google-analytics.com"> 143 <link rel="dns-prefetch" href="//connect.facebook.net"> 144 <link rel="dns-prefetch" href="//code.jquery.com"> 145 <link rel="dns-prefetch" href="//sleeknotecustomerscripts.sleeknote.com"> 146 <link rel="dns-prefetch" href="//script.hotjar.com"> 147 <link rel="dns-prefetch" href="//googleads.g.doubleclick.net"> 148 <link rel="dns-prefetch" href="//static.hotjar.com"> 149 <link rel="dns-prefetch" href="//cdn.jsdelivr.net"> 150 <link rel="dns-prefetch" href="//cdnjs.cloudflare.com"> 151 152 @using Dynamicweb.Environment 153 @using Dynamicweb.Frontend 154 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 155 @{ 156 string shareTitle = !string.IsNullOrEmpty(GetString("Item.Page.ShareTitle")) ? GetString("Item.Page.ShareTitle") : GetString("Title"); 157 string shareDescription = !string.IsNullOrEmpty(GetString("Item.Page.ShareDescription")) ? GetString("Item.Page.ShareDescription") : GetString("Title"); 158 string shareImageFallback = GetString("Item.Area.ShareImageFallback"); 159 string shareImage = !string.IsNullOrEmpty(GetString("Item.Page.ShareImage")) ? GetString("Item.Page.ShareImage") : shareImageFallback; 160 string siteName = GetString("DwAreaName"); 161 string host = GetGlobalValue("Global:Request.Host"); 162 string url = GetGlobalValue("Global:Pageview.Url"); 163 string hrefLangDK = GetString("Item.HrefLangDanish"); 164 string hrefLangSE = GetString("Item.HrefLangSwedish"); 165 string hrefLangEN = GetString("Item.HrefLangEnglish"); 166 } 167 168 <meta charset="utf-8"> 169 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 170 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=0"> 171 <meta name="google-site-verification" content="n77-ytr_RM6UV48q1F5VCP11YF5MdlnKwq5lh_oFDZ8"> 172 <meta name="google-site-verification" content="94f3Qz-mWmNW0pSEEsreruBZn9CP_kqRfHCjeQXou_M"> 173 <meta name="google-site-verification" content="eufOyeWZ1auXem3wqbJ1DfrZi6TWscGyACljlE9DSAQ"> 174 <link rel="icon" type="image/x-icon" href="/webroot/images/favicon.ico"> 175 176 @* Disable robots/indexing for nozebrahosting domains *@ 177 @if (host.Contains("nozebrahosting") || host.Contains("staging")) 178 { 179 <meta name="robots" content="noindex, nofollow"> 180 } 181 182 @* Open Graph Tags (Facebook, Instagram and other services using OG) *@ 183 <meta property="og:title" content="@shareTitle"> 184 <meta property="og:site_name" content="@siteName"> 185 <meta property="og:url" content="https://@host@url"> 186 <meta property="og:description" content="@shareDescription"> 187 @if (!string.IsNullOrEmpty(shareImage)) 188 { 189 <meta property="og:image" content="http://@host@shareImage"> 190 } 191 <meta property="og:type" content="website"> 192 @if (!string.IsNullOrWhiteSpace(hrefLangDK)) 193 { 194 <link rel="alternate" hreflang="da-dk" href="@hrefLangDK"> 195 } 196 @if (!string.IsNullOrWhiteSpace(hrefLangSE)) 197 { 198 <link rel="alternate" hreflang="sv-se" href="@hrefLangSE"> 199 } 200 @if (!string.IsNullOrWhiteSpace(hrefLangEN)) 201 { 202 <link rel="alternate" hreflang="en" href="@hrefLangEN"> 203 } 204 205 @{ 206 IRequest request = Dynamicweb.Context.Current.Request; 207 string[] allKeys = request.QueryString.AllKeys; 208 bool isProductView = !string.IsNullOrEmpty(request.GetString("ProductId")); 209 PageView pageview = PageView.Current(); 210 string[] itemList = { "PageShopList", "PageProduct" }; 211 // Render canonical snippet from product view 212 if (isProductView) 213 { 214 @RenderSnippet("canonical") 215 } 216 // Render canonical explicit if url contains "LoginAction" param (hotfix) 217 else if (allKeys.Length > 1 && (pageview.Item == null || pageview.Item != null && !itemList.Contains(pageview.Item.SystemName) || pageview.Page.Level <= 3)) 218 { 219 <link rel="canonical" href="https://@host@url"> 220 } 221 } 222 223 @* NOTE: DW will insert system meta tags etc after the title tag *@ 224 @* The title tag will also be replaced with the system value *@ 225 @{ 226 227 string title = GetString("Title"); 228 //check for PageNum query parameter, if greater than 1, add page number to title 229 if ( Dynamicweb.Context.Current.Request.QueryString["PageNum"] != null && Dynamicweb.Context.Current.Request.QueryString["PageNum"] != "1") 230 { 231 title = title + " - " + Translate("side") + " " + Dynamicweb.Context.Current.Request.QueryString["PageNum"]; 232 } 233 this.Model.Template.SetTag("Title",title); 234 } 235 236 <title>@GetValue("Title")</title> 237 @GetValue("MetaTags") 238 @GetValue("CopyRightNotice") 239 240 241 @*<script src="https://use.fontawesome.com/92fdb7cbaa.js"></script>*@ 242 <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous"> 243 244 @{ 245 var masterStyles = VestjyskMarketing.Helpers.Utilities.CacheBuster("/webroot/dist/main.css"); 246 } 247 <!-- Project styles --> 248 <link href="@masterStyles" rel="stylesheet"> 249 <link href="/webroot/css-static/print.css" rel="stylesheet" media="print"> 250 <link href="/webroot/css-static/swiper-bundle.css" rel="stylesheet"> 251 <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css"> 252 <script> 253 window.dataLayer = window.dataLayer || []; 254 function gtag() { dataLayer.push(arguments); } 255 // Set default consent to 'denied' as a placeholder 256 // Determine actual values based on customer's own requirements 257 gtag('consent', 'default', { 258 'ad_storage': 'denied', 259 'ad_user_data': 'denied', 260 'ad_personalization': 'denied', 261 'analytics_storage': 'denied', 262 'wait_for_update': 500 263 }); 264 gtag('set', 'ads_data_redaction', true); 265 </script> 266 267 268 <script id="CookieConsent" src="https://policy.app.cookieinformation.com/uc.js" data-culture="@cultureName.ToUpper()" data-gcm-version="2.0" type="text/javascript"></script> 269 270 <!--[if lt IE 9]> 271 <script src="/webroot/js-static/html5shiv.min.js"></script> 272 <![endif]--> 273 <!-- Avoiding the FOUC v3.0 (.no-js => .js) --> 274 <script>(function (H) { H.className = H.className.replace(/\bno-js\b/, 'js') })(document.documentElement)</script> 275 276 <!-- Polyfill modern images --> 277 <script> 278 // Picture element HTML5 shiv 279 document.createElement("picture"); 280 </script> 281 <script src="/webroot/js-static/picturefill.min.js" async=""></script> 282 @Pageview.Area.Item["HeaderScripts"] 283 @GetValue("Stylesheets") 284 @GetValue("Javascripts") 285 </head> 286 287 288 289 <body class='@(MainUserMain != null ? "signed-in" : "") @(MainUserMain != null && MainUserMain.HasGroup(24) ? "salesman " : string.Empty)@(isHome ? "home" : string.Empty )' data-device="@(device)"> 290 <span class="splash-screen">&nbsp;</span> 291 @* Inserting scripts from language node *@ 292 @Pageview.Area.Item["Scripts"] 293 <!--[if lte IE 9]> 294 <div class="alert alert-warning mb-0" role="alert"> 295 <table> 296 <tbody> 297 <tr> 298 <td class="align-middle"> 299 <span class="display-4 icon icon-alert"></span> 300 </td> 301 <td class="align-middle lead pl-4">@Pageview.Area.Item["BrowseHappyText"]</td> 302 </tr> 303 </tbody> 304 </table> 305 </div> 306 <![endif]--> 307 308 <div class="page-container bg-lighter-gray"> 309 @using Dynamicweb.Security.UserManagement 310 @using System.Web; 311 @using Dynamicweb.Frontend.Navigation 312 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 313 @{ 314 string searchPage = Pageview.Area.Item["SearchPage"].ToString(); 315 string sharpeningLink = Pageview.Area.Item["HeaderSharpeningLink"] != null ? Pageview.Area.Item["HeaderSharpeningLink"].ToString() : ""; 316 string serviceLink = Pageview.Area.Item["ServiceLink"] != null ? Pageview.Area.Item["ServiceLink"].ToString() : ""; 317 string minicartLink = Pageview.Area.Item["MinicartLink"] != null ? Pageview.Area.Item["MinicartLink"].ToString() : ""; 318 string mycartLink = GetString("Item.Area.MycartLink"); 319 string salesmanCartLink = GetString("Item.Area.SalesmanCart"); 320 string loginLink = Pageview.Area.Item["LoginLink"] != null ? Pageview.Area.Item["LoginLink"].ToString() : ""; 321 string pageId = GetGlobalValue("Global:Page.ID"); 322 string cartQty = GetString("Ecom:Order.OrderLines.TotalProductQuantity"); 323 string rootCultureName = GetGlobalValue("Global:Area.Culture.Name"); 324 string linkMainRoot = Pageview.AreaID == 1 ? "/" : rootCultureName; 325 User mainUserHeader = Pageview.User?.CurrentSecondaryUser != null ? Pageview.User.CurrentSecondaryUser : Pageview.User; 326 User secondaryUserHeader = Pageview.User?.CurrentSecondaryUser != null ? Pageview.User : null; 327 string myProfilePageUrl = string.Format("/Default.aspx?ID={0}", GetPageIdByNavigationTag("MyJungetPage")); 328 bool showCartCounter = true; 329 if (mainUserHeader != null && mainUserHeader.HasGroup(24)) 330 { 331 minicartLink = Pageview.Area.Item["SalesmanMiniCart"] != null ? Pageview.Area.Item["SalesmanMiniCart"].ToString() : ""; 332 showCartCounter = false; 333 } 334 335 int myPageFormId = GetPageIdByNavigationTag("MyJungetPage"); 336 337 string userName = ""; 338 if (Pageview.User != null) 339 { 340 if (Pageview.User.CurrentSecondaryUser != null) 341 { 342 userName = Pageview.User.CurrentSecondaryUser.Name; 343 } 344 else if (Pageview.User != null) 345 { 346 userName = Pageview.User.Name; 347 } 348 349 350 //hack for EUR on Danish. SIte. Go to english basket 351 if (Pageview.User.Currency == "EUR" && Pageview.AreaID == 1) 352 { 353 var areaEnglish = Dynamicweb.Content.AreaService.Repository.GetArea(7); 354 mycartLink = areaEnglish.Item["MycartLink"].ToString(); 355 } 356 357 } 358 359 string linkMyPage = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl("Default.aspx?ID=" + myPageFormId); 360 } 361 362 <header class="header fixed-top js-scroll-header js-header"> 363 @using Dynamicweb.Security.UserManagement 364 @using System.Web; 365 @using Dynamicweb.Frontend.Navigation 366 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 367 368 @{ 369 string globalMessage = GetString("Item.Area.GlobalMessage"); 370 bool globalMessageActive = GetBoolean("Item.Area.GlobalMessageActive"); 371 string globalMessageMD5 = Website.Helpers.EncryptionHelper.CreateMD5(globalMessage).ToString(); 372 373 } 374 375 @if (!string.IsNullOrEmpty(globalMessage) && globalMessageActive) 376 { 377 <div id="generalMessage" class="header-message" role="alert" style="display: none;"> 378 <input id="headerMessageMD5" type="hidden" value="@globalMessageMD5"> 379 @globalMessage 380 <a class="header-message-close" onclick="App.HeaderMessage.closeMessage()"><i class="icon icon-close"></i></a> 381 </div> 382 } 383 384 <div class="header__content bg-light-gray"> 385 <div class="container-fluid"> 386 <nav class="navbar navbar-expand-md navbar-toggleable"> 387 <div class="navigation__tool navbar-collapse collapse"> 388 <div> 389 <a class="header__logo-link" href="@linkMainRoot"> 390 <img src="/webroot/images/junget-logo-2024.svg" width="200" height="100%" class="header__logo" alt="Junget logo"> 391 </a> 392 </div> 393 <div class="dropdown ml-auto"> 394 <button class="btn btn-link dropdown-toggle p-0" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><img src="/webroot/images/@(rootCultureName).svg" width="28" height="20" alt="Junget"></button> 395 <div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> 396 <a class="dropdown-item" href="/"><img width="28" height="20" src="/webroot/images/da-dk.svg" alt="Junget - Dansk"></a> 397 <a class="dropdown-item" href="/en-gb"><img width="28" height="20" src="/webroot/images/en-gb.svg" alt="Junget - English"></a> 398 <a class="dropdown-item" href="/nb-no"><img width="28" height="20" src="/webroot/images/nb-NO.svg" alt="Junget - Norsk"></a> 399 </div> 400 </div> 401 <ul class="navbar-nav"> 402 @if (!string.IsNullOrWhiteSpace(sharpeningLink)) 403 { 404 <li class="nav-item"> 405 <button type="button" class="btn-primary btn btn-sm js-aside-btn ml-3" data-view="sharpening">@Translate("HeaderSharpeningButton", "BESTIL SLIBEAFHENTNING")</button> 406 </li> 407 } 408 <li class="nav-item"> 409 @{ 410 // If user is an ordinary user and not an account manager 411 if (Pageview.User != null) 412 { 413 414 if (pageId == "1") 415 { 416 pageId = "/"; 417 } 418 419 <a class="btn btn-primary btn-sm ml-3" href="@(myProfilePageUrl)">@Translate("HeaderProfileButton", "MIT JUNGET")</a> 420 <a class="btn btn-secondary btn-sm ml-2" href="/Admin/Public/ExtranetLogoff.aspx?ID=@pageId">@Translate("HeaderLogoutButton", "LOG UD")</a> 421 } 422 else 423 { 424 <button type="button" class="btn btn-secondary btn-sm js-aside-btn ml-3" data-view="login">@Translate("HeaderLoginButton", "LOGIN")</button> 425 } 426 } 427 </li> 428 <li class="nav-item"> 429 <button type="button" class="btn btn-secondary btn-sm js-aside-btn ml-3" data-view="contacts">@Translate("HeaderContactButton", "KONTAKT")</button> 430 </li> 431 </ul> 432 </div> 433 </nav> 434 </div> 435 436 <!-- Desktop menu --> 437 <nav class="navbar navbar--bottom navbar-toggleable pt-3"> 438 <div class="container-fluid d-flex justify-content-between align-items-end flex-row"> 439 <a class="header__logo-link d-lg-none" href="@linkMainRoot"> 440 <img src="/webroot/images/junget-logo-2024.svg" class="header__logo" alt="Junget logo"> 441 </a> 442 <ul class="navbar-nav navbar-nav--desktop justify-content-end align-items-center primary-nav flex-row"> 443 @{ 444 var navigationSettings = new NavigationSettings() 445 { 446 StartLevel = 1, 447 StopLevel = 3, 448 ExpandMode = ExpandMode.All 449 }; 450 var navigationTemplate = "../Navigation/Header.cshtml"; 451 } 452 453 @Navigation.RenderNavigation(navigationTemplate, navigationSettings) 454 455 <li class="nav-item ml-4"> 456 <a class="d-inline-flex nav-item__link nav-item__link--search js-aside-btn p-0" href="#" data-view="search"><span class="icon icon-search mr-3"></span>@Translate("HeaderSearch", "SØG")</a> 457 </li> 458 <li class="nav-item"> 459 @if (showCartCounter) 460 { 461 <div class='nav-item__quantity js-product-cart-quantity @(!string.IsNullOrWhiteSpace(cartQty) ? "" : "is-empty" )'>@cartQty</div> 462 } 463 <a class="d-inline-flex nav-item__link nav-item__link--cart js-aside-btn p-0" href="#" data-view="cart"><span class="icon icon-cart"></span></a> 464 </li> 465 466 467 </ul> 468 469 <!-- Tablet/Mobile menu --> 470 <ul class="navbar-nav navbar-nav--mobile justify-content-center align-items-center flex-row"> 471 <li class="nav-item"> 472 <a class="d-inline-flex nav-item__link nav-item__link--home p-0" href="@linkMainRoot"><div class="btn btn-icon btn-icon--round btn-primary"><span class="icon icon-home-lg-alt"></span></div></a> 473 </li> 474 <li class="nav-item"> 475 <a class="d-inline-flex nav-item__link nav-item__link--search js-aside-btn p-0" href="#" data-view="search"><div class="btn btn-icon btn-icon--round btn-primary"><span class="icon icon-search"></span></div></a> 476 </li> 477 <li class="nav-item"> 478 <a class="d-inline-flex nav-item__link nav-item__link--phone-alt js-aside-btn p-0" href="#" data-view="phone" data-phone='@(Translate("tel:+45 89 36 55 00"))'><div class="btn btn-icon btn-icon--round btn-primary"><span class="icon icon-phone-alt"></span></div></a> 479 </li> 480 @if (string.IsNullOrWhiteSpace(GetGlobalValue("Global:Extranet.Email"))) 481 { 482 <li class="nav-item"> 483 <a class="d-inline-flex nav-item__link nav-item__link--search js-aside-btn p-0" href="#" data-view="login"> 484 <div class="btn btn-icon btn-icon--round btn-primary"> 485 @*<span class="icon icon-lock"></span>*@ 486 <span class="icon icon-user"></span> 487 </div> 488 </a> 489 </li> 490 } 491 else 492 { 493 <li class="nav-item"> 494 <a class="d-inline-flex nav-item__link nav-item__link--search p-0" href="@(myProfilePageUrl)"> 495 <div class="btn btn-icon btn-icon--round btn-primary"> 496 @*<span class="icon icon-lock-open"></span>*@ 497 <span class="icon icon-user"></span> 498 </div> 499 </a> 500 @* 501 <a class="d-inline-flex nav-item__link nav-item__link--search p-0" href="/Admin/Public/ExtranetLogoff.aspx?ID=@pageId"> 502 <div class="btn btn-icon btn-icon--round btn-primary"> 503 <span class="icon icon-lock-open"></span> 504 <span class="icon icon-user"></span> 505 </div> 506 </a> 507 *@ 508 </li> 509 } 510 @* 511 <li class="nav-item"> 512 <a class="d-inline-flex nav-item__link nav-item__link--cart js-aside-btn p-0" href="#" data-view="contacts"><div class="btn btn-icon btn-icon--round btn-primary"><span class="icon icon-user"></span></div></a> 513 </li> 514 *@ 515 <li class="nav-item"> 516 @if (showCartCounter) 517 { 518 <div class='nav-item__quantity js-product-cart-quantity @(!string.IsNullOrWhiteSpace(cartQty) ? "" : "is-empty" )'>@cartQty</div> 519 } 520 <a class="d-inline-flex nav-item__link nav-item__link--cart js-aside-btn p-0" href="#" data-view="cart"><span class="icon icon-cart"></span></a> 521 </li> 522 </ul> 523 </div> 524 </nav> 525 </div> 526 527 @if (mainUserHeader != null && mainUserHeader.HasGroup(24) && myJungetPageList.Contains(Pageview.ID)) 528 { 529 <div class="curve curve-secondary d-none d-md-block"> 530 <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%" viewbox="0 0 1440 40" preserveaspectratio="none"> 531 <path d="M0,0v2c213.3,25.3,453.3,38,720,38s506.7-12.7,720-38V0H0z"></path> 532 <path d="M0,0h1440v40H0V0z M0,0v2c213.3,25.3,453.3,38,720,38s506.7-12.7,720-38V0H0z"></path> 533 </svg> 534 </div> 535 <div class="curve curve-light-gray d-block d-md-none"> 536 <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%" viewbox="0 0 1440 40" preserveaspectratio="none"> 537 <path d="M0,0v2c213.3,25.3,453.3,38,720,38s506.7-12.7,720-38V0H0z"></path> 538 <path d="M0,0h1440v40H0V0z M0,0v2c213.3,25.3,453.3,38,720,38s506.7-12.7,720-38V0H0z"></path> 539 </svg> 540 </div> 541 542 <div class="salesman-bar"> 543 <div class="container"> 544 <div class="row align-items-center py-3"> 545 <div class="col-12 col-sm-3"> 546 S&aelig;lger:<br><strong> 547 @userName 548 </strong> 549 </div> 550 <div class="col-12 col-sm-5"> 551 <form action="@linkMyPage" class="form-inline" method="get"> 552 <div class="form-group has-search"> 553 <div id="bloodhound"> 554 <span class="icon icon-search form-control-feedback"></span> 555 <input type="hidden" name="DWExtranetSecondaryUserSelector" id="DWExtranetSecondaryUserSelector" value=""> 556 <input type="text" class="form-control typeahead" data-provide="typeahead" autocomplete="off" placeholder="Indtast kundenavn eller -nummer..."> 557 <button type="submit" class="btn btn-primary my-junget__login-btn">@Translate("Log ind")</button> 558 </div> 559 </div> 560 </form> 561 </div> 562 <div class="col-12 col-sm-4 text-right"> 563 @{ 564 if (secondaryUserHeader != null) 565 { 566 <text>Kunde:<br><strong><a href="/da-dk/mit-junget" style="color: #fff;">@secondaryUserHeader.Company (@secondaryUserHeader.CustomerNumber)</a></strong></text> 567 } 568 } 569 </div> 570 </div> 571 </div> 572 </div> 573 } 574 else 575 { 576 <div class="curve curve-light-gray"> 577 <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%" viewbox="0 0 1440 40" preserveaspectratio="none"> 578 <path d="M0,0v2c213.3,25.3,453.3,38,720,38s506.7-12.7,720-38V0H0z"></path> 579 <path d="M0,0h1440v40H0V0z M0,0v2c213.3,25.3,453.3,38,720,38s506.7-12.7,720-38V0H0z"></path> 580 </svg> 581 </div> 582 } 583 </header> 584 585 <div class="aside-panel js-aside js-view-phone"> 586 <div class="aside-panel__bcg js-aside-bcg js-aside-close-btn" data-view="phone"></div> 587 <div class="side-modal is-phone-panel aside-panel__content flex-column js-view-phone"> 588 <div class="container p-0"> 589 <button type="button" class="btn btn-link btn-close js-aside-close-btn float-right" data-view="phone">@Translate("PanelCloseSearchButtonText", "LUK") <span class="icon icon-close ml-2"></span></button> 590 </div> 591 <div class="aside-panel__container container p-0"> 592 <div class="aside-panel__scroll-content"> 593 <ul class="phone-panel"> 594 <li class="phone-call"> 595 <a href='@(Translate("CallNowPhoneNumber","tel:+45 89 36 55 00"))'> 596 @(Translate("Ring nu")) 597 </a> 598 </li> 599 <li class="phone-call"> 600 <a class="js-aside-btn" href="#" data-view="contacts"> 601 @(Translate("Find medarbejder")) 602 </a> 603 </li> 604 </ul> 605 </div> 606 </div> 607 </div> 608 </div> 609 610 @if (!string.IsNullOrWhiteSpace(searchPage)) 611 { 612 <div class="aside-panel js-aside js-view-search"> 613 <div class="aside-panel__bcg js-aside-bcg js-aside-close-btn" data-view="search"></div> 614 <div class="side-modal is-search-panel aside-panel__content flex-column js-view-search"> 615 <div class="container p-0"> 616 <button type="button" class="btn btn-link btn-close js-aside-close-btn float-right" data-view="search">@Translate("PanelCloseSearchButtonText", "LUK") <span class="icon icon-close ml-2"></span></button> 617 </div> 618 <div class="aside-panel__container container p-0"> 619 <div class="aside-panel__scroll-content"> 620 <form class="search-bar js-search-form mb-6" action="/@searchPage"> 621 <input class="search-bar__input js-search-input" name="q" type="text" placeholder='@Translate("HeaderSearch", "SØG")'> 622 <button class="search-bar__button" type="submit" data-icon="search"></button> 623 </form> 624 <div class="loading js-search-loading text-center"> 625 <svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="40px" height="40px" viewbox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve"> 626 <path fill="#000" d="M43.935,25.145c0-10.318-8.364-18.683-18.683-18.683c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615c8.072,0,14.615,6.543,14.615,14.615H43.935z"> 627 <animatetransform attributetype="xml" attributename="transform" type="rotate" from="0 25 25" to="360 25 25" dur="0.6s" repeatcount="indefinite"></animatetransform> 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 </path> 644 </svg> 645 </div> 646 <div class="row no-gutters search__result js-search-result"></div> 647 </div> 648 </div> 649 </div> 650 </div> 651 } 652 653 @if (!string.IsNullOrWhiteSpace(sharpeningLink)) 654 { 655 <section class="aside-panel js-aside js-view-sharpening"> 656 <div class="aside-panel__bcg js-aside-bcg js-aside-close-btn" data-view="sharpening"></div> 657 <div class="side-modal aside-panel__content flex-column js-view-sharpening"> 658 <button type="button" class="btn btn-link btn-close js-aside-close-btn" data-view="sharpening">@Translate("PanelCloseButtonText", "LUK") <span class="icon icon-close ml-2"></span></button> 659 <div class="container-fluid aside-panel__container"> 660 <div class="aside-panel__scroll-content"> 661 <div class="h2 mb-6">@Translate("SharpeningHeadline")</div> 662 <h5 class="h5 mb-7 text-primary">@Translate("SharpeningSubheader")</h5> 663 @if (String.IsNullOrEmpty(System.Web.HttpContext.Current.Request.QueryString["pid"])) 664 { 665 @RenderParagraphContent(Int32.Parse(sharpeningLink.Split('#')[1])) 666 } 667 else 668 { 669 <div>Formular er sendt afsted</div> 670 } 671 </div> 672 </div> 673 </div> 674 </section> 675 } 676 677 @if (!string.IsNullOrWhiteSpace(serviceLink)) 678 { 679 <section class="aside-panel js-aside js-view-service"> 680 <div class="aside-panel__bcg js-aside-bcg js-aside-close-btn" data-view="service"></div> 681 <div class="side-modal aside-panel__content flex-column js-view-service"> 682 <button type="button" class="btn btn-link btn-close js-aside-close-btn" data-view="service">@Translate("PanelCloseButtonText", "LUK") <span class="icon icon-close ml-2"></span></button> 683 <div class="container-fluid aside-panel__container"> 684 <div class="aside-panel__scroll-content"> 685 <div class="h2 mb-6">@Translate("ServiceHeadline")</div> 686 <h5 class="h5 mb-7 text-primary">@Translate("ServiceSubheader")</h5> 687 @if (String.IsNullOrEmpty(System.Web.HttpContext.Current.Request.QueryString["pid"])) 688 { 689 @RenderParagraphContent(Int32.Parse(serviceLink.Split('#')[1])) 690 } 691 else 692 { 693 <div>Formular er sendt afsted</div> 694 } 695 </div> 696 </div> 697 </div> 698 </section> 699 } 700 701 @if (!string.IsNullOrWhiteSpace(loginLink)) 702 { 703 <section class="aside-panel js-aside js-view-login"> 704 <div class="aside-panel__bcg js-aside-bcg js-aside-close-btn" data-view="login"></div> 705 <div class="side-modal aside-panel__content flex-column js-view-login"> 706 <button type="button" class="btn btn-link btn-close js-aside-close-btn" data-view="login">@Translate("PanelCloseButtonText", "LUK") <span class="icon icon-close ml-2"></span></button> 707 <div class="container-fluid aside-panel__container"> 708 <div class="aside-panel__scroll-content"> 709 @if (Dynamicweb.Context.Current.Request.Form["LoginAction"] != "Recovery") 710 { 711 @RenderParagraphContent(Int32.Parse(loginLink.Split('#')[1])) 712 } 713 </div> 714 </div> 715 </div> 716 </section> 717 } 718 719 @if (!string.IsNullOrWhiteSpace(minicartLink)) 720 { 721 <div class="aside-panel js-aside js-view-cart"> 722 <div class="aside-panel__bcg js-aside-bcg js-aside-close-btn" data-view="cart"></div> 723 <div class="side-modal aside-panel__content flex-column js-view-cart"> 724 <button type="button" class="btn btn-link btn-close js-aside-close-btn" data-view="cart">@Translate("PanelCloseButtonText", "LUK") <span class="icon icon-close ml-2"></span></button> 725 <div class="container-fluid aside-panel__container"> 726 <div class="aside-panel__scroll-content js-product-cart"> 727 @RenderParagraphContent(Int32.Parse(minicartLink.Split('#')[1])) 728 <div class="my-6 text-right"> 729 <a href="@((mainUserHeader != null && mainUserHeader.HasGroup(24)) ? salesmanCartLink : mycartLink)" class="btn-lg btn-success d-md-inline-block ml-auto px-9">@Translate("GoToCheckoutButton", "GÅ TIL KASSEN")</a> 730 </div> 731 </div> 732 </div> 733 </div> 734 </div> 735 } 736 <div class="view"> 737 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 738 @using System.Web 739 @using System.Drawing 740 @using Dynamicweb.Ecommerce 741 @using Dynamicweb.Frontend.Devices 742 @using VestjyskMarketing.Models 743 @using System; 744 @using System.Collections.Generic; 745 @using System.Linq; 746 747 748 749 @{ 750 var topImage = ""; 751 if (Pageview.Device == DeviceType.Mobile) 752 { 753 topImage = VestjyskMarketing.Helpers.ImageHelper.ResizeImage(new ResizeImageSettings() 754 { 755 Image = GetString("Item.TopImage"), 756 Height = 359, 757 Width = 768, 758 Quality = 85 759 }); 760 } 761 else 762 { 763 topImage = VestjyskMarketing.Helpers.ImageHelper.ResizeImage(new ResizeImageSettings() 764 { 765 Image = GetString("Item.TopImage"), 766 Height = 359, 767 Width = 1440, 768 Quality = 85 769 }); 770 } 771 string imageAlt = GetString("Item.TopImageAlt"); 772 } 773 774 @if (!string.IsNullOrWhiteSpace(topImage)) 775 { 776 <div class="hero js-hero product-hero"> 777 @if (!string.IsNullOrWhiteSpace(topImage)) 778 { 779 <div class="hero__image-holder"> 780 <div class="hero__image image-ratio--hero-small"> 781 <img class="image-ratio__image" src="@topImage" alt="@imageAlt"> 782 </div> 783 784 785 <div class="hero__curve-holder"> 786 <div class="curve curve-bcg-lighter-gray"> 787 <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%" viewbox="0 0 1440 40" preserveaspectratio="none"> 788 <path d="M0,0v2c213.3,25.3,453.3,38,720,38s506.7-12.7,720-38V0H0z"></path> 789 <path d="M0,0h1440v40H0V0z M0,0v2c213.3,25.3,453.3,38,720,38s506.7-12.7,720-38V0H0z"></path> 790 </svg> 791 </div> 792 </div> 793 </div> 794 } 795 </div> 796 } 797 798 <div class="machines"> 799 <section class="used-machine mb-7 js-photoswipe"> 800 <div class="container-fluid"> 801 <div class="row no-gutters"> 802 <div class="col-12 col-md-6"> 803 @if (GetLoop("Item.Gallery").Any()) 804 { 805 <div class="d-block" data-id="usedMachine"> 806 @foreach (var item in GetLoop("Item.Gallery").Take(1)) 807 { 808 string imageSrc = item.GetString("Item.Gallery.Image"); 809 810 if (!string.IsNullOrWhiteSpace(item.GetString("Item.Gallery.YoutubeID"))) 811 { 812 string youtubeUrl = item.GetString("Item.Gallery.YoutubeID"); 813 var uri = new Uri(youtubeUrl); 814 string youtubeId = uri.Segments.Last().ToString(); 815 string youtubeLink = youtubeUrl.Replace("/watch?v=", "/embed/").Replace("youtu.be", "youtube.com/embed/"); 816 817 <a href="@(youtubeLink)?autoplay=1" class="video-play-btn js-video-button mb-3 position-relative" data-type="youtube"> 818 @* This should maybe use vjm resizer too, but it would be a lot of code because it's defined for both src and srcset *@ 819 <img class="img-fluid js-photoswipe-thumbnail" src="/Admin/Public/GetImage.ashx?Image=@imageSrc&width=482&quality=75&mode=crop&format=webp" srcset="/Admin/Public/GetImage.ashx?Image=@imageSrc&width=705&quality=75&mode=crop&format=webp" alt="@item.GetString(" item.gallery.imagealttag")"=""> 820 <div class="video js-video_bcg"></div> 821 <div class="video-play-icon">PLAY</div> 822 </a> 823 } 824 else 825 { 826 <a class="sition-relative" href="@imageSrc?width=1600&amp;quality=85&amp;format=webP" data-fancybox="productPage2"> 827 <img class="img-fluid" src="/Admin/Public/GetImage.ashx?Image=@imageSrc&width=482&quality=75&mode=crop&amp;format=webP" alt="@item.GetString(" item.gallery.imagealttag")"=""> 828 </a> 829 } 830 } 831 </div> 832 } 833 @if (GetLoop("Item.Gallery").Any() && GetLoop("Item.Gallery").Count > 1) 834 { 835 <div class="d-block" data-id="usedMachine"> 836 @foreach (var item in GetLoop("Item.Gallery").Skip(1)) 837 { 838 string imageSrc = item.GetString("Item.Gallery.Image"); 839 if (!string.IsNullOrWhiteSpace(item.GetString("Item.Gallery.YoutubeID"))) 840 { 841 string youtubeUrl = item.GetString("Item.Gallery.YoutubeID"); 842 var uri = new Uri(youtubeUrl); 843 string youtubeId = uri.Segments.Last().ToString(); 844 string youtubeLink = youtubeUrl.Replace("/watch?v=", "/embed/").Replace("youtu.be", "youtube.com/embed/"); 845 846 <a href="@(youtubeLink)?autoplay=1" class="video-play-btn js-video-button position-relative" data-type="youtube"> 847 <img class="js-photoswipe-thumbnail" src="/Admin/Public/GetImage.ashx?Image=@imageSrc&width=110&height=100&quality=75&mode=crop&format=webP" srcset="/Admin/Public/GetImage.ashx?Image=@imageSrc&width=165&height=150&quality=75&mode=crop&format=webP 2x" alt="@item.GetString(" item.gallery.imagealttag")"=""> 848 <div class="video js-video_bcg"></div> 849 <div class="video-play-icon video-play-icon--small">PLAY</div> 850 </a> 851 } 852 else 853 { 854 <a class="mt-3 mr-3 d-inline-block" href="/Admin/Public/GetImage.ashx?Image=@imageSrc&width=1600&compression=75&crop=0&format=webP" data-fancybox="productPage1"> 855 <img src="/Admin/Public/GetImage.ashx?Image=@imageSrc&width=110&height=100&compression=75&crop=0&format=webP" alt="@item.GetString(" item.gallery.imagealttag")"=""> 856 </a> 857 } 858 } 859 </div> 860 } 861 </div> 862 <div class="col-12 col-md-6 pl-0 pl-md-4 mt-7 mt-md-0"> 863 <h1 class="h2 mb-5">@GetString("Item.BrandName")</h1> 864 <div class="mb-7 h6">@GetString("Item.BrandDescription")</div> 865 </div> 866 </div> 867 </div> 868 </section> 869 </div> 870 871 872 873 @*@if (GetLoop("Item.ProductDisplay").Count > 0) 874 { 875 <div class="container-fluid pb-5"> 876 <div class="row"> 877 @{ 878 //fetch pages from shop 879 var pageService2 = new Dynamicweb.Content.PageService(); 880 var pages = pageService2.GetPagesForItems(new string[] { "PageShopList" }); 881 } 882 883 @foreach (var product in GetLoop("Item.ProductDisplay")) 884 { 885 // Images 886 string grpId = string.Empty; 887 888 foreach (LoopItem subItem in product.GetLoop("AssociatedGroups")) 889 { 890 grpId = subItem.GetString("Ecom:Group.ID"); 891 } 892 var getGroup = Services.ProductGroups.GetGroup(grpId); 893 string getImageForProductList = getGroup.LargeImage; 894 string myFormat = string.Format("/Admin/Public/GetImage.ashx?Image=/Files/{0}", getImageForProductList); 895 string productImage = "/Files/System/Images/Shop/na-image.jpg"; 896 897 productImage = "/Admin/Public/GetImage.ashx?Image=Files/System/Images/Shop/Products/" + product.GetString("Ecom:Product.Number") + ".jpg&amp;Width=470&amp;Height=416&amp;format=webP&amp;Compression=75&amp;Background=ffffff&amp;fillcanvas=true&AlternativeImage=/Files/System/Images/Shop/Products/" + product.GetString("Ecom:Product.Number") + ".png"; 898 899 //get page from shop we need to link too 900 int productCardPageId = 0; 901 foreach (var page in pages) 902 { 903 var shopGroupPage = Dynamicweb.Core.Converter.ToString(page.Item["ShopCategoryNumber"]); 904 if (shopGroupPage == getGroup.Number) 905 { 906 productCardPageId = page.ID; 907 break; 908 } 909 } 910 string link = "/Default.aspx?ID=" + productCardPageId + "&amp;ProductID=" + product.GetString("Ecom:Product.ID"); 911 912 //get campaign name 913 string campaignName = ""; 914 var productApi = Dynamicweb.Ecommerce.Services.Products.GetProductById(product.GetString("Ecom:Product.ID"), null, true); 915 foreach (var priceFromMatrix in productApi.Prices) 916 { 917 if (priceFromMatrix.Amount == product.GetDouble("Ecom:Product.Price.PriceWithoutVAT.Value")) 918 { 919 campaignName = priceFromMatrix.Periods.FirstOrDefault()?.Name; 920 } 921 } 922 <div class="col-xs-12 col-md-6 col-xl-3" style="padding: 15px;"> 923 <a href="@link" class="product-card__anchortag"> 924 <div class="product-card"> 925 <img class="img-fluid product-card__img" alt="@product.GetString(" ecom:group.name")"="" src="@productImage"> 926 <div class="product-card__name"> 927 @product.GetString("Ecom:Product.Name") 928 </div> 929 @if (!string.IsNullOrEmpty(campaignName)) 930 { 931 <div class="product-item__price--old product-card__old-price">@product.GetString("Ecom:Product.Price.PriceWithoutVATFormatted").Replace(",00", ",-")</div> 932 <p class="product-card__price text-success font-weight-bold product-item__price">@product.GetString("Ecom:Product.Discount.Price.PriceWithoutVATFormatted").Replace(",00", ",-")</p> 933 934 string discountImage = ""; //@TODO WHAT TO DO? 935 if (!String.IsNullOrEmpty(discountImage)) 936 { 937 <div class="product-item__badge image-badge"> 938 <img src="@discountImage" alt="Kampagne billede" width="150px"> 939 </div> 940 } 941 else 942 { 943 <img class="product-card__campaignbanner" src="/Files/System/Images/kampagnebanner.png"> 944 } 945 } 946 else 947 { 948 <p class="product-card__price text-success font-weight-bold product-item__price">@product.GetString("Ecom:Product.Discount.Price.PriceWithoutVATFormatted").Replace(",00", ",-")</p> 949 } 950 <br> 951 <span> 952 <a class="product-card__btn-info">MERE INFO</a><button class="btn btn-success product-card__btn"><span class="icon icon-shopping-cart"></span>BESTIL</button> 953 </span> 954 </div> 955 </a> 956 </div> 957 } 958 </div> 959 </div> 960 }*@ 961 962 @*@if (GetLoop("Item.Machines").Count > 0) 963 { 964 <div class="container-fluid pb-5"> 965 <div class="row"> 966 @foreach (var machine in GetLoop("Item.Machines")) 967 { 968 var link = machine.GetString("Item.Machines.Link"); 969 var image = machine.GetString("Item.Machines.Image"); 970 <div class="col-xs-12 col-md-6 col-xl-3"> 971 <a href="@link"> 972 <div class="product-card product-card-height-300"> 973 <img class="img-fluid product-card__img" src="@image"> 974 <div class="product-card__name"> 975 @machine.GetString("Item.Machines.Name") 976 </div> 977 <span> 978 <button class="btn btn-success product-card__btn">MERE INFO</button> 979 </span> 980 </div> 981 </a> 982 </div> 983 } 984 </div> 985 </div> 986 }*@ 987 988 @{ 989 990 991 var machines = GetLoop("Item.Machines"); 992 var products = GetLoop("Item.ProductDisplay"); 993 List<Website.Helpers.MixedProduct> mixedProducts = new List<Website.Helpers.MixedProduct>(); 994 995 foreach (var item in machines) 996 { 997 998 Website.Helpers.MixedProduct mixedProduct = new Website.Helpers.MixedProduct(); 999 mixedProduct.listName = item.GetString("Item.Machines.Name"); 1000 mixedProduct.firstGalleryImage = item.GetString("Item.Machines.Image"); 1001 mixedProduct.url = item.GetString("Item.Machines.Link"); 1002 1003 1004 mixedProduct.name = item.GetString("Item.Machines.Name"); 1005 1006 1007 mixedProducts.Add(mixedProduct); 1008 } 1009 1010 var productService = new Dynamicweb.Ecommerce.Products.ProductService(); 1011 var pageService3 = new Dynamicweb.Content.PageService(); 1012 1013 1014 foreach (var item in products) 1015 { 1016 1017 1018 var _product = productService.GetProductById(item.GetString("Ecom:Product.ID"), item.GetString("Ecom:Product.VariantID"), false); 1019 1020 if (_product.ProductFieldValues.GetProductFieldValue("WebshopOK").Value.ToString() == "True") 1021 { 1022 Website.Helpers.MixedProduct mixedProduct = new Website.Helpers.MixedProduct(); 1023 mixedProduct.listName = item.GetString("Ecom:Product.Name"); 1024 mixedProduct.name = item.GetString("Ecom:Product.Name"); 1025 mixedProduct.productId = item.GetString("Ecom:Product.ID"); 1026 1027 var pages = pageService3.GetPagesForItems(new string[] { "PageShopList" }); 1028 1029 // Images 1030 string grpId = string.Empty; 1031 1032 foreach (LoopItem subItem in item.GetLoop("AssociatedGroups")) 1033 { 1034 grpId = subItem.GetString("Ecom:Group.ID"); 1035 } 1036 var getGroup = Dynamicweb.Ecommerce.Services.ProductGroups.GetGroup(grpId); 1037 string getImageForProductList = getGroup.LargeImage; 1038 string myFormat = string.Format("/Admin/Public/GetImage.ashx?Image=/Files/{0}", getImageForProductList); 1039 string productImage = "/Files/System/Images/Shop/na-image.jpg"; 1040 1041 productImage = "/Admin/Public/GetImage.ashx?Image=Files/System/Images/Shop/Products/" + item.GetString("Ecom:Product.Number") + ".jpg&amp;Width=470&amp;Height=416&amp;format=webP&amp;Compression=75&amp;Background=ffffff&amp;fillcanvas=true&AlternativeImage=/Files/System/Images/Shop/Products/" + item.GetString("Ecom:Product.Number") + ".png"; mixedProduct.Image = productImage; 1042 1043 var group = Dynamicweb.Ecommerce.Services.ProductGroups.GetGroup(item.GetString("Ecom:Product.PrimaryOrFirstGroupID")); 1044 int _pageId = 0; 1045 1046 foreach (var subpage in pages) 1047 { 1048 var shopGroupPage = Dynamicweb.Core.Converter.ToString(subpage.Item["ShopCategoryNumber"]); 1049 if (shopGroupPage == group.Number && subpage.AreaId.Equals(Pageview.AreaID)) 1050 { 1051 _pageId = subpage.ID; 1052 break; 1053 } 1054 } 1055 1056 mixedProduct.url = "/Default.aspx?ID=" + _pageId + "&amp;ProductID=" + item.GetString("Ecom:Product.ID"); 1057 mixedProduct.isProduct = true; 1058 var product = productService.GetProductById(item.GetString("Ecom:Product.ID"), "Ecom:Product.VariantID", false); 1059 mixedProduct.price = item.GetString("Ecom:Product.Price.PriceWithoutVATFormatted").Replace(",00", ",-"); 1060 1061 1062 mixedProducts.Add(mixedProduct); 1063 } 1064 } 1065 1066 1067 1068 mixedProducts = mixedProducts.OrderBy(x => x.name).ToList(); 1069 1070 <div class="col-12 container-fluid"> 1071 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 1072 1073 1074 @helper RenderMixedProductsList(List<Website.Helpers.MixedProduct> mixedProducts) 1075 { 1076 if (mixedProducts.Count > 0) 1077 { 1078 <div class="row" style=""> 1079 <div class="col-12 d-flex flex-wrap p-0 m-0"> 1080 @foreach (var item in mixedProducts) 1081 { 1082 <div class="col-xl-3 col-lg-4 col-md-6 col-sm-12 category__item js-search-category-item p-2 p-md-3" style="align-self: stretch"> 1083 <a href="@item.url" style="text-decoration: none"> 1084 <div class="category__item__container p-1 justify-content-center justify-content-md-between" style="background-color: white;"> 1085 <div class="d-flex flex-column" style="justify-content: center;"> 1086 <div style="" class="d-none d-md-flex flex-column category__item__container__image-container"> 1087 @if (!string.IsNullOrWhiteSpace(item.ImageSpot)) 1088 { 1089 <img class="img-fluid" style="object-fit: cover; align-self: center" src="/Admin/Public/GetImage.ashx?Image=@item.ImageSpot)&width=300&compression=70&mode=boxpad&format=webP&crop=0" alt="@item.altTag"> 1090 } 1091 else if (!string.IsNullOrWhiteSpace(item.Image)) 1092 { 1093 <img class="img-fluid" src="@item.Image" style="align-self: center" alt="@item.altTag"> 1094 } 1095 1096 else if (!string.IsNullOrEmpty(item.firstGalleryImage)) 1097 { 1098 <img class="img-fluid " src="/Admin/Public/GetImage.ashx?Image=@item.firstGalleryImage&width=300&compression=70&format=webP&crop=0" style="align-self: center" alt="@item.listName"> 1099 } 1100 </div> 1101 <div> 1102 @if (item.isProduct) 1103 { 1104 <div class="item__container__text-container__text d-flex justify-content-center"> 1105 @item.name 1106 <div class="d-none"></div> 1107 </div> 1108 } 1109 else 1110 { 1111 <div class="item__container__text-container__text d-flex justify-content-center"> 1112 @item.listName 1113 <div class="d-none">@item.metaTitle @item.metaDescription @item.metaKeywords</div> 1114 </div> 1115 } 1116 </div> 1117 </div> 1118 1119 <div class="d-flex flex-column mb-md-4"> 1120 1121 @{ 1122 var visibility = "hidden"; 1123 } 1124 1125 @if (item.isProduct) 1126 { 1127 if (!string.IsNullOrEmpty(item.price)) 1128 { 1129 visibility = "visible"; 1130 } 1131 } 1132 1133 <div class="item__container__info d-none d-md-flex justify-content-around" style="visibility: @visibility"> 1134 <div class="d-flex flex-column justify-content-center" style="text-align: center"> 1135 1136 @if (item.isProduct) 1137 { 1138 1139 1140 <div> 1141 1142 <div data-id="@item.productId" data-variantid="" class="lazyload-price item__container__info__price"> 1143 <span> 1144 @item.price 1145 </span> 1146 <img src="/Files/Images/loading.gif"> 1147 </div> 1148 </div> 1149 1150 } 1151 1152 @if (!string.IsNullOrEmpty(item.beforePrice)) 1153 { 1154 <div class="item__container__info__price-before">Før @item.beforePrice</div> 1155 } 1156 <div class="item__container__info__no-vat">(Eksl. moms)</div> 1157 </div> 1158 <div class="d-flex" style="align-items: center"> 1159 <button type="button" class="btn btn-success px-4 " style="height: 43px"> 1160 <span class="icon icon-shopping-cart mr-2"></span>@Translate("BESTIL") 1161 </button> 1162 </div> 1163 </div> 1164 1165 </div> 1166 </div> 1167 </a> 1168 </div> 1169 } 1170 1171 </div> 1172 </div> 1173 1174 1175 if (GetInteger("ItemPublisher:Items.Paging.TotalPages") > 1) 1176 { 1177 var hasPrevPage = GetInteger("ItemPublisher:Items.Paging.CurrentPage") > 1; 1178 var hasNextPage = GetInteger("ItemPublisher:Items.Paging.CurrentPage") < GetInteger("ItemPublisher:Items.Paging.TotalPages"); 1179 1180 <ul class="pagination"> 1181 <li class='@(hasPrevPage ? "" : "disabled")'> 1182 @if (hasPrevPage) 1183 { 1184 <a href='@System.Web.HttpUtility.HtmlEncode(GetValue("ItemPublisher:Items.Paging.PrevPage"))'>@Translate("Previous_page", "&laquo;")</a> 1185 } 1186 else 1187 { 1188 <span>@Translate("Previous_page", "&laquo;")</span> 1189 } 1190 </li> 1191 1192 @foreach (var p in GetLoop("ItemPublisher:Items.Paging.Pages")) 1193 { 1194 var isCurrent = p.GetBoolean("ItemPublisher:Items.Paging.Pages.Page.IsCurrent"); 1195 <li class='@(isCurrent ? "active" : "")'> 1196 @if (isCurrent) 1197 { 1198 <span>@p.GetValue("ItemPublisher:Items.Paging.Pages.Page.Number")</span> 1199 } 1200 else 1201 { 1202 <a href='@System.Web.HttpUtility.HtmlEncode(p.GetValue("ItemPublisher:Items.Paging.Pages.Page.Url"))'>@p.GetValue("ItemPublisher:Items.Paging.Pages.Page.Number")</a> 1203 } 1204 </li> 1205 } 1206 1207 <li class='@(hasNextPage ? "" : "disabled")'> 1208 @if (hasNextPage) 1209 { 1210 <a href='@System.Web.HttpUtility.HtmlEncode(GetValue("ItemPublisher:Items.Paging.NextPage"))'>@Translate("Next_page", "&raquo;")</a> 1211 } 1212 else 1213 { 1214 <span>@Translate("Next_page", "&raquo;")</span> 1215 } 1216 </li> 1217 </ul> 1218 } 1219 } 1220 } 1221 @RenderMixedProductsList(mixedProducts) 1222 </div> 1223 1224 1225 } 1226 <div class="container-fluid brands__bottom-content"> 1227 <div class="row"> 1228 <div class="col-lg-6"> 1229 <div id="middle-left-content">@GetValue("DwContent(middleleftcontent)")</div> 1230 </div> 1231 <div class="col-lg-6"> 1232 <div id="middle-right-content">@GetValue("DwContent(middlerightcontent)")</div> 1233 </div> 1234 </div> 1235 </div> 1236 1237 <div id="content">@GetValue("DwContent(content)")</div> 1238 1239 @RenderItemList(new { 1240 ItemType = "PageMemberPage", 1241 ListSourceType = "SelfArea", 1242 ItemFieldsList = "*", 1243 ListTemplate = "/ItemPublisher/List/EmployeesAccordion.cshtml", 1244 ListPageSize = 1000, 1245 ListOrderBy = "Sort" 1246 }) 1247 1248 <a href="javascript:window.goBack()" class="button-back d-md-none">&nbsp;</a> 1249 @if (!String.IsNullOrEmpty(Pageview.Area.Item["CookiebarText"].ToString()) && !String.IsNullOrEmpty(Pageview.Area.Item["CookiebarButtonText"].ToString())) 1250 { 1251 <!--googleoff: all--> 1252 <aside class="cookiebar js-cookiebar" data-id="cookie-accept"> 1253 <div class="cookiebar__container p-2 p-lg-4 text-center text-lg-left"> 1254 <div class="cookiebar__body"> 1255 <div>@Pageview.Area.Item["CookiebarText"]</div> 1256 </div> 1257 <div class="cookiebar__button-container mt-3 mt-lg-0"> 1258 <a href="#" class="btn-secondary btn js-cookiebar-close">@Pageview.Area.Item["CookiebarButtonText"]</a> 1259 </div> 1260 </div> 1261 </aside><!-- .cookiebar --> 1262 <!--googleon: all--> 1263 } 1264 1265 </div> 1266 <footer class="footer"> 1267 <div class="curve curve-bcg-light-gray"> 1268 <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%" viewbox="0 0 1440 40" preserveaspectratio="none"> 1269 <path d="M0,0v2c213.3,25.3,453.3,38,720,38s506.7-12.7,720-38V0H0z"></path> 1270 <path d="M0,0h1440v40H0V0z M0,0v2c213.3,25.3,453.3,38,720,38s506.7-12.7,720-38V0H0z"></path> 1271 </svg> 1272 </div> 1273 <div class="bg-light-gray pb-5"> 1274 <div class="container-fluid"> 1275 <div class="row no-gutters"> 1276 <div class="col-12 col-sm-6 col-md-4 col-lg-3"> 1277 <div class="footer__headline">@GetString("Item.Area.FooterColumnOne")</div> 1278 <nav class="navbar"> 1279 <ul class="navbar-nav d-block"> 1280 @foreach (var item in GetLoop("Item.Area.FooterColumnOneLinks")) 1281 { 1282 string link = item.GetString("Item.Area.FooterColumnOneLinks.Link"); 1283 1284 <li class="footer__item"> 1285 <span class="footer__icon icon icon-chevron-right"></span> 1286 <a class="footer__link" href="@link">@item.GetString("Item.Area.FooterColumnOneLinks.Name")</a> 1287 </li> 1288 } 1289 </ul> 1290 </nav> 1291 </div> 1292 <div class="col-12 col-sm-6 col-md-4 col-lg-3 pl-md-2"> 1293 <div class="footer__headline h2">@GetString("Item.Area.FooterColumnTwo")</div> 1294 <div class="footer__item">@GetString("Item.Area.FooterInfo")</div> 1295 <nav class="navbar"> 1296 <ul class="navbar-nav d-block"> 1297 @foreach (var item in GetLoop("Item.Area.FooterColumnTwoLinks")) 1298 { 1299 string link = item.GetString("Item.Area.FooterColumnTwoLinks.Link"); 1300 1301 <li class="footer__item"> 1302 <span class="footer__icon icon icon-chevron-right"></span> 1303 <a class="footer__link" href="@link">@item.GetString("Item.Area.FooterColumnTwoLinks.Name")</a> 1304 </li> 1305 } 1306 </ul> 1307 </nav> 1308 </div> 1309 <div class="ml-auto d-flex align-items-end align-right"> 1310 @if (Pageview.Area.ID == 8) 1311 { 1312 <img class="mr-2 mb-3" src="/Files/System/Images/Shop/visa_mastercard.png" alt="visa mastercard" height="20"> 1313 <img class="mr-3 mb-3" src="/Files/System/Images/Shop/vipps.svg" alt="vipps" height="20"> 1314 } 1315 else 1316 { 1317 <img class="mr-2 mb-3" src="/Files/System/Images/Shop/dankort_visa_mastercard.png" alt="Dankort visa mastercard" height="20"> 1318 <img class="mr-3 mb-3" src="/Files/System/Images/Shop/icon-mobilepay.png" alt="mobilepay" height="20"> 1319 } 1320 1321 @foreach (var item in GetLoop("Item.Area.FooterSocialMediaLinks")) 1322 { 1323 string link = item.GetString("Item.Area.FooterSocialMediaLinks.Link"); 1324 string alt = item.GetString("Item.Area.FooterSocialMediaLinks.Name"); 1325 string image = item.GetString("Item.Area.FooterSocialMediaLinks.Icon"); 1326 string target = link.Contains("www") ? "_blank" : "_self"; 1327 1328 <a class="mr-3" href="@link" target="@target"> 1329 <img class="img-fluid" src="/Admin/Public/GetImage.ashx?Image=@image&width=40&height=40&Compression=80&format=webP" alt="@alt"> 1330 </a> 1331 } 1332 @{ 1333 string co2Link = GetString("Item.Area.Co2NeutraltLink"); 1334 string co2Billede = GetString("Item.Area.Co2NeutraltBillede"); 1335 } 1336 <a class="mr-3" href="@co2Link" target="_blank"> 1337 <img src="@co2Billede" alt="co2 neutral" width="100"> 1338 </a> 1339 </div> 1340 </div> 1341 </div> 1342 </div> 1343 </footer> 1344 @using Dynamicweb.Content 1345 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 1346 1347 1348 @{ 1349 var cookieName = "LanguageWebsite"; 1350 var cookieValue = ""; 1351 1352 if (Dynamicweb.Context.Current.Request.Cookies[cookieName] != null) 1353 { 1354 cookieValue = Dynamicweb.Context.Current.Request.Cookies[cookieName].Value; 1355 } 1356 1357 var areaService = new AreaService(); 1358 var activeAreas = areaService.GetAreas().Where(a => a.Active); 1359 1360 //tuple list of two strings 1361 var frontpageIds = new List<Tuple<string, string>>(); 1362 1363 if (cookieValue != "False" && cookieValue != "") 1364 { 1365 if (Pageview.Area.CultureInfo.TwoLetterISOLanguageName != cookieValue) 1366 { 1367 foreach (var activeArea in activeAreas) 1368 { 1369 if (activeArea.CultureInfo.TwoLetterISOLanguageName == cookieValue) 1370 { 1371 Dynamicweb.Context.Current.Response.Redirect("/Default.aspx?ID=" + pageService.GetFirstPageForArea(activeArea.ID).ID); 1372 } 1373 } 1374 } 1375 } 1376 1377 else if (cookieValue != "False") 1378 { 1379 var currentLanguage = Pageview.Area.CultureInfo.TwoLetterISOLanguageName; 1380 var pageLanguageNativeName = Translate(currentLanguage + "NativeName"); 1381 1382 1383 foreach (var activeArea in activeAreas) 1384 { 1385 var frontpage = pageService.GetFirstPageForArea(activeArea.ID); 1386 1387 var frontpageCode = activeArea.CultureInfo.TwoLetterISOLanguageName; 1388 frontpageIds.Add(new Tuple<string, string>(frontpageCode, frontpage.ID.ToString())); 1389 } 1390 1391 <div style="display: none" class="lang-mes"> 1392 <div id="currentLanguage" style="display: none">@pageLanguageNativeName</div> 1393 <div id="currentPageLanguageCode" style="display: none">@currentLanguage</div> 1394 1395 @foreach (var frontpageId in frontpageIds) 1396 { 1397 var id = "Page" + frontpageId.Item1; 1398 <div id="@id" style="display: none">@frontpageId.Item2</div> 1399 } 1400 <div class="lang-mes__content"> 1401 <div class="mes__content__message">@Translate("LanMes") </div> 1402 <div class="mes__content__buttons"> 1403 <a class="mes__content__buttons__yes mes-button" href="javascript:void(0)">@Translate("Yes")</a> 1404 <a class="mes__content__buttons__no mes-button" href="javascript:void(0)">@Translate("No")</a> 1405 </div> 1406 </div> 1407 </div> 1408 } 1409 1410 1411 <script> 1412 1413 document.addEventListener("DOMContentLoaded",function (){ 1414 1415 var userLanguage = navigator.language.split("-")[0].toLowerCase(); 1416 var userLanguageTranslated = ""; 1417 var userLanguageFrontpageId = "Default.Aspx?ID="; 1418 var currentPageLanguageCode = ""; 1419 1420 if (document.getElementById("currentPageLanguageCode") != null){ 1421 currentPageLanguageCode = document.getElementById("currentPageLanguageCode").innerText; 1422 1423 var sameLanguage = currentPageLanguageCode === userLanguage; 1424 1425 sameLanguage = sameLanguage || (currentPageLanguageCode === "nb" && userLanguage === "nn"); 1426 1427 1428 if (document.getElementById("currentPageLanguageCode") != null && !sameLanguage) 1429 { 1430 1431 switch(userLanguage) 1432 { 1433 case "da": 1434 userLanguageTranslated = '@Translate("daNativeName")' 1435 userLanguageFrontpageId += document.getElementById("Page" + userLanguage).innerText; 1436 break; 1437 case "en": 1438 userLanguageTranslated = '@Translate("enNativeName")' 1439 userLanguageFrontpageId += document.getElementById("Page" + userLanguage).innerText; 1440 break; 1441 case "nb": 1442 userLanguageTranslated = '@Translate("nbNativeName")' 1443 userLanguageFrontpageId += document.getElementById("Page" + userLanguage).innerText; 1444 break; 1445 case "nn": 1446 userLanguageTranslated = '@Translate("nnNativeName")' 1447 userLanguageFrontpageId += document.getElementById("Page" + "nb").innerText; 1448 userLanguage = "nb"; 1449 break; 1450 1451 1452 } 1453 1454 var userLanguageTranslated2 = userLanguageTranslated; 1455 if (currentPageLanguageCode === "da") 1456 { 1457 userLanguageTranslated2 = userLanguageTranslated2 + "e"; 1458 } 1459 1460 var langMes = document.getElementsByClassName("mes__content__message")[0]; 1461 var message = langMes.innerText.replace("#", userLanguageTranslated); 1462 message = message.replace("_", userLanguageTranslated2); 1463 langMes.innerText = langMes.innerText = message; 1464 var yesButton = document.getElementsByClassName("mes__content__buttons__yes")[0]; 1465 var noButton = document.getElementsByClassName("mes__content__buttons__no")[0]; 1466 yesButton.href = userLanguageFrontpageId; 1467 1468 var langMesContainer = document.getElementsByClassName("lang-mes")[0]; 1469 langMesContainer.style.display = "flex"; 1470 1471 // yesButton.addEventListener("click",function (){ 1472 // setCookie(userLanguage); 1473 // }); 1474 1475 noButton.addEventListener("click",function (){ 1476 setCookie("False"); 1477 langMesContainer.style.display = "none"; 1478 }); 1479 1480 function setCookie(cvalue) { 1481 const d = new Date(); 1482 d.setTime(d.getTime() + (30*24*60*60*1000)); 1483 let expires = "expires="+ d.toUTCString(); 1484 document.cookie = "LanguageWebsite" + "=" + cvalue + ";" + expires + ";path=/"; 1485 } 1486 }} 1487 }); 1488 </script> 1489 } 1490 </div> 1491 1492 <div class="js-video-modal modal fade in video-modal" id="videoModal" tabindex="-1" role="dialog" aria-labelledby="videoModal" aria-hidden="true"> 1493 <div class="modal-dialog modal-lg mw-100 px-5"> 1494 <!-- Modal content--> 1495 <div class="modal-content"> 1496 <div class="modal-header d-flex justify-content-end"> 1497 <button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal"> 1498 <span class="icon icon-close"></span> 1499 </button> 1500 </div> 1501 <div class="modal-body embed-responsive embed-responsive-16by9"> 1502 <iframe class="js-video-container modal-iframe video-modal__iframe embed-responsive-item" src="" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe> 1503 </div> 1504 </div> 1505 </div> 1506 </div> 1507 1508 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 1509 <div class="position-fixed d-flex flex-column mobile-nav-buttons d-lg-none"> 1510 <button type="button" class="btn btn-icon btn-icon--round btn-primary btn-mobile-nav btn-mobile-nav--menu js-aside-btn" data-view="navigation"> 1511 <span class="icon icon-navigation"></span> 1512 <div class="btn-mobile-nav--text">MENU</div> 1513 </button> 1514 </div> 1515 1516 <div class="mobile-menu aside-panel js-aside js-view-navigation"> 1517 <div class="aside-panel__bcg js-aside-bcg js-aside-close-btn" data-view="navigation"></div> 1518 <div class="page-container position-relative h-100"> 1519 <div class="side-modal side-modal--navigation aside-panel__content flex-column js-view-navigation"> 1520 <button type="button" class="btn btn-link btn-close js-aside-close-btn text-white" data-view="navigation"> 1521 @Translate("PanelCloseButtonText", "LUK") <span class="icon icon-close ml-2"></span> 1522 </button> 1523 <div class="container-fluid aside-panel__container"> 1524 <div class="aside-panel__scroll-content"> 1525 <nav role="navigation" class="js-nav-panel"> 1526 <!-- lvl1 list --> 1527 <ul class="nav-list list-unstyled"> 1528 @RenderNavigation(new 1529 { 1530 StartLevel = 1, 1531 EndLevel = 3, 1532 expandmode = "all", 1533 Template = "mobile-navigation.xslt", 1534 Id = "mobile-nav" 1535 }) 1536 <li class="language-picker-item"> 1537 <a class="dropdown-item" href="https://www.junget.com/da-dk"> 1538 <img width="28" height="20" src="/webroot/images/da-dk.svg" alt="Junget - Denmark"> 1539 </a> 1540 <a class="dropdown-item" href="https://www.junget.com/en-gb"> 1541 <img width="28" height="20" src="/webroot/images/en-gb.svg" alt="Junget"> 1542 </a> 1543 <a class="dropdown-item" href="https://www.junget.com/nb-no"> 1544 <img width="28" height="20" src="/webroot/images/nb-NO.svg" alt="Junget"> 1545 </a> 1546 </li> 1547 </ul> 1548 </nav> 1549 </div> 1550 </div> 1551 </div> 1552 <div class="js-aside-close-btn nav-close-layer" data-view="navigation"></div> 1553 </div> 1554 </div> 1555 1556 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 1557 <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.2/umd/popper.min.js"></script> 1558 <script src="/webroot/js-static/swiper-bundle.js" type="text/javascript"></script> 1559 @{ 1560 var masterScripts = VestjyskMarketing.Helpers.Utilities.CacheBuster("/webroot/dist/main.js"); 1561 } 1562 <script src="@masterScripts" type="text/javascript"></script> 1563 <script src="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js" defer=""></script> 1564 1565 @RenderSnippet("GATracking") 1566 1567 @if (MainUserMain != null && MainUserMain.HasGroup(24) && myJungetPageList.Contains(Pageview.ID)) 1568 { 1569 // Bass Jacobsen 1570 <script src="/webroot/js-static/bootstrap3-typeahead.min.js" type="text/javascript"></script> 1571 <script src="/webroot/js-static/bloodhound.min.js" type="text/javascript"></script> 1572 1573 <script type="text/javascript"> 1574 $(document).ready(function () { 1575 // instantiate the bloodhound suggestion engine 1576 var datas = new Bloodhound({ 1577 datumTokenizer: Bloodhound.tokenizers.whitespace, 1578 queryTokenizer: Bloodhound.tokenizers.whitespace, 1579 prefetch: { url: '/da-dk/customerfeed-json', cache: false }, 1580 remote: { url: '/da-dk/customerfeed-json' } 1581 }); 1582 1583 // initialize the bloodhound suggestion engine 1584 datas.initialize(); 1585 1586 $(".typeahead").typeahead({ 1587 items: 15, 1588 display: 'name', 1589 highlight: true, 1590 minLength: 1, 1591 hint: true, 1592 fitToElement: true, 1593 source: datas.ttAdapter(), 1594 highlighter: function (item) { 1595 var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&'); 1596 1597 //split to separate HTML tags 1598 var item_parts = item.split(/(<[^>]+>)/g); 1599 1600 //Highlight only if it's not a tag 1601 var ret = ""; 1602 for (var i = 0; i < item_parts.length; i++) { 1603 if (item_parts[i].match(/(<[^>]+>)/)) { 1604 //this is a tag. 1605 ret += item_parts[i]; 1606 } else { 1607 //highlight if necessary 1608 ret += item_parts[i].replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) { 1609 return '<strong>' + match + '</strong>'; 1610 }); 1611 } 1612 } 1613 return ret; 1614 }, 1615 updater: function (item) { 1616 $("#DWExtranetSecondaryUserSelector").val(item.id); 1617 return item; 1618 } 1619 }); 1620 }); 1621 </script> 1622 } 1623 1624 @if (Pageview.Area.Item["Aktiv"] != null && Pageview.Area.Item["Aktiv"].ToString() == "True" && Pageview.User == null) 1625 { 1626 string img = Pageview.Area.Item["Billede"].ToString(); 1627 string header = Pageview.Area.Item["Overskrift"].ToString(); 1628 string body = Pageview.Area.Item["Br_dtekst"].ToString(); 1629 string buttonText = Pageview.Area.Item["KnapTekst"].ToString(); 1630 int cartPageID = GetPageIdByNavigationTag("cartpageid"); 1631 1632 <div id="mymodal" class="modal" tabindex="-1" role="dialog"> 1633 <div class="modal-dialog exit-intent-mw350px" role="document"> 1634 <div class="modal-content"> 1635 <div class="exit-intent"> 1636 @if (!string.IsNullOrEmpty(img)) 1637 { 1638 <img class="img-responsive exit-intent-img" src="/Admin/Public/GetImage.ashx?Image=@img&width=300&height=200&compression=85&crop=0"> 1639 } 1640 @if (!string.IsNullOrEmpty(header)) 1641 { 1642 <h5 class="modal-title font-weight-bold mb-3 text-center">@header</h5> 1643 } 1644 <button type="button" class="close exit-intent-close" data-dismiss="modal" aria-label="Close"> 1645 <span aria-hidden="true">&times;</span> 1646 </button> 1647 @if (!string.IsNullOrEmpty(body)) 1648 { 1649 <div class="text-center"> 1650 <p class="exit-intent-text">@body</p> 1651 </div> 1652 } 1653 @if (!string.IsNullOrEmpty(buttonText)) 1654 { 1655 <a type="button" href="/Default.aspx?ID=@cartPageID" class="btn btn-primary btn-block font-weight-bolder">@buttonText</a> 1656 } 1657 </div> 1658 </div> 1659 </div> 1660 </div> 1661 } 1662 1663 @RenderSnippet("BeforeBodyEndScripts") 1664 </body> 1665 </html>