Error executing template "Designs/AgricomNZ/_parsed/AgricomNZ_SideNav_Child_Page.parsed.cshtml"
System.TypeInitializationException: The type initializer for 'System.Collections.Generic.EqualityComparer`1' threw an exception. ---> System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Collections.Generic.EqualityComparer`1.CreateComparer()
at System.Collections.Generic.EqualityComparer`1..cctor()
--- End of inner exception stack trace ---
at System.Collections.Generic.EqualityComparer`1.get_Default()
at System.Array.IndexOf[T](T[] array, T value, Int32 startIndex, Int32 count)
at System.Array.IndexOf[T](T[] array, T value)
at System.SZArrayHelper.Contains[T](T value)
at System.Linq.Enumerable.Contains[TSource](IEnumerable`1 source, TSource value)
at Microsoft.CodeAnalysis.CSharp.CSharpDiagnosticFilter.Filter(Diagnostic d, Int32 warningLevelOption, NullableContextOptions nullableOption, ReportDiagnostic generalDiagnosticOption, IDictionary`2 specificDiagnosticOptions)
at Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions.FilterDiagnostic(Diagnostic diagnostic)
at Microsoft.CodeAnalysis.Compilation.FilterAndAppendDiagnostics(DiagnosticBag accumulator, IEnumerable`1 incoming, HashSet`1 exclude)
at Microsoft.CodeAnalysis.Compilation.FilterAndAppendAndFreeDiagnostics(DiagnosticBag accumulator, DiagnosticBag& incoming)
at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(CommonPEModuleBuilder moduleBuilder, Boolean emittingPdb, Boolean emitMetadataOnly, Boolean emitTestCoverageData, DiagnosticBag diagnostics, Predicate`1 filterOpt, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream metadataPEStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, IMethodSymbol debugEntryPoint, Stream sourceLinkStream, IEnumerable`1 embeddedTexts, CompilationTestData testData, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, IMethodSymbol debugEntryPoint, Stream sourceLinkStream, IEnumerable`1 embeddedTexts, Stream metadataPEStream, CancellationToken cancellationToken)
at Microsoft.CodeAnalysis.Compilation.Emit(Stream peStream, Stream pdbStream, Stream xmlDocumentationStream, Stream win32Resources, IEnumerable`1 manifestResources, EmitOptions options, CancellationToken cancellationToken)
at RazorEngine.Roslyn.CSharp.RoslynCompilerServiceBase.CompileType(TypeContext context)
at RazorEngine.Templating.RazorEngineCore.CreateTemplateType(ITemplateSource razorTemplate, Type modelType)
at RazorEngine.Templating.RazorEngineCore.Compile(ITemplateKey key, Type modelType)
at RazorEngine.Templating.RazorEngineService.CompileAndCacheInternal(ITemplateKey key, Type modelType)
at RazorEngine.Templating.RazorEngineService.GetCompiledTemplate(ITemplateKey key, Type modelType, Boolean compileOnCacheMiss)
at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.DynamicWrapperService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @inherits ViewModelTemplate<PageViewModel>
2
3 @using Dynamicweb.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 const string childPageType = "AgricomNZ_SideNav_Child_Page";
176 var currentPageId = PageView.Current().ID;
177 var currentPage = Dynamicweb.Services.Pages.GetPage(currentPageId);
178
179 var parentPage = currentPage.Parent.ItemType == childPageType ? currentPage.Parent.Parent : currentPage.Parent;
180
181 var siblingPages = Dynamicweb.Services.Pages.GetPagesByParentID(parentPage.ID).ToList();
182
183 var ctaListItemId = parentPage.Item["CTA_List"];
184
185 var ctaList = ctaListItemId != null ? ItemList.GetItemListById((int)ctaListItemId) : new ItemList();
186 }
187
188 @using Dynamicweb.Content.Items
189 @using Page = Dynamicweb.Content.Page
190
191 @helper RenderGrandChildren(int pageId, int? currentPageId)
192 {
193 var pages = Dynamicweb.Services.Pages.GetPagesByParentID(pageId).ToList();
194 if (pages.Any())
195 {
196 <ul>
197 @foreach (var page in pages)
198 {
199 <li>
200 @{
201 var pageActiveClass = currentPageId.HasValue && currentPageId == page.ID ? "active-child-page" : "";
202 }
203 <a class="@pageActiveClass" href="@page.GetPageHrefValue()">@page.MenuText</a>
204 </li>
205
206 }
207 </ul>
208 }
209 }
210
211 @helper RenderSideNav(Page parentPage, List<Page> childPages, int? currentChildPageId)
212 {
213 <div class="side-nav-items-container">
214 <a class="side-nav-parent-page-a hidden-xs hidden-sm " href="@parentPage.GetPageHrefValue()">
215 <strong>@parentPage.MenuText</strong>
216 </a>
217
218 <ol class="side-nav-ol">
219 @foreach (var childPage in childPages)
220 {
221 <li>
222 @{
223 var childPageActiveClass = currentChildPageId.HasValue && currentChildPageId == childPage.ID ? "active-child-page" : "";
224 }
225 <a class="@childPageActiveClass" href="@childPage.GetPageHrefValue()">@childPage.MenuText</a>
226 @RenderGrandChildren(childPage.ID, currentChildPageId)
227 </li>
228 }
229 </ol>
230 </div>
231 }
232
233 @helper RenderMobileSideNav(Page parentPage, List<Page> childPages, int? currentChildPageId, ItemList ctaList)
234 {
235 <div class="row max-width-wrap sectionmenu">
236 <div class="hidden-md hidden-lg navbar">
237 <div class="navbar-header">
238
239 <button type="button" class="navbar-toggle navbar" data-toggle="collapse" data-target="#subnavbar-collapse">
240 <div class="text">Sections</div>
241 <div class="icons">
242 <span class="icon-bar"></span>
243 <span class="icon-bar"></span>
244 <span class="icon-bar"></span>
245 </div>
246
247 </button>
248 <div class="navbar-text"> @parentPage.MenuText</div>
249 </div>
250 <div id="subnavbar-collapse" class="navbar-collapse collapse" aria-expanded="false">
251 @RenderSideNav(parentPage, childPages, currentChildPageId)
252 @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. *@
253 </div>
254 </div>
255 </div>
256 }
257
258 @using Dynamicweb.Content.Items
259
260 @helper RenderCtaList(ItemList ctaList)
261 {
262 <div class="side-nav-cta-container">
263
264 @if (ctaList != null)
265 {
266 foreach (var aItem in ctaList.Relations.Take(3))
267 {
268 var typeItem = Item.GetItemById("AgricomNZ_SideNav_ParentPageCTA_ListItem", aItem.Id);
269 typeItem.TryGetValue("Title", out var title);
270 typeItem.TryGetValue("Image", out var image);
271 typeItem.TryGetValue("ImageAltText", out var imageAltText);
272 typeItem.TryGetValue("CircleImage", out var circleImage);
273 typeItem.TryGetValue("Link", out var link);
274 typeItem.TryGetValue("LinkText", out var linkText);
275
276 var circleImageClass = Convert.ToBoolean(circleImage) ? "img-circle circle-image" : null;
277
278 <div class="side-nav-cta-item">
279 <img class="img-responsive @circleImageClass" src="@image" alt="@imageAltText" />
280
281 <h3>
282 <a href="@link">@title</a>
283 </h3>
284
285 <a class="btn" href="@link">@linkText</a>
286 </div>
287 }
288 }
289 </div>
290 }
291
292 @helper RenderMobileCtaList(ItemList ctaList)
293 {
294 <div class="hidden-md hidden-lg">
295 @if (ctaList != null)
296 {
297 foreach (var aItem in ctaList.Relations.Take(3))
298 {
299 var typeItem = Item.GetItemById("AgricomNZ_SideNav_ParentPageCTA_ListItem", aItem.Id);
300 typeItem.TryGetValue("LinkTextMobile", out var linkTextMobile);
301 typeItem.TryGetValue("Link", out var link);
302
303 <a href="@link" class="page-cta-btn btn animate-right side-nav-mobile-cta-item" style="display: block;">
304 <span> @linkTextMobile</span>
305 <i class="rounded-icon icon fa fa-angle-right"></i>
306 </a>
307 }
308 }
309 </div>
310 }
311 @using Page = Dynamicweb.Content.Page
312
313 @helper RenderPreviousNextPage(Page currentPage, Page parentPage)
314 {
315
316 string previousPageText = null;
317 string previousPageUrl = null;
318
319 string nextPageText;
320 string nextPageUrl;
321
322 var pages = new List<Page> { parentPage };
323
324 var childPages = Dynamicweb.Services.Pages.GetPagesByParentID(parentPage.ID).ToList();
325
326 foreach (var childPage in childPages)
327 {
328 pages.Add(childPage);
329 pages.AddRange(Dynamicweb.Services.Pages.GetPagesByParentID(childPage.ID));
330 }
331
332 if (pages.Count == 1) { return; }
333
334 var currentPageIndex = pages.FindIndex(p => p.ID == currentPage.ID);
335
336 if (currentPage.ID == pages.First().ID)
337 {
338 nextPageText = pages[1].MenuText;
339 nextPageUrl = pages[1].GetPageHrefValue();
340 }
341 else if (currentPage.ID == pages.Last().ID)
342 {
343 previousPageText = pages[currentPageIndex - 1].MenuText;
344 previousPageUrl = pages[currentPageIndex - 1].GetPageHrefValue();
345
346 nextPageText = pages[0].MenuText;
347 nextPageUrl = pages[0].GetPageHrefValue();
348 }
349 else
350 {
351 previousPageText = pages[currentPageIndex - 1].MenuText;
352 previousPageUrl = pages[currentPageIndex - 1].GetPageHrefValue();
353
354 nextPageText = pages[currentPageIndex + 1].MenuText;
355 nextPageUrl = pages[currentPageIndex + 1].GetPageHrefValue();
356 }
357
358 @RenderPreviousNextHtml(previousPageText, previousPageUrl, nextPageText, nextPageUrl)
359
360 }
361
362 @helper RenderPreviousNextHtml(string previousPageText, string previousPageUrl, string nextPageText, string nextPageUrl)
363 {
364 <div class="text-img-component wrap-md-offset-1-leftright side-nav-previous-next-container">
365 @if (!string.IsNullOrWhiteSpace(previousPageText))
366 {
367 <div class="col-xs-6 product-downloads-wrap max-width-wrap side-nav-previous-section">
368 <a class="btn btn-default animate-right clearfix" href="@previousPageUrl" title=""@previousPageText"">
369 <span class="side-nav-previous-next-title">Previous Section</span>
370 <br />
371 <span class="side-nav-previous-next-page-name">@previousPageText</span>
372 <span class="download-icon">
373 <span class="rounded-icon icon fa fa-angle-right"></span>
374 </span>
375 </a>
376 </div>
377 }
378
379 @if (!string.IsNullOrWhiteSpace(nextPageText))
380 {
381 <div class="col-xs-6 product-downloads-wrap max-width-wrap side-nav-next-section">
382 <a class="btn btn-default animate-right clearfix" href="@nextPageUrl" title=""@nextPageText"">
383 <span class="side-nav-previous-next-title">Next Section</span>
384 <br />
385 <span class="side-nav-previous-next-page-name">@nextPageText</span>
386 <span class="download-icon">
387 <span class="rounded-icon icon fa fa-angle-right"></span>
388 </span>
389 </a>
390 </div>
391 }
392 </div>
393 }
394 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
395 @using Dynamicweb.Content.Items
396
397
398 @helper RenderContent(Dynamicweb.Content.Page currentPage, Dynamicweb.Content.Page parentPage, List<Dynamicweb.Content.Page> sideNavPages, ItemList ctaList, int? currentChildPageId)
399 {
400 <div>
401 @inherits Dynamicweb.Rendering.ViewModelTemplate<PageViewModel>
402 @using Dynamicweb.Frontend
403 @using PgwSeeds.Extensions.AgricomNZ
404
405 @{
406 var desktopImage = Model.Item.GetFile("Desktop_Image")?.Path;
407 var handsetImage = Model.Item.GetFile("Handset_Image")?.Path;
408 var imageAltText = Model.Item.GetString("Image_Alt_Text");
409 var strapLineTop = Model.Item.GetString("Strapline_Top");
410 var strapLineBottom = Model.Item.GetString("Strapline_Bottom");
411 var smallBannerClass = !Model.Item.GetBoolean("Has_Large_Banner") ? "banner-wrap--small" : "";
412 var leftLinkText = Model.Item.GetString("Left_Link_Text");
413 var leftLink = Model.Item.GetString("Left_Link");
414 var leftLinkTarget = Model.Item.GetBoolean("Left_Link_Open_In_New_Tab") ? "_blank" : "";
415 var rightLinkText = Model.Item.GetString("Right_Link_Text");
416 var rightLink = Model.Item.GetString("Right_Link");
417 var rightLinkTarget = Model.Item.GetBoolean("Right_Link_Open_In_New_Tab") ? "_blank" : "";
418 }
419
420 @if (!string.IsNullOrWhiteSpace(desktopImage))
421 {
422 <div class="container-fluid banner-wrap @smallBannerClass">
423 <div class="banner overflow-img-wrap">
424 <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">
425 @if (!string.IsNullOrWhiteSpace(strapLineTop) || !string.IsNullOrWhiteSpace(strapLineBottom) || !string.IsNullOrWhiteSpace(leftLinkText) || !string.IsNullOrWhiteSpace(rightLinkText))
426 {
427 <div class="strapline-wrap">
428 <div class="max-width-wrap">
429 <div class="strapline-inner-wrap">
430 <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>
431 <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>
432 <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>
433 <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>
434 @if (!string.IsNullOrWhiteSpace(leftLinkText))
435 {
436 <a class="btn btn-default read-more" href="@leftLink" target="@leftLinkTarget">@leftLinkText</a>
437 }
438
439 @if (!string.IsNullOrWhiteSpace(rightLinkText))
440 {
441 <a class="btn btn-default read-more" style="margin-left:20px;" href="@rightLink" target="@rightLinkTarget">@rightLinkText</a>
442 }
443 </div>
444 </div>
445 </div>
446 }
447 </div>
448 </div>
449 }
450
451
452 <div class="side-nav-breadcrumbs">
453 @inherits Dynamicweb.Rendering.ViewModelTemplate<PageViewModel>
454 @using Dynamicweb.Frontend
455
456 @RenderNavigation(new
457 {
458 id = "breadcrumbs",
459 template = "../Navigation/Breadcrumb.xslt",
460 expandmode = "Pathonly"
461 })
462 </div>
463 </div>
464
465 <div class="row max-width-wrap breadcrumbs-wrap clearfix side-nav-container">
466
467 <div class="col-xs-12 col-md-10 side-nav-main-container">
468 @RenderMobileSideNav(parentPage, sideNavPages, currentChildPageId, ctaList) @*This function call is part of _SideNav.cshtml partial.*@
469 @Model.Placeholder("main")
470 @RenderPreviousNextPage(currentPage, parentPage) @*This function call is part of _PreviousNextPage.cshtml partial.*@
471 @RenderMobileCtaList(ctaList) @*This function call is part of _CtaList.cshtml partial.*@
472 </div>
473
474 <div class="col-sm-2 hidden-xs hidden-sm">
475 @RenderSideNav(parentPage, sideNavPages, currentChildPageId) @*This function call is part of _SideNav.cshtml partial.*@
476 @RenderCtaList(ctaList) @*This function call is part of _CtaList.cshtml partial.*@
477 </div>
478 </div>
479
480
481 @Model.Placeholder("CTA")
482 }
483 @RenderContent(currentPage, parentPage, siblingPages, ctaList, currentPageId) @*This function call is part of _MainContent partial.*@
484
485 <!-- Footer -->
486 <footer class="container-fluid">
487 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
488
489 @{
490 var footerColumns = Model.Area.Item.GetItems("Columns");
491 var businessEmail = Model.Area.Item.GetString("Business_Email");
492 var businessPhoneNumber = Model.Area.Item.GetString("Business_Phone_Number");
493 }
494
495
496 <div class="max-width-wrap">
497 <div class="row">
498 <div class="col-md-7 col-sm-12 link-tiles-wrap">
499 <div class="row">
500
501 @foreach (var aColumn in footerColumns)
502 {
503 var subLinks = aColumn.GetItems("Sub_Links");
504 <div class="col-md-3 col-sm-3 col-xs-6">
505 <strong>@aColumn.GetString("Title")</strong>
506 @if (subLinks.Any())
507 {
508 <ul class="list-unstyled">
509 @foreach (var link in subLinks)
510 {
511 var target = link.GetBoolean("Open_Link_In_New_Tab") ? "_blank" : "";
512 <li>
513 <a href="@link.GetString("Link")" target="@target">@link.GetString("Name")</a>
514 </li>
515 }
516 </ul>
517 }
518
519 </div>
520 }
521 </div>
522 </div>
523
524 <div class="col-xs-6 col-sm-5 contact-tile-outer-wrap">
525 <div class="contact-tile-content">
526 <strong>Contact Us</strong>
527 <ul class="list-unstyled">
528 <li class="email"><a href="mailto:@businessEmail"><span class="glyphicon glyphicon-envelope" aria-hidden="true"></span> Email Us</a></li>
529 <li class="phone"><a href="tel:@businessPhoneNumber"><span class="glyphicon glyphicon-earphone" aria-hidden="true"></span> @businessPhoneNumber</a></li>
530 </ul>
531 </div>
532 </div>
533
534 </div>
535 </div>
536 </footer>
537 <div class="visible-lg-block visible-md-block visible-sm-block visible-xs-block go-to-top hidden">
538 <div class="triangle"></div>
539 TOP
540 </div>
541 </div>
542
543 <script src="https://code.jquery.com/jquery.min.js"></script>
544 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/jquery.validate.min.js"></script>
545 <!-- Custom handling of unobtrusive validation css classes -->
546 <script src="Files/Templates/Designs/Common/assets/js/validation.custom.js"></script>
547 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validation-unobtrusive/3.2.11/jquery.validate.unobtrusive.min.js"></script>
548 @Scripts.Render("~/bundles/custom/agricomnz")
549 </body>
550 </html>