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