Error executing template "Designs/Condition/_parsed/AccommodationPageLinker.parsed.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_d3d0ea7ec90644a3bcb6a78fa993df61.Execute() in D:\Websites\nstgroup.co.uk\Live\Files\Templates\Designs\Condition\_parsed\AccommodationPageLinker.parsed.cshtml:line 720
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2 @using Dynamicweb 3 @using Dynamicweb.Content 4 @using NstWebsite 5 @using System.Web.Optimization 6 <!DOCTYPE html> 7 <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> 8 <!--[if IE 7]> <html class="no-js ie7 lt-ie9 lt-ie8"> <![endif]--> 9 <!--[if IE 8]> <html class="no-js ie8 lt-ie9"> <![endif]--> 10 <!--[if IE 9]> <html class="no-js ie9"> <![endif]--> 11 <!--[if gt IE 9]> <html class="modern-browser no-js"><![endif]--> 12 @{ 13 bool social = true; 14 var areaId = (int)GetValue("DwAreaID"); 15 string loadingImage = "/Files/Images/Loading/NST_loading.gif"; 16 string logoAltText = "NST"; 17 var telNumber = GetString("Item.Area.Telephone"); 18 var telSEOAK = GetString("Item.Area.TelephoneSeoAccountId"); 19 var telSEOCL = GetString("Item.Area.TelephoneSeoPassword"); 20 var facebookPixelId = GetString("Item.Area.FacebookPixelId"); 21 var mobileRequestQuoteText = "Request quote"; 22 23 var twitterUN = GetString("Item.Area.TwitterAcc"); 24 var facebookUN = GetString("Item.Area.FacebookAcc"); 25 var flickrUN = GetString("Item.Area.FlickrAcc"); 26 var youtubeUN = GetString("Item.Area.YoutubeAcc"); 27 var instagramUN = GetString("Item.Area.InstagramAcc"); 28 var snapchatUN = GetString("Item.Area.SnapchatAcc"); 29 var tumblrUN = GetString("Item.Area.TumblrAcc"); 30 31 if (areaId == 2) 32 { 33 loadingImage = "/Files/Images/Loading/NSTIE_loading.gif"; 34 } 35 else if (areaId == 3) 36 { 37 loadingImage = "/Files/Images/Loading/Studylink_loading.gif"; 38 logoAltText = "StudyLink Tours"; 39 } 40 else if (areaId == 4) 41 { 42 loadingImage = "/Files/Images/Loading/EST_loading.gif"; 43 logoAltText = "European Study Tours"; 44 mobileRequestQuoteText = "REQUEST QUOTE"; 45 } 46 var brandLogoSmall = GetString("Item.Area.BrandLogoSmall"); 47 var brandNameSmall = GetString("Item.Area.TitleBrand"); 48 var enableChat = GetBoolean("Item.Area.EnableChat"); 49 var ChatGuid = GetString("Item.Area.ChatGuid"); 50 var chatTriggerPhrase = GetString("Item.Area.ChatTriggerPhrase"); 51 var OneTrustUrl = GetString("Item.Area.OneTrustScriptUrl"); 52 var OneTrustDataDomainScript = GetString("Item.Area.OneTrustDataDomainScript"); 53 var OneTrustAutoBlockScript = GetString("Item.Area.OneTrustAutoBlockScript"); 54 var GoogleTagManagerId = GetString("Item.Area.GoogleTagManagerId"); 55 56 //Put any details we have on the page into the request quote URL 57 //var quoteDetails = string.Format("/request-quote?Country={0}&Destination={1}&Subject={2}", countryEnq, "", ""); 58 59 FeefoInformation feefoInformation = null; 60 if (!string.IsNullOrWhiteSpace(GetString("Item.Area.FeefoApi")) && !string.IsNullOrWhiteSpace(GetString("Item.Area.FeefoImage"))) 61 { 62 feefoInformation = new FeefoInformation(GetString("Item.Area.FeefoApi")); 63 } 64 65 } 66 @helper GetOptimisedImage(string imgName) 67 { 68 //Banner image 69 string imgFormat = "webp"; 70 int imgHeight = 650; 71 int imgCompression = 75; 72 int imgQuality = 85; 73 bool doNotUpscale = true; 74 string imgPath = string.Empty; 75 if (!string.IsNullOrEmpty(imgName)) 76 { 77 imgPath = string.Format("/Admin/Public/GetImage.ashx?Image={0}&Crop=0&Format={1}&Height={2}&Compression={3}&Quality={5}&DoNotUpscale={4}", 78 imgName.Replace("&","%26"), imgFormat, imgHeight.ToString(), imgCompression.ToString(), doNotUpscale.ToString(), imgQuality); 79 } 80 @imgPath 81 } 82 <html class="modern-browser no-js" lang="en"> 83 <head> 84 <title> @GetValue("Title") | @GetValue("Item.Area.TitleBrand")</title> 85 @GetValue("MetaTags") 86 @GetValue("CopyRightNotice") 87 88 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 89 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 90 91 <script src='@Scripts.Url("~/bundles/jquery")'></script> 92 <script src='@Scripts.Url("~/bundles/slick")'></script> 93 <script src='@Scripts.Url("~/bundles/modernizr")'></script> 94 @if (!string.IsNullOrWhiteSpace(OneTrustUrl) && !string.IsNullOrWhiteSpace(OneTrustDataDomainScript)) 95 { 96 <!-- OneTrust Cookies Consent Notice start --> 97 if (!string.IsNullOrWhiteSpace(OneTrustAutoBlockScript)) 98 { 99 <script type="text/javascript" src="@OneTrustAutoBlockScript"></script> 100 } 101 <script src="@OneTrustUrl" type="text/javascript" charset="UTF-8" data-domain-script="@OneTrustDataDomainScript"></script> 102 <script type="text/javascript"> 103 104 function OptanonWrapper() { 105 // Get initial OnetrustActiveGroups ids 106 if (typeof OptanonWrapperCount == "undefined") { 107 otGetInitialGrps(); 108 } 109 110 //Delete cookies 111 otDeleteCookie(otIniGrps); 112 113 // Assign OnetrustActiveGroups to custom variable 114 function otGetInitialGrps() { 115 OptanonWrapperCount = ''; 116 otIniGrps = OnetrustActiveGroups; 117 // console.log("otGetInitialGrps", otIniGrps) 118 } 119 120 function otDeleteCookie(iniOptGrpId) { 121 var otDomainGrps = JSON.parse(JSON.stringify(Optanon.GetDomainData().Groups)); 122 var otDeletedGrpIds = otGetInactiveId(iniOptGrpId, OnetrustActiveGroups); 123 if (otDeletedGrpIds.length != 0 && otDomainGrps.length != 0) { 124 for (var i = 0; i < otDomainGrps.length; i++) { 125 //Check if CustomGroupId matches 126 if (otDomainGrps[i]['CustomGroupId'] != '' && otDeletedGrpIds.includes(otDomainGrps[i]['CustomGroupId'])) { 127 for (var j = 0; j < otDomainGrps[i]['Cookies'].length; j++) { 128 // console.log("otDeleteCookie",otDomainGrps[i]['Cookies'][j]['Name']) 129 //Delete cookie 130 eraseCookie(otDomainGrps[i]['Cookies'][j]['Name']); 131 } 132 } 133 134 //Check if Hostid matches 135 if (otDomainGrps[i]['Hosts'].length != 0) { 136 for (var j = 0; j < otDomainGrps[i]['Hosts'].length; j++) { 137 //Check if HostId presents in the deleted list and cookie array is not blank 138 if (otDeletedGrpIds.includes(otDomainGrps[i]['Hosts'][j]['HostId']) && otDomainGrps[i]['Hosts'][j]['Cookies'].length != 0) { 139 for (var k = 0; k < otDomainGrps[i]['Hosts'][j]['Cookies'].length; k++) { 140 //Delete cookie 141 eraseCookie(otDomainGrps[i]['Hosts'][j]['Cookies'][k]['Name']); 142 } 143 } 144 } 145 } 146 147 } 148 } 149 otGetInitialGrps(); //Reassign new group ids 150 } 151 152 //Get inactive ids 153 function otGetInactiveId(customIniId, otActiveGrp) { 154 //Initial OnetrustActiveGroups 155 // console.log("otGetInactiveId",customIniId) 156 customIniId = customIniId.split(","); 157 customIniId = customIniId.filter(Boolean); 158 159 //After action OnetrustActiveGroups 160 otActiveGrp = otActiveGrp.split(","); 161 otActiveGrp = otActiveGrp.filter(Boolean); 162 163 var result = []; 164 for (var i = 0; i < customIniId.length; i++) { 165 if (otActiveGrp.indexOf(customIniId[i]) <= -1) { 166 result.push(customIniId[i]); 167 } 168 } 169 return result; 170 } 171 172 //Delete cookie 173 function eraseCookie(name) { 174 //Delete root path cookies 175 domainName = window.location.hostname; 176 document.cookie = name + '=; Max-Age=-99999999; Path=/;Domain=' + domainName; 177 document.cookie = name + '=; Max-Age=-99999999; Path=/;'; 178 179 //Delete LSO incase LSO being used, cna be commented out. 180 localStorage.removeItem(name); 181 182 //Check for the current path of the page 183 pathArray = window.location.pathname.split('/'); 184 //Loop through path hierarchy and delete potential cookies at each path. 185 for (var i = 0; i < pathArray.length; i++) { 186 if (pathArray[i]) { 187 //Build the path string from the Path Array e.g /site/login 188 var currentPath = pathArray.slice(0, i + 1).join('/'); 189 document.cookie = name + '=; Max-Age=-99999999; Path=' + currentPath + ';Domain=' + domainName; 190 document.cookie = name + '=; Max-Age=-99999999; Path=' + currentPath + ';'; 191 //Maybe path has a trailing slash! 192 document.cookie = name + '=; Max-Age=-99999999; Path=' + currentPath + '/;Domain=' + domainName; 193 document.cookie = name + '=; Max-Age=-99999999; Path=' + currentPath + '/;'; 194 195 196 } 197 } 198 199 } 200 201 if (!OptanonActiveGroups.includes('C0004') || !OptanonActiveGroups.includes('C0003')) { 202 let iframes = document.getElementsByTagName("iframe"); 203 204 for (var i = 0; i < iframes.length; i++) { 205 iframes[i].classList.remove("optanon-category-C0004"); 206 207 iframes[i].classList.remove("optanon-category-C0003"); 208 let src = iframes[i].getAttribute('data-src'); 209 if (src && src.includes("youtube.com")) { 210 $(iframes[i]).removeAttr('data-src'); 211 $(iframes[i]).attr('src', src.replace('youtube.com', 'youtube-nocookie.com')); 212 213 } 214 } 215 } 216 } 217 218 219 220 </script> 221 <!--OneTrust Cookies Consent Notice end --> 222 } 223 224 @{ 225 var theme = "uk"; 226 if (!string.IsNullOrEmpty(GetString("Item.Area.Theme"))) 227 { 228 theme = GetString("Item.Area.Theme"); 229 } 230 231 if (theme != "est") 232 { 233 <link rel="preload" crossorigin="anonymous" href="/Files/Templates/Designs/Condition/assets/fonts/montserrat/Montserrat-Bold.woff2" as="font" type="font/woff2"> 234 <link rel="preload" crossorigin="anonymous" href="/Files/Templates/Designs/Condition/assets/fonts/montserrat/Montserrat-Hairline.woff2" as="font" type="font/woff2"> 235 <link rel="preload" crossorigin="anonymous" href="/Files/Templates/Designs/Condition/assets/fonts/montserrat/Montserrat-Light.woff2" as="font" type="font/woff2"> 236 <link rel="preload" crossorigin="anonymous" href="/Files/Templates/Designs/Condition/assets/fonts/montserrat/Montserrat-Regular.woff2" as="font" type="font/woff2"> 237 } 238 @* dont currently have a woff2 239 else 240 { 241 <link rel="preload" crossorigin="anonymous" href="/Files/Templates/Designs/Condition/assets/fonts/raleway/raleway-regular.woff2" as="font" type="font/woff2"> 242 }*@ 243 244 } 245 246 247 <link rel="preload" crossorigin="anonymous" href="/Files/Templates/Designs/Condition/assets/fonts/icomoon.woff?wtdjes" as="font" type="font/woff"> 248 <script type="text/javascript"> 249 function loadScript(url, callback) { 250 251 var script = document.createElement("script") 252 script.type = "text/javascript"; 253 script.setAttribute('async', 'async') 254 if (script.readyState) { //IE 255 script.onreadystatechange = function () { 256 if (script.readyState == "loaded" || 257 script.readyState == "complete") { 258 script.onreadystatechange = null; 259 callback(); 260 } 261 }; 262 } else { //Others 263 script.onload = function () { 264 callback(); 265 }; 266 } 267 268 script.src = url; 269 document.getElementsByTagName("head")[0].appendChild(script); 270 } 271 </script> 272 <script src='@Scripts.Url("~/bundles/plugins")' defer=""></script> 273 274 @if (!string.IsNullOrWhiteSpace(GoogleTagManagerId)) 275 { 276 <!-- Google Tag Manager --> 277 <script type="text/javascript"> 278 setTimeout(function(){ 279 (function (w, d, s, l, i) { 280 w[l] = w[l] || []; w[l].push({ 281 'gtm.start': 282 new Date().getTime(), event: 'gtm.js' 283 }); var f = d.getElementsByTagName(s)[0], 284 j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 285 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); 286 })(window, document, 'script', 'dataLayer', '@GoogleTagManagerId'); 287 }, 2000); 288 </script> 289 <!-- End Google Tag Manager --> 290 } 291 292 @GetValue("Item.HrefLangMapping") 293 @RenderSnippet("hreflang") 294 295 <meta name="viewport" content="width=device-width, initial-scale=1"> 296 <meta name="format-detection" content="telephone=no"> 297 298 @if (theme == "uk") 299 { 300 <link rel="apple-touch-icon" sizes="192x192" href="/Images/Favicon/NST/favicon-nst-192x192.png"> 301 <link rel="icon" type="image/png" href="/Files/Images/Favicon/NST/favicon-nst-192x192.png" sizes="192x192"> 302 <link rel="icon" type="image/png" href="/Files/Images/Favicon/NST/favicon-nst-160x160.png" sizes="160x160"> 303 <link rel="icon" type="image/png" href="/Files/Images/Favicon/NST/favicon-nst-96x96.png" sizes="96x96"> 304 <link rel="icon" type="image/png" href="/Files/Images/Favicon/NST/favicon-nst-16x16.png" sizes="16x16"> 305 <link rel="icon" type="image/png" href="/Files/Images/Favicon/NST/favicon-nst-32x32.png" sizes="32x32"> 306 } 307 else if (theme == "ie") 308 { 309 <link rel="apple-touch-icon" sizes="192x192" href="/Images/Favicon/NSTIE/favicon-nst-dublin-192x192.png"> 310 <link rel="icon" type="image/png" href="/Files/Images/Favicon/NSTIE/favicon-nst-dublin-192x192.png" sizes="192x192"> 311 <link rel="icon" type="image/png" href="/Files/Images/Favicon/NSTIE/favicon-nst-dublin-160x160.png" sizes="160x160"> 312 <link rel="icon" type="image/png" href="/Files/Images/Favicon/NSTIE/favicon-nst-dublin-96x96.png" sizes="96x96"> 313 <link rel="icon" type="image/png" href="/Files/Images/Favicon/NSTIE/favicon-nst-dublin-16x16.png" sizes="16x16"> 314 <link rel="icon" type="image/png" href="/Files/Images/Favicon/NSTIE/favicon-nst-dublin-32x32.png" sizes="32x32"> 315 } 316 else if (theme == "slk") 317 { 318 <link rel="apple-touch-icon" sizes="192x192" href="/Files/Images/Favicon/SLK/favicon-slk-192x192.png"> 319 <link rel="icon" type="image/png" href="/Files/Images/Favicon/SLK/favicon-slk-192x192.png" sizes="192x192"> 320 <link rel="icon" type="image/png" href="/Files/Images/Favicon/SLK/favicon-slk-160x160.png" sizes="160x160"> 321 <link rel="icon" type="image/png" href="/Files/Images/Favicon/SLK/favicon-slk-96x96.png" sizes="96x96"> 322 <link rel="icon" type="image/png" href="/Files/Images/Favicon/SLK/favicon-slk-16x16.png" sizes="16x16"> 323 <link rel="icon" type="image/png" href="/Files/Images/Favicon/SLK/favicon-slk-32x32.png" sizes="32x32"> 324 } 325 else if (theme == "est") 326 { 327 <link rel="apple-touch-icon" sizes="192x192" href="/Files/Images/Favicon/EST/favicon-est-192x192.png"> 328 <link rel="icon" type="image/png" href="/Files/Images/Favicon/EST/favicon-est-192x192.png" sizes="192x192"> 329 <link rel="icon" type="image/png" href="/Files/Images/Favicon/EST/favicon-est-160x160.png" sizes="160x160"> 330 <link rel="icon" type="image/png" href="/Files/Images/Favicon/EST/favicon-est-96x96.png" sizes="96x96"> 331 <link rel="icon" type="image/png" href="/Files/Images/Favicon/EST/favicon-est-16x16.png" sizes="16x16"> 332 <link rel="icon" type="image/png" href="/Files/Images/Favicon/EST/favicon-est-32x32.png" sizes="32x32"> 333 } 334 335 @Styles.Render(string.Format("~/bundles/{0}_css", theme)) 336 337 @Styles.Render("~/bundles/googlefonts_css") 338 @Styles.Render("~/bundles/bootstrap-carousel_css") 339 340 341 <!--[if lt IE 9]> 342 <script src="/assets/js/min/selectivizr-min.js"></script> 343 <![endif]--> 344 <!-- <link rel="stylesheet" href="/assets/css/jquery-ui.min.css"> --> 345 <!-- Google Analytics --> 346 @if (!string.IsNullOrWhiteSpace(GetString("Item.Area.GoogleAnalyticsId"))) 347 { 348 <script type="text/plain" class="optanon-category-C0002"> 349 (function (i, s, o, g, r, a, m) { 350 i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () { 351 (i[r].q = i[r].q || []).push(arguments) 352 }, i[r].l = 1 * new Date(); a = s.createElement(o), 353 m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m) 354 })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); 355 356 ga('create', '@GetValue("Item.Area.GoogleAnalyticsId")', 'auto'); 357 ga('send', 'pageview'); 358 359 </script> 360 } 361 @if (!string.IsNullOrWhiteSpace(telSEOAK) && !string.IsNullOrWhiteSpace(telSEOCL)) 362 { 363 <script type="text/plain" class="optanon-category-C0002"> 364 (function (a, e, c, f, g, h, b, d) { 365 var k = { ak: "@telSEOAK", cl: "@telSEOCL", autoreplace: "@telNumber" }; 366 a[c] = a[c] || function () { (a[c].q = a[c].q || []).push(arguments) }; 367 a[g] || (a[g] = k.ak); b = e.createElement(h); b.async = 1; 368 b.src = "//www.gstatic.com/wcm/loader.js"; d = e.getElementsByTagName(h)[0]; 369 d.parentNode.insertBefore(b, d); a[f] = function (b, d, e) { a[c](2, b, k, d, null, new Date, e) }; 370 a[f]() 371 })(window, document, "_googWcmImpl", "_googWcmGet", "_googWcmAk", "script"); 372 373 </script> 374 } 375 376 377 @if (!string.IsNullOrWhiteSpace(facebookPixelId)) 378 { 379 <!-- Facebook Pixel Code --> 380 <script type="text/plain" class="optanon-category-C0004"> 381 !function (f, b, e, v, n, t, s) { 382 if (f.fbq) return; n = f.fbq = function () { 383 n.callMethod ? 384 n.callMethod.apply(n, arguments) : n.queue.push(arguments) 385 }; 386 if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0'; 387 n.queue = []; t = b.createElement(e); t.async = !0; 388 t.src = v; s = b.getElementsByTagName(e)[0]; 389 s.parentNode.insertBefore(t, s) 390 }(window, document, 'script', 391 'https://connect.facebook.net/en_US/fbevents.js'); 392 fbq('init', '@facebookPixelId'); 393 fbq('track', 'PageView'); 394 </script> 395 <!-- End Facebook Pixel Code --> 396 } 397 398 <script> 399 document.addEventListener("DOMContentLoaded", function (event) { 400 var frames = document.getElementsByTagName('iframe'); 401 for (var i = 0; i < frames.length; i++) { 402 frames[i].src = frames[i].src.replace("youtube.com", "youtube-nocookie.com"); 403 } 404 }); 405 </script> 406 407 408 @GetValue("Stylesheets") 409 @GetValue("Javascripts") 410 </head> 411 412 <body> 413 <div id="mainContent"> 414 <div class="header-push"></div> 415 <header> 416 <div class="container clearfix menu-container"> 417 <a href="/"><img class="logo mobile-only" src="@brandLogoSmall" alt="@brandNameSmall"></a> 418 419 <nav id="site-nav" class="clearfix"> 420 @if (theme == "slk") 421 { 422 <ul> 423 <li style="background-color:white;"> 424 <a href="/"> 425 <img src="/Files/Templates/Designs/Condition/assets/images/design/StudyLink_Logo_Reg.png" style="max-height:20px"> 426 </a> 427 </li> 428 </ul> 429 @GetValue("DwNavigation(slkNavMenu)") 430 <nav id="navTools" class="navTools"> 431 <ul> 432 <li class="contact no-mobile"><a href="javascript:;">Contact Us</a></li> 433 </ul> 434 </nav> 435 436 } 437 else if (theme == "est") 438 { 439 <ul> 440 <li> 441 <a href="/"> 442 <img src="/Files/Templates/Designs/Condition/assets/images/design/ESTLogo.png" style="max-height:50px; margin-top: -10px;"> 443 </a> 444 </li> 445 </ul> 446 @GetValue("DwNavigation(estNavMenu)") 447 <nav id="navTools" class="navTools"> 448 <ul> 449 <li class="contact no-mobile"><a href="javascript:;">Contact Us</a></li> 450 </ul> 451 </nav> 452 453 } 454 else if (theme == "pgl") 455 { 456 <ul> 457 <li class="logo-item"><a href="/"><img class="logo show-on-scroll-50 no-mobile small" src="@brandLogoSmall" alt="@brandNameSmall"></a></li> 458 </ul> 459 @GetValue("DwNavigation(pglNavMenu)") 460 <nav id="navTools" class="navTools"> 461 <ul> 462 <li class="contact no-mobile"><a href="javascript:;">Enquire</a></li> 463 </ul> 464 </nav> 465 } 466 else 467 { 468 <ul> 469 <li class="logo-item"><a href="/"><img class="logo show-on-scroll-50 no-mobile small" src="@brandLogoSmall" alt="@brandNameSmall"></a></li> 470 </ul> 471 @GetValue("DwNavigation(nstNavMenu)") 472 <nav id="navTools" class="navTools"> 473 <ul> 474 <li class="contact no-mobile"><a href="javascript:;">Enquire</a></li> 475 </ul> 476 </nav> 477 } 478 479 <div class="right"> 480 <ul> 481 @if (theme == "est") 482 { 483 <li class="no-mobile align-center"> 484 <a href='tel:@GetString("Item.Area.Telephone")'>@GetString("Item.Area.Telephone")</a> 485 </li> 486 } 487 else 488 { 489 <li class="call-number no-mobile"> 490 <a href='tel:@GetString("Item.Area.Telephone")'>@GetString("Item.Area.Telephone")</a> 491 </li> 492 } 493 @if (theme == "slk") 494 { 495 <li class="no-mobile" style="background-color:#414042;"> 496 <a href="http://slk.my-tour-manager.com" target="_blank"> 497 <span class="icon-user" style="font-size:1.5em; color:white;"></span> 498 </a> 499 </li> 500 <li class="quote no-mobile"> 501 <a href="/request-quote" style="color:white;"> 502 REQUEST A QUOTE 503 </a> 504 </li> 505 } 506 else if (theme == "est") 507 { 508 <li class="quote no-mobile"> 509 <a href="/request-quote" id="navQuoteButton"> 510 Request quote 511 </a> 512 </li> 513 } 514 else 515 { 516 <li class="quote no-mobile"> 517 <a href="/request-quote"> 518 Request quote 519 </a> 520 </li> 521 } 522 </ul> 523 </div> 524 </nav> 525 526 <div class="mobile-only right mobile-menu-button"></div> 527 528 @*<div class="search-activate mobile-only right"><a href="#"><span class="icon-search hidden"></span><span class="text">Search</span></a></div>*@ 529 530 <nav id="mobile-nav" class="clearfix"> 531 @GetValue("DwNavigation(mobilenav)") 532 <ul> 533 534 @if (theme == "slk") 535 { 536 <li class="mobile-only"><a href="http://slk.my-tour-manager.com" target="_blank">Login</a></li> 537 <li class="contact"><div class="nav-name"><a href="javascript:;">Contact us</a></div></li> 538 } 539 else if (theme == "est") 540 { 541 <li class="contact"><div class="nav-name"><a href="javascript:;">Contact us</a></div></li> 542 } 543 else 544 { 545 <li class="contact"><div class="nav-name"><a href="javascript:;">Enquire</a></div></li> 546 } 547 548 @if (theme == "est") 549 { 550 <li class="standard"><div class="nav-name"><a href="https://www.euro-study-tours.co.uk/work-for-us">Work for Us</a></div></li> 551 } 552 else 553 { 554 <li class="standard"><div class="nav-name"><a href="https://www.nstgroup.co.uk/work-for-us">Work for Us</a></div></li> 555 } 556 557 558 </ul> 559 </nav> 560 </div> 561 562 <div class="container clearfix mobile-only mobile-contact-header"> 563 <div class="mobile-only mobile-number call-number"> 564 <a href='tel:@GetString("Item.Area.Telephone")'>@GetString("Item.Area.Telephone")</a> 565 </div> 566 <div class="button quote-button-background"> 567 <a href="/request-quote"> 568 @mobileRequestQuoteText 569 </a> 570 </div> 571 </div> 572 573 <div class="contact-bar-dropdown"> 574 <div class="container"> 575 <!-- <a class="mobile-only contact-button" href="/contact-us/request-a-quote"><span class="icon-calculator"></span> Request quote</a> --> 576 @if (areaId == 1) 577 { 578 <!--<a class="contact-button" href="/view-our-brochures"><span class="icon-brochure"></span> View our brochures</a>--> 579 } 580 <a class="contact-button no-mobile" href="/request-quote"><span class="icon-email"></span> Request quote</a> 581 <a class="contact-button" href="/get-in-touch"><span class="icon-email"></span> Get in touch</a> 582 </div> 583 </div> 584 585 <div class="search-bar-dropdown"> 586 <div class="container"> 587 @*<form action="/search-results"> 588 <label for="search">Search</label> 589 <input type="text" name="q" id="q" placeholder="Enter search term"> 590 <input type="submit" value="submit" name="submit" id="submit"> 591 </form>*@ 592 </div> 593 </div> 594 </header> 595 596 <div class="mobileMenuBkgndOverlay"></div> 597 598 <main class="mainContent"> 599 600 601 602 603 @{ 604 string count = (string) @GetValue("Item.Link_To_Item_Type.Country"); 605 string accName = (string) @GetValue("Item.Link_To_Item_Type.Title"); 606 var brandLogo = GetString("Item.Area.BrandLogo"); 607 var brandName = GetString("Item.Area.TitleBrand"); 608 //string accUrl = System.Web.HttpContext.Current.Request.Url.AbsoluteUri; 609 610 string id = (string) @GetValue("Item.Link_To_Item_Type.Id"); 611 612 //Dynamicweb.Content.Items.Item it = Dynamicweb.Content.Items.ItemManager.Storage.GetById("Accommodation", id); 613 614 //string accId = it.Page.ID.ToString(); 615 616 //var pageId = @GetString("Global:Page.ID"); 617 string accDefaultURL = "Default.aspx?ID=" + GetInteger("DwPageID").ToString(); 618 string accUrl = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(accDefaultURL); 619 accUrl = accUrl.Replace("&", "-"); 620 621 string tripName = ""; 622 623 if(System.Web.HttpContext.Current.Request.QueryString["trip"] != null) 624 tripName = System.Web.HttpContext.Current.Request.QueryString["trip"]; 625 626 string referrer = ""; 627 628 if(System.Web.HttpContext.Current.Request.UrlReferrer != null) 629 referrer = System.Web.HttpContext.Current.Request.UrlReferrer.ToString(); 630 631 } 632 633 @{ 634 var inspectionName = brandName; 635 string breadcrumbTripText = ""; 636 string breadcrumbTripLink = ""; 637 switch (brandName) 638 { 639 case "NST": 640 case "NST Ireland": 641 { 642 inspectionName = "NST's"; 643 breadcrumbTripText = "Trips"; 644 breadcrumbTripLink = "/trips"; 645 break; 646 } 647 case "Studylink": 648 { 649 inspectionName = "Studylink's"; 650 breadcrumbTripText = "Trips"; 651 breadcrumbTripLink = "/trips"; 652 break; 653 } 654 case "European Study Tours": 655 { 656 inspectionName = "EST's"; 657 breadcrumbTripText = ""; 658 breadcrumbTripLink = ""; 659 break; 660 } 661 default: 662 inspectionName = "NST's"; 663 breadcrumbTripText = "Trips"; 664 breadcrumbTripLink = "/trips"; 665 break; 666 } 667 } 668 669 <div class="masthead no-slider"> 670 <!-- Logo Overlay --> 671 <div class="background-image"> 672 <img src='@GetOptimisedImage(GetString("Item.Link_To_Item_Type.Banner_Image"))' alt=""> 673 </div> 674 @if (!String.IsNullOrWhiteSpace(brandLogo)) 675 { 676 <div class="clearfix logo"> 677 <div class="container"> 678 <a href="/"><img class="hide-on-scroll-50 no-mobile" src="@brandLogo" alt="@brandName"></a> 679 </div> 680 </div> 681 } 682 </div> 683 684 <section class="breadcrumbs clearfix container"> 685 <p><span class="bold">You are here:</span></p> 686 <ul class="breadcrumbtrail"> 687 <li> 688 <a href="/">Home</a> 689 </li> 690 691 692 @if (!String.IsNullOrWhiteSpace(breadcrumbTripLink)) 693 { 694 <li> 695 <a href="@breadcrumbTripLink">@breadcrumbTripText</a> 696 </li> 697 } 698 699 @if (tripName != "") 700 { 701 <li> 702 <a href="@referrer">@tripName</a> 703 </li> 704 } 705 <li> 706 <a href="@accUrl">@accName</a> 707 </li> 708 </ul> 709 <a href="#" class="go-back"><p>Go back</p></a> 710 </section> 711 712 <section id="standard" class="page-content"> 713 <div class="container clearfix"> 714 <!-- content --> 715 <div class="col col-width-9 content-with-sidebar right"> 716 <!-- row --> 717 <div class="row accomodation"> 718 <div class="heading col col-width-12"> 719 <h1>@GetValue("Item.Link_To_Item_Type.Title")</h1> 720 @if ((bool)@GetValue("Item.Link_To_Item_Type.NST_Safety") == true) 721 { 722 <p class="pink">Inspected as part of @inspectionName Safety Management System</p> 723 } 724 </div> 725 <div class="information"> 726 <div class="col col-width-7 equalise mpp-lazy"> 727 <span class="red-dots"> 728 @GetValue("Item.Link_To_Item_Type.Summary_Points").ToString().Replace("src", "data-original").Replace("class='", "class='lazy") 729 </span> 730 <h3 class="margin-bottom-20">Location</h3> 731 <p>@GetValue("Item.Link_To_Item_Type.Location_Summary_Text").ToString().Replace("src", "data-original").Replace("class='", "class='lazy")</p> 732 </div> 733 @if (@GetValue("Item.Link_To_Item_Type.Google_Maps_URL") != "") 734 { 735 <div class="col col-width-5 equalise side-image"> 736 <div class="map" id="map"> 737 @GetValue("Item.Link_To_Item_Type.Google_Maps_URL") 738 </div> 739 </div> 740 } 741 </div><!-- information --> 742 </div><!-- row accommodation --> 743 <!-- row --> 744 <div class="row"> 745 <div class="col col-width-6"> 746 <h3 class="margin-bottom-20">Student rooms</h3> 747 <span class="red-dots"> 748 <div class="list-group mpp-lazy"> 749 @GetValue("Item.Link_To_Item_Type.Student_Room_Points").ToString().Replace("src", "data-original").Replace("class='", "class='lazy") 750 </div> 751 </span> 752 </div> 753 754 <div class="col col-width-6"> 755 <h3 class="margin-bottom-20">Staff rooms</h3> 756 <span class="red-dots"> 757 <div class="list-group mpp-lazy"> 758 @GetValue("Item.Link_To_Item_Type.Staff_Room_Points").ToString().Replace("src", "data-original").Replace("class='", "class='lazy") 759 </div> 760 </span> 761 </div> 762 </div><!-- row --> 763 764 <div class="row" id="visits"> 765 <h3 class="margin-bottom-20">@GetValue("Item.Link_To_Item_Type.Image_Carousel_Title")</h3> 766 <div class="slick-container secondary-grey-background"> 767 <div class="slick centered"> 768 @foreach (LoopItem i in GetLoop("Item.Link_To_Item_Type.Image_Carousel")) 769 { 770 <div class="image-slide equalise"> 771 <img class="lazy" data-original='@GetOptimisedImage(i.GetString("Item.Link_To_Item_Type.Image_Carousel.Image"))' alt="@i.GetString(" item.link_to_item_type.image_carousel.title")"=""> 772 <div class="heading"> 773 <p>@i.GetString("Item.Link_To_Item_Type.Image_Carousel.Title")</p> 774 </div> 775 </div> 776 } 777 </div> 778 </div> 779 </div><!-- row --> 780 <!-- row --> 781 <div class="row"> 782 <h3 class="margin-bottom-20">Facilities</h3> 783 <span class="red-dots"> 784 <div class="list-group col col-width-4 mpp-lazy"> 785 @GetValue("Item.Link_To_Item_Type.Column1").ToString().Replace("src", "data-original").Replace("class='", "class='lazy") 786 </div> 787 <div class="list-group col col-width-4 mpp-lazy"> 788 @GetValue("Item.Link_To_Item_Type.Column_2").ToString().Replace("src", "data-original").Replace("class='", "class='lazy") 789 </div> 790 <div class="list-group col col-width-4 mpp-lazy"> 791 @GetValue("Item.Link_To_Item_Type.Column_3").ToString().Replace("src", "data-original").Replace("class='", "class='lazy") 792 </div> 793 </span> 794 </div> 795 796 797 </div><!-- content --> 798 799 <div class="col col-width-3 sidebar left"> 800 <!-- essentials --> 801 <div class="essentials secondary-grey-background"> 802 <h4 class="mobile-only">Essentials</h4> 803 @if (@GetValue("Item.Link_To_Item_Type.Link") != "") 804 { 805 <div class="link"> 806 <span class="icon-link"></span> 807 <a target="_blank" href='@GetValue("Item.Link_To_Item_Type.Link")'>@GetValue("Item.Link_To_Item_Type.Link")</a> 808 </div> 809 } 810 @if (@GetValue("Item.Link_To_Item_Type.Capacity_List") != "") 811 { 812 <div class="options mpp-lazy"> 813 <span class="icon-bed"></span> 814 <h5>Capacity</h5> 815 @GetValue("Item.Link_To_Item_Type.Capacity_List").ToString().Replace("src", "data-original").Replace("class='", "class='lazy") 816 </div> 817 } 818 @if (@GetValue("Item.Link_To_Item_Type.Disabled_Access_List") != "") 819 { 820 <div class="options mpp-lazy"> 821 <span class="icon-wheelchair"></span> 822 <h5>Disabled access</h5> 823 @GetValue("Item.Link_To_Item_Type.Disabled_Access_List").ToString().Replace("src", "data-original").Replace("class='", "class='lazy") 824 </div> 825 } 826 @if (@GetValue("Item.Link_To_Item_Type.Board_Basis_List") != "") 827 { 828 <div class="options mpp-lazy"> 829 <span class="icon-food"></span> 830 <h5>Board basis</h5> 831 @GetValue("Item.Link_To_Item_Type.Board_Basis_List").ToString().Replace("src", "data-original").Replace("class='", "class='lazy") 832 </div> 833 } 834 @if (@GetValue("Item.Link_To_Item_Type.MusicSubsection") != "") 835 { 836 <div class="options mpp-lazy"> 837 <span class="icon-music"></span> 838 <h5>Music</h5> 839 <p>@GetValue("Item.Link_To_Item_Type.MusicSubsection").ToString().Replace("src", "data-original").Replace("class='", "class='lazy")</p> 840 </div> 841 } 842 </div><!-- essentials --> 843 </div> 844 845 <div class="row"> 846 <a href="#" class="back-to-top scrolldown">Back to top</a> 847 </div> 848 </div> 849 <script defer=""> 850 setTimeout(function () { 851 loadScript('@Scripts.Url("~/bundles/mapescape")', function () { $('.map').mapescape(); }); 852 }, 2000); 853 </script> 854 <link rel="stylesheet" href='@Styles.Url("~/bundles/mapescape_css")' media="none" onload="if(media!='all')media='all'"><noscript><link rel="stylesheet" href='@Styles.Url("~/bundles/mapescape_css")'></noscript> 855 </section> 856 857 858 </main> 859 860 <footer> 861 @if (feefoInformation != null && feefoInformation.NumberOfReviews > 0) 862 { 863 string userReviews = feefoInformation.NumberOfReviews > 1 ? "user reviews" : "user review"; 864 string userRatings = feefoInformation.NumberOfRatings > 1 ? "ratings" : "rating"; 865 string image = GetString("Item.Area.FeefoImage"); 866 <section class="preFooter"> 867 <div class="row container padding-bottom-0"> 868 <div class="col col-width-6 feefo-markup"> 869 <div> 870 <strong><span>@feefoInformation.CompanyName</span></strong><br> 871 <span> 872 <span>@feefoInformation.Score</span> out of <span>5</span> 873 </span> 874 based on <span>@feefoInformation.NumberOfRatings</span> @userRatings.<br> 875 <span>@feefoInformation.NumberOfReviews</span> @userReviews. 876 </div> 877 </div> 878 <div class="col col-width-6 feefo-badge"> 879 <a href="@feefoInformation.ReviewsUrl" target="_blank" rel="noopener"><img class="lazy" data-original="@image"></a> 880 </div> 881 </div> 882 </section> 883 } 884 <div class="upper row padding-bottom-0 container"> 885 886 <div class="col col-width-4 no-mobile"> 887 <img data-original='@GetString("Item.Area.FooterLogo")' class="footerLogo lazy" alt="@logoAltText"> 888 </div> 889 890 <div class="col col-width-4 margin-bottom-0 certificates"> 891 <img data-original='@GetString("Item.Area.AccreditationLogos")' alt="Certificates" class="footerCertificates lazy"> 892 893 @if (social) 894 { 895 <div class="clear margin-20 social-follow"> 896 @if (!string.IsNullOrWhiteSpace(twitterUN)) 897 { 898 <a href="https://www.twitter.com/@twitterUN" target="_blank" rel="noopener"><img class="footersocial margin-right-5 lazy" data-original="/Files/Templates/Designs/Condition/assets/images/Icons/social-twitter.svg" alt="Twitter"></a> 899 } 900 @if (!string.IsNullOrWhiteSpace(facebookUN)) 901 { 902 <a href="https://www.facebook.com/@facebookUN" target="_blank" rel="noopener"><img class="footersocial margin-right-5 lazy" data-original="/Files/Templates/Designs/Condition/assets/images/Icons/social-facebook.svg" alt="Facebook"></a> 903 } 904 @if (!string.IsNullOrWhiteSpace(flickrUN)) 905 { 906 <a href="https://www.flickr.com/photos/@flickrUN" target="_blank" rel="noopener"><img class="footersocial margin-right-5 lazy" data-original="/Files/Templates/Designs/Condition/assets/images/Icons/social-flickr.svg" alt="Flickr"></a> 907 } 908 @if (!string.IsNullOrWhiteSpace(youtubeUN)) 909 { 910 <a href="https://www.youtube.com/channel/@youtubeUN" target="_blank" rel="noopener"><img class="footersocial margin-right-5 lazy" data-original="/Files/Templates/Designs/Condition/assets/images/Icons/social-youtube.svg" alt="Youtube"></a> 911 } 912 @if (!string.IsNullOrWhiteSpace(instagramUN)) 913 { 914 <a href="https://www.instagram.com/@instagramUN" target="_blank" rel="noopener"><img class="footersocial margin-right-5 lazy" data-original="/Files/Templates/Designs/Condition/assets/images/Icons/social-instagram.svg" alt="Instagram"></a> 915 } 916 @if (!string.IsNullOrWhiteSpace(snapchatUN)) 917 { 918 <a href="https://www.snapchat.com/add/@snapchatUN" target="_blank" rel="noopener"><img class="footersocial margin-right-5 lazy" data-original="/Files/Templates/Designs/Condition/assets/images/Icons/social-snapchat.svg" alt="Snapchat"></a> 919 } 920 @if (!string.IsNullOrWhiteSpace(tumblrUN)) 921 { 922 tumblrUN = tumblrUN + ".tumblr.com"; 923 <a href="https://@tumblrUN" target="_blank" rel="noopener"><img class="footersocial margin-right-5 lazy" data-original="/Files/Templates/Designs/Condition/assets/images/Icons/social-tumblr.svg" alt="Tumblr"></a> 924 } 925 </div> 926 } 927 </div> 928 929 930 931 932 <div class="col col-width-4 margin-bottom-20 contacts"> 933 <p class="bold">Tel <span class="regular"><a class="phone" href='tel:@GetString("Item.Area.TelephoneOther")'>@GetString("Item.Area.TelephoneOther")</a></span></p> 934 <p class="bold">Fax <span class="regular">@GetString("Item.Area.Fax")</span></p> 935 <p class="bold"> 936 Email <span class="regular"> 937 <a href='mailto:@GetString("Item.Area.Email")'>@GetString("Item.Area.Email")</a> 938 </span> 939 </p> 940 </div> 941 942 </div> 943 944 <div class="lower row centralise padding-top-40 container"> 945 <nav class="footer-nav"> 946 <ul class="clearfix"> 947 <li><a href="/about-us">About Us</a></li> 948 @if (theme == "est") 949 { 950 951 <li><a href="https://www.euro-study-tours.co.uk/work-for-us">Work for Us</a></li> 952 } 953 else 954 { 955 <li><a href="https://www.nstgroup.co.uk/work-for-us">Work for Us</a></li> 956 } 957 958 <li><a href="/cookie-policy">Cookie Policy</a></li> 959 <li><a href="/privacy-statement">Privacy Statement</a></li> 960 <li><a href="/legal-information">Legal Information</a></li> 961 <li><a href="/modern-slavery">Modern Slavery</a></li> 962 @if (theme == "uk" || theme == "slk" || theme == "est") 963 { 964 <li> 965 <a href="https://www.gov.uk/foreign-travel-advice" target="_blank" rel="noopener">Foreign Travel Advice</a> 966 </li> 967 } 968 else 969 { 970 <li> 971 <a style="padding:0px 0px 0px 20px;">Foreign Travel Advice</a> <a href="https://www.dfa.ie/travel/travel-advice/" style="padding:0px 0px; text-decoration:underline;" target="_blank">ROI</a> <a style="padding:0px 0px;"> & </a> <a href="https://www.gov.uk/foreign-travel-advice" style="padding:0px 0px; text-decoration:underline;" target="_blank">NI</a> 972 </li> 973 } 974 975 <li><a href="/sitemap">Sitemap</a></li> 976 <li><a class="ot-sdk-show-settings" style="cursor:pointer;">Cookies Settings</a></li> 977 </ul> 978 </nav> 979 <p class="company-disclaimer" style="padding-top: 25px;">@GetString("Item.Area.CompanyRegistration")</p> 980 <!-- <p class="copyright">© 2014 NST Travel Group Ltd</p> --> 981 <p> 982 @GetString("Item.Area.CompanyAddress") 983 </p> 984 </div> 985 @{ 986 PageService affiliatepages = new PageService(); 987 var allffiliatepages = affiliatepages.GetPagesByTitle("Affiliation Logos"); 988 foreach (var page in allffiliatepages.Where(x => x.AreaId == Convert.ToInt32(GetGlobalValue("Global:Area.ID")))) 989 { 990 <div id="Affiliation-Logos">@RenderPageContent(page.ID)</div> 991 } 992 } 993 </footer> 994 <div class="beyond-footer-container"> 995 <div class="beyond-footer-curved-edge"> &nbsp; </div> 996 <div class="beyond-footer-padding"> 997 <div class="beyond-footer-image-container "> 998 <a href="https://pglbeyond.com" target="_blank"><img class="beyond-footer-beyond-image" src="/Files/Files/Footer-Images/PGL-Beyond.png"></a> 999 </div> 1000 <div class="beyond-footer-image-container "> 1001 <a href="https://pglbeyond.com" target="_blank"><img class="beyond-footer-brand-image" src="/Files/Files/Footer-Images/All-Brands.png"></a> 1002 </div> 1003 </div> 1004 </div> 1005 @if (theme == "uk") 1006 { 1007 // @Scripts.Render("~/bundles/SEO") 1008 } 1009 </div> 1010 <div id="loadingOverlay"> 1011 <div style="width: 100%; height: 100%; background-position: center; background-repeat: no-repeat; background-image: url('@loadingImage')"></div> 1012 </div> 1013 <script> 1014 function displayLoadingOverlay() { 1015 //var scrollposition = window.sc 1016 $("#loadingOverlay").css("top", window.scrollY); 1017 $("#loadingOverlay").fadeIn(); 1018 $("body").css("overflow-y", "hidden"); 1019 } 1020 1021 function hideLoadingOverlay() { 1022 $("#loadingOverlay").fadeOut(); 1023 $("body").css("overflow-y", "initial"); 1024 } 1025 1026 //$("img.lazy").each(function () { 1027 // $(this).attr("src", $(this).attr("data-original"); 1028 // //$(this).attr("data-original", $(this).attr("src")); 1029 // // $(this).attr("src", "/Files/Images/Loading/NST_loading.gif"); 1030 // //$(this).removeAttr("src"); 1031 //}); 1032 1033 //$(function() { 1034 // $('.tile-inner-content').hover(function () { 1035 // console.log("oooooh"); 1036 // $(this).fadeOut(); 1037 // }, function () { 1038 // $(this).fadeIn(); 1039 // }); 1040 //}); 1041 1042 </script> 1043 1044 <script src='@Scripts.Url("~/bundles/mainJS")' defer=""></script> @* dont put mainJS in async, it breaks FastClick and Slickify *@ 1045 <script src='@Scripts.Url("~/bundles/picker")' defer=""></script> 1046 <script type="text/javascript"> 1047 setTimeout(function () { 1048 var nodes = document.querySelectorAll('.mpp-lazy img'); 1049 var arr = Array.prototype.slice.call(nodes); 1050 arr.forEach(function (obj) { obj.classList.add('lazy'); }); 1051 }, 10); 1052 </script> 1053 1054 <!-- begin SnapEngage code --> 1055 @if (enableChat && !String.IsNullOrEmpty(ChatGuid)) 1056 { 1057 <script type="text/plain" class="optanon-category-C0003"> 1058 setTimeout(function () { 1059 loadScript('@Scripts.Url("~/bundles/snapengage")', function () { initSnapEnagage('@ChatGuid'); }); 1060 }, 2000); 1061 </script> 1062 } 1063 <!-- end SnapEngage code --> 1064 </body> 1065 </html> 1066