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