Error compiling template "Designs/Swift/_parsed/Swift_Page.parsed.cshtml"
Line 231: 'Services' is obsolete: 'Use Dynamicweb.Content.Services instead.'
Line 231: 'Services' does not contain a definition for 'Currencies'
1 //------------------------------------------------------------------------------
2 // <auto-generated>
3 // This code was generated by a tool.
4 // Runtime Version:4.0.30319.42000
5 //
6 // Changes to this file may cause incorrect behavior and will be lost if
7 // the code is regenerated.
8 // </auto-generated>
9 //------------------------------------------------------------------------------
10 11 namespace CompiledRazorTemplates.Dynamic {
12 13 #line 425 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
14 using System;
15 16 #line default
17 #line hidden
18 using System.Collections.Generic;
19 using System.Linq;
20 21 #line 3 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
22 using Dynamicweb;
23 24 #line default
25 #line hidden
26 27 #line 4 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
28 using Dynamicweb.Environment;
29 30 #line default
31 #line hidden
32 33 #line 5 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
34 using Dynamicweb.Frontend;
35 36 #line default
37 #line hidden
38 39 #line 426 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
40 using Dynamicweb.Ecommerce.ProductCatalog;
41 42 #line default
43 #line hidden
44 45 46 public class RazorEngine_c27cd1543a574502a11d52a306b8f28a : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> {
47 48 #line hidden
49 50 #line 11 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
51 52 string GetCookieOptInPermission(string category)
53 {
54 bool categoryOrAllGranted = false;
55 56 if (CookieManager.IsCookieManagementActive)
57 {
58 var cookieOptInLevel = CookieManager.GetCookieOptInLevel();
59 var cookieOptInCategories = CookieManager.GetCookieOptInCategories();
60 categoryOrAllGranted = cookieOptInCategories.Contains(category) || cookieOptInLevel == CookieOptInLevel.All;
61 }
62 63 return categoryOrAllGranted ? "granted" : "denied";
64 }
65 66 bool AllowTracking()
67 {
68 bool allowTracking = true;
69 if (CookieManager.IsCookieManagementActive)
70 {
71 var cookieOptInLevel = CookieManager.GetCookieOptInLevel();
72 var cookieOptInCategories = CookieManager.GetCookieOptInCategories();
73 74 bool consentEither = (cookieOptInCategories.Contains("Statistical") || cookieOptInCategories.Contains("Marketing"));
75 bool consentFunctional = cookieOptInLevel == CookieOptInLevel.Functional;
76 bool consentAtLeastOne = cookieOptInLevel == CookieOptInLevel.All || (consentFunctional && consentEither);
77 78 allowTracking = consentAtLeastOne;
79 }
80 return allowTracking;
81 }
82 83 #line default
84 #line hidden
85 86 87 #line 759 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
88 89 void SetMetaTags()
90 {
91 //Verification Tokens
92 string siteVerificationGoogle = Model.Area.Item.GetString("Google_Site_Verification") != null ? Model.Area.Item.GetString("Google_Site_Verification") : "";
93 94 //Generic Site Values
95 string openGraphFacebookAppID = Model.Area.Item.GetString("Fb_app_id") != null ? Model.Area.Item.GetString("Fb_app_id") : "";
96 string openGraphType = Model.Area.Item.GetString("Open_Graph_Type") != null ? Model.Area.Item.GetString("Open_Graph_Type") : "";
97 string openGraphSiteName = Model.Area.Item.GetString("Open_Graph_Site_Name") != null ? Model.Area.Item.GetString("Open_Graph_Site_Name") : "";
98 99 string twitterCardSite = Model.Area.Item.GetString("Twitter_Site") != null ? Model.Area.Item.GetString("Twitter_Site") : "";
100101 //Page specific values
102 string openGraphSiteTitle = Model.Area.Item.GetString("Open_Graph_Title") != null ? Model.Area.Item.GetString("Open_Graph_Title") : "";
103 FileViewModel openGraphImage = Model.Area.Item.GetFile("Open_Graph_Image");
104 string openGraphImageALT = Model.Area.Item.GetString("Open_Graph_Image_ALT") != null ? Model.Area.Item.GetString("Open_Graph_Image_ALT") : "";
105 string openGraphDescription = Model.Area.Item.GetString("Open_Graph_Description") != null ? Model.Area.Item.GetString("Open_Graph_Description") : "";
106107 string twitterCardURL = Model.Area.Item.GetString("Twitter_URL") != null ? Model.Area.Item.GetString("Twitter_URL") : "";
108 string twitterCardTitle = Model.Area.Item.GetString("Twitter_Title") != null ? Model.Area.Item.GetString("Twitter_Title") : "";
109 string twitterCardDescription = Model.Area.Item.GetString("Twitter_Description") != null ? Model.Area.Item.GetString("Twitter_Description") : "";
110 FileViewModel twitterCardImage = Model.Area.Item.GetFile("Twitter_Image");
111 string twitterCardImageALT = Model.Area.Item.GetString("Twitter_Image_ALT") != null ? Model.Area.Item.GetString("Twitter_Image_ALT") : "";
112 string topImage = Pageview.Page.TopImage.StartsWith("/Files", StringComparison.OrdinalIgnoreCase) ? Pageview.Page.TopImage : $"/Files{Pageview.Page.TopImage}";
113114 if (string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["ProductID"]))
115 {
116 if (!string.IsNullOrEmpty(Model.Description))
117 {
118 Pageview.Meta.AddTag($"<meta property=\"og:description\" content=\"{Model.Description}\">");
119 }
120 else
121 {
122 Pageview.Meta.AddTag($"<meta property=\"og:description\" content=\"{openGraphDescription}\">");
123 }
124125 if (!string.IsNullOrEmpty(Pageview.Page.TopImage))
126 {
127 Pageview.Meta.AddTag($"<meta property=\"og:image\" content=\"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{topImage}\">");
128 Pageview.Meta.AddTag($"<meta property=\"og:image:secure_url\" content=\"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{topImage}\">");
129 }
130 else if (openGraphImage != null)
131 {
132 Pageview.Meta.AddTag($"<meta property=\"og:image\" content=\"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{openGraphImage.Path}\">");
133 Pageview.Meta.AddTag($"<meta property=\"og:image:secure_url\" content=\"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{openGraphImage.Path}\">");
134 }
135136 if (!string.IsNullOrEmpty(openGraphImageALT))
137 {
138 Pageview.Meta.AddTag($"<meta property=\"og:image:alt\" content=\"{openGraphImageALT}\">");
139 }
140 if (!string.IsNullOrEmpty(twitterCardDescription))
141 {
142 Pageview.Meta.AddTag("twitter:description", twitterCardDescription);
143 }
144145 if (!string.IsNullOrEmpty(Pageview.Page.TopImage))
146 {
147 Pageview.Meta.AddTag("twitter:image", $"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{topImage}");
148 }
149 else if (twitterCardImage != null)
150 {
151 Pageview.Meta.AddTag("twitter:image", $"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{openGraphImage.Path}");
152 }
153154 if (!string.IsNullOrEmpty(twitterCardImageALT))
155 {
156 Pageview.Meta.AddTag("twitter:image:alt", twitterCardImageALT);
157 }
158 }
159160 if (!string.IsNullOrEmpty(siteVerificationGoogle))
161 {
162 Pageview.Meta.AddTag("google-site-verification", siteVerificationGoogle);
163 }
164165 if (!string.IsNullOrEmpty(openGraphFacebookAppID))
166 {
167 Pageview.Meta.AddTag($"<meta property=\"fb:app_id\" content=\"{openGraphFacebookAppID}\">");
168 }
169170 if (!string.IsNullOrEmpty(openGraphType))
171 {
172 Pageview.Meta.AddTag($"<meta property=\"og:type\" content=\"{openGraphType}\">");
173 }
174175 if (!string.IsNullOrEmpty(openGraphSiteName))
176 {
177 Pageview.Meta.AddTag($"<meta property=\"og:url\" content=\"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{Pageview.SearchFriendlyUrl}\">");
178 }
179180 if (!string.IsNullOrEmpty(openGraphSiteName))
181 {
182 Pageview.Meta.AddTag($"<meta property=\"og:site_name\" content=\"{openGraphSiteName}\">");
183 }
184185 if (!string.IsNullOrEmpty(Model.Title))
186 {
187 Pageview.Meta.AddTag($"<meta property=\"og:title\" content=\"{Model.Title}\">");
188 }
189 else
190 {
191 Pageview.Meta.AddTag($"<meta property=\"og:title\" content=\"{openGraphSiteTitle}\">");
192 }
193194 if (!string.IsNullOrEmpty(twitterCardSite))
195 {
196 Pageview.Meta.AddTag("twitter:site", twitterCardSite);
197 }
198199 if (!string.IsNullOrEmpty(twitterCardURL))
200 {
201 Pageview.Meta.AddTag("twitter:url", twitterCardURL);
202 }
203204 if (!string.IsNullOrEmpty(twitterCardTitle))
205 {
206 Pageview.Meta.AddTag("twitter:title", twitterCardTitle);
207 }
208 }
209210 #line default
211 #line hidden
212213214 public RazorEngine_c27cd1543a574502a11d52a306b8f28a() {
215 }
216217 public override void Execute() {
218 WriteLiteral("\r\n");
219220221 #line 7 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
222223224225 #line default
226 #line hidden
227 WriteLiteral("<!-- ");
228229230 #line 8 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
231 Write(Services.Currencies.GetDefaultCurrency());
232233234 #line default
235 #line hidden
236 WriteLiteral("?.Code -->\r\n");
237238239 #line 9 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
240241242 #line default
243 #line hidden
244 WriteLiteral("\r\n\r\n");
245246 WriteLiteral("\r\n");
247248249 #line 44 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
250251 var cartSummaryPageId = Dynamicweb.Content.Services.Pages.GetPageByNavigationTag(Model.Area.ID, "CartSummary")?.ID;
252 bool enableMiniCart = Model.Area.Item?.GetBoolean("EnableOffcanvasMiniCart") ?? false;
253 var offcanvasMiniCartBehaviour = Model.Area.Item?.GetRawValueString("OffcanvasMinicartBehaviour", "3") ?? "3";
254 bool miniCartEnabled = cartSummaryPageId != null && enableMiniCart;
255 var brandingPageId = Model.Area.Item?.GetInt32("BrandingPage") ?? 0;
256 var themePageId = Model.Area.Item?.GetInt32("ThemesPage") ?? 0;
257 var cssPageId = Model.Area.Item?.GetInt32("CssPage") ?? 0;
258 var brandingPage = brandingPageId != 0 ? Dynamicweb.Content.Services.Pages?.GetPage(brandingPageId) ?? null : null;
259 var themesParagraphs = themePageId != 0 ? Dynamicweb.Content.Services.Paragraphs?.GetParagraphsByPageId(themePageId) ?? null : null;
260 var cssParagraphs = cssPageId != 0 ? Dynamicweb.Content.Services.Paragraphs?.GetParagraphsByPageId(cssPageId) ?? null : null;
261 var customFooterScripts = Model.Area.Item?.GetRawValueString("FooterScripts", "") ?? "";
262 var scriptsHeader = Model.Area.Item?.GetRawValueString("ScriptsHeader", "") ?? "";
263264265266 #line default
267 #line hidden
268 WriteLiteral("\r\n\r\n");
269270271 #line 60 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
272 if (themesParagraphs != null || brandingPage != null)
273 {
274 string swiftVersion = ReadFile("/Files/Templates/Designs/Swift/swift_version.txt");
275 bool renderAsResponsive = Model.Area.Item.GetString("DeviceRendering", "responsive").Equals("responsive", StringComparison.OrdinalIgnoreCase);
276 bool renderMobile = Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Mobile || Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Tablet;
277 string responsiveClassDesktop = string.Empty;
278 string responsiveClassMobile = string.Empty;
279 if (renderAsResponsive)
280 {
281 responsiveClassDesktop = " d-none d-xl-block";
282 responsiveClassMobile = " d-block d-xl-none";
283 }
284285 var headerDesktopLink = Model.Area.Item?.GetLink("HeaderDesktop") ?? null;
286 var headerMobileLink = Model.Area.Item?.GetLink("HeaderMobile") ?? null;
287288 var footerDesktopLink = Model.Area.Item?.GetLink("FooterDesktop") ?? null;
289 var footerMobileLink = Model.Area.Item?.GetLink("FooterMobile") ?? null;
290291 var disableWideBreakpoints = Model.Area?.Item?.GetRawValueString("DisableWideBreakpoints", "default");
292293 string customHeaderInclude = !string.IsNullOrEmpty(Model.Area.Item.GetRawValueString("CustomHeaderInclude")) ? Model.Area.Item.GetFile("CustomHeaderInclude").Name : string.Empty;
294295 var themesParagraphLastChanged = Dynamicweb.Content.Services.Paragraphs.GetParagraphsByPageId(themePageId).OrderByDescending(p => p.Audit.LastModifiedAt).FirstOrDefault();
296 var cssLastModified = brandingPage.Audit.LastModifiedAt > themesParagraphLastChanged.Audit.LastModifiedAt ? brandingPage.Audit.LastModifiedAt : themesParagraphLastChanged.Audit.LastModifiedAt;
297298 var cssThemeAndBrandingStyleFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath($"/Files/Templates/Designs/Swift/_parsed/Swift_css/Swift_styles_{Model.Area.ID}.min.css"));
299300301 if (cssPageId != 0)
302 {
303 var cssFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath($"/Files/Templates/Designs/Swift/_parsed/Swift_css/Swift_css_styles_{Model.Area.ID}.css"));
304 var cssParagraphLastChanged = Dynamicweb.Content.Services.Paragraphs.GetParagraphsByPageId(cssPageId).OrderByDescending(p => p.Audit.LastModifiedAt).FirstOrDefault();
305 if (!cssThemeAndBrandingStyleFileInfo.Exists || cssThemeAndBrandingStyleFileInfo.LastWriteTime < cssParagraphLastChanged.Audit.LastModifiedAt)
306 {
307 var cssPageview = Dynamicweb.Frontend.PageView.GetPageviewByPageID(cssPageId);
308 cssPageview.Redirect = false;
309 cssPageview.Output();
310 }
311 }
312313 if (!cssThemeAndBrandingStyleFileInfo.Exists || cssThemeAndBrandingStyleFileInfo.LastWriteTime < brandingPage.Audit.LastModifiedAt)
314 {
315 //Branding page has been saved or the file is missing. Rewrite the file to disc.
316 if (brandingPageId > 0)
317 {
318 var brandingPageview = Dynamicweb.Frontend.PageView.GetPageviewByPageID(brandingPageId);
319 brandingPageview.Redirect = false;
320 brandingPageview.Output();
321 }
322 }
323324 if (!cssThemeAndBrandingStyleFileInfo.Exists || cssThemeAndBrandingStyleFileInfo.LastWriteTime < themesParagraphLastChanged.Audit.LastModifiedAt)
325 {
326 //Branding page has been saved or the file is missing. Rewrite the file to disc.
327 if (themePageId > 0)
328 {
329 var themePageview = Dynamicweb.Frontend.PageView.GetPageviewByPageID(themePageId);
330 themePageview.Redirect = false;
331 themePageview.Output();
332 }
333 }
334335 // Schema.org details for PDP
336 bool isProductDetailsPage = Dynamicweb.Context.Current.Request.QueryString.AllKeys.Contains("ProductID");
337 bool isArticlePage = Model.ItemType == "Swift_Article";
338 string schemaOrgType = string.Empty;
339340 if (isProductDetailsPage)
341 {
342 schemaOrgType = "itemscope=\"\" itemtype=\"https://schema.org/Product\"";
343 }
344345 if (isArticlePage)
346 {
347 schemaOrgType = "itemscope=\"\" itemtype=\"https://schema.org/Article\"";
348 }
349350351 var cssStyleFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath("/Files/Templates/Designs/Swift/Assets/css/styles.css"));
352 var cssStyleFileInfoCustom = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath("/Files/Templates/Designs/Swift/Assets/css/custom.css"));
353 var jsFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath("/Files/Templates/Designs/Swift/Assets/js/scripts.js"));
354355 string masterTheme = !string.IsNullOrWhiteSpace(Model.Area.Item.GetRawValueString("Theme")) ? " theme " + Model.Area.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : "";
356357 string favicon = Model.Area.Item.GetRawValueString("Favicon", "/Files/Templates/Designs/Swift/Assets/Images/favicon.png");
358 string appleTouchIcon = Model.Area.Item.GetRawValueString("AppleTouchIcon", "/Files/Templates/Designs/Swift/Assets/Images/apple-touch-icon.png");
359360 string headerCssClass = "sticky-top";
361 bool movePageBehind = false;
362363 if (Model.PropertyItem != null)
364 {
365 headerCssClass = Model.PropertyItem.GetRawValueString("MoveThisPageBehindTheHeader", "sticky-top");
366 movePageBehind = headerCssClass == "fixed-top" && !Pageview.IsVisualEditorMode ? true : false;
367 }
368369 headerCssClass = headerCssClass == "" ? "sticky-top" : headerCssClass;
370 headerCssClass = Pageview.IsVisualEditorMode ? "" : headerCssClass;
371372 string googleTagManagerID = Model.Area.Item.GetString("GoogleTagManagerID").Trim();
373 string googleAnalyticsMeasurementID = Model.Area.Item.GetString("GoogleAnalyticsMeasurementID").Trim();
374 string userCentrics = Model.Area.Item.GetString("UsercentricsScript");
375 bool allowTracking = true;
376377 Dynamicweb.Context.Current.Response.AddHeader("link", $"</Files/Templates/Designs/Swift/Assets/css/styles.css?{cssStyleFileInfo.LastWriteTime.Ticks}>; rel=preload; as=style;");
378 Dynamicweb.Context.Current.Response.AddHeader("link", $"</Files/Templates/Designs/Swift/Assets/css/custom.css?{cssStyleFileInfoCustom.LastWriteTime.Ticks}>; rel=preload; as=style;");
379 Dynamicweb.Context.Current.Response.AddHeader("link", $"</Files/Templates/Designs/Swift/_parsed/Swift_css/Swift_styles_{Model.Area.ID}.min.css?{cssLastModified.Ticks}>; rel=preload; as=style;");
380 Dynamicweb.Context.Current.Response.AddHeader("link", $"</Files/Templates/Designs/Swift/Assets/js/scripts.js?{jsFileInfo.LastWriteTime.Ticks}>; rel=preload; as=script;");
381382383 SetMetaTags();
384385 List<Dynamicweb.Content.Page> languages = new List<Dynamicweb.Content.Page>();
386387 var masterPage = Pageview.Area.IsMaster ? Pageview.Page : Pageview.Page.MasterPage;
388 languages.Add(masterPage);
389 if (masterPage?.Languages != null)
390 {
391 foreach (var language in masterPage.Languages)
392 {
393 languages.Add(language);
394 }
395 }
396397 Uri url = Dynamicweb.Context.Current.Request.Url;
398 string hostName = url.Host;
399400401402 #line default
403 #line hidden
404 WriteLiteral(" <!doctype html>\r\n");
405406 WriteLiteral(" <html");
407408 WriteAttribute("lang", Tuple.Create(" lang=\"", 9835), Tuple.Create("\"", 9893)
409410 #line 189 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
411 , Tuple.Create(Tuple.Create("", 9842), Tuple.Create<System.Object, System.Int32>(Pageview.Area.CultureInfo.TwoLetterISOLanguageName
412413 #line default
414 #line hidden
415 , 9842), false)
416 );
417418 WriteLiteral(">\r\n <head>\r\n <!-- ");
419420421 #line 191 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
422 Write(swiftVersion);
423424425 #line default
426 #line hidden
427 WriteLiteral(" -->\r\n ");
428429 WriteLiteral("\r\n <meta");
430431 WriteLiteral(" charset=\"utf-8\"");
432433 WriteLiteral(">\r\n <meta");
434435 WriteLiteral(" name=\"viewport\"");
436437 WriteLiteral(" content=\"height=device-height, width=device-width, initial-scale=1.0\"");
438439 WriteLiteral(">\r\n <link");
440441 WriteLiteral(" rel=\"shortcut icon\"");
442443 WriteAttribute("href", Tuple.Create(" href=\"", 10142), Tuple.Create("\"", 10157)
444445 #line 195 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
446 , Tuple.Create(Tuple.Create("", 10149), Tuple.Create<System.Object, System.Int32>(favicon
447448 #line default
449 #line hidden
450 , 10149), false)
451 );
452453 WriteLiteral(">\r\n <link");
454455 WriteLiteral(" rel=\"apple-touch-icon\"");
456457 WriteAttribute("href", Tuple.Create(" href=\"", 10197), Tuple.Create("\"", 10219)
458459 #line 196 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
460 , Tuple.Create(Tuple.Create("", 10204), Tuple.Create<System.Object, System.Int32>(appleTouchIcon
461462 #line default
463 #line hidden
464 , 10204), false)
465 );
466467 WriteLiteral(">\r\n\r\n");
468469 WriteLiteral(" ");
470471472 #line 198 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
473 Write(Model.MetaTags);
474475476 #line default
477 #line hidden
478 WriteLiteral("\r\n\r\n");
479480481 #line 200 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
482483484 #line default
485 #line hidden
486487 #line 200 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
488489 var alreadyWrittenTwoletterIsos = new List<string>();
490491492 #line default
493 #line hidden
494495 #line 202 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
496497 foreach (var language in languages)
498 {
499 hostName = url.Host;
500 if (language?.Area != null)
501 {
502 if (language.Area?.MasterArea != null && !string.IsNullOrEmpty(language.Area.MasterArea.DomainLock))
503 {
504 hostName = language.Area.MasterArea.DomainLock; //dk.domain.com or dk-domain.dk
505 }
506 if (language != null && language.Area != null && language.Published && language.Area.Active && language.Area.Published)
507 {
508 if (!string.IsNullOrEmpty(language.Area.DomainLock))
509 {
510 hostName = language.Area.DomainLock; //dk.domain.com or dk-domain.dk
511 }
512 string querystring = $"Default.aspx?ID={language.ID}";
513 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["GroupID"]))
514 {
515 querystring += $"&GroupID={Dynamicweb.Context.Current.Request.QueryString["GroupID"]}";
516 }
517 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["ProductID"]))
518 {
519 querystring += $"&ProductID={Dynamicweb.Context.Current.Request.QueryString["ProductID"]}";
520 }
521 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["VariantID"]))
522 {
523 querystring += $"&VariantID={Dynamicweb.Context.Current.Request.QueryString["VariantID"]}";
524 }
525526 string friendlyUrl = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(querystring);
527 if (language.Area.RedirectFirstPage && language.ParentPageId == 0 && language.Sort == 1)
528 {
529 friendlyUrl = "/";
530 }
531 string href = $"{url.Scheme}://{hostName}{friendlyUrl}";
532533534535536 #line default
537 #line hidden
538 WriteLiteral(" <link");
539540 WriteLiteral(" rel=\"alternate\"");
541542 WriteAttribute("hreflang", Tuple.Create(" hreflang=\"", 12610), Tuple.Create("\"", 12662)
543544 #line 240 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
545 , Tuple.Create(Tuple.Create("", 12621), Tuple.Create<System.Object, System.Int32>(language.Area.CultureInfo.Name.ToLower()
546547 #line default
548 #line hidden
549 , 12621), false)
550 );
551552 WriteAttribute("href", Tuple.Create(" href=\"", 12663), Tuple.Create("\"", 12675)
553554 #line 240 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
555 , Tuple.Create(Tuple.Create("", 12670), Tuple.Create<System.Object, System.Int32>(href
556557 #line default
558 #line hidden
559 , 12670), false)
560 );
561562 WriteLiteral(">\r\n");
563564565 #line 241 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
566 if (!alreadyWrittenTwoletterIsos.Contains(language.Area.CultureInfo.TwoLetterISOLanguageName))
567 {
568 alreadyWrittenTwoletterIsos.Add(language.Area.CultureInfo.TwoLetterISOLanguageName);
569570571 #line default
572 #line hidden
573 WriteLiteral(" <link");
574575 WriteLiteral(" rel=\"alternate\"");
576577 WriteAttribute("hreflang", Tuple.Create(" hreflang=\"", 12989), Tuple.Create("\"", 13061)
578579 #line 244 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
580 , Tuple.Create(Tuple.Create("", 13000), Tuple.Create<System.Object, System.Int32>(language.Area.CultureInfo.TwoLetterISOLanguageName.ToLower()
581582 #line default
583 #line hidden
584 , 13000), false)
585 );
586587 WriteAttribute("href", Tuple.Create(" href=\"", 13062), Tuple.Create("\"", 13074)
588589 #line 244 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
590 , Tuple.Create(Tuple.Create("", 13069), Tuple.Create<System.Object, System.Int32>(href
591592 #line default
593 #line hidden
594 , 13069), false)
595 );
596597 WriteLiteral(">\r\n");
598599600 #line 245 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
601 }
602 }
603 }
604 }
605606607 #line default
608 #line hidden
609 WriteLiteral("\r\n\r\n <title>");
610611612 #line 251 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
613 Write(Model.Title);
614615616 #line default
617 #line hidden
618 WriteLiteral("</title>\r\n ");
619620 WriteLiteral("\r\n <link");
621622 WriteAttribute("href", Tuple.Create(" href=\"", 13269), Tuple.Create("\"", 13366)
623 , Tuple.Create(Tuple.Create("", 13276), Tuple.Create("/Files/Templates/Designs/Swift/Assets/css/styles.css?", 13276), true)
624625 #line 253 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
626 , Tuple.Create(Tuple.Create("", 13329), Tuple.Create<System.Object, System.Int32>(cssStyleFileInfo.LastWriteTime.Ticks
627628 #line default
629 #line hidden
630 , 13329), false)
631 );
632633 WriteLiteral(" rel=\"stylesheet\"");
634635 WriteLiteral(" media=\"all\"");
636637 WriteLiteral(" type=\"text/css\"");
638639 WriteLiteral(">\r\n\t\t<link");
640641 WriteAttribute("href", Tuple.Create(" href=\"", 13422), Tuple.Create("\"", 13525)
642 , Tuple.Create(Tuple.Create("", 13429), Tuple.Create("/Files/Templates/Designs/Swift/Assets/css/custom.css?", 13429), true)
643644 #line 254 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
645 , Tuple.Create(Tuple.Create("", 13482), Tuple.Create<System.Object, System.Int32>(cssStyleFileInfoCustom.LastWriteTime.Ticks
646647 #line default
648 #line hidden
649 , 13482), false)
650 );
651652 WriteLiteral(" rel=\"stylesheet\"");
653654 WriteLiteral(" media=\"all\"");
655656 WriteLiteral(" type=\"text/css\"");
657658 WriteLiteral(">\r\n\r\n");
659660661 #line 256 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
662663664 #line default
665 #line hidden
666667 #line 256 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
668 if (disableWideBreakpoints != "disableBoth")
669 {
670671672 #line default
673 #line hidden
674 WriteLiteral(" <style>\r\n ");
675676 WriteLiteral(@"@media ( min-width: 1600px ) {
677 .container-xxl,
678 .container-xl,
679 .container-lg,
680 .container-md,
681 .container-sm,
682 .container {
683 max-width: 1520px;
684 }
685 }
686 </style>
687 ");
688689690 #line 270 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
691692693694 if (disableWideBreakpoints != "disableUltraWideOnly")
695 {
696697698 #line default
699 #line hidden
700 WriteLiteral(" <style>\r\n ");
701702 WriteLiteral(@"@media ( min-width: 1920px ) {
703 .container-xxl,
704 .container-xl,
705 .container-lg,
706 .container-md,
707 .container-sm,
708 .container {
709 max-width: 1820px;
710 }
711 }
712 </style>
713 ");
714715716 #line 287 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
717 }
718 }
719720721722 #line default
723 #line hidden
724725 #line 290 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
726727728729 #line default
730 #line hidden
731 WriteLiteral(" <link");
732733 WriteAttribute("href", Tuple.Create(" href=\"", 14655), Tuple.Create("\"", 14771)
734 , Tuple.Create(Tuple.Create("", 14662), Tuple.Create("/Files/Templates/Designs/Swift/_parsed/Swift_css/Swift_styles_", 14662), true)
735736 #line 291 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
737 , Tuple.Create(Tuple.Create("", 14724), Tuple.Create<System.Object, System.Int32>(Model.Area.ID
738739 #line default
740 #line hidden
741 , 14724), false)
742 , Tuple.Create(Tuple.Create("", 14740), Tuple.Create(".min.css?", 14740), true)
743744 #line 291 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
745 , Tuple.Create(Tuple.Create("", 14749), Tuple.Create<System.Object, System.Int32>(cssLastModified.Ticks
746747 #line default
748 #line hidden
749 , 14749), false)
750 );
751752 WriteLiteral(" rel=\"stylesheet\"");
753754 WriteLiteral(" media=\"all\"");
755756 WriteLiteral(" type=\"text/css\"");
757758 WriteLiteral(" data-last-modified-content=\"");
759760761 #line 291 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
762 Write(cssLastModified);
763764765 #line default
766 #line hidden
767 WriteLiteral("\"");
768769 WriteLiteral(">\r\n <script");
770771 WriteAttribute("src", Tuple.Create(" src=\"", 14881), Tuple.Create("\"", 14970)
772 , Tuple.Create(Tuple.Create("", 14887), Tuple.Create("/Files/Templates/Designs/Swift/Assets/js/scripts.js?", 14887), true)
773774 #line 292 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
775 , Tuple.Create(Tuple.Create("", 14939), Tuple.Create<System.Object, System.Int32>(jsFileInfo.LastWriteTime.Ticks
776777 #line default
778 #line hidden
779 , 14939), false)
780 );
781782 WriteLiteral("></script>\r\n <script");
783784 WriteLiteral(" type=\"module\"");
785786 WriteLiteral(@">
787 swift.Scroll.hideHeadersOnScroll();
788 swift.Scroll.handleAlternativeTheme();
789790 //Only load if AOS
791 const aosColumns = document.querySelectorAll('[data-aos]');
792 if (aosColumns.length > 0) {
793 swift.AssetLoader.Load('/Files/Templates/Designs/Swift/Assets/js/aos.js?");
794795796 #line 300 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
797 Write(jsFileInfo.LastWriteTime.Ticks);
798799800 #line default
801 #line hidden
802 WriteLiteral(@"', 'js');
803 document.addEventListener('load.swift.assetloader', function () {
804 AOS.init({ duration: 400, delay: 100, easing: 'ease-in-out', mirror: false, disable: window.matchMedia('(prefers-reduced-motion: reduce)') });
805 });
806 }
807 </script>
808809 ");
810811812 #line 307 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
813814815 #line default
816 #line hidden
817818 #line 307 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
819 if (!string.IsNullOrWhiteSpace(userCentrics))
820 {
821822823824 #line default
825 #line hidden
826 WriteLiteral("\t\t<link");
827828 WriteLiteral(" rel=\"preconnect\"");
829830 WriteLiteral(" href=\"//app.usercentrics.eu\"");
831832 WriteLiteral("> \r\n");
833834 WriteLiteral("\t\t<link");
835836 WriteLiteral(" rel=\"preconnect\"");
837838 WriteLiteral(" href=\"//api.usercentrics.eu\"");
839840 WriteLiteral("> \r\n");
841842 WriteLiteral("\t\t<link");
843844 WriteLiteral(" rel=\"preload\"");
845846 WriteLiteral(" href=\"//app.usercentrics.eu/browser-ui/latest/loader.js\"");
847848 WriteLiteral(" as=\"script\"");
849850 WriteLiteral("> \r\n");
851852853 #line 313 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
854855 }
856857858 #line default
859 #line hidden
860 WriteLiteral("\r\n");
861862863 #line 316 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
864865866 #line default
867 #line hidden
868869 #line 316 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
870 if (!string.IsNullOrWhiteSpace(userCentrics))
871 {
872873874 #line default
875 #line hidden
876 WriteLiteral("\t\t\t");
877878879 #line 318 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
880 Write(userCentrics);
881882883 #line default
884 #line hidden
885 WriteLiteral("\r\n");
886887888 #line 319 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
889 }
890891892893 #line default
894 #line hidden
895896 #line 321 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
897898899900 #line default
901 #line hidden
902 WriteLiteral("\t\t");
903904905 #line 322 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
906 if (!string.IsNullOrWhiteSpace(userCentrics) && !string.IsNullOrWhiteSpace(googleTagManagerID))
907 {
908909910 #line default
911 #line hidden
912 WriteLiteral("\t\t\t<script");
913914 WriteLiteral(" type=\"text/plain\"");
915916 WriteLiteral(" data-usercentrics=\"Google Tag Manager\"");
917918 WriteLiteral(@">
919 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
920 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
921 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
922 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
923 })(window, document, 'script', 'dataLayer', '");
924925926 #line 329 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
927 Write(googleTagManagerID);
928929930 #line default
931 #line hidden
932 WriteLiteral("\');\r\n\r\n\t\t\t\tfunction gtag() { dataLayer.push(arguments); }\r\n\t\t\t</script>\r\n");
933934935 #line 333 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
936 } else if (!string.IsNullOrWhiteSpace(googleTagManagerID) && allowTracking)
937 {
938939940 #line default
941 #line hidden
942 WriteLiteral(@" <script>
943 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
944 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
945 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
946 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
947 })(window, document, 'script', 'dataLayer', '");
948949950 #line 340 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
951 Write(googleTagManagerID);
952953954 #line default
955 #line hidden
956 WriteLiteral("\');\r\n\r\n\t\t\t\tfunction gtag() { dataLayer.push(arguments); }\r\n\t\t\t</script>\r\n");
957958959 #line 344 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
960 }
961962963 #line default
964 #line hidden
965 WriteLiteral("\r\n");
966967968 #line 346 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
969970971 #line default
972 #line hidden
973974 #line 346 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
975 if (!string.IsNullOrWhiteSpace(userCentrics) && !string.IsNullOrWhiteSpace(googleAnalyticsMeasurementID))
976 {
977 var GoogleAnalyticsDebugMode = "";
978979 if (Model.Area.Item.GetBoolean("EnableGoogleAnalyticsDebugMode"))
980 {
981 GoogleAnalyticsDebugMode = ", {'debug_mode': true}";
982 }
983984985986 #line default
987 #line hidden
988 WriteLiteral("\t\t\t<script");
989990 WriteLiteral(" type=\"text/plain\"");
991992 WriteLiteral(" data-usercentrics=\"Google Analytics\"");
993994 WriteLiteral(" async");
995996 WriteAttribute("src", Tuple.Create(" src=\"", 17659), Tuple.Create("\"", 17738)
997 , Tuple.Create(Tuple.Create("", 17665), Tuple.Create("https://www.googletagmanager.com/gtag/js?id=", 17665), true)
998999 #line 355 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1000 , Tuple.Create(Tuple.Create("", 17709), Tuple.Create<System.Object, System.Int32>(googleAnalyticsMeasurementID
10011002 #line default
1003 #line hidden
1004 , 17709), false)
1005 );
10061007 WriteLiteral("></script>\r\n");
10081009 WriteLiteral("\t\t\t<script");
10101011 WriteLiteral(" type=\"text/plain\"");
10121013 WriteLiteral(" data-usercentrics=\"Google Analytics\"");
10141015 WriteLiteral(">\r\n\t\t\t\twindow.dataLayer = window.dataLayer || [];\r\n\t\t\t\tfunction gtag() { dataLaye" +
1016 "r.push(arguments); }\r\n\t\t\t\tgtag(\'js\', new Date());\r\n\t\t\t\tgtag(\'config\', \'");
101710181019 #line 360 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1020 Write(googleAnalyticsMeasurementID);
102110221023 #line default
1024 #line hidden
1025 WriteLiteral("\'");
102610271028 #line 360 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1029 Write(GoogleAnalyticsDebugMode);
103010311032 #line default
1033 #line hidden
1034 WriteLiteral(");\r\n\t\t\t</script>\r\n");
103510361037 #line 362 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1038 } else if (!string.IsNullOrWhiteSpace(googleAnalyticsMeasurementID) && allowTracking)
1039 {
1040 var GoogleAnalyticsDebugMode = "";
10411042 if (Model.Area.Item.GetBoolean("EnableGoogleAnalyticsDebugMode"))
1043 {
1044 GoogleAnalyticsDebugMode = ", {'debug_mode': true}";
1045 }
1046104710481049 #line default
1050 #line hidden
1051 WriteLiteral("\t\t\t<script async");
10521053 WriteAttribute("src", Tuple.Create(" src=\"", 18334), Tuple.Create("\"", 18413)
1054 , Tuple.Create(Tuple.Create("", 18340), Tuple.Create("https://www.googletagmanager.com/gtag/js?id=", 18340), true)
10551056 #line 371 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1057 , Tuple.Create(Tuple.Create("", 18384), Tuple.Create<System.Object, System.Int32>(googleAnalyticsMeasurementID
10581059 #line default
1060 #line hidden
1061 , 18384), false)
1062 );
10631064 WriteLiteral("></script>\r\n");
10651066 WriteLiteral("\t\t\t<script>\r\n\t\t\t\twindow.dataLayer = window.dataLayer || [];\r\n\t\t\t\tfunction gtag() " +
1067 "{ dataLayer.push(arguments); }\r\n\t\t\t\tgtag(\'js\', new Date());\r\n\t\t\t\tgtag(\'config\', " +
1068 "\'");
106910701071 #line 376 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1072 Write(googleAnalyticsMeasurementID);
107310741075 #line default
1076 #line hidden
1077 WriteLiteral("\'");
107810791080 #line 376 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1081 Write(GoogleAnalyticsDebugMode);
108210831084 #line default
1085 #line hidden
1086 WriteLiteral(");\r\n\t\t\t</script>\r\n");
108710881089 #line 378 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1090 }
109110921093 #line default
1094 #line hidden
1095 WriteLiteral("\r\n");
109610971098 #line 380 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
109911001101 #line default
1102 #line hidden
11031104 #line 380 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1105 if (!string.IsNullOrWhiteSpace(customHeaderInclude))
1106 {
110711081109 #line default
1110 #line hidden
11111112 #line 382 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1113 Write(RenderPartial($"Components/Custom/{customHeaderInclude}"));
111411151116 #line default
1117 #line hidden
11181119 #line 382 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
11201121 }
112211231124 #line default
1125 #line hidden
1126 WriteLiteral("\r\n");
112711281129 #line 385 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
113011311132 #line default
1133 #line hidden
11341135 #line 385 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1136 if (allowTracking && !string.IsNullOrWhiteSpace(scriptsHeader)){
113711381139 #line default
1140 #line hidden
11411142 #line 386 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1143 Write(scriptsHeader);
114411451146 #line default
1147 #line hidden
11481149 #line 386 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
11501151 }
115211531154 #line default
1155 #line hidden
1156 WriteLiteral("\r\n </head>\r\n <body");
11571158 WriteAttribute("class", Tuple.Create(" class=\"", 18951), Tuple.Create("\"", 18979)
1159 , Tuple.Create(Tuple.Create("", 18959), Tuple.Create("brand", 18959), true)
11601161 #line 390 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1162 , Tuple.Create(Tuple.Create(" ", 18964), Tuple.Create<System.Object, System.Int32>(masterTheme
11631164 #line default
1165 #line hidden
1166 , 18965), false)
1167 );
11681169 WriteAttribute("id", Tuple.Create(" id=\"", 18980), Tuple.Create("\"", 19000)
1170 , Tuple.Create(Tuple.Create("", 18985), Tuple.Create("page", 18985), true)
11711172 #line 390 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1173 , Tuple.Create(Tuple.Create("", 18989), Tuple.Create<System.Object, System.Int32>(Model.ID
11741175 #line default
1176 #line hidden
1177 , 18989), false)
1178 );
11791180 WriteLiteral(">\r\n\r\n ");
11811182 WriteLiteral("\r\n");
118311841185 #line 393 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
118611871188 #line default
1189 #line hidden
11901191 #line 393 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1192 if (!string.IsNullOrWhiteSpace(googleTagManagerID) && allowTracking)
1193 {
119411951196 #line default
1197 #line hidden
1198 WriteLiteral(" <noscript>\r\n <iframe");
11991200 WriteAttribute("src", Tuple.Create(" src=\"", 19177), Tuple.Create("\"", 19248)
1201 , Tuple.Create(Tuple.Create("", 19183), Tuple.Create("https://www.googletagmanager.com/ns.html?id=", 19183), true)
12021203 #line 396 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1204 , Tuple.Create(Tuple.Create("", 19227), Tuple.Create<System.Object, System.Int32>(googleTagManagerID
12051206 #line default
1207 #line hidden
1208 , 19227), false)
1209 );
12101211 WriteLiteral("\r\n height=\"0\"");
12121213 WriteLiteral(" width=\"0\"");
12141215 WriteLiteral(" style=\"display:none;visibility:hidden\"");
12161217 WriteLiteral("></iframe>\r\n </noscript>\r\n");
121812191220 #line 399 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1221 }
122212231224 #line default
1225 #line hidden
1226 WriteLiteral("\r\n");
122712281229 #line 401 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
123012311232 #line default
1233 #line hidden
12341235 #line 401 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1236 if (renderAsResponsive || !renderMobile)
1237 {
123812391240 #line default
1241 #line hidden
1242 WriteLiteral(" <header");
12431244 WriteAttribute("class", Tuple.Create(" class=\"", 19465), Tuple.Create("\"", 19531)
1245 , Tuple.Create(Tuple.Create("", 19473), Tuple.Create("page-header", 19473), true)
12461247 #line 403 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1248 , Tuple.Create(Tuple.Create(" ", 19484), Tuple.Create<System.Object, System.Int32>(headerCssClass
12491250 #line default
1251 #line hidden
1252 , 19485), false)
1253 , Tuple.Create(Tuple.Create(" ", 19500), Tuple.Create("top-0", 19501), true)
12541255 #line 403 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1256 , Tuple.Create(Tuple.Create("", 19506), Tuple.Create<System.Object, System.Int32>(responsiveClassDesktop
12571258 #line default
1259 #line hidden
1260 , 19506), false)
1261 );
12621263 WriteLiteral(" id=\"page-header-desktop\"");
12641265 WriteLiteral(">\r\n");
126612671268 #line 404 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
126912701271 #line default
1272 #line hidden
12731274 #line 404 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1275 if (headerDesktopLink != null)
1276 {
127712781279 #line default
1280 #line hidden
12811282 #line 406 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1283 Write(RenderGrid(headerDesktopLink.PageId));
128412851286 #line default
1287 #line hidden
12881289 #line 406 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
12901291 }
129212931294 #line default
1295 #line hidden
1296 WriteLiteral(" </header>\r\n");
129712981299 #line 409 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1300 }
130113021303 #line default
1304 #line hidden
1305 WriteLiteral("\r\n");
130613071308 #line 411 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
130913101311 #line default
1312 #line hidden
13131314 #line 411 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1315 if ((renderAsResponsive || renderMobile))
1316 {
131713181319 #line default
1320 #line hidden
1321 WriteLiteral(" <header");
13221323 WriteAttribute("class", Tuple.Create(" class=\"", 19824), Tuple.Create("\"", 19889)
1324 , Tuple.Create(Tuple.Create("", 19832), Tuple.Create("page-header", 19832), true)
13251326 #line 413 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1327 , Tuple.Create(Tuple.Create(" ", 19843), Tuple.Create<System.Object, System.Int32>(headerCssClass
13281329 #line default
1330 #line hidden
1331 , 19844), false)
1332 , Tuple.Create(Tuple.Create(" ", 19859), Tuple.Create("top-0", 19860), true)
13331334 #line 413 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1335 , Tuple.Create(Tuple.Create("", 19865), Tuple.Create<System.Object, System.Int32>(responsiveClassMobile
13361337 #line default
1338 #line hidden
1339 , 19865), false)
1340 );
13411342 WriteLiteral(" id=\"page-header-mobile\"");
13431344 WriteLiteral(">\r\n");
134513461347 #line 414 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
134813491350 #line default
1351 #line hidden
13521353 #line 414 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1354 if (headerMobileLink != null)
1355 {
135613571358 #line default
1359 #line hidden
13601361 #line 416 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1362 Write(RenderGrid(headerMobileLink.PageId));
136313641365 #line default
1366 #line hidden
13671368 #line 416 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
13691370 }
137113721373 #line default
1374 #line hidden
1375 WriteLiteral(" </header>\r\n");
137613771378 #line 419 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1379 }
138013811382 #line default
1383 #line hidden
1384 WriteLiteral("\r\n <div data-intersect></div>\r\n\r\n <main");
13851386 WriteLiteral(" id=\"content\"");
13871388 WriteLiteral(" ");
138913901391 #line 423 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1392 Write(schemaOrgType);
139313941395 #line default
1396 #line hidden
1397 WriteLiteral(">\r\n");
139813991400 #line 424 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
140114021403 #line default
1404 #line hidden
1405 WriteLiteral("\r\n\r\n");
140614071408 #line 429 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
14091410 string productIdFromUrl = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString.Get("ProductID")) ? Dynamicweb.Context.Current.Request.QueryString.Get("ProductID") : string.Empty;
1411 bool isProductDetail = !string.IsNullOrEmpty(productIdFromUrl) && Pageview.Page.NavigationTag.ToLower() == "shop";
14121413 bool isArticlePagePage = Model.ItemType == "Swift_Article";
1414 bool isArticleListPage = Model.ItemType == "Swift_ArticleListPage";
1415 string schemaOrgProp = string.Empty;
1416 if (isArticlePagePage)
1417 {
1418 schemaOrgProp = "itemprop=\"articleBody\"";
1419 }
14201421 string theme = "";
1422 string gridContent = "";
14231424 if (Model.PropertyItem != null)
1425 {
1426 theme = !string.IsNullOrWhiteSpace(Model.PropertyItem.GetRawValueString("Theme")) ? "theme " + Model.PropertyItem.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : "";
1427 }
14281429 if (Model.Item != null || Pageview.IsVisualEditorMode)
1430 {
1431 if (!isProductDetail)
1432 {
1433 gridContent = Model.Grid("Grid", "Grid", "default:true;sort:1", "Page");
1434 }
1435 else
1436 {
1437 var productObject = Dynamicweb.Ecommerce.Services.Products.GetProductById(productIdFromUrl, "", Pageview.Area.EcomLanguageId);
1438 if (productObject != null)
1439 {
1440 var detailPage = Dynamicweb.Ecommerce.Services.ProductGroups.GetGroup(productObject?.PrimaryGroupId)?.Meta.PrimaryPage ?? string.Empty;
1441 var detailPageId = detailPage != string.Empty ? Convert.ToInt16(detailPage.Substring(detailPage.LastIndexOf('=') + 1)) : GetPageIdByNavigationTag("ProductDetailPage");
1442144314441445 #line default
1446 #line hidden
14471448 #line 463 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1449 Write(RenderGrid(detailPageId));
145014511452 #line default
1453 #line hidden
14541455 #line 463 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
14561457 }
1458 }
1459 }
14601461 bool doNotRenderPage = false;
14621463 //Check if we are on the poduct detail page, and if there is data to render
1464 ProductViewModel product = new ProductViewModel();
1465 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails"))
1466 {
1467 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"];
1468 if (string.IsNullOrEmpty(product.Id))
1469 {
1470 doNotRenderPage = true;
1471 }
1472 }
14731474 //Render the page
1475 if (!doNotRenderPage)
1476 {
1477 string itemIdentifier = Model?.Item?.SystemName != null ? "item_" + Model.Item.SystemName.ToLower() : "item_Swift_Page";
14781479 if (Pageview.IsVisualEditorMode)
1480 {
148114821483 #line default
1484 #line hidden
14851486 #line 488 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1487 Write(Model.Placeholder("dwcontent", "content", "default:true;sort:1"));
148814891490 #line default
1491 #line hidden
14921493 #line 488 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
14941495 }
1496149714981499 #line default
1500 #line hidden
1501 WriteLiteral("\t\t<div");
15021503 WriteAttribute("class", Tuple.Create(" class=\"", 22612), Tuple.Create("\"", 22642)
15041505 #line 491 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1506 , Tuple.Create(Tuple.Create("", 22620), Tuple.Create<System.Object, System.Int32>(theme
15071508 #line default
1509 #line hidden
1510 , 22620), false)
15111512 #line 491 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1513 , Tuple.Create(Tuple.Create(" ", 22626), Tuple.Create<System.Object, System.Int32>(itemIdentifier
15141515 #line default
1516 #line hidden
1517 , 22627), false)
1518 );
15191520 WriteLiteral(" ");
152115221523 #line 491 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1524 Write(schemaOrgProp);
152515261527 #line default
1528 #line hidden
1529 WriteLiteral(">\r\n");
153015311532 #line 492 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
153315341535 #line default
1536 #line hidden
15371538 #line 492 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1539 if (isArticleListPage)
1540 {
1541 var hx = $"hx-get=\"{Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(Model.ID)}\" hx-select=\"#content\" hx-target=\"#content\" hx-swap=\"outerHTML\" hx-trigger=\"change\" hx-headers='{{\"feed\": \"true\"}}' hx-push-url=\"true\" hx-indicator=\"#ArticleFacetForm\"";
1542154315441545 #line default
1546 #line hidden
1547 WriteLiteral("\t\t\t\t<form ");
154815491550 #line 496 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1551 Write(hx);
155215531554 #line default
1555 #line hidden
1556 WriteLiteral(" id=\"ArticleFacetForm\">\r\n");
15571558 WriteLiteral("\t\t\t\t\t");
155915601561 #line 497 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1562 Write(gridContent);
156315641565 #line default
1566 #line hidden
1567 WriteLiteral("\r\n\t\t\t\t</form>\r\n");
15681569 WriteLiteral("\t\t\t\t<script");
15701571 WriteLiteral(" type=\"module\"");
15721573 WriteLiteral(" src=\"/Files/Templates/Designs/Swift/Assets/js/htmx.js\"");
15741575 WriteLiteral("></script>\r\n");
15761577 WriteLiteral("\t\t\t\t<script");
15781579 WriteLiteral(" type=\"module\"");
15801581 WriteLiteral(@">
1582 document.addEventListener('htmx:confirm', (event) => {
1583 let filters = event.detail.elt.querySelectorAll('select');
1584 for (var i = 0; i < filters.length; i++) {
1585 let input = filters[i];
1586 if (input.name && !input.value) {
1587 input.name = '';
1588 }
1589 }
1590 });
15911592 document.addEventListener('htmx:beforeOnLoad', (event) => {
1593 swift.Scroll.stopIntersectionObserver();
1594 });
15951596 document.addEventListener('htmx:afterOnLoad', () => {
1597 swift.Scroll.hideHeadersOnScroll();
1598 swift.Scroll.handleAlternativeTheme();
1599 });
1600 </script>
1601 ");
160216031604 #line 520 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1605 }
1606 else
1607 {
160816091610 #line default
1611 #line hidden
16121613 #line 523 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1614 Write(gridContent);
161516161617 #line default
1618 #line hidden
16191620 #line 523 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
16211622 }
162316241625 #line default
1626 #line hidden
1627 WriteLiteral("\t\t</div>\r\n");
162816291630 #line 526 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
16311632 }
1633 else
1634 {
163516361637 #line default
1638 #line hidden
1639 WriteLiteral("\t\t<div");
16401641 WriteLiteral(" class=\"container\"");
16421643 WriteLiteral(">\r\n\t\t\t<div");
16441645 WriteLiteral(" class=\"alert alert-info\"");
16461647 WriteLiteral(" role=\"alert\"");
16481649 WriteLiteral(">");
165016511652 #line 531 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1653 Write(Translate("Sorry. There is nothing to view here"));
165416551656 #line default
1657 #line hidden
1658 WriteLiteral("</div>\r\n\t\t</div>\r\n");
165916601661 #line 533 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1662 }
16631664 if (!Model.IsCurrentUserAllowed)
1665 {
1666 int signInPage = GetPageIdByNavigationTag("SignInPage");
1667 int dashboardPage = GetPageIdByNavigationTag("MyAccountDashboardPage");
16681669 if (!Pageview.IsVisualEditorMode)
1670 {
1671 if (signInPage != 0)
1672 {
1673 if (signInPage != Model.ID)
1674 {
1675 Dynamicweb.Context.Current.Response.Redirect("/Default.aspx?ID=" + signInPage);
1676 }
1677 else
1678 {
1679 if (dashboardPage != 0)
1680 {
1681 Dynamicweb.Context.Current.Response.Redirect("/Default.aspx?ID=" + dashboardPage);
1682 }
1683 else
1684 {
1685 Dynamicweb.Context.Current.Response.Redirect("/");
1686 }
1687 }
1688 }
1689 else
1690 {
169116921693 #line default
1694 #line hidden
1695 WriteLiteral("\t\t\t\t<div");
16961697 WriteLiteral(" class=\"alert alert-dark m-0\"");
16981699 WriteLiteral(" role=\"alert\"");
17001701 WriteLiteral(">\r\n\t\t\t\t\t<span>");
170217031704 #line 563 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1705 Write(Translate("You do not have access to this page"));
170617071708 #line default
1709 #line hidden
1710 WriteLiteral("</span>\r\n\t\t\t\t</div>\r\n");
171117121713 #line 565 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1714 }
1715 }
1716 else
1717 {
171817191720 #line default
1721 #line hidden
1722 WriteLiteral("\t\t\t<div");
17231724 WriteLiteral(" class=\"alert alert-dark m-0\"");
17251726 WriteLiteral(" role=\"alert\"");
17271728 WriteLiteral(">\r\n\t\t\t\t<span>");
172917301731 #line 570 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1732 Write(Translate("To work on this page, you must be signed in, in the frontend"));
173317341735 #line default
1736 #line hidden
1737 WriteLiteral("</span>\r\n\t\t\t</div>\r\n");
173817391740 #line 572 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1741 }
1742 }
174317441745 #line default
1746 #line hidden
1747 WriteLiteral("\r\n\r\n </main>\r\n\r\n");
174817491750 #line 578 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
175117521753 #line default
1754 #line hidden
17551756 #line 578 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1757 if (renderAsResponsive || !renderMobile)
1758 {
175917601761 #line default
1762 #line hidden
1763 WriteLiteral(" <footer");
17641765 WriteAttribute("class", Tuple.Create(" class=\"", 25073), Tuple.Create("\"", 25117)
1766 , Tuple.Create(Tuple.Create("", 25081), Tuple.Create("page-footer", 25081), true)
17671768 #line 580 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1769 , Tuple.Create(Tuple.Create("", 25092), Tuple.Create<System.Object, System.Int32>(responsiveClassDesktop
17701771 #line default
1772 #line hidden
1773 , 25092), false)
1774 );
17751776 WriteLiteral(" id=\"page-footer-desktop\"");
17771778 WriteLiteral(">\r\n");
177917801781 #line 581 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
178217831784 #line default
1785 #line hidden
17861787 #line 581 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1788 if (footerDesktopLink != null)
1789 {
179017911792 #line default
1793 #line hidden
17941795 #line 583 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1796 Write(RenderGrid(footerDesktopLink.PageId));
179717981799 #line default
1800 #line hidden
18011802 #line 583 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
18031804 }
180518061807 #line default
1808 #line hidden
1809 WriteLiteral("\r\n");
181018111812 #line 586 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
181318141815 #line default
1816 #line hidden
18171818 #line 586 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1819 if (allowTracking && !string.IsNullOrWhiteSpace(customFooterScripts)){
182018211822 #line default
1823 #line hidden
18241825 #line 587 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1826 Write(customFooterScripts);
182718281829 #line default
1830 #line hidden
18311832 #line 587 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
18331834 }
183518361837 #line default
1838 #line hidden
1839 WriteLiteral(" </footer>\r\n");
184018411842 #line 590 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1843 }
184418451846 #line default
1847 #line hidden
1848 WriteLiteral("\r\n");
184918501851 #line 592 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
185218531854 #line default
1855 #line hidden
18561857 #line 592 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1858 if (renderAsResponsive || renderMobile)
1859 {
186018611862 #line default
1863 #line hidden
1864 WriteLiteral(" <footer");
18651866 WriteAttribute("class", Tuple.Create(" class=\"", 25533), Tuple.Create("\"", 25576)
1867 , Tuple.Create(Tuple.Create("", 25541), Tuple.Create("page-footer", 25541), true)
18681869 #line 594 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1870 , Tuple.Create(Tuple.Create("", 25552), Tuple.Create<System.Object, System.Int32>(responsiveClassMobile
18711872 #line default
1873 #line hidden
1874 , 25552), false)
1875 );
18761877 WriteLiteral(" id=\"page-footer-mobile\"");
18781879 WriteLiteral(">\r\n");
188018811882 #line 595 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
188318841885 #line default
1886 #line hidden
18871888 #line 595 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1889 if (footerMobileLink != null)
1890 {
189118921893 #line default
1894 #line hidden
18951896 #line 597 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1897 Write(RenderGrid(footerMobileLink.PageId));
189818991900 #line default
1901 #line hidden
19021903 #line 597 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
19041905 }
190619071908 #line default
1909 #line hidden
1910 WriteLiteral(" </footer>\r\n");
191119121913 #line 600 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1914 }
1915191619171918 #line default
1919 #line hidden
19201921 #line 602 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1922192319241925 #line default
1926 #line hidden
1927 WriteLiteral(" ");
192819291930 #line 603 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
1931 Write(RenderSnippet("offcanvas"));
193219331934 #line default
1935 #line hidden
1936 WriteLiteral("\r\n\r\n");
193719381939 #line 605 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
194019411942 #line default
1943 #line hidden
19441945 #line 605 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
19461947 bool isErpConnectionDown = !Dynamicweb.Core.Converter.ToBoolean(Context.Current.Items["IsWebServiceConnectionAvailable"]);
194819491950 #line default
1951 #line hidden
1952 WriteLiteral("\r\n\r\n ");
19531954 WriteLiteral("\r\n <div");
19551956 WriteLiteral(" class=\"modal fade\"");
19571958 WriteLiteral(" id=\"PreferencesModal\"");
19591960 WriteLiteral(" tabindex=\"-1\"");
19611962 WriteLiteral(" aria-hidden=\"true\"");
19631964 WriteLiteral(">\r\n <div");
19651966 WriteLiteral(" class=\"modal-dialog modal-dialog-centered modal-sm\"");
19671968 WriteLiteral(" id=\"PreferencesModalContent\"");
19691970 WriteLiteral(">\r\n ");
19711972 WriteLiteral("\r\n </div>\r\n </div>\r\n\r\n ");
19731974 WriteLiteral("\r\n <div");
19751976 WriteLiteral(" aria-live=\"polite\"");
19771978 WriteLiteral(" aria-atomic=\"true\"");
19791980 WriteLiteral(">\r\n <div");
19811982 WriteLiteral(" class=\"position-fixed bottom-0 end-0 p-3\"");
19831984 WriteLiteral(" style=\"z-index: 11\"");
19851986 WriteLiteral(">\r\n <div");
19871988 WriteLiteral(" id=\"favoriteNotificationToast\"");
19891990 WriteLiteral(" class=\"toast\"");
19911992 WriteLiteral(" role=\"alert\"");
19931994 WriteLiteral(" aria-live=\"assertive\"");
19951996 WriteLiteral(" aria-atomic=\"true\"");
19971998 WriteLiteral(">\r\n <div");
19992000 WriteLiteral(" class=\"toast-header\"");
20012002 WriteLiteral(">\r\n <strong");
20032004 WriteLiteral(" class=\"me-auto\"");
20052006 WriteLiteral(">");
200720082009 #line 621 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2010 Write(Translate("Favorite list updated"));
201120122013 #line default
2014 #line hidden
2015 WriteLiteral("</strong>\r\n <button");
20162017 WriteLiteral(" type=\"button\"");
20182019 WriteLiteral(" class=\"btn-close\"");
20202021 WriteLiteral(" data-bs-dismiss=\"toast\"");
20222023 WriteLiteral(" aria-label=\"Close\"");
20242025 WriteLiteral("></button>\r\n </div>\r\n <div");
20262027 WriteLiteral(" class=\"toast-body d-flex gap-3\"");
20282029 WriteLiteral(">\r\n <div");
20302031 WriteLiteral(" id=\"favoriteNotificationToast_Image\"");
20322033 WriteLiteral("></div>\r\n <div");
20342035 WriteLiteral(" id=\"favoriteNotificationToast_Text\"");
20362037 WriteLiteral("></div>\r\n </div>\r\n </div>\r\n </div>\r\n" +
2038 " </div>\r\n\r\n ");
20392040 WriteLiteral("\r\n <div");
20412042 WriteLiteral(" class=\"modal fade js-product\"");
20432044 WriteLiteral(" id=\"DynamicModal\"");
20452046 WriteLiteral(" tabindex=\"-1\"");
20472048 WriteLiteral(" aria-hidden=\"true\"");
20492050 WriteLiteral(">\r\n <div");
20512052 WriteLiteral(" class=\"modal-dialog modal-dialog-centered modal-md\"");
20532054 WriteLiteral(">\r\n <div");
20552056 WriteLiteral(" class=\"modal-content theme light\"");
20572058 WriteLiteral(" id=\"DynamicModalContent\"");
20592060 WriteLiteral(">\r\n ");
20612062 WriteLiteral("\r\n </div>\r\n </div>\r\n </div>\r\n\r\n ");
20632064 WriteLiteral("\r\n\t\t<div");
20652066 WriteLiteral(" class=\"offcanvas offcanvas-end theme light\"");
20672068 WriteLiteral(" tabindex=\"-1\"");
20692070 WriteLiteral(" id=\"DynamicOffcanvas\"");
20712072 WriteLiteral(">\r\n ");
20732074 WriteLiteral("\r\n </div>\r\n\r\n");
207520762077 #line 646 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
207820792080 #line default
2081 #line hidden
20822083 #line 646 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2084 if (Model.Area.Item.GetBoolean("ShowErpDownMessage") && !Dynamicweb.Core.Converter.ToBoolean(Context.Current.Items["IsWebServiceConnectionAvailable"]))
2085 {
2086 string erpDownMessageTheme = !string.IsNullOrWhiteSpace(Model.Area.Item.GetRawValueString("ErpDownMessageTheme")) ? " theme " + Model.Area.Item.GetRawValueString("ErpDownMessageTheme").Replace(" ", "").Trim().ToLower() : "theme light";
2087208820892090 #line default
2091 #line hidden
2092 WriteLiteral(" <div");
20932094 WriteLiteral(" class=\"position-fixed bottom-0 end-0 p-3\"");
20952096 WriteLiteral(" style=\"z-index: 1040\"");
20972098 WriteLiteral(">\r\n <div");
20992100 WriteAttribute("class", Tuple.Create(" class=\"", 28410), Tuple.Create("\"", 28463)
2101 , Tuple.Create(Tuple.Create("", 28418), Tuple.Create("toast", 28418), true)
2102 , Tuple.Create(Tuple.Create(" ", 28423), Tuple.Create("fade", 28424), true)
2103 , Tuple.Create(Tuple.Create(" ", 28428), Tuple.Create("show", 28429), true)
2104 , Tuple.Create(Tuple.Create(" ", 28433), Tuple.Create("border-0", 28434), true)
21052106 #line 651 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2107 , Tuple.Create(Tuple.Create(" ", 28442), Tuple.Create<System.Object, System.Int32>(erpDownMessageTheme
21082109 #line default
2110 #line hidden
2111 , 28443), false)
2112 );
21132114 WriteLiteral(" role=\"alert\"");
21152116 WriteLiteral(" aria-live=\"assertive\"");
21172118 WriteLiteral(" aria-atomic=\"true\"");
21192120 WriteLiteral(">\r\n <div");
21212122 WriteLiteral(" class=\"toast-header\"");
21232124 WriteLiteral(">\r\n <strong");
21252126 WriteLiteral(" class=\"me-auto\"");
21272128 WriteLiteral(">");
212921302131 #line 653 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2132 Write(Translate("Connection down"));
213321342135 #line default
2136 #line hidden
2137 WriteLiteral("</strong>\r\n <button");
21382139 WriteLiteral(" type=\"button\"");
21402141 WriteLiteral(" class=\"btn-close\"");
21422143 WriteLiteral(" data-bs-dismiss=\"toast\"");
21442145 WriteLiteral(" aria-label=\"Close\"");
21462147 WriteLiteral("></button>\r\n </div>\r\n <div");
21482149 WriteLiteral(" class=\"toast-body\"");
21502151 WriteLiteral(">\r\n");
21522153 WriteLiteral(" ");
215421552156 #line 657 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2157 Write(Translate("We are experiencing some connectivity issues. Not all features may be available to you."));
215821592160 #line default
2161 #line hidden
2162 WriteLiteral("\r\n </div>\r\n </div>\r\n </div>\r\n");
216321642165 #line 661 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2166 }
216721682169 #line default
2170 #line hidden
2171 WriteLiteral("\r\n");
217221732174 #line 663 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
217521762177 #line default
2178 #line hidden
21792180 #line 663 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2181 if (miniCartEnabled)
2182 {
218321842185 #line default
2186 #line hidden
21872188 #line 665 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2189219021912192 #line default
2193 #line hidden
2194 WriteLiteral("\t\t\t<script");
21952196 WriteLiteral(" type=\"module\"");
21972198 WriteLiteral(">\r\n\t\t\t\tdocument.addEventListener(\'updated.swift.cart\', (event) => {\r\n\t\t\t\t\tlet ord" +
2199 "erContext = event?.detail?.formData?.get(\"OrderContext\");\r\n\t\t\t\t\tupdateCartSummar" +
2200 "y(orderContext);\r\n\r\n");
220122022203 #line 671 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
220422052206 #line default
2207 #line hidden
22082209 #line 671 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2210 if (offcanvasMiniCartBehaviour == "2" || offcanvasMiniCartBehaviour == "3") {
221122122213 #line default
2214 #line hidden
2215 WriteLiteral("\t\t\t\t\t\t");
22162217 WriteLiteral("openMiniCartOffcanvas();");
22182219 WriteLiteral("\r\n");
222022212222 #line 673 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2223 }
222422252226 #line default
2227 #line hidden
2228 WriteLiteral("\t\t\t\t});\r\n\t\t\t</script>\r\n");
222922302231 #line 676 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
22322233 if (offcanvasMiniCartBehaviour == "1" || offcanvasMiniCartBehaviour == "3")
2234 {
223522362237 #line default
2238 #line hidden
22392240 #line 679 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2241224222432244 #line default
2245 #line hidden
2246 WriteLiteral("\t\t\t\t<script");
22472248 WriteLiteral(" type=\"module\"");
22492250 WriteLiteral(@">
2251 let miniCartToggles = document.querySelectorAll('.mini-cart-quantity');
2252 miniCartToggles?.forEach((toggle) => {
2253 toggle.parentElement.addEventListener('click', (event) => {
2254 event.preventDefault();
2255 let orderContext = toggle.dataset?.orderContext;
2256 updateCartSummary(orderContext);
22572258 openMiniCartOffcanvas();
2259 });
2260 });
2261 </script>
2262 ");
226322642265 #line 692 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2266 }
2267226822692270 #line default
2271 #line hidden
2272 WriteLiteral("\t\t\t<script>\r\n\r\n\t\t\t\tconst updateCartSummary = (orderContext) => {\r\n\t\t\t\t\tconst dyna" +
2273 "micOffcanvas = document.getElementById(\'DynamicOffcanvas\');\r\n\t\t\t\t\tswift.PageUpda" +
2274 "ter.UpdateFromUrlInline(event, \'/Default.aspx?ID=");
227522762277 #line 698 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2278 Write(cartSummaryPageId);
227922802281 #line default
2282 #line hidden
2283 WriteLiteral("&CartType=minicart&RequestPageID=");
228422852286 #line 698 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2287 Write(Pageview.Page.ID);
228822892290 #line default
2291 #line hidden
2292 WriteLiteral(@"&OrderContext=' + orderContext +'', 'Swift_CartSummary.cshtml', dynamicOffcanvas);
2293 };
22942295 const openMiniCartOffcanvas = () => {
2296 const dynamicOffcanvas = document.getElementById('DynamicOffcanvas');
2297 const miniCartOffcanvas = bootstrap.Offcanvas.getOrCreateInstance(dynamicOffcanvas);
2298 dynamicOffcanvas.classList.add('overflow-y-auto');
22992300 if (!miniCartOffcanvas._isShown) {
2301 miniCartOffcanvas.show();
2302 hideActiveOffcanvases(miniCartOffcanvas);
2303 }
2304 };
23052306 const hideActiveOffcanvases = (miniCartOffcanvas) => {
2307 let activeOffcanvases = document.querySelectorAll('.offcanvas.show');
2308 activeOffcanvases?.forEach((offCanvas) => {
2309 offCanvas = bootstrap.Offcanvas.getInstance(offCanvas);
2310 if (offCanvas !== miniCartOffcanvas) {
2311 offCanvas.hide();
2312 }
2313 });
2314 };
23152316 </script>
2317 ");
231823192320 #line 723 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2321 }
232223232324 #line default
2325 #line hidden
2326 WriteLiteral("\r\n\t</body>\r\n\r\n</html>\r\n");
232723282329 #line 728 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
23302331 }
2332 else if (Pageview.IsVisualEditorMode)
2333 {
233423352336 #line default
2337 #line hidden
2338 WriteLiteral(" <head>\r\n <title>");
233923402341 #line 733 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2342 Write(Model.Title);
234323442345 #line default
2346 #line hidden
2347 WriteLiteral("</title>\r\n ");
23482349 WriteLiteral("\r\n <link");
23502351 WriteLiteral(" href=\"/Files/Templates/Designs/Swift/Assets/css/styles.css\"");
23522353 WriteLiteral(" rel=\"stylesheet\"");
23542355 WriteLiteral(" media=\"all\"");
23562357 WriteLiteral(" type=\"text/css\"");
23582359 WriteLiteral(">\r\n </head>\r\n");
23602361 WriteLiteral(" <body");
23622363 WriteLiteral(" class=\"p-3\"");
23642365 WriteLiteral(">\r\n <div");
23662367 WriteLiteral(" class=\"alert alert-danger\"");
23682369 WriteLiteral(" role=\"alert\"");
23702371 WriteLiteral(">\r\n");
23722373 WriteLiteral(" ");
237423752376 #line 739 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2377 Write(Translate("Basic Swift setup is needed!"));
237823792380 #line default
2381 #line hidden
2382 WriteLiteral("\r\n </div>\r\n\r\n");
238323842385 #line 742 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
238623872388 #line default
2389 #line hidden
23902391 #line 742 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2392 if (brandingPage == null)
2393 {
239423952396 #line default
2397 #line hidden
2398 WriteLiteral(" <div");
23992400 WriteLiteral(" class=\"alert alert-warning\"");
24012402 WriteLiteral(" role=\"alert\"");
24032404 WriteLiteral(">\r\n");
24052406 WriteLiteral(" ");
240724082409 #line 745 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2410 Write(Translate("Please add a Branding page and reference it in website settings"));
241124122413 #line default
2414 #line hidden
2415 WriteLiteral("\r\n </div>\r\n");
241624172418 #line 747 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2419 }
242024212422 #line default
2423 #line hidden
2424 WriteLiteral("\r\n");
242524262427 #line 749 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
242824292430 #line default
2431 #line hidden
24322433 #line 749 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2434 if (themesParagraphs == null)
2435 {
243624372438 #line default
2439 #line hidden
2440 WriteLiteral(" <div");
24412442 WriteLiteral(" class=\"alert alert-warning\"");
24432444 WriteLiteral(" role=\"alert\"");
24452446 WriteLiteral(">\r\n");
24472448 WriteLiteral(" ");
244924502451 #line 752 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2452 Write(Translate("Please add a Themes collection page and reference it in website settings"));
245324542455 #line default
2456 #line hidden
2457 WriteLiteral("\r\n </div>\r\n");
245824592460 #line 754 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2461 }
246224632464 #line default
2465 #line hidden
2466 WriteLiteral(" </body>\r\n");
246724682469 #line 756 "D:\dynamicweb.net\Solutions\Dynamicweb\hctswift.cloud.dynamicweb-cms.com\files\Templates\Designs\Swift\_parsed\Swift_Page.parsed.cshtml"
2470 }
247124722473 #line default
2474 #line hidden
2475 WriteLiteral("\r\n\r\n");
24762477 }
2478 }
2479 }
2480
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
2 @using System
3 @using Dynamicweb
4 @using Dynamicweb.Environment
5 @using Dynamicweb.Frontend
6 7 @{
8 <!-- @Services.Currencies.GetDefaultCurrency()?.Code -->
9 }
10 11 @functions {
12 string GetCookieOptInPermission(string category)
13 {
14 bool categoryOrAllGranted = false;
15 16 if (CookieManager.IsCookieManagementActive)
17 {
18 var cookieOptInLevel = CookieManager.GetCookieOptInLevel();
19 var cookieOptInCategories = CookieManager.GetCookieOptInCategories();
20 categoryOrAllGranted = cookieOptInCategories.Contains(category) || cookieOptInLevel == CookieOptInLevel.All;
21 }
22 23 return categoryOrAllGranted ? "granted" : "denied";
24 }
25 26 bool AllowTracking()
27 {
28 bool allowTracking = true;
29 if (CookieManager.IsCookieManagementActive)
30 {
31 var cookieOptInLevel = CookieManager.GetCookieOptInLevel();
32 var cookieOptInCategories = CookieManager.GetCookieOptInCategories();
33 34 bool consentEither = (cookieOptInCategories.Contains("Statistical") || cookieOptInCategories.Contains("Marketing"));
35 bool consentFunctional = cookieOptInLevel == CookieOptInLevel.Functional;
36 bool consentAtLeastOne = cookieOptInLevel == CookieOptInLevel.All || (consentFunctional && consentEither);
37 38 allowTracking = consentAtLeastOne;
39 }
40 return allowTracking;
41 }
42 }
43 44 @{
45 var cartSummaryPageId = Dynamicweb.Content.Services.Pages.GetPageByNavigationTag(Model.Area.ID, "CartSummary")?.ID;
46 bool enableMiniCart = Model.Area.Item?.GetBoolean("EnableOffcanvasMiniCart") ?? false;
47 var offcanvasMiniCartBehaviour = Model.Area.Item?.GetRawValueString("OffcanvasMinicartBehaviour", "3") ?? "3";
48 bool miniCartEnabled = cartSummaryPageId != null && enableMiniCart;
49 var brandingPageId = Model.Area.Item?.GetInt32("BrandingPage") ?? 0;
50 var themePageId = Model.Area.Item?.GetInt32("ThemesPage") ?? 0;
51 var cssPageId = Model.Area.Item?.GetInt32("CssPage") ?? 0;
52 var brandingPage = brandingPageId != 0 ? Dynamicweb.Content.Services.Pages?.GetPage(brandingPageId) ?? null : null;
53 var themesParagraphs = themePageId != 0 ? Dynamicweb.Content.Services.Paragraphs?.GetParagraphsByPageId(themePageId) ?? null : null;
54 var cssParagraphs = cssPageId != 0 ? Dynamicweb.Content.Services.Paragraphs?.GetParagraphsByPageId(cssPageId) ?? null : null;
55 var customFooterScripts = Model.Area.Item?.GetRawValueString("FooterScripts", "") ?? "";
56 var scriptsHeader = Model.Area.Item?.GetRawValueString("ScriptsHeader", "") ?? "";
57 58 }
59 60 @if (themesParagraphs != null || brandingPage != null)
61 {
62 string swiftVersion = ReadFile("/Files/Templates/Designs/Swift/swift_version.txt");
63 bool renderAsResponsive = Model.Area.Item.GetString("DeviceRendering", "responsive").Equals("responsive", StringComparison.OrdinalIgnoreCase);
64 bool renderMobile = Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Mobile || Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Tablet;
65 string responsiveClassDesktop = string.Empty;
66 string responsiveClassMobile = string.Empty;
67 if (renderAsResponsive)
68 {
69 responsiveClassDesktop = " d-none d-xl-block";
70 responsiveClassMobile = " d-block d-xl-none";
71 }
72 73 var headerDesktopLink = Model.Area.Item?.GetLink("HeaderDesktop") ?? null;
74 var headerMobileLink = Model.Area.Item?.GetLink("HeaderMobile") ?? null;
75 76 var footerDesktopLink = Model.Area.Item?.GetLink("FooterDesktop") ?? null;
77 var footerMobileLink = Model.Area.Item?.GetLink("FooterMobile") ?? null;
78 79 var disableWideBreakpoints = Model.Area?.Item?.GetRawValueString("DisableWideBreakpoints", "default");
80 81 string customHeaderInclude = !string.IsNullOrEmpty(Model.Area.Item.GetRawValueString("CustomHeaderInclude")) ? Model.Area.Item.GetFile("CustomHeaderInclude").Name : string.Empty;
82 83 var themesParagraphLastChanged = Dynamicweb.Content.Services.Paragraphs.GetParagraphsByPageId(themePageId).OrderByDescending(p => p.Audit.LastModifiedAt).FirstOrDefault();
84 var cssLastModified = brandingPage.Audit.LastModifiedAt > themesParagraphLastChanged.Audit.LastModifiedAt ? brandingPage.Audit.LastModifiedAt : themesParagraphLastChanged.Audit.LastModifiedAt;
85 86 var cssThemeAndBrandingStyleFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath($"/Files/Templates/Designs/Swift/_parsed/Swift_css/Swift_styles_{Model.Area.ID}.min.css"));
87 88 89 if (cssPageId != 0)
90 {
91 var cssFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath($"/Files/Templates/Designs/Swift/_parsed/Swift_css/Swift_css_styles_{Model.Area.ID}.css"));
92 var cssParagraphLastChanged = Dynamicweb.Content.Services.Paragraphs.GetParagraphsByPageId(cssPageId).OrderByDescending(p => p.Audit.LastModifiedAt).FirstOrDefault();
93 if (!cssThemeAndBrandingStyleFileInfo.Exists || cssThemeAndBrandingStyleFileInfo.LastWriteTime < cssParagraphLastChanged.Audit.LastModifiedAt)
94 {
95 var cssPageview = Dynamicweb.Frontend.PageView.GetPageviewByPageID(cssPageId);
96 cssPageview.Redirect = false;
97 cssPageview.Output();
98 }
99 }
100101 if (!cssThemeAndBrandingStyleFileInfo.Exists || cssThemeAndBrandingStyleFileInfo.LastWriteTime < brandingPage.Audit.LastModifiedAt)
102 {
103 //Branding page has been saved or the file is missing. Rewrite the file to disc.
104 if (brandingPageId > 0)
105 {
106 var brandingPageview = Dynamicweb.Frontend.PageView.GetPageviewByPageID(brandingPageId);
107 brandingPageview.Redirect = false;
108 brandingPageview.Output();
109 }
110 }
111112 if (!cssThemeAndBrandingStyleFileInfo.Exists || cssThemeAndBrandingStyleFileInfo.LastWriteTime < themesParagraphLastChanged.Audit.LastModifiedAt)
113 {
114 //Branding page has been saved or the file is missing. Rewrite the file to disc.
115 if (themePageId > 0)
116 {
117 var themePageview = Dynamicweb.Frontend.PageView.GetPageviewByPageID(themePageId);
118 themePageview.Redirect = false;
119 themePageview.Output();
120 }
121 }
122123 // Schema.org details for PDP
124 bool isProductDetailsPage = Dynamicweb.Context.Current.Request.QueryString.AllKeys.Contains("ProductID");
125 bool isArticlePage = Model.ItemType == "Swift_Article";
126 string schemaOrgType = string.Empty;
127128 if (isProductDetailsPage)
129 {
130 schemaOrgType = "itemscope=\"\" itemtype=\"https://schema.org/Product\"";
131 }
132133 if (isArticlePage)
134 {
135 schemaOrgType = "itemscope=\"\" itemtype=\"https://schema.org/Article\"";
136 }
137138139 var cssStyleFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath("/Files/Templates/Designs/Swift/Assets/css/styles.css"));
140 var cssStyleFileInfoCustom = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath("/Files/Templates/Designs/Swift/Assets/css/custom.css"));
141 var jsFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath("/Files/Templates/Designs/Swift/Assets/js/scripts.js"));
142143 string masterTheme = !string.IsNullOrWhiteSpace(Model.Area.Item.GetRawValueString("Theme")) ? " theme " + Model.Area.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : "";
144145 string favicon = Model.Area.Item.GetRawValueString("Favicon", "/Files/Templates/Designs/Swift/Assets/Images/favicon.png");
146 string appleTouchIcon = Model.Area.Item.GetRawValueString("AppleTouchIcon", "/Files/Templates/Designs/Swift/Assets/Images/apple-touch-icon.png");
147148 string headerCssClass = "sticky-top";
149 bool movePageBehind = false;
150151 if (Model.PropertyItem != null)
152 {
153 headerCssClass = Model.PropertyItem.GetRawValueString("MoveThisPageBehindTheHeader", "sticky-top");
154 movePageBehind = headerCssClass == "fixed-top" && !Pageview.IsVisualEditorMode ? true : false;
155 }
156157 headerCssClass = headerCssClass == "" ? "sticky-top" : headerCssClass;
158 headerCssClass = Pageview.IsVisualEditorMode ? "" : headerCssClass;
159160 string googleTagManagerID = Model.Area.Item.GetString("GoogleTagManagerID").Trim();
161 string googleAnalyticsMeasurementID = Model.Area.Item.GetString("GoogleAnalyticsMeasurementID").Trim();
162 string userCentrics = Model.Area.Item.GetString("UsercentricsScript");
163 bool allowTracking = true;
164165 Dynamicweb.Context.Current.Response.AddHeader("link", $"</Files/Templates/Designs/Swift/Assets/css/styles.css?{cssStyleFileInfo.LastWriteTime.Ticks}>; rel=preload; as=style;");
166 Dynamicweb.Context.Current.Response.AddHeader("link", $"</Files/Templates/Designs/Swift/Assets/css/custom.css?{cssStyleFileInfoCustom.LastWriteTime.Ticks}>; rel=preload; as=style;");
167 Dynamicweb.Context.Current.Response.AddHeader("link", $"</Files/Templates/Designs/Swift/_parsed/Swift_css/Swift_styles_{Model.Area.ID}.min.css?{cssLastModified.Ticks}>; rel=preload; as=style;");
168 Dynamicweb.Context.Current.Response.AddHeader("link", $"</Files/Templates/Designs/Swift/Assets/js/scripts.js?{jsFileInfo.LastWriteTime.Ticks}>; rel=preload; as=script;");
169170171 SetMetaTags();
172173 List<Dynamicweb.Content.Page> languages = new List<Dynamicweb.Content.Page>();
174175 var masterPage = Pageview.Area.IsMaster ? Pageview.Page : Pageview.Page.MasterPage;
176 languages.Add(masterPage);
177 if (masterPage?.Languages != null)
178 {
179 foreach (var language in masterPage.Languages)
180 {
181 languages.Add(language);
182 }
183 }
184185 Uri url = Dynamicweb.Context.Current.Request.Url;
186 string hostName = url.Host;
187188 <!doctype html>
189 <html lang="@Pageview.Area.CultureInfo.TwoLetterISOLanguageName">
190 <head>
191 <!-- @swiftVersion -->
192 @* Required meta tags *@
193 <meta charset="utf-8">
194 <meta name="viewport" content="height=device-height, width=device-width, initial-scale=1.0">
195 <link rel="shortcut icon" href="@favicon">
196 <link rel="apple-touch-icon" href="@appleTouchIcon">
197198 @Model.MetaTags
199200 @{
201 var alreadyWrittenTwoletterIsos = new List<string>();
202 @* Languages meta data *@
203 foreach (var language in languages)
204 {
205 hostName = url.Host;
206 if (language?.Area != null)
207 {
208 if (language.Area?.MasterArea != null && !string.IsNullOrEmpty(language.Area.MasterArea.DomainLock))
209 {
210 hostName = language.Area.MasterArea.DomainLock; //dk.domain.com or dk-domain.dk
211 }
212 if (language != null && language.Area != null && language.Published && language.Area.Active && language.Area.Published)
213 {
214 if (!string.IsNullOrEmpty(language.Area.DomainLock))
215 {
216 hostName = language.Area.DomainLock; //dk.domain.com or dk-domain.dk
217 }
218 string querystring = $"Default.aspx?ID={language.ID}";
219 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["GroupID"]))
220 {
221 querystring += $"&GroupID={Dynamicweb.Context.Current.Request.QueryString["GroupID"]}";
222 }
223 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["ProductID"]))
224 {
225 querystring += $"&ProductID={Dynamicweb.Context.Current.Request.QueryString["ProductID"]}";
226 }
227 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["VariantID"]))
228 {
229 querystring += $"&VariantID={Dynamicweb.Context.Current.Request.QueryString["VariantID"]}";
230 }
231232 string friendlyUrl = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(querystring);
233 if (language.Area.RedirectFirstPage && language.ParentPageId == 0 && language.Sort == 1)
234 {
235 friendlyUrl = "/";
236 }
237 string href = $"{url.Scheme}://{hostName}{friendlyUrl}";
238239240 <link rel="alternate" hreflang="@language.Area.CultureInfo.Name.ToLower()" href="@href">
241 if (!alreadyWrittenTwoletterIsos.Contains(language.Area.CultureInfo.TwoLetterISOLanguageName))
242 {
243 alreadyWrittenTwoletterIsos.Add(language.Area.CultureInfo.TwoLetterISOLanguageName);
244 <link rel="alternate" hreflang="@language.Area.CultureInfo.TwoLetterISOLanguageName.ToLower()" href="@href">
245 }
246 }
247 }
248 }
249 }
250251 <title>@Model.Title</title>
252 @* Bootstrap + Swift stylesheet *@
253 <link href="/Files/Templates/Designs/Swift/Assets/css/styles.css?@cssStyleFileInfo.LastWriteTime.Ticks" rel="stylesheet" media="all" type="text/css">
254 <link href="/Files/Templates/Designs/Swift/Assets/css/custom.css?@cssStyleFileInfoCustom.LastWriteTime.Ticks" rel="stylesheet" media="all" type="text/css">
255256 @if (disableWideBreakpoints != "disableBoth")
257 {
258 <style>
259 @@media ( min-width: 1600px ) {
260 .container-xxl,
261 .container-xl,
262 .container-lg,
263 .container-md,
264 .container-sm,
265 .container {
266 max-width: 1520px;
267 }
268 }
269 </style>
270271272273 if (disableWideBreakpoints != "disableUltraWideOnly")
274 {
275 <style>
276 @@media ( min-width: 1920px ) {
277 .container-xxl,
278 .container-xl,
279 .container-lg,
280 .container-md,
281 .container-sm,
282 .container {
283 max-width: 1820px;
284 }
285 }
286 </style>
287 }
288 }
289290 @* Branding and Themes min stylesheet *@
291 <link href="/Files/Templates/Designs/Swift/_parsed/Swift_css/Swift_styles_@(Model.Area.ID).min.css?@cssLastModified.Ticks" rel="stylesheet" media="all" type="text/css" data-last-modified-content="@cssLastModified">
292 <script src="/Files/Templates/Designs/Swift/Assets/js/scripts.js?@jsFileInfo.LastWriteTime.Ticks"></script>
293 <script type="module">
294 swift.Scroll.hideHeadersOnScroll();
295 swift.Scroll.handleAlternativeTheme();
296297 //Only load if AOS
298 const aosColumns = document.querySelectorAll('[data-aos]');
299 if (aosColumns.length > 0) {
300 swift.AssetLoader.Load('/Files/Templates/Designs/Swift/Assets/js/aos.js?@jsFileInfo.LastWriteTime.Ticks', 'js');
301 document.addEventListener('load.swift.assetloader', function () {
302 AOS.init({ duration: 400, delay: 100, easing: 'ease-in-out', mirror: false, disable: window.matchMedia('(prefers-reduced-motion: reduce)') });
303 });
304 }
305 </script>
306307 @if (!string.IsNullOrWhiteSpace(userCentrics))
308 {
309310 <link rel="preconnect" href="//app.usercentrics.eu">
311 <link rel="preconnect" href="//api.usercentrics.eu">
312 <link rel="preload" href="//app.usercentrics.eu/browser-ui/latest/loader.js" as="script">
313314 }
315316 @if (!string.IsNullOrWhiteSpace(userCentrics))
317 {
318 <text>@userCentrics</text>
319 }
320321 @* Google tag manager *@
322 @if (!string.IsNullOrWhiteSpace(userCentrics) && !string.IsNullOrWhiteSpace(googleTagManagerID))
323 {
324 <script type="text/plain" data-usercentrics="Google Tag Manager">
325 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
326 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
327 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
328 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
329 })(window, document, 'script', 'dataLayer', '@(googleTagManagerID)');
330331 function gtag() { dataLayer.push(arguments); }
332 </script>
333 } else if (!string.IsNullOrWhiteSpace(googleTagManagerID) && allowTracking)
334 {
335 <script>
336 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
337 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
338 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
339 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
340 })(window, document, 'script', 'dataLayer', '@(googleTagManagerID)');
341342 function gtag() { dataLayer.push(arguments); }
343 </script>
344 }
345346 @if (!string.IsNullOrWhiteSpace(userCentrics) && !string.IsNullOrWhiteSpace(googleAnalyticsMeasurementID))
347 {
348 var GoogleAnalyticsDebugMode = "";
349350 if (Model.Area.Item.GetBoolean("EnableGoogleAnalyticsDebugMode"))
351 {
352 GoogleAnalyticsDebugMode = ", {'debug_mode': true}";
353 }
354355 <script type="text/plain" data-usercentrics="Google Analytics" async src="https://www.googletagmanager.com/gtag/js?id=@googleAnalyticsMeasurementID"></script>
356 <script type="text/plain" data-usercentrics="Google Analytics">
357 window.dataLayer = window.dataLayer || [];
358 function gtag() { dataLayer.push(arguments); }
359 gtag('js', new Date());
360 gtag('config', '@googleAnalyticsMeasurementID'@GoogleAnalyticsDebugMode);
361 </script>
362 } else if (!string.IsNullOrWhiteSpace(googleAnalyticsMeasurementID) && allowTracking)
363 {
364 var GoogleAnalyticsDebugMode = "";
365366 if (Model.Area.Item.GetBoolean("EnableGoogleAnalyticsDebugMode"))
367 {
368 GoogleAnalyticsDebugMode = ", {'debug_mode': true}";
369 }
370371 <script async src="https://www.googletagmanager.com/gtag/js?id=@googleAnalyticsMeasurementID"></script>
372 <script>
373 window.dataLayer = window.dataLayer || [];
374 function gtag() { dataLayer.push(arguments); }
375 gtag('js', new Date());
376 gtag('config', '@googleAnalyticsMeasurementID'@GoogleAnalyticsDebugMode);
377 </script>
378 }
379380 @if (!string.IsNullOrWhiteSpace(customHeaderInclude))
381 {
382 @RenderPartial($"Components/Custom/{customHeaderInclude}")
383 }
384385 @if (allowTracking && !string.IsNullOrWhiteSpace(scriptsHeader)){
386 @scriptsHeader
387 }
388389 </head>
390 <body class="brand @(masterTheme)" id="page@(Model.ID)">
391392 @* Google tag manager *@
393 @if (!string.IsNullOrWhiteSpace(googleTagManagerID) && allowTracking)
394 {
395 <noscript>
396 <iframe src="https://www.googletagmanager.com/ns.html?id=@(googleTagManagerID)"
397 height="0" width="0" style="display:none;visibility:hidden"></iframe>
398 </noscript>
399 }
400401 @if (renderAsResponsive || !renderMobile)
402 {
403 <header class="page-header @headerCssClass top-0@(responsiveClassDesktop)" id="page-header-desktop">
404 @if (headerDesktopLink != null)
405 {
406 @RenderGrid(headerDesktopLink.PageId)
407 }
408 </header>
409 }
410411 @if ((renderAsResponsive || renderMobile))
412 {
413 <header class="page-header @headerCssClass top-0@(responsiveClassMobile)" id="page-header-mobile">
414 @if (headerMobileLink != null)
415 {
416 @RenderGrid(headerMobileLink.PageId)
417 }
418 </header>
419 }
420421 <div data-intersect></div>
422423 <main id="content" @(schemaOrgType)>
424 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
425 @using System
426 @using Dynamicweb.Ecommerce.ProductCatalog
427428429 @{
430 string productIdFromUrl = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString.Get("ProductID")) ? Dynamicweb.Context.Current.Request.QueryString.Get("ProductID") : string.Empty;
431 bool isProductDetail = !string.IsNullOrEmpty(productIdFromUrl) && Pageview.Page.NavigationTag.ToLower() == "shop";
432433 bool isArticlePagePage = Model.ItemType == "Swift_Article";
434 bool isArticleListPage = Model.ItemType == "Swift_ArticleListPage";
435 string schemaOrgProp = string.Empty;
436 if (isArticlePagePage)
437 {
438 schemaOrgProp = "itemprop=\"articleBody\"";
439 }
440441 string theme = "";
442 string gridContent = "";
443444 if (Model.PropertyItem != null)
445 {
446 theme = !string.IsNullOrWhiteSpace(Model.PropertyItem.GetRawValueString("Theme")) ? "theme " + Model.PropertyItem.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : "";
447 }
448449 if (Model.Item != null || Pageview.IsVisualEditorMode)
450 {
451 if (!isProductDetail)
452 {
453 gridContent = Model.Grid("Grid", "Grid", "default:true;sort:1", "Page");
454 }
455 else
456 {
457 var productObject = Dynamicweb.Ecommerce.Services.Products.GetProductById(productIdFromUrl, "", Pageview.Area.EcomLanguageId);
458 if (productObject != null)
459 {
460 var detailPage = Dynamicweb.Ecommerce.Services.ProductGroups.GetGroup(productObject?.PrimaryGroupId)?.Meta.PrimaryPage ?? string.Empty;
461 var detailPageId = detailPage != string.Empty ? Convert.ToInt16(detailPage.Substring(detailPage.LastIndexOf('=') + 1)) : GetPageIdByNavigationTag("ProductDetailPage");
462463 @RenderGrid(detailPageId)
464 }
465 }
466 }
467468 bool doNotRenderPage = false;
469470 //Check if we are on the poduct detail page, and if there is data to render
471 ProductViewModel product = new ProductViewModel();
472 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails"))
473 {
474 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"];
475 if (string.IsNullOrEmpty(product.Id))
476 {
477 doNotRenderPage = true;
478 }
479 }
480481 //Render the page
482 if (!doNotRenderPage)
483 {
484 string itemIdentifier = Model?.Item?.SystemName != null ? "item_" + Model.Item.SystemName.ToLower() : "item_Swift_Page";
485486 if (Pageview.IsVisualEditorMode)
487 {
488 @Model.Placeholder("dwcontent", "content", "default:true;sort:1")
489 }
490491 <div class="@theme @itemIdentifier" @schemaOrgProp>
492 @if (isArticleListPage)
493 {
494 var hx = $"hx-get=\"{Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(Model.ID)}\" hx-select=\"#content\" hx-target=\"#content\" hx-swap=\"outerHTML\" hx-trigger=\"change\" hx-headers='{{\"feed\": \"true\"}}' hx-push-url=\"true\" hx-indicator=\"#ArticleFacetForm\"";
495496 <form @hx id="ArticleFacetForm">
497 @gridContent
498 </form>
499 <script type="module" src="/Files/Templates/Designs/Swift/Assets/js/htmx.js"></script>
500 <script type="module">
501 document.addEventListener('htmx:confirm', (event) => {
502 let filters = event.detail.elt.querySelectorAll('select');
503 for (var i = 0; i < filters.length; i++) {
504 let input = filters[i];
505 if (input.name && !input.value) {
506 input.name = '';
507 }
508 }
509 });
510511 document.addEventListener('htmx:beforeOnLoad', (event) => {
512 swift.Scroll.stopIntersectionObserver();
513 });
514515 document.addEventListener('htmx:afterOnLoad', () => {
516 swift.Scroll.hideHeadersOnScroll();
517 swift.Scroll.handleAlternativeTheme();
518 });
519 </script>
520 }
521 else
522 {
523 @gridContent
524 }
525 </div>
526527 }
528 else
529 {
530 <div class="container">
531 <div class="alert alert-info" role="alert">@Translate("Sorry. There is nothing to view here")</div>
532 </div>
533 }
534535 if (!Model.IsCurrentUserAllowed)
536 {
537 int signInPage = GetPageIdByNavigationTag("SignInPage");
538 int dashboardPage = GetPageIdByNavigationTag("MyAccountDashboardPage");
539540 if (!Pageview.IsVisualEditorMode)
541 {
542 if (signInPage != 0)
543 {
544 if (signInPage != Model.ID)
545 {
546 Dynamicweb.Context.Current.Response.Redirect("/Default.aspx?ID=" + signInPage);
547 }
548 else
549 {
550 if (dashboardPage != 0)
551 {
552 Dynamicweb.Context.Current.Response.Redirect("/Default.aspx?ID=" + dashboardPage);
553 }
554 else
555 {
556 Dynamicweb.Context.Current.Response.Redirect("/");
557 }
558 }
559 }
560 else
561 {
562 <div class="alert alert-dark m-0" role="alert">
563 <span>@Translate("You do not have access to this page")</span>
564 </div>
565 }
566 }
567 else
568 {
569 <div class="alert alert-dark m-0" role="alert">
570 <span>@Translate("To work on this page, you must be signed in, in the frontend")</span>
571 </div>
572 }
573 }
574 }
575576 </main>
577578 @if (renderAsResponsive || !renderMobile)
579 {
580 <footer class="page-footer@(responsiveClassDesktop)" id="page-footer-desktop">
581 @if (footerDesktopLink != null)
582 {
583 @RenderGrid(footerDesktopLink.PageId)
584 }
585586 @if (allowTracking && !string.IsNullOrWhiteSpace(customFooterScripts)){
587 @customFooterScripts
588 }
589 </footer>
590 }
591592 @if (renderAsResponsive || renderMobile)
593 {
594 <footer class="page-footer@(responsiveClassMobile)" id="page-footer-mobile">
595 @if (footerMobileLink != null)
596 {
597 @RenderGrid(footerMobileLink.PageId)
598 }
599 </footer>
600 }
601602 @* Render any offcanvas menu here *@
603 @RenderSnippet("offcanvas")
604605 @{
606 bool isErpConnectionDown = !Dynamicweb.Core.Converter.ToBoolean(Context.Current.Items["IsWebServiceConnectionAvailable"]);
607 }
608609 @* Language selector modal *@
610 <div class="modal fade" id="PreferencesModal" tabindex="-1" aria-hidden="true">
611 <div class="modal-dialog modal-dialog-centered modal-sm" id="PreferencesModalContent">
612 @* The content here comes from an external request *@
613 </div>
614 </div>
615616 @* Favorite toast *@
617 <div aria-live="polite" aria-atomic="true">
618 <div class="position-fixed bottom-0 end-0 p-3" style="z-index: 11">
619 <div id="favoriteNotificationToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
620 <div class="toast-header">
621 <strong class="me-auto">@Translate("Favorite list updated")</strong>
622 <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
623 </div>
624 <div class="toast-body d-flex gap-3">
625 <div id="favoriteNotificationToast_Image"></div>
626 <div id="favoriteNotificationToast_Text"></div>
627 </div>
628 </div>
629 </div>
630 </div>
631632 @* Modal for dynamic content *@
633 <div class="modal fade js-product" id="DynamicModal" tabindex="-1" aria-hidden="true">
634 <div class="modal-dialog modal-dialog-centered modal-md">
635 <div class="modal-content theme light" id="DynamicModalContent">
636 @* The content here comes from an external request *@
637 </div>
638 </div>
639 </div>
640641 @* Offcanvas for dynamic content *@
642 <div class="offcanvas offcanvas-end theme light" tabindex="-1" id="DynamicOffcanvas">
643 @* The content here comes from an external request *@
644 </div>
645646 @if (Model.Area.Item.GetBoolean("ShowErpDownMessage") && !Dynamicweb.Core.Converter.ToBoolean(Context.Current.Items["IsWebServiceConnectionAvailable"]))
647 {
648 string erpDownMessageTheme = !string.IsNullOrWhiteSpace(Model.Area.Item.GetRawValueString("ErpDownMessageTheme")) ? " theme " + Model.Area.Item.GetRawValueString("ErpDownMessageTheme").Replace(" ", "").Trim().ToLower() : "theme light";
649650 <div class="position-fixed bottom-0 end-0 p-3" style="z-index: 1040">
651 <div class="toast fade show border-0 @erpDownMessageTheme" role="alert" aria-live="assertive" aria-atomic="true">
652 <div class="toast-header">
653 <strong class="me-auto">@Translate("Connection down")</strong>
654 <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
655 </div>
656 <div class="toast-body">
657 @Translate("We are experiencing some connectivity issues. Not all features may be available to you.")
658 </div>
659 </div>
660 </div>
661 }
662663 @if (miniCartEnabled)
664 {
665 @* Open MiniCart when the cart is updated *@
666 <script type="module">
667 document.addEventListener('updated.swift.cart', (event) => {
668 let orderContext = event?.detail?.formData?.get("OrderContext");
669 updateCartSummary(orderContext);
670671 @if (offcanvasMiniCartBehaviour == "2" || offcanvasMiniCartBehaviour == "3") {
672 <text>openMiniCartOffcanvas();</text>
673 }
674 });
675 </script>
676677 if (offcanvasMiniCartBehaviour == "1" || offcanvasMiniCartBehaviour == "3")
678 {
679 @* Open MiniCart when toggle is clicked *@
680 <script type="module">
681 let miniCartToggles = document.querySelectorAll('.mini-cart-quantity');
682 miniCartToggles?.forEach((toggle) => {
683 toggle.parentElement.addEventListener('click', (event) => {
684 event.preventDefault();
685 let orderContext = toggle.dataset?.orderContext;
686 updateCartSummary(orderContext);
687688 openMiniCartOffcanvas();
689 });
690 });
691 </script>
692 }
693694 <script>
695696 const updateCartSummary = (orderContext) => {
697 const dynamicOffcanvas = document.getElementById('DynamicOffcanvas');
698 swift.PageUpdater.UpdateFromUrlInline(event, '/Default.aspx?ID=@(cartSummaryPageId)&CartType=minicart&RequestPageID=@(Pageview.Page.ID)&OrderContext=' + orderContext +'', 'Swift_CartSummary.cshtml', dynamicOffcanvas);
699 };
700701 const openMiniCartOffcanvas = () => {
702 const dynamicOffcanvas = document.getElementById('DynamicOffcanvas');
703 const miniCartOffcanvas = bootstrap.Offcanvas.getOrCreateInstance(dynamicOffcanvas);
704 dynamicOffcanvas.classList.add('overflow-y-auto');
705706 if (!miniCartOffcanvas._isShown) {
707 miniCartOffcanvas.show();
708 hideActiveOffcanvases(miniCartOffcanvas);
709 }
710 };
711712 const hideActiveOffcanvases = (miniCartOffcanvas) => {
713 let activeOffcanvases = document.querySelectorAll('.offcanvas.show');
714 activeOffcanvases?.forEach((offCanvas) => {
715 offCanvas = bootstrap.Offcanvas.getInstance(offCanvas);
716 if (offCanvas !== miniCartOffcanvas) {
717 offCanvas.hide();
718 }
719 });
720 };
721722 </script>
723 }
724725 </body>
726727 </html>
728729 }
730 else if (Pageview.IsVisualEditorMode)
731 {
732 <head>
733 <title>@Model.Title</title>
734 @* Bootstrap + Swift stylesheet *@
735 <link href="/Files/Templates/Designs/Swift/Assets/css/styles.css" rel="stylesheet" media="all" type="text/css">
736 </head>
737 <body class="p-3">
738 <div class="alert alert-danger" role="alert">
739 @Translate("Basic Swift setup is needed!")
740 </div>
741742 @if (brandingPage == null)
743 {
744 <div class="alert alert-warning" role="alert">
745 @Translate("Please add a Branding page and reference it in website settings")
746 </div>
747 }
748749 @if (themesParagraphs == null)
750 {
751 <div class="alert alert-warning" role="alert">
752 @Translate("Please add a Themes collection page and reference it in website settings")
753 </div>
754 }
755 </body>
756 }
757758759 @functions {
760 void SetMetaTags()
761 {
762 //Verification Tokens
763 string siteVerificationGoogle = Model.Area.Item.GetString("Google_Site_Verification") != null ? Model.Area.Item.GetString("Google_Site_Verification") : "";
764765 //Generic Site Values
766 string openGraphFacebookAppID = Model.Area.Item.GetString("Fb_app_id") != null ? Model.Area.Item.GetString("Fb_app_id") : "";
767 string openGraphType = Model.Area.Item.GetString("Open_Graph_Type") != null ? Model.Area.Item.GetString("Open_Graph_Type") : "";
768 string openGraphSiteName = Model.Area.Item.GetString("Open_Graph_Site_Name") != null ? Model.Area.Item.GetString("Open_Graph_Site_Name") : "";
769770 string twitterCardSite = Model.Area.Item.GetString("Twitter_Site") != null ? Model.Area.Item.GetString("Twitter_Site") : "";
771772 //Page specific values
773 string openGraphSiteTitle = Model.Area.Item.GetString("Open_Graph_Title") != null ? Model.Area.Item.GetString("Open_Graph_Title") : "";
774 FileViewModel openGraphImage = Model.Area.Item.GetFile("Open_Graph_Image");
775 string openGraphImageALT = Model.Area.Item.GetString("Open_Graph_Image_ALT") != null ? Model.Area.Item.GetString("Open_Graph_Image_ALT") : "";
776 string openGraphDescription = Model.Area.Item.GetString("Open_Graph_Description") != null ? Model.Area.Item.GetString("Open_Graph_Description") : "";
777778 string twitterCardURL = Model.Area.Item.GetString("Twitter_URL") != null ? Model.Area.Item.GetString("Twitter_URL") : "";
779 string twitterCardTitle = Model.Area.Item.GetString("Twitter_Title") != null ? Model.Area.Item.GetString("Twitter_Title") : "";
780 string twitterCardDescription = Model.Area.Item.GetString("Twitter_Description") != null ? Model.Area.Item.GetString("Twitter_Description") : "";
781 FileViewModel twitterCardImage = Model.Area.Item.GetFile("Twitter_Image");
782 string twitterCardImageALT = Model.Area.Item.GetString("Twitter_Image_ALT") != null ? Model.Area.Item.GetString("Twitter_Image_ALT") : "";
783 string topImage = Pageview.Page.TopImage.StartsWith("/Files", StringComparison.OrdinalIgnoreCase) ? Pageview.Page.TopImage : $"/Files{Pageview.Page.TopImage}";
784785 if (string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["ProductID"]))
786 {
787 if (!string.IsNullOrEmpty(Model.Description))
788 {
789 Pageview.Meta.AddTag($"<meta property=\"og:description\" content=\"{Model.Description}\">");
790 }
791 else
792 {
793 Pageview.Meta.AddTag($"<meta property=\"og:description\" content=\"{openGraphDescription}\">");
794 }
795796 if (!string.IsNullOrEmpty(Pageview.Page.TopImage))
797 {
798 Pageview.Meta.AddTag($"<meta property=\"og:image\" content=\"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{topImage}\">");
799 Pageview.Meta.AddTag($"<meta property=\"og:image:secure_url\" content=\"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{topImage}\">");
800 }
801 else if (openGraphImage != null)
802 {
803 Pageview.Meta.AddTag($"<meta property=\"og:image\" content=\"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{openGraphImage.Path}\">");
804 Pageview.Meta.AddTag($"<meta property=\"og:image:secure_url\" content=\"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{openGraphImage.Path}\">");
805 }
806807 if (!string.IsNullOrEmpty(openGraphImageALT))
808 {
809 Pageview.Meta.AddTag($"<meta property=\"og:image:alt\" content=\"{openGraphImageALT}\">");
810 }
811 if (!string.IsNullOrEmpty(twitterCardDescription))
812 {
813 Pageview.Meta.AddTag("twitter:description", twitterCardDescription);
814 }
815816 if (!string.IsNullOrEmpty(Pageview.Page.TopImage))
817 {
818 Pageview.Meta.AddTag("twitter:image", $"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{topImage}");
819 }
820 else if (twitterCardImage != null)
821 {
822 Pageview.Meta.AddTag("twitter:image", $"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{openGraphImage.Path}");
823 }
824825 if (!string.IsNullOrEmpty(twitterCardImageALT))
826 {
827 Pageview.Meta.AddTag("twitter:image:alt", twitterCardImageALT);
828 }
829 }
830831 if (!string.IsNullOrEmpty(siteVerificationGoogle))
832 {
833 Pageview.Meta.AddTag("google-site-verification", siteVerificationGoogle);
834 }
835836 if (!string.IsNullOrEmpty(openGraphFacebookAppID))
837 {
838 Pageview.Meta.AddTag($"<meta property=\"fb:app_id\" content=\"{openGraphFacebookAppID}\">");
839 }
840841 if (!string.IsNullOrEmpty(openGraphType))
842 {
843 Pageview.Meta.AddTag($"<meta property=\"og:type\" content=\"{openGraphType}\">");
844 }
845846 if (!string.IsNullOrEmpty(openGraphSiteName))
847 {
848 Pageview.Meta.AddTag($"<meta property=\"og:url\" content=\"{Dynamicweb.Context.Current.Request.Url.Scheme}://{Dynamicweb.Context.Current.Request.Url.Host}{Pageview.SearchFriendlyUrl}\">");
849 }
850851 if (!string.IsNullOrEmpty(openGraphSiteName))
852 {
853 Pageview.Meta.AddTag($"<meta property=\"og:site_name\" content=\"{openGraphSiteName}\">");
854 }
855856 if (!string.IsNullOrEmpty(Model.Title))
857 {
858 Pageview.Meta.AddTag($"<meta property=\"og:title\" content=\"{Model.Title}\">");
859 }
860 else
861 {
862 Pageview.Meta.AddTag($"<meta property=\"og:title\" content=\"{openGraphSiteTitle}\">");
863 }
864865 if (!string.IsNullOrEmpty(twitterCardSite))
866 {
867 Pageview.Meta.AddTag("twitter:site", twitterCardSite);
868 }
869870 if (!string.IsNullOrEmpty(twitterCardURL))
871 {
872 Pageview.Meta.AddTag("twitter:url", twitterCardURL);
873 }
874875 if (!string.IsNullOrEmpty(twitterCardTitle))
876 {
877 Pageview.Meta.AddTag("twitter:title", twitterCardTitle);
878 }
879 }
880 }
881