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