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=""@previousPageText"">
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=""@nextPageText"">
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 & 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