Error executing template "Designs/vibocold/_parsed/productcategories.parsed.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at Vibocold.CustomModules.Helpers.GroupHelper.IsGroupNoIndex(Group group) in C:\repo\Vibocold\Vibocold\CustomModules\Helpers\GroupHelper.cs:line 37
at Vibocold.CustomModules.Helpers.GroupHelper.IsGroupNoIndex(String groupId, String languageId) in C:\repo\Vibocold\Vibocold\CustomModules\Helpers\GroupHelper.cs:line 32
at CompiledRazorTemplates.Dynamic.RazorEngine_3a96b67eab5d4ab0a1de74a2b6e39674.Execute() in D:\dynamicweb.net\Solutions\Vibocold2021.staging\Files\Templates\Designs\vibocold\_parsed\productcategories.parsed.cshtml:line 118
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 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
2 @using Dynamicweb;
3 @using Vibocold.CustomModules.Helpers
4
5 <!doctype html>
6 @{
7 string charset = "UTF-8";
8 bool useShortLang = Model.Area.Item.GetBoolean("MiscSettings.UseShort_HTMLLang");
9 string htmlLang = Pageview.GlobalTags.FirstOrDefault(t => t.Name.Equals("Global:Area.LongLang")).Value;
10 htmlLang = useShortLang && htmlLang.IndexOf("-") != -1 ? htmlLang.Substring(0, htmlLang.IndexOf("-")) : htmlLang;
11
12 var productId = Context.Current.Request["ProductID"];
13 var groupId = Context.Current.Request["GroupID"];
14
15 var darkMode = false;
16
17 if (!string.IsNullOrWhiteSpace(productId))
18 {
19 var product = Dynamicweb.Ecommerce.Services.Products.GetProductById(productId, "", Pageview.Area.EcomLanguageId);
20
21 darkMode = product?.DefaultGroup?.IsDarkMode() == true;
22 }
23
24 if (!string.IsNullOrWhiteSpace(groupId))
25 {
26 var group = Dynamicweb.Ecommerce.Services.ProductGroups.GetGroup(groupId, Pageview.Area.EcomLanguageId);
27
28 darkMode = group.IsDarkMode();
29 }
30
31 string pageId = Pageview.Page.ID.ToString();
32
33 string themeName = Model.PropertyItem.GetItem("Theme")?.GetString("Theme")?.ToLower();
34 string templateName = Pageview.GlobalTags.FirstOrDefault(t => t.Name.Equals("Global:Pageview.LayoutTemplate")).Value.Replace("test.", "").Replace(".cshtml", "").Replace(".html", "").Replace(".", "").ToLower();
35 string bodyClass = "standy " + templateName + "-page " + themeName + " " + Pageview.Page.NavigationTag;
36
37 int extranetParagraphId = Model.Area.Item.GetInt32("ExtranetParagraph");
38 string piwikScript = Model.Area.Item.GetItem("Piwik")?.GetString("PiwikScript");
39
40 var miniCartCookie = Context.Current.Request.Cookies["miniCartOpen"]?.Value;
41 bool cartOpen = !string.IsNullOrEmpty(miniCartCookie) && bool.TryParse(miniCartCookie, out bool miniCartCookieBool) ? miniCartCookieBool : false;
42 string cartOpenStyle = cartOpen ? "margin-top: 0px; position: fixed; overflow: hidden; width: 100%;" : string.Empty;
43 string cartOpenClass = cartOpen ? "scoll-lock" : string.Empty;
44
45 }
46 <html lang="@htmlLang" style="@cartOpenStyle" class="@cartOpenClass">
47 <head data-settings="disableparsing:true">
48 <script>
49 window.dataLayer = window.dataLayer || [];
50 </script>
51 <meta charset="@charset">
52 <meta http-equiv="X-UA-Compatible" content="IE=edge">
53 <meta name="viewport" content="width=device-width, initial-scale=1.0">
54 <title>@Model.Title</title>
55 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
56
57 @{
58 string pageTitle = Model.Title;
59 string pageOGTitle = Model.PropertyItem.GetItem("SocialMedia")?.GetString("Title");
60
61 string primarydomain = Pageview.GlobalTags.FirstOrDefault(t => t.Name.Equals("Global:Request.Scheme")).Value +"://" + Pageview.GlobalTags.FirstOrDefault(t => t.Name.Equals("Global:Area.Primarydomain")).Value;
62 string pageDescription = Model.Description;
63 string pageOGDescription = Model.PropertyItem.GetItem("SocialMedia")?.GetString("Description");
64
65 string ogSiteName = Model.Area.Item.GetItem("SocialMedia")?.GetString("SiteName");
66 string ogTitle = !string.IsNullOrWhiteSpace(pageOGTitle) ? pageOGTitle : pageTitle;
67 string ogUrl = primarydomain + Pageview.SearchFriendlyUrl;
68 string ogDescription = !string.IsNullOrWhiteSpace(pageOGDescription) ? pageOGDescription : pageDescription; ;
69
70 bool areaOGImageHasFocalPoint = Model.Area.Item.GetItem("SocalMedia")?.GetFile("DefaultImage")?.HasFocalPoint() == true;
71 string areaOGImage = "/admin/public/getimage.ashx?Image=" + Model.Area.Item.GetItem("SocialMedia").GetString("DefaultImage");
72 areaOGImage = areaOGImageHasFocalPoint ? areaOGImage + "&Crop=7&" + Model.Area.Item.GetItem("SocalMedia").GetItem("DefaultImage").GetString("FocalPointParameters") : "&Crop=0";
73
74 bool pageOGImageHasFocalPoint = Model.PropertyItem.GetItem("SocialMedia")?.GetFile("Image")?.HasFocalPoint() == true;
75 string pageOGImage = "/admin/public/getimage.ashx?Image=" + Model.PropertyItem.GetItem("SocialMedia")?.GetString("Image");
76 pageOGImage = pageOGImageHasFocalPoint ? pageOGImage + "&Crop=7&" + Model.PropertyItem.GetItem("SocialMedia")?.GetItem("Image")?.GetString("FocalPointParameters") : "&Crop=0";
77
78 string ogImage = !string.IsNullOrWhiteSpace(Model.PropertyItem.GetItem("SocialMedia")?.GetString("Image")) ? pageOGImage : areaOGImage;
79
80 string facebookDomainVerificationId = Model.Area.Item.GetString("Item.Area.FacebookDomainVerification_Id");
81 }
82 <meta property="og:site_name" content="@ogSiteName" />
83 <meta property="og:title" content="@ogTitle" />
84 <meta property="og:url" content="@ogUrl" />
85 <meta property="og:description" content="@ogDescription" />
86 <meta property="og:image" content="@ogImage" />
87
88 @if (!string.IsNullOrWhiteSpace(facebookDomainVerificationId))
89 {
90 <meta name="facebook-domain-verification" content="facebookDomainVerificationId" />
91 }
92 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
93
94 @{
95 string cssEditDate = System.IO.File.GetLastWriteTime(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/css/main.min.css")).ToString();
96 cssEditDate = cssEditDate.Replace(":", "").Replace(" ", "").Replace("-", "");
97 }
98 <link rel="stylesheet" href="/files/templates/designs/vibocold/assets/css/main.min.css?v=@cssEditDate" />
99 @using Dynamicweb.Frontend
100 @using Vibocold.CustomModules.Helpers
101 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
102
103 @{
104 string sfu = Pageview.SearchFriendlyUrl;
105
106 var sfuProductId = Dynamicweb.Context.Current.Request["ProductID"];
107 var sfuGroupId = Dynamicweb.Context.Current.Request["GroupID"];
108 var noindex = false;
109 var languageId = PageView.Current().Area.EcomLanguageId;
110
111 if (!string.IsNullOrWhiteSpace(sfuProductId))
112 {
113 noindex = ProductHelper.IsProductNoIndex(sfuProductId, languageId);
114 }
115
116 if (!string.IsNullOrWhiteSpace(sfuGroupId))
117 {
118 noindex = GroupHelper.IsGroupNoIndex(sfuGroupId, languageId);
119 }
120
121 }
122 @Model.MetaTags
123 @if (System.Web.HttpContext.Current.Request.Url.Host.Contains("staging.vibocold.dk") || noindex)
124 {
125 <meta name="robots" content="noindex,nofollow" />
126 }
127 @foreach (var language in Model.Area.Languages)
128 {
129 string url = FriendlyUrlHelper.GetFriendlyPageUrl(Model.ID, language.Culture);
130
131 var groupUrl = FriendlyUrlHelper.GetFriendlyGroupUrl(Dynamicweb.Context.Current.Request["GroupID"], Model.ID, language.Culture);
132 var productUrl = FriendlyUrlHelper.GetFriendlyProductUrl(sfuProductId, Model.ID, language.Culture);
133
134 if (!string.IsNullOrWhiteSpace(Dynamicweb.Context.Current.Request["GroupID"]) && string.IsNullOrWhiteSpace(productUrl))
135 {
136 url = groupUrl;
137 }
138 else if (!string.IsNullOrWhiteSpace(sfuProductId))
139 {
140 url = productUrl;
141 }
142
143 if (language.PrimaryDomain.IndexOf("dev.vibocold.dk") == -1 && !string.IsNullOrWhiteSpace(url))
144 {
145 if (language.IsCurrent && !Model.MetaTags.Contains("canonical"))
146 {
147 <link rel="canonical" href="@url" />
148 }
149 <link rel="alternate" href='@url' hreflang='@language.Culture' />
150
151 if(language.Culture == "en-GB")
152 {
153 <link rel="alternate" href='@url' hreflang='x-default' />
154 }
155 }
156 }
157 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
158
159 @{
160 string schemaOrgName = Model.Area.Item.GetItem("Organization")?.GetString("Name");
161 string schemaOrgAddress = Model.Area.Item.GetItem("Organization")?.GetString("Address");
162 string schemaOrgPostalCode = Model.Area.Item.GetItem("Organization")?.GetString("ZipCode");
163 string schemaOrgCity = Model.Area.Item.GetItem("Organization")?.GetString("City");
164 string schemaOrgRegion = Model.Area.Item.GetItem("Organization")?.GetString("Region");
165 string schemaOrgCountry = Model.Area.Item.GetItem("Organization")?.GetString("Country");
166 string schemaOrgPhone = Model.Area.Item.GetItem("Organization")?.GetString("Phone");
167 string schemaOrgEmail = Model.Area.Item.GetItem("Organization")?.GetString("Email");
168 string linkedInURL = Model.Area.Item.GetItem("SocialMedia")?.GetString("LinkedIn");
169 string facebookURL = Model.Area.Item.GetItem("SocialMedia")?.GetString("Facebook");
170 string youtubeURL = Model.Area.Item.GetItem("SocialMedia")?.GetString("YouTube");
171 string instagramURL = Model.Area.Item.GetItem("SocialMedia")?.GetString("Instagram");
172 string salePhone = Model.Area.Item.GetItem("Footer")?.GetString("PhoneSales");
173 string saleEmail = Model.Area.Item.GetItem("Footer")?.GetString("EmailSales");
174 string servicePhone = Model.Area.Item.GetItem("Footer")?.GetString("PhoneService");
175 string serviceEmail = Model.Area.Item.GetItem("Footer")?.GetString("EmailService");
176
177 string sameAs = "";
178
179 if (!string.IsNullOrWhiteSpace(linkedInURL))
180 {
181 sameAs += "\"" + linkedInURL + "\"";
182 }
183
184 if (!string.IsNullOrWhiteSpace(facebookURL))
185 {
186 if (sameAs.Length > 0)
187 {
188 sameAs += ",\"" + facebookURL + "\"";
189 }
190 else
191 {
192 sameAs += "\"" + facebookURL + "\"";
193 }
194 }
195
196 if (!string.IsNullOrWhiteSpace(youtubeURL))
197 {
198 if (sameAs.Length > 0)
199 {
200 sameAs += ",\"" + youtubeURL + "\"";
201 }
202 else
203 {
204 sameAs += "\"" + youtubeURL + "\"";
205 }
206 }
207
208 if (!string.IsNullOrWhiteSpace(instagramURL))
209 {
210 if (sameAs.Length > 0)
211 {
212 sameAs += ",\"" + instagramURL + "\"";
213 }
214 else
215 {
216 sameAs += "\"" + instagramURL + "\"";
217 }
218 }
219
220 var contactPoints = new List<string>();
221
222 // Sales contact point
223 if (!string.IsNullOrWhiteSpace(salePhone) || !string.IsNullOrWhiteSpace(saleEmail))
224 {
225 var salesContact = $@"
226 {{
227 ""@@type"": ""ContactPoint"",
228 ""telephone"": ""{salePhone}"",
229 ""email"": ""{saleEmail}"",
230 ""contactType"": ""sales"",
231 ""areaServed"": ""DK"",
232 ""availableLanguage"": [""Danish"", ""English""]
233 }}";
234 contactPoints.Add(salesContact.Trim());
235 }
236
237 // Service contact point
238 if (!string.IsNullOrWhiteSpace(servicePhone) || !string.IsNullOrWhiteSpace(serviceEmail))
239 {
240 var serviceContact = $@"
241 {{
242 ""@@type"": ""ContactPoint"",
243 ""telephone"": ""{servicePhone}"",
244 ""email"": ""{serviceEmail}"",
245 ""contactType"": ""service"",
246 ""areaServed"": ""DK"",
247 ""availableLanguage"": [""Danish""]
248 }}";
249 contactPoints.Add(serviceContact.Trim());
250 }
251 }
252 <script type="application/ld+json">
253 {
254 "@@context": "http://schema.org",
255 "@@type": "Organization",
256 "name": "@schemaOrgName",
257 "address": {
258 "@@type": "PostalAddress",
259 "streetAddress": "@schemaOrgAddress",
260 "postalCode": "@schemaOrgPostalCode",
261 "addressLocality": "@schemaOrgCity",
262 "addressRegion": "@schemaOrgRegion",
263 "addressCountry": "@schemaOrgCountry"
264 },
265 "url": "@System.Web.HttpContext.Current.Request.Url.Scheme@("://")@System.Web.HttpContext.Current.Request.Url.Host",
266 "telephone": "@schemaOrgPhone",
267 "email": "@schemaOrgEmail",
268 "description": "Vibocold - Totalløsninger i køl, frys og varmeregulerende produkter",
269 "vatID": "DK71383911",
270 "sameAs": [
271 @sameAs
272 ]
273 @if (contactPoints.Count > 0)
274 {
275 @:,"contactPoint": [
276 @(string.Join(",", contactPoints));
277 @:]
278 }
279 }
280 </script>
281 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
282
283 @{
284 string ipAddress = System.Web.HttpContext.Current.Request.UserHostAddress;
285 string googleSiteVerificationID = Model.Area.Item.GetItem("Google").GetString("SiteVerification_ID");
286 string primaryGoogleTagManagerID = Model.Area.Item.GetItem("Google").GetString("Primary_Google_Tag_Manager_ID");
287 string secondaryGoogleTagManagerID = Model.Area.Item.GetItem("Google").GetString("Secondary_Google_Tag_Manager_ID");
288 }
289 <script>
290 dataLayer = [{
291 'ipaddress': '@ipAddress'
292 }];
293 </script>
294 @if (!string.IsNullOrWhiteSpace(googleSiteVerificationID))
295 {
296 <meta name="google-site-verification" content="@googleSiteVerificationID" />
297 }
298 @if (!string.IsNullOrEmpty(primaryGoogleTagManagerID))
299 {
300 <script>
301 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
302 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
303 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
304 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
305 })(window, document, 'script', 'dataLayer', '@primaryGoogleTagManagerID');
306 </script>
307 }
308 @if (!string.IsNullOrEmpty(secondaryGoogleTagManagerID))
309 {
310 <script>
311 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
312 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
313 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
314 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
315 })(window, document, 'script', 'dataLayer', '@secondaryGoogleTagManagerID');
316 </script>
317 }
318 @SnippetStart("GoogleNoScript")
319 @if (!string.IsNullOrEmpty(primaryGoogleTagManagerID))
320 {
321 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=@primaryGoogleTagManagerID" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
322 }
323 @if (!string.IsNullOrEmpty(secondaryGoogleTagManagerID))
324 {
325 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=@secondaryGoogleTagManagerID" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
326 }
327 @SnippetEnd("GoogleNoScript")
328 @RenderSnippet("PreloadPrefetchPreconect")
329 <link rel="icon" type="image/x-icon" href="/Files/Images/Hjemmeside/Graphic/favicon.ico">
330 <link href="/Files/Images/Hjemmeside/Graphic/apple-touch-icon.png" rel="icon" type="image/png">
331 </head>
332 <body class="@bodyClass" data-page-id="@pageId">
333 @{
334 int slideInCart = Model.Area.Item.GetInt32("SlideInCartParagraph");
335
336 if (slideInCart > 0)
337 {
338 <text>@RenderParagraphContent(slideInCart)</text>
339 }
340 }
341 @piwikScript
342 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
343
344 @SnippetStart("PiwikCartUpdate")
345 <script type="text/javascript">
346 window._paq = window._paq || [];
347 var dataLayerObj = dataLayer.find(function (obj) { return obj.event === "cart_update" });
348 if (dataLayerObj) {
349 var cart_amount = dataLayerObj.cart_amount;
350 var products = dataLayerObj.products;
351 products.forEach(function (product) {
352 _paq.push(["addEcommerceItem", product.sku, product.name, product.category, product.price, product.quantity]);
353 });
354 _paq.push(["trackEcommerceCartUpdate", cart_amount]);
355 }
356 </script>
357 @SnippetEnd("PiwikCartUpdate")
358 @SnippetStart("PiwikOrderConfirm")
359 <script type="text/javascript">
360 window._paq = window._paq || [];
361 var dataLayerObj = dataLayer.find(function (obj) { return obj.event === "order_confirmation" });
362 if (dataLayerObj) {
363 var orderId = dataLayerObj.order_id;
364 var grandTotal = dataLayerObj.grand_total;
365 var subTotal = dataLayerObj.subtotal;
366 var tax = dataLayerObj.tax;
367 var shipping = dataLayerObj.shipping;
368 var discount = dataLayerObj.discount;
369 var products = dataLayerObj.products;
370 products.forEach(function (product) {
371 _paq.push(["addEcommerceItem", product.sku, product.name, product.category, product.price, product.quantity]);
372 });
373 _paq.push(["trackEcommerceOrder", orderId, grandTotal, subTotal, tax, shipping, discount]);
374 }
375 </script>
376 @SnippetEnd("PiwikOrderConfirm")
377 @RenderSnippet("GoogleNoScript")
378 <a href="#main" class="skip-to-main">@Translate("Translate_Skip_to_main_content")</a>
379 @using Dynamicweb.Frontend
380 @using Vibocold.CustomModules.Helpers
381 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
382
383 @{
384 int orderlineCount = Convert.ToInt32(Model.Cart?.TotalProductsCount);
385
386 bool hasUser = Model.CurrentUser.ID > 0;
387 Dynamicweb.Security.UserManagement.User user = null;
388 if (hasUser)
389 {
390 user = Dynamicweb.Security.UserManagement.User.GetUserByID(Model.CurrentUser.ID);
391 }
392 string secondaryCssClass = "navigation-secondary";
393 string searchPageId = Model.Area.Item.GetItem("MiscSettings")?.GetString("SearchPage");
394 string searchAction = "/Default.aspx?Id=" + searchPageId;
395
396 if (orderlineCount > 0 && hasUser)
397 {
398 secondaryCssClass += " navigation-secondary--has-cart navigation-secondary--has-user";
399 }
400
401 }
402 <nav class="navigation">
403 <a href="/" class="navigation__logo">
404 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/vibocold_logo.svg")))
405 {
406 <text>@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/vibocold_logo.svg"))</text>
407 }
408 </a>
409 @{
410 var navigationSettings = new Dynamicweb.Frontend.Navigation.NavigationSettings()
411 {
412 RootAreaId = 0,
413 RootPageId = 0,
414 StartLevel = 1,
415 StopLevel = 3,
416 ExpandMode = Dynamicweb.Frontend.Navigation.ExpandMode.All
417 };
418
419 var navigationTemplate = "master/partials/navigation.desktop.cshtml";
420
421 }
422 <div class="navigation__desktop">
423 @Navigation.RenderNavigation(navigationTemplate, navigationSettings)
424 </div>
425 <div class="navigation__mobile">
426 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
427
428 <div class="dwnavigation onlyMobile" id="primaryNavigation" data-settings="template:ul-li.xslt;startlevel:1;endlevel:3;expandmode:all;id:navigation-primary"></div>
429 @RenderNavigation(
430 new
431 {
432 StartLevel = 1,
433 EndLevel = 3,
434 ExpandMode = Dynamicweb.Frontend.Navigation.ExpandMode.All,
435 id = "navigation-primary",
436 Template = "ul-li.xslt"
437 }
438 )
439 </div>
440 <form class="navigation__search form" action="@searchAction">
441 <input type="hidden" name="Id" value="@searchPageId" />
442 <div class="form__field-wrap form__field-wrap--search">
443 <input type="text" name="q" placeholder="@Translate("Translate_Navigation_Search-placeholder")" class="form__field" />
444 <input type="hidden" name="lang" placeholder="Søg" class="form__field" value="@Pageview.Area.EcomLanguageId" />
445 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/search.svg")))
446 {
447 <span class="icon icon-search">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/search.svg"))</span>
448 }
449 </div>
450 </form>
451 <ul class="@secondaryCssClass">
452 @* RP: TMP REMOVED AS WE DON'T HAVE "TILBUDSLISTE" JUST YET *@
453 <!--li class="navigation-secondary__item navigation-secondary__item--favourites">
454 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/heart.svg")))
455 {
456 <span class="icon icon-heart">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/heart.svg"))</span>
457 }
458 <span class="navigation-secondary__item-counter">0</span>
459 </li-->
460 <li class="navigation-secondary__item navigation-secondary__item--language">
461 <select onchange="location = this.options[this.selectedIndex].value;" class="navigation-secondary__language-select">
462
463 @{
464 IEnumerable<Dynamicweb.Content.Area> areas = Dynamicweb.Services.Areas.GetAreas().OrderByDescending(a => a.ID == Model.Area.ID);
465 var scheme = !string.IsNullOrEmpty(Pageview.GlobalTags.FirstOrDefault(t => t.Name.Equals("Global:Request.Scheme")).Value + "://") ? Pageview.GlobalTags.FirstOrDefault(t => t.Name.Equals("Global:Request.Scheme")).Value + "://" : "https://";
466 }
467 @foreach (Dynamicweb.Content.Area area in areas)
468 {
469 if (!string.IsNullOrEmpty(area.DomainLock))
470 {
471
472 string url = FriendlyUrlHelper.GetFriendlyPageUrl(Model.ID, area.Culture);
473
474 var groupUrl = FriendlyUrlHelper.GetFriendlyGroupUrl(Dynamicweb.Context.Current.Request["GroupID"], Model.ID, area.Culture);
475 var productUrl = FriendlyUrlHelper.GetFriendlyProductUrl(Dynamicweb.Context.Current.Request["ProductID"], Model.ID, area.Culture);
476
477 if (!string.IsNullOrWhiteSpace(Dynamicweb.Context.Current.Request["GroupID"]))
478 {
479 url = groupUrl;
480 }
481 else if (!string.IsNullOrWhiteSpace(Dynamicweb.Context.Current.Request["ProductID"]))
482 {
483 url = productUrl;
484 }
485
486 if (string.IsNullOrWhiteSpace(url))
487 {
488 url = scheme + area.DomainLock;
489 }
490
491 <option class="navigation-secondary__language @(area.ID == Model.Area.ID ? "navigation-secondary__language--active" : "")" value="@(url)">@(area.Culture.Split('-')?.FirstOrDefault()?.ToUpper())</option>
492 }
493 }
494
495 </select>
496 </li>
497
498 <li class="navigation-secondary__item navigation-secondary__item--cart" data-action="slide-in" data-target="slideInCart">
499 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/cart.svg")))
500 {
501 <span class="icon icon-cart">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/cart.svg"))</span>
502 }
503 @if (orderlineCount > 0)
504 {
505 <span class="navigation-secondary__item-counter">@orderlineCount</span>
506 }
507 </li>
508 @if (hasUser)
509 {
510 <li class="navigation-secondary__item navigation-secondary__item--user" data-action="slide-in" data-target="signOut">
511 @{
512 string userFirstName = user.FirstName;
513 string userLastName = user.LastName;
514 string userCompany = user.Company;
515 string user_UserName = user.UserName;
516 string userInitials = string.Empty;
517 if (userFirstName?.Length > 0)
518 {
519 userInitials = userInitials + userFirstName?.Substring(0, 1);
520 }
521 if (userLastName?.Length > 0)
522 {
523 userInitials = userInitials + userLastName?.Substring(0, 1);
524 }
525 if (userInitials.Length == 0 && user_UserName.Length > 1)
526 {
527 userInitials = user_UserName.Substring(0, 2);
528 }
529 if (userInitials.Length == 0 && userCompany.Length > 1)
530 {
531 userInitials = userCompany.Substring(0, 2);
532 }
533 }
534 @if (userInitials.Length > 0)
535 {
536 <div class="navigation-secondary__profile-wrapper">
537 <span class="navigation-secondary__initial">@userInitials.ToUpper()</span>
538 </div>
539 }
540 else if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/profile.svg")))
541 {
542 <div class="navigation-secondary__profile-wrapper">
543 <span class="icon icon-profile icon-profile-logged-in">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/profile-solid.svg"))</span>
544 </div>
545 }
546
547 @SnippetStart("SlideIns")
548 @{
549 string close = Translate("Translate_Slide-in_close");
550 string signOutHeadline = Translate("Translate_Sign-out_headline");
551 string signOutText = Translate("Translate_Sign-out_text");
552 string userName = Model.CurrentUser.Name;
553 string userUserName = Model.CurrentUser.UserName;
554 string signOutButtonText = Translate("Translate_Sign-out_button-text");
555 string redirectUrl = RedirectHelper.GetLoginReturnUrl();
556 string formAction = "/Admin/Public/ExtranetLogoff.aspx?Redirect=" + redirectUrl;
557
558 string welcomeText = Translate("Translate_Sign-out_welcome-text");
559 string welcomeSummary = Translate("Translate_Sign-out_summary-text");
560 Dynamicweb.Content.PageService pageService = new Dynamicweb.Content.PageService();
561
562 int customerCenterPageId = pageService.GetPageByNavigationTag(Model.Area.ID, "Kundecenter")?.ID ?? 0;
563 var productsPageId = pageService.GetPageByNavigationTag(Model.Area.ID, "ProductList")?.ID ?? 0;
564 var myProductsPageId = pageService.GetPageByNavigationTag(Model.Area.ID, "MyProducts")?.ID ?? 0;
565 var sparepartsPageId = pageService.GetPageByNavigationTag(Model.Area.ID, "Spareparts")?.ID ?? 0;
566
567 IEnumerable<Dynamicweb.Content.Page> customerCenterPages = pageService.GetPagesByParentID(customerCenterPageId);
568
569 var myProductsUrl = SearchEngineFriendlyURLs.GetFriendlyUrl($"Default.aspx?ID={myProductsPageId}&GroupID={"GROUP368"}", areas.FirstOrDefault(x => x.ID == Model.Area.ID).EcomLanguageId);
570 var sparepartsPageUrl = SearchEngineFriendlyURLs.GetFriendlyUrl(sparepartsPageId);
571
572 bool hasMyProducts = false;
573 var _assortmentService = new Dynamicweb.Ecommerce.Assortments.AssortmentService();
574 var _productService = new Dynamicweb.Ecommerce.Products.ProductService();
575
576 if (UserProductAccessHelper.IsUserVibocoldUser(user))
577 {
578 var myProducts = _productService.GetProductsByGroupId("GROUP368", false, Pageview.Area.EcomLanguageId, false);
579 var userAssortmentsIds = _assortmentService.GetAssortmentIdsByUser(user);
580 hasMyProducts = myProducts.Where(mp => _assortmentService.GetAssortmentsByProduct(mp).Where(a => userAssortmentsIds.Contains(a.ID)).Any()).Any();
581 }
582 else
583 {
584 var myProducts = _productService.GetProductsByGroupId("GROUP368", true, Pageview.Area.EcomLanguageId, false);
585 var userAssortmentsIds = _assortmentService.GetAssortmentIdsByUser(user);
586 hasMyProducts = myProducts.Where(mp => mp.Active == true && mp.Discontinued == false && _assortmentService.GetAssortmentsByProduct(mp).Where(a => userAssortmentsIds.Contains(a.ID)).Any()).Any();
587 }
588 }
589 <div class="slide-in" id="signOut">
590 <div class="slide-in__content slide-in__content--center-content customer-center module-white">
591 <div class="slide-in__close">
592 <span></span>
593 <small>@close</small>
594 </div>
595 <div class="slide-in__headline new-style-h3">@welcomeText @user.FirstName</div>
596 <p class="customer-center__user-container">@user.Company (@userUserName)</p>
597 <p class="customer-center__welcome-summary">@welcomeSummary</p>
598
599 @if (customerCenterPages.Any())
600 {
601 <ul class="customer-center__list">
602 @foreach (var page in customerCenterPages)
603 {
604 <li class="customer-center__item">
605 <a class="btn btn-cta customer-center__link" href="@page.GetPageHrefValue()">
606 <span class="btn__text">@page.GetDisplayName()</span>
607 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/chevron.svg")))
608 {
609 <span class="icon icon-arrow-large">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/chevron.svg"))</span>
610 }
611 </a>
612 </li>
613 }
614 @if (!string.IsNullOrWhiteSpace(myProductsUrl) && hasMyProducts)
615 {
616 <li class="customer-center__item my-products-item">
617 <a class="btn btn-cta customer-center__link" href="@myProductsUrl">
618 <span class="btn__text">@Translate("Translate_Slide-in_My_Products")</span>
619 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/chevron.svg")))
620 {
621 <span class="icon icon-arrow-large">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/chevron.svg"))</span>
622 }
623 </a>
624 </li>
625 }
626 @if (UserProductAccessHelper.IsUserVibocoldUser(user))
627 {
628 <li class="customer-center__item">
629 <a class="btn btn-cta customer-center__link" href="@sparepartsPageUrl">
630 <span class="btn__text">@Translate("Translate_Slide-in_Spareparts")</span>
631 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/chevron.svg")))
632 {
633 <span class="icon icon-arrow-large">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/chevron.svg"))</span>
634 }
635 </a>
636 </li>
637 }
638 </ul>
639 }
640 <form class="form form--login" name="ExtranetUserForm" id="ExtranetUserForm" method="post" action="@formAction">
641 <div class="form__input-container">
642 <button type="submit" class="btn btn-primary">@signOutButtonText</button>
643 </div>
644 </form>
645 </div>
646 </div>
647 @SnippetEnd("SlideIns")
648 </li>
649 }
650 else
651 {
652 <li class="navigation-secondary__item" data-action="slide-in" data-target="signIn">
653 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/profile.svg")))
654 {
655 <span class="icon icon-profile">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/profile.svg"))</span>
656 }
657 </li>
658 }
659 </ul>
660 <button class="navigation__btn"><span></span></button>
661 </nav>
662 <main id="main" class="@($"{(darkMode ? "darkmode" : "" )}")">
663 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
664
665
666
667 @{
668 var isMyProducts = Dynamicweb.Context.Current.Request["GroupID"] == "GROUP368";
669
670 var listClass = $"module module-white product-list {(isMyProducts ? "my-products" : "")}";
671 }
672
673 <article class="@listClass">
674 @if (!isMyProducts)
675 {
676 <nav class="sidebar-navigation js-expanded" id="sidebarNavigation" aria-hidden="false" aria-labelledby="sidebarNavigationLabel">
677 <div class="sidebar-navigation__inner">
678 <span class="sidebar-navigation__headline">@Translate("Translate_SidebarNavigation_ProductCategories")</span>
679 @RenderNavigation(
680 new
681 {
682 StartLevel = 1,
683 EndLevel = 1,
684 ParentId = 0,
685 ExpandMode = Dynamicweb.Frontend.Navigation.ExpandMode.PathOnly,
686 id = "sidebar-navigation__list",
687 Template = "sidebar-navigation.xslt"
688 }
689 )
690 </div>
691 </nav>
692 }
693 @Model.Placeholder("dwcontent", "content", "default:true;sort:1")
694 </article>
695
696 <button class="scroll-top">
697 <span class="scroll-top__icon">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/chevron.svg"))</span>
698 </button>
699 </main>
700 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
701
702 @{
703 string headlineSales = Model.Area.Item.GetItem("Footer")?.GetString("HeadlineSales");
704 string phoneSales = Model.Area.Item.GetItem("Footer")?.GetString("PhoneSales");
705 string phoneSalesLink = "tel:" + phoneSales.Replace(" ", "");
706 string emailSales = Model.Area.Item.GetItem("Footer")?.GetString("EmailSales");
707 string emailSalesLink = "mailto:" + emailSales.Replace(" ", "");
708 string openingHoursLabel = Model.Area.Item.GetItem("Footer")?.GetString("OpeningHoursLabel");
709
710 string headlineService = Model.Area.Item.GetItem("Footer")?.GetString("HeadlineService");
711 string phoneService = Model.Area.Item.GetItem("Footer")?.GetString("PhoneService");
712 string phoneServiceLink = "tel:" + phoneService.Replace(" ", "");
713 string emailService = Model.Area.Item.GetItem("Footer")?.GetString("EmailService");
714 string emailServiceLink = "mailto:" + emailService.Replace(" ", "");
715
716 string organizationName = Model.Area.Item.GetItem("Organization")?.GetString("Name");
717 string organizationAddress = Model.Area.Item.GetItem("Organization")?.GetString("Address");
718 string organizationZipCode = Model.Area.Item.GetItem("Organization")?.GetString("Zipcode");
719 string organizationCity = Model.Area.Item.GetItem("Organization")?.GetString("City");
720
721 string directionsLink = Model.Area.Item.GetItem("Footer")?.GetItem("GetDirectionsLink")?.GetString("Link");
722 string directionsTitle = Model.Area.Item.GetItem("Footer")?.GetItem("GetDirectionsLink")?.GetString("Title");
723 string directionsText = Model.Area.Item.GetItem("Footer")?.GetItem("GetDirectionsLink")?.GetString("Text");
724
725 string organizationPhone = Model.Area.Item.GetItem("Organization")?.GetString("Phone");
726 string organizationPhoneLink = "tel:" + organizationPhone.Replace(" ", "");
727 string organizationEmail = Model.Area.Item.GetItem("Organization")?.GetString("Email");
728 string organizationEmailLink = "mailto:" + organizationEmail.Replace(" ", "");
729
730 string cvrLabel = Model.Area.Item.GetItem("Footer")?.GetString("CVRLabel");
731 string cvr = Model.Area.Item.GetItem("Footer")?.GetString("CVR");
732
733 string controlReportLink = Model.Area.Item.GetItem("Footer")?.GetItem("ControlReport")?.GetString("Link");
734 string controlReportTitle = Model.Area.Item.GetItem("Footer")?.GetItem("ControlReport")?.GetString("Title");
735 string controlReportText = Model.Area.Item.GetItem("Footer")?.GetItem("ControlReport")?.GetString("Text");
736 string linkedInUrl = Model.Area.Item.GetItem("SocialMedia").GetString("LinkedIn");
737 string facebookUrl = Model.Area.Item.GetItem("SocialMedia").GetString("Facebook");
738 string youTubeUrl = Model.Area.Item.GetItem("SocialMedia").GetString("YouTube");
739
740 @* This is for the header on the contact page. It needs the info from sales + service and they are not accesible in the paragraph template like here *@
741 <text>
742 @SnippetStart("HeaderContactInfo")
743 <li class="header__contact-info-item">
744 <span class="preline">@headlineSales</span>
745 <a class="header__contact-info-link" href="@phoneSalesLink">@phoneSales</a>
746 <a class="header__contact-info-link" href="@emailSalesLink">@emailSales</a>
747 </li>
748 <li class="header__contact-info-item">
749 <span class="preline">@headlineService</span>
750 <a class="header__contact-info-link" href="@phoneServiceLink">@phoneService</a>
751 <a class="header__contact-info-link" href="@emailServiceLink">@emailService</a>
752 <span class="header__contact-info-byline">
753 <span>@openingHoursLabel</span>
754 @foreach (var openingHour in Model.Area.Item.GetItem("Footer").GetItems("OpeningHours"))
755 {
756 <span>@openingHour.GetString("Text")</span>
757 }
758 </span>
759 </li>
760 @SnippetEnd("HeaderContactInfo")
761 @SnippetStart("NavigationContactInfo")
762 <div>
763 <span class="preline">@headlineSales</span>
764 <a class="navigation-primary__contact-link" href="@phoneSalesLink">@phoneSales</a>
765 <a class="navigation-primary__contact-link" href="@emailSalesLink">@emailSales</a>
766 </div>
767 <div>
768 <span class="preline">@headlineService</span>
769 <a class="navigation-primary__contact-link" href="@phoneServiceLink">@phoneService</a>
770 <a class="navigation-primary__contact-link" href="@emailServiceLink">@emailService</a>
771 <b class="navigation-primary__opening-hours">
772 <span>@openingHoursLabel</span>
773 @foreach (var openingHour in Model.Area.Item.GetItem("Footer").GetItems("OpeningHours"))
774 {
775 <span>@openingHour.GetString("Text")</span>
776 }
777 </b>
778 </div>
779 @SnippetEnd("NavigationContactInfo")
780 </text>
781 }
782 <footer class="footer module module-blue-dark">
783 <div class="footer__contact">
784 <div class="footer__contact-sale">
785 <span class="preline">@headlineSales</span>
786 <a href="@phoneSalesLink">@phoneSales</a>
787 <a href="@emailSalesLink">@emailSales</a>
788 </div>
789 <div class="footer__contact-service">
790 <span class="preline">@headlineService</span>
791 <a href="@phoneServiceLink">@phoneService</a>
792 <a href="@emailServiceLink">@emailService</a>
793 <div class="footer__contact-service-byline">
794 <span>@openingHoursLabel</span>
795 @foreach (var openingHour in Model.Area.Item.GetItem("Footer").GetItems("OpeningHours"))
796 {
797 <span>@openingHour.GetString("Text")</span>
798 }
799 </div>
800 </div>
801 </div>
802 <nav class="footer__nav">
803 @{
804 int counter = 0;
805
806 foreach (var footerColumn in Model.Area.Item.GetItem("Footer").GetItems("Columns"))
807 {
808 string footerColumnHeadline = footerColumn.GetString("Headline");
809 string footerColumnRichText = footerColumn.GetString("RichText");
810
811 <div class="footer__nav-content">
812 <span class="preline">@footerColumnHeadline</span>
813 @footerColumnRichText
814 @if (counter == 1)
815 {
816 <a href="javascript:CookieConsent.renew();">@Translate("Translate_Cookiepolitik")</a>
817 }
818 </div>
819
820 counter++;
821 }
822 }
823 </nav>
824 <div class="footer__info">
825 <div class="rich-text">
826 <p>
827 @organizationName
828 <br />
829 @organizationAddress
830 <br />
831 @organizationZipCode @organizationCity
832 </p>
833 <p>
834 <a href="@directionsLink" target="_blank" title="@directionsTitle">
835 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/directions.svg")))
836 {
837 <text>@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/directions.svg"))</text>
838 }
839 <u>@directionsText</u>
840 </a>
841 </p>
842 <p>
843 <a href="@organizationPhoneLink"><b>@organizationPhone</b></a>
844 <br />
845 <a href="@organizationEmailLink"><b>@organizationEmail</b></a>
846 </p>
847 <p>
848 @cvrLabel @cvr
849 </p>
850 </div>
851 <a href="/" class="footer__logo">
852 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/vibocold_logo.svg")))
853 {
854 <text>@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/vibocold_logo.svg"))</text>
855 }
856 </a>
857 </div>
858 <div class="footer__socket">
859 @if (!string.IsNullOrWhiteSpace(controlReportLink))
860 {
861 <a href="@controlReportLink" title="@controlReportTitle">
862 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="29" height="33" viewBox="0 0 29 33">
863 <defs>
864 <pattern id="pattern" preserveAspectRatio="none" width="100%" height="100%" viewBox="0 0 57 65">
865 <image width="57" height="65" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAABBCAYAAABraQwpAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAOwQAADsEBuJFr7QAAABh0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC42/Ixj3wAAA31JREFUaEPtm9tLVFEUxsesqKALUkH2FPQSBdlD0EtI2ksPET30klqRZqZdqExnKjUdtURH0y7eMhUMhS46NGmBl5QC659a7W/bPu3Zs7WEs+I47Icf47qc/a3vXOZyZgwRUdpjTXIQmRqj3Q1lFKo6Lx/Dk2Mibe/1G2vSb7IbK6Q5sKOuxPsbebOXA2vSL27Ehyivt1EaOtr1UKT+1BAjf0LU9TwH1qRfHO4ISyP7ntwSYWodedTNvN9Yk35w5+MIZUfLpYlTAy0ildqDfIaoo/fVzzmRSu3xA2vyyrt+2ll/ldZVF1BmuNBDxfl9TaKNQrGFT9KE3gM23b8o84qNkQuS9eEiWcejyqmezOql7cy1UIMO9E72NcucbS7Mi7nRZ5IUPJ6NU9n7AU94OXK7G0S76J+LW+t+Ax3o5fZErXWdysQb2auTFODJIKuu1NsgQ+wh7G3sKaByeb+PZNv80pHkBjrQyxdHEvrIqZkwn8qBXfVlslcnKcjpiNDWmsveBmeH2+X1gmdJUDExSNcnhujZ9y+inULR6XGvlxPoQA+60MccaibMhzlV7/aaYtmrkxTkPI3QttpibwO9ZuPah9deLyfQMbVNVC9eh1NqerBak7iGD7RV0qFYlaCagSq5PnRMbRM2k+DcSCcVjL6gwtGXvoN1sb6paYPVZFBwJvXAmQw4zqQeOJMWmsXrV4l4U4x3IVxgfeiY2iZsJlXf/8DUNlF9fzV5pHP1p2vP4jRxY2ra+GeT7poMOM6kHjiTFnBP5fRgK50ZirGB9Ze7d6PDZjKvt4n2NlWwAx1T24TNJOhdnKH+H7NsYH1T0waryaDgTOqBMxlw2Eziznbx2z66GR9mA+urO+grwWZS/y6DE+iY2iaql+V0bV+YpK5vn9nA+qamDVaTQcGZ1ANnMuCwmdzfctvr5QQ6praJ6vXd5PHuesp6VCq/+OQC60PH1DZhMxkknEk9cCYDjjOpB6s12TqfoPLxQbqbGGED60PH1DZhM6n/HIYT6JjaJqqX5XRtnBmXe5oLrG9q2mA1GRScST1wJgOOM6kHzmTAcSb14GDsHm3Wfj+OF2O9HlQwp5p5y4NLIpVcTwqOPa+l3eLTuNpgLbInWi6srGCy9WtC/kDItvFaITyV+u9RSYECpy0O+4Zw0ZoB82Ju0wtISaQj1mS6YU2mFxT6BabQSfcRL/9gAAAAAElFTkSuQmCC" />
866 </pattern>
867 </defs>
868 <rect id="Kontrolrapport_ikon" data-name="Kontrolrapport ikon" width="29" height="33" fill="url(#pattern)" />
869 </svg>
870 @controlReportText
871 </a>
872 }
873 @if (!string.IsNullOrWhiteSpace(linkedInUrl))
874 {
875 <a href="@linkedInUrl">
876 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/linkedin.svg")))
877 {
878 <span class="icon icon-linkedin">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/linkedin.svg"))</span>
879 }
880 </a>
881 }
882 @if (!string.IsNullOrWhiteSpace(facebookUrl))
883 {
884 <a href="@facebookUrl">
885 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/facebook.svg")))
886 {
887 <span class="icon icon-facebook">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/facebook.svg"))</span>
888 }
889 </a>
890 }
891 @if (!string.IsNullOrWhiteSpace(youTubeUrl))
892 {
893 <a href="@youTubeUrl">
894 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/youtube.svg")))
895 {
896 <span class="icon icon-youtube">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/youtube.svg"))</span>
897 }
898 </a>
899 }
900 </div>
901 </footer>
902 <span class="cursor"><span class="cursor__text"></span></span>
903 @RenderSnippet("SlideIns")
904 @if (extranetParagraphId != 0)
905 {
906 <text>@RenderParagraphContent(extranetParagraphId)</text>
907 }
908 @using System.Web.Configuration;
909
910 @{
911 string jsEditDate = System.IO.File.GetLastWriteTime(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/js/main.min.js")).ToString();
912 jsEditDate = jsEditDate.Replace(":", "").Replace(" ", "").Replace("-", "");
913
914 var config = WebConfigurationManager.OpenWebConfiguration("/");
915 var compilationSection = (CompilationSection)config.GetSection("system.web/compilation");
916
917 bool isDebugMode = compilationSection.Debug;
918 }
919
920 @if (isDebugMode)
921 {
922 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
923 }
924 else
925 {
926 <script src="/files/templates/designs/vibocold/assets/js/vue.min.js"></script>
927 }
928 <script src="/files/templates/designs/vibocold/assets/js/main.min.js?v=@jsEditDate"></script>
929
930 @RenderSnippet("JavaScripts")
931 @RenderSnippet("PiwikCartUpdate")
932 @RenderSnippet("ScriptsBottom")
933 </body>
934 </html>
935