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_4578c9abc3f94b35a7312b667b169440.Execute() in D:\Web\jks\Website\Files\Templates\Designs\Jks2022\_parsed\DepartmentPage.parsed.cshtml:line 403
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
662 var paragraphService = new Dynamicweb.Content.ParagraphService();
663
664 if (departmentData != null)
665 {
666 var departmentPage = pageService.GetPageForItem("Department", departmentData.Id);
667
668 if (departmentPage != null)
669 {
670 var paragraphs = paragraphService.GetParagraphsByPageId(departmentPage.ID);
671
672 if (paragraphs != null && paragraphs.Any())
673 {
674 string targetContainer = businessPage ? "Business" : "Jobseekers";
675
676 var selectedParagraphIds = paragraphs
677 .Where(p => !string.IsNullOrEmpty(p.Container) &&
678 p.Container.Equals(targetContainer, StringComparison.OrdinalIgnoreCase))
679 .Select(p => p.GlobalID > 0 ? p.GlobalID : p.ID)
680 .ToList();
681
682 foreach (var paragraphId in selectedParagraphIds)
683 {
684 if (paragraphId > 0)
685 {
686 @RenderParagraphContent(paragraphId)
687 }
688 }
689 }
690 }
691 }
692 }
693
694 @if (!businessPage)
695 {
696
697 if (showApplier)
698 {
699
700 @RenderContent(departmentData.GetString("ContentApplierHeadline"), departmentData.GetString("ContentApplierColumn1"), departmentData.GetString("ContentApplierColumn2"), imageApplier,
701 departmentData.GetString("ContentApplierHeadlineFiftyFifty"), departmentData.GetString("ContentApplierTextFiftyFifty"));
702 }
703 <div id="departmentPageEmployees" class="container-fluid container-fluid-extra--xxxl margin-half-bottom padding-standard-top">
704 <section class="employees">
705 <h2 class="employees__subheader">@Translate("Vores medarbejdere")</h2>
706 @RenderItemList(new
707 {
708 ItemType = "Consultant",
709 ListSourceType = "Area",
710 ListSourceArea = areaId,
711 ItemFieldsList = "*",
712 ListTemplate = "ItemPublisher/List/ConsultantList.cshtml",
713 ListPageSize = "1000",
714 Filter = "Department_IDs contains \"" + departmentId + "\""
715 })
716 </section>
717 </div>
718 <div class="container-fluid container-fluid-extra">
719 <hr style="margin: 0;">
720 </div>
721 }
722
723 @if (jobsDepartment.Any() && !businessPage)
724 {
725 if (Model.Area.ID != assistancehrPartnersAreaId)
726 {
727 <div id=departmentPageJobs class="container-fluid container-fluid-extra bg-white">
728 <section class="padding-standard">
729 <div class="company__slider-wrapper">
730 <div class="row">
731 <div class="col-12 col-md-4 col-lg-4">
732 <div class="company__slider-wrapper__text-wrapper">
733 <h2 class="company__slider-wrapper__text-wrapper__header">@(Translate("Ledige stillinger i området"))</h2>
734 <div class="company__slider-wrapper__text-wrapper__text">
735 @(Translate("JKS har altid mere end 50 ledige vikarjob – se om der er et job for dig!"))
736 </div>
737 </div>
738
739 <div class="company__slider-wrapper__controls">
740 <div class="arrow-small js-company__slider__controls-prev company__slider-wrapper__controls-prev user-select-none"></div>
741 <div class="arrow-small js-company__slider__controls-next company__slider-wrapper__controls-next user-select-none"></div>
742 </div>
743 </div>
744
745 <div class="col-12 col-md-8 col-xl-9 company__slider-wrapper__wrapper">
746 <div class="js-company-slider company__slider">
747 <div class="swiper-wrapper">
748
749 @foreach (var job in jobsDepartment)
750 {
751
752 string jobDescription = job.DescriptionShort;
753 string jobDescriptionLong = job.Description;
754 string jobSubtitle = job.Subtitle;
755 string finalDescription = (string.IsNullOrEmpty(jobDescription) ? jobDescriptionLong : jobDescription).StripHtml();
756 string description = (string.IsNullOrEmpty(jobSubtitle) ? finalDescription : jobSubtitle).StripHtml().TruncateHtml(80, "...");
757 string jobUrl = "/Default.aspx?ID=" + job.Id;
758
759 <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">
760
761 <p class="company__slider__item__date">@job.ActiveFrom</p>
762
763 <h3 class="company__slider__item__text">
764 @job.Title
765 </h3>
766
767 <p class="company__slider__item__subtext">
768 @description
769 </p>
770
771 <span class="company__slider__item__link" href="#">@Translate("Se jobopslag")</span>
772 </a>
773 }
774 </div>
775 </div>
776 </div>
777 </div>
778 </div>
779 <div class="pt-rem-5 text-center">
780 <a href="@allJobsLink" class="btn btn-primary btn-transparant">
781 @Translate("Alle ledige stillinger")
782 </a>
783 </div>
784 </section>
785 </div>
786 }
787
788 }
789
790 @if (businessPage && departmentData.GetBoolean("ShowBusinessSection"))
791 {
792
793 @RenderContent(departmentData.GetString("ContentBusinessHeadline"), departmentData.GetString("ContentBusinessColumn1"), departmentData.GetString("ContentBusinessColumn2"), imageBusiness,
794 departmentData.GetString("ContentBusinessFiftyFifty"), departmentData.GetString("ContentBusinessTextFiftyFifty"));
795
796 }
797
798 @if (businessPage)
799 {
800 if (Model.Area.ID != assistancehrPartnersAreaId)
801 {
802 <div class="container-fluid container-fluid-extra">
803 <hr style="margin: 0;">
804 </div>
805 <div id="departmentPageEmployees" class="container-fluid container-fluid-extra--xxxl margin-half-bottom padding-standard-top">
806 <section class="employees">
807 <h2 class="employees__subheader">@Translate("Vores medarbejdere")</h2>
808 @RenderItemList(new
809 {
810 ItemType = "Consultant",
811 ListSourceType = "Area",
812 ListSourceArea = areaId,
813 ItemFieldsList = "*",
814 ListTemplate = "ItemPublisher/List/ConsultantList.cshtml",
815 ListPageSize = "1000",
816 Filter = "Department_IDs contains \"" + departmentId + "\""
817 })
818 </section>
819 </div>
820 }
821 }
822
823 <section class="map-info">
824 <div class="text-center">
825 <h2 class="big-header-font d-block d-lg-none mb-4 mt-5">Her finder <br /> du os</h2>
826 </div>
827 <div class="row g-0">
828 <div id="js-department-info-@departmentId" class="col-12 col-lg-5 justify-content-center d-flex order-lg-first bg-eggwhite order-last">
829 @{
830 string[] latlng = departmentData.GetString("LatLong").Split(',');
831 string isAssistance = Model.Area.ID == assistancehrPartnersAreaId ? "Assistance" : "JKS";
832 }
833 <div class="department-map__details">
834 <div class="department-map__details__top">
835 <h2 class="big-header-font d-none d-lg-block mb-5 pb-3">@Translate("Her finder du os")</h2>
836 </div>
837 <div class="department-map__details__bottom row g-0">
838 <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>
839 <div class="col">
840 <p id="js-department-adress">
841 @departmentData.GetString("Address")<br />
842 @departmentData.GetString("Postal_Code") @departmentData.GetString("City")
843 </p>
844 @Pageview.Area.Item["OpeningHours"]
845 </div>
846 <div class="col">
847 <p>
848 <a href="tel:@departmentData.GetString("Phone")">T: @departmentData.GetString("Phone")</a><br />
849 <a href="mailto:@departmentData.GetString("Email")">@departmentData.GetString("Email")</a>
850 </p>
851 @Pageview.Area.Item["PhoneHours"]
852 </div>
853 <div>
854 <a href="/kontakt#map-scroll-start" class="btn btn-secondary mt-4">Se alle afdelinger</a>
855 </div>
856 </div>
857 </div>
858 </div>
859 <div class="col-12 col-lg-7">
860 <div id="js-department-map-single" class="department-map__map" data-language="@Pageview.Area.CultureInfo.TwoLetterISOLanguageName">
861 </div>
862 </div>
863 </div>
864 </section>
865
866 @if (formIdUsed > 0 && !String.IsNullOrEmpty(departmentData.GetString("Email")))
867 {
868
869 <div class="container-padding-mobile-lg" id="anchor-contactform">
870 <section class="contact padding-standard">
871 <div class="d-flex flex-column-reverse flex-lg-row">
872 <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">
873 <h2 class="contact__form__header">
874 @if (!businessPage)
875 {
876 @Translate("Ring mig op?")
877 }
878 else
879 {
880 @Translate("Kontakt os")
881 }
882 </h2>
883 <div class="contact__form__text">
884 <p>@Translate("Fortæl os, hvad vi kan gøre for dig – og vi hjælper så hurtigt som muligt.")</p>
885 </div>
886
887 @RenderParagraphContent(formIdUsed)
888 </div>
889
890 @{
891 //Form image only for swedish page
892 var imageUrl = "";
893 if (Model.Area.ID == 21)
894 {
895 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";
896 }
897 else
898 {
899 imageUrl = "/Admin/Public/GetImage.ashx?Image=/Files/Images/Jks22/department-image-contactform.jpg&Crop=7&Format=webP&width=1110&Height=1000&Quality=75";
900 }
901 }
902
903 <div class="col-12 col-lg-6 contact__image @if(!businessPage){<text>small</text>} background-center" style="background-image: url('@imageUrl')"></div>
904 </div>
905 </section>
906 </div>
907
908 }
909 </div>
910
911 @SnippetStart("Metas")
912 @if (businessPage)
913 {
914 if (!String.IsNullOrEmpty(departmentData.GetString("SOME_Title_Business")))
915 {
916 <meta property="og:title" content="@departmentData.GetString("SOME_Title_Business")" />
917 }
918
919 if (!String.IsNullOrEmpty(departmentData.GetString("SOME_Image_Busines")))
920 {
921 <meta property="og:image" content="@(urlHost)@departmentData.GetString("SOME_Image_Busines")" />
922 }
923 }
924 else
925 {
926 if (!String.IsNullOrEmpty(departmentData.GetString("SOME_Title_Temp")))
927 {
928 <meta property="og:title" content="@departmentData.GetString("SOME_Title_Temp")" />
929 }
930 if (!String.IsNullOrEmpty(departmentData.GetString("SOME_Image_Temp")))
931 {
932 <meta property="og:image" content="@(urlHost)@departmentData.GetString("SOME_Image_Temp")" />
933 }
934 }
935 @SnippetEnd("Metas")
936
937 @SnippetStart("JavaScriptBottom")
938 <script type="text/javascript">
939 var mailRecipientContactForm = document.getElementById("MailRecipient");
940 if (mailRecipientContactForm) {
941 mailRecipientContactForm.value = "@departmentData.GetString("Email")";
942 }
943 </script>
944 @SnippetEnd("JavaScriptBottom")
945
946 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
947
948 @{
949 int formIdParagraph = Dynamicweb.Core.Converter.ToInt32(Model.Area.Item.GetString("FooterForm")?.Substring(Model.Area.Item.GetString("FooterForm").LastIndexOf('#') + 1));
950 }
951
952 <footer class="footer">
953 <div class="container-fluid container-fluid-extra ">
954 <div class="row position-relative">
955 <div class="col-12 col-md-7">
956 <div class="footer__form-wrapper">
957 <h3 class="footer__form-wrapper__header">
958 <span class="footer__form-wrapper__header__text">@Model.Area.Item.GetString("FooterFormHeadline")</span>
959
960 <div class="footer__form-wrapper__header__svg-wrapper">
961 <svg class="js-footer-form-btn footer__form-wrapper__header__svg-wrapper__svg arrow-small" version="1.1" id="Layer_1"
962 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
963 viewBox="0 0 71 71" style="enable-background:new 0 0 71 71;" xml:space="preserve">
964 <g>
965 <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
966 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" />
967 </g>
968 </svg>
969 </div>
970 </h3>
971
972 <p class="footer__form-wrapper__text">
973 @Model.Area.Item.GetString("FooterFormSubHeadline")
974 </p>
975 @if (formIdParagraph > 0 && String.IsNullOrEmpty(System.Web.HttpContext.Current.Request.QueryString["pid"]))
976 {
977 @RenderParagraphContent(formIdParagraph)
978 }
979 </div>
980 </div>
981 <div class="col-12">
982 <div class="d-flex footer__bottom flex-wrap flex-xxl-nowrap">
983 <div class="flex-fill d-none d-lg-block footer__bottom__logo-wrapper pe-lg-3">
984 <img class="footer__bottom__logo-wrapper__logo" src="@Model.Area.Item.GetFile("LogoFooter")" alt="@Translate("Logo")" />
985 </div>
986
987 <ul class="flex-fill footer__bottom__list pe-2 pe-sm-3">
988 <li class="footer__bottom__list__header">@Model.Area.Item.GetString("FooterHeadlineLinkList1")</li>
989 @foreach (var list in Model.Area.Item.GetItems("FooterLinkList1"))
990 {
991 <li class="footer__bottom__list__item">
992 <a class="footer__bottom__list__item__link" href="@list.GetLink("Link")" title="@Translate("Go to") @list.GetString("Tekst")">@list.GetString("Tekst")</a>
993 </li>
994 }
995 </ul>
996 <ul class="flex-fill footer__bottom__list px-2 px-sm-3">
997 <li class="footer__bottom__list__header">@Model.Area.Item.GetString("FooterHeadlineLinkList2")</li>
998 @foreach (var list in Model.Area.Item.GetItems("FooterLinkList2"))
999 {
1000 <li class="footer__bottom__list__item">
1001 <a class="footer__bottom__list__item__link" href="@list.GetLink("Link")" title="@Translate("Go to") @list.GetString("Tekst")">@list.GetString("Tekst")</a>
1002 </li>
1003 }
1004 </ul>
1005
1006 @if (Model.Area.Item.GetItems("FooterLinkList3").Count() > 0)
1007 {
1008 <ul class="flex-fill footer__bottom__list pe-2 pe-sm-3">
1009 <li class="footer__bottom__list__header mt-3 mt-sm-0">@Model.Area.Item.GetString("FooterHeadlineLinkList3")</li>
1010 @foreach (var list in Model.Area.Item.GetItems("FooterLinkList3"))
1011 {
1012 <li class="footer__bottom__list__item">
1013 <a class="footer__bottom__list__item__link" href="@list.GetLink("Link")" title="@Translate("Go to") @list.GetString("Tekst")">@list.GetString("Tekst")</a>
1014 </li>
1015 }
1016 </ul>
1017 }
1018
1019 <div class="flex-fill footer__bottom__follow d-flex flex-column">
1020 <span class="footer__bottom__follow__header d-none d-lg-block">@Translate("Follow us")</span>
1021 <div>
1022 @foreach (var icon in Model.Area.Item.GetItems("SocialIcons"))
1023 {
1024 <a href="@icon.GetLink("Link")" title="@Translate("Go to") @icon.GetString("LinkAltText")" class="d-inline-block">
1025 <img class="footer__bottom__follow__linkedin img-fluid" src="@icon.GetFile("Icon")" alt="@icon.GetString("LinkAltText")" />
1026 </a>
1027
1028 }
1029 </div>
1030 @if (!Model.Area.Item.GetBoolean("Hide_Branding_Logo"))
1031 {
1032 <a href="#">
1033 <img class="footer__bottom__follow__jks img-fluid" src="@Model.Area.Item.GetFile("LogoBranding")" alt="@Translate("Logo branding")" />
1034 </a>
1035 }
1036 </div>
1037 </div>
1038 </div>
1039 @if (!String.IsNullOrEmpty(Model.Area.Item.GetString("AAA_Logo")))
1040 {
1041 <div id="aaa_rating" class="aaa_rating">
1042 @Model.Area.Item.GetString("AAA_Logo")
1043 </div>
1044 }
1045 </div>
1046 </div>
1047
1048 </footer>
1049
1050 @if (modelId == 17 || modelId == 23)
1051 {
1052 <script src="/Files/Templates/Designs/dist/CareerJks2022.js?v=@System.IO.File.GetLastWriteTime(AppDomain.CurrentDomain.BaseDirectory + "/Files/Templates/Designs/dist/CareerJks2022.css").Ticks"></script>
1053 }
1054 else if (modelId == 16)
1055 {
1056 <script src="/Files/Templates/Designs/dist/ProfJks2022.js?v=@System.IO.File.GetLastWriteTime(AppDomain.CurrentDomain.BaseDirectory + "/Files/Templates/Designs/dist/ProfJks2022.css").Ticks"></script>
1057 }
1058 else
1059 {
1060 var masterScript = VestjyskMarketing.Helpers.Utilities.CacheBuster("/Files/Templates/Designs/dist/Jks2022.js");
1061 <script src="@masterScript"></script>
1062 }
1063
1064 <!--Used for youtube video on site-->
1065 <div class="modal fade" id="youtubeModal" aria-hidden="true" tabindex="-1">
1066 <div class="modal-dialog modal-xl modal-dialog-centered justify-content-center">
1067 <div class="modal-content">
1068 <div id="js-ytplayer"></div>
1069 </div>
1070 </div>
1071 </div>
1072
1073 <script type="text/javascript">
1074 (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");
1075 vgo('setAccount', '226425903');
1076 vgo('setTrackByDefault', true);
1077 vgo('process');
1078 </script>
1079 <script>
1080
1081 document.addEventListener("DOMContentLoaded", function () {
1082 //Saves the current session id in local storage, is used in SaveGCLID
1083 const currentSessionId = "@Dynamicweb.Context.Current.Request.Cookies["ASP.NET_SessionId"].Value";
1084 localStorage.setItem("currentSessionId", currentSessionId);
1085
1086 });
1087
1088 </script>
1089
1090
1091 @RenderSnippet("JavaScriptBottom")
1092 </body>
1093
1094 </html>