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