Error executing template "Designs/Junget/_parsed/PageProduct.parsed.cshtml"
System.IO.FileNotFoundException: D:\Web\DW3\Junget\Website\Files\System\Images\Junget-Images\Maskinbilleder-pdf\CNC bearbejdningscenter\RoverA_16_CNC_maskine_Biesse.jpg
at System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement)
at CompiledRazorTemplates.Dynamic.RazorEngine_41c984f1582149dc9437c1684a06268e.Execute() in D:\Web\DW3\Junget\Website\Files\Templates\Designs\Junget\_parsed\PageProduct.parsed.cshtml:line 844
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"> </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æ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&height=359&compression=70&crop=0&format=webP, /Admin/Public/GetImage.ashx?Image=@topImage&width=1440&height=359&compression=70&crop=0&format=webP 2x" media="(min-width: 992px)">
771 <source srcset="/Admin/Public/GetImage.ashx?Image=@topImage&width=768&height=359&compression=70&crop=0&format=webP, /Admin/Public/GetImage.ashx?Image=@topImage&width=768&height=359&compression=70&crop=0&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&height=250&compression=70&crop=0&format=webP" srcset="/Admin/Public/GetImage.ashx?Image=@topImage&width=375&height=250&compression=70&crop=0&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&quality=75&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&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"> </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">×</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>