Error executing template "Designs/DLFSeedsAustralia/_parsed/SeedsAU_SideNav_Parent_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 var currentPageId = PageView.Current().ID; 201 var currentPage = Dynamicweb.Services.Pages.GetPage(currentPageId); 202 203 var childPages = Dynamicweb.Services.Pages.GetPagesByParentID(currentPageId).ToList(); 204 205 var ctaListItemId = currentPage.Item["CTAList"]; 206 var ctaList = ctaListItemId != null ? ItemList.GetItemListById((int)ctaListItemId) : new ItemList(); 207 } 208 209 @inherits Dynamicweb.Rendering.ViewModelTemplate<PageViewModel> 210 @using Dynamicweb.Frontend 211 @using PgwSeeds.Extensions.DLFSeedsAustralia 212 213 214 @helper RenderBannerAndStrapline(string desktopImageBannerImage, string handsetImageBannerImage, string imageAltText, string strapLineTop, string strapLineBottom, 215 string leftLinkText, string leftLink, string leftLinkTarget, string rightLinkText, string rightLink, string rightLinkTarget) 216 { 217 var useDefaultBannerImage = string.IsNullOrEmpty(desktopImageBannerImage); 218 var desktopBanner = useDefaultBannerImage ? Model.Area.Item.GetFile("Desktop_Banner_Image")?.Path.BannerImage() : desktopImageBannerImage.BannerImage(); 219 var mobileBanner = useDefaultBannerImage ? Model.Area.Item.GetFile("Mobile_Banner_Image")?.Path.BannerImage() : handsetImageBannerImage.BannerImage(); 220 // Smaller when only using the strapLineTop. E.g., Contact Us > Where To Buy page. 221 var hasFirstLine = !string.IsNullOrWhiteSpace(strapLineTop); 222 var hasSecondLine = !string.IsNullOrWhiteSpace(strapLineBottom); 223 var hasButtons = !string.IsNullOrWhiteSpace(leftLinkText) || !string.IsNullOrWhiteSpace(rightLinkText); 224 var hasContent = hasFirstLine || hasSecondLine || hasButtons; 225 var shrinkHeightClass = !(hasSecondLine || hasButtons) ? "header_slider-mobile_height_250" : ""; 226 227 <div class="header_slider @shrinkHeightClass"> 228 <div class="flexslider"> 229 <ul class="slides"> 230 <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;"> 231 <img class="abs hidden-xs hidden-sm" src="@desktopBanner" alt="@imageAltText"> 232 <img class="abs hidden-gt-sm" src="@mobileBanner" alt="@imageAltText"> 233 234 <div class="slide_content dld-white-bg"> 235 @if (hasContent) 236 { 237 <div class="slider_enrichment_border bg-enrichment-device"></div> 238 if (!string.IsNullOrWhiteSpace(strapLineTop)) 239 { 240 <div class="slider_title dld-green-txt txt-xl">@strapLineTop</div> 241 } 242 243 if (!string.IsNullOrWhiteSpace(strapLineBottom)) 244 { 245 <div class="dld-mid-grey-txt banner_sutitle">@strapLineBottom</div> 246 } 247 248 if (!string.IsNullOrWhiteSpace(leftLinkText) || !string.IsNullOrWhiteSpace(rightLinkText)) 249 { 250 <div class="buttons"> 251 @if (!string.IsNullOrWhiteSpace(leftLinkText)) 252 { 253 <a href="@leftLink" target="@leftLinkTarget" class="button dld-transparent-bg dld-white-border dld-white-txt">@leftLinkText</a> 254 } 255 @if (!string.IsNullOrWhiteSpace(rightLinkText)) 256 { 257 <a href="@rightLink" target="@rightLinkTarget" class="button dld-blue-bg dld-blue-border dld-white-txt">@rightLinkText</a> 258 } 259 </div> 260 } 261 } 262 </div> 263 </li> 264 </ul> 265 </div> 266 </div> 267 } 268 @using Dynamicweb.Content.Items 269 @using Page = Dynamicweb.Content.Page 270 271 @helper RenderGrandChildren(int pageId, int? currentPageId) 272 { 273 var pages = Dynamicweb.Services.Pages.GetPagesByParentID(pageId).ToList(); 274 if (pages.Any()) 275 { 276 <ul> 277 @foreach (var page in pages.Where(x => x.Item.SystemName == "SeedsAU_SideNav_Parent_Page" || x.Item.SystemName == "SeedsAU_SideNav_Child_Page")) 278 { 279 <li> 280 @{ 281 var pageActiveClass = currentPageId.HasValue && currentPageId == page.ID ? "active-item" : ""; 282 } 283 <a class="@pageActiveClass" href="@page.GetPageHrefValue()">@page.MenuText</a> 284 </li> 285 286 } 287 </ul> 288 } 289 } 290 291 @helper RenderSideNav(Page parentPage, List<Page> childPages, int? currentChildPageId) 292 { 293 <div class="side_nav_items-container"> 294 <a class="side_nav_items-title hidden-xs hidden-sm hidden-md" href="@parentPage.GetPageHrefValue()"> 295 <strong class="dld-green-txt">@parentPage.MenuText</strong> 296 </a> 297 <ol> 298 @foreach (var childPage in childPages.Where(x => !x.Hidden)) 299 { 300 <li> 301 @{ 302 var childPageActiveClass = currentChildPageId.HasValue && currentChildPageId == childPage.ID ? "active-item" : ""; 303 } 304 <a class="@childPageActiveClass" href="@childPage.GetPageHrefValue()">@childPage.MenuText</a> 305 @RenderGrandChildren(childPage.ID, currentChildPageId) 306 </li> 307 } 308 </ol> 309 </div> 310 } 311 312 @helper RenderMobileSideNav(Page parentPage, List<Page> childPages, int? currentChildPageId, ItemList ctaList) 313 { 314 <div class="side_nav_mobile-nav"> 315 <div class="header"> 316 <p>@parentPage.MenuText</p> 317 <div class="mobile_nav-btn" onclick="toggleVisibility('sideNavMobileNavContent', 'show_mobile_nav-content')"> 318 <i class="fa-solid fa-bars"></i> 319 </div> 320 </div> 321 <div id="sideNavMobileNavContent" class="hide_mobile_nav-content"> 322 @RenderSideNav(parentPage, childPages, currentChildPageId) 323 @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. *@ 324 </div> 325 </div> 326 } 327 328 @using Dynamicweb.Content.Items 329 @using PgwSeeds.Extensions.DLFSeedsAustralia 330 331 @helper RenderCtaList(ItemList ctaList) 332 { 333 <div class="green-theme"> 334 335 @if (ctaList != null) 336 { 337 foreach (var aItem in ctaList.Relations.Take(3)) 338 { 339 var typeItem = Item.GetItemById("SeedsAU_SideNav_ParentPage_CTA", aItem.Id); 340 typeItem.TryGetValue("Title", out var title); 341 typeItem.TryGetValue("Image", out var image); 342 typeItem.TryGetValue("ImageAltText", out var imageAltText); 343 typeItem.TryGetValue("CircleImage", out var circleImage); 344 typeItem.TryGetValue("Link", out var link); 345 typeItem.TryGetValue("LinkText", out var linkText); 346 347 var imageSource = Convert.ToString(image); 348 var circleImageClass = Convert.ToBoolean(circleImage) ? "img-circle circle-image" : null; 349 350 <div class="side_nav_cta-item"> 351 <a href="@link"> 352 <img class="@circleImageClass" src="@imageSource.CtaImageWidth()" alt="@imageAltText" /> 353 <h3>@title</h3> 354 <span class="side_nav_cta-button"> 355 <span class="button">@linkText</span> 356 </span> 357 </a> 358 </div> 359 } 360 } 361 </div> 362 } 363 364 @helper RenderMobileCtaList(ItemList ctaList) 365 { 366 <div class="side_nav_mobile_cta-wrapper"> 367 @if (ctaList != null) 368 { 369 foreach (var aItem in ctaList.Relations.Take(3)) 370 { 371 var typeItem = Item.GetItemById("SeedsAU_SideNav_ParentPage_CTA", aItem.Id); 372 typeItem.TryGetValue("LinkTextMobile", out var linkTextMobile); 373 typeItem.TryGetValue("Link", out var link); 374 375 <a class="animate-right" href="@link"> 376 <span> @linkTextMobile</span> 377 <i class="fa fa-angle-right"></i> 378 </a> 379 } 380 } 381 </div> 382 } 383 @using Page = Dynamicweb.Content.Page 384 385 @helper RenderPreviousNextPage(Page currentPage, Page parentPage) 386 { 387 388 string previousPageText = null; 389 string previousPageUrl = null; 390 391 string nextPageText; 392 string nextPageUrl; 393 394 var pages = new List<Page> { parentPage }; 395 396 var childPages = Dynamicweb.Services.Pages.GetPagesByParentID(parentPage.ID).Where(x => !x.Hidden).ToList(); 397 398 foreach (var childPage in childPages) 399 { 400 pages.Add(childPage); 401 var grandchildPages = Dynamicweb.Services.Pages.GetPagesByParentID(childPage.ID) 402 ?.Where(x => x.Item.SystemName == "SeedsAU_SideNav_Parent_Page" || x.Item.SystemName == "SeedsAU_SideNav_Child_Page") 403 ?.ToList(); 404 405 if (grandchildPages != null && grandchildPages.Any()) 406 { 407 pages.AddRange(grandchildPages); 408 } 409 } 410 411 if (pages.Count == 1) { return; } 412 413 var currentPageIndex = pages.FindIndex(p => p.ID == currentPage.ID); 414 415 if (currentPage.ID == pages.First().ID) 416 { 417 nextPageText = pages[1].MenuText; 418 nextPageUrl = pages[1].GetPageHrefValue(); 419 } 420 else if (currentPage.ID == pages.Last().ID) 421 { 422 previousPageText = pages[currentPageIndex - 1].MenuText; 423 previousPageUrl = pages[currentPageIndex - 1].GetPageHrefValue(); 424 425 nextPageText = pages[0].MenuText; 426 nextPageUrl = pages[0].GetPageHrefValue(); 427 } 428 else 429 { 430 previousPageText = pages[currentPageIndex - 1].MenuText; 431 previousPageUrl = pages[currentPageIndex - 1].GetPageHrefValue(); 432 433 nextPageText = pages[currentPageIndex + 1].MenuText; 434 nextPageUrl = pages[currentPageIndex + 1].GetPageHrefValue(); 435 } 436 437 @RenderPreviousNextHtml(previousPageText, previousPageUrl, nextPageText, nextPageUrl) 438 439 } 440 441 @helper RenderPreviousNextHtml(string previousPageText, string previousPageUrl, string nextPageText, string nextPageUrl) 442 { 443 <div class="boxed side_nav_previous_next-container"> 444 <div> 445 @if (!string.IsNullOrWhiteSpace(previousPageText)) 446 { 447 <a href="@previousPageUrl" class="side_nav_previous_next-items side_nav_previous-item" title="&quot;@previousPageText&quot;"> 448 <span class="dld-green-txt">Previous Section</span> 449 <br/> 450 <span> 451 <span class="fa fa-angle-left"></span> 452 </span> 453 <span class="side_nav_previous_next_page">@previousPageText</span> 454 455 </a> 456 } 457 </div> 458 459 <div> 460 @if (!string.IsNullOrWhiteSpace(nextPageText)) 461 { 462 <a href="@nextPageUrl" class="side_nav_previous_next-items side_nav_next-item" title="&quot;@nextPageText&quot;"> 463 <span class="dld-green-txt">Next Section</span> 464 <br/> 465 <span class="side_nav_previous_next_page-name">@nextPageText</span> 466 <span> 467 <span class="fa fa-angle-right"></span> 468 </span> 469 </a> 470 } 471 </div> 472 </div> 473 } 474 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 475 @using Dynamicweb.Content.Items 476 477 478 @helper RenderContent(Dynamicweb.Content.Page currentPage, Dynamicweb.Content.Page parentPage, List<Dynamicweb.Content.Page> sideNavPages, ItemList ctaList, int? currentChildPageId) 479 { 480 <div> 481 @inherits Dynamicweb.Rendering.ViewModelTemplate<PageViewModel> 482 @using Dynamicweb.Frontend 483 484 @{ 485 string desktopImageBannerImage, handsetImage, imageAltText, strapLineTop, strapLineBottom, leftLinkText, leftLink, rightLinkText, rightLink, rightLinkTarget, leftLinkTarget; 486 487 // There are discrepencies in attribute names between DLFAU and SeedsAU files 488 if(Model.Item.SystemName.Contains("DLF")) 489 { 490 // DLFAU News Page templates use underscores 491 desktopImageBannerImage = Model.Item.GetFile("Desktop_Image")?.Path ?? string.Empty; 492 handsetImage = Model.Item.GetFile("Handset_Image")?.Path ?? string.Empty; 493 imageAltText = Model.Item.GetString("Image_Alt_Text"); 494 strapLineTop = Model.Item.GetString("Strapline_Top"); 495 strapLineBottom = Model.Item.GetString("Strapline_Bottom"); 496 leftLinkText = Model.Item.GetString("Left_Link_Text"); 497 leftLink = Model.Item.GetString("Left_Link"); 498 leftLinkTarget = Model.Item.GetBoolean("Left_Link_Open_In_New_Tab") ? "blank" : ""; 499 rightLinkText = Model.Item.GetString("Right_Link_Text"); 500 rightLink = Model.Item.GetString("Right_Link"); 501 rightLinkTarget = Model.Item.GetBoolean("Right_Link_Open_In_New_Tab") ? "blank" : ""; 502 } 503 else 504 { 505 // SeedsAU SideNav templates are pascal cased 506 desktopImageBannerImage = Model.Item.GetFile("DesktopImage")?.Path ?? string.Empty; 507 handsetImage = Model.Item.GetFile("HandsetImage")?.Path ?? string.Empty; 508 imageAltText = Model.Item.GetString("BannerImageAltText"); 509 strapLineTop = Model.Item.GetString("StraplineTop"); 510 strapLineBottom = Model.Item.GetString("StraplineBottom"); 511 leftLinkText = Model.Item.GetString("LeftLinkText"); 512 leftLink = Model.Item.GetString("LeftLink"); 513 leftLinkTarget = Model.Item.GetBoolean("LeftLinkOpenInNewTab") ? "blank" : ""; 514 rightLinkText = Model.Item.GetString("RightLinkText"); 515 rightLink = Model.Item.GetString("RightLink"); 516 rightLinkTarget = Model.Item.GetBoolean("RightLinkOpenInNewTab") ? "blank" : ""; 517 } 518 } 519 520 @RenderBannerAndStrapline(desktopImageBannerImage, handsetImage, imageAltText, strapLineTop, strapLineBottom, 521 leftLinkText, leftLink, leftLinkTarget, rightLinkText, rightLink, rightLinkTarget) @*This function call is part of '../Partials/_BannerAndStraplineHelper.cshtml' partial.*@ 522 <div class="side-nav-breadcrumbs"> 523 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 524 525 <div class="boxed"> 526 <div class="breadcrumbs"> 527 @RenderNavigation(new 528 { 529 id = "breadcrumbs", 530 template = @"..\Navigation\breadcrumbs.xslt", 531 expandmode="Pathonly" 532 }) 533 </div> 534 </div> 535 <div class="greenline"></div> 536 </div> 537 </div> 538 <div class="hidden-gt-md"> 539 @RenderMobileSideNav(parentPage, sideNavPages, currentChildPageId, ctaList) @*This function call is part of _SideNav.cshtml partial.*@ 540 </div> 541 542 543 <div class="parent_child-wrapper"> 544 545 <div class="hidden-xs hidden-sm hidden-md"> 546 @RenderSideNav(parentPage, sideNavPages, currentChildPageId) @*This function call is part of _SideNav.cshtml partial.*@ 547 @RenderCtaList(ctaList) @*This function call is part of _CtaList.cshtml partial.*@ 548 </div> 549 550 <div class="side_nav_main-container"> 551 @if (!string.IsNullOrWhiteSpace(Model.Item.GetString("Title"))) 552 { 553 <h1 class="product_title dld-blue-txt">@Model.Item.GetValue("Title")</h1> 554 555 } 556 @if (!string.IsNullOrWhiteSpace(Model.Item.GetString("Subtitle"))) 557 { 558 <h3>@Model.Item.GetString("Subtitle")</h3> 559 560 } 561 @Model.Placeholder("main") 562 @RenderPreviousNextPage(currentPage, parentPage) @*This function call is part of _PreviousNextPage.cshtml partial.*@ 563 <div class="hidden-gt-md"> 564 @RenderMobileCtaList(ctaList) @*This function call is part of _CtaList.cshtml partial.*@ 565 </div> 566 </div> 567 </div> 568 569 570 @Model.Placeholder("CTA") 571 } 572 @RenderContent(currentPage, currentPage, childPages, ctaList, null) @*This function call is part of _MainContent partial.*@ 573 574 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 575 @using PgwSeeds.Common 576 @using PgwSeeds.DLFSeedsAustralia 577 @using PgwSeeds.Extensions.DLFSeedsAustralia 578 579 @{ 580 var createSendKey = Model.Area.Item.GetString("SubscribeFormCreateSendKey"); 581 var subscribeFormPrivacyPolicyUrl = Model.Area.Item.GetString("SubscribeFormPrivacyPolicyUrl"); 582 var footerColumns = Model.Area.Item.GetItems("Footer_Columns").Take(3); 583 584 var footerImageBannerImage = "/Files/Templates/Designs/DLFSeedsAustralia/assets/img/media/DemoPlots_ToombsArmidale.jpg".BannerImage(); 585 var footerDirectImageTransparentPng = "/Files/Templates/Designs/DLFSeedsAustralia/assets/img/media/DLF-Seeds-Bags.png"; 586 var envelopeImage = "/Files/Templates/Designs/DLFSeedsAustralia/assets/img/icons/mail.svg"; 587 } 588 589 <div class="dld-light-grey-bg-sm"> 590 <div class="newsletter_subscription boxed top-bottom-gap-xl"> 591 <div class="subscription_wrapper"> 592 <div class="subscription_grid"> 593 <div class="newsletter_text bg-enrichment-device"> 594 <img class="newsletter_image" src="@envelopeImage"> 595 <h1 class="dld-white-txt">Subscribe to our seasonal newsletter.</h1> 596 </div> 597 <div class="newsletter_form"> 598 <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> 599 <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> 600 <form class="js-cm-form" id="subForm" action="https://www.createsend.com/t/subscribeerror?description=" method="post" 601 data-id="@createSendKey"> 602 <input type="text" name="cm-name" aria-label="Name" id="fieldName" maxlength="200" placeholder="Name" required=""> 603 <label for="name">Name</label> 604 <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="" 605 type="email"> 606 <label for="email">Email</label> 607 <div class="subscription_terms checkbox_wrapper"> 608 <input aria-required="" id="cm-privacy-consent" name="cm-privacy-consent" required="" type="checkbox"> 609 <i class="fa-solid fa-check"></i> 610 <label for="cm-privacy-consent">I agree to be contacted by DLF seeds according to the <a 611 href="@subscribeFormPrivacyPolicyUrl" rel="noopener" target="_blank">Privacy 612 policy</a></label> 613 <div class="justify-right"> 614 <input class="button" type="submit" value="Subscribe"> 615 </div> 616 </div> 617 <input id="cm-privacy-consent-hidden" name="cm-privacy-consent-hidden" type="hidden" value="true"> 618 </form> 619 </div> 620 </div> 621 </div> 622 </div> 623 </div> 624 625 <div class="footer_image_banner"> 626 <div class="footer_image_banner_bg"> 627 <img src="@footerImageBannerImage" alt="DLF Seeds"> 628 </div> 629 <div class="footer_image_banner_content"> 630 <div class="footer_image_banner_title txt-xl"></div> 631 <div class="additional_image"> 632 <img src="@footerDirectImageTransparentPng" alt="DLF Seeds"> 633 </div> 634 </div> 635 636 </div> 637 638 <div class="footer_banner dld-grey-bg"> 639 <div class="top-bottom-gap-xl"></div> 640 641 <div class="footer_logos"> 642 <a href="/" class="logo"></a> 643 <a href="/" class="logo"></a> 644 </div> 645 <div class="boxed footer_grid "> 646 <div class="footer_contact hidden-xs"> 647 <div> 648 <p class="txt-l">Contact Us</p> 649 <a class="txt-m-light underline-on-hover" href="mailto:@Model.Area.Item.GetString("Business_Email")">@Model.Area.Item.GetString("Business_Email")</a> 650 <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> 651 </div> 652 653 <div class="office txt-m-light"> 654 <div class="txt-l">Head Office</div> 655 @Model.Area.Item.GetString("Business_Address") 656 </div> 657 </div> 658 659 <div class="footer_navbar"> 660 <div class="footer_navigation_grid"> 661 @{ 662 var productPageId = GetPageIdByNavigationTag(NavigationTags.ProductList); 663 var counter = 0; 664 } 665 @foreach (var aColumn in footerColumns) 666 { 667 var subLinks = aColumn.GetItems("Sub_Links"); 668 var hidden = counter == 2 ? "hidden-xs" : string.Empty; 669 670 <div class="@hidden"> 671 <p class="txt-l">@aColumn.GetString("Title")</p> 672 673 @if (subLinks.Any()) 674 { 675 <ul class="nav flex-column"> 676 @foreach (var link in subLinks) 677 { 678 var linkHref = LinkResolver.GetLink(productPageId, link.GetRawValue("Product_Or_Group_Link")?.ToString(), link.GetString("Link")); 679 var target = link.GetBoolean("Open_Link_In_New_Tab") ? "_blank" : ""; 680 <li class="underline-on-hover"> 681 <a class="txt-m-light" href="@linkHref" target="@target">@link.GetString("Name")</a> 682 </li> 683 } 684 </ul> 685 } 686 </div> 687 counter++; 688 } 689 </div> 690 </div> 691 </div> 692 <div class="hidden-xs"> 693 @RenderSocialMediaLinks() 694 </div> 695 <div class="mobile_footer_contact hidden-gt-xs"> 696 <p class="txt-l">Contact Us</p> 697 <a href="mailto:@Model.Area.Item.GetString("Business_Email")">@Model.Area.Item.GetString("Business_Email")</a> 698 <br /> 699 <a href="tel: @Model.Area.Item.GetString("Business_Phone_Number")">Free Phone @Model.Area.Item.GetString("Business_Phone_Number")</a> 700 <br /> 701 <br /> 702 <br /> 703 704 @RenderSocialMediaLinks() 705 706 @{ 707 var lastColumn = footerColumns.ToList()[footerColumns.Count() - 1]; 708 var lastColumnSubLinks = lastColumn.GetItems("Sub_Links"); 709 } 710 711 <br /> 712 <br /> 713 <br /> 714 715 <p class="txt-l">@lastColumn.GetString("Title")</p> 716 717 @if (lastColumnSubLinks.Any()) 718 { 719 <ul> 720 @foreach (var link in lastColumnSubLinks) 721 { 722 var linkHref = LinkResolver.GetLink(productPageId, link.GetRawValue("Product_Or_Group_Link")?.ToString(), link.GetString("Link")); 723 var target = link.GetBoolean("Open_Link_In_New_Tab") ? "_blank" : ""; 724 <li class="underline-on-hover"> 725 <a href="@linkHref" target="@target">@link.GetString("Name")</a> 726 </li> 727 } 728 </ul> 729 } 730 </div> 731 </div> 732 733 @helper RenderSocialMediaLinks() 734 { 735 <div class="footer_social_media social txt-center"> 736 <a href="@Model.Area.Item.GetString("Business_Twitter_Link")" target="_blank" title="DLF Seeds on Twitter" class="twitter"></a> 737 <a href="@Model.Area.Item.GetString("Business_Linkedin_Link")" target="_blank" title="DLF Seeds on LinkedIn" class="linkedin"></a> 738 <a href="@Model.Area.Item.GetString("Business_Facebook_Link")" target="_blank" title="DLF Seeds on Facebook" class="facebook"></a> 739 <a href="@Model.Area.Item.GetString("Business_Youtube_Link")" target="_blank" title="DLF Seeds on YouTube" class="youtube"></a> 740 </div> 741 } 742 @Scripts.Render("~/bundles/custom/DLFSeedsAustralia") 743 @RenderSnippet("JavaScriptBottom") 744 </body> 745 746 </html> 747