Error executing template "Designs/Jks2022/_parsed/DepartmentPage.parsed.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_ff3829e49f5d486fa3ecb8fa039aab6f.Execute() in D:\Web\jks\Website\Files\Templates\Designs\Jks2022\_parsed\DepartmentPage.parsed.cshtml:line 434
   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.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 2 3 @{ 4 //for cookieinformation and flags 5 string languageCode = Pageview.Area.Culture.Substring(0, 2).ToUpper(); 6 if (languageCode == "NN") 7 { 8 languageCode = "NB"; 9 } 10 bool noCookieinformation = Model.Area.Item.GetBoolean("NoCookieinformation"); 11 int modelId = Model.Area.ID; 12 string googleTagManagerId = Model.Area.Item.GetString("GoogleTagManager"); 13 string googleTagManagerScriptHead = Model.Area.Item.GetString("GoogleTagManagerScriptHead"); 14 string googleTagManagerScriptBody = Model.Area.Item.GetString("GoogleTagManagerScriptBody"); 15 } 16 17 <!DOCTYPE html> 18 <html lang="@languageCode"> 19 <head> 20 21 <!-- Google tag (gtag.js) --> 22 @if (modelId == 18) 23 { 24 <script async src="https://www.googletagmanager.com/gtag/js?id=G-ELDPWGB1ZZ"></script> 25 <script> 26 window.dataLayer = window.dataLayer || []; 27 function gtag() { dataLayer.push(arguments); } 28 gtag('js', new Date()); 29 gtag('config', 'G-ELDPWGB1ZZ'); 30 </script> 31 <script> 32 if (["/for-vikarer", "/juleassistance", "/lagerarbejde", "/hygiejne", "/industrijobs", "/elektrikerjobs", "/byggerijobs", "/daekmontoer", "/sommerferiejob", "/sabbatjob", "/bliv-kandidat-hoejsaeson", "/transportjob"].some(p => location.pathname.includes(p))) { 33 const script = document.createElement("script"); 34 script.src = "https://files.userlink.ai/public/embed.min.js"; 35 script.charset = "utf-8"; 36 script.id = "bai-scr-emb"; 37 script.async = true; 38 script.setAttribute("data-cid", "674433558afa183a0a5b6a63"); 39 document.head.appendChild(script); 40 } 41 </script> 42 43 <script> 44 if (["/for-virksomheder", "/kandidater-til-hoejsaeson"].some(p => location.pathname.includes(p))) { 45 const script = document.createElement("script"); 46 script.src = "https://files.userlink.ai/public/embed.min.js"; 47 script.charset = "utf-8"; 48 script.id = "bai-scr-emb"; 49 script.async = true; 50 script.setAttribute("data-cid", "683ff2c6ee7ce33b53f70a2d"); 51 document.head.appendChild(script); 52 } 53 </script> 54 } 55 else if (modelId == 10) 56 { 57 <script async src="https://www.googletagmanager.com/gtag/js?id=G-D299QWVPJP"></script> 58 <script> 59 window.dataLayer = window.dataLayer || []; 60 function gtag() { dataLayer.push(arguments); } 61 gtag('js', new Date()); 62 gtag('config', 'G-D299QWVPJP'); 63 </script> 64 } 65 else if (modelId == 12) 66 { 67 <script async src="https://www.googletagmanager.com/gtag/js?id=G-PHS2ZDS6BW"></script> 68 <script> 69 window.dataLayer = window.dataLayer || []; 70 function gtag() { dataLayer.push(arguments); } 71 gtag('js', new Date()); 72 gtag('config', 'G-PHS2ZDS6BW'); 73 </script> 74 } 75 <!-- End Google tag (gtag.js) --> 76 77 <meta charset="utf-8" /> 78 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 79 <title>@Model.Title</title> 80 <meta name="description" content="@Model.Description" /> 81 82 <!-- Canonical URL --> 83 @{ 84 var request = Dynamicweb.Context.Current?.Request; 85 if (request?.Url != null) 86 { 87 var scheme = request.Url.Scheme; 88 var host = request.Url.Authority; 89 90 var rawUrl = request.RawUrl ?? "/"; 91 var query = rawUrl.IndexOf("?", StringComparison.Ordinal); 92 var path = query >= 0 ? rawUrl.Substring(0, query) : rawUrl; 93 94 if (path.Length > 1) { path = path.TrimEnd('/'); } 95 96 var canonical = scheme + "://" + host + path; 97 <link rel="canonical" href="@canonical" /> 98 } 99 } 100 101 <link href="@Model.Area.Item.GetFile("FavIcon")" type="image/x-icon" rel="icon" /> 102 <link href="@Model.Area.Item.GetFile("FavIcon")" type="image/x-icon" rel="shortcut icon" /> 103 104 @if (System.Web.HttpContext.Current.Request.Url.Host.Contains("staging") || System.Web.HttpContext.Current.Request.Url.Host.Contains("vestjyskmarketing") || Pageview.Area.Noindex || Pageview.Page.Noindex) 105 { 106 <meta name="robots" content="noindex,nofollow" /> 107 } 108 109 @if (noCookieinformation == false) 110 { 111 <script id="CookieConsent" src="https://policy.app.cookieinformation.com/uc.js" data-culture="@languageCode" type="text/javascript"></script> 112 } 113 114 @if (!String.IsNullOrEmpty(googleTagManagerScriptHead)) 115 { 116 @googleTagManagerScriptHead 117 } 118 else if (!String.IsNullOrEmpty(googleTagManagerId)) 119 { 120 <!-- Google Tag Manager --> 121 <script> 122 (function (w, d, s, l, i) { 123 w[l] = w[l] || []; w[l].push({ 124 'gtm.start': 125 new Date().getTime(), event: 'gtm.js' 126 }); var f = d.getElementsByTagName(s)[0], 127 j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 128 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); 129 })(window, document, 'script', 'dataLayer', '@googleTagManagerId'); 130 </script><!-- End Google Tag Manager --> 131 } 132 133 @RenderSnippet("Metas") 134 135 @if (modelId == 17 || modelId == 23) 136 { 137 var careerStyles = VestjyskMarketing.Helpers.Utilities.CacheBuster("/Files/Templates/Designs/dist/CareerJks2022.css"); 138 <link rel="stylesheet" type="text/css" href="@careerStyles"> 139 } 140 else if (modelId == 16) 141 { 142 var profJksStyles = VestjyskMarketing.Helpers.Utilities.CacheBuster("/Files/Templates/Designs/dist/ProfJks2022.css"); 143 <link rel="stylesheet" type="text/css" href="@profJksStyles" /> 144 } 145 else 146 { 147 var jksStyles = VestjyskMarketing.Helpers.Utilities.CacheBuster("/Files/Templates/Designs/dist/Jks2022.css"); 148 <link rel="stylesheet" type="text/css" href="@jksStyles" /> 149 } 150 151 @RenderSnippet("Styles") 152 @RenderSnippet("Scripts") 153 </head> 154 155 156 <body> 157 158 @if (!String.IsNullOrEmpty(googleTagManagerScriptBody)) 159 { 160 @googleTagManagerScriptBody 161 } 162 else if (!String.IsNullOrEmpty(googleTagManagerId)) 163 { 164 <!-- Google Tag Manager (noscript) --> 165 <noscript> 166 <iframe src="" data-consent-src="https://www.googletagmanager.com/ns.html?id=@googleTagManagerId" data-category-consent="cookie_cat_marketing" height="0" width="0" style="display:none;visibility:hidden"></iframe> 167 </noscript> 168 <!-- End Google Tag Manager (noscript) --> 169 } 170 171 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 172 173 @using Dynamicweb.Content 174 @using Dynamicweb.Content.Files.Metadata 175 @using Dynamicweb.Extensibility; 176 177 @{ 178 var areaID = Dynamicweb.Frontend.PageView.Current().Area.ID; 179 var pageID = Dynamicweb.Frontend.PageView.Current().Page.ID; 180 var pageType = Dynamicweb.Frontend.PageView.Current().Page.ItemType; 181 var pageService = ServiceLocator.Current.GetPageService(); 182 var rootPages = pageService.GetRootPagesForArea(areaID).Where(p => p.Active && p.Item != null).ToArray(); 183 int searchpageIdGlobal = GetPageIdByNavigationTag("SearchPageGlobal"); 184 bool wideWrapper = new List<int> { 22,16,25 }.Contains(areaID); 185 } 186 @{ 187 var navigationSettingsDesktop = new Dynamicweb.Frontend.Navigation.NavigationSettings() 188 { 189 StartLevel = 1, 190 StopLevel = 2, 191 ExpandMode = Dynamicweb.Frontend.Navigation.ExpandMode.All 192 }; 193 var navigationTemplateDesktop = "Navigation/NavigationDesktop.cshtml"; 194 195 var navigationSettingsMobile = new Dynamicweb.Frontend.Navigation.NavigationSettings() 196 { 197 StartLevel = 1, 198 StopLevel = 999, 199 ExpandMode = Dynamicweb.Frontend.Navigation.ExpandMode.All 200 }; 201 202 var navigationTemplateMobile = "Navigation/NavigationMobile.cshtml"; 203 string classHeader = Dynamicweb.Core.Converter.ToString(Dynamicweb.Context.Current.Items["headerCLass"]); 204 //hack because the special page does not understand the context properly? 205 if (Model.ItemType == "JksDividerPage") 206 { 207 classHeader += "bg-primary nav-light"; 208 } 209 else if (Model.ItemType == "DepartmentPage") 210 { 211 classHeader += "bg-eggwhite"; 212 } 213 214 215 string logoDesktop = Model.Area.Item.GetString("LogoWide"); 216 string logoMobile = Model.Area.Item.GetString("LogoTall"); 217 218 if (pageType == "Job" && !classHeader.Contains("nav-light")) 219 { 220 classHeader = classHeader + " nav-light "; 221 } 222 223 if (!classHeader.Contains("nav-light")) 224 { 225 logoDesktop = logoDesktop.Replace("white", "rgb"); 226 logoMobile = logoMobile.Replace("white", "rgb"); 227 } 228 } 229 <div class="header-wrapper"> 230 <header class="container-fluid header @classHeader"> 231 <a href="/" id="js-header-logo" class="header__logo-wrapper" title="@Translate("Go to frontpage")"> 232 <img class="header__logo-wrapper__logo" src="@logoDesktop" alt="@Translate("Logo") @Model.Area.Name"> 233 </a> 234 235 <div class="d-flex justify-content-around align-items-center"> 236 <div class="header__desktop__menu__item--search d-lg-none me-4"> 237 <a href="/Default.aspx?ID=@searchpageIdGlobal&Search=" class="header__burger__menu__title--search--wrapper "> 238 <div class="header__burger__menu__title--searchicon"> 239 </div> 240 </a> 241 242 </div> 243 <div class="header__burger header__burger--active d-lg-none"> 244 <input class="header__burger__checkbox" type="checkbox" id="js-burger-checkbox" /> 245 <span class="header__burger__line"></span> 246 <span class="header__burger__line"></span> 247 <span class="header__burger__line"></span> 248 249 @Navigation.RenderNavigation(navigationTemplateMobile, navigationSettingsMobile) 250 </div> 251 252 </div> 253 254 255 <div class="flex-column header__desktop__menu-wrapper @(wideWrapper ? "header__desktop__menu-wrapper--wide" : "") "> 256 @if (Model.Area.Item.GetItems("Shortcuts").Count > 0) 257 { 258 <ul class="header__desktop__shortcuts justify-content-end" id="js-menu-shortcuts"> 259 @foreach (var list in Model.Area.Item.GetItems("Shortcuts")) 260 { 261 <li> 262 <a href="@list.GetLink("Link")"> 263 @if (list.GetFile("Icon") != null) 264 { 265 <img src="@list.GetFile("Icon").Path" alt="@list.GetString("Tekst")" width="18" style="margin-right: 3px;" /> 266 } 267 @if (!String.IsNullOrEmpty(list.GetString("Tekst"))) 268 { 269 @list.GetString("Tekst") 270 } 271 272 </a> 273 </li> 274 } 275 </ul> 276 } 277 278 @Navigation.RenderNavigation(navigationTemplateDesktop, navigationSettingsDesktop) 279 </div> 280 281 282 </header> 283 284 @if (true) 285 { 286 <div class="d-none d-md-block header-mega-menu container-fluid"> 287 288 @foreach (var rootPage in rootPages) 289 { 290 291 if (rootPage.Item.ContainsKey("ShowExtendedMenu") && rootPage.Item["ShowExtendedMenu"] != null && bool.Parse(rootPage.Item["ShowExtendedMenu"].ToString())) 292 { 293 var details = rootPage.Item["ExtendedMenuDetails"]; 294 var title = rootPage.MenuText; 295 var subPages = pageService.GetPagesByParentID(rootPage.ID).Where(p => p.Active); 296 297 <div class="mega-menu row" role="menu" menuId="@rootPage.ID"> 298 <div class="col-7"> 299 <div class="col-10 col-lg-8 col-xl-6"> 300 <a href="@rootPage.GetPageHrefValue()" class="section-title"><h3 class="title">@title<span class="arrow"></span></h3></a> 301 <p class="details">@details</p> 302 </div> 303 </div> 304 <div class="col-5 sub-pages"> 305 <div class="row"> 306 @foreach (var subpage in subPages) 307 { 308 <div class="col-6 col-xl-6 link-item"><a href="@subpage.GetPageHrefValue()">@subpage.MenuText</a></div> 309 } 310 </div> 311 </div> 312 </div> 313 } 314 } 315 </div> 316 } 317 318 </div> 319 320 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 321 @using Jks.ViewModel.Job 322 @using ClientiCoreDotNet.Extensions.String; 323 324 @Title("Main department template") 325 326 327 328 @functions 329 { 330 public string MakeUrlFriendly(string input) 331 { 332 // Replace Danish characters with ASCII equivalents 333 input = input.Replace("ø", "oe").Replace("æ", "ae").Replace("å", "aa"); 334 //replace spaces in string with hyphens 335 string modifiedWithNoSpacing = input.Replace(" ", "-"); 336 // Escape any remaining characters 337 return Uri.EscapeUriString(modifiedWithNoSpacing); 338 } 339 } 340 341 @{ 342 var departmentData = Model.Item.GetItem("DepartmentData"); 343 344 var CreateSubstituteDepartmentLocationLinkSection = Model.Item.GetBoolean("CreateSubstituteDepartmentLocationLinkSection"); 345 Dynamicweb.Frontend.ItemViewModel settings = null; 346 string bgColorClass = string.Empty; 347 string btnClass = string.Empty; 348 string headlineElementType = string.Empty; 349 string linkToSubstitutePageLocation = string.Empty; 350 Jks.ViewModel.Website.SpacingViewModel spacingClasses = null; 351 string textColorOnSubstituteElement = string.Empty; 352 int assistancehrPartnersAreaId = 24; 353 bool businessPage = Model.Item.GetBoolean("BusinessPage"); 354 var matchingPageLink = ""; 355 var padding = "padding-none"; 356 357 if (CreateSubstituteDepartmentLocationLinkSection) 358 { 359 settings = Model.Item.GetItem("JKSParagraphSettings"); 360 361 bgColorClass = settings.GetList("BackgroundColor").SelectedValue; 362 headlineElementType = settings.GetList("HeadlineElementType").SelectedValue; 363 spacingClasses = Jks.Helpers.Spacing.SpacingClassContainer(settings); 364 btnClass = !String.IsNullOrEmpty(settings.GetString("ButtonType")) ? settings.GetString("ButtonType") : "btn-secondary"; 365 var pClasses = settings.GetList("Padding").SelectedValue; 366 if (pClasses != "") 367 { 368 padding = spacingClasses.Padding; 369 } 370 371 if (bgColorClass == "") 372 { 373 bgColorClass = "bg-lightblue"; 374 } 375 376 if (bgColorClass == "bg-darkblue" || bgColorClass == "bg-primary" || bgColorClass == "pp-blue") 377 { 378 textColorOnSubstituteElement = "#FFFFFF"; 379 } 380 else 381 { 382 textColorOnSubstituteElement = "initial"; 383 } 384 385 int parentPageId = 0; 386 if (businessPage) 387 { 388 parentPageId = GetPageIdByNavigationTag("PrivateDepartments"); 389 var matchingPage = pageService.GetPagesByParentID(parentPageId).Where(x => x.GetDisplayName() == Pageview.Page.GetDisplayName()); 390 if (matchingPage.Any()) 391 { 392 matchingPageLink = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(matchingPage.FirstOrDefault().ID); 393 } 394 } 395 else 396 { 397 matchingPageLink = "/for-virksomheder"; 398 } 399 400 401 } 402 403 string departmentId = departmentData.GetString("Department_ID"); 404 string areaId = Model.Area.ID.ToString(); 405 IEnumerable<IJobViewModel> jobsDepartment = Jks.ViewModels.Jobs.GetJobsByDepartmentId(departmentId, areaId); 406 bool showApplier = departmentData.GetBoolean("ShowApplier"); 407 var imageTopObj = departmentData.GetFile("Image"); 408 string imageTop = "/Admin/Public/GetImage.ashx?Image=" + departmentData.GetFile("Image") + "&Crop=7&Format=webP&width=1000&Height=600&Compression=75"; 409 if (imageTopObj != null && imageTopObj.HasFocalPoint()) 410 { 411 imageTop += "&x=" + imageTopObj.FocalX + "&y=" + imageTopObj.FocalY; 412 } 413 414 var imageBusinessObj = departmentData.GetFile("Image_Business_FiftyFifty"); 415 string imageBusiness = "/Admin/Public/GetImage.ashx?Image=" + departmentData.GetFile("Image_Business_FiftyFifty") + "&Crop=7&Format=webP&width=1000&Height=600&Compression=75"; 416 if (imageBusinessObj != null && imageBusinessObj.HasFocalPoint()) 417 { 418 imageBusiness += "&x=" + imageBusinessObj.FocalX + "&y=" + imageBusinessObj.FocalY; 419 } 420 421 var imageApplierObj = departmentData.GetFile("ImageApplierFiftyFifty"); 422 string imageApplier = "/Admin/Public/GetImage.ashx?Image=" + departmentData.GetFile("ImageApplierFiftyFifty") + "&Crop=7&Format=webP&width=1000&Height=600&Compression=75"; 423 424 if (imageApplierObj != null && imageApplierObj.HasFocalPoint()) 425 { 426 imageApplier += "&x=" + imageApplierObj.FocalX + "&y=" + imageApplierObj.FocalY; 427 } 428 429 if (string.IsNullOrEmpty(departmentData.GetString("ImageApplierFiftyFifty"))) 430 { 431 imageApplier = ""; 432 } 433 434 int formIdUsed = businessPage ? Model.Area.Item.GetLink("DepartmentFormBusinessParagraph").ParagraphId : Model.Area.Item.GetLink("DepartmentFormPrivateParagraph").ParagraphId; 435 436 string urlHost = "https://" + System.Web.HttpContext.Current.Request.Url.Host; 437 438 string allJobsLink = string.IsNullOrEmpty(Model.Area.Item.GetString("Link_To_All_Jobs")) ? "/for-vikarer/ledige-stillinger" : Model.Area.Item.GetString("Link_To_All_Jobs"); 439 } 440 441 @helper RenderContent(string headline, string column1, string column2, string image, string headlineff, string textff) 442 { 443 if (!string.IsNullOrEmpty(headline) || !string.IsNullOrEmpty(column1) || !string.IsNullOrEmpty(column2)) 444 { 445 <div class="container-fluid container-fluid-extra padding-standard"> 446 <section class="big-font-wrapper big-font-wrapper-smaller"> 447 @if (!string.IsNullOrEmpty(headline)) 448 { 449 <div class="row"> 450 <div class="d-flex"> 451 <h2 class="mb-5"> 452 @headline 453 </h2> 454 </div> 455 </div> 456 } 457 458 @if (!string.IsNullOrEmpty(column1) || !string.IsNullOrEmpty(column2)) 459 { 460 <div class="row columns__content"> 461 @if (!string.IsNullOrEmpty(column1)) 462 { 463 <div class="col-12 col-lg-5"> 464 @column1 465 </div> 466 } 467 @if (!string.IsNullOrEmpty(column2)) 468 { 469 <div class="col-12 col-lg-6 offset-lg-1 pt-rem-1 pt-rem-lg-0"> 470 @column2 471 </div> 472 } 473 </div> 474 } 475 </section> 476 </div> 477 } 478 479 if (!string.IsNullOrEmpty(image) || !string.IsNullOrEmpty(headlineff) || !string.IsNullOrEmpty(textff)) 480 { 481 482 483 <div class="container-fluid container-fluid-extra"> 484 <section class="entry-picture entry-picture-large padding-half-bottom"> 485 <div class="row"> 486 @if (!string.IsNullOrEmpty(image)) 487 { 488 <div class="entry-picture__image-wrapper col-12 col-lg-6 col-xl-7 d-flex flex-column justify-content-center"> 489 <div class="entry-picture__image" style="background-image: url('@image')"></div> 490 </div> 491 } 492 @if (!string.IsNullOrEmpty(headlineff) || !string.IsNullOrEmpty(textff)) 493 { 494 <div class="col-12 col-lg-5 col-xl-4 entry-picture__text-wrapper offset-lg-1 d-flex flex-column justify-content-center"> 495 @if (!string.IsNullOrEmpty(headlineff)) 496 { 497 <h2 class="entry-picture__header"> 498 @headlineff 499 </h2> 500 } 501 @if (!string.IsNullOrEmpty(textff)) 502 { 503 <div class="entry-picture__text"> 504 @textff 505 </div> 506 } 507 </div> 508 } 509 </div> 510 </section> 511 </div> 512 } 513 } 514 515 <div class="department" id="@(businessPage ? "business-department" : "vikar-department")"> 516 <div class="container-fluid container-fluid-extra bg-eggwhite padding-standard department__entry-picture"> 517 <section class="entry-picture entry-picture-large padding-standard-bund"> 518 <div class="row flex-row-reverse"> 519 <div class="entry-picture__image-wrapper col-12 col-lg-6 col-xl-7 offset-lg-1 d-flex flex-column justify-content-center"> 520 <div class="entry-picture__image" style="background-image: url('@imageTop')"></div> 521 </div> 522 <div class="col-12 col-lg-5 col-xl-4 entry-picture__text-wrapper d-flex flex-column justify-content-center"> 523 <h1 class="big-header-font"> 524 @if (businessPage && !string.IsNullOrEmpty(departmentData.GetString("WebOverskriftBusiness"))) 525 { 526 @departmentData.GetString("WebOverskriftBusiness") 527 }else{ 528 @departmentData.GetString("WebOverskrift") 529 } 530 </h1> 531 <div class="entry-picture__text"> 532 @if (businessPage && !string.IsNullOrEmpty(departmentData.GetString("DescriptionBusiness"))) 533 { 534 @departmentData.GetString("DescriptionBusiness") 535 }else{ 536 @departmentData.GetString("Description") 537 } 538 539 <p> 540 @Translate("Ring til os på") <a href="tel:@departmentData.GetString("Phone")"> @departmentData.GetString("Phone")</a> @Translate("eller skriv til os på") <a href="mailto:@departmentData.GetString("Email")"> @departmentData.GetString("Email")</a> 541 </p> 542 </div> 543 544 <div class="entry-picture__buttons"> 545 @if (businessPage) 546 { 547 var pricePageUrl = "/Default.aspx?ID=" + GetPageIdByNavigationTag("KnowThePricePage"); 548 549 <a href="@pricePageUrl" class="btn btn-secondary btn-sm mt-3"> 550 @Translate("Få en pris") 551 </a> 552 } 553 else 554 { 555 if (Model.Area.ID == assistancehrPartnersAreaId) 556 { 557 string findJobUrl = "/Default.aspx?ID=" + GetPageIdByNavigationTag("FindJob"); 558 <a href="@findJobUrl" class="btn btn-secondary btn-sm mt-3"> 559 @Translate("Bliv vikar") 560 </a> 561 } 562 else 563 { 564 string substituteUrl = "/Default.aspx?ID=" + GetPageIdByNavigationTag("SubstitutePage"); 565 <a href="@substituteUrl" class="btn btn-secondary btn-sm mt-3"> 566 @Translate("Bliv vikar") 567 </a> 568 } 569 } 570 571 @if (!businessPage) 572 { 573 if (Model.Area.ID == assistancehrPartnersAreaId) 574 { 575 <a href=/kontakt#anchor-contactform class="btn btn-secondary btn-sm mt-3"> 576 @Translate("Bliv ringet op om personaleløsninger") 577 </a> 578 } 579 } 580 </div> 581 </div> 582 </div> 583 </section> 584 </div> 585 586 @if (CreateSubstituteDepartmentLocationLinkSection) 587 { 588 <section class="container-fluid container-fluid-extra @bgColorClass @spacingClasses.Margin"> 589 <div class="@padding"> 590 591 <div style="justify-content:center; align-content:center; align-items: center; flex-wrap:wrap; flex-direction:row; text-align:center; padding:16px;" class="d-flex"> 592 593 @{ 594 var translation = ""; 595 if (businessPage) 596 { 597 translation = Translate("Søger du job i "); 598 } 599 else 600 { 601 translation = Translate("Søger du medarbejder i "); 602 } 603 604 string textToDisplay = translation + " " + departmentData.GetString("Web_Name") + "?"; 605 606 } 607 608 @if (!headlineElementType.ToLower().Equals("")) 609 { 610 611 //for some reason <@headlineElemenType is not working, so we have to use switch 612 switch (headlineElementType) 613 { 614 case "h1": 615 <h1 class="mb-lg-0 mb-3" style="color:@textColorOnSubstituteElement; margin:0px;"><span>@textToDisplay</span></h1> 616 break; 617 case "h2": 618 <h2 class="mb-lg-0 mb-3" style="color:@textColorOnSubstituteElement; margin:0px;"><span>@textToDisplay</span></h2> 619 break; 620 case "h3": 621 <h3 class="mb-lg-0 mb-3" style="color:@textColorOnSubstituteElement; margin:0px;"><span>@textToDisplay</span></h3> 622 break; 623 case "div": 624 <div class="mb-lg-0 mb-3" style="color:@textColorOnSubstituteElement; margin:0px;"><span>@textToDisplay</span></div> 625 break; 626 case "p": 627 <p class="mb-lg-0 mb-3" style="color:@textColorOnSubstituteElement; margin:0px;"><span>@textToDisplay</span></p> 628 break; 629 default: 630 <h2 class="mb-lg-0 mb-3" style="color:@textColorOnSubstituteElement; margin:0px;"><span>@textToDisplay</span></h2> 631 break; 632 } 633 634 } 635 else 636 { 637 <h2 class="mb-lg-0 mb-3" style="color:@textColorOnSubstituteElement; margin:0px;"><span>@textToDisplay</span></h2> 638 } 639 640 <div> 641 642 @if (!string.IsNullOrEmpty(matchingPageLink)) 643 { 644 645 <a style="" href="@matchingPageLink" target="_blank" class="btn btn-primary btn-transparant ms-2"><span>@Translate("Så klik her")</span></a> 646 } 647 648 @if (!businessPage) 649 { 650 <a href="/for-virksomheder/kend-prisen" target="_blank" class="btn btn-primary btn-transparant btn-lg ms-2"><span>@Translate("Få en pris")</span></a> 651 } 652 653 </div> 654 </div> 655 </div> 656 </section> 657 } 658 659 660 @{ 661 var paragraphService = new Dynamicweb.Content.ParagraphService(); 662 663 if (departmentData != null) 664 { 665 var departmentPage = pageService.GetPageForItem("Department", departmentData.Id); 666 667 if (departmentPage != null) 668 { 669 var paragraphs = paragraphService.GetParagraphsByPageId(departmentPage.ID); 670 671 if (paragraphs != null && paragraphs.Any()) 672 { 673 string targetContainer = businessPage ? "Business" : "Jobseekers"; 674 675 var selectedParagraphIds = paragraphs 676 .Where(p => !string.IsNullOrEmpty(p.Container) && 677 p.Container.Equals(targetContainer, StringComparison.OrdinalIgnoreCase)) 678 .Select(p => p.ID) 679 .ToList(); 680 681 foreach (var paragraphId in selectedParagraphIds) 682 { 683 if (paragraphId > 0) 684 { 685 @RenderParagraphContent(paragraphId) 686 } 687 } 688 } 689 } 690 } 691 } 692 693 @if (!businessPage) 694 { 695 696 if (showApplier) 697 { 698 699 @RenderContent(departmentData.GetString("ContentApplierHeadline"), departmentData.GetString("ContentApplierColumn1"), departmentData.GetString("ContentApplierColumn2"), imageApplier, 700 departmentData.GetString("ContentApplierHeadlineFiftyFifty"), departmentData.GetString("ContentApplierTextFiftyFifty")); 701 } 702 <div id="departmentPageEmployees" class="container-fluid container-fluid-extra--xxxl margin-half-bottom padding-standard-top"> 703 <section class="employees"> 704 <h2 class="employees__subheader">@Translate("Vores medarbejdere")</h2> 705 @RenderItemList(new 706 { 707 ItemType = "Consultant", 708 ListSourceType = "Area", 709 ListSourceArea = areaId, 710 ItemFieldsList = "*", 711 ListTemplate = "ItemPublisher/List/ConsultantList.cshtml", 712 ListPageSize = "1000", 713 Filter = "Department_IDs contains \"" + departmentId + "\"" 714 }) 715 </section> 716 </div> 717 <div class="container-fluid container-fluid-extra"> 718 <hr style="margin: 0;"> 719 </div> 720 } 721 722 @if (jobsDepartment.Any() && !businessPage) 723 { 724 if (Model.Area.ID != assistancehrPartnersAreaId) 725 { 726 <div id=departmentPageJobs class="container-fluid container-fluid-extra bg-white"> 727 <section class="padding-standard"> 728 <div class="company__slider-wrapper"> 729 <div class="row"> 730 <div class="col-12 col-md-4 col-lg-4"> 731 <div class="company__slider-wrapper__text-wrapper"> 732 <h2 class="company__slider-wrapper__text-wrapper__header">@(Translate("Ledige stillinger i området"))</h2> 733 <div class="company__slider-wrapper__text-wrapper__text"> 734 @(Translate("JKS har altid mere end 50 ledige vikarjob – se om der er et job for dig!")) 735 </div> 736 </div> 737 738 <div class="company__slider-wrapper__controls"> 739 <div class="arrow-small js-company__slider__controls-prev company__slider-wrapper__controls-prev user-select-none"></div> 740 <div class="arrow-small js-company__slider__controls-next company__slider-wrapper__controls-next user-select-none"></div> 741 </div> 742 </div> 743 744 <div class="col-12 col-md-8 col-xl-9 company__slider-wrapper__wrapper"> 745 <div class="js-company-slider company__slider"> 746 <div class="swiper-wrapper"> 747 748 @foreach (var job in jobsDepartment) 749 { 750 751 string jobDescription = job.DescriptionShort; 752 string jobDescriptionLong = job.Description; 753 string jobSubtitle = job.Subtitle; 754 string finalDescription = (string.IsNullOrEmpty(jobDescription) ? jobDescriptionLong : jobDescription).StripHtml(); 755 string description = (string.IsNullOrEmpty(jobSubtitle) ? finalDescription : jobSubtitle).StripHtml().TruncateHtml(80, "..."); 756 string jobUrl = "/Default.aspx?ID=" + job.Id; 757 758 <a href="@jobUrl" class="company__slider__item js-company-slider-item col-12 col-sm-7 col-md-8 col-lg-7 col-xl-6 col-xxl-5"> 759 760 <p class="company__slider__item__date">@job.ActiveFrom</p> 761 762 <h3 class="company__slider__item__text"> 763 @job.Title 764 </h3> 765 766 <p class="company__slider__item__subtext"> 767 @description 768 </p> 769 770 <span class="company__slider__item__link" href="#">@Translate("Se jobopslag")</span> 771 </a> 772 } 773 </div> 774 </div> 775 </div> 776 </div> 777 </div> 778 <div class="pt-rem-5 text-center"> 779 <a href="@allJobsLink" class="btn btn-primary btn-transparant"> 780 @Translate("Alle ledige stillinger") 781 </a> 782 </div> 783 </section> 784 </div> 785 } 786 787 } 788 789 @if (businessPage && departmentData.GetBoolean("ShowBusinessSection")) 790 { 791 792 @RenderContent(departmentData.GetString("ContentBusinessHeadline"), departmentData.GetString("ContentBusinessColumn1"), departmentData.GetString("ContentBusinessColumn2"), imageBusiness, 793 departmentData.GetString("ContentBusinessFiftyFifty"), departmentData.GetString("ContentBusinessTextFiftyFifty")); 794 795 } 796 797 @if (businessPage) 798 { 799 if (Model.Area.ID != assistancehrPartnersAreaId) 800 { 801 <div class="container-fluid container-fluid-extra"> 802 <hr style="margin: 0;"> 803 </div> 804 <div id="departmentPageEmployees" class="container-fluid container-fluid-extra--xxxl margin-half-bottom padding-standard-top"> 805 <section class="employees"> 806 <h2 class="employees__subheader">@Translate("Vores medarbejdere")</h2> 807 @RenderItemList(new 808 { 809 ItemType = "Consultant", 810 ListSourceType = "Area", 811 ListSourceArea = areaId, 812 ItemFieldsList = "*", 813 ListTemplate = "ItemPublisher/List/ConsultantList.cshtml", 814 ListPageSize = "1000", 815 Filter = "Department_IDs contains \"" + departmentId + "\"" 816 }) 817 </section> 818 </div> 819 } 820 } 821 822 <section class="map-info"> 823 <div class="text-center"> 824 <h2 class="big-header-font d-block d-lg-none mb-4 mt-5">Her finder <br /> du os</h2> 825 </div> 826 <div class="row g-0"> 827 <div id="js-department-info-@departmentId" class="col-12 col-lg-5 justify-content-center d-flex order-lg-first bg-eggwhite order-last"> 828 @{ 829 string[] latlng = departmentData.GetString("LatLong").Split(','); 830 string isAssistance = Model.Area.ID == assistancehrPartnersAreaId ? "Assistance" : "JKS"; 831 } 832 <div class="department-map__details"> 833 <div class="department-map__details__top"> 834 <h2 class="big-header-font d-none d-lg-block mb-5 pb-3">@Translate("Her finder du os")</h2> 835 </div> 836 <div class="department-map__details__bottom row g-0"> 837 <h2 id="lat-long" data-lat="@latlng[0]" data-lng="@latlng[1]" data-urlmapgoogle="@departmentData.GetString("Address"),@departmentData.GetString("City")">@isAssistance<br>@departmentData.GetString("Web_Name")</h2> 838 <div class="col"> 839 <p id="js-department-adress"> 840 @departmentData.GetString("Address")<br /> 841 @departmentData.GetString("Postal_Code") @departmentData.GetString("City") 842 </p> 843 @Pageview.Area.Item["OpeningHours"] 844 </div> 845 <div class="col"> 846 <p> 847 <a href="tel:@departmentData.GetString("Phone")">T: @departmentData.GetString("Phone")</a><br /> 848 <a href="mailto:@departmentData.GetString("Email")">@departmentData.GetString("Email")</a> 849 </p> 850 @Pageview.Area.Item["PhoneHours"] 851 </div> 852 <div> 853 <a href="/kontakt#map-scroll-start" class="btn btn-secondary mt-4">Se alle afdelinger</a> 854 </div> 855 </div> 856 </div> 857 </div> 858 <div class="col-12 col-lg-7"> 859 <div id="js-department-map-single" class="department-map__map" data-language="@Pageview.Area.CultureInfo.TwoLetterISOLanguageName"> 860 </div> 861 </div> 862 </div> 863 </section> 864 865 @if (formIdUsed > 0 && !String.IsNullOrEmpty(departmentData.GetString("Email"))) 866 { 867 868 <div class="container-padding-mobile-lg" id="anchor-contactform"> 869 <section class="contact padding-standard"> 870 <div class="d-flex flex-column-reverse flex-lg-row"> 871 <div class="col-12 col-lg-6 contact__form contact__form__padding d-flex flex-column justify-content-center pt-rem-2 pt-rem-lg-2 pb-rem-lg-2 p-rem-xl-7"> 872 <h2 class="contact__form__header"> 873 @if (!businessPage) 874 { 875 @Translate("Ring mig op?") 876 } 877 else 878 { 879 @Translate("Kontakt os") 880 } 881 </h2> 882 <div class="contact__form__text"> 883 <p>@Translate("Fortæl os, hvad vi kan gøre for dig – og vi hjælper så hurtigt som muligt.")</p> 884 </div> 885 886 @RenderParagraphContent(formIdUsed) 887 </div> 888 889 @{ 890 //Form image only for swedish page 891 var imageUrl = ""; 892 if (Model.Area.ID == 21) 893 { 894 imageUrl = "/Admin/Public/GetImage.ashx?Image=/Files/Images/JKS Sverige/Kontakt 1110 x 1000/9931 1110 x 1000.jpg&amp;Crop=7&amp;Format=webP&amp;width=1110&amp;Height=1000&amp;Quality=75"; 895 } 896 else 897 { 898 imageUrl = "/Admin/Public/GetImage.ashx?Image=/Files/Images/Jks22/department-image-contactform.jpg&amp;Crop=7&amp;Format=webP&amp;width=1110&amp;Height=1000&amp;Quality=75"; 899 } 900 } 901 902 <div class="col-12 col-lg-6 contact__image @if(!businessPage){<text>small</text>} background-center" style="background-image: url('@imageUrl')"></div> 903 </div> 904 </section> 905 </div> 906 907 } 908 </div> 909 910 @SnippetStart("Metas") 911 @if (businessPage) 912 { 913 if (!String.IsNullOrEmpty(departmentData.GetString("SOME_Title_Business"))) 914 { 915 <meta property="og:title" content="@departmentData.GetString("SOME_Title_Business")" /> 916 } 917 918 if (!String.IsNullOrEmpty(departmentData.GetString("SOME_Image_Busines"))) 919 { 920 <meta property="og:image" content="@(urlHost)@departmentData.GetString("SOME_Image_Busines")" /> 921 } 922 } 923 else 924 { 925 if (!String.IsNullOrEmpty(departmentData.GetString("SOME_Title_Temp"))) 926 { 927 <meta property="og:title" content="@departmentData.GetString("SOME_Title_Temp")" /> 928 } 929 if (!String.IsNullOrEmpty(departmentData.GetString("SOME_Image_Temp"))) 930 { 931 <meta property="og:image" content="@(urlHost)@departmentData.GetString("SOME_Image_Temp")" /> 932 } 933 } 934 @SnippetEnd("Metas") 935 936 @SnippetStart("JavaScriptBottom") 937 <script type="text/javascript"> 938 var mailRecipientContactForm = document.getElementById("MailRecipient"); 939 if (mailRecipientContactForm) { 940 mailRecipientContactForm.value = "@departmentData.GetString("Email")"; 941 } 942 </script> 943 @SnippetEnd("JavaScriptBottom") 944 945 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel> 946 947 @{ 948 int formIdParagraph = Dynamicweb.Core.Converter.ToInt32(Model.Area.Item.GetString("FooterForm")?.Substring(Model.Area.Item.GetString("FooterForm").LastIndexOf('#') + 1)); 949 } 950 951 <footer class="footer"> 952 <div class="container-fluid container-fluid-extra "> 953 <div class="row position-relative"> 954 <div class="col-12 col-md-7"> 955 <div class="footer__form-wrapper"> 956 <h3 class="footer__form-wrapper__header"> 957 <span class="footer__form-wrapper__header__text">@Model.Area.Item.GetString("FooterFormHeadline")</span> 958 959 <div class="footer__form-wrapper__header__svg-wrapper"> 960 <svg class="js-footer-form-btn footer__form-wrapper__header__svg-wrapper__svg arrow-small" version="1.1" id="Layer_1" 961 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 962 viewBox="0 0 71 71" style="enable-background:new 0 0 71 71;" xml:space="preserve"> 963 <g> 964 <path d="M37.4,26.7l8.8,8.8l-8.8,8.8l-1.9-2l3.3-3.3c0.7-0.7,1.6-1.2,2.9-1.9l-0.4-1c-1.1,0.4-2.1,0.8-3.7,0.8L24.8,37v-2.9 965 L37.6,34c1.6,0,2.8,0.5,3.7,0.8l0.4-1c-1.4-0.7-2.2-1.1-3-1.9l-3.3-3.2L37.4,26.7z" /> 966 </g> 967 </svg> 968 </div> 969 </h3> 970 971 <p class="footer__form-wrapper__text"> 972 @Model.Area.Item.GetString("FooterFormSubHeadline") 973 </p> 974 @if (formIdParagraph > 0 && String.IsNullOrEmpty(System.Web.HttpContext.Current.Request.QueryString["pid"])) 975 { 976 @RenderParagraphContent(formIdParagraph) 977 } 978 </div> 979 </div> 980 <div class="col-12"> 981 <div class="d-flex footer__bottom flex-wrap flex-xxl-nowrap"> 982 <div class="flex-fill d-none d-lg-block footer__bottom__logo-wrapper pe-lg-3"> 983 <img class="footer__bottom__logo-wrapper__logo" src="@Model.Area.Item.GetFile("LogoFooter")" alt="@Translate("Logo")" /> 984 </div> 985 986 <ul class="flex-fill footer__bottom__list pe-2 pe-sm-3"> 987 <li class="footer__bottom__list__header">@Model.Area.Item.GetString("FooterHeadlineLinkList1")</li> 988 @foreach (var list in Model.Area.Item.GetItems("FooterLinkList1")) 989 { 990 <li class="footer__bottom__list__item"> 991 <a class="footer__bottom__list__item__link" href="@list.GetLink("Link")" title="@Translate("Go to") @list.GetString("Tekst")">@list.GetString("Tekst")</a> 992 </li> 993 } 994 </ul> 995 <ul class="flex-fill footer__bottom__list px-2 px-sm-3"> 996 <li class="footer__bottom__list__header">@Model.Area.Item.GetString("FooterHeadlineLinkList2")</li> 997 @foreach (var list in Model.Area.Item.GetItems("FooterLinkList2")) 998 { 999 <li class="footer__bottom__list__item"> 1000 <a class="footer__bottom__list__item__link" href="@list.GetLink("Link")" title="@Translate("Go to") @list.GetString("Tekst")">@list.GetString("Tekst")</a> 1001 </li> 1002 } 1003 </ul> 1004 1005 @if (Model.Area.Item.GetItems("FooterLinkList3").Count() > 0) 1006 { 1007 <ul class="flex-fill footer__bottom__list pe-2 pe-sm-3"> 1008 <li class="footer__bottom__list__header mt-3 mt-sm-0">@Model.Area.Item.GetString("FooterHeadlineLinkList3")</li> 1009 @foreach (var list in Model.Area.Item.GetItems("FooterLinkList3")) 1010 { 1011 <li class="footer__bottom__list__item"> 1012 <a class="footer__bottom__list__item__link" href="@list.GetLink("Link")" title="@Translate("Go to") @list.GetString("Tekst")">@list.GetString("Tekst")</a> 1013 </li> 1014 } 1015 </ul> 1016 } 1017 1018 <div class="flex-fill footer__bottom__follow d-flex flex-column"> 1019 <span class="footer__bottom__follow__header d-none d-lg-block">@Translate("Follow us")</span> 1020 <div> 1021 @foreach (var icon in Model.Area.Item.GetItems("SocialIcons")) 1022 { 1023 <a href="@icon.GetLink("Link")" title="@Translate("Go to") @icon.GetString("LinkAltText")" class="d-inline-block"> 1024 <img class="footer__bottom__follow__linkedin img-fluid" src="@icon.GetFile("Icon")" alt="@icon.GetString("LinkAltText")" /> 1025 </a> 1026 1027 } 1028 </div> 1029 @if (!Model.Area.Item.GetBoolean("Hide_Branding_Logo")) 1030 { 1031 <a href="#"> 1032 <img class="footer__bottom__follow__jks img-fluid" src="@Model.Area.Item.GetFile("LogoBranding")" alt="@Translate("Logo branding")" /> 1033 </a> 1034 } 1035 </div> 1036 </div> 1037 </div> 1038 @if (!String.IsNullOrEmpty(Model.Area.Item.GetString("AAA_Logo"))) 1039 { 1040 <div id="aaa_rating" class="aaa_rating"> 1041 @Model.Area.Item.GetString("AAA_Logo") 1042 </div> 1043 } 1044 </div> 1045 </div> 1046 1047 </footer> 1048 1049 @if (modelId == 17 || modelId == 23) 1050 { 1051 <script src="/Files/Templates/Designs/dist/CareerJks2022.js?v=@System.IO.File.GetLastWriteTime(AppDomain.CurrentDomain.BaseDirectory + "/Files/Templates/Designs/dist/CareerJks2022.css").Ticks"></script> 1052 } 1053 else if (modelId == 16) 1054 { 1055 <script src="/Files/Templates/Designs/dist/ProfJks2022.js?v=@System.IO.File.GetLastWriteTime(AppDomain.CurrentDomain.BaseDirectory + "/Files/Templates/Designs/dist/ProfJks2022.css").Ticks"></script> 1056 } 1057 else 1058 { 1059 var masterScript = VestjyskMarketing.Helpers.Utilities.CacheBuster("/Files/Templates/Designs/dist/Jks2022.js"); 1060 <script src="@masterScript"></script> 1061 } 1062 1063 <!--Used for youtube video on site--> 1064 <div class="modal fade" id="youtubeModal" aria-hidden="true" tabindex="-1"> 1065 <div class="modal-dialog modal-xl modal-dialog-centered justify-content-center"> 1066 <div class="modal-content"> 1067 <div id="js-ytplayer"></div> 1068 </div> 1069 </div> 1070 </div> 1071 1072 <script type="text/javascript"> 1073 (function (e, t, o, n, p, r, i) { e.visitorGlobalObjectAlias = n; e[e.visitorGlobalObjectAlias] = e[e.visitorGlobalObjectAlias] || function () { (e[e.visitorGlobalObjectAlias].q = e[e.visitorGlobalObjectAlias].q || []).push(arguments) }; e[e.visitorGlobalObjectAlias].l = (new Date).getTime(); r = t.createElement("script"); r.src = o; r.async = true; i = t.getElementsByTagName("script")[0]; i.parentNode.insertBefore(r, i) })(window, document, "https://diffuser-cdn.app-us1.com/diffuser/diffuser.js", "vgo"); 1074 vgo('setAccount', '226425903'); 1075 vgo('setTrackByDefault', true); 1076 vgo('process'); 1077 </script> 1078 <script> 1079 1080 document.addEventListener("DOMContentLoaded", function () { 1081 //Saves the current session id in local storage, is used in SaveGCLID 1082 const currentSessionId = "@Dynamicweb.Context.Current.Request.Cookies["ASP.NET_SessionId"].Value"; 1083 localStorage.setItem("currentSessionId", currentSessionId); 1084 1085 }); 1086 1087 </script> 1088 1089 1090 @RenderSnippet("JavaScriptBottom") 1091 </body> 1092 1093 </html>