Error executing template "Designs/PGWSeedsNZ/_parsed/SeedsNZ_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 @using Dynamicweb.Frontend;
3 @using Dynamicweb.Rendering;
4 @using System.Configuration;
5 @using System.Web;
6 @using System.Web.Optimization;
7 @using System.Net;
8 @using PgwSeeds.Constants.PGWSeedsNZ;
9 @using PgwSeeds.Extensions.PGWSeedsNZ;
10
11 @{
12 var tagManagerCode = Model.Area.Item.GetString("Google_TagManager_Code");
13 var siteVerificationKey = Model.Area.Item.GetString("Google_Site_Verification_Key");
14 }
15
16 <!DOCTYPE html>
17 <html>
18 <head>
19 @if (tagManagerCode != null)
20 {
21 <!-- Google Tag Manager -->
22 <script>
23 (function (w, d, s, l, i) {
24 w[l] = w[l] || []; w[l].push({
25 'gtm.start':
26 new Date().getTime(), event: 'gtm.js'
27 }); var f = d.getElementsByTagName(s)[0],
28 j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
29 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
30 })(window, document, 'script', 'dataLayer', '@tagManagerCode');
31 </script>
32 }
33 <script type="text/javascript">
34 var sdkInstance = "appInsightsSDK"; window[sdkInstance] = "appInsights"; var aiName = window[sdkInstance], aisdk = window[aiName] || function (e) { function n(e) { t[e] = function () { var n = arguments; t.queue.push(function () { t[e].apply(t, n) }) } } var t = { config: e }; t.initialize = !0; var i = document, a = window; setTimeout(function () { var n = i.createElement("script"); n.src = e.url || "https://az416426.vo.msecnd.net/scripts/b/ai.2.min.js", i.getElementsByTagName("script")[0].parentNode.appendChild(n) }); try { t.cookie = i.cookie } catch (e) { } t.queue = [], t.version = 2; for (var r = ["Event", "PageView", "Exception", "Trace", "DependencyData", "Metric", "PageViewPerformance"]; r.length;)n("track" + r.pop()); n("startTrackPage"), n("stopTrackPage"); var s = "Track" + r[0]; if (n("start" + s), n("stop" + s), n("setAuthenticatedUserContext"), n("clearAuthenticatedUserContext"), n("flush"), !(!0 === e.disableExceptionTracking || e.extensionConfig && e.extensionConfig.ApplicationInsightsAnalytics && !0 === e.extensionConfig.ApplicationInsightsAnalytics.disableExceptionTracking)) { n("_" + (r = "onerror")); var o = a[r]; a[r] = function (e, n, i, a, s) { var c = o && o(e, n, i, a, s); return !0 !== c && t["_" + r]({ message: e, url: n, lineNumber: i, columnNumber: a, error: s }), c }, e.autoExceptionInstrumented = !0 } return t }(
35 {
36 instrumentationKey: '@ConfigurationManager.AppSettings["aiinstrumentationKey"]',
37 disableCorrelationHeaders: false
38 }
39 );
40 window.appInsights = aisdk;
41 window.appInsights.queue.push(function () {
42 var serverId = "@HttpContext.Current.GetRequestTelemetry().Context.Operation.Id";
43 appInsights.properties.context.telemetryTrace.traceID = serverId;
44
45 });
46 aisdk.trackPageView();
47 </script>
48 <meta charset="utf-8" />
49 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
50 <meta name="google-site-verification" content="@siteVerificationKey" />
51 @Model.MetaTags
52 <title>@Model.Title | PGG Wrightson Seeds</title>
53
54 <link rel="apple-touch-icon" sizes="57x57" href="/Files/Templates/Designs/SeedsNZ/assets/favicon/apple-touch-icon-57x57.png" />
55 <link rel="apple-touch-icon" sizes="60x60" href="/Files/Templates/Designs/SeedsNZ/assets/favicon/apple-touch-icon-60x60.png" />
56 <link rel="apple-touch-icon" sizes="72x72" href="/Files/Templates/Designs/SeedsNZ/assets/favicon/apple-touch-icon-72x72.png" />
57 <link rel="apple-touch-icon" sizes="76x76" href="/Files/Templates/Designs/SeedsNZ/assets/favicon/apple-touch-icon-76x76.png" />
58 <link rel="apple-touch-icon" sizes="114x114" href="/Files/Templates/Designs/SeedsNZ/assets/favicon/apple-touch-icon-114x114.png" />
59 <link rel="apple-touch-icon" sizes="120x120" href="/Files/Templates/Designs/SeedsNZ/assets/favicon/apple-touch-icon-120x120.png" />
60 <link rel="icon" type="image/png" sizes="32x32" href="/Files/Templates/Designs/SeedsNZ/assets/favicon/favicon-32x32.png" />
61 <link rel="icon" type="image/png" sizes="96x96" href="/Files/Templates/Designs/SeedsNZ/assets/favicon/favicon-96x96.png" />
62 <link rel="icon" type="image/png" sizes="16x16" href="/Files/Templates/Designs/SeedsNZ/assets/favicon/favicon-16x16.png" />
63 <link rel="icon" href="/Files/Templates/Designs/SeedsNZ/assets/favicon/favicon.ico" />
64 <link rel="stylesheet" href="https://use.typekit.net/pgh1pmv.css">
65
66 <!-- FontAwesome -->
67 <script src="https://kit.fontawesome.com/ae27298cff.js" crossorigin="anonymous"></script>
68
69 <!-- TypeKit -->
70 <script src="https://use.typekit.net/oel8lyn.js"></script>
71 <script>try { Typekit.load({ async: false }); } catch (e) { }</script>
72
73 @Styles.Render("~/Content/custom/pgwseedsnz")
74
75 @RenderSnippet("StyleSheet")
76 @RenderSnippet("JavaScript")
77 </head>
78
79 <body>
80
81 @if (tagManagerCode != null)
82 {
83 <!-- Google Tag Manager (no script) -->
84 <noscript>
85 <iframe src="https://www.googletagmanager.com/ns.html?id=@tagManagerCode"
86 height="0" width="0" style="display:none;visibility:hidden"></iframe>
87 </noscript>
88 }
89
90 <div class="layout__main wrap">
91 @{
92 var searchPage = GetPageIdByNavigationTag("Search");
93 }
94 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
95 @using Dynamicweb.Frontend;
96 @using PgwSeeds.Constants.PGWSeedsNZ;
97 @using PgwSeeds.Extensions.PGWSeedsNZ;
98
99
100 @{
101 var socialBarIcons = Model.Area.Item.GetItems("Social_Icons") != null ? Model.Area.Item.GetItems("Social_Icons") : new List<ItemViewModel>();
102 }
103
104 <div id="socials-bar">
105 <a href="tel:@Pageview.Area.Item["NZPhoneNumber"]" class="socials-text">
106 @Pageview.Area.Item["NZPhoneNumber"]
107 </a>
108 <a href="mailto:@Pageview.Area.Item["Email"]" class="socials-text">
109 @Pageview.Area.Item["Email"]
110 </a>
111 <span class="socials-icons">
112 @if (socialBarIcons != null)
113 {
114 foreach (var icon in socialBarIcons)
115 {
116 <a href="@icon.GetString("Icon_link")" target="_blank">
117 <span class="fa @icon.GetString("Icon_ClassName")"></span>
118 </a>
119 }
120 }
121 </span>
122 </div>
123 <header class="container-fluid">
124 <div class="col-no-padding-desktop">
125 <nav class="navbar" role="navigation">
126 <div class="navbar-header">
127 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
128 <span class="icon-bar"></span>
129 <span class="icon-bar"></span>
130 <span class="icon-bar"></span>
131 </button>
132 <a href="Default.aspx?Id=@GetPageIdByNavigationTag(NavigationTags.Home)" id="logo" title="Back to homepage">
133 <img class="img-responsive" src="/Files/Templates/Designs/PGWSeedsNZ/assets/img/logo.svg" alt="PGG Wrightson Seeds Logo">
134 </a>
135 </div>
136
137 <div class="navbar-collapse collapse pull-right-md" style="overflow: hidden">
138 <ul class="nav navbar-nav pull-right-md" id="navbar">
139 @RenderNavigation(new
140 {
141 Id = "navbar",
142 Template = "navbar.xslt",
143 ExpandMode = "All",
144 EndLevel = 3
145 })
146
147 </ul>
148
149 <div class="search-btn-wrap visible-xs visible-sm">
150 <a data-target="#search-wrapper"
151 data-toggle="collapse"
152 aria-expanded="false"
153 aria-controls="search-wrapper"
154 role="button">
155 <span class="fa fa-search hidden-xs hidden-sm"></span>
156 <span class="search-text hidden-md hidden-lg">Search</span>
157 </a>
158 </div>
159 </div>
160 </nav>
161 </div>
162 <div class="row collapse" id="search-wrapper">
163 <div class="max-width-wrap">
164 <div class="form-search-wrap">
165 <form method="get" action="Default.aspx" name="" novalidate="novalidate">
166 <input type="hidden" name="ID" value="@searchPage" />
167 <input type="search" class="search-input" placeholder="Enter Keyword to Search" name="q" autocomplete="off">
168 <submit class="" role="button">
169 <span class="rounded-icon icon fa fa-angle-right"></span>
170 </submit>
171 </form>
172 </div>
173 </div>
174 </div>
175 </header>
176
177 @inherits Dynamicweb.Rendering.ViewModelTemplate<PageViewModel>
178 @using Dynamicweb.Content.Items
179 @using Dynamicweb.Frontend
180
181 @Title("Default page template")
182
183
184 @{
185 const string childPageType = "SeedsNZ_SideNav_Child_Page";
186 var currentPageId = PageView.Current().ID;
187 var currentPage = Dynamicweb.Services.Pages.GetPage(currentPageId);
188
189 var parentPage = currentPage.Parent.ItemType == childPageType ? currentPage.Parent.Parent : currentPage.Parent;
190
191 var siblingPages = Dynamicweb.Services.Pages.GetPagesByParentID(parentPage.ID).ToList();
192
193 var ctaListItemId = parentPage.Item["CTA_List"];
194
195 var ctaList = ctaListItemId != null ? ItemList.GetItemListById((int)ctaListItemId) : new ItemList();
196 }
197
198 @using Dynamicweb.Content.Items
199 @using Page = Dynamicweb.Content.Page
200
201 @helper RenderGrandChildren(int pageId, int? currentPageId)
202 {
203 var pages = Dynamicweb.Services.Pages.GetPagesByParentID(pageId).ToList();
204 if (pages.Any())
205 {
206 <ul>
207 @foreach (var page in pages)
208 {
209 <li>
210 @{
211 var pageActiveClass = currentPageId.HasValue && currentPageId == page.ID ? "active-child-page" : "";
212 }
213 <a class="@pageActiveClass" href="@page.GetPageHrefValue()">@page.MenuText</a>
214 </li>
215
216 }
217 </ul>
218 }
219 }
220
221 @helper RenderSideNav(Page parentPage, List<Page> childPages, int? currentChildPageId)
222 {
223 <div class="side-nav-items-container">
224 <a class="side-nav-parent-page-a hidden-xs hidden-sm " href="@parentPage.GetPageHrefValue()">
225 <strong>@parentPage.MenuText</strong>
226 </a>
227
228 <ol class="side-nav-ol">
229 @foreach (var childPage in childPages)
230 {
231 <li>
232 @{
233 var childPageActiveClass = currentChildPageId.HasValue && currentChildPageId == childPage.ID ? "active-child-page" : "";
234 }
235 <a class="@childPageActiveClass" href="@childPage.GetPageHrefValue()">@childPage.MenuText</a>
236 @RenderGrandChildren(childPage.ID, currentChildPageId)
237 </li>
238 }
239 </ol>
240 </div>
241 }
242
243 @helper RenderMobileSideNav(Page parentPage, List<Page> childPages, int? currentChildPageId, ItemList ctaList)
244 {
245 <div class="sectionmenu">
246 <div class="hidden-md hidden-lg navbar">
247 <div class="navbar-header ">
248
249 <button type="button" class="navbar-toggle navbar" data-toggle="collapse" data-target="#subnavbar-collapse">
250 <div class="text">Sections</div>
251 <div class="icons">
252 <span class="icon-bar"></span>
253 <span class="icon-bar"></span>
254 <span class="icon-bar"></span>
255 </div>
256
257 </button>
258 <div class="navbar-text"> @parentPage.MenuText</div>
259 </div>
260 <div id="subnavbar-collapse" class="navbar-collapse collapse" aria-expanded="false">
261 @RenderSideNav(parentPage, childPages, currentChildPageId)
262 @RenderMobileCtaList(ctaList) @*This function call is part of _CtaList.cshtml partial. This function call works here because the _CtaList.cshtml is included on both SeedsNZ_SideNav Parent/Child pages. *@
263 </div>
264 </div>
265 </div>
266 }
267
268 @using Dynamicweb.Content.Items
269
270 @helper RenderCtaList(ItemList ctaList)
271 {
272 <div class="side-nav-cta-container">
273
274 @if (ctaList != null)
275 {
276 foreach (var aItem in ctaList.Relations.Take(3))
277 {
278 var typeItem = Item.GetItemById("SeedsNZ_SideNav_ParentPage_CTA", aItem.Id);
279 typeItem.TryGetValue("Title", out var title);
280 typeItem.TryGetValue("Image", out var image);
281 typeItem.TryGetValue("ImageAltText", out var imageAltText);
282 typeItem.TryGetValue("CircleImage", out var circleImage);
283 typeItem.TryGetValue("Link", out var link);
284 typeItem.TryGetValue("LinkText", out var linkText);
285
286 var circleImageClass = Convert.ToBoolean(circleImage) ? "img-circle circle-image" : null;
287
288 <div class="side-nav-cta-item">
289 <h3>@title</h3>
290 <img class="img-responsive @circleImageClass" src="@image" alt="@imageAltText" />
291 <a class="btn" href="@link">@linkText</a>
292 </div>
293 }
294 }
295 </div>
296 }
297
298 @helper RenderMobileCtaList(ItemList ctaList)
299 {
300 <div class="hidden-md hidden-lg">
301 @if (ctaList != null)
302 {
303 foreach (var aItem in ctaList.Relations.Take(3))
304 {
305 var typeItem = Item.GetItemById("SeedsNZ_SideNav_ParentPage_CTA", aItem.Id);
306 typeItem.TryGetValue("LinkTextMobile", out var linkTextMobile);
307 typeItem.TryGetValue("Link", out var link);
308
309 <a href="@link" class="page-cta-btn btn animate-right side-nav-mobile-cta-item" style="display: block;">
310 <span> @linkTextMobile</span>
311 <i class="rounded-icon icon fa fa-angle-right"></i>
312 </a>
313 }
314 }
315 </div>
316 }
317 @using Page = Dynamicweb.Content.Page
318
319 @helper RenderPreviousNextPage(Page currentPage, Page parentPage)
320 {
321 string previousPageText = null;
322 string previousPageUrl = null;
323
324 string nextPageText;
325 string nextPageUrl;
326
327 var pages = new List<Page> { parentPage };
328
329 var childPages = Dynamicweb.Services.Pages.GetPagesByParentID(parentPage.ID).ToList();
330
331 foreach (var childPage in childPages)
332 {
333 pages.Add(childPage);
334 pages.AddRange(Dynamicweb.Services.Pages.GetPagesByParentID(childPage.ID));
335 }
336
337 if (pages.Count == 1) { return; }
338
339 var currentPageIndex = pages.FindIndex(p => p.ID == currentPage.ID);
340
341 if (currentPage.ID == pages.First().ID)
342 {
343 nextPageText = pages[1].MenuText;
344 nextPageUrl = pages[1].GetPageHrefValue();
345 }
346 else if (currentPage.ID == pages.Last().ID)
347 {
348 previousPageText = pages[currentPageIndex - 1].MenuText;
349 previousPageUrl = pages[currentPageIndex - 1].GetPageHrefValue();
350
351 nextPageText = pages[0].MenuText;
352 nextPageUrl = pages[0].GetPageHrefValue();
353 }
354 else
355 {
356 previousPageText = pages[currentPageIndex - 1].MenuText;
357 previousPageUrl = pages[currentPageIndex - 1].GetPageHrefValue();
358
359 nextPageText = pages[currentPageIndex + 1].MenuText;
360 nextPageUrl = pages[currentPageIndex + 1].GetPageHrefValue();
361 }
362
363 @RenderPreviousNextHtml(previousPageText, previousPageUrl, nextPageText, nextPageUrl)
364 }
365
366 @helper RenderPreviousNextHtml(string previousPageText, string previousPageUrl, string nextPageText, string nextPageUrl)
367 {
368 <div class="text-img-component wrap-md-offset-1-leftright">
369 <div class="side-nav-previous-next-container">
370
371 @if (!string.IsNullOrWhiteSpace(previousPageText))
372 {
373 <a href="@previousPageUrl" class="side-nav-previous-next-items side-nav-previous-item">
374 <div class="side-nav-previous-next-chevron">
375 <i class="fa fa-chevron-left" aria-hidden="true"></i>
376 </div>
377 <div class="side-nav-previous-section">
378 <span class="side-nav-previous-next-title">Previous Section</span>
379 <br />
380 <span>@previousPageText</span>
381 </div>
382 </a>
383 }
384
385 @if (!string.IsNullOrWhiteSpace(nextPageText))
386 {
387 <a href="@nextPageUrl" class="side-nav-previous-next-items side-nav-next-item">
388 <div class="side-nav-next-section">
389 <span class="side-nav-previous-next-title">Next Section</span>
390 <br />
391 <span>@nextPageText</span>
392 </div>
393 <div class="side-nav-previous-next-chevron">
394 <i class="fa fa-chevron-right"></i>
395 </div>
396 </a>
397 }
398 </div>
399 </div>
400 }
401 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
402 @using Dynamicweb.Content.Items;
403 @using PgwSeeds.Extensions.PGWSeedsNZ;
404
405 @*Helper blocks cannot be nested within each other.*@
406
407 @helper LoadSprout(string className = "blue")
408 {
409 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 236.55 65.25">
410 <defs>
411 <style>
412 </style>
413 </defs>
414 <g id="Layer_2" data-name="Layer 2">
415 <g id="Layer_1-2" data-name="Layer 1">
416 <path class="@className" d="M236.55,0H.76C50.88,0,94.64,27.4,115.23,62.92c0,0,3,5.25,6.09,0C141.9,27.4,185.67,0,235.79,0h.76"/>
417 </g>
418 </g>
419 </svg>
420 }
421
422 @using Dynamicweb.Frontend
423
424 @helper RenderBannerItem(ItemViewModel banner, string bannerLink)
425 {
426 var desktopImage = banner.GetFile("DesktopImage")?.Path;
427 var mobilImage = banner.GetFile("HandsetImage")?.Path;
428 var bannerImageAltText = banner.GetString("BannerImageAltText");
429 var colourScheme = string.IsNullOrWhiteSpace(banner.GetString("ColourScheme")) ? "blue" : banner.GetString("ColourScheme").ToLower();
430 var entireBannerClickable = banner.GetBoolean("EntireBannerClickable");
431 var strapLineTop = banner.GetString("StraplineTop");
432 var target = banner.GetBoolean("OpenLinkInNewTab") ? "_blank" : "";
433 var clickable = !entireBannerClickable && !string.IsNullOrEmpty(bannerLink);
434
435 <div class="banner overflow-img-wrap">
436 <img src="/Files/Templates/Designs/SeedsNZ/assets/img/1x1.png" alt="@bannerImageAltText" data-image-desktop="@desktopImage" data-image-handset="@mobilImage" class="img-srcset">
437 <div class="strapline-wrap">
438 <div class="max-width-wrap">
439 <div class="wrap-md-offset-1-leftright @colourScheme">
440 @if (!string.IsNullOrWhiteSpace(strapLineTop))
441 {
442
443 if (clickable)
444 {
445 <a href="@bannerLink" target="@target">
446 @RenderStraplineContent(banner, bannerLink)
447 </a>
448 }
449 else
450 {
451 @RenderStraplineContent(banner, bannerLink)
452 }
453
454 <div class="sprout">
455 @LoadSprout(colourScheme) @*This function call is part of _LoadSprout.cshtml partial. Included in _BannerAndStrapline.cshtml*@
456 </div>
457 }
458 </div>
459 </div>
460 </div>
461 </div>
462 }
463
464 @helper RenderStraplineContent(ItemViewModel banner, string bannerLink)
465 {
466 var strapLineTop = banner.GetString("StraplineTop");
467 var strapLineBottom = banner.GetString("StraplineBottom");
468 var straplineNotice = banner.GetString("StraplineNotice");
469 var colourScheme = string.IsNullOrWhiteSpace(banner.GetString("ColourScheme")) ? "blue" : banner.GetString("ColourScheme").ToLower();
470
471 <div class="strapline-inner-wrap relative" style="padding-bottom: 50px;">
472 <h1 class="first-line truncate-text" data-lines-xs="1" data-lines-sm="1" data-lines-md="1" data-lines-lg="1">@strapLineTop</h1>
473 <h2 class="second-line truncate-text" data-lines-xs="1" data-lines-sm="1" data-lines-md="1" data-lines-lg="1" style="overflow-wrap: break-word;">@strapLineBottom</h2>
474 @if (!string.IsNullOrWhiteSpace(straplineNotice))
475 {
476 <h3 class="notice-line truncate-text" data-lines-xs="1" data-lines-sm="1" data-lines-md="1" data-lines-lg="1" style="overflow-wrap: break-word;">@straplineNotice</h3>
477 }
478 @if (!string.IsNullOrEmpty(bannerLink))
479 {
480 @LinkIcon(colourScheme)
481 }
482
483 </div>
484 }
485
486 @helper LinkIcon(string colourScheme)
487 {
488 <div class="banner-link">
489 <div class="link-icon-wrap">
490 <div class="animate-right">
491 <i class="rounded-icon icon @colourScheme fa fa-angle-right"></i>
492 </div>
493 </div>
494 </div>
495 }
496
497
498 @helper RenderContent(Dynamicweb.Content.Page currentPage, Dynamicweb.Content.Page parentPage, List<Dynamicweb.Content.Page> sideNavPages, ItemList ctaList, int? currentChildPageId)
499 {
500 <div>
501 @inherits Dynamicweb.Rendering.ViewModelTemplate<PageViewModel>
502 @using Dynamicweb.Frontend
503 @{
504 var desktopImage = Model.Item.GetFile("DesktopImage")?.Path;
505 var handsetImage = Model.Item.GetFile("HandsetImage")?.Path;
506 var bannerImageAltText = Model.Item.GetString("BannerImageAltText");
507 var strapLineTop = Model.Item.GetString("StraplineTop");
508 var strapLineBottom = Model.Item.GetString("StraplineBottom");
509 var straplineNotice = Model.Item.GetString("StraplineNotice");
510 var colourScheme = string.IsNullOrWhiteSpace(Model.Item.GetString("ColourScheme")) ? "blue" : Model.Item.GetString("ColourScheme").ToLower();
511 var entireBannerClickable = Model.Item.GetBoolean("EntireBannerClickable");
512 var bannerAndStraplineLink = Model.Item.GetString("BannerLink");
513 var target = Model.Item.GetBoolean("OpenLinkInNewTab") ? "_blank" : "";
514 var haveEntireBannerClickable = !string.IsNullOrEmpty(bannerAndStraplineLink) && entireBannerClickable;
515 var viewModel = Model.Item;
516 }
517
518 @if (!string.IsNullOrWhiteSpace(desktopImage))
519 {
520 <div class="container-fluid banner-wrap">
521 <div class="container-fluid banner-wrap item">
522 @if (haveEntireBannerClickable)
523 {
524 <a href="@bannerAndStraplineLink" target="@target">
525 @RenderBannerItem(viewModel, bannerAndStraplineLink)
526 </a>
527 }
528 else
529 {
530 @RenderBannerItem(viewModel, bannerAndStraplineLink)
531 }
532 </div>
533 </div>
534 }
535
536 </div>
537
538 var titleIcon = Model.Item.GetFile("TitleIcon")?.Path.IconImage();
539 var displayBreadCrumbs = Model.Item.GetBoolean("DisplayBreadCrumb");
540
541 <div class="container">
542 <div class="col-sm-2 hidden-xs hidden-sm side-nav-container">
543 @if (displayBreadCrumbs)
544 {
545 @*Please do not delete the div below, it used for spacing*@
546 <div class="wrap-md-offset-1-leftright">
547 <div class="row breadcrumbs-wrap clearfix">
548 <ol class="breadcrumb clearfix">
549 <li>
550 <a class="active"></a>
551 </li>
552 </ol>
553 </div>
554 </div>
555 }
556 @RenderSideNav(parentPage, sideNavPages, currentChildPageId) @*This function call is part of _SideNav.cshtml partial.*@
557 @RenderCtaList(ctaList) @*This function call is part of _CtaList.cshtml partial.*@
558 </div>
559
560 <div class="col-xs-12 col-md-10 side-nav-main-container">
561 @if (displayBreadCrumbs)
562 {
563 @RenderNavigation(new
564 {
565 id = "breadcrumbs",
566 template = @".\breadcrumb.xslt",
567 expandmode = "Pathonly"
568 })
569 }
570 @{
571 var logoutClass = Model.CurrentUser.ID > 0 ? "logout-wrap" : string.Empty;
572 }
573 <div class="wrap-md-offset-1-leftright @logoutClass">
574 <div class="row">
575 <div class="col-xs-12 col-sm-9 col-md-9 title-component-wrap">
576 <div class="va-middle">
577 <h1 class="title">@Model.Item.GetValue("Title")</h1>
578 @if (!string.IsNullOrWhiteSpace(Model.Item.GetString("Subtitle")))
579 {
580 <h2 class="subtitle">@Model.Item.GetString("Subtitle")</h2>
581 }
582 </div>
583 </div>
584 <div class="col-xs-12 col-sm-3 col-md-3">
585 @if (Model.Item.GetBoolean("Display_Logout") && Model.CurrentUser.ID > 0)
586 {
587 <a href="/Admin/Public/ExtranetLogoff.aspx?redirect=@System.Web.HttpUtility.UrlEncode("/Default.aspx?Id=245")" class="border-link danger pull-right">LOGOUT</a>
588 }
589 <div class="product-logo-wrapper text-right-sm">
590 @if (!string.IsNullOrWhiteSpace(titleIcon))
591 {
592 <img src="@titleIcon" alt="@Model.Item.GetString("TitleIconAltText")">
593 }
594 </div>
595 </div>
596 </div>
597 </div>
598 @RenderMobileSideNav(parentPage, sideNavPages, currentChildPageId, ctaList) @*This function call is part of _SideNav.cshtml partial.*@
599 @Model.Placeholder("main")
600 @RenderPreviousNextPage(currentPage, parentPage) @*This function call is part of _PreviousNextPage.cshtml partial.*@
601 @RenderMobileCtaList(ctaList) @*This function call is part of _CtaList.cshtml partial.*@
602 @Model.Placeholder("CTA")
603 </div>
604 </div>
605 }
606 @RenderContent(currentPage, parentPage, siblingPages, ctaList, currentPageId) @*This function call is part of _MainContent partial.*@
607
608 <!-- Footer -->
609 <footer class="container-fluid contact-sticky-tile">
610 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
611 @using Dynamicweb.Frontend;
612 @using PgwSeeds.Constants.PGWSeedsNZ;
613 @using PgwSeeds.Extensions.PGWSeedsNZ;
614
615 @{
616 var footerColumns = Model.Area.Item.GetItems("Columns") != null ? Model.Area.Item.GetItems("Columns").Take(4) : new List<ItemViewModel>();
617 }
618
619 <div class="max-width-wrap">
620 <!-- duplication for mobile -->
621 <div class="clearfix">
622 <div class="clearfix">
623 <div class="mobile-compact-contact-wrap hidden-md hidden-lg col-xs-12 col-sm-6">
624 <a class="collapsed" data-target="#contact-footer-tile" role="button" data-toggle="collapse" aria-expanded="false" aria-controls="contact-footer-tile">
625 <h4>
626 <span class="greeting">HI!</span> NEED TO GET IN TOUCH?
627 </h4>
628 <img src="/Files/Templates/Designs/SeedsNZ/assets/img/Phone.jpg" maxheight="120"
629 class="img-responsive img-circle" alt="General Contact" maxwidth="120">
630 </a>
631 </div>
632 </div>
633
634 <div class="clearfix">
635 <div class="col-sm-5 pull-right hidden-sm hidden-xs contact-footer-desktop">
636 <div class="contact-tile-outer-wrap">
637 <div class="contact-us-greeting">
638 <div class="contact-us-greeting-inner">
639 <a class="collapsed" data-target="#contact-footer-tile" role="button" data-toggle="collapse" aria-expanded="false" aria-controls="contact-footer-tile">
640 <h4>
641 <span class="greeting">HI!</span> NEED TO GET IN TOUCH?
642 </h4>
643 </a>
644 </div>
645 </div>
646 </div>
647 </div>
648 </div>
649
650
651 <div class="hidden-lg hidden-md collapseable collapse" id="contact-footer-tile">
652 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
653 @using PgwSeeds.Constants.PGWSeedsNZ;
654 @using PgwSeeds.Extensions.PGWSeedsNZ;
655 <div class="contact-tile-outer-wrap">
656 <div class="contact-tile-wrap">
657 <div class="row">
658 <div class="col-xs-4 col-no-right-padding">
659 <img src="/Files/Templates/Designs/SeedsNZ/assets/img/Phone.jpg" maxheight="120" class="img-responsive img-circle" alt="General Contact" maxwidth="120">
660 </div>
661 <div class="col-xs-8">
662 <h4>Contact Us</h4>
663 <p>
664 Sales & General Enquiries<br> Nationwide
665 </p>
666 </div>
667 </div>
668 <ul class="list-inline text-uppercase">
669 <li>
670 <span class="glyphicon glyphicon-earphone"></span>
671 <a href="tel:@Pageview.Area.Item["NZPhoneNumber"]">
672 @Pageview.Area.Item["NZPhoneNumber"]
673 </a>
674 </li>
675 <li>
676 <span class="glyphicon glyphicon-envelope"></span>
677 <a href="mailto:@Pageview.Area.Item["Email"];">
678 Email Me
679 </a>
680 </li>
681
682 </ul>
683 </div>
684 <a class="animate-right" href="Default.aspx?ID=@GetPageIdByNavigationTag(NavigationTags.ContactUs)">
685 <span>Contact your local rep</span>
686 <span class="rounded-icon icon fa fa-angle-right"></span>
687 </a>
688 </div>
689
690
691 </div>
692 </div>
693 <!-- duplication for mobile -->
694 <div class="row">
695 <div class="col-md-6 col-sm-12 link-tiles-wrap">
696 <div class="row footer-links">
697 @foreach (var aColumn in footerColumns)
698 {
699 var subLinks = aColumn.GetItems("Sub_Links");
700 <div class="col-md-3 col-sm-3 col-xs-6">
701 <strong>@aColumn.GetString("Title")</strong>
702 @if (subLinks.Any())
703 {
704 <ul class="list-unstyled">
705 @foreach (var link in subLinks)
706 {
707 var hrefValue = link.GetBoolean("Is_Download_Link") ? link.GetString("Link").GetDownloadPath() : link.GetString("Link");
708 <li>
709 <a href="@hrefValue">@link.GetString("Name")</a>
710 </li>
711 }
712 </ul>
713 }
714 </div>
715 }
716 </div>
717 <div class="row">
718 <div class="col-xs-6 col-md-12">
719 <div class="member-login va-middle hidden-sm hidden-xs">
720
721 <a href="@Pageview.Area.Item["Retail_Login"]" target="_blank" class="btn btn-default">Retail Login</a>
722 </div>
723 </div>
724
725 <div class="member-login va-middle hidden-md hidden-lg col-xs-6">
726
727 @if (Model.CurrentUser.ID == 0)
728 {
729 <a href="Default.aspx?ID=@GetPageIdByNavigationTag(NavigationTags.LoginPage)" class="member-login btn btn-default">Retail Login</a>
730 }
731 else
732 {
733 <a href="Default.aspx?ID=@GetPageIdByNavigationTag(NavigationTags.MemberHome)" class="member-login btn btn-default">Retail Home</a>
734 }
735 </div>
736 </div>
737 </div>
738 <div class="col-sm-5 pull-right hidden-sm hidden-xs">
739 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
740 @using PgwSeeds.Constants.PGWSeedsNZ;
741 @using PgwSeeds.Extensions.PGWSeedsNZ;
742 <div class="contact-tile-outer-wrap">
743 <div class="contact-tile-wrap">
744 <div class="row">
745 <div class="col-xs-4 col-no-right-padding">
746 <img src="/Files/Templates/Designs/SeedsNZ/assets/img/Phone.jpg" maxheight="120" class="img-responsive img-circle" alt="General Contact" maxwidth="120">
747 </div>
748 <div class="col-xs-8">
749 <h4>Contact Us</h4>
750 <p>
751 Sales & General Enquiries<br> Nationwide
752 </p>
753 </div>
754 </div>
755 <ul class="list-inline text-uppercase">
756 <li>
757 <span class="glyphicon glyphicon-earphone"></span>
758 <a href="tel:@Pageview.Area.Item["NZPhoneNumber"]">
759 @Pageview.Area.Item["NZPhoneNumber"]
760 </a>
761 </li>
762 <li>
763 <span class="glyphicon glyphicon-envelope"></span>
764 <a href="mailto:@Pageview.Area.Item["Email"];">
765 Email Me
766 </a>
767 </li>
768
769 </ul>
770 </div>
771 <a class="animate-right" href="Default.aspx?ID=@GetPageIdByNavigationTag(NavigationTags.ContactUs)">
772 <span>Contact your local rep</span>
773 <span class="rounded-icon icon fa fa-angle-right"></span>
774 </a>
775 </div>
776
777
778 </div>
779 </div>
780 </div>
781 </footer>
782 <div class="visible-lg-block visible-md-block visible-sm-block visible-xs-block go-to-top hidden">
783 <div class="triangle"></div>
784 TOP
785 </div>
786 </div>
787
788 <script src="https://code.jquery.com/jquery.min.js"></script>
789 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/jquery.validate.min.js"></script>
790 <!-- Custom handling of unobtrusive validation css classes -->
791 <script src="Files/Templates/Designs/Common/assets/js/validation.custom.js"></script>
792
793 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validation-unobtrusive/3.2.11/jquery.validate.unobtrusive.min.js"></script>
794
795 @Scripts.Render("~/bundles/custom/pgwseedsnz")
796 @RenderSnippet("JavaScriptBottom")
797 </body>
798 </html>