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