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