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&oslash;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