Error executing template "Designs/DLFSeedsAustralia/_parsed/SeedsAU_SideNav_Child_Page.parsed.cshtml"
System.TypeInitializationException: The type initializer for 'System.Collections.Generic.EqualityComparer`1' threw an exception. ---> System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
   at System.Collections.Generic.EqualityComparer`1.CreateComparer()
   at System.Collections.Generic.EqualityComparer`1..cctor()
   --- End of inner exception stack trace ---
   at System.Collections.Generic.EqualityComparer`1.get_Default()
   at System.Array.IndexOf[T](T[] array, T value, Int32 startIndex, Int32 count)
   at System.Array.IndexOf[T](T[] array, T value)
   at System.SZArrayHelper.Contains[T](T value)
   at System.Linq.Enumerable.Contains[TSource](IEnumerable`1 source, TSource value)
   at Microsoft.CodeAnalysis.CSharp.CSharpDiagnosticFilter.Filter(Diagnostic d, Int32 warningLevelOption, NullableContextOptions nullableOption, ReportDiagnostic generalDiagnosticOption, IDictionary`2 specificDiagnosticOptions)
   at Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions.FilterDiagnostic(Diagnostic diagnostic)
   at Microsoft.CodeAnalysis.Compilation.FilterAndAppendDiagnostics(DiagnosticBag accumulator, IEnumerable`1 incoming, HashSet`1 exclude)
   at Microsoft.CodeAnalysis.Compilation.FilterAndAppendAndFreeDiagnostics(DiagnosticBag accumulator, DiagnosticBag& incoming)
   at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(CommonPEModuleBuilder moduleBuilder, Boolean emittingPdb, Boolean emitMetadataOnly, Boolean emitTestCoverageData, DiagnosticBag diagnostics, Predicate`1 filterOpt, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream metadataPEStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, IMethodSymbol debugEntryPoint, Stream sourceLinkStream, IEnumerable`1 embeddedTexts, CompilationTestData testData, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, IMethodSymbol debugEntryPoint, Stream sourceLinkStream, IEnumerable`1 embeddedTexts, Stream metadataPEStream, CancellationToken cancellationToken)
   at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, CancellationToken cancellationToken)
   at RazorEngine.Roslyn.CSharp.RoslynCompilerServiceBase.CompileType(TypeContext context)
   at RazorEngine.Templating.RazorEngineCore.CreateTemplateType(ITemplateSource razorTemplate, Type modelType)
   at RazorEngine.Templating.RazorEngineCore.Compile(ITemplateKey key, Type modelType)
   at RazorEngine.Templating.RazorEngineService.CompileAndCacheInternal(ITemplateKey key, Type modelType)
   at RazorEngine.Templating.RazorEngineService.GetCompiledTemplate(ITemplateKey key, Type modelType, Boolean compileOnCacheMiss)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.DynamicWrapperService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits ViewModelTemplate<PageViewModel> 2 3 @using Dynamicweb.Content 4 @using PgwSeeds.Extensions.DLFSeedsAustralia 5 @using System.Net 6 @using System.Web.Mvc 7 @using System.Web.Mvc.Html 8 @using Dynamicweb.Frontend; 9 @using Dynamicweb.Rendering; 10 @using System.Configuration 11 @using System.Web 12 @using System.Web.Optimization 13 @using PgwSeeds.DLFSeedsAustralia 14 15 16 @{ 17 var tagManagerCode = Model.Area.Item.GetString("Google_TagManager_Code"); 18 var siteVerificationKey = Model.Area.Item.GetString("Google_Site_Verification_Key"); 19 } 20 21 <!DOCTYPE html> 22 <html lang="en"> 23 <head> 24 25 @if (tagManagerCode != null) 26 { 27 <!-- Google Tag Manager --> 28 <script> 29 (function (w, d, s, l, i) { 30 w[l] = w[l] || []; w[l].push({ 31 'gtm.start': 32 new Date().getTime(), event: 'gtm.js' 33 }); var f = d.getElementsByTagName(s)[0], 34 j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 35 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); 36 })(window, document, 'script', 'dataLayer', '@tagManagerCode'); 37 </script> 38 } 39 40 <meta charset="utf-8"> 41 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 42 <meta name="generator" content="Dynamicweb 9"> 43 <meta name="google-site-verification" content="@siteVerificationKey" /> 44 45 <link rel="icon" type="image/png" href="/Files/Templates/Designs/DLFSeedsAU/assets/favicon/dlf_favicon.ico"> 46 @Model.MetaTags 47 <title>@Model.Title | DLF Seeds Australia</title> 48 49 @RenderSnippet("LegacyStyleSheet") 50 @Styles.Render("~/Content/custom/DLFSeedsAustralia") 51 <link rel="stylesheet" href="/Files/Templates/Designs/DLFSeedsAustralia/assets/stylesheets/vendor.less" /> @*TODO: Minification fail when wrapped in bundle.config*@ 52 <link rel="stylesheet" href="/Files/Templates/Designs/DLFSeedsAustralia/assets/stylesheets/less/styles.less" /> @*TODO: Minification fail when wrapped in bundle.config*@ 53 54 <style type="/Files/Templates/Designs/DLFSeedsAustralia/text/css"></style> 55 </head> 56 57 <body> 58 <header> 59 @using PgwSeeds.Extensions.DLFSeedsAustralia 60 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 61 @{ 62 var contacts = Model.Area.Item.GetItems("Contacts")?.Take(2); 63 var firstContact = true; 64 } 65 66 @if (contacts != null) 67 { 68 <div class="floating_button"> 69 <div class="floating_button_title"> 70 <span class="txt-l dld-white-txt">Get in Touch</span> 71 </div> 72 <div class="floating_button_content"> 73 @foreach (var contact in contacts) 74 { 75 var image = contact.GetFile("Image")?.Path.SquareImage(200); 76 var phoneNumber = contact.GetString("PhoneNumber"); 77 var email = contact.GetString("Email"); 78 <div class="fbc_grid"> 79 <div class="fbc_image"><img src="@image" alt="@contact.GetString("ImageAltText")"></div> 80 <div class="fbc_contact"> 81 <div class="txt-m">@contact.GetString("Name")</div> 82 @contact.GetString("JobTitle") 83 @if (firstContact) 84 { 85 <div class="fbc_links"> 86 <a href="mailto:@email" class="email"> 87 <i class="fa-solid fa-envelope"></i> 88 Email 89 </a> 90 <a href="tel:@phoneNumber" class="phone"> 91 <i class="fa-solid fa-phone"></i> 92 @phoneNumber 93 </a> 94 </div> 95 } 96 else 97 { 98 <div class="fbc_links"> 99 <a href="/contact/contact-us"> 100 <i class="fa-solid fa-address-card"></i> 101 Contact Us 102 </a> 103 </div> 104 } 105 </div> 106 </div> 107 firstContact = false; 108 } 109 </div> 110 </div> 111 } 112 113 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 114 <div id="header-banner" class="header-banner bg-enrichment-device"> 115 <div class="boxed"> 116 <div class="social"> 117 <a href="@Model.Area.Item.GetString("Business_Facebook_Link")" target="_blank" title="DLF Seeds on Facebook" class="facebook"></a> 118 <a href="@Model.Area.Item.GetString("Business_Linkedin_Link")" target="_blank" title="DLF Seeds on LinkedIn" class="linkedin"></a> 119 <a href="@Model.Area.Item.GetString("Business_Twitter_Link")" target="_blank" title="DLF Seeds on Twitter" class="twitter"></a> 120 <a href="@Model.Area.Item.GetString("Business_Youtube_Link")" target="_blank" title="DLF Seeds on YouTube" class="youtube"></a> 121 </div> 122 123 <div class="header-contact"> 124 <a class="underline-on-hover animate-underline" href="tel: @Model.Area.Item.GetString("Business_Phone_Number")" class="txt-m-light">@Model.Area.Item.GetString("Business_Phone_Number")</a> 125 <a class="underline-on-hover animate-underline" href="mailto: @Model.Area.Item.GetString("Business_Email")" class="txt-m-light">@Model.Area.Item.GetString("Business_Email")</a> 126 127 @*<div class="site_switcher"> 128 <span class="current flag txt-m-light" id="australia">QLD</span> 129 <div class="country_list"> 130 <a href="#" class="flag txt-m-light" id="china">DLF CN</a> 131 <a href="#" class="flag txt-m-light" id="france">DLF FR</a> 132 <a href="#" class="flag txt-m-light" id="new_zealand">DLF NZ</a> 133 <a href="#" class="flag txt-m-light" id="united_kingdom">DLF UK</a> 134 <a href="#" class="flag txt-m-light" id="czech_republic">DLF CZ</a> 135 <a href="#" class="flag txt-m-light" id="denmark">DLF DK</a> 136 <a href="#" class="flag txt-m-light" id="netherland">DLF NL</a> 137 <a href="#" class="flag txt-m-light" id="sweden">DLF SE</a> 138 </div> 139 </div>*@ 140 </div> 141 </div> 142 </div> 143 @{ 144 var searchPage = GetPageIdByNavigationTag(NavigationTags.Search); 145 } 146 <div id="navigationBar" class="navigationBar"> 147 <div class="boxed"> 148 <a href="/" class="logo"></a> 149 150 <div class="navigation"> 151 <div class="mobile_nav_button"> 152 <span></span> 153 </div> 154 <ul class="nav navbar-nav"> 155 @RenderNavigation(new 156 { 157 Id = "navbar", 158 Template = "navbar.xslt", 159 ExpandMode = "All", 160 EndLevel = 3 161 }) 162 <li class="nav_mobile_contact"> 163 <a class="underline-on-hover" href="tel: @Model.Area.Item.GetString("Business_Phone_Number")">@Model.Area.Item.GetString("Business_Phone_Number")</a> 164 <a class="underline-on-hover" href="mailto:@Model.Area.Item.GetString("Business_Email")">@Model.Area.Item.GetString("Business_Email")</a> 165 <div class="navsocial txt-center"> 166 <a href="@Model.Area.Item.GetString("Business_Facebook_Link")" target="_blank" title="DLF Seeds on Facebook" class="facebook"></a> 167 <a href="@Model.Area.Item.GetString("Business_Linkedin_Link")" target="_blank" title="DLF Seeds on LinkedIn" class="linkedin"></a> 168 <a href="@Model.Area.Item.GetString("Business_Twitter_Link")" target="_blank" title="DLF Seeds on Twitter" class="twitter"></a> 169 <a href="@Model.Area.Item.GetString("Business_Youtube_Link")" target="_blank" title="DLF Seeds on YouTube" class="youtube"></a> 170 </div> 171 </li> 172 </ul> 173 <span id="searchbutton"> 174 <i class="rounded-icon icon fa fa-search"></i> 175 </span> 176 </div> 177 </div> 178 <div id="search-wrapper" class="boxed"> 179 <div class="form-search-wrap"> 180 <form method="get" action="Default.aspx" name="" novalidate="novalidate"> 181 <input type="hidden" name="ID" value="@searchPage" /> 182 <input type="search" placeholder="Enter Keyword to Search" name="q"> 183 <button type="submit" class="animate-right" role="button"> 184 <span class="rounded-icon icon fa fa-angle-right"></span> 185 </button> 186 </form> 187 </div> 188 </div> 189 </div> 190 <div class="fixed-header-spacer"></div> 191 </header> 192 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 193 @using Dynamicweb.Content.Items 194 @using Dynamicweb.Frontend 195 196 @Title("Default page template") 197 198 199 @{ 200 const string childPageType = "SeedsAU_SideNav_Child_Page"; 201 var currentPageId = PageView.Current().ID; 202 var currentPage = Dynamicweb.Services.Pages.GetPage(currentPageId); 203 204 var parentPage = currentPage.Parent.ItemType == childPageType ? currentPage.Parent.Parent : currentPage.Parent; 205 206 var siblingPages = Dynamicweb.Services.Pages.GetPagesByParentID(parentPage.ID).ToList(); 207 208 var ctaListItemId = parentPage.Item["CTAList"]; 209 210 var ctaList = ctaListItemId != null ? ItemList.GetItemListById((int)ctaListItemId) : new ItemList(); 211 } 212 213 @inherits Dynamicweb.Rendering.ViewModelTemplate<PageViewModel> 214 @using Dynamicweb.Frontend 215 @using PgwSeeds.Extensions.DLFSeedsAustralia 216 217 218 @helper RenderBannerAndStrapline(string desktopImageBannerImage, string handsetImageBannerImage, string imageAltText, string strapLineTop, string strapLineBottom, 219 string leftLinkText, string leftLink, string leftLinkTarget, string rightLinkText, string rightLink, string rightLinkTarget) 220 { 221 var useDefaultBannerImage = string.IsNullOrEmpty(desktopImageBannerImage); 222 var desktopBanner = useDefaultBannerImage ? Model.Area.Item.GetFile("Desktop_Banner_Image")?.Path.BannerImage() : desktopImageBannerImage.BannerImage(); 223 var mobileBanner = useDefaultBannerImage ? Model.Area.Item.GetFile("Mobile_Banner_Image")?.Path.BannerImage() : handsetImageBannerImage.BannerImage(); 224 // Smaller when only using the strapLineTop. E.g., Contact Us > Where To Buy page. 225 var hasFirstLine = !string.IsNullOrWhiteSpace(strapLineTop); 226 var hasSecondLine = !string.IsNullOrWhiteSpace(strapLineBottom); 227 var hasButtons = !string.IsNullOrWhiteSpace(leftLinkText) || !string.IsNullOrWhiteSpace(rightLinkText); 228 var hasContent = hasFirstLine || hasSecondLine || hasButtons; 229 var shrinkHeightClass = !(hasSecondLine || hasButtons) ? "header_slider-mobile_height_250" : ""; 230 231 <div class="header_slider @shrinkHeightClass"> 232 <div class="flexslider"> 233 <ul class="slides"> 234 <li class="image_banner green-theme left-aligned page_banner" style="width: 100%; float: left; margin-right: -100%; position: relative; opacity: 1; display: flex; z-index: 2;"> 235 <img class="abs hidden-xs hidden-sm" src="@desktopBanner" alt="@imageAltText"> 236 <img class="abs hidden-gt-sm" src="@mobileBanner" alt="@imageAltText"> 237 238 <div class="slide_content dld-white-bg"> 239 @if (hasContent) 240 { 241 <div class="slider_enrichment_border bg-enrichment-device"></div> 242 if (!string.IsNullOrWhiteSpace(strapLineTop)) 243 { 244 <div class="slider_title dld-green-txt txt-xl">@strapLineTop</div> 245 } 246 247 if (!string.IsNullOrWhiteSpace(strapLineBottom)) 248 { 249 <div class="dld-mid-grey-txt banner_sutitle">@strapLineBottom</div> 250 } 251 252 if (!string.IsNullOrWhiteSpace(leftLinkText) || !string.IsNullOrWhiteSpace(rightLinkText)) 253 { 254 <div class="buttons"> 255 @if (!string.IsNullOrWhiteSpace(leftLinkText)) 256 { 257 <a href="@leftLink" target="@leftLinkTarget" class="button dld-transparent-bg dld-white-border dld-white-txt">@leftLinkText</a> 258 } 259 @if (!string.IsNullOrWhiteSpace(rightLinkText)) 260 { 261 <a href="@rightLink" target="@rightLinkTarget" class="button dld-blue-bg dld-blue-border dld-white-txt">@rightLinkText</a> 262 } 263 </div> 264 } 265 } 266 </div> 267 </li> 268 </ul> 269 </div> 270 </div> 271 } 272 @using Dynamicweb.Content.Items 273 @using Page = Dynamicweb.Content.Page 274 275 @helper RenderGrandChildren(int pageId, int? currentPageId) 276 { 277 var pages = Dynamicweb.Services.Pages.GetPagesByParentID(pageId).ToList(); 278 if (pages.Any()) 279 { 280 <ul> 281 @foreach (var page in pages.Where(x => x.Item.SystemName == "SeedsAU_SideNav_Parent_Page" || x.Item.SystemName == "SeedsAU_SideNav_Child_Page")) 282 { 283 <li> 284 @{ 285 var pageActiveClass = currentPageId.HasValue && currentPageId == page.ID ? "active-item" : ""; 286 } 287 <a class="@pageActiveClass" href="@page.GetPageHrefValue()">@page.MenuText</a> 288 </li> 289 290 } 291 </ul> 292 } 293 } 294 295 @helper RenderSideNav(Page parentPage, List<Page> childPages, int? currentChildPageId) 296 { 297 <div class="side_nav_items-container"> 298 <a class="side_nav_items-title hidden-xs hidden-sm hidden-md" href="@parentPage.GetPageHrefValue()"> 299 <strong class="dld-green-txt">@parentPage.MenuText</strong> 300 </a> 301 <ol> 302 @foreach (var childPage in childPages.Where(x => !x.Hidden)) 303 { 304 <li> 305 @{ 306 var childPageActiveClass = currentChildPageId.HasValue && currentChildPageId == childPage.ID ? "active-item" : ""; 307 } 308 <a class="@childPageActiveClass" href="@childPage.GetPageHrefValue()">@childPage.MenuText</a> 309 @RenderGrandChildren(childPage.ID, currentChildPageId) 310 </li> 311 } 312 </ol> 313 </div> 314 } 315 316 @helper RenderMobileSideNav(Page parentPage, List<Page> childPages, int? currentChildPageId, ItemList ctaList) 317 { 318 <div class="side_nav_mobile-nav"> 319 <div class="header"> 320 <p>@parentPage.MenuText</p> 321 <div class="mobile_nav-btn" onclick="toggleVisibility('sideNavMobileNavContent', 'show_mobile_nav-content')"> 322 <i class="fa-solid fa-bars"></i> 323 </div> 324 </div> 325 <div id="sideNavMobileNavContent" class="hide_mobile_nav-content"> 326 @RenderSideNav(parentPage, childPages, currentChildPageId) 327 @RenderMobileCtaList(ctaList) @*This function call is part of _CtaList.cshtml partial. This function call works here because the _CtaList.cshtml is included on both SeedsAU_SideNav Parent/Child pages. *@ 328 </div> 329 </div> 330 } 331 332 @using Dynamicweb.Content.Items 333 @using PgwSeeds.Extensions.DLFSeedsAustralia 334 335 @helper RenderCtaList(ItemList ctaList) 336 { 337 <div class="green-theme"> 338 339 @if (ctaList != null) 340 { 341 foreach (var aItem in ctaList.Relations.Take(3)) 342 { 343 var typeItem = Item.GetItemById("SeedsAU_SideNav_ParentPage_CTA", aItem.Id); 344 typeItem.TryGetValue("Title", out var title); 345 typeItem.TryGetValue("Image", out var image); 346 typeItem.TryGetValue("ImageAltText", out var imageAltText); 347 typeItem.TryGetValue("CircleImage", out var circleImage); 348 typeItem.TryGetValue("Link", out var link); 349 typeItem.TryGetValue("LinkText", out var linkText); 350 351 var imageSource = Convert.ToString(image); 352 var circleImageClass = Convert.ToBoolean(circleImage) ? "img-circle circle-image" : null; 353 354 <div class="side_nav_cta-item"> 355 <a href="@link"> 356 <img class="@circleImageClass" src="@imageSource.CtaImageWidth()" alt="@imageAltText" /> 357 <h3>@title</h3> 358 <span class="side_nav_cta-button"> 359 <span class="button">@linkText</span> 360 </span> 361 </a> 362 </div> 363 } 364 } 365 </div> 366 } 367 368 @helper RenderMobileCtaList(ItemList ctaList) 369 { 370 <div class="side_nav_mobile_cta-wrapper"> 371 @if (ctaList != null) 372 { 373 foreach (var aItem in ctaList.Relations.Take(3)) 374 { 375 var typeItem = Item.GetItemById("SeedsAU_SideNav_ParentPage_CTA", aItem.Id); 376 typeItem.TryGetValue("LinkTextMobile", out var linkTextMobile); 377 typeItem.TryGetValue("Link", out var link); 378 379 <a class="animate-right" href="@link"> 380 <span> @linkTextMobile</span> 381 <i class="fa fa-angle-right"></i> 382 </a> 383 } 384 } 385 </div> 386 } 387 @using Page = Dynamicweb.Content.Page 388 389 @helper RenderPreviousNextPage(Page currentPage, Page parentPage) 390 { 391 392 string previousPageText = null; 393 string previousPageUrl = null; 394 395 string nextPageText; 396 string nextPageUrl; 397 398 var pages = new List<Page> { parentPage }; 399 400 var childPages = Dynamicweb.Services.Pages.GetPagesByParentID(parentPage.ID).Where(x => !x.Hidden).ToList(); 401 402 foreach (var childPage in childPages) 403 { 404 pages.Add(childPage); 405 var grandchildPages = Dynamicweb.Services.Pages.GetPagesByParentID(childPage.ID) 406 ?.Where(x => x.Item.SystemName == "SeedsAU_SideNav_Parent_Page" || x.Item.SystemName == "SeedsAU_SideNav_Child_Page") 407 ?.ToList(); 408 409 if (grandchildPages != null && grandchildPages.Any()) 410 { 411 pages.AddRange(grandchildPages); 412 } 413 } 414 415 if (pages.Count == 1) { return; } 416 417 var currentPageIndex = pages.FindIndex(p => p.ID == currentPage.ID); 418 419 if (currentPage.ID == pages.First().ID) 420 { 421 nextPageText = pages[1].MenuText; 422 nextPageUrl = pages[1].GetPageHrefValue(); 423 } 424 else if (currentPage.ID == pages.Last().ID) 425 { 426 previousPageText = pages[currentPageIndex - 1].MenuText; 427 previousPageUrl = pages[currentPageIndex - 1].GetPageHrefValue(); 428 429 nextPageText = pages[0].MenuText; 430 nextPageUrl = pages[0].GetPageHrefValue(); 431 } 432 else 433 { 434 previousPageText = pages[currentPageIndex - 1].MenuText; 435 previousPageUrl = pages[currentPageIndex - 1].GetPageHrefValue(); 436 437 nextPageText = pages[currentPageIndex + 1].MenuText; 438 nextPageUrl = pages[currentPageIndex + 1].GetPageHrefValue(); 439 } 440 441 @RenderPreviousNextHtml(previousPageText, previousPageUrl, nextPageText, nextPageUrl) 442 443 } 444 445 @helper RenderPreviousNextHtml(string previousPageText, string previousPageUrl, string nextPageText, string nextPageUrl) 446 { 447 <div class="boxed side_nav_previous_next-container"> 448 <div> 449 @if (!string.IsNullOrWhiteSpace(previousPageText)) 450 { 451 <a href="@previousPageUrl" class="side_nav_previous_next-items side_nav_previous-item" title="&quot;@previousPageText&quot;"> 452 <span class="dld-green-txt">Previous Section</span> 453 <br/> 454 <span> 455 <span class="fa fa-angle-left"></span> 456 </span> 457 <span class="side_nav_previous_next_page">@previousPageText</span> 458 459 </a> 460 } 461 </div> 462 463 <div> 464 @if (!string.IsNullOrWhiteSpace(nextPageText)) 465 { 466 <a href="@nextPageUrl" class="side_nav_previous_next-items side_nav_next-item" title="&quot;@nextPageText&quot;"> 467 <span class="dld-green-txt">Next Section</span> 468 <br/> 469 <span class="side_nav_previous_next_page-name">@nextPageText</span> 470 <span> 471 <span class="fa fa-angle-right"></span> 472 </span> 473 </a> 474 } 475 </div> 476 </div> 477 } 478 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 479 @using Dynamicweb.Content.Items 480 481 482 @helper RenderContent(Dynamicweb.Content.Page currentPage, Dynamicweb.Content.Page parentPage, List<Dynamicweb.Content.Page> sideNavPages, ItemList ctaList, int? currentChildPageId) 483 { 484 <div> 485 @inherits Dynamicweb.Rendering.ViewModelTemplate<PageViewModel> 486 @using Dynamicweb.Frontend 487 488 @{ 489 string desktopImageBannerImage, handsetImage, imageAltText, strapLineTop, strapLineBottom, leftLinkText, leftLink, rightLinkText, rightLink, rightLinkTarget, leftLinkTarget; 490 491 // There are discrepencies in attribute names between DLFAU and SeedsAU files 492 if(Model.Item.SystemName.Contains("DLF")) 493 { 494 // DLFAU News Page templates use underscores 495 desktopImageBannerImage = Model.Item.GetFile("Desktop_Image")?.Path ?? string.Empty; 496 handsetImage = Model.Item.GetFile("Handset_Image")?.Path ?? string.Empty; 497 imageAltText = Model.Item.GetString("Image_Alt_Text"); 498 strapLineTop = Model.Item.GetString("Strapline_Top"); 499 strapLineBottom = Model.Item.GetString("Strapline_Bottom"); 500 leftLinkText = Model.Item.GetString("Left_Link_Text"); 501 leftLink = Model.Item.GetString("Left_Link"); 502 leftLinkTarget = Model.Item.GetBoolean("Left_Link_Open_In_New_Tab") ? "blank" : ""; 503 rightLinkText = Model.Item.GetString("Right_Link_Text"); 504 rightLink = Model.Item.GetString("Right_Link"); 505 rightLinkTarget = Model.Item.GetBoolean("Right_Link_Open_In_New_Tab") ? "blank" : ""; 506 } 507 else 508 { 509 // SeedsAU SideNav templates are pascal cased 510 desktopImageBannerImage = Model.Item.GetFile("DesktopImage")?.Path ?? string.Empty; 511 handsetImage = Model.Item.GetFile("HandsetImage")?.Path ?? string.Empty; 512 imageAltText = Model.Item.GetString("BannerImageAltText"); 513 strapLineTop = Model.Item.GetString("StraplineTop"); 514 strapLineBottom = Model.Item.GetString("StraplineBottom"); 515 leftLinkText = Model.Item.GetString("LeftLinkText"); 516 leftLink = Model.Item.GetString("LeftLink"); 517 leftLinkTarget = Model.Item.GetBoolean("LeftLinkOpenInNewTab") ? "blank" : ""; 518 rightLinkText = Model.Item.GetString("RightLinkText"); 519 rightLink = Model.Item.GetString("RightLink"); 520 rightLinkTarget = Model.Item.GetBoolean("RightLinkOpenInNewTab") ? "blank" : ""; 521 } 522 } 523 524 @RenderBannerAndStrapline(desktopImageBannerImage, handsetImage, imageAltText, strapLineTop, strapLineBottom, 525 leftLinkText, leftLink, leftLinkTarget, rightLinkText, rightLink, rightLinkTarget) @*This function call is part of '../Partials/_BannerAndStraplineHelper.cshtml' partial.*@ 526 <div class="side-nav-breadcrumbs"> 527 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 528 529 <div class="boxed"> 530 <div class="breadcrumbs"> 531 @RenderNavigation(new 532 { 533 id = "breadcrumbs", 534 template = @"..\Navigation\breadcrumbs.xslt", 535 expandmode="Pathonly" 536 }) 537 </div> 538 </div> 539 <div class="greenline"></div> 540 </div> 541 </div> 542 <div class="hidden-gt-md"> 543 @RenderMobileSideNav(parentPage, sideNavPages, currentChildPageId, ctaList) @*This function call is part of _SideNav.cshtml partial.*@ 544 </div> 545 546 547 <div class="parent_child-wrapper"> 548 549 <div class="hidden-xs hidden-sm hidden-md"> 550 @RenderSideNav(parentPage, sideNavPages, currentChildPageId) @*This function call is part of _SideNav.cshtml partial.*@ 551 @RenderCtaList(ctaList) @*This function call is part of _CtaList.cshtml partial.*@ 552 </div> 553 554 <div class="side_nav_main-container"> 555 @if (!string.IsNullOrWhiteSpace(Model.Item.GetString("Title"))) 556 { 557 <h1 class="product_title dld-blue-txt">@Model.Item.GetValue("Title")</h1> 558 559 } 560 @if (!string.IsNullOrWhiteSpace(Model.Item.GetString("Subtitle"))) 561 { 562 <h3>@Model.Item.GetString("Subtitle")</h3> 563 564 } 565 @Model.Placeholder("main") 566 @RenderPreviousNextPage(currentPage, parentPage) @*This function call is part of _PreviousNextPage.cshtml partial.*@ 567 <div class="hidden-gt-md"> 568 @RenderMobileCtaList(ctaList) @*This function call is part of _CtaList.cshtml partial.*@ 569 </div> 570 </div> 571 </div> 572 573 574 @Model.Placeholder("CTA") 575 } 576 @RenderContent(currentPage, parentPage, siblingPages, ctaList, currentPageId) @*This function call is part of _MainContent partial.*@ 577 578 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 579 @using PgwSeeds.Common 580 @using PgwSeeds.DLFSeedsAustralia 581 @using PgwSeeds.Extensions.DLFSeedsAustralia 582 583 @{ 584 var createSendKey = Model.Area.Item.GetString("SubscribeFormCreateSendKey"); 585 var subscribeFormPrivacyPolicyUrl = Model.Area.Item.GetString("SubscribeFormPrivacyPolicyUrl"); 586 var footerColumns = Model.Area.Item.GetItems("Footer_Columns").Take(3); 587 588 var footerImageBannerImage = "/Files/Templates/Designs/DLFSeedsAustralia/assets/img/media/DemoPlots_ToombsArmidale.jpg".BannerImage(); 589 var footerDirectImageTransparentPng = "/Files/Templates/Designs/DLFSeedsAustralia/assets/img/media/DLF-Seeds-Bags.png"; 590 var envelopeImage = "/Files/Templates/Designs/DLFSeedsAustralia/assets/img/icons/mail.svg"; 591 } 592 593 <div class="dld-light-grey-bg-sm"> 594 <div class="newsletter_subscription boxed top-bottom-gap-xl"> 595 <div class="subscription_wrapper"> 596 <div class="subscription_grid"> 597 <div class="newsletter_text bg-enrichment-device"> 598 <img class="newsletter_image" src="@envelopeImage"> 599 <h1 class="dld-white-txt">Subscribe to our seasonal newsletter.</h1> 600 </div> 601 <div class="newsletter_form"> 602 <p>Making the right choice of pasture seed is important and will have a long lasting impact on your immediate and future feed budget</p> 603 <p><strong>Sign up to get the latest news &amp; tips to get the most out of your pasture and maximise your homegrown feed.</strong></p> 604 <form class="js-cm-form" id="subForm" action="https://www.createsend.com/t/subscribeerror?description=" method="post" 605 data-id="@createSendKey"> 606 <input type="text" name="cm-name" aria-label="Name" id="fieldName" maxlength="200" placeholder="Name" required=""> 607 <label for="name">Name</label> 608 <input autocomplete="Email" aria-label="Email" class="js-cm-email-input qa-input-email" id="fieldEmail" maxlength="200" placeholder="Email" name="cm-jjblkk-jjblkk" required="" 609 type="email"> 610 <label for="email">Email</label> 611 <div class="subscription_terms checkbox_wrapper"> 612 <input aria-required="" id="cm-privacy-consent" name="cm-privacy-consent" required="" type="checkbox"> 613 <i class="fa-solid fa-check"></i> 614 <label for="cm-privacy-consent">I agree to be contacted by DLF seeds according to the <a 615 href="@subscribeFormPrivacyPolicyUrl" rel="noopener" target="_blank">Privacy 616 policy</a></label> 617 <div class="justify-right"> 618 <input class="button" type="submit" value="Subscribe"> 619 </div> 620 </div> 621 <input id="cm-privacy-consent-hidden" name="cm-privacy-consent-hidden" type="hidden" value="true"> 622 </form> 623 </div> 624 </div> 625 </div> 626 </div> 627 </div> 628 629 <div class="footer_image_banner"> 630 <div class="footer_image_banner_bg"> 631 <img src="@footerImageBannerImage" alt="DLF Seeds"> 632 </div> 633 <div class="footer_image_banner_content"> 634 <div class="footer_image_banner_title txt-xl"></div> 635 <div class="additional_image"> 636 <img src="@footerDirectImageTransparentPng" alt="DLF Seeds"> 637 </div> 638 </div> 639 640 </div> 641 642 <div class="footer_banner dld-grey-bg"> 643 <div class="top-bottom-gap-xl"></div> 644 645 <div class="footer_logos"> 646 <a href="/" class="logo"></a> 647 <a href="/" class="logo"></a> 648 </div> 649 <div class="boxed footer_grid "> 650 <div class="footer_contact hidden-xs"> 651 <div> 652 <p class="txt-l">Contact Us</p> 653 <a class="txt-m-light underline-on-hover" href="mailto:@Model.Area.Item.GetString("Business_Email")">@Model.Area.Item.GetString("Business_Email")</a> 654 <a class="txt-m-light underline-on-hover" href="tel: @Model.Area.Item.GetString("Business_Phone_Number")">Free Phone @Model.Area.Item.GetString("Business_Phone_Number")</a> 655 </div> 656 657 <div class="office txt-m-light"> 658 <div class="txt-l">Head Office</div> 659 @Model.Area.Item.GetString("Business_Address") 660 </div> 661 </div> 662 663 <div class="footer_navbar"> 664 <div class="footer_navigation_grid"> 665 @{ 666 var productPageId = GetPageIdByNavigationTag(NavigationTags.ProductList); 667 var counter = 0; 668 } 669 @foreach (var aColumn in footerColumns) 670 { 671 var subLinks = aColumn.GetItems("Sub_Links"); 672 var hidden = counter == 2 ? "hidden-xs" : string.Empty; 673 674 <div class="@hidden"> 675 <p class="txt-l">@aColumn.GetString("Title")</p> 676 677 @if (subLinks.Any()) 678 { 679 <ul class="nav flex-column"> 680 @foreach (var link in subLinks) 681 { 682 var linkHref = LinkResolver.GetLink(productPageId, link.GetRawValue("Product_Or_Group_Link")?.ToString(), link.GetString("Link")); 683 var target = link.GetBoolean("Open_Link_In_New_Tab") ? "_blank" : ""; 684 <li class="underline-on-hover"> 685 <a class="txt-m-light" href="@linkHref" target="@target">@link.GetString("Name")</a> 686 </li> 687 } 688 </ul> 689 } 690 </div> 691 counter++; 692 } 693 </div> 694 </div> 695 </div> 696 <div class="hidden-xs"> 697 @RenderSocialMediaLinks() 698 </div> 699 <div class="mobile_footer_contact hidden-gt-xs"> 700 <p class="txt-l">Contact Us</p> 701 <a href="mailto:@Model.Area.Item.GetString("Business_Email")">@Model.Area.Item.GetString("Business_Email")</a> 702 <br /> 703 <a href="tel: @Model.Area.Item.GetString("Business_Phone_Number")">Free Phone @Model.Area.Item.GetString("Business_Phone_Number")</a> 704 <br /> 705 <br /> 706 <br /> 707 708 @RenderSocialMediaLinks() 709 710 @{ 711 var lastColumn = footerColumns.ToList()[footerColumns.Count() - 1]; 712 var lastColumnSubLinks = lastColumn.GetItems("Sub_Links"); 713 } 714 715 <br /> 716 <br /> 717 <br /> 718 719 <p class="txt-l">@lastColumn.GetString("Title")</p> 720 721 @if (lastColumnSubLinks.Any()) 722 { 723 <ul> 724 @foreach (var link in lastColumnSubLinks) 725 { 726 var linkHref = LinkResolver.GetLink(productPageId, link.GetRawValue("Product_Or_Group_Link")?.ToString(), link.GetString("Link")); 727 var target = link.GetBoolean("Open_Link_In_New_Tab") ? "_blank" : ""; 728 <li class="underline-on-hover"> 729 <a href="@linkHref" target="@target">@link.GetString("Name")</a> 730 </li> 731 } 732 </ul> 733 } 734 </div> 735 </div> 736 737 @helper RenderSocialMediaLinks() 738 { 739 <div class="footer_social_media social txt-center"> 740 <a href="@Model.Area.Item.GetString("Business_Twitter_Link")" target="_blank" title="DLF Seeds on Twitter" class="twitter"></a> 741 <a href="@Model.Area.Item.GetString("Business_Linkedin_Link")" target="_blank" title="DLF Seeds on LinkedIn" class="linkedin"></a> 742 <a href="@Model.Area.Item.GetString("Business_Facebook_Link")" target="_blank" title="DLF Seeds on Facebook" class="facebook"></a> 743 <a href="@Model.Area.Item.GetString("Business_Youtube_Link")" target="_blank" title="DLF Seeds on YouTube" class="youtube"></a> 744 </div> 745 } 746 @Scripts.Render("~/bundles/custom/DLFSeedsAustralia") 747 @RenderSnippet("JavaScriptBottom") 748 </body> 749 750 </html> 751