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)
at Vibocold.CustomModules.Helpers.GroupHelper.IsGroupNoIndex(String groupId, String languageId)
at CompiledRazorTemplates.Dynamic.RazorEngine_86b574ccee374112b65d077eec48dcaa.Execute() in D:\dynamicweb.net\Solutions\Vibocold2021.cloud.dynamicweb-cms.com\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)
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("OrganizationName");
161 string schemaOrgAddress = Model.Area.Item.GetItem("Organization")?.GetString("OrganizationAddress");
162 string schemaOrgPostalCode = Model.Area.Item.GetItem("Organization")?.GetString("OrganizationPostalCode");
163 string schemaOrgCity = Model.Area.Item.GetItem("Organization")?.GetString("OrganizationCity");
164 string schemaOrgCountry = Model.Area.Item.GetItem("Organization")?.GetString("OrganizationCountry");
165 string schemaOrgPhone = Model.Area.Item.GetItem("Organization")?.GetString("OrganizationPhone");
166 string linkedInURL = Model.Area.Item.GetItem("SocialMedia")?.GetString("LinkedIn");
167 string facebookURL = Model.Area.Item.GetItem("SocialMedia")?.GetString("Facebook");
168 string youtubeURL = Model.Area.Item.GetItem("SocialMedia")?.GetString("YouTube");
169 string instagramURL = Model.Area.Item.GetItem("SocialMedia")?.GetString("Instagram");
170
171 string sameAs = "";
172
173 if (!string.IsNullOrWhiteSpace(linkedInURL))
174 {
175 sameAs += "\"" + linkedInURL + "\"";
176 }
177
178 if (!string.IsNullOrWhiteSpace(facebookURL))
179 {
180 if (sameAs.Length > 0)
181 {
182 sameAs += ",\"" + facebookURL + "\"";
183 }
184 else
185 {
186 sameAs += "\"" + facebookURL + "\"";
187 }
188 }
189
190 if (!string.IsNullOrWhiteSpace(youtubeURL))
191 {
192 if (sameAs.Length > 0)
193 {
194 sameAs += ",\"" + youtubeURL + "\"";
195 }
196 else
197 {
198 sameAs += "\"" + @youtubeURL + "\"";
199 }
200 }
201
202 if (!string.IsNullOrWhiteSpace(instagramURL))
203 {
204 if (sameAs.Length > 0)
205 {
206 sameAs += ",\"" + instagramURL + "\"";
207 }
208 else
209 {
210 sameAs += "\"" + instagramURL + "\"";
211 }
212 }
213 }
214 <script type="application/ld+json">
215 {
216 "@@context": "http://schema.org",
217 "name": "@schemaOrgName",
218 "address": {
219 "@@type": "PostalAddress",
220 "streetAddress": "@schemaOrgAddress",
221 "postalCode": "@schemaOrgPostalCode",
222 "addressLocality": "@schemaOrgCity",
223 "addressCountry": "@schemaOrgCountry"
224 },
225 "url": "@System.Web.HttpContext.Current.Request.Url.Scheme@("://")@System.Web.HttpContext.Current.Request.Url.Host",
226 "telephone": "@schemaOrgPhone",
227 "sameAs" : [
228 @sameAs
229 ]},
230 }
231 </script>
232
233 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
234
235 @{
236 string ipAddress = System.Web.HttpContext.Current.Request.UserHostAddress;
237 string googleSiteVerificationID = Model.Area.Item.GetItem("Google").GetString("SiteVerification_ID");
238 string primaryGoogleTagManagerID = Model.Area.Item.GetItem("Google").GetString("Primary_Google_Tag_Manager_ID");
239 string secondaryGoogleTagManagerID = Model.Area.Item.GetItem("Google").GetString("Secondary_Google_Tag_Manager_ID");
240 }
241 <script>
242 dataLayer = [{
243 'ipaddress': '@ipAddress'
244 }];
245 </script>
246 @if (!string.IsNullOrWhiteSpace(googleSiteVerificationID))
247 {
248 <meta name="google-site-verification" content="@googleSiteVerificationID" />
249 }
250 @if (!string.IsNullOrEmpty(primaryGoogleTagManagerID))
251 {
252 <script>
253 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
254 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
255 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
256 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
257 })(window, document, 'script', 'dataLayer', '@primaryGoogleTagManagerID');
258 </script>
259 }
260 @if (!string.IsNullOrEmpty(secondaryGoogleTagManagerID))
261 {
262 <script>
263 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
264 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
265 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
266 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
267 })(window, document, 'script', 'dataLayer', '@secondaryGoogleTagManagerID');
268 </script>
269 }
270 @SnippetStart("GoogleNoScript")
271 @if (!string.IsNullOrEmpty(primaryGoogleTagManagerID))
272 {
273 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=@primaryGoogleTagManagerID" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
274 }
275 @if (!string.IsNullOrEmpty(secondaryGoogleTagManagerID))
276 {
277 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=@secondaryGoogleTagManagerID" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
278 }
279 @SnippetEnd("GoogleNoScript")
280 @RenderSnippet("PreloadPrefetchPreconect")
281 <link rel="icon" type="image/x-icon" href="/Files/Images/Hjemmeside/Graphic/favicon.ico">
282 <link href="/Files/Images/Hjemmeside/Graphic/apple-touch-icon.png" rel="icon" type="image/png">
283 </head>
284 <body class="@bodyClass" data-page-id="@pageId">
285 @{
286 int slideInCart = Model.Area.Item.GetInt32("SlideInCartParagraph");
287
288 if (slideInCart > 0)
289 {
290 <text>@RenderParagraphContent(slideInCart)</text>
291 }
292 }
293 @piwikScript
294 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
295
296 @SnippetStart("PiwikCartUpdate")
297 <script type="text/javascript">
298 window._paq = window._paq || [];
299 var dataLayerObj = dataLayer.find(function (obj) { return obj.event === "cart_update" });
300 if (dataLayerObj) {
301 var cart_amount = dataLayerObj.cart_amount;
302 var products = dataLayerObj.products;
303 products.forEach(function (product) {
304 _paq.push(["addEcommerceItem", product.sku, product.name, product.category, product.price, product.quantity]);
305 });
306 _paq.push(["trackEcommerceCartUpdate", cart_amount]);
307 }
308 </script>
309 @SnippetEnd("PiwikCartUpdate")
310 @SnippetStart("PiwikOrderConfirm")
311 <script type="text/javascript">
312 window._paq = window._paq || [];
313 var dataLayerObj = dataLayer.find(function (obj) { return obj.event === "order_confirmation" });
314 if (dataLayerObj) {
315 var orderId = dataLayerObj.order_id;
316 var grandTotal = dataLayerObj.grand_total;
317 var subTotal = dataLayerObj.subtotal;
318 var tax = dataLayerObj.tax;
319 var shipping = dataLayerObj.shipping;
320 var discount = dataLayerObj.discount;
321 var products = dataLayerObj.products;
322 products.forEach(function (product) {
323 _paq.push(["addEcommerceItem", product.sku, product.name, product.category, product.price, product.quantity]);
324 });
325 _paq.push(["trackEcommerceOrder", orderId, grandTotal, subTotal, tax, shipping, discount]);
326 }
327 </script>
328 @SnippetEnd("PiwikOrderConfirm")
329 @RenderSnippet("GoogleNoScript")
330 <a href="#main" class="skip-to-main">@Translate("Translate_Skip_to_main_content")</a>
331 @using Dynamicweb.Frontend
332 @using Vibocold.CustomModules.Helpers
333 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
334
335 @{
336 int orderlineCount = Convert.ToInt32(Model.Cart?.TotalProductsCount);
337
338 bool hasUser = Model.CurrentUser.ID > 0;
339 Dynamicweb.Security.UserManagement.User user = null;
340 if (hasUser)
341 {
342 user = Dynamicweb.Security.UserManagement.User.GetUserByID(Model.CurrentUser.ID);
343 }
344 string secondaryCssClass = "navigation-secondary";
345 string searchPageId = Model.Area.Item.GetItem("MiscSettings")?.GetString("SearchPage");
346 string searchAction = "/Default.aspx?Id=" + searchPageId;
347
348 if (orderlineCount > 0 && hasUser)
349 {
350 secondaryCssClass += " navigation-secondary--has-cart navigation-secondary--has-user";
351 }
352
353 }
354 <nav class="navigation">
355 <a href="/" class="navigation__logo">
356 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/vibocold_logo.svg")))
357 {
358 <text>@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/vibocold_logo.svg"))</text>
359 }
360 </a>
361 @{
362 var navigationSettings = new Dynamicweb.Frontend.Navigation.NavigationSettings()
363 {
364 RootAreaId = 0,
365 RootPageId = 0,
366 StartLevel = 1,
367 StopLevel = 3,
368 ExpandMode = Dynamicweb.Frontend.Navigation.ExpandMode.All
369 };
370
371 var navigationTemplate = "master/partials/navigation.desktop.cshtml";
372
373 }
374 <div class="navigation__desktop">
375 @Navigation.RenderNavigation(navigationTemplate, navigationSettings)
376 </div>
377 <div class="navigation__mobile">
378 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
379
380 <div class="dwnavigation onlyMobile" id="primaryNavigation" data-settings="template:ul-li.xslt;startlevel:1;endlevel:3;expandmode:all;id:navigation-primary"></div>
381 @RenderNavigation(
382 new
383 {
384 StartLevel = 1,
385 EndLevel = 3,
386 ExpandMode = Dynamicweb.Frontend.Navigation.ExpandMode.All,
387 id = "navigation-primary",
388 Template = "ul-li.xslt"
389 }
390 )
391 </div>
392 <form class="navigation__search form" action="@searchAction">
393 <input type="hidden" name="Id" value="@searchPageId" />
394 <div class="form__field-wrap form__field-wrap--search">
395 <input type="text" name="q" placeholder="@Translate("Translate_Navigation_Search-placeholder")" class="form__field" />
396 <input type="hidden" name="lang" placeholder="Søg" class="form__field" value="@Pageview.Area.EcomLanguageId" />
397 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/search.svg")))
398 {
399 <span class="icon icon-search">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/search.svg"))</span>
400 }
401 </div>
402 </form>
403 <ul class="@secondaryCssClass">
404 @* RP: TMP REMOVED AS WE DON'T HAVE "TILBUDSLISTE" JUST YET *@
405 <!--li class="navigation-secondary__item navigation-secondary__item--favourites">
406 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/heart.svg")))
407 {
408 <span class="icon icon-heart">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/heart.svg"))</span>
409 }
410 <span class="navigation-secondary__item-counter">0</span>
411 </li-->
412 <li class="navigation-secondary__item navigation-secondary__item--language">
413 <select onchange="location = this.options[this.selectedIndex].value;" class="navigation-secondary__language-select">
414
415 @{
416 IEnumerable<Dynamicweb.Content.Area> areas = Dynamicweb.Services.Areas.GetAreas().OrderByDescending(a => a.ID == Model.Area.ID);
417 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://";
418 }
419 @foreach (Dynamicweb.Content.Area area in areas)
420 {
421 if (!string.IsNullOrEmpty(area.DomainLock))
422 {
423
424 string url = FriendlyUrlHelper.GetFriendlyPageUrl(Model.ID, area.Culture);
425
426 var groupUrl = FriendlyUrlHelper.GetFriendlyGroupUrl(Dynamicweb.Context.Current.Request["GroupID"], Model.ID, area.Culture);
427 var productUrl = FriendlyUrlHelper.GetFriendlyProductUrl(Dynamicweb.Context.Current.Request["ProductID"], Model.ID, area.Culture);
428
429 if (!string.IsNullOrWhiteSpace(Dynamicweb.Context.Current.Request["GroupID"]))
430 {
431 url = groupUrl;
432 }
433 else if (!string.IsNullOrWhiteSpace(Dynamicweb.Context.Current.Request["ProductID"]))
434 {
435 url = productUrl;
436 }
437
438 if (string.IsNullOrWhiteSpace(url))
439 {
440 url = scheme + area.DomainLock;
441 }
442
443 <option class="navigation-secondary__language @(area.ID == Model.Area.ID ? "navigation-secondary__language--active" : "")" value="@(url)">@(area.Culture.Split('-')?.FirstOrDefault()?.ToUpper())</option>
444 }
445 }
446
447 </select>
448 </li>
449
450 <li class="navigation-secondary__item navigation-secondary__item--cart" data-action="slide-in" data-target="slideInCart">
451 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/cart.svg")))
452 {
453 <span class="icon icon-cart">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/cart.svg"))</span>
454 }
455 @if (orderlineCount > 0)
456 {
457 <span class="navigation-secondary__item-counter">@orderlineCount</span>
458 }
459 </li>
460 @if (hasUser)
461 {
462 <li class="navigation-secondary__item navigation-secondary__item--user" data-action="slide-in" data-target="signOut">
463 @{
464 string userFirstName = user.FirstName;
465 string userLastName = user.LastName;
466 string userCompany = user.Company;
467 string user_UserName = user.UserName;
468 string userInitials = string.Empty;
469 if (userFirstName?.Length > 0)
470 {
471 userInitials = userInitials + userFirstName?.Substring(0, 1);
472 }
473 if (userLastName?.Length > 0)
474 {
475 userInitials = userInitials + userLastName?.Substring(0, 1);
476 }
477 if (userInitials.Length == 0 && user_UserName.Length > 1)
478 {
479 userInitials = user_UserName.Substring(0, 2);
480 }
481 if (userInitials.Length == 0 && userCompany.Length > 1)
482 {
483 userInitials = userCompany.Substring(0, 2);
484 }
485 }
486 @if (userInitials.Length > 0)
487 {
488 <div class="navigation-secondary__profile-wrapper">
489 <span class="navigation-secondary__initial">@userInitials.ToUpper()</span>
490 </div>
491 }
492 else if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/profile.svg")))
493 {
494 <div class="navigation-secondary__profile-wrapper">
495 <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>
496 </div>
497 }
498
499 @SnippetStart("SlideIns")
500 @{
501 string close = Translate("Translate_Slide-in_close");
502 string signOutHeadline = Translate("Translate_Sign-out_headline");
503 string signOutText = Translate("Translate_Sign-out_text");
504 string userName = Model.CurrentUser.Name;
505 string userUserName = Model.CurrentUser.UserName;
506 string signOutButtonText = Translate("Translate_Sign-out_button-text");
507 string redirectUrl = RedirectHelper.GetLoginReturnUrl();
508 string formAction = "/Admin/Public/ExtranetLogoff.aspx?Redirect=" + redirectUrl;
509
510 string welcomeText = Translate("Translate_Sign-out_welcome-text");
511 string welcomeSummary = Translate("Translate_Sign-out_summary-text");
512 Dynamicweb.Content.PageService pageService = new Dynamicweb.Content.PageService();
513
514 int customerCenterPageId = pageService.GetPageByNavigationTag(Model.Area.ID, "Kundecenter")?.ID ?? 0;
515 var productsPageId = pageService.GetPageByNavigationTag(Model.Area.ID, "ProductList")?.ID ?? 0;
516 var myProductsPageId = pageService.GetPageByNavigationTag(Model.Area.ID, "MyProducts")?.ID ?? 0;
517 var sparepartsPageId = pageService.GetPageByNavigationTag(Model.Area.ID, "Spareparts")?.ID ?? 0;
518
519 IEnumerable<Dynamicweb.Content.Page> customerCenterPages = pageService.GetPagesByParentID(customerCenterPageId);
520
521 var myProductsUrl = SearchEngineFriendlyURLs.GetFriendlyUrl($"Default.aspx?ID={myProductsPageId}&GroupID={"GROUP368"}", areas.FirstOrDefault(x => x.ID == Model.Area.ID).EcomLanguageId);
522 var sparepartsPageUrl = SearchEngineFriendlyURLs.GetFriendlyUrl(sparepartsPageId);
523
524 bool hasMyProducts = false;
525 var _assortmentService = new Dynamicweb.Ecommerce.Assortments.AssortmentService();
526 var _productService = new Dynamicweb.Ecommerce.Products.ProductService();
527
528 if (UserProductAccessHelper.IsUserVibocoldUser(user))
529 {
530 var myProducts = _productService.GetProductsByGroupId("GROUP368", false, Pageview.Area.EcomLanguageId, false);
531 var userAssortmentsIds = _assortmentService.GetAssortmentIdsByUser(user);
532 hasMyProducts = myProducts.Where(mp => _assortmentService.GetAssortmentsByProduct(mp).Where(a => userAssortmentsIds.Contains(a.ID)).Any()).Any();
533 }
534 else
535 {
536 var myProducts = _productService.GetProductsByGroupId("GROUP368", true, Pageview.Area.EcomLanguageId, false);
537 var userAssortmentsIds = _assortmentService.GetAssortmentIdsByUser(user);
538 hasMyProducts = myProducts.Where(mp => mp.Active == true && mp.Discontinued == false && _assortmentService.GetAssortmentsByProduct(mp).Where(a => userAssortmentsIds.Contains(a.ID)).Any()).Any();
539 }
540 }
541 <div class="slide-in" id="signOut">
542 <div class="slide-in__content slide-in__content--center-content customer-center module-white">
543 <div class="slide-in__close">
544 <span></span>
545 <small>@close</small>
546 </div>
547 <div class="slide-in__headline new-style-h3">@welcomeText @user.FirstName</div>
548 <p class="customer-center__user-container">@user.Company (@userUserName)</p>
549 <p class="customer-center__welcome-summary">@welcomeSummary</p>
550
551 @if (customerCenterPages.Any())
552 {
553 <ul class="customer-center__list">
554 @foreach (var page in customerCenterPages)
555 {
556 <li class="customer-center__item">
557 <a class="btn btn-cta customer-center__link" href="@page.GetPageHrefValue()">
558 <span class="btn__text">@page.GetDisplayName()</span>
559 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/chevron.svg")))
560 {
561 <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>
562 }
563 </a>
564 </li>
565 }
566 @if (!string.IsNullOrWhiteSpace(myProductsUrl) && hasMyProducts)
567 {
568 <li class="customer-center__item my-products-item">
569 <a class="btn btn-cta customer-center__link" href="@myProductsUrl">
570 <span class="btn__text">@Translate("Translate_Slide-in_My_Products")</span>
571 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/chevron.svg")))
572 {
573 <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>
574 }
575 </a>
576 </li>
577 }
578 @if (UserProductAccessHelper.IsUserVibocoldUser(user))
579 {
580 <li class="customer-center__item">
581 <a class="btn btn-cta customer-center__link" href="@sparepartsPageUrl">
582 <span class="btn__text">@Translate("Translate_Slide-in_Spareparts")</span>
583 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/chevron.svg")))
584 {
585 <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>
586 }
587 </a>
588 </li>
589 }
590 </ul>
591 }
592 <form class="form form--login" name="ExtranetUserForm" id="ExtranetUserForm" method="post" action="@formAction">
593 <div class="form__input-container">
594 <button type="submit" class="btn btn-primary">@signOutButtonText</button>
595 </div>
596 </form>
597 </div>
598 </div>
599 @SnippetEnd("SlideIns")
600 </li>
601 }
602 else
603 {
604 <li class="navigation-secondary__item" data-action="slide-in" data-target="signIn">
605 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/profile.svg")))
606 {
607 <span class="icon icon-profile">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/profile.svg"))</span>
608 }
609 </li>
610 }
611 </ul>
612 <button class="navigation__btn"><span></span></button>
613 </nav>
614 <main id="main" class="@($"{(darkMode ? "darkmode" : "" )}")">
615 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
616
617
618
619 @{
620 var isMyProducts = Dynamicweb.Context.Current.Request["GroupID"] == "GROUP368";
621
622 var listClass = $"module module-white product-list {(isMyProducts ? "my-products" : "")}";
623 }
624
625 <article class="@listClass">
626 @if (!isMyProducts)
627 {
628 <nav class="sidebar-navigation js-expanded" id="sidebarNavigation" aria-hidden="false" aria-labelledby="sidebarNavigationLabel">
629 <div class="sidebar-navigation__inner">
630 <span class="sidebar-navigation__headline">@Translate("Translate_SidebarNavigation_ProductCategories")</span>
631 @RenderNavigation(
632 new
633 {
634 StartLevel = 1,
635 EndLevel = 1,
636 ParentId = 0,
637 ExpandMode = Dynamicweb.Frontend.Navigation.ExpandMode.PathOnly,
638 id = "sidebar-navigation__list",
639 Template = "sidebar-navigation.xslt"
640 }
641 )
642 </div>
643 </nav>
644 }
645 @Model.Placeholder("dwcontent", "content", "default:true;sort:1")
646 </article>
647
648 <button class="scroll-top">
649 <span class="scroll-top__icon">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/chevron.svg"))</span>
650 </button>
651 </main>
652 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
653
654 @{
655 string headlineSales = Model.Area.Item.GetItem("Footer")?.GetString("HeadlineSales");
656 string phoneSales = Model.Area.Item.GetItem("Footer")?.GetString("PhoneSales");
657 string phoneSalesLink = "tel:" + phoneSales.Replace(" ", "");
658 string emailSales = Model.Area.Item.GetItem("Footer")?.GetString("EmailSales");
659 string emailSalesLink = "mailto:" + emailSales.Replace(" ", "");
660 string openingHoursLabel = Model.Area.Item.GetItem("Footer")?.GetString("OpeningHoursLabel");
661
662 string headlineService = Model.Area.Item.GetItem("Footer")?.GetString("HeadlineService");
663 string phoneService = Model.Area.Item.GetItem("Footer")?.GetString("PhoneService");
664 string phoneServiceLink = "tel:" + phoneService.Replace(" ", "");
665 string emailService = Model.Area.Item.GetItem("Footer")?.GetString("EmailService");
666 string emailServiceLink = "mailto:" + emailService.Replace(" ", "");
667
668 string organizationName = Model.Area.Item.GetItem("Organization")?.GetString("Name");
669 string organizationAddress = Model.Area.Item.GetItem("Organization")?.GetString("Address");
670 string organizationZipCode = Model.Area.Item.GetItem("Organization")?.GetString("Zipcode");
671 string organizationCity = Model.Area.Item.GetItem("Organization")?.GetString("City");
672
673 string directionsLink = Model.Area.Item.GetItem("Footer")?.GetItem("GetDirectionsLink")?.GetString("Link");
674 string directionsTitle = Model.Area.Item.GetItem("Footer")?.GetItem("GetDirectionsLink")?.GetString("Title");
675 string directionsText = Model.Area.Item.GetItem("Footer")?.GetItem("GetDirectionsLink")?.GetString("Text");
676
677 string organizationPhone = Model.Area.Item.GetItem("Organization")?.GetString("Phone");
678 string organizationPhoneLink = "tel:" + organizationPhone.Replace(" ", "");
679 string organizationEmail = Model.Area.Item.GetItem("Organization")?.GetString("Email");
680 string organizationEmailLink = "mailto:" + organizationEmail.Replace(" ", "");
681
682 string cvrLabel = Model.Area.Item.GetItem("Footer")?.GetString("CVRLabel");
683 string cvr = Model.Area.Item.GetItem("Footer")?.GetString("CVR");
684
685 string controlReportLink = Model.Area.Item.GetItem("Footer")?.GetItem("ControlReport")?.GetString("Link");
686 string controlReportTitle = Model.Area.Item.GetItem("Footer")?.GetItem("ControlReport")?.GetString("Title");
687 string controlReportText = Model.Area.Item.GetItem("Footer")?.GetItem("ControlReport")?.GetString("Text");
688 string linkedInUrl = Model.Area.Item.GetItem("SocialMedia").GetString("LinkedIn");
689 string facebookUrl = Model.Area.Item.GetItem("SocialMedia").GetString("Facebook");
690 string youTubeUrl = Model.Area.Item.GetItem("SocialMedia").GetString("YouTube");
691
692 @* 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 *@
693 <text>
694 @SnippetStart("HeaderContactInfo")
695 <li class="header__contact-info-item">
696 <span class="preline">@headlineSales</span>
697 <a class="header__contact-info-link" href="@phoneSalesLink">@phoneSales</a>
698 <a class="header__contact-info-link" href="@emailSalesLink">@emailSales</a>
699 </li>
700 <li class="header__contact-info-item">
701 <span class="preline">@headlineService</span>
702 <a class="header__contact-info-link" href="@phoneServiceLink">@phoneService</a>
703 <a class="header__contact-info-link" href="@emailServiceLink">@emailService</a>
704 <span class="header__contact-info-byline">
705 <span>@openingHoursLabel</span>
706 @foreach (var openingHour in Model.Area.Item.GetItem("Footer").GetItems("OpeningHours"))
707 {
708 <span>@openingHour.GetString("Text")</span>
709 }
710 </span>
711 </li>
712 @SnippetEnd("HeaderContactInfo")
713 @SnippetStart("NavigationContactInfo")
714 <div>
715 <span class="preline">@headlineSales</span>
716 <a class="navigation-primary__contact-link" href="@phoneSalesLink">@phoneSales</a>
717 <a class="navigation-primary__contact-link" href="@emailSalesLink">@emailSales</a>
718 </div>
719 <div>
720 <span class="preline">@headlineService</span>
721 <a class="navigation-primary__contact-link" href="@phoneServiceLink">@phoneService</a>
722 <a class="navigation-primary__contact-link" href="@emailServiceLink">@emailService</a>
723 <b class="navigation-primary__opening-hours">
724 <span>@openingHoursLabel</span>
725 @foreach (var openingHour in Model.Area.Item.GetItem("Footer").GetItems("OpeningHours"))
726 {
727 <span>@openingHour.GetString("Text")</span>
728 }
729 </b>
730 </div>
731 @SnippetEnd("NavigationContactInfo")
732 </text>
733 }
734 <footer class="footer module module-blue-dark">
735 <div class="footer__contact">
736 <div class="footer__contact-sale">
737 <span class="preline">@headlineSales</span>
738 <a href="@phoneSalesLink">@phoneSales</a>
739 <a href="@emailSalesLink">@emailSales</a>
740 </div>
741 <div class="footer__contact-service">
742 <span class="preline">@headlineService</span>
743 <a href="@phoneServiceLink">@phoneService</a>
744 <a href="@emailServiceLink">@emailService</a>
745 <div class="footer__contact-service-byline">
746 <span>@openingHoursLabel</span>
747 @foreach (var openingHour in Model.Area.Item.GetItem("Footer").GetItems("OpeningHours"))
748 {
749 <span>@openingHour.GetString("Text")</span>
750 }
751 </div>
752 </div>
753 </div>
754 <nav class="footer__nav">
755 @{
756 int counter = 0;
757
758 foreach (var footerColumn in Model.Area.Item.GetItem("Footer").GetItems("Columns"))
759 {
760 string footerColumnHeadline = footerColumn.GetString("Headline");
761 string footerColumnRichText = footerColumn.GetString("RichText");
762
763 <div class="footer__nav-content">
764 <span class="preline">@footerColumnHeadline</span>
765 @footerColumnRichText
766 @if (counter == 1)
767 {
768 <a href="javascript:CookieConsent.renew();">@Translate("Translate_Cookiepolitik")</a>
769 }
770 </div>
771
772 counter++;
773 }
774 }
775 </nav>
776 <div class="footer__info">
777 <div class="rich-text">
778 <p>
779 @organizationName
780 <br />
781 @organizationAddress
782 <br />
783 @organizationZipCode @organizationCity
784 </p>
785 <p>
786 <a href="@directionsLink" target="_blank" title="@directionsTitle">
787 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/directions.svg")))
788 {
789 <text>@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/directions.svg"))</text>
790 }
791 <u>@directionsText</u>
792 </a>
793 </p>
794 <p>
795 <a href="@organizationPhoneLink"><b>@organizationPhone</b></a>
796 <br />
797 <a href="@organizationEmailLink"><b>@organizationEmail</b></a>
798 </p>
799 <p>
800 @cvrLabel @cvr
801 </p>
802 </div>
803 <a href="/" class="footer__logo">
804 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/vibocold_logo.svg")))
805 {
806 <text>@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/svg/vibocold_logo.svg"))</text>
807 }
808 </a>
809 </div>
810 <div class="footer__socket">
811 @if (!string.IsNullOrWhiteSpace(controlReportLink))
812 {
813 <a href="@controlReportLink" title="@controlReportTitle">
814 <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">
815 <defs>
816 <pattern id="pattern" preserveAspectRatio="none" width="100%" height="100%" viewBox="0 0 57 65">
817 <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" />
818 </pattern>
819 </defs>
820 <rect id="Kontrolrapport_ikon" data-name="Kontrolrapport ikon" width="29" height="33" fill="url(#pattern)" />
821 </svg>
822 @controlReportText
823 </a>
824 }
825 @if (!string.IsNullOrWhiteSpace(linkedInUrl))
826 {
827 <a href="@linkedInUrl">
828 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/linkedin.svg")))
829 {
830 <span class="icon icon-linkedin">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/linkedin.svg"))</span>
831 }
832 </a>
833 }
834 @if (!string.IsNullOrWhiteSpace(facebookUrl))
835 {
836 <a href="@facebookUrl">
837 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/facebook.svg")))
838 {
839 <span class="icon icon-facebook">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/facebook.svg"))</span>
840 }
841 </a>
842 }
843 @if (!string.IsNullOrWhiteSpace(youTubeUrl))
844 {
845 <a href="@youTubeUrl">
846 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/youtube.svg")))
847 {
848 <span class="icon icon-youtube">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/icons/youtube.svg"))</span>
849 }
850 </a>
851 }
852 </div>
853 </footer>
854 <span class="cursor"><span class="cursor__text"></span></span>
855 @RenderSnippet("SlideIns")
856 @if (extranetParagraphId != 0)
857 {
858 <text>@RenderParagraphContent(extranetParagraphId)</text>
859 }
860 @{
861 string jsEditDate = System.IO.File.GetLastWriteTime(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/vibocold/assets/js/main.min.js")).ToString();
862 jsEditDate = jsEditDate.Replace(":", "").Replace(" ", "").Replace("-", "");
863 }
864 <script src="/files/templates/designs/vibocold/assets/js/main.min.js?v=@jsEditDate"></script>
865 @RenderSnippet("JavaScripts")
866 @RenderSnippet("PiwikCartUpdate")
867 @RenderSnippet("ScriptsBottom")
868 </body>
869 </html>
870