Error executing template "Designs/Junget/_parsed/PageProduct.parsed.cshtml"
System.IO.FileNotFoundException: D:\Web\DW3\Junget\Website\Files\System\Images\Junget-Images\Maskinbilleder-pdf\Kantlimer\Kanlimer_alterndorf_F5.jpg
   at System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement)
   at CompiledRazorTemplates.Dynamic.RazorEngine_8dccf95dfe8c4dfd9364d406905aa277.Execute() in D:\Web\DW3\Junget\Website\Files\Templates\Designs\Junget\_parsed\PageProduct.parsed.cshtml:line 814
   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 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 collapse navbar-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 p-0 dropdown-toggle" 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 ml-3 btn btn-sm js-aside-btn" 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="ml-3 btn btn-primary btn-sm" 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="ml-3 btn btn-secondary btn-sm js-aside-btn" data-view="login">@Translate("HeaderLoginButton", "LOGIN")</button> 425 } 426 } 427 </li> 428 <li class="nav-item"> 429 <button type="button" class="ml-3 btn btn-secondary btn-sm js-aside-btn" 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 flex-row justify-content-between align-items-end"> 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 flex-row justify-content-end align-items-center primary-nav"> 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 p-0 nav-item__link nav-item__link--search js-aside-btn" 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 p-0 nav-item__link nav-item__link--cart js-aside-btn" 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 flex-row justify-content-center align-items-center"> 471 <li class="nav-item"> 472 <a class="d-inline-flex p-0 nav-item__link nav-item__link--home" 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 p-0 nav-item__link nav-item__link--search js-aside-btn" 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 p-0 nav-item__link nav-item__link--phone-alt js-aside-btn" 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 p-0 nav-item__link nav-item__link--search js-aside-btn" 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 p-0 nav-item__link nav-item__link--search" 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 p-0 nav-item__link nav-item__link--search" 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 p-0 nav-item__link nav-item__link--cart js-aside-btn" 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 p-0 nav-item__link nav-item__link--cart js-aside-btn" 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 py-3 align-items-center"> 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 float-right js-aside-close-btn" data-view="phone">@Translate("PanelCloseSearchButtonText", "LUK") <span class="icon icon-close ml-2"></span></button> 590 </div> 591 <div class="container p-0 aside-panel__container"> 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 float-right js-aside-close-btn" data-view="search">@Translate("PanelCloseSearchButtonText", "LUK") <span class="icon icon-close ml-2"></span></button> 617 </div> 618 <div class="container p-0 aside-panel__container"> 619 <div class="aside-panel__scroll-content"> 620 <form class="search-bar mb-6 js-search-form" 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="text-center loading js-search-loading"> 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="text-primary h5 mb-7">@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="text-primary h5 mb-7">@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="text-right my-6"> 729 <a href="@((mainUserHeader != null && mainUserHeader.HasGroup(24)) ? salesmanCartLink : mycartLink)" class="btn-lg btn-success ml-auto px-9 d-md-inline-block">@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 741 742 743 @{ 744 var topPage = Dynamicweb.Frontend.PageView.GetPageviewByPageID(Int32.Parse(GetString("DwTopPageID"))); 745 string textWhite = GetBoolean("Item.TextColorWhite") ? "text-white" : ""; 746 string headline = !string.IsNullOrWhiteSpace(GetString("Item.Name")) ? GetString("Item.Name") : topPage.Page.Item["Name"].ToString(); 747 string subheader = !string.IsNullOrWhiteSpace(GetString("Item.Subheader")) ? GetString("Item.Subheader") : topPage.Page.Item["Subheader"].ToString(); 748 string topImage = !string.IsNullOrWhiteSpace(GetString("Item.TopImage")) ? GetString("Item.TopImage").Replace(" ", "%20") : topPage.Page.Item["TopImage"].ToString(); 749 string filterTag = topPage.Page.Item["Category"] != null && topPage.Page.Item["Category"].ToString() != "empty" ? topPage.Page.Item["Category"].ToString() : ""; 750 string productName = GetString("Item.ProductName"); 751 string productImage = GetString("Item.ProductLogo"); 752 int counter = 0; 753 string imageAlt = !string.IsNullOrWhiteSpace(GetString("Item.TopImageAlt")) ? GetString("Item.TopImageAlt") : headline; 754 int ctaListId = (int)Pageview.Area.Item["ButtonCTAList"]; 755 var ctaList = Dynamicweb.Content.Items.ItemList.GetItemListById(ctaListId); 756 string mainCategory = GetString("Item.MainCategory"); 757 string subCategory = GetString("Item.SubCategory"); 758 bool hideButtonCTAList = GetBoolean("Item.Hide_Button_CTAList"); 759 760 } 761 762 @if (!string.IsNullOrWhiteSpace(topImage) || !string.IsNullOrWhiteSpace(headline) || !string.IsNullOrWhiteSpace(subheader)) 763 { 764 <div class="hero js-hero product-hero"> 765 @if (!string.IsNullOrWhiteSpace(topImage)) 766 { 767 <div class="hero__image-holder"> 768 <picture class="hero__image image-ratio--hero-small"> 769 <!--[if IE 9]><video style="display: none;"><![endif]--> 770 <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)"> 771 <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)"> 772 <!--[if IE 9]></video><![endif]--> 773 <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"> 774 </picture> 775 776 <div class="hero__curve-holder"> 777 <div class="curve curve-bcg-lighter-gray"> 778 <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%" viewbox="0 0 1440 40" preserveaspectratio="none"> 779 <path d="M0,0v2c213.3,25.3,453.3,38,720,38s506.7-12.7,720-38V0H0z"></path> 780 <path d="M0,0h1440v40H0V0z M0,0v2c213.3,25.3,453.3,38,720,38s506.7-12.7,720-38V0H0z"></path> 781 </svg> 782 </div> 783 </div> 784 </div> 785 } 786 787 <div class="hero__text-holder @textWhite"> 788 <div class="container-fluid"> 789 @if (!string.IsNullOrWhiteSpace(headline)) 790 { 791 <h1 class="hero__title">@headline</h1> 792 } 793 @if (!string.IsNullOrWhiteSpace(subheader)) 794 { 795 <h2 class="hero__subtitle">@subheader</h2> 796 } 797 </div> 798 </div> 799 </div> 800 } 801 802 <div class="machines"> 803 @GetValue("DwNavigation(breadcrumb)") 804 <section class="used-machine mb-7 js-photoswipe"> 805 <div class="container-fluid"> 806 <div class="row no-gutters"> 807 <div class="col-12 col-md-6"> 808 @if (GetLoop("Item.Gallery").Any()) 809 { 810 <div class="d-block" data-id="usedMachine"> 811 @foreach (var item in GetLoop("Item.Gallery").Take(1)) 812 { 813 string imageSrc = item.GetString("Item.Gallery.Image"); 814 Image image = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath(imageSrc)); 815 816 if (!string.IsNullOrWhiteSpace(item.GetString("Item.Gallery.YoutubeID"))) 817 { 818 string youtubeUrl = item.GetString("Item.Gallery.YoutubeID"); 819 var uri = new Uri(youtubeUrl); 820 string youtubeId = uri.Segments.Last().ToString(); 821 string youtubeLink = youtubeUrl.Replace("/watch?v=", "/embed/").Replace("youtu.be", "youtube.com/embed/"); 822 823 <a href="@(youtubeLink)?autoplay=1" class="video-play-btn js-video-button mb-3 position-relative" data-type="youtube"> 824 <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")"=""> 825 <div class="video js-video_bcg"></div> 826 <div class="video-play-icon">PLAY</div> 827 </a> 828 } 829 else 830 { 831 <a class="sition-relative" href="@imageSrc?width=1600&amp;quality=75&amp;format=webP" data-fancybox="productPage2" data-caption="@productName"> 832 <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")"=""> 833 </a> 834 } 835 } 836 </div> 837 } 838 @if (GetLoop("Item.Gallery").Any() && GetLoop("Item.Gallery").Count > 1) 839 { 840 <div class="d-block" data-id="usedMachine"> 841 @foreach (var item in GetLoop("Item.Gallery").Skip(1)) 842 { 843 string imageSrc = item.GetString("Item.Gallery.Image"); 844 Image image = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath(imageSrc)); 845 846 if (!string.IsNullOrWhiteSpace(item.GetString("Item.Gallery.YoutubeID"))) 847 { 848 string youtubeUrl = item.GetString("Item.Gallery.YoutubeID"); 849 var uri = new Uri(youtubeUrl); 850 string youtubeId = uri.Segments.Last().ToString(); 851 string youtubeLink = youtubeUrl.Replace("/watch?v=", "/embed/").Replace("youtu.be", "youtube.com/embed/"); 852 853 <a href="@(youtubeLink)?autoplay=1" class="video-play-btn js-video-button position-relative" data-type="youtube"> 854 <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")"=""> 855 <div class="video js-video_bcg"></div> 856 <div class="video-play-icon video-play-icon--small">PLAY</div> 857 </a> 858 } 859 else 860 { 861 <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"> 862 <img src="/Admin/Public/GetImage.ashx?Image=@imageSrc&width=110&height=100&compression=75&crop=0&format=webP" alt="@item.GetString(" item.gallery.imagealttag")"=""> 863 </a> 864 } 865 } 866 </div> 867 } 868 </div> 869 <div class="col-12 col-md-6 pl-0 pl-md-4 mt-7 mt-md-0"> 870 @if (!string.IsNullOrWhiteSpace(productImage)) 871 { 872 <div class="mb-6"><img src="/Admin/Public/GetImage.ashx?Image=@productImage&height=24&quality=75&mode=crop&format=webP" alt="@productName"></div> 873 } 874 <h1 class="h2 mb-5">@GetString("Item.ProductName")</h1> 875 <div class="mb-7 h6">@GetString("Item.ProductSubheader")</div> 876 @if (!string.IsNullOrWhiteSpace(GetString("Item.ProductTeaser"))) 877 { 878 <h2 class="mb-7 h6">@GetString("Item.ProductTeaser")</h2> 879 } 880 @if (!hideButtonCTAList) 881 { 882 <div class="d-flex flex-column flex-md-row"> 883 @foreach (var item in ctaList.Relations.Cast<Dynamicweb.Content.Items.Item>()) 884 { 885 bool primary = Convert.ToBoolean(item["Primary"]); 886 string optionCount = item["GoToFormOption"].ToString(); 887 888 <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> 889 } 890 </div> 891 } 892 893 <div class="mt-7 small">@GetString("Item.ProductSmallText")</div> 894 </div> 895 </div> 896 <div class="used-machine__specs row no-gutters js-toggle-class" data-trigger-once="true"> 897 <button type="button" class="show-more-btn btn btn-outline-primary">@Translate("ecom-show-more")</button> 898 <div class="col-12 col-md-6 pr-md-4"> 899 <h2 class="mb-6">@Translate("ecom-specs")</h2> 900 <dl class="row no-gutters mb-6"> 901 @foreach (var item in GetLoop("Item.SpecsList")) 902 { 903 counter++; 904 string bgColor = counter % 2 == 1 ? "bg-light-gray" : ""; 905 string itemValue = item.GetString("Item.SpecsList.Value"); 906 907 <dt class="used-machine__specs-display col-12 col-sm-4 p-4 @bgColor">@item.GetString("Item.SpecsList.Name")</dt> 908 if (itemValue.Contains('|')) 909 { 910 <dd class="used-machine__specs-value col-12 col-sm-8 m-0 py-4 @bgColor"> 911 @foreach (string subItem in itemValue.Split('|')) 912 { 913 <span class="mr-3">@subItem</span> 914 } 915 </dd> 916 } 917 else 918 { 919 <dd class="used-machine__specs-value col-12 col-sm-8 m-0 py-4 @bgColor">@itemValue</dd> 920 } 921 } 922 @if (!string.IsNullOrWhiteSpace(mainCategory) && !string.IsNullOrWhiteSpace(subCategory)) 923 { 924 counter++; 925 string bgColor = counter % 2 == 1 ? "bg-light-gray" : ""; 926 927 <dt class="used-machine__specs-display col-12 col-sm-4 p-4 @bgColor">@mainCategory</dt> 928 <dd class="used-machine__specs-value col-12 col-sm-8 m-0 py-4 @bgColor"> 929 @foreach (string item in subCategory.Split(',')) 930 { 931 <span class="mr-3">@item</span> 932 } 933 </dd> 934 } 935 </dl> 936 </div> 937 <div class="col-12 col-md-6 pl-md-4"> 938 <h2 class="mb-6">@Translate("ecom-description")</h2> 939 <div class="mb-6">@GetString("Item.ProductDescription")</div> 940 </div> 941 </div> 942 </div> 943 </section> 944 945 <div id="content">@GetValue("DwContent(content)")</div> 946 </div> 947 948 @if (!string.IsNullOrWhiteSpace(filterTag)) 949 { 950 @RenderItemList(new 951 { 952 ItemType = "PageMemberPage", 953 ListSourceType = "SelfArea", 954 ItemFieldsList = "*", 955 ListTemplate = "/ItemPublisher/List/Employees.cshtml", 956 ListPageSize = 1000, 957 ListOrderBy = "Sort", 958 Filter = "Category contains \"" + filterTag + "\"" 959 }) 960 } 961 else 962 { 963 @RenderItemList(new 964 { 965 ItemType = "PageMemberPage", 966 ListSourceType = "SelfArea", 967 ItemFieldsList = "*", 968 ListTemplate = "/ItemPublisher/List/EmployeesAccordion.cshtml", 969 ListPageSize = 1000, 970 ListOrderBy = "Sort" 971 }) 972 } 973 <a href="javascript:window.goBack()" class="button-back d-md-none">&nbsp;</a> 974 @if (!String.IsNullOrEmpty(Pageview.Area.Item["CookiebarText"].ToString()) && !String.IsNullOrEmpty(Pageview.Area.Item["CookiebarButtonText"].ToString())) 975 { 976 <!--googleoff: all--> 977 <aside class="cookiebar js-cookiebar" data-id="cookie-accept"> 978 <div class="cookiebar__container p-2 p-lg-4 text-center text-lg-left"> 979 <div class="cookiebar__body"> 980 <div>@Pageview.Area.Item["CookiebarText"]</div> 981 </div> 982 <div class="cookiebar__button-container mt-3 mt-lg-0"> 983 <a href="#" class="btn-secondary btn js-cookiebar-close">@Pageview.Area.Item["CookiebarButtonText"]</a> 984 </div> 985 </div> 986 </aside><!-- .cookiebar --> 987 <!--googleon: all--> 988 } 989 990 </div> 991 <footer class="footer"> 992 <div class="curve curve-bcg-light-gray"> 993 <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%" viewbox="0 0 1440 40" preserveaspectratio="none"> 994 <path d="M0,0v2c213.3,25.3,453.3,38,720,38s506.7-12.7,720-38V0H0z"></path> 995 <path d="M0,0h1440v40H0V0z M0,0v2c213.3,25.3,453.3,38,720,38s506.7-12.7,720-38V0H0z"></path> 996 </svg> 997 </div> 998 <div class="bg-light-gray pb-5"> 999 <div class="container-fluid"> 1000 <div class="row no-gutters"> 1001 <div class="col-12 col-sm-6 col-md-4 col-lg-3"> 1002 <div class="footer__headline">@GetString("Item.Area.FooterColumnOne")</div> 1003 <nav class="navbar"> 1004 <ul class="navbar-nav d-block"> 1005 @foreach (var item in GetLoop("Item.Area.FooterColumnOneLinks")) 1006 { 1007 string link = item.GetString("Item.Area.FooterColumnOneLinks.Link"); 1008 1009 <li class="footer__item"> 1010 <span class="footer__icon icon icon-chevron-right"></span> 1011 <a class="footer__link" href="@link">@item.GetString("Item.Area.FooterColumnOneLinks.Name")</a> 1012 </li> 1013 } 1014 </ul> 1015 </nav> 1016 </div> 1017 <div class="col-12 col-sm-6 col-md-4 col-lg-3 pl-md-2"> 1018 <div class="footer__headline h2">@GetString("Item.Area.FooterColumnTwo")</div> 1019 <div class="footer__item">@GetString("Item.Area.FooterInfo")</div> 1020 <nav class="navbar"> 1021 <ul class="navbar-nav d-block"> 1022 @foreach (var item in GetLoop("Item.Area.FooterColumnTwoLinks")) 1023 { 1024 string link = item.GetString("Item.Area.FooterColumnTwoLinks.Link"); 1025 1026 <li class="footer__item"> 1027 <span class="footer__icon icon icon-chevron-right"></span> 1028 <a class="footer__link" href="@link">@item.GetString("Item.Area.FooterColumnTwoLinks.Name")</a> 1029 </li> 1030 } 1031 </ul> 1032 </nav> 1033 </div> 1034 <div class="ml-auto d-flex align-items-end align-right"> 1035 @if (Pageview.Area.ID == 8) 1036 { 1037 <img class="mr-2 mb-3" src="/Files/System/Images/Shop/visa_mastercard.png" alt="visa mastercard" height="20"> 1038 <img class="mr-3 mb-3" src="/Files/System/Images/Shop/vipps.svg" alt="vipps" height="20"> 1039 } 1040 else 1041 { 1042 <img class="mr-2 mb-3" src="/Files/System/Images/Shop/dankort_visa_mastercard.png" alt="Dankort visa mastercard" height="20"> 1043 <img class="mr-3 mb-3" src="/Files/System/Images/Shop/icon-mobilepay.png" alt="mobilepay" height="20"> 1044 } 1045 1046 @foreach (var item in GetLoop("Item.Area.FooterSocialMediaLinks")) 1047 { 1048 string link = item.GetString("Item.Area.FooterSocialMediaLinks.Link"); 1049 string alt = item.GetString("Item.Area.FooterSocialMediaLinks.Name"); 1050 string image = item.GetString("Item.Area.FooterSocialMediaLinks.Icon"); 1051 string target = link.Contains("www") ? "_blank" : "_self"; 1052 1053 <a class="mr-3" href="@link" target="@target"> 1054 <img class="img-fluid" src="/Admin/Public/GetImage.ashx?Image=@image&width=40&height=40&Compression=80&format=webP" alt="@alt"> 1055 </a> 1056 } 1057 @{ 1058 string co2Link = GetString("Item.Area.Co2NeutraltLink"); 1059 string co2Billede = GetString("Item.Area.Co2NeutraltBillede"); 1060 } 1061 <a class="mr-3" href="@co2Link" target="_blank"> 1062 <img src="@co2Billede" alt="co2 neutral" width="100"> 1063 </a> 1064 </div> 1065 </div> 1066 </div> 1067 </div> 1068 </footer> 1069 @using Dynamicweb.Content 1070 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 1071 1072 1073 @{ 1074 var cookieName = "LanguageWebsite"; 1075 var cookieValue = ""; 1076 1077 if (Dynamicweb.Context.Current.Request.Cookies[cookieName] != null) 1078 { 1079 cookieValue = Dynamicweb.Context.Current.Request.Cookies[cookieName].Value; 1080 } 1081 1082 var areaService = new AreaService(); 1083 var activeAreas = areaService.GetAreas().Where(a => a.Active); 1084 1085 //tuple list of two strings 1086 var frontpageIds = new List<Tuple<string, string>>(); 1087 1088 if (cookieValue != "False" && cookieValue != "") 1089 { 1090 if (Pageview.Area.CultureInfo.TwoLetterISOLanguageName != cookieValue) 1091 { 1092 foreach (var activeArea in activeAreas) 1093 { 1094 if (activeArea.CultureInfo.TwoLetterISOLanguageName == cookieValue) 1095 { 1096 Dynamicweb.Context.Current.Response.Redirect("/Default.aspx?ID=" + pageService.GetFirstPageForArea(activeArea.ID).ID); 1097 } 1098 } 1099 } 1100 } 1101 1102 else if (cookieValue != "False") 1103 { 1104 var currentLanguage = Pageview.Area.CultureInfo.TwoLetterISOLanguageName; 1105 var pageLanguageNativeName = Translate(currentLanguage + "NativeName"); 1106 1107 1108 foreach (var activeArea in activeAreas) 1109 { 1110 var frontpage = pageService.GetFirstPageForArea(activeArea.ID); 1111 1112 var frontpageCode = activeArea.CultureInfo.TwoLetterISOLanguageName; 1113 frontpageIds.Add(new Tuple<string, string>(frontpageCode, frontpage.ID.ToString())); 1114 } 1115 1116 <div style="display: none" class="lang-mes"> 1117 <div id="currentLanguage" style="display: none">@pageLanguageNativeName</div> 1118 <div id="currentPageLanguageCode" style="display: none">@currentLanguage</div> 1119 1120 @foreach (var frontpageId in frontpageIds) 1121 { 1122 var id = "Page" + frontpageId.Item1; 1123 <div id="@id" style="display: none">@frontpageId.Item2</div> 1124 } 1125 <div class="lang-mes__content"> 1126 <div class="mes__content__message">@Translate("LanMes") </div> 1127 <div class="mes__content__buttons"> 1128 <a class="mes__content__buttons__yes mes-button" href="javascript:void(0)">@Translate("Yes")</a> 1129 <a class="mes__content__buttons__no mes-button" href="javascript:void(0)">@Translate("No")</a> 1130 </div> 1131 </div> 1132 </div> 1133 } 1134 1135 1136 <script> 1137 1138 document.addEventListener("DOMContentLoaded",function (){ 1139 1140 var userLanguage = navigator.language.split("-")[0].toLowerCase(); 1141 var userLanguageTranslated = ""; 1142 var userLanguageFrontpageId = "Default.Aspx?ID="; 1143 var currentPageLanguageCode = ""; 1144 1145 if (document.getElementById("currentPageLanguageCode") != null){ 1146 currentPageLanguageCode = document.getElementById("currentPageLanguageCode").innerText; 1147 1148 var sameLanguage = currentPageLanguageCode === userLanguage; 1149 1150 sameLanguage = sameLanguage || (currentPageLanguageCode === "nb" && userLanguage === "nn"); 1151 1152 1153 if (document.getElementById("currentPageLanguageCode") != null && !sameLanguage) 1154 { 1155 1156 switch(userLanguage) 1157 { 1158 case "da": 1159 userLanguageTranslated = '@Translate("daNativeName")' 1160 userLanguageFrontpageId += document.getElementById("Page" + userLanguage).innerText; 1161 break; 1162 case "en": 1163 userLanguageTranslated = '@Translate("enNativeName")' 1164 userLanguageFrontpageId += document.getElementById("Page" + userLanguage).innerText; 1165 break; 1166 case "nb": 1167 userLanguageTranslated = '@Translate("nbNativeName")' 1168 userLanguageFrontpageId += document.getElementById("Page" + userLanguage).innerText; 1169 break; 1170 case "nn": 1171 userLanguageTranslated = '@Translate("nnNativeName")' 1172 userLanguageFrontpageId += document.getElementById("Page" + "nb").innerText; 1173 userLanguage = "nb"; 1174 break; 1175 1176 1177 } 1178 1179 var userLanguageTranslated2 = userLanguageTranslated; 1180 if (currentPageLanguageCode === "da") 1181 { 1182 userLanguageTranslated2 = userLanguageTranslated2 + "e"; 1183 } 1184 1185 var langMes = document.getElementsByClassName("mes__content__message")[0]; 1186 var message = langMes.innerText.replace("#", userLanguageTranslated); 1187 message = message.replace("_", userLanguageTranslated2); 1188 langMes.innerText = langMes.innerText = message; 1189 var yesButton = document.getElementsByClassName("mes__content__buttons__yes")[0]; 1190 var noButton = document.getElementsByClassName("mes__content__buttons__no")[0]; 1191 yesButton.href = userLanguageFrontpageId; 1192 1193 var langMesContainer = document.getElementsByClassName("lang-mes")[0]; 1194 langMesContainer.style.display = "flex"; 1195 1196 // yesButton.addEventListener("click",function (){ 1197 // setCookie(userLanguage); 1198 // }); 1199 1200 noButton.addEventListener("click",function (){ 1201 setCookie("False"); 1202 langMesContainer.style.display = "none"; 1203 }); 1204 1205 function setCookie(cvalue) { 1206 const d = new Date(); 1207 d.setTime(d.getTime() + (30*24*60*60*1000)); 1208 let expires = "expires="+ d.toUTCString(); 1209 document.cookie = "LanguageWebsite" + "=" + cvalue + ";" + expires + ";path=/"; 1210 } 1211 }} 1212 }); 1213 </script> 1214 } 1215 </div> 1216 1217 <div class="js-video-modal modal fade in video-modal" id="videoModal" tabindex="-1" role="dialog" aria-labelledby="videoModal" aria-hidden="true"> 1218 <div class="modal-dialog modal-lg mw-100 px-5"> 1219 <!-- Modal content--> 1220 <div class="modal-content"> 1221 <div class="modal-header d-flex justify-content-end"> 1222 <button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal"> 1223 <span class="icon icon-close"></span> 1224 </button> 1225 </div> 1226 <div class="modal-body embed-responsive embed-responsive-16by9"> 1227 <iframe class="js-video-container modal-iframe video-modal__iframe embed-responsive-item" src="" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe> 1228 </div> 1229 </div> 1230 </div> 1231 </div> 1232 1233 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 1234 <div class="position-fixed d-flex flex-column mobile-nav-buttons d-lg-none"> 1235 <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"> 1236 <span class="icon icon-navigation"></span> 1237 <div class="btn-mobile-nav--text">MENU</div> 1238 </button> 1239 </div> 1240 1241 <div class="mobile-menu aside-panel js-aside js-view-navigation"> 1242 <div class="aside-panel__bcg js-aside-bcg js-aside-close-btn" data-view="navigation"></div> 1243 <div class="page-container position-relative h-100"> 1244 <div class="side-modal side-modal--navigation aside-panel__content flex-column js-view-navigation"> 1245 <button type="button" class="btn btn-link btn-close js-aside-close-btn text-white" data-view="navigation"> 1246 @Translate("PanelCloseButtonText", "LUK") <span class="icon icon-close ml-2"></span> 1247 </button> 1248 <div class="container-fluid aside-panel__container"> 1249 <div class="aside-panel__scroll-content"> 1250 <nav role="navigation" class="js-nav-panel"> 1251 <!-- lvl1 list --> 1252 <ul class="nav-list list-unstyled"> 1253 @RenderNavigation(new 1254 { 1255 StartLevel = 1, 1256 EndLevel = 3, 1257 expandmode = "all", 1258 Template = "mobile-navigation.xslt", 1259 Id = "mobile-nav" 1260 }) 1261 <li class="language-picker-item"> 1262 <a class="dropdown-item" href="https://www.junget.com/da-dk"> 1263 <img width="28" height="20" src="/webroot/images/da-dk.svg" alt="Junget - Denmark"> 1264 </a> 1265 <a class="dropdown-item" href="https://www.junget.com/en-gb"> 1266 <img width="28" height="20" src="/webroot/images/en-gb.svg" alt="Junget"> 1267 </a> 1268 <a class="dropdown-item" href="https://www.junget.com/nb-no"> 1269 <img width="28" height="20" src="/webroot/images/nb-NO.svg" alt="Junget"> 1270 </a> 1271 </li> 1272 </ul> 1273 </nav> 1274 </div> 1275 </div> 1276 </div> 1277 <div class="js-aside-close-btn nav-close-layer" data-view="navigation"></div> 1278 </div> 1279 </div> 1280 1281 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 1282 <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.2/umd/popper.min.js"></script> 1283 <script src="/webroot/js-static/swiper-bundle.js" type="text/javascript"></script> 1284 @{ 1285 var masterScripts = VestjyskMarketing.Helpers.Utilities.CacheBuster("/webroot/dist/main.js"); 1286 } 1287 <script src="@masterScripts" type="text/javascript"></script> 1288 <script src="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js" defer=""></script> 1289 1290 @RenderSnippet("GATracking") 1291 1292 @if (MainUserMain != null && MainUserMain.HasGroup(24) && myJungetPageList.Contains(Pageview.ID)) 1293 { 1294 // Bass Jacobsen 1295 <script src="/webroot/js-static/bootstrap3-typeahead.min.js" type="text/javascript"></script> 1296 <script src="/webroot/js-static/bloodhound.min.js" type="text/javascript"></script> 1297 1298 <script type="text/javascript"> 1299 $(document).ready(function () { 1300 // instantiate the bloodhound suggestion engine 1301 var datas = new Bloodhound({ 1302 datumTokenizer: Bloodhound.tokenizers.whitespace, 1303 queryTokenizer: Bloodhound.tokenizers.whitespace, 1304 prefetch: { url: '/da-dk/customerfeed-json', cache: false }, 1305 remote: { url: '/da-dk/customerfeed-json' } 1306 }); 1307 1308 // initialize the bloodhound suggestion engine 1309 datas.initialize(); 1310 1311 $(".typeahead").typeahead({ 1312 items: 15, 1313 display: 'name', 1314 highlight: true, 1315 minLength: 1, 1316 hint: true, 1317 fitToElement: true, 1318 source: datas.ttAdapter(), 1319 highlighter: function (item) { 1320 var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&'); 1321 1322 //split to separate HTML tags 1323 var item_parts = item.split(/(<[^>]+>)/g); 1324 1325 //Highlight only if it's not a tag 1326 var ret = ""; 1327 for (var i = 0; i < item_parts.length; i++) { 1328 if (item_parts[i].match(/(<[^>]+>)/)) { 1329 //this is a tag. 1330 ret += item_parts[i]; 1331 } else { 1332 //highlight if necessary 1333 ret += item_parts[i].replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) { 1334 return '<strong>' + match + '</strong>'; 1335 }); 1336 } 1337 } 1338 return ret; 1339 }, 1340 updater: function (item) { 1341 $("#DWExtranetSecondaryUserSelector").val(item.id); 1342 return item; 1343 } 1344 }); 1345 }); 1346 </script> 1347 } 1348 1349 @if (Pageview.Area.Item["Aktiv"] != null && Pageview.Area.Item["Aktiv"].ToString() == "True" && Pageview.User == null) 1350 { 1351 string img = Pageview.Area.Item["Billede"].ToString(); 1352 string header = Pageview.Area.Item["Overskrift"].ToString(); 1353 string body = Pageview.Area.Item["Br_dtekst"].ToString(); 1354 string buttonText = Pageview.Area.Item["KnapTekst"].ToString(); 1355 int cartPageID = GetPageIdByNavigationTag("cartpageid"); 1356 1357 <div id="mymodal" class="modal" tabindex="-1" role="dialog"> 1358 <div class="modal-dialog exit-intent-mw350px" role="document"> 1359 <div class="modal-content"> 1360 <div class="exit-intent"> 1361 @if (!string.IsNullOrEmpty(img)) 1362 { 1363 <img class="img-responsive exit-intent-img" src="/Admin/Public/GetImage.ashx?Image=@img&width=300&height=200&compression=85&crop=0"> 1364 } 1365 @if (!string.IsNullOrEmpty(header)) 1366 { 1367 <h5 class="modal-title text-center font-weight-bold mb-3">@header</h5> 1368 } 1369 <button type="button" class="close exit-intent-close" data-dismiss="modal" aria-label="Close"> 1370 <span aria-hidden="true">&times;</span> 1371 </button> 1372 @if (!string.IsNullOrEmpty(body)) 1373 { 1374 <div class="text-center"> 1375 <p class="exit-intent-text">@body</p> 1376 </div> 1377 } 1378 @if (!string.IsNullOrEmpty(buttonText)) 1379 { 1380 <a type="button" href="/Default.aspx?ID=@cartPageID" class="btn btn-primary btn-block font-weight-bolder">@buttonText</a> 1381 } 1382 </div> 1383 </div> 1384 </div> 1385 </div> 1386 } 1387 1388 @RenderSnippet("BeforeBodyEndScripts") 1389 </body> 1390 </html>