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&Crop=7&Format=webP&width=1110&Height=1000&Quality=75";
895 }
896 else
897 {
898 imageUrl = "/Admin/Public/GetImage.ashx?Image=/Files/Images/Jks22/department-image-contactform.jpg&Crop=7&Format=webP&width=1110&Height=1000&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>