Error executing template "Designs/AgricomNZ/_parsed/AgricomNZ_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.Frontend;
4 @using Dynamicweb.Rendering;
5 @using System.Configuration
6 @using System.Web;
7 @using System.Web.Optimization;
8 @{
9 var tagManagerCode = Model.Area.Item.GetString("Google_TagManager_Code");
10 var siteVerificationKey = Model.Area.Item.GetString("Google_Site_Verification_Key");
11 }
12
13 <!DOCTYPE html>
14 <html>
15 <head>
16 @if (tagManagerCode != null)
17 {
18 <!-- Google Tag Manager -->
19 <script>
20 (function (w, d, s, l, i) {
21 w[l] = w[l] || []; w[l].push({
22 'gtm.start':
23 new Date().getTime(), event: 'gtm.js'
24 }); var f = d.getElementsByTagName(s)[0],
25 j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
26 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
27 })(window, document, 'script', 'dataLayer', '@tagManagerCode');
28 </script>
29 }
30 <script type="text/javascript">
31 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 }(
32 {
33 instrumentationKey: '@ConfigurationManager.AppSettings["aiinstrumentationKey"]',
34 disableCorrelationHeaders: false
35 }
36 );
37 window.appInsights = aisdk;
38 window.appInsights.queue.push(function () {
39 var serverId = "@HttpContext.Current.GetRequestTelemetry().Context.Operation.Id";
40 appInsights.properties.context.telemetryTrace.traceID = serverId;
41
42 });
43 aisdk.trackPageView();
44 </script>
45 <meta charset="utf-8" />
46 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
47 @Model.MetaTags
48 <title>@Model.Title</title>
49
50 <link rel="apple-touch-icon" sizes="57x57" href="/Files/Templates/Designs/AgricomNZ/assets/favicon/apple-touch-icon-57x57.png" />
51 <link rel="apple-touch-icon" sizes="60x60" href="/Files/Templates/Designs/AgricomNZ/assets/favicon/apple-touch-icon-60x60.png" />
52 <link rel="apple-touch-icon" sizes="72x72" href="/Files/Templates/Designs/AgricomNZ/assets/favicon/apple-touch-icon-72x72.png" />
53 <link rel="apple-touch-icon" sizes="76x76" href="/Files/Templates/Designs/AgricomNZ/assets/favicon/apple-touch-icon-76x76.png" />
54 <link rel="apple-touch-icon" sizes="114x114" href="/Files/Templates/Designs/AgricomNZ/assets/favicon/apple-touch-icon-114x114.png" />
55 <link rel="apple-touch-icon" sizes="120x120" href="/Files/Templates/Designs/AgricomNZ/assets/favicon/apple-touch-icon-120x120.png" />
56 <link rel="icon" type="image/png" sizes="32x32" href="/Files/Templates/Designs/AgricomNZ/assets/favicon/favicon-32x32.png" />
57 <link rel="icon" type="image/png" sizes="96x96" href="/Files/Templates/Designs/AgricomNZ/assets/favicon/favicon-96x96.png" />
58 <link rel="icon" type="image/png" sizes="16x16" href="/Files/Templates/Designs/AgricomNZ/assets/favicon/favicon-16x16.png" />
59 <link rel="icon" href="/Files/Templates/Designs/AgricomNZ/assets/favicon/favicon.ico" />
60
61 <!-- FontAwesome -->
62 <script src="https://use.fontawesome.com/6326434619.js"></script>
63
64 <!-- TypeKit -->
65 <script src="https://use.typekit.net/oel8lyn.js"></script>
66 <script>try { Typekit.load({ async: false }); } catch (e) { }</script>
67
68 @Styles.Render("~/Content/custom/agricomnz")
69
70
71 <!-- Facebook Pixel Code -->
72 <script>
73 !function (f, b, e, v, n, t, s) {
74 if (f.fbq) return; n = f.fbq = function () {
75 n.callMethod ?
76 n.callMethod.apply(n, arguments) : n.queue.push(arguments)
77 };
78 if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0';
79 n.queue = []; t = b.createElement(e); t.async = !0;
80 t.src = v; s = b.getElementsByTagName(e)[0];
81 s.parentNode.insertBefore(t, s)
82 }(window, document, 'script',
83 'https://connect.facebook.net/en_US/fbevents.js');
84
85 fbq('init', '166905331244873');
86 fbq('track', 'PageView');
87 </script>
88 <noscript>
89 <img height="1" width="1" style="display: none" src="https://www.facebook.com/tr?id=166905331244873&ev=PageView&noscript=1" />
90 </noscript>
91 <!-- End Facebook Pixel Code -->
92 <!-- Google Search Console Code -->
93 <meta name="google-site-verification" content="@siteVerificationKey" />
94 <!-- End Google Search Console Code -->
95 </head>
96 <body>
97
98 @if (tagManagerCode != null)
99 {
100 <!-- Google Tag Manager (no script) -->
101 <noscript>
102 <iframe src="https://www.googletagmanager.com/ns.html?id=@tagManagerCode"
103 height="0" width="0" style="display:none;visibility:hidden"></iframe>
104 </noscript>
105 }
106
107 <div class="layout__main wrap">
108 @{
109 var searchPage = GetPageIdByNavigationTag("Search");
110 }
111
112
113 <header class="container-fluid">
114 <div class="max-width-wrap">
115 <div>
116 <nav class="navbar" role="navigation">
117 <div class="navbar-header">
118 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#main-navbar-collapse">
119 <span class="icon-bar"></span>
120 <span class="icon-bar"></span>
121 <span class="icon-bar"></span>
122 </button>
123 <a href="/" id="logo" title="Back to homepage">
124 <img class="img-responsive" src="~/Files/Templates/Designs/AgricomNZ/assets/img/logo.png" alt="Agricom NZ Logo">
125 </a>
126 </div>
127
128 <div id="main-navbar-collapse" class="navbar-collapse collapse">
129 <ul class="nav navbar-nav pull-right-md" id="navbar">
130 @RenderNavigation(new
131 {
132 template = "navbar.xslt",
133 expandmode = "All",
134 endlevel = 3
135 })
136 </ul>
137
138 <div class="search-btn-wrap">
139 <a data-target="#search-wrapper"
140 data-toggle="collapse"
141 aria-expanded="false"
142 aria-controls="search-wrapper"
143 role="button">
144 <span class="fa fa-search hidden-xs hidden-sm"></span>
145 <span class="search-text hidden-md hidden-lg">Search</span>
146 </a>
147 </div>
148 </div>
149 </nav>
150 </div>
151 </div>
152 <div class="row collapse" id="search-wrapper">
153 <div class="max-width-wrap">
154 <div class="form-search-wrap">
155 <form method="get" action="Default.aspx" name="" novalidate="novalidate">
156 <input type="hidden" name="ID" value="@searchPage" />
157 <input type="search" placeholder="Enter Keyword to Search" name="q">
158 <submit class="animate-right" role="button">
159 <span class="rounded-icon icon fa fa-angle-right"></span>
160 </submit>
161 </form>
162 </div>
163 </div>
164 </div>
165 </header>
166
167 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
168 @using Dynamicweb.Content.Items
169 @using Dynamicweb.Frontend
170
171 @Title("Default page template")
172
173
174 @{
175 var currentPageId = PageView.Current().ID;
176 var currentPage = Dynamicweb.Services.Pages.GetPage(currentPageId);
177
178 var childPages = Dynamicweb.Services.Pages.GetPagesByParentID(currentPageId).ToList();
179
180 var ctaListItemId = currentPage.Item["CTA_List"];
181 var ctaList = ctaListItemId != null ? ItemList.GetItemListById((int)ctaListItemId) : new ItemList();
182 }
183
184 @using Dynamicweb.Content.Items
185 @using Page = Dynamicweb.Content.Page
186
187 @helper RenderGrandChildren(int pageId, int? currentPageId)
188 {
189 var pages = Dynamicweb.Services.Pages.GetPagesByParentID(pageId).ToList();
190 if (pages.Any())
191 {
192 <ul>
193 @foreach (var page in pages)
194 {
195 <li>
196 @{
197 var pageActiveClass = currentPageId.HasValue && currentPageId == page.ID ? "active-child-page" : "";
198 }
199 <a class="@pageActiveClass" href="@page.GetPageHrefValue()">@page.MenuText</a>
200 </li>
201
202 }
203 </ul>
204 }
205 }
206
207 @helper RenderSideNav(Page parentPage, List<Page> childPages, int? currentChildPageId)
208 {
209 <div class="side-nav-items-container">
210 <a class="side-nav-parent-page-a hidden-xs hidden-sm " href="@parentPage.GetPageHrefValue()">
211 <strong>@parentPage.MenuText</strong>
212 </a>
213
214 <ol class="side-nav-ol">
215 @foreach (var childPage in childPages)
216 {
217 <li>
218 @{
219 var childPageActiveClass = currentChildPageId.HasValue && currentChildPageId == childPage.ID ? "active-child-page" : "";
220 }
221 <a class="@childPageActiveClass" href="@childPage.GetPageHrefValue()">@childPage.MenuText</a>
222 @RenderGrandChildren(childPage.ID, currentChildPageId)
223 </li>
224 }
225 </ol>
226 </div>
227 }
228
229 @helper RenderMobileSideNav(Page parentPage, List<Page> childPages, int? currentChildPageId, ItemList ctaList)
230 {
231 <div class="row max-width-wrap sectionmenu">
232 <div class="hidden-md hidden-lg navbar">
233 <div class="navbar-header">
234
235 <button type="button" class="navbar-toggle navbar" data-toggle="collapse" data-target="#subnavbar-collapse">
236 <div class="text">Sections</div>
237 <div class="icons">
238 <span class="icon-bar"></span>
239 <span class="icon-bar"></span>
240 <span class="icon-bar"></span>
241 </div>
242
243 </button>
244 <div class="navbar-text"> @parentPage.MenuText</div>
245 </div>
246 <div id="subnavbar-collapse" class="navbar-collapse collapse" aria-expanded="false">
247 @RenderSideNav(parentPage, childPages, currentChildPageId)
248 @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. *@
249 </div>
250 </div>
251 </div>
252 }
253
254 @using Dynamicweb.Content.Items
255
256 @helper RenderCtaList(ItemList ctaList)
257 {
258 <div class="side-nav-cta-container">
259
260 @if (ctaList != null)
261 {
262 foreach (var aItem in ctaList.Relations.Take(3))
263 {
264 var typeItem = Item.GetItemById("AgricomNZ_SideNav_ParentPageCTA_ListItem", aItem.Id);
265 typeItem.TryGetValue("Title", out var title);
266 typeItem.TryGetValue("Image", out var image);
267 typeItem.TryGetValue("ImageAltText", out var imageAltText);
268 typeItem.TryGetValue("CircleImage", out var circleImage);
269 typeItem.TryGetValue("Link", out var link);
270 typeItem.TryGetValue("LinkText", out var linkText);
271
272 var circleImageClass = Convert.ToBoolean(circleImage) ? "img-circle circle-image" : null;
273
274 <div class="side-nav-cta-item">
275 <img class="img-responsive @circleImageClass" src="@image" alt="@imageAltText" />
276
277 <h3>
278 <a href="@link">@title</a>
279 </h3>
280
281 <a class="btn" href="@link">@linkText</a>
282 </div>
283 }
284 }
285 </div>
286 }
287
288 @helper RenderMobileCtaList(ItemList ctaList)
289 {
290 <div class="hidden-md hidden-lg">
291 @if (ctaList != null)
292 {
293 foreach (var aItem in ctaList.Relations.Take(3))
294 {
295 var typeItem = Item.GetItemById("AgricomNZ_SideNav_ParentPageCTA_ListItem", aItem.Id);
296 typeItem.TryGetValue("LinkTextMobile", out var linkTextMobile);
297 typeItem.TryGetValue("Link", out var link);
298
299 <a href="@link" class="page-cta-btn btn animate-right side-nav-mobile-cta-item" style="display: block;">
300 <span> @linkTextMobile</span>
301 <i class="rounded-icon icon fa fa-angle-right"></i>
302 </a>
303 }
304 }
305 </div>
306 }
307 @using Page = Dynamicweb.Content.Page
308
309 @helper RenderPreviousNextPage(Page currentPage, Page parentPage)
310 {
311
312 string previousPageText = null;
313 string previousPageUrl = null;
314
315 string nextPageText;
316 string nextPageUrl;
317
318 var pages = new List<Page> { parentPage };
319
320 var childPages = Dynamicweb.Services.Pages.GetPagesByParentID(parentPage.ID).ToList();
321
322 foreach (var childPage in childPages)
323 {
324 pages.Add(childPage);
325 pages.AddRange(Dynamicweb.Services.Pages.GetPagesByParentID(childPage.ID));
326 }
327
328 if (pages.Count == 1) { return; }
329
330 var currentPageIndex = pages.FindIndex(p => p.ID == currentPage.ID);
331
332 if (currentPage.ID == pages.First().ID)
333 {
334 nextPageText = pages[1].MenuText;
335 nextPageUrl = pages[1].GetPageHrefValue();
336 }
337 else if (currentPage.ID == pages.Last().ID)
338 {
339 previousPageText = pages[currentPageIndex - 1].MenuText;
340 previousPageUrl = pages[currentPageIndex - 1].GetPageHrefValue();
341
342 nextPageText = pages[0].MenuText;
343 nextPageUrl = pages[0].GetPageHrefValue();
344 }
345 else
346 {
347 previousPageText = pages[currentPageIndex - 1].MenuText;
348 previousPageUrl = pages[currentPageIndex - 1].GetPageHrefValue();
349
350 nextPageText = pages[currentPageIndex + 1].MenuText;
351 nextPageUrl = pages[currentPageIndex + 1].GetPageHrefValue();
352 }
353
354 @RenderPreviousNextHtml(previousPageText, previousPageUrl, nextPageText, nextPageUrl)
355
356 }
357
358 @helper RenderPreviousNextHtml(string previousPageText, string previousPageUrl, string nextPageText, string nextPageUrl)
359 {
360 <div class="text-img-component wrap-md-offset-1-leftright side-nav-previous-next-container">
361 @if (!string.IsNullOrWhiteSpace(previousPageText))
362 {
363 <div class="col-xs-6 product-downloads-wrap max-width-wrap side-nav-previous-section">
364 <a class="btn btn-default animate-right clearfix" href="@previousPageUrl" title=""@previousPageText"">
365 <span class="side-nav-previous-next-title">Previous Section</span>
366 <br />
367 <span class="side-nav-previous-next-page-name">@previousPageText</span>
368 <span class="download-icon">
369 <span class="rounded-icon icon fa fa-angle-right"></span>
370 </span>
371 </a>
372 </div>
373 }
374
375 @if (!string.IsNullOrWhiteSpace(nextPageText))
376 {
377 <div class="col-xs-6 product-downloads-wrap max-width-wrap side-nav-next-section">
378 <a class="btn btn-default animate-right clearfix" href="@nextPageUrl" title=""@nextPageText"">
379 <span class="side-nav-previous-next-title">Next Section</span>
380 <br />
381 <span class="side-nav-previous-next-page-name">@nextPageText</span>
382 <span class="download-icon">
383 <span class="rounded-icon icon fa fa-angle-right"></span>
384 </span>
385 </a>
386 </div>
387 }
388 </div>
389 }
390 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
391 @using Dynamicweb.Content.Items
392
393
394 @helper RenderContent(Dynamicweb.Content.Page currentPage, Dynamicweb.Content.Page parentPage, List<Dynamicweb.Content.Page> sideNavPages, ItemList ctaList, int? currentChildPageId)
395 {
396 <div>
397 @inherits Dynamicweb.Rendering.ViewModelTemplate<PageViewModel>
398 @using Dynamicweb.Frontend
399 @using PgwSeeds.Extensions.AgricomNZ
400
401 @{
402 var desktopImage = Model.Item.GetFile("Desktop_Image")?.Path;
403 var handsetImage = Model.Item.GetFile("Handset_Image")?.Path;
404 var imageAltText = Model.Item.GetString("Image_Alt_Text");
405 var strapLineTop = Model.Item.GetString("Strapline_Top");
406 var strapLineBottom = Model.Item.GetString("Strapline_Bottom");
407 var smallBannerClass = !Model.Item.GetBoolean("Has_Large_Banner") ? "banner-wrap--small" : "";
408 var leftLinkText = Model.Item.GetString("Left_Link_Text");
409 var leftLink = Model.Item.GetString("Left_Link");
410 var leftLinkTarget = Model.Item.GetBoolean("Left_Link_Open_In_New_Tab") ? "_blank" : "";
411 var rightLinkText = Model.Item.GetString("Right_Link_Text");
412 var rightLink = Model.Item.GetString("Right_Link");
413 var rightLinkTarget = Model.Item.GetBoolean("Right_Link_Open_In_New_Tab") ? "_blank" : "";
414 }
415
416 @if (!string.IsNullOrWhiteSpace(desktopImage))
417 {
418 <div class="container-fluid banner-wrap @smallBannerClass">
419 <div class="banner overflow-img-wrap">
420 <img src="@desktopImage" alt="@imageAltText" data-image-desktop="@desktopImage.GetDownloadPathByWidth(width:1920, compression:90)" data-image-handset="@handsetImage.GetDownloadPathByWidth(width:1000, compression:90)" class="img-srcset">
421 @if (!string.IsNullOrWhiteSpace(strapLineTop) || !string.IsNullOrWhiteSpace(strapLineBottom) || !string.IsNullOrWhiteSpace(leftLinkText) || !string.IsNullOrWhiteSpace(rightLinkText))
422 {
423 <div class="strapline-wrap">
424 <div class="max-width-wrap">
425 <div class="strapline-inner-wrap">
426 <h1 class="first-line truncate-text hidden-sm hidden-xs" data-lines-xs="1" data-lines-sm="1" data-lines-md="1" data-lines-lg="1" style="overflow-wrap: break-word;">@strapLineTop</h1>
427 <h2 class="second-line truncate-text hidden-sm hidden-xs" data-lines-xs="2" data-lines-sm="2" data-lines-md="2" data-lines-lg="2" style="overflow-wrap: break-word;">@strapLineBottom</h2>
428 <h1 class="first-line truncate-text visible-xs visible-sm" data-lines-xs="2" data-lines-sm="2" data-lines-md="2" data-lines-lg="2" style="overflow-wrap: break-word;">@strapLineTop</h1>
429 <h2 class="second-line truncate-text visible-xs visible-sm" data-lines-xs="2" data-lines-sm="2" data-lines-md="2" data-lines-lg="2" style="overflow-wrap: break-word;">@strapLineBottom</h2>
430 @if (!string.IsNullOrWhiteSpace(leftLinkText))
431 {
432 <a class="btn btn-default read-more" href="@leftLink" target="@leftLinkTarget">@leftLinkText</a>
433 }
434
435 @if (!string.IsNullOrWhiteSpace(rightLinkText))
436 {
437 <a class="btn btn-default read-more" style="margin-left:20px;" href="@rightLink" target="@rightLinkTarget">@rightLinkText</a>
438 }
439 </div>
440 </div>
441 </div>
442 }
443 </div>
444 </div>
445 }
446
447
448 <div class="side-nav-breadcrumbs">
449 @inherits Dynamicweb.Rendering.ViewModelTemplate<PageViewModel>
450 @using Dynamicweb.Frontend
451
452 @RenderNavigation(new
453 {
454 id = "breadcrumbs",
455 template = "../Navigation/Breadcrumb.xslt",
456 expandmode = "Pathonly"
457 })
458 </div>
459 </div>
460
461 <div class="row max-width-wrap breadcrumbs-wrap clearfix side-nav-container">
462
463 <div class="col-xs-12 col-md-10 side-nav-main-container">
464 @RenderMobileSideNav(parentPage, sideNavPages, currentChildPageId, ctaList) @*This function call is part of _SideNav.cshtml partial.*@
465 @Model.Placeholder("main")
466 @RenderPreviousNextPage(currentPage, parentPage) @*This function call is part of _PreviousNextPage.cshtml partial.*@
467 @RenderMobileCtaList(ctaList) @*This function call is part of _CtaList.cshtml partial.*@
468 </div>
469
470 <div class="col-sm-2 hidden-xs hidden-sm">
471 @RenderSideNav(parentPage, sideNavPages, currentChildPageId) @*This function call is part of _SideNav.cshtml partial.*@
472 @RenderCtaList(ctaList) @*This function call is part of _CtaList.cshtml partial.*@
473 </div>
474 </div>
475
476
477 @Model.Placeholder("CTA")
478 }
479 @RenderContent(currentPage, currentPage, childPages, ctaList, null) @*This function call is part of _MainContent partial.*@
480
481 <!-- Footer -->
482 <footer class="container-fluid">
483 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
484
485 @{
486 var footerColumns = Model.Area.Item.GetItems("Columns");
487 var businessEmail = Model.Area.Item.GetString("Business_Email");
488 var businessPhoneNumber = Model.Area.Item.GetString("Business_Phone_Number");
489 }
490
491
492 <div class="max-width-wrap">
493 <div class="row">
494 <div class="col-md-7 col-sm-12 link-tiles-wrap">
495 <div class="row">
496
497 @foreach (var aColumn in footerColumns)
498 {
499 var subLinks = aColumn.GetItems("Sub_Links");
500 <div class="col-md-3 col-sm-3 col-xs-6">
501 <strong>@aColumn.GetString("Title")</strong>
502 @if (subLinks.Any())
503 {
504 <ul class="list-unstyled">
505 @foreach (var link in subLinks)
506 {
507 var target = link.GetBoolean("Open_Link_In_New_Tab") ? "_blank" : "";
508 <li>
509 <a href="@link.GetString("Link")" target="@target">@link.GetString("Name")</a>
510 </li>
511 }
512 </ul>
513 }
514
515 </div>
516 }
517 </div>
518 </div>
519
520 <div class="col-xs-6 col-sm-5 contact-tile-outer-wrap">
521 <div class="contact-tile-content">
522 <strong>Contact Us</strong>
523 <ul class="list-unstyled">
524 <li class="email"><a href="mailto:@businessEmail"><span class="glyphicon glyphicon-envelope" aria-hidden="true"></span> Email Us</a></li>
525 <li class="phone"><a href="tel:@businessPhoneNumber"><span class="glyphicon glyphicon-earphone" aria-hidden="true"></span> @businessPhoneNumber</a></li>
526 </ul>
527 </div>
528 </div>
529
530 </div>
531 </div>
532 </footer>
533 <div class="visible-lg-block visible-md-block visible-sm-block visible-xs-block go-to-top hidden">
534 <div class="triangle"></div>
535 TOP
536 </div>
537 </div>
538
539 <script src="https://code.jquery.com/jquery.min.js"></script>
540 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/jquery.validate.min.js"></script>
541 <!-- Custom handling of unobtrusive validation css classes -->
542 <script src="Files/Templates/Designs/Common/assets/js/validation.custom.js"></script>
543 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validation-unobtrusive/3.2.11/jquery.validate.unobtrusive.min.js"></script>
544 @Scripts.Render("~/bundles/custom/agricomnz")
545 </body>
546 </html>