Error executing template "Designs/DF2016/_parsed/SubPage.parsed.cshtml"
System.Net.WebException: The remote server returned an error: (500) Internal Server Error.
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
at System.Net.WebClient.DownloadString(Uri address)
at CompiledRazorTemplates.Dynamic.RazorEngine_f927647aa2be42009775a08633520138.Execute() in C:\home\site\wwwroot\DinForsyning\Files\Templates\Designs\DF2016\_parsed\SubPage.parsed.cshtml:line 1051
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.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
2 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
3 @using System.IO
4 @using System.Web
5 @using System.Linq
6
7 @helper RenderGoogleConversion(string conversionId, string conversionLanguage, string conversionFormat, string conversionColor, string conversionLabel, string conversionValue, string conversionCurrency, bool remarketingOnly) {
8 var googleConversionId = conversionId;
9 var googleConversionLanguage = string.IsNullOrWhiteSpace(conversionLanguage) ? "en" : conversionLanguage;
10 var googleConversionFormat = string.IsNullOrWhiteSpace(conversionFormat) ? "3" : conversionFormat;
11 var googleConversionColor = string.IsNullOrWhiteSpace(conversionColor) ? "ffffff" : conversionColor;
12 var googleConversionLabel = conversionLabel;
13 var googleConversionValue = string.IsNullOrWhiteSpace(conversionValue) ? "0" : conversionValue;
14 var googleConversionCurrency = string.IsNullOrWhiteSpace(conversionCurrency) ? "DKK" : conversionCurrency;
15 var googleRemarketingOnly = remarketingOnly;
16
17 <!-- Google Code for the Conversion Page -->
18 <script type="text/javascript">
19 /* <![CDATA[ */
20 var google_conversion_id = @(googleConversionId);
21 var google_conversion_language = '@(googleConversionLanguage)';
22 var google_conversion_format = '@(googleConversionFormat)';
23 var google_conversion_color = '@(googleConversionColor)';
24 var google_conversion_label = '@(googleConversionLabel)';
25 var google_conversion_value = @(googleConversionValue);
26 var google_conversion_currency = '@(googleConversionCurrency)';
27 var google_remarketing_only = @(googleRemarketingOnly ? "true" : "false");
28 /* ]]> */
29 </script>
30 <script type="text/javascript" src="https://www.googleadservices.com/pagead/conversion.js"></script>
31 <noscript>
32 <div style="display: inline;">
33 <img src="https://www.googleadservices.com/pagead/conversion/@(googleConversionId)/?value=@(googleConversionValue)&currency_code=@(googleConversionCurrency)&label=@(googleConversionLabel)&guid=ON&script=0" alt="" width="1" height="1" style="border-style: none;">
34 </div>
35 </noscript>
36 }
37 @helper RenderGoogleAnalyticsEcommerceTracking(string transactionId, string affiliation, string revenue, string shipping, string tax, string currency, string[][] orderLines) {
38 <script type="text/javascript">
39 if (!window.skabertrang_ga_ecommerce_callbacks)
40 window.skabertrang_ga_ecommerce_callbacks = [];
41
42 (function() {
43 var orderLines = @(Newtonsoft.Json.JsonConvert.SerializeObject(orderLines));
44
45 window.skabertrang_ga_ecommerce_callbacks.push(function() {
46 ga('require', 'ecommerce');
47
48 ga('ecommerce:addTransaction', {
49 'id' : '@(transactionId)',
50 'affiliation' : '@(affiliation)',
51 'revenue' : '@(revenue)',
52 'shipping' : '@(shipping)',
53 'tax' : '@(tax)',
54 'currency' : '@(currency)'
55 });
56
57 if (orderLines && orderLines.length) {
58 for (var i = 0; i < orderLines.length; i++) {
59 ga('ecommerce:addItem', {
60 'id' : '@(transactionId)',
61 'name' : orderLines[i][1],
62 'sku' : orderLines[i][0],
63 'category' : orderLines[i][2],
64 'price' : orderLines[i][3],
65 'quantity' : orderLines[i][4],
66 'currency' : '@(currency)'
67 });
68 }
69 }
70
71 ga('ecommerce:send');
72 });
73 })();
74 </script>
75 }
76 @functions {
77 string mediaOverlay(string filePath, string filePathThumb = "", string caption = "", string group = "", string alt = "", string title = "", string extraAttributes = "") {
78 var imageOverlayType = Pageview.Area.Item["ImageOverlayType"] as string;
79
80 filePathThumb = !string.IsNullOrWhiteSpace(filePathThumb) ? filePathThumb : filePath;
81 group = !string.IsNullOrWhiteSpace(group) ? group : !string.IsNullOrWhiteSpace(GetString("ParagraphID")) ? GetString("ParagraphID") : "imageGroup";
82
83 if (imageOverlayType == "Fancybox") {
84 return "<a class='fancybox media-overlay' href='" + filePath + "' rel='" + group + "' title='" + title + "' data-title='" + caption + "'><img src='/Files/Templates/Designs/DF2016/%22+filePathThumb+%22' alt='" + alt + "' title='" + title + "' class='img-responsive'></a>";
85 } else {
86 return "<a href='" + filePath + "' class='media-overlay' data-lightbox='" + group + "' data-title='" + caption + "'><img src='/Files/Templates/Designs/DF2016/%22+filePathThumb+%22' alt='" + alt + "' title='" + title + "' class='img-responsive'></a>";
87 }
88 }
89
90 string GetImage(string image, int width, int height, int compression, int crop, string colorSpace, bool doNotUpscale) {
91 // Crop
92 // 0 = Center
93 // 1 = From upper left
94 // 2 = From lower left
95 // 3 = From lower right
96 // 4 = From upper right
97 // 5 = Keep aspect ratio
98 // 6 = Fit image
99
100 // ColorSpace
101 // rgb
102 // cmyk
103 // grayscale
104
105 var param = new List<string>();
106
107 param.Add("Image=" + image);
108 param.Add("Format=" + Path.GetExtension(image).Substring(1));
109
110 if (width > 0) {
111 param.Add("Width=" + width);
112 }
113
114 if (height > 0) {
115 param.Add("Height=" + height);
116 }
117
118 param.Add("Compression=" + compression);
119 param.Add("Crop=" + crop);
120 param.Add("ColorSpace=" + colorSpace);
121 param.Add("DoNotUpscale=" + (doNotUpscale ? "True" : "False"));
122
123 return "/Admin/Public/GetImage.ashx?" + string.Join("&", param);
124 }
125
126 string GetImagePlaceholder(int width, int height, string backgroundColor, string textColor, string text) {
127 var r = "https://placehold.it/" + width;
128
129 if (height > 0) {
130 r += "x" + height;
131 }
132
133 if (!string.IsNullOrWhiteSpace(backgroundColor) && !string.IsNullOrWhiteSpace(textColor)) {
134 r += "/" + backgroundColor;
135 r += "/" + textColor;
136 }
137
138 if (!string.IsNullOrWhiteSpace(text)) {
139 r += "?text=" + text.Replace(" ", "+");
140 }
141
142 return r;
143 }
144
145
146 T LoadContextItem<T>(string key) {
147 var obj = Dynamicweb.Context.Current.Items != null ? Dynamicweb.Context.Current.Items[key] : null;
148
149 if (obj == null) {
150 return default(T);
151 }
152
153 return (T)obj;
154 }
155
156 void SaveContextItem(string key, object value) {
157 if (Dynamicweb.Context.Current.Items != null && value != null) {
158 Dynamicweb.Context.Current.Items[key] = value;
159 }
160 }
161
162 string PathCombine(params string[] paths) {
163 return Path.Combine(paths);
164 }
165
166 string NullIfEmpty(string value) {
167 return string.IsNullOrEmpty(value) ? null : value;
168 }
169
170 string NullIfWhiteSpace(string value) {
171 return string.IsNullOrWhiteSpace(value) ? null : value;
172 }
173
174 string ToJson(object value) {
175 return ToJson(value, false);
176 }
177
178 string ToJson(object value, bool indented) {
179 return Newtonsoft.Json.JsonConvert.SerializeObject(
180 value,
181 indented ? Newtonsoft.Json.Formatting.Indented : Newtonsoft.Json.Formatting.None,
182 new Newtonsoft.Json.Converters.IsoDateTimeConverter { DateTimeFormat = "yyyyMMdd'T'HHmmss" }
183 );
184 }
185
186 void AddCssFile(params string[] files) {
187 var list = LoadContextItem<List<string>>("SB.CssFiles");
188
189 if (list == null) {
190 list = new List<string>();
191 }
192
193 foreach (var file in files) {
194 if (!list.Contains(file, StringComparer.OrdinalIgnoreCase)) {
195 list.Add(file);
196 }
197 }
198
199 SaveContextItem("SB.CssFiles", list);
200 }
201
202 void AddJsFile(params string[] files) {
203 var list = LoadContextItem<List<string>>("SB.JsFiles");
204
205 if (list == null) {
206 list = new List<string>();
207 }
208
209 foreach (var file in files) {
210 if (!list.Contains(file, StringComparer.OrdinalIgnoreCase)) {
211 list.Add(file);
212 }
213 }
214
215 SaveContextItem("SB.JsFiles", list);
216 }
217 }
218
219 @functions {
220 string GetAbsoluteUrl(string url) {
221 var request = Dynamicweb.Context.Current.Request;
222 return request.Url.Scheme + "://" + request.Url.Host + url;
223 }
224
225 string GetQueryParameter(string name) {
226 return Dynamicweb.Context.Current.Request[name];
227 }
228
229 string BuildUrl(dynamic parameters, bool clear = false) {
230 return BuildUrl(Dynamicweb.Context.Current.Request.Url.PathAndQuery, parameters, clear);
231 }
232
233 string BuildUrl(string url, dynamic parameters, bool clear = false) {
234 var dict = new Dictionary<string, object>();
235 if(parameters != null) {
236 var type = parameters.GetType();
237 var properties = type.GetProperties();
238 foreach(var property in properties) {
239 dict.Add(property.Name, property.GetValue(parameters));
240 }
241 }
242 return BuildUrl(url, dict, clear);
243 }
244
245 string BuildUrl(string url, Dictionary<string, object> parameters, bool clear = false) {
246 var query = HttpUtility.ParseQueryString("");
247 var index = url.IndexOf('?');
248 if(index > -1) {
249 if(!clear) {
250 query = HttpUtility.ParseQueryString(url.Substring(index));
251 }
252 url = url.Substring(0, index);
253 }
254
255 if(parameters != null) {
256 foreach(var e in parameters) {
257 query.Remove(e.Key);
258 query.Add(e.Key, e.Value == null ? "" : e.Value.ToString());
259 }
260 }
261
262 if(query.Count > 0) {
263 query.Remove("debug");
264 query.Remove("dbstat");
265 query.Remove("parse");
266 query.Remove("purge");
267
268 return string.Format("{0}?{1}", url, query);
269 } else {
270 return url;
271 }
272 }
273 }
274
275 @using System.Text.RegularExpressions;
276
277 @functions {
278 string GetExcerpt(string text, int length, string dots = " …") {
279 var excerpt = Regex.Replace(System.Net.WebUtility.HtmlDecode(text), "<[^>]*>", "");
280 if(excerpt.Length > length) {
281 excerpt = excerpt.Remove(length);
282 excerpt = Regex.Replace(excerpt, @"\s[^\s]+$", "");
283 excerpt += dots;
284 }
285 return excerpt;
286 }
287 }
288
289 @functions {
290 string StripTags(string content) {
291 return Regex.Replace(content, "<[^>]*>", "");
292 }
293
294 }
295
296
297
298 @helper DUMP(object value, string heading = null) {
299 // https://github.com/dynamicweb/razor/wiki/Using-Json.Net-to-inspect-values
300 <pre class="dw-dump">@if (heading != null) {<text>@heading</text>
301 }
302 @Newtonsoft.Json.JsonConvert.SerializeObject(value, new Newtonsoft.Json.JsonSerializerSettings {
303 ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore,
304 MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore,
305 Error = (serializer,err) => err.ErrorContext.Handled = true,
306 Formatting = Newtonsoft.Json.Formatting.Indented
307 })
308 </pre>
309 }
310 @using Dynamicweb.Environment
311 @{
312
313
314 }
315 <!DOCTYPE html>
316 <html lang="@Pageview.Area.CultureInfo.TwoLetterISOLanguageName">
317 <head>
318 <meta charset="utf-8">
319 <meta http-equiv="X-UA-Compatible" content="IE=edge">
320 <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=2.0, user-scalable=yes">
321 <title>@GetValue("Title")</title>
322 @GetValue("MetaTags")
323 @GetValue("CopyRightNotice")
324
325 @RenderSnippet("OpenGraph")
326 @RenderSnippet("Icons")
327 @RenderSnippet("Css")
328 @RenderSnippet("ParagraphCss")
329
330 <script id="CookieConsent" src="https://policy.app.cookieinformation.com/uc.js" data-culture="DA" data-gcm-version="2.0" type="text/javascript"></script>
331
332 @* Loading some needed scripts at top of page - rest before end of body tag *@
333 @RenderSnippet("TopJs")
334
335 @* HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries *@
336 <!--[if lt IE 9]>
337 <script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
338 <script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
339 <![endif]-->
340 @RenderSnippet("ParagraphJs")
341 @*<script type="text/javascript">
342 var appInsights = window.appInsights || function (a) {
343 function b(a) { c[a] = function () { var b = arguments; c.queue.push(function () { c[a].apply(c, b) }) } } var c = { config: a }, d = document, e = window; setTimeout(function () { var b = d.createElement("script"); b.src = a.url || "https://az416426.vo.msecnd.net/scripts/a/ai.0.js", d.getElementsByTagName("script")[0].parentNode.appendChild(b) }); try { c.cookie = d.cookie } catch (a) { } c.queue = []; for (var f = ["Event", "Exception", "Metric", "PageView", "Trace", "Dependency"]; f.length;)b("track" + f.pop()); if (b("setAuthenticatedUserContext"), b("clearAuthenticatedUserContext"), b("startTrackEvent"), b("stopTrackEvent"), b("startTrackPage"), b("stopTrackPage"), b("flush"), !a.disableExceptionTracking) { f = "onerror", b("_" + f); var g = e[f]; e[f] = function (a, b, d, e, h) { var i = g && g(a, b, d, e, h); return !0 !== i && c["_" + f](a, b, d, e, h), i } } return c
344 }({
345 instrumentationKey: "edf6d385-f4f0-42f4-a0a2-698697c996ac"
346 });
347
348 window.appInsights = appInsights, appInsights.queue && 0 === appInsights.queue.length && appInsights.trackPageView();
349 </script>*@
350
351
352 <!-- Facebook Pixel Code -->
353 <script>
354 window.addEventListener('CookieInformationConsentGiven', function (event) {
355 if (CookieInformation.getConsentGivenFor('cookie_cat_marketing')) {
356 !function (f, b, e, v, n, t, s) {
357 if (f.fbq) return; n = f.fbq = function () {
358 n.callMethod ?
359 n.callMethod.apply(n, arguments) : n.queue.push(arguments)
360 };
361 if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0';
362 n.queue = []; t = b.createElement(e); t.async = !0;
363 t.src = v; s = b.getElementsByTagName(e)[0];
364 s.parentNode.insertBefore(t, s)
365 }(window, document, 'script',
366 'https://connect.facebook.net/en_US/fbevents.js');
367 fbq('init', '2186047104992821');
368 fbq('track', 'PageView');
369 }
370 }, false);
371 </script>
372 <!-- End Facebook Pixel Code -->
373
374
375
376 @GetValue("Stylesheets")
377 @GetValue("Javascripts")
378 </head>
379 <body page-id="@Pageview.ID">
380
381 <script type="text/javascript">
382 window.addEventListener('CookieInformationConsentGiven', function (event) {
383 if (CookieInformation.getConsentGivenFor('cookie_cat_statistic')) {
384 (function (window, document, dataLayerName, id) {
385 window[dataLayerName] = window[dataLayerName] || [], window[dataLayerName].push({ start: (new Date).getTime(), event: "stg.start" }); var scripts = document.getElementsByTagName('script')[0], tags = document.createElement('script');
386 function stgCreateCookie(a, b, c) { var d = ""; if (c) { var e = new Date; e.setTime(e.getTime() + 24 * c * 60 * 60 * 1e3), d = "; expires=" + e.toUTCString(); f = "; SameSite=Strict" } document.cookie = a + "=" + b + d + f + "; path=/" }
387 var isStgDebug = (window.location.href.match("stg_debug") || document.cookie.match("stg_debug")) && !window.location.href.match("stg_disable_debug"); stgCreateCookie("stg_debug", isStgDebug ? 1 : "", isStgDebug ? 14 : -1);
388 var qP = []; dataLayerName !== "dataLayer" && qP.push("data_layer_name=" + dataLayerName), isStgDebug && qP.push("stg_debug"); var qPString = qP.length > 0 ? ("?" + qP.join("&")) : "";
389 tags.async = !0, tags.src = "https://dinforsyning.containers.piwik.pro/" + id + ".js" + qPString, scripts.parentNode.insertBefore(tags, scripts);
390 !function (a, n, i) { a[n] = a[n] || {}; for (var c = 0; c < i.length; c++)!function (i) { a[n][i] = a[n][i] || {}, a[n][i].api = a[n][i].api || function () { var a = [].slice.call(arguments, 0); "string" == typeof a[0] && window[dataLayerName].push({ event: n + "." + i + ":" + a[0], parameters: [].slice.call(arguments, 1) }) } }(i[c]) }(window, "ppms", ["tm", "cm"]);
391 })(window, document, 'dataLayer', '076db682-601c-4433-8df1-9a71bca77f66');
392 }
393 }, false);
394 </script>
395
396 @RenderSnippet("FacebookSDK")
397
398 <a id="skip" href="@(Pageview.SearchFriendlyUrl)#main-content">@Translate("Spring hovednavigationen over")</a>
399
400 <div class="pure-container" data-effect="pure-effect-slide" id="body-container">
401 <input type="checkbox" id="pure-toggle-right" class="pure-toggle" data-toggle="right" tabindex="-1" aria-label="pure toggle right">
402
403 <label class="pure-toggle-label" for="pure-toggle-right" data-toggle-label="right">
404 <span class="pure-toggle-icon"></span>
405
406 <span class="sr-only">pure-toggle-right</span>
407 </label>
408
409 <div class="pure-drawer" data-position="right">
410 @RenderSnippet("NavBarCanvas")
411 </div>
412
413 <div class="pure-pusher-container">
414 <div class="pure-pusher" id="body-scroll">
415 @RenderSnippet("Top")
416
417 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
418 @using System.Text.RegularExpressions
419
420 @functions{
421 private string iconSplitter()
422 {
423 return "</div> <div class='col-sm-3 big-icon col-xs-12'><div class='row'><div class='col-sm-11 col-sm-offset-1'>";
424 }
425 private string iconSplitterExtra()
426 {
427 return "</div></div>";
428 }
429 }
430
431 <main class="subpage" id="main-content">
432 @* SubPageBanner Begin *@
433 @if (!GetBoolean("Item.Nobanner"))
434 {
435
436 string pageBanner = string.Empty;
437 string pageBannerTitle = string.Empty;
438 string pageBannerAlt = string.Empty;
439 bool pageLoopReachedOwnPage = false;
440 int DwPageId = GetInteger("DwPageID");
441 if (!string.IsNullOrEmpty(GetString("Item.Topbanner")))
442 {
443 pageBanner = GetString("Item.Topbanner");
444 pageBannerAlt = GetString("Item.Alt_tekst");
445 pageBannerTitle = GetString("Item.Title");
446 }
447 else
448 {
449 for (var i = 10; i > 0; i--)
450 {
451 if (!pageLoopReachedOwnPage)
452 {
453 if (DwPageId == GetInteger("DwPageID_" + i))
454 {
455 pageLoopReachedOwnPage = true;
456 }
457 }
458 else
459 {
460 var subpageMaster_pageService = new Dynamicweb.Content.PageService();
461 var parentPage = subpageMaster_pageService.GetPage(GetInteger("DwPageID_" + i));
462 var parentPageItem = parentPage.Item;
463
464 if (parentPageItem != null)
465 {
466 var sTopbanner = (string)parentPageItem["Topbanner"];
467 var sTitle = (string)parentPageItem["Title"];
468 var sAlttekst = (string)parentPageItem["Alt_tekst"];
469
470 if (!string.IsNullOrWhiteSpace(sTopbanner))
471 {
472 pageBanner = sTopbanner;
473 }
474 if (!string.IsNullOrWhiteSpace(sTitle))
475 {
476 pageBannerTitle = sTitle;
477 }
478 if (!string.IsNullOrWhiteSpace(sAlttekst))
479 {
480 pageBannerAlt = sAlttekst;
481 }
482 }
483
484 }
485 if (!string.IsNullOrWhiteSpace(pageBanner))
486 {
487 break;
488 }
489 }
490 }
491 if (string.IsNullOrWhiteSpace(pageBanner))
492 {
493 pageBanner = GetString("Item.Area.Subpagetopbanner");
494 pageBannerAlt = GetString("Item.Area.Alt_tekst");
495 pageBannerTitle = GetString("Item.Area.Title");
496 }
497
498 if (!string.IsNullOrWhiteSpace(pageBanner))
499 {
500 //string bannerFileType = Path.GetExtension(pageBanner).Replace(".", string.Empty);
501 <div class="page-banner-image-container text-center hidden-xs">
502 <img src="/Admin/Public/GetImage.ashx?Image=@(pageBanner)&Format=webp&Width=2000&DoNotUpscale=False" class="page-banner-image img-responsive" alt="@(pageBannerAlt)" title="@(pageBannerTitle)">
503 </div>
504 }
505 }
506 @* SubPageBanner End *@
507 <div id="content-container" class="container">
508 @RenderSnippet("Alert")
509 </div>
510 @*<div class="megamenu-container container-fluid" style="background-color:#e5e9f3;">
511
512 @RenderSnippet("IconBarV2")
513
514 </div>*@
515 <div class="container">
516 @* Breadcrum Begin *@
517 @*<div class="row">
518 @{
519 var breadcrumbTemplate = "Navigation/Breadcrumb.cshtml";
520 var navigationSettingsBreadCrumb = new Dynamicweb.Frontend.Navigation.NavigationSettings()
521 {
522 //Parameters =
523 // RootAreaId = 0,
524 //RootPageId = pageView.Page.ID,
525 // RootNavigationTag = StringConstants.NavigationTags.NAVIGATION_Homepage,
526 //StartLevel = 0,
527 // StopLevel = 99,
528
529 ExpandMode = Dynamicweb.Frontend.Navigation.ExpandMode.PathOnly
530 };
531 }
532
533 @Navigation.RenderNavigation(breadcrumbTemplate, navigationSettingsBreadCrumb)
534 </div>*@
535 @* Breadcrum End *@
536 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
537 @using Dynamicweb.Content.Items;
538
539
540
541 @{
542 string pagetype = GetString("Item.PageType");
543 string columns = string.Empty;
544 string choice = string.Empty;
545 string left = GetString("DwContent(columnleftcontent)");
546 string right = GetString("DwContent(columnrightcontent)");
547 string tabs = GetString("DwContent(tabs)");
548 bool lefttrue = false;
549 bool righttrue = false;
550 bool nonav = GetBoolean("Item.NoNavigation");
551 var topPage = GetGlobalValue("Global:Page.Top.Name");
552 var currentPage = GetGlobalValue("Global:Page.Name");
553 bool isTopPage = topPage == currentPage ? true : false;
554 bool ecomNavigation = GetBoolean("Item.Page.Ecommerce_UseEcomMenu");
555 bool dropdownDisabled = GetBoolean("Item.Page.Dropdown_Disabled");
556 bool useAsContainer = GetBoolean("Item.UseAsContainer");
557 string pageColumns = string.Empty;
558 var subPage_pageService = new Dynamicweb.Content.PageService();
559 var topPageObj = subPage_pageService.GetPage(int.Parse(GetGlobalValue("Global:Page.Top.ID")));
560 var subPages = subPage_pageService.GetPagesByParentID(topPageObj.ID).Where(x => x.Active);
561 //bool hasSubPages = subPages.Any();
562 bool hasSubPages = false;
563 bool showLeftMenu = GetBoolean("Item.ShowLeftMenu");
564 if (showLeftMenu && subPages.Any()) {
565 hasSubPages = true;
566 nonav = false;
567 } else {
568 nonav = true;
569 }
570 Dynamicweb.Frontend.PageView.GetPageviewByPageID(topPageObj.ID);
571 string navtag = topPageObj.NavigationTag;
572 bool useCustomNav = true;
573
574 if (pagetype == "3columns") {
575 columns = "3";
576 lefttrue = true;
577 //nonav = true;
578 righttrue = true;
579 } else if ((pagetype == "2columns_right" || (!string.IsNullOrEmpty(right) && string.IsNullOrEmpty(left))) && pagetype != "2columns_left" && pagetype != "1column") {
580 columns = "3";
581 righttrue = true;
582 //nonav = true;
583
584 if (pagetype == "2columns_right" || nonav || (isTopPage && dropdownDisabled && !hasSubPages)) {
585 nonav = true;
586 columns = "2";
587 }
588 } else if ((pagetype == "2columns_left" || (!string.IsNullOrEmpty(left) && string.IsNullOrEmpty(right)) || ((!nonav && ((!isTopPage || hasSubPages) || dropdownDisabled)) && string.IsNullOrEmpty(right))) && pagetype != "2columns_right" && pagetype != "1column") {
589 columns = "2";
590 lefttrue = true;
591 //nonav = true;
592 } else if ((pagetype == "1column" || (string.IsNullOrEmpty(left) && string.IsNullOrEmpty(right))) && pagetype != "2columns_left" && pagetype != "2columns_right") {
593 columns = "1";
594 nonav = true;
595 } else {
596 columns = "3";
597 righttrue = true;
598 lefttrue = true;
599 }
600
601 string tempClasses = columns == "1" ? " col-sm-12 col-xs-12" : columns == "2" ? !righttrue ? " col-md-9 col-md-push-3 col-sm-8 col-sm-push-4 col-xs-12" : " col-md-9 col-sm-8 col-xs-12" : " col-md-6 col-md-push-3 col-sm-8 col-sm-push-4 col-xs-12";
602 string centerClasses = (!lefttrue && nonav) && righttrue ? "columns" + columns + " column-layout-no-left " + tempClasses : (lefttrue || !nonav) && !righttrue ? "columns" + columns + " column-layout-no-right " + tempClasses : "columns" + columns + tempClasses;
603 string asideClasses = columns == "1" ? " col-sm-12 col-xs-12" : columns == "2" ? !righttrue ? " col-md-3 col-md-pull-9 col-sm-4 col-sm-pull-8 col-xs-12" : " col-md-3 col-md-pull-9 col-sm-4 col-sm-pull-8 col-xs-12" : " col-sm-4 col-sm-pull-8 col-md-3 col-md-pull-6 col-xs-12";
604
605 }
606
607 @helper renderNavTree(Dynamicweb.Content.Page navPage, int currentDepth)
608 {
609 //currentDepth is to set a max for the recursive run.
610 int maxDepth = 5;
611
612 foreach (var i in Dynamicweb.Services.Pages.GetPagesByParentID(navPage.ID).Where(x => x.Active)) {
613 bool UseNavPageAsContainer = false;
614 int parentNavPage = i.Parent != null ? i.Parent.ID : 0;
615 var childrenPages = Dynamicweb.Services.Pages.GetPagesByParentID(i.ID).Where(x => x.Active);
616
617
618 foreach (var t in i.Item) {
619 if (t.Key == "UseAsContainer") {
620 if (t.Value != null) {
621 UseNavPageAsContainer = (bool)t.Value;
622 }
623 }
624 }
625 string navPageClass = string.Empty;
626 string href = "#";
627 bool inpath = Pageview.Page.GetPath().Contains(i);
628 bool inpathActive = Pageview.ID == i.ID;
629
630 if (inpath && !inpathActive) {
631 navPageClass += "list-inpath ";
632 }
633
634 if (inpathActive) {
635 navPageClass += "list-active ";
636
637 if (childrenPages.Any()) {
638 navPageClass += "list-open-active ";
639 }
640 }
641
642 if (UseNavPageAsContainer) {
643 navPageClass += "dropdown ";
644 href = "javascript:void(0);";
645 } else {
646 href = "/Default.aspx?ID=" + i.ID;
647 }
648
649 <li class="@navPageClass" data-depth="@currentDepth" data-published="@i.Published" data-active="@i.Active" data-hidden="@i.Hidden">
650 <a href="@href" data-page-id="@i.ID" data-page-parent="@parentNavPage">
651 @i.MenuText
652 @if (UseNavPageAsContainer) {
653 <i class="fa fa-angle-right" aria-hidden="true"></i>
654 }
655 </a>
656
657 @if (childrenPages.Any() && currentDepth < maxDepth) {
658 <ul>
659 @renderNavTree(i, currentDepth + 1)
660 </ul>
661 }
662 </li>
663 }
664 }
665 <div class="row">
666
667 <div id="center-column-wrapper" class="@centerClasses">
668 <div id="column-center" class="columncenter row">@GetValue("DwContent(columncenter)")</div>
669 @RenderSnippet("SNS")
670 </div>
671
672 @if (lefttrue || !nonav) {
673
674 <aside id="column-left-wrapper" class="column-side-wrapper @asideClasses">
675 <div class="row">
676 <div id="column-left" class="col-sm-11 column-side">
677 @if (!nonav && (((!isTopPage || hasSubPages) || dropdownDisabled))) {
678 <nav id="column-left-nav" class="row hidden-xs">
679 @if (useCustomNav) {
680 bool isTopBarNav = navtag == "topbarnav" || navtag == "campaign";
681 if (isTopBarNav) {
682 <ul class="nav-list col-xs-12" id="left-top-bar-nav">
683 @renderNavTree(subPage_pageService.GetPage(GetInteger("DwPageID_2")), 1)
684 </ul>
685 } else {
686 <ul class="nav-list col-xs-12" id="left-top-bar-nav">
687 @renderNavTree(topPageObj, 1)
688 </ul>
689 }
690 } else {
691 @GetValue("DwNavigation(leftnav)")
692 }
693
694 </nav>
695 }
696 <div id="columnleftcontent" class="column-side-content row">@GetValue("DwContent(columnleftcontent)")</div>
697 </div>
698 </div>
699 </aside>
700 }
701
702 @if (righttrue) {
703 <aside id="column-right-wrapper" class="col-md-3 col-sm-12 col-xs-12 column-side-wrapper">
704 <div class="row">
705 <div id="column-right" class="col-sm-11 col-sm-offset-1 column-side">
706 <div id="columnrightcontent" class="column-side-content row">@GetValue("DwContent(columnrightcontent)")</div>
707 </div>
708 </div>
709 </aside>
710 }
711
712 </div>
713 <div id='loadingDiv'>
714 <div class="loading-content">
715 <div>Vent venligst...</div>
716 <div><img src='/Files/Images/System_Graphics/ajax-loader.svg' alt="loading"></div>
717 </div>
718 </div>
719 <script type="text/javascript">
720 $(function () {
721 centerColumnSpotFix(@columns);
722 });
723 $('#loadingDiv').hide().ajaxStart(function () {
724 $(this).css('display', 'flex'); // show Loading Div
725 }).ajaxStop(function () {
726 $(this).css('display', 'none'); // hide loading div
727 });
728 </script>
729 </div>
730 </main>
731
732 @RenderSnippet("Footer")
733 </div>
734 </div>
735
736 </div>
737
738 @* Scripts placed at the end of the page to make it load faster *@
739 @RenderSnippet("BottomJs")
740 @RenderSnippet("ParagraphJs")
741
742
743
744
745 @RenderSnippet("ModalContent")
746
747 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
748 @{
749 var backendUser = Dynamicweb.Security.UserManagement.User.get_Current(Dynamicweb.Security.UserManagement.PagePermissionLevels.Backend);
750 }
751 @if (backendUser != null) {
752 <div class="page-edit" style="position: fixed; bottom: 10px; right: 10px; z-index: 100">
753 <div class="btn-group dropup">
754 <button type="button" class="btn btn-default">@Translate("Page actions")</button>
755 <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
756 <span class="caret"></span>
757 </button>
758 <ul class="dropdown-menu pull-right">
759 @if (Pageview.Page.Item == null) {
760 <li><a target="backend" href="/Admin/Content/PageEdit.aspx?ID=@Pageview.Page.ID">@Translate("Edit page properties")</a></li>
761 <li><a target="backend" href="/Admin/Content/ParagraphList.aspx?PageID=@Pageview.Page.ID">@Translate("Edit paragraphs")</a></li>
762 } else {
763 <li><a target="backend" href="/Admin/Content/Items/Editing/ItemEdit.aspx?PageID=@Pageview.Page.ID">@Translate("Edit page")</a></li>
764 <li><a target="backend" href="/Admin/Content/ParagraphList.aspx?PageID=@Pageview.Page.ID&mode=viewParagraphs">@Translate("Edit paragraphs")</a></li>
765 <li><a target="backend" href="/Admin/Content/PageEdit.aspx?ID=@Pageview.Page.ID">@Translate("Edit page properties")</a></li>
766 }
767 </ul>
768 </div>
769 </div>
770 }
771
772 @RenderSnippet("ViewportHack")
773
774 <script async="" src="https://widget.spreaker.com/widgets.js"></script>
775 @* -- WCAG -- *@
776 <script defer="" src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?version=4.8.0&features=Element.prototype.classList%252CObject.assign"></script>
777 <script defer="" src="https://unpkg.com/focus-visible"></script>
778 @RenderSnippet("ParagraphJS")
779
780 <script defer="">
781 (function () {
782 var el = document.createElement("script");
783 el.setAttribute("src", "https://cdn.raffle.ai/search/index.js");
784 el.setAttribute("id", "raffle-sdk");
785 el.setAttribute("defer", "");
786 el.setAttribute("data-uid", "12b58d03-db34-4b8b-acf0-400d1de8d5b0,04785346-fa77-40a3-8c09-77b84f75b6eb");
787 document.head.appendChild(el);
788 jQuery.getScript("https://defgo.com/surveys/dk/dinforsyning/float/defgo_float_init.js");
789 })();
790 </script>
791 </body>
792 </html>
793
794 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
795 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
796 @SnippetStart("OpenGraph")
797 @{
798 var openGraph_Domain = "https://" + Dynamicweb.Context.Current.Request.Url.Host;
799 var openGraph_Url = GetString("Item.Page.Og_Url");
800 var openGraph_Title = GetString("Item.Page.Og_Title");
801 var openGraph_Type = GetString("Item.Page.Og_Type");
802 var openGraph_Description = GetString("Item.Page.Og_Description");
803 var openGraph_Image = GetString("Item.Page.Og_Image");
804 }
805 @if (!string.IsNullOrWhiteSpace(openGraph_Url)) {
806 <meta property="og:url" content="@(openGraph_Domain)/Default.aspx?ID=@(openGraph_Url)">
807 }
808 @if (!string.IsNullOrWhiteSpace(openGraph_Title)) {
809 <meta property="og:title" content="@(openGraph_Title)">
810 }
811 @if (!string.IsNullOrWhiteSpace(openGraph_Type)) {
812 <meta property="og:type" content="@(openGraph_Type)">
813 }
814 @if (!string.IsNullOrWhiteSpace(openGraph_Description)) {
815 <meta property="og:description" content="@(openGraph_Description)">
816 }
817 @if (!string.IsNullOrWhiteSpace(openGraph_Image)) {
818 <meta property="og:image" content="@(openGraph_Domain)@(openGraph_Image)">
819 }
820 @SnippetEnd("OpenGraph")
821 @SnippetStart("Alert")
822 @{
823 string alertHeadline = GetString("Item.Area.Alert_Headline");
824 string alertText = GetString("Item.Area.Alert_Text");
825 bool alertShown = GetBoolean("Item.Area.Alert_Shown");
826 }
827
828 @if(alertShown && (!string.IsNullOrWhiteSpace(alertHeadline)||!string.IsNullOrWhiteSpace(alertText))){
829 <div class="row alert-row bgo jumbotron">
830 <div class="alert-wrapper col-sm-12">
831 @if(!string.IsNullOrWhiteSpace(alertHeadline)){
832 <h1>@alertHeadline</h1>
833 }
834 @if(!string.IsNullOrWhiteSpace(alertText)){
835 <text>@alertText</text>
836 }
837 </div>
838 </div>
839 }
840 @SnippetEnd("Alert")
841 @SnippetStart("EmployeeImage")
842 @{
843 var employeeImage_AnonymousImage = GetString("Item.Area.Employee_AnonymousImage");
844 }
845 @if (!string.IsNullOrWhiteSpace(employeeImage_AnonymousImage) && employeeImage_AnonymousImage != "/") {
846 var employeeImage_Image = GetImage(employeeImage_AnonymousImage, 1170, 0, 100, 0, "rgb", false);
847
848 <div class="row">
849 <div class="col-md-12 employee-image">
850 <img src="@(employeeImage_Image)" class="img-responsive">
851 </div>
852 </div>
853 }
854 @SnippetEnd("EmployeeImage")
855 @SnippetStart("ExtranetLogin")
856 @{
857 var extranetLogin_Username = GetGlobalValue("Global:Extranet.UserName");
858 }
859 <div id="login">
860 @if (string.IsNullOrWhiteSpace(extranetLogin_Username)) {
861 <a href="/Default.aspx?ID=2">Login</a>
862 } else {
863 <a href="/Admin/Public/extranetlogoff.aspx?ID=1">@(extranetLogin_Username) - Logud</a>
864 }
865 </div>
866 @SnippetEnd("ExtranetLogin")
867 @SnippetStart("SearchField")
868 @{
869 var searchField_SearchPageId = GetValue("DwAreaSearchPageID");
870 }
871 <form method="get" action="/Default.aspx" role="search">
872 <div class="form-group">
873 <input type="hidden" name="ID" value="@searchField_SearchPageId">
874 <div class="input-group">
875 <input type="text" class="form-control" name="q" placeholder="Søg">
876 <span class="input-group-btn">
877 <button class="btn btn-default" type="submit" aria-label="S�g">
878 <span class="glyphicon glyphicon-search" aria-hidden="true"></span>
879 </button>
880 </span>
881 </div>
882 </div>
883 </form>
884 @SnippetEnd("SearchField")
885 @SnippetStart("SNS")
886
887
888 @SnippetEnd("SNS")
889 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
890 @SnippetStart("Top")
891 @{
892 var activeJobs = Dynamicweb.Services.Pages.GetPagesByParentID(1222).Where(o => o.ItemType == "DF2016_Job" && o.Published && (o.Item["Deadline"] == null || (DateTime)o.Item["Deadline"] > DateTime.Now));
893
894 string topservicemenu = "top-service-menu hidden-xs";
895 if (activeJobs.Any()) {
896 topservicemenu += "\" data-active-jobs=\"" + activeJobs.Count();
897 }
898 var top_SearchPageId = GetInteger("DwAreaSearchPageID");
899 var top_AreaFirstPage = GetInteger("DwAreaFirstPageID");
900
901 }
902
903 <div class="top" id="top-header">
904 <div class="container">
905 <div class="row">
906 <div class="col-sm-12 nopad">
907 <nav class="@topservicemenu">
908 @RenderNavigation(new
909 {
910 startlevel = 1,
911 endlevel = 1,
912 template = "TopBarNav.xslt",
913 expandmode = "All",
914 parentid = 1220,
915 areaid = Pageview.AreaID,
916 includemode = "All",
917 activejobs = activeJobs.Count()
918 })
919 </nav>
920 </div>
921 </div>
922 </div>
923 <div id="sticky-wrapper" class="sticky-wrapper">
924 <div class="container">
925 <div class="row">
926 <div class="col-xs-6 col-sm-5 col-md-12 tc-wrapper">
927 <div class="top-wrapper">
928 <div class="top-logo">
929
930 <a href="/Default.aspx?Id=@(top_AreaFirstPage)" title="Gå til forside">@DinForsyning.Shared.Icons.Logo</a>
931 </div>
932 <div class="top-content">
933 <div class="top-nav">
934 <div class="disrupt-counter top-nav-content" aria-hidden="true">0</div>
935
936 @foreach (var i in GetLoop("Item.Area.Nav_List")) {
937
938 string link = "/Default.aspx?Id=" + i.GetString("Item.Area.Nav_List.Link");
939
940 <div class="top-nav-content wsplit">
941 <a style="text-overflow:ellipsis;white-space:nowrap;" href="@link" class="top-nav-link">@i.GetString("Item.Area.Nav_List.Text")</a>
942 </div>
943 }
944
945 @if (false) {
946 //System.Web.HttpContext.Current.Request["newSearch"] != "1"
947 <span id="top-search-button" class="fa fa-search top-nav-content" aria-hidden="true" onclick="toggleSearchDropdown()"></span>
948 <div id="top-search-popup" class="top-search">
949 <form method="get" action="/Default.aspx" role="search" onsubmit="searchSubmit($(this))">
950 <input type="hidden" name="Id" value="@(top_SearchPageId)">
951 <input type="text" class="form-control" name="q" placeholder="SØG..." title="Søg">
952 <button type="submit" aria-label="Submit"><i class="fa fa-search" aria-hidden="true"></i></button>
953 </form>
954 </div>
955 }
956 </div>
957
958
959 @*<div id="top-search-input-group" class="top-nav-search" style="position:relative;">
960 <div id="typeahead-wrapper" class="typeahead-wrapper">
961 <div class="typeahead-input">
962 <form method="get" action="/Default.aspx" role="search" onsubmit="searchSubmit(this)">
963 <input type="hidden" name="Id" value="2144">
964 <div id="top-search-input-group" class="input-group">
965 <input id="top-search-input-field" type="text" class="form-control" name="q" autocomplete="off" placeholder="@Translate(" hvad="" søger="" du?")"="" value="" title="Søg">
966 <span class="input-group-btn"><button class="btn btn-color" type="submit" aria-label="Submit"><i class="fa fa-search" aria-hidden="true"></i></button></span>
967 </div>
968 </form>
969 </div>
970 <div id="typeahead-menu" class="typeahead-menu tt-empty"></div>
971 </div>
972 </div>*@
973
974
975 <button class="btn btn-primary ml-3 btn-search" tabindex="0" onclick="window.raffleApi.open('12b58d03-db34-4b8b-acf0-400d1de8d5b0')">
976 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" fill="currentColor" aria-hidden="true" height="19px" color="#ffffff">
977 <path fill-rule="evenodd" d="M10.5 3.75a6.75 6.75 0 100 13.5 6.75 6.75 0 000-13.5zM2.25 10.5a8.25 8.25 0 1114.59 5.28l4.69 4.69a.75.75 0 11-1.06 1.06l-4.69-4.69A8.25 8.25 0 012.25 10.5z" clip-rule="evenodd"></path>
978 </svg>
979 <span>
980 @Translate("Search")
981 </span>
982 </button>
983
984 </div>
985 </div>
986 </div>
987
988
989
990 <div class="col-sx-12 col-sm-12 col-md-12">
991 <div class="row visible-xs visible-sm">
992 <div class="col-xs-8 ds-small-wrapper" aria-hidden="true">
993 <div class="ds-small-content">
994 <div class="disrupt-counter small-counter">0</div>
995 @foreach (var i in GetLoop("Item.Area.Nav_List")) {
996 string link = "/default.aspx?ID=" + i.GetString("Item.Area.Nav_List.Link");
997 string dlink = i.GetString("Item.Area.Nav_List.Text");
998 if (dlink.ToLower() != "driftsforstyrrelser") {
999 continue;
1000 }
1001 <span class="top-nav-content wsplit">
1002 <a href="@link" class="top-nav-link">@i.GetString("Item.Area.Nav_List.Text")</a>
1003 </span>
1004 if (dlink.ToLower() == "driftsforstyrrelser") {
1005 break;
1006 }
1007 }
1008
1009 </div>
1010 </div>
1011
1012 <div class="col-xs-4" style="padding-left: 0;">
1013
1014 <button class="btn btn-primary btn-search w-100" onclick="window.raffleApi.open('12b58d03-db34-4b8b-acf0-400d1de8d5b0')">
1015 <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24" fill="currentColor" aria-hidden="true" height="19px" color="#ffffff">
1016 <path fill-rule="evenodd" d="M10.5 3.75a6.75 6.75 0 100 13.5 6.75 6.75 0 000-13.5zM2.25 10.5a8.25 8.25 0 1114.59 5.28l4.69 4.69a.75.75 0 11-1.06 1.06l-4.69-4.69A8.25 8.25 0 012.25 10.5z" clip-rule="evenodd"></path>
1017 </svg>
1018 <span>
1019 @Translate("Search")
1020 </span>
1021 </button>
1022
1023 </div>
1024
1025 </div>
1026
1027 </div>
1028
1029
1030
1031 </div>
1032 </div>
1033 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
1034 @using System.Text.RegularExpressions
1035 @using System.Net;
1036 @using Newtonsoft.Json;
1037 @using System.Globalization;
1038
1039 @SnippetStart("MegaMenu")
1040 @{
1041 string topPageId2 = GetString("DwTopPageID");
1042 string icon1 = @"<svg xmlns='http://www.w3.org/2000/svg' width='30.169' height='29.569' viewbox='0 0 30.169 29.569'><defs><style>.a{fill:#003c7d;}</style></defs><g transform='translate(0 0)'><path class='a' d='M92.011,96.414H85.106V94.24l-1.987,2.631L81.132,99.5l1.987,2.631,1.987,2.631v-1.5l3.68-.139c3.253-.2,4.031-1.54,4.031-1.54l3.655-6.791c-1.348,1.879-4.461,1.627-4.461,1.627' transform='translate(-66.303 -75.193)'></path><path class='a' d='M105.247,74.134l-5.89,3.421,2.945,5.105c3,.28,3.926-.646,3.926-.646,2.4-1.36,1.067-4.376,1.067-4.376Z' transform='translate(-77.642 -62.684)'></path><path class='a' d='M45.98,86.294c-.909-2.125.922-4.658.922-4.658l3.58-5.9,1.858,1.127L51.12,73.8,49.9,70.733l-3.28.336-3.28.336,1.285.778L42.841,75.4c-1.519,2.883-.771,4.245-.771,4.245Z' transform='translate(-41.886 -60.568)'></path><path class='a' d='M55.4,103.077c-.082,2.763,3.189,3.18,3.189,3.18l4.061.067.127-6.812-5.892-.127c-1.8,2.42-1.485,3.692-1.485,3.692' transform='translate(-50.279 -78.394)'></path><path class='a' d='M80.9,54.6l3.258.5,1.369-3,1.372-3-1.323.714-1.871-3.171c-1.719-2.769-3.272-2.814-3.272-2.814l-7.712.01c2.295.292,3.552,3.152,3.552,3.152l3.28,6.075L77.643,54.1Z' transform='translate(-61.071 -43.83)'></path><path class='a' d='M65.525,49.342c-1.18-2.774-2.434-3.149-2.434-3.149-2.34-1.468-4.357,1.141-4.357,1.141L56.622,50.8l5.81,3.557Z' transform='translate(-51.054 -45.021)'></path></g></svg>";
1043 string icon2 = @"<svg xmlns='http://www.w3.org/2000/svg' width='26.175' height='27.115' viewbox='0 0 26.175 27.115'><defs><style>.a{fill:#003c7d;}</style></defs><g transform='translate(0 0)'><g transform='translate(0 0)'><path class='a' d='M46.744,48.531a.976.976,0,0,0-.242.768l2.561,21.55a.982.982,0,0,0,.977.868h9.841c-.051-.142-.1-.287-.139-.433a8.309,8.309,0,0,1-.29-1.533c-.03-.305-.046-.62-.046-.941,0-2.824,1.718-5.4,3.248-7.651.115-.172.233-.339.348-.5l1.382-11.353a1,1,0,0,0-.239-.771.982.982,0,0,0-.735-.333H47.479a.984.984,0,0,0-.735.329m15.55,1.636-.81,6.644a4.924,4.924,0,0,1-.7.215,9.019,9.019,0,0,1-4.131-.251,17.041,17.041,0,0,0-5.71-.886l1.373,11.558a.6.6,0,0,1-.529.671l-.451.054a.6.6,0,0,1-.671-.529L49.312,56.27s0,0-.006,0l-.726-6.1H62.294Z' transform='translate(-46.495 -48.202)'></path><path class='a' d='M86.3,78.672c-1.518,2.4-2.985,5.423-2.15,8.355a5.983,5.983,0,0,0,5.885,4.307c3.415,0,6.181-2.365,6.181-6.508s-6.178-11.174-6.178-11.174a44.9,44.9,0,0,0-3.738,5.02' transform='translate(-70.041 -64.219)'></path></g></g></svg>";
1044 string icon3 = @"<svg xmlns='http://www.w3.org/2000/svg' width='30.022' height='30.202' viewbox='0 0 30.022 30.202'><defs><style>.a{fill:#003c7d;fill-rule:evenodd;}</style></defs><g transform='translate(0)'><path class='a' d='M48.552,46.293h8.639v9.542a1.506,1.506,0,0,0,1.625,1.506h18.7a5.286,5.286,0,0,1,.029.549c0,3.921-4.368,7.1-9.756,7.1a10.862,10.862,0,0,1-8.39-3.476c1.808,3.742,6.93,4.785,10.292,4.086l-.012,6.637H54.955c1.5-6.455,3.373-10.257-5.349-11.811a1.332,1.332,0,0,1-1.094-1.306c0-4.284.04-8.547.04-12.827m11.159,7.723h17.5a1.326,1.326,0,1,1,0,2.653h-17.5a1.326,1.326,0,0,1,0-2.653m-10.325-10.4h2.432v-.763a.817.817,0,0,1,.815-.815h.478a.817.817,0,0,1,.815.815v.763h2.433a.837.837,0,0,1,.834.833v1.182H48.552V44.445a.836.836,0,0,1,.834-.833' transform='translate(-48.512 -42.034)'></path></g></svg>";
1045 string icon4 = @"<svg xmlns='http://www.w3.org/2000/svg' width='17.823' height='33.106' viewbox='0 0 17.823 33.106'><defs><style>.a{fill:#003c7d;}</style></defs><g transform='translate(0 0)'><path class='a' d='M74.89,58.921V41.3a4.045,4.045,0,0,0-8.09,0V58.921a6.438,6.438,0,1,0,8.09,0ZM70.846,69.626a5.7,5.7,0,0,1-3.455-10.234l.145-.111V41.3a3.31,3.31,0,0,1,6.619,0V59.281l.145.111a5.7,5.7,0,0,1-3.454,10.234Z' transform='translate(-64.411 -37.255)'></path><path class='a' d='M76.184,71.644V58.054a2.206,2.206,0,1,0-4.412,0v13.59a4.6,4.6,0,1,0,4.412,0Z' transform='translate(-67.544 -48.969)'></path><path class='a' d='M94.6,50.855h3.027a.368.368,0,1,0,0-.736H94.6a.368.368,0,1,0,0,.736Z' transform='translate(-83.2 -45.36)'></path><path class='a' d='M94.6,60.207h3.027a.368.368,0,1,0,0-.736H94.6a.368.368,0,1,0,0,.736Z' transform='translate(-83.2 -51.252)'></path><path class='a' d='M94.6,69.563h3.027a.368.368,0,1,0,0-.735H94.6a.368.368,0,1,0,0,.735Z' transform='translate(-83.2 -57.148)'></path><path class='a' d='M94.6,78.918h3.027a.368.368,0,1,0,0-.736H94.6a.368.368,0,1,0,0,.736Z' transform='translate(-83.2 -63.041)'></path><path class='a' d='M94.6,88.275h3.027a.368.368,0,1,0,0-.736H94.6a.368.368,0,1,0,0,.736Z' transform='translate(-83.2 -68.937)'></path><path class='a' d='M94.6,46.175h6.054a.368.368,0,1,0,0-.736H94.6a.368.368,0,1,0,0,.736Z' transform='translate(-83.2 -42.411)'></path><path class='a' d='M100.654,54.795H94.6a.368.368,0,1,0,0,.736h6.054a.368.368,0,1,0,0-.736Z' transform='translate(-83.2 -48.306)'></path><path class='a' d='M100.654,64.151H94.6a.368.368,0,1,0,0,.736h6.054a.368.368,0,1,0,0-.736Z' transform='translate(-83.2 -54.201)'></path><path class='a' d='M100.654,73.5H94.6a.368.368,0,1,0,0,.736h6.054a.368.368,0,1,0,0-.736Z' transform='translate(-83.2 -60.093)'></path><path class='a' d='M100.654,82.859H94.6a.368.368,0,1,0,0,.736h6.054a.368.368,0,1,0,0-.736Z' transform='translate(-83.2 -65.988)'></path><path class='a' d='M100.654,92.218H94.6a.368.368,0,1,0,0,.735h6.054a.368.368,0,1,0,0-.735Z' transform='translate(-83.2 -71.885)'></path></g></svg>";
1046 string icon5 = @"<svg xmlns='http://www.w3.org/2000/svg' width='21.14' height='34.758' viewbox='0 0 21.14 34.758'><defs><style>.a{fill:#003c7d;}</style></defs><g transform='translate(0)'><path class='a' d='M79.686,52.416c-.845,0-1.533,1.364-1.533,3.054s.689,3.055,1.533,3.055,1.528-1.371,1.528-3.055-.686-3.054-1.528-3.054Zm0,0' transform='translate(-68.734 -44.137)'></path><path class='a' d='M60.212,35.56c3.082,0,4.332.235,4.332,2.542h1.533c0-4.07-3.39-4.07-5.865-4.07-3.072,0-4.327-.224-4.327-2.532H54.357c0,4.06,3.39,4.06,5.855,4.06Zm0,0' transform='translate(-54.357 -31.5)'></path><path class='a' d='M69.3,48.179a4.46,4.46,0,0,1,.231,1.412v6.636a3.69,3.69,0,0,1-2.508,3.743c0,.025.014.041.014.071v5.333a.565.565,0,0,1-1.131,0V60.042a.369.369,0,0,1,.017-.071,3.69,3.69,0,0,1-2.509-3.743V49.591a4.47,4.47,0,0,1,.228-1.412,9.844,9.844,0,0,0-7.359,9.473V66.5a9.871,9.871,0,0,0,9.84,9.84h.7a9.871,9.871,0,0,0,9.84-9.84V57.652a9.844,9.844,0,0,0-7.36-9.473Zm0,0' transform='translate(-55.522 -41.577)'></path></g></svg>";
1047 WebClient client = new WebClient();
1048 // Optionally specify an encoding for uploading and downloading strings.
1049 client.Encoding = System.Text.Encoding.UTF8;
1050 // Upload the data.
1051 string json = client.DownloadString("https://dinforsyning.dk/Default.aspx?ID=5702");
1052
1053 Locations locationsData = null;
1054 if (!string.IsNullOrWhiteSpace(json)) {
1055 locationsData = Newtonsoft.Json.JsonConvert.DeserializeObject<Locations>(json);
1056 }
1057 List<Location> locationList = new List<Location>();
1058 if (locationsData != null)
1059 {
1060 locationList = locationsData.LocationList;
1061 }
1062 bool closedToday = locationsData.ClosedToday;
1063 bool closedTomorrow = locationsData.ClosedTomorrow;
1064 bool isTodayAHoliDay = locationsData.IsTodayAHoliDay;
1065 bool isTomorrowAHoliDay = locationsData.IsTomorrowAHoliDay;
1066 bool isTodayAClosedDay = locationsData.IsTodayAClosedDay;
1067 List<DateTime> closedDays = locationsData.ClosedDays;
1068 List<DateTime> allHolidays = locationsData.AllHolidays;
1069
1070 string placeId = GetString("Item.Place.Field.Id");
1071 CultureInfo culture = locationsData.Culture;
1072 DateTime now = DateTime.Now;
1073 int hoursToAdd = 0;
1074 if (hoursToAdd > 0)
1075 {
1076 now.AddHours(hoursToAdd);
1077
1078 }
1079
1080
1081 DateTime tomorrow = now.AddDays(1);
1082
1083 }
1084
1085 <div class="megamenu-container container-fluid" style="background-color:#e5e9f3;">
1086 <div class="row">
1087 <div class="megamenu-navbar">
1088 <div class="container" role="tablist">
1089 @foreach (var icon in GetLoop("Item.Area.Icons"))
1090 {
1091 string image = icon.GetString("Item.Area.Icons.Icon");
1092 string imageHover = image.Split('.')[0] + "_hover." + image.Split('.')[1];
1093 string text = icon.GetString("Item.Area.Icons.Text");
1094 string attributeText = Regex.Replace(text, "<.*?>", String.Empty);
1095 string link = icon.GetString("Item.Area.Icons.Link");
1096 string iconClass = "icon";
1097 string activeClass = "";
1098
1099 //var thisPageTree = Dynamicweb.Services.Pages.GetPageNavigationTree(icon.GetInteger("Item.Area.Icons.Link"));
1100
1101 var thesePages = Dynamicweb.Services.Pages.GetPagesByParentID(icon.GetInteger("Item.Area.Icons.Link"));
1102 List<Dynamicweb.Content.Page> col1Pages = new List<Dynamicweb.Content.Page>();
1103
1104 if (!string.IsNullOrWhiteSpace(link) && link == Pageview.Page.ID.ToString())
1105 {
1106 activeClass = "active";
1107 }
1108
1109 if (!string.IsNullOrWhiteSpace(image) && !string.IsNullOrWhiteSpace(link))
1110 {
1111 if (link == topPageId2)
1112 {
1113 iconClass += " inpath";
1114 image = imageHover;
1115 }
1116 if (link != "1209")
1117 {
1118 <div role="tab" tabindex="0" title="Gå til @attributeText" aria-label="Gå til side vedr. @attributeText" class="@iconClass megamenu-item @activeClass" data-index="@icon.Index">
1119 @switch (link)
1120 {
1121 case "1206"://Affald
1122 @icon1
1123 break;
1124 case "1207"://Drikkevand
1125 @icon2
1126 break;
1127 case "1208"://Spildevand
1128 @icon3
1129 break;
1130 case "1205"://Varme
1131 @icon4
1132 break;
1133 default:
1134 break;
1135 }
1136
1137 @if (!string.IsNullOrWhiteSpace(text))
1138 {
1139 <p style="margin-bottom:0px;text-transform:uppercase;">@text</p>
1140 }
1141 </div>
1142 }
1143 else
1144 {
1145 string menulink = "/default.aspx?ID=" + link;
1146 <a href="@menulink" title="Gå til @attributeText" aria-label="Gå til side vedr. @attributeText" class="@iconClass @activeClass">
1147
1148 @icon5
1149
1150
1151 @if (!string.IsNullOrWhiteSpace(text))
1152 {
1153 <p style="margin-bottom:0px;text-transform:uppercase;">@text</p>
1154 }
1155 </a>
1156 }
1157
1158 }
1159 }
1160 </div>
1161 @foreach (var icon in GetLoop("Item.Area.Icons"))
1162 {
1163 var thesePages = Dynamicweb.Services.Pages.GetPagesByParentID(icon.GetInteger("Item.Area.Icons.Link"));
1164 var thisTopPage = Dynamicweb.Services.Pages.GetPage(icon.GetInteger("Item.Area.Icons.Link"));
1165 int thisMenuSpots = Dynamicweb.Core.Converter.ToInt32(thisTopPage.Item["MenuSpots"]);
1166 string testIconName = icon.GetString("Item.Area.Icons.Link");
1167 var menuSpots = GetLoop("Item.MenuSpots");
1168 bool displayOpeningHours = false;
1169 if (icon.GetInteger("Item.Area.Icons.Link") == 1206)
1170 {
1171 displayOpeningHours = true;
1172 }
1173
1174 var thisItemListNew = Dynamicweb.Content.Items.ItemList.GetItemListById(thisMenuSpots);
1175 //if (thisItemList != null && thisItemListNew.Relations.Count() > 0)
1176
1177 List<MenuItem> col1MenuItems = new List<MenuItem>();
1178 List<MenuItem> col1EkstraMenuItems = new List<MenuItem>();
1179
1180 MenuItem topPageItem = new MenuItem();
1181 topPageItem.PageId = thisTopPage.ID;
1182 topPageItem.HasLink = false;
1183 topPageItem.PageName = "Vores " + thisTopPage.MenuText;
1184 col1MenuItems.Add(topPageItem);
1185 List<List<Dynamicweb.Content.Page>> col2Lists = new List<List<Dynamicweb.Content.Page>>();
1186 List<List<MenuItem>> col2MenuItemsList = new List<List<MenuItem>>();
1187
1188 List<MenuItem> col3MenuItems = new List<MenuItem>();
1189
1190 col3MenuItems = CreateMenuList(thisTopPage, icon.GetInteger("Item.Area.Icons.Link"));
1191
1192
1193 foreach (var page in thesePages.Where(p => p.Active && p.NavigationTag != "megamenuhide"))
1194 {
1195 var subPages1 = Dynamicweb.Services.Pages.GetPagesByParentID(page.ID).Where(p => p.Active);
1196 MenuItem menuItem = new MenuItem();
1197 menuItem.PageId = page.ID;
1198 menuItem.PageUrl = "/default.aspx?ID=" + page.ID.ToString();
1199 menuItem.HasLink = true;
1200 menuItem.PageName = page.MenuText;
1201
1202 if (page.ID == 8172 || page.ID == 8179 || page.ID == 8180 || page.ID == 1509) {
1203 //Skip Ny kunde pages for Megamenu because they redirect to old top menu pages.
1204 continue;
1205 }
1206 if (!subPages1.Any())
1207 {
1208 col1MenuItems.Add(menuItem);
1209 }
1210 else if (page.ID == 7202 || page.ID == 1492 || page.ID == 7657)
1211 {
1212 MenuItem ekstratopPageItem = new MenuItem();
1213 ekstratopPageItem.PageId = page.ID;
1214 ekstratopPageItem.HasLink = false;
1215 ekstratopPageItem.PageName = page.MenuText;
1216 col1EkstraMenuItems.Add(ekstratopPageItem);
1217
1218
1219 foreach (var subPage in Dynamicweb.Services.Pages.GetPagesByParentID(page.ID).Where(p => p.Active))
1220 {
1221 MenuItem subMenuItem = new MenuItem();
1222 subMenuItem.PageId = subPage.ID;
1223 subMenuItem.PageUrl = "/default.aspx?ID=" + subPage.ID.ToString();
1224 subMenuItem.HasLink = true;
1225 subMenuItem.PageName = subPage.MenuText;
1226
1227 col1EkstraMenuItems.Add(subMenuItem);
1228 }
1229 }
1230 else
1231 {
1232 if (page.ID != 7202 && page.NavigationTag != "menuCol3")
1233 {
1234 List<MenuItem> theseMenuItems = new List<MenuItem>();
1235
1236 menuItem.HasLink = false;
1237 theseMenuItems.Add(menuItem);
1238 foreach (var subPage in subPages1)
1239 {
1240 MenuItem subMenuItem = new MenuItem();
1241 subMenuItem.PageId = subPage.ID;
1242 subMenuItem.PageUrl = "/default.aspx?ID=" + subPage.ID.ToString();
1243 subMenuItem.HasLink = true;
1244 subMenuItem.PageName = subPage.MenuText;
1245
1246 theseMenuItems.Add(subMenuItem);
1247 }
1248 col2MenuItemsList.Add(theseMenuItems);
1249 }
1250 if(page.NavigationTag == "menuCol3")
1251 {
1252 List<MenuItem> col3NewMenuItems = new List<MenuItem>();
1253 var subPagesCol3 = Dynamicweb.Services.Pages.GetPagesByParentID(page.ID).Where(p => p.Active && p.NavigationTag != "megamenuhide");
1254 if(subPagesCol3 != null && subPagesCol3.Any()) {
1255 foreach(var subPageCol3 in subPagesCol3.Reverse()) {
1256 MenuItem subMenuItem = new MenuItem();
1257 subMenuItem.PageId = subPageCol3.ID;
1258 subMenuItem.PageUrl = "/default.aspx?ID=" + subPageCol3.ID.ToString();
1259 subMenuItem.HasLink = true;
1260 subMenuItem.PageName = subPageCol3.MenuText;
1261 col3MenuItems.Insert(1, subMenuItem);
1262 }
1263 }
1264 }
1265 }
1266 }
1267
1268 <div tabindex="0" class="dropdown index-@icon.Index" style="position:absolute;left:0;width:100%;z-index:10;">
1269 <div class="container">
1270 <div class="row">
1271 <div class="col-md-3" tabindex="1">
1272 <ul>
1273 @foreach (var menuItem in col1MenuItems)
1274 {
1275 if (menuItem.PageId != 7315)
1276 {
1277 if (menuItem.HasLink)
1278 {
1279 <li data-pageid="@menuItem.PageId"><a href="@menuItem.PageUrl">@menuItem.PageName</a></li>
1280 }
1281 else
1282 {
1283 <li>@menuItem.PageName</li>
1284 }
1285 }
1286
1287 }
1288 </ul>
1289 @if (col1EkstraMenuItems != null && col1EkstraMenuItems.Any())
1290 {
1291 <ul>
1292 @foreach (var menuItem in col1EkstraMenuItems)
1293 {
1294 if (menuItem.HasLink)
1295 {
1296 <li data-pageid="@menuItem.PageId"><a href="@menuItem.PageUrl">@menuItem.PageName</a></li>
1297 }
1298 else
1299 {
1300 <li>@menuItem.PageName</li>
1301 }
1302 }
1303 </ul>
1304 }
1305 </div>
1306 <div class="col-md-3" tabindex="2">
1307 @foreach (var list in col2MenuItemsList)
1308 {
1309 <ul>
1310 @foreach (var subMenuItem in list)
1311 {
1312 if (subMenuItem.HasLink)
1313 {
1314 <li data-pageid="@subMenuItem.PageId"><a href="@subMenuItem.PageUrl">@subMenuItem.PageName</a></li>
1315 }
1316 else
1317 {
1318 <li>@subMenuItem.PageName</li>
1319 }
1320 }
1321 </ul>
1322 }
1323
1324
1325 </div>
1326 <div class="col-md-3 d-flex flex-column justify-content-between" tabindex="3">
1327 <ul>
1328 @foreach (var menuItem in col3MenuItems) {
1329 if (menuItem.HasLink) {
1330 string lastMenuItemStyle = (menuItem.PageId == 9002) ? "margin-bottom:15px" : "";
1331 if (menuItem.PageId == 7400 || menuItem.PageId == 7453) {
1332 //siderne hentes højere oppe via navigationstag - se fx localheating
1333 <li style="margin-top:15px" data-pageid="@menuItem.PageId"><a href="@menuItem.PageUrl">@menuItem.PageName</a></li>
1334 } else {
1335 <li style="@lastMenuItemStyle" data-pageid="@menuItem.PageId"><a href="@menuItem.PageUrl">@menuItem.PageName</a></li>
1336 }
1337
1338 }
1339 else {
1340 //Get menuCol3 pages before this here
1341 <li>@menuItem.PageName</li>
1342 }
1343 }
1344 </ul>
1345 </div>
1346 @if (displayOpeningHours == true || thisItemListNew != null && thisItemListNew.Relations.Count() > 0)
1347 {
1348 <div class="col-md-3" tabindex="4">
1349 @if (displayOpeningHours)
1350 {
1351
1352 <div class="open-hours">
1353 @foreach (Location i in locationList)
1354 {
1355 string address = (string)i.Address;
1356 string city = (string)i.City;
1357 string zip = (string)i.Zip;
1358 string area = (string)i.Area;
1359 bool unmanned = (bool)i.Unmanned;
1360 DateTime weekdayOH = i.WeekDay_Opening_Hours;
1361 DateTime weekdayCH = i.WeekDay_Closing_Hours;
1362 DateTime weekendOH = i.Weekend_Opening_Hours;
1363 DateTime weekendCH = i.Weekend_Closing_Hours;
1364 DateTime nextTime = now;
1365 string openStatus = string.Empty;
1366 bool isWeekend = now.DayOfWeek == DayOfWeek.Saturday || now.DayOfWeek == DayOfWeek.Sunday;
1367
1368 if (!closedToday && !closedTomorrow)
1369 {
1370 if (isWeekend || isTodayAHoliDay)
1371 {
1372
1373 openStatus = now.TimeOfDay < weekendOH.TimeOfDay ? "Before" : now.TimeOfDay < weekendCH.TimeOfDay ? "During" : "After";
1374 if (openStatus == "Before")
1375 {
1376 nextTime = new DateTime(now.Year, now.Month, now.Day, weekendOH.Hour, weekendOH.Minute, weekendOH.Second);
1377 }
1378 else if (openStatus == "During")
1379 {
1380 nextTime = new DateTime(now.Year, now.Month, now.Day, weekendCH.Hour, weekendCH.Minute, weekendCH.Second);
1381 }
1382 }
1383 else
1384 {
1385
1386 openStatus = now.TimeOfDay < weekdayOH.TimeOfDay ? "Before" : now.TimeOfDay < weekdayCH.TimeOfDay ? "During" : "After";
1387 if (openStatus == "Before")
1388 {
1389 nextTime = new DateTime(now.Year, now.Month, now.Day, weekdayOH.Hour, weekdayOH.Minute, weekdayOH.Second);
1390 }
1391 else if (openStatus == "During")
1392 {
1393 nextTime = new DateTime(now.Year, now.Month, now.Day, weekdayCH.Hour, weekdayCH.Minute, weekdayCH.Second);
1394 }
1395 }
1396 if (openStatus == "After")
1397 {
1398 if (now.AddDays(1).DayOfWeek == DayOfWeek.Saturday || tomorrow.DayOfWeek == DayOfWeek.Sunday || isTomorrowAHoliDay)
1399 {
1400 nextTime = new DateTime(tomorrow.Year, tomorrow.Month, tomorrow.Day, weekendOH.Hour, weekendOH.Minute, weekendOH.Second);
1401 isWeekend = true;
1402 }
1403 else
1404 {
1405 nextTime = new DateTime(tomorrow.Year, tomorrow.Month, tomorrow.Day, weekdayOH.Hour, weekdayOH.Minute, weekdayOH.Second);
1406 }
1407 }
1408 }
1409 else
1410 {
1411 if (hoursToAdd != 0)
1412 {
1413
1414 }
1415 if (closedToday)
1416 {
1417
1418 openStatus = "After";
1419 if (!closedTomorrow)
1420 {
1421 if (now.AddDays(1).DayOfWeek == DayOfWeek.Saturday || tomorrow.DayOfWeek == DayOfWeek.Sunday || isTomorrowAHoliDay)
1422 {
1423 nextTime = new DateTime(tomorrow.Year, tomorrow.Month, tomorrow.Day, weekendOH.Hour, weekendOH.Minute, weekendOH.Second);
1424 isWeekend = true;
1425 }
1426 else
1427 {
1428 nextTime = new DateTime(tomorrow.Year, tomorrow.Month, tomorrow.Day, weekdayOH.Hour, weekdayOH.Minute, weekdayOH.Second);
1429 }
1430 }
1431 else
1432 {
1433 for (var t = 0; t < 30; t++)
1434 {
1435
1436 if (!closedDays.Any(d => now.AddDays(t).Date == d.Date))
1437 {
1438 DateTime nextOpenTime = now.AddDays(t);
1439 if (nextOpenTime.DayOfWeek == DayOfWeek.Saturday || nextOpenTime.DayOfWeek == DayOfWeek.Sunday || IsThisAHoliDay(nextOpenTime, allHolidays))
1440 {
1441 nextTime = new DateTime(nextOpenTime.Year, nextOpenTime.Month, nextOpenTime.Day, weekendOH.Hour, weekendOH.Minute, weekendOH.Second);
1442 isWeekend = true;
1443 }
1444 else
1445 {
1446 nextTime = new DateTime(nextOpenTime.Year, nextOpenTime.Month, nextOpenTime.Day, weekdayOH.Hour, weekdayOH.Minute, weekdayOH.Second);
1447 }
1448
1449 break;
1450 }
1451 }
1452
1453 }
1454 }
1455 else
1456 {
1457 if (isWeekend)
1458 {
1459 openStatus = now.TimeOfDay < weekendOH.TimeOfDay ? "Before" : now.TimeOfDay < weekendCH.TimeOfDay ? "During" : "After";
1460 }
1461 else
1462 {
1463 openStatus = now.TimeOfDay < weekdayOH.TimeOfDay ? "Before" : now.TimeOfDay < weekdayCH.TimeOfDay ? "During" : "After";
1464 }
1465 if (openStatus == "After")
1466 {
1467 for (var t = 1; t < 30; t++)
1468 {
1469 if (!closedDays.Any(d => now.AddDays(t).Date == d.Date))
1470 {
1471
1472 DateTime nextOpenTime = now.AddDays(t);
1473
1474 if (nextOpenTime.DayOfWeek == DayOfWeek.Saturday || nextOpenTime.DayOfWeek == DayOfWeek.Sunday || IsThisAHoliDay(nextOpenTime, allHolidays))
1475 {
1476 nextTime = new DateTime(nextOpenTime.Year, nextOpenTime.Month, nextOpenTime.Day, weekendOH.Hour, weekendOH.Minute, weekendOH.Second);
1477 isWeekend = true;
1478 }
1479 else
1480 {
1481 nextTime = new DateTime(nextOpenTime.Year, nextOpenTime.Month, nextOpenTime.Day, weekdayOH.Hour, weekdayOH.Minute, weekdayOH.Second);
1482 }
1483
1484 break;
1485 }
1486 }
1487 }
1488 else if (openStatus == "During")
1489 {
1490 if (isWeekend || isTodayAHoliDay)
1491 {
1492 nextTime = new DateTime(now.Year, now.Month, now.Day, weekendCH.Hour, weekendCH.Minute, weekendCH.Second);
1493 }
1494 else
1495 {
1496 nextTime = new DateTime(now.Year, now.Month, now.Day, weekdayCH.Hour, weekdayCH.Minute, weekdayCH.Second);
1497 }
1498
1499 }
1500 else
1501 {
1502 if (isWeekend || isTodayAHoliDay)
1503 {
1504 nextTime = new DateTime(now.Year, now.Month, now.Day, weekendOH.Hour, weekendOH.Minute, weekendOH.Second);
1505 }
1506 else
1507 {
1508 nextTime = new DateTime(now.Year, now.Month, now.Day, weekdayCH.Hour, weekdayCH.Minute, weekdayCH.Second);
1509 }
1510 }
1511
1512
1513 }
1514
1515 }
1516
1517
1518 if (string.IsNullOrWhiteSpace(area))
1519 {
1520 area = city;
1521 }
1522 string nextTimeMessage = string.Empty;
1523 bool open = openStatus == "During" && !isTodayAClosedDay;
1524
1525 string nextTimeMessageClass = open ? "open" : "closed";
1526
1527 string nextTimeDay = nextTime.Date == now.Date ? "i dag" : nextTime.Date == now.AddDays(1).Date ? "i morgen" : nextTime.ToString("dddd", culture);
1528 string statusPrefix = open ? "Åbent " : "Lukket ";
1529
1530 nextTimeMessage += nextTimeDay + " til kl. " + nextTime.ToString("%H");
1531
1532 if (nextTime.Date == now.Date && open)
1533 {
1534 nextTimeMessage = "i dag til kl. " + nextTime.ToString("%H");
1535 }
1536
1537 <div class="open-hours-location not-expanded row @nextTimeMessageClass">
1538 <div class="col-xs-12">
1539 <div class="open-hours-location-content-wrapper">
1540 <div class="open-hours-location-name">@area Genbrugsplads @placeId</div>
1541
1542 @if (statusPrefix.IndexOf("Lukket") == 0 && nextTimeMessage.IndexOf("i dag til") != 0) {
1543
1544 //statusPrefix += " til";
1545 nextTimeMessage = nextTimeMessage.Replace(" til", "");
1546 nextTimeMessage = "til " + nextTimeMessage;
1547 }
1548 <p class="open-hours-next-time-text"><span>@statusPrefix</span> @nextTimeMessage</p>
1549
1550 </div>
1551 </div>
1552 </div>
1553
1554 if (unmanned)
1555 {
1556 DateTime unmanned_openTime = new DateTime(now.Year, now.Month, now.Day, 7, 0, 0);
1557 DateTime unmanned_closeTime = new DateTime(now.Year, now.Month, now.Day, 11, 0, 0);
1558 DateTime unmanned_openSecondTime = new DateTime(now.Year, now.Month, now.Day, 17, 0, 0);
1559 DateTime unmanned_closeSecondTime = new DateTime(now.Year, now.Month, now.Day, 22, 0, 0);
1560
1561 DateTime unmanned_openTimeWeekend = new DateTime(now.Year, now.Month, now.Day, 7, 0, 0);
1562 DateTime unmanned_closeTimeWeekend = new DateTime(now.Year, now.Month, now.Day, 9, 0, 0);
1563 DateTime unmanned_openSecondTimeWeekend = new DateTime(now.Year, now.Month, now.Day, 15, 0, 0);
1564 DateTime unmanned_closeSecondTimeWeekend = new DateTime(now.Year, now.Month, now.Day, 22, 0, 0);
1565 bool isUnmannedWeekend = now.DayOfWeek == DayOfWeek.Saturday || now.DayOfWeek == DayOfWeek.Sunday || IsTodayAHoliDay(allHolidays);
1566 string unmanned_openStatus = string.Empty;
1567 bool isUnmannedClosedDay = isTodayAClosedDay;
1568
1569 if (isUnmannedClosedDay)
1570 {
1571 unmanned_openStatus = "Closed";
1572 }
1573 else if (isUnmannedWeekend)
1574 {
1575 unmanned_openStatus = now.TimeOfDay < unmanned_openTimeWeekend.TimeOfDay ? "Before" : now.TimeOfDay < unmanned_closeTimeWeekend.TimeOfDay ? "During" : "After";
1576 }
1577 else
1578 {
1579 unmanned_openStatus = now.TimeOfDay < unmanned_openTime.TimeOfDay ? "Before" : now.TimeOfDay < unmanned_closeTime.TimeOfDay ? "During" : "After";
1580 }
1581 if (unmanned_openStatus == "After")
1582 {
1583 if (isUnmannedWeekend)
1584 {
1585 if (now.TimeOfDay < unmanned_openSecondTimeWeekend.TimeOfDay)
1586 {
1587 unmanned_openStatus = "Between";
1588 }
1589 else if (now.TimeOfDay < unmanned_closeSecondTimeWeekend.TimeOfDay)
1590 {
1591 unmanned_openStatus = "During";
1592 }
1593 }
1594 else
1595 {
1596 if (now.TimeOfDay < unmanned_openSecondTime.TimeOfDay)
1597 {
1598 unmanned_openStatus = "Between";
1599 }
1600 else if (now.TimeOfDay < unmanned_closeSecondTime.TimeOfDay)
1601 {
1602 unmanned_openStatus = "During";
1603 }
1604 }
1605 }
1606 string unmanned_nextTimeMessage = string.Empty;
1607 bool unmanned_open = unmanned_openStatus == "During" && !isTodayAClosedDay;
1608 string unmanned_nextTimeMessageClass = unmanned_open ? "open" : "closed";
1609 string unmanned_nextTimeDay = unmanned_openStatus == "Between" ? "i dag" : nextTime.Date == now.Date ? "i dag" : nextTime.Date == now.AddDays(1).Date ? "i morgen" : nextTime.ToString("dddd", culture);
1610 unmanned_nextTimeMessage = string.Empty;
1611 if (isUnmannedWeekend)
1612 {
1613 if (unmanned_openStatus == "Between")
1614 {
1615
1616 unmanned_nextTimeMessage = "Adgang i dag fra kl. " + unmanned_openSecondTimeWeekend.ToString("%H");
1617 }
1618 else if (unmanned_open)
1619 {
1620 unmanned_nextTimeMessage = "Adgang i dag til kl. ";
1621 unmanned_nextTimeMessage += now < unmanned_closeTimeWeekend ? unmanned_closeTimeWeekend.ToString("%H") : unmanned_closeSecondTimeWeekend.ToString("%H");
1622 }
1623 else
1624 {
1625 if (nextTime.Date.DayOfWeek == DayOfWeek.Saturday || nextTime.Date.DayOfWeek == DayOfWeek.Sunday)
1626 {
1627 unmanned_nextTimeMessage = "Adgang " + unmanned_nextTimeDay + " fra kl. " + unmanned_openTimeWeekend.ToString("%H");
1628 }
1629 else
1630 {
1631 unmanned_nextTimeMessage = "Adgang " + unmanned_nextTimeDay + " fra kl. " + unmanned_openTime.ToString("%H");
1632 }
1633
1634 }
1635 }
1636 else
1637 {
1638 if (unmanned_openStatus == "Between")
1639 {
1640 unmanned_nextTimeMessage = "Adgang i dag fra kl. " + unmanned_openSecondTime.ToString("%H");
1641 }
1642 else if (unmanned_open)
1643 {
1644 unmanned_nextTimeMessage = "Adgang i dag til kl. ";
1645 unmanned_nextTimeMessage += now < unmanned_closeTime ? unmanned_closeTime.ToString("%H") : unmanned_closeSecondTime.ToString("%H");
1646 }
1647 else
1648 {
1649 if (nextTime.Date.DayOfWeek == DayOfWeek.Saturday || nextTime.Date.DayOfWeek == DayOfWeek.Sunday)
1650 {
1651 unmanned_nextTimeMessage = "Adgang " + unmanned_nextTimeDay + " fra kl. " + unmanned_openTimeWeekend.ToString("%H");
1652 }
1653 else
1654 {
1655 unmanned_nextTimeMessage = "Adgang " + unmanned_nextTimeDay + " fra kl. " + unmanned_openTime.ToString("%H");
1656 }
1657 }
1658 }
1659
1660 string unmannedClass = "open-hours-next-time-text unmanned-text " + unmanned_nextTimeMessageClass;
1661
1662 <div class="open-hours-location not-expanded row @unmannedClass">
1663 <div class="col-xs-12">
1664 <div class="open-hours-location-content-wrapper">
1665 <div class="open-hours-location-name">Ubemandet genbrugsplads</div>
1666 <span>Kræver tilmelding</span>
1667 <p class="open-hours-next-time-text">@unmanned_nextTimeMessage</p>
1668 </div>
1669 </div>
1670 </div>
1671 }
1672
1673 }
1674 <a href="/Default.aspx?ID=1211" class="rm-button btn btn-primary btn-right">Alle åbningstider</a>
1675 </div>
1676 }
1677 else if (thisMenuSpots > 0)
1678 {
1679 var thisItemList = Dynamicweb.Content.Items.ItemList.GetItemListById(thisMenuSpots);
1680 if (thisItemList != null && thisItemList.Relations.Count() > 0)
1681 {
1682 <ul class="menu-spots">
1683 @foreach (var itemSpot in thisItemList.Relations)
1684 {
1685 var values = new Dictionary<string, object>();
1686 itemSpot.SerializeTo(values);
1687 string link = values["Link"].ToString();
1688 string image = values["Image"].ToString();
1689 if (!string.IsNullOrWhiteSpace(image))
1690 {
1691 image = "/Admin/Public/GetImage.ashx?Image=" + image + "&Format=jpg&crop=7&Width=111";
1692 }
1693 string tekst = values["Tekst"].ToString();
1694 string altText = values["AltText"].ToString();
1695 string titleText = values["TitleText"].ToString();
1696 <li>
1697 <a href="@link">
1698 <img src="@image" alt="@altText" title="@titleText">
1699 <p>@tekst</p>
1700 </a>
1701 </li>
1702 }
1703 </ul>
1704 }
1705 }
1706 </div>
1707 }
1708 </div>
1709 </div>
1710 </div>
1711 }
1712 </div>
1713 </div>
1714 </div>
1715 @functions {
1716 public class MenuItem
1717 {
1718 public int PageId { get; set; }
1719 public bool HasLink { get; set; }
1720 public string PageUrl { get; set; }
1721 public string PageName { get; set; }
1722 public MenuItem()
1723 {
1724
1725 }
1726 }
1727
1728 public static List<MenuItem> CreateMenuList(Dynamicweb.Content.Page topPage, int iconLink)
1729 {
1730
1731 var newCustomerPage = Dynamicweb.Services.Pages.GetPageByNavigationTag(8, "NewCustomer");
1732 List<MenuItem> menuItems = new List<MenuItem>();
1733 if (iconLink == 1206) {
1734 var sommerhusPage = Dynamicweb.Services.Pages.GetPage(1509);
1735 if (sommerhusPage != null)
1736 {
1737 MenuItem menuItemSommerhus = new MenuItem { PageId = sommerhusPage.ID, PageUrl = "/default.aspx?ID=" + sommerhusPage.ID.ToString(), HasLink = false, PageName = sommerhusPage.MenuText };
1738 menuItems.Add(menuItemSommerhus);
1739 foreach (var subPage in Dynamicweb.Services.Pages.GetPagesByParentID(sommerhusPage.ID).Where(p => p.Active && p.NavigationTag != "megamenuhide"))
1740 {
1741 MenuItem subMenuItem = new MenuItem();
1742 subMenuItem.PageId = subPage.ID;
1743 subMenuItem.PageUrl = "/default.aspx?ID=" + subPage.ID.ToString();
1744 subMenuItem.HasLink = true;
1745 subMenuItem.PageName = subPage.MenuText;
1746
1747 menuItems.Add(subMenuItem);
1748 }
1749 }
1750 }
1751
1752 if (newCustomerPage != null)
1753 {
1754 MenuItem menuItem1 = new MenuItem { PageId = newCustomerPage.ID, HasLink = false, PageName = newCustomerPage.MenuText };
1755 menuItems.Add(menuItem1);
1756 List<Dynamicweb.Content.Page> subPages = Dynamicweb.Services.Pages.GetPagesByParentID(newCustomerPage.ID).Where(p => p.Active && string.IsNullOrWhiteSpace(p.NavigationTag)).ToList();
1757
1758 foreach (var page in subPages)
1759 {
1760
1761 MenuItem menuItem = new MenuItem();
1762 menuItem.PageId = page.ID;
1763 menuItem.PageUrl = "/default.aspx?ID=" + page.ID.ToString();
1764 menuItem.HasLink = true;
1765 menuItem.PageName = page.MenuText;
1766 menuItems.Add(menuItem);
1767 }
1768 if (iconLink == 1206)
1769 {
1770
1771 var page = Dynamicweb.Services.Pages.GetPageByNavigationTag(8, "CustomerTrash");
1772 if (page != null && page.Active)
1773 {
1774 MenuItem menuItem = new MenuItem { PageId = page.ID, PageUrl = "/default.aspx?ID=" + page.ID.ToString(), HasLink = true, PageName = page.MenuText };
1775 menuItems.Add(menuItem);
1776 }
1777 }
1778 if (iconLink == 1207)
1779 {
1780 var page = Dynamicweb.Services.Pages.GetPageByNavigationTag(8, "CustomerWater");
1781 if (page != null && page.Active)
1782 {
1783 MenuItem menuItem = new MenuItem { PageId = page.ID, PageUrl = "/default.aspx?ID=" + page.ID.ToString(), HasLink = true, PageName = page.MenuText };
1784 menuItems.Add(menuItem);
1785 }
1786 }
1787 if (iconLink == 1208)
1788 {
1789 var page = Dynamicweb.Services.Pages.GetPageByNavigationTag(8, "CustomerWasteWater");
1790 if (page != null && page.Active)
1791 {
1792 MenuItem menuItem = new MenuItem { PageId = page.ID, PageUrl = "/default.aspx?ID=" + page.ID.ToString(), HasLink = true, PageName = page.MenuText };
1793 menuItems.Add(menuItem);
1794 }
1795 }
1796 if (iconLink == 1205)
1797 {
1798 var page = Dynamicweb.Services.Pages.GetPageByNavigationTag(8, "localHeat-g");
1799 var page2 = Dynamicweb.Services.Pages.GetPageByNavigationTag(8, "localHeat-s");
1800 var page3 = Dynamicweb.Services.Pages.GetPageByNavigationTag(8, "localHeat-h");
1801 if (page != null) {
1802 MenuItem menuItem = new MenuItem { PageId = page.ID, PageUrl = "/default.aspx?ID=" + page.ID.ToString(), HasLink = true, PageName = page.MenuText };
1803 menuItems.Add(menuItem);
1804 }
1805 if (page2 != null && page2.Active) {
1806 MenuItem menuItem = new MenuItem { PageId = page2.ID, PageUrl = "/default.aspx?ID=" + page2.ID.ToString(), HasLink = true, PageName = page2.MenuText };
1807 menuItems.Add(menuItem);
1808 }
1809 if (page3 != null && page3.Active) {
1810 MenuItem menuItem = new MenuItem { PageId = page3.ID, PageUrl = "/default.aspx?ID=" + page3.ID.ToString(), HasLink = true, PageName = page3.MenuText };
1811 menuItems.Add(menuItem);
1812 }
1813 }
1814
1815 }
1816 return menuItems;
1817 }
1818 public class Locations
1819 {
1820 public CultureInfo Culture { get; set; }
1821 public List<Location> LocationList { get; set; }
1822 public bool ClosedToday { get; set; }
1823 public bool ClosedTomorrow { get; set; }
1824 public bool IsTodayAHoliDay { get; set; }
1825 public bool IsTomorrowAHoliDay { get; set; }
1826 public bool IsTodayAClosedDay { get; set; }
1827 public List<DateTime> ClosedDays { get; set; }
1828 public List<DateTime> AllHolidays { get; set; }
1829
1830 }
1831 public class Location
1832 {
1833 public string Address { get; set; }
1834 public string City { get; set; }
1835 public string Zip { get; set; }
1836 public string Area { get; set; }
1837 public bool Unmanned { get; set; }
1838 public DateTime WeekDay_Opening_Hours { get; set; }
1839 public DateTime WeekDay_Closing_Hours { get; set; }
1840 public DateTime Weekend_Opening_Hours { get; set; }
1841 public DateTime Weekend_Closing_Hours { get; set; }
1842 public DateTime NextTime { get; set; }
1843 public string OpenStatus { get; set; }
1844 public bool IsWeekend { get; set; }
1845 }
1846
1847 public static bool IsThisAHoliDay(DateTime date, List<DateTime> allHolidays)
1848 {
1849 foreach (DateTime i in allHolidays)
1850 {
1851 if (date.Date == i.Date)
1852 {
1853 return true;
1854 }
1855 }
1856 return false;
1857 }
1858 public static bool IsTodayAHoliDay(List<DateTime> allHolidays)
1859 {
1860
1861 foreach (DateTime i in allHolidays)
1862 {
1863 if (DateTime.Now.Date == i.Date)
1864 {
1865 return true;
1866 }
1867 }
1868 return false;
1869 }
1870 }
1871 @SnippetEnd("MegaMenu")
1872
1873
1874 </div>
1875 </div>
1876 @SnippetEnd("Top")
1877 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
1878 @using System.Text.RegularExpressions
1879 @SnippetStart("Footer")
1880 @{
1881 string companyLogo = GetString("Item.Area.Company_Logo");
1882 string companyName = GetString("Item.Area.Company_Name");
1883 string companyPhone = GetString("Item.Area.Company_Phone");
1884 string companyPhoneFixed = companyPhone.Replace(" ", "");
1885 string companyAddress = GetString("Item.Area.Company_Address");
1886 string companyPostal = GetString("Item.Area.Company_Postal");
1887 string companyCity = GetString("Item.Area.Company_City");
1888 string companyEmail = GetString("Item.Area.Company_Email");
1889 var certificationsOne = GetLoop("Item.Area.CertificationsOne");
1890 var certificationsTwo = GetLoop("Item.Area.CertificationsTwo");
1891 var certificationsThree = GetLoop("Item.Area.CertificationsThree");
1892 var certificationsFour = GetLoop("Item.Area.CertificationsFour");
1893 var topFirstPage = GetInteger("DwAreaFirstPageID");
1894 }
1895
1896 <footer id="footer" role="contentinfo">
1897 <div class="container">
1898 <div class="row">
1899 <div class="col-md-7 col-sm-12 certifications-new">
1900 <div class="row">
1901 @* certificationsOne *@
1902 <div class="col-12 col-sm-6 certification-item">
1903 @if (certificationsOne.Count > 0)
1904 {
1905 string cert_image = GetString("Item.Area.CertificationsOneIcon");
1906
1907 cert_image = "/Admin/Public/GetImage.ashx?Image=" + cert_image + "&Width=147&Height=63&Crop=6&DoNotUpscale=1";
1908 string cert_image_grey = cert_image.Replace("Certificeringer", "Certificeringer-grey");
1909
1910 if (!string.IsNullOrWhiteSpace(cert_image))
1911 {
1912 string attributeText = GetString("Item.Area.CertificationsOneIconAlttext");
1913 <div class="certification-image-wrapper">
1914 <img src="@(cert_image)" class="img-responsive" alt="@attributeText">
1915 </div>
1916 }
1917 <p class="certification-header">Læs mere:</p>
1918 <div class="certification-content">
1919 @foreach (var i in certificationsOne)
1920 {
1921 string cert_link = i.GetString("Item.Area.CertificationsOne.Link");
1922 int n;
1923 if (int.TryParse(cert_link, out n))
1924 {
1925 cert_link = "/Default.aspx?ID=" + cert_link;
1926 }
1927
1928 string cert_text = i.GetString("Item.Area.CertificationsOne.Text");
1929 if (!string.IsNullOrWhiteSpace(cert_link) && !string.IsNullOrWhiteSpace(cert_text))
1930 {
1931 <a href="@cert_link" class="col-12" title="Læs mere om @cert_text">
1932 <p>@cert_text</p>
1933 </a>
1934 }
1935 }
1936 </div>
1937 }
1938 </div>
1939 @* certificationsTwo *@
1940 <div class="col-12 col-sm-6 certification-item">
1941 @if (certificationsTwo.Count > 0)
1942 {
1943 string cert_image = GetString("Item.Area.CertificationsTwoIcon");
1944
1945 cert_image = "/Admin/Public/GetImage.ashx?Image=" + cert_image + "&Width=252&Height=84&Crop=6&DoNotUpscale=1";
1946 string cert_image_grey = cert_image.Replace("Certificeringer", "Certificeringer-grey");
1947
1948 if (!string.IsNullOrWhiteSpace(cert_image))
1949 {
1950 string attributeText = GetString("Item.Area.CertificationsTwoIconAlttext");
1951 <div class="certification-image-wrapper">
1952 <img src="@(cert_image)" class="img-responsive" alt="@attributeText">
1953 </div>
1954 }
1955 <p class="certification-header">Læs mere:</p>
1956 <div class="certification-content">
1957 @foreach (var i in certificationsTwo)
1958 {
1959 string cert_link = i.GetString("Item.Area.CertificationsTwo.Link");
1960 int n;
1961 if (int.TryParse(cert_link, out n))
1962 {
1963 cert_link = "/Default.aspx?ID=" + cert_link;
1964 }
1965
1966 string cert_text = i.GetString("Item.Area.CertificationsTwo.Text");
1967 if (!string.IsNullOrWhiteSpace(cert_link) && !string.IsNullOrWhiteSpace(cert_text))
1968 {
1969 <a href="@cert_link" class="col-12" title="Læs mere om @cert_text">
1970 <p>@cert_text</p>
1971 </a>
1972 }
1973 }
1974 </div>
1975 }
1976 </div>
1977 </div>
1978 <div class="row">
1979 @* certificationsThree *@
1980 <div class="col-12 col-sm-6 certification-item">
1981 @if (certificationsThree.Count > 0)
1982 {
1983 string cert_image = GetString("Item.Area.CertificationsThreeIcon");
1984
1985 cert_image = "/Admin/Public/GetImage.ashx?Image=" + cert_image + "&Height=63&Crop=6&DoNotUpscale=1";
1986 string cert_image_grey = cert_image.Replace("Certificeringer", "Certificeringer-grey");
1987
1988 if (!string.IsNullOrWhiteSpace(cert_image))
1989 {
1990 string attributeText = GetString("Item.Area.CertificationsThreeIconAlttext");
1991 <div class="certification-image-wrapper">
1992 <img src="@(cert_image)" class="img-responsive" alt="@attributeText">
1993 </div>
1994 }
1995 <p class="certification-header">Læs mere:</p>
1996 <div class="certification-content">
1997 @foreach (var i in certificationsThree)
1998 {
1999 string cert_link = i.GetString("Item.Area.CertificationsThree.Link");
2000 int n;
2001 if (int.TryParse(cert_link, out n))
2002 {
2003 cert_link = "/Default.aspx?ID=" + cert_link;
2004 }
2005
2006 string cert_text = i.GetString("Item.Area.CertificationsThree.Text");
2007 if (!string.IsNullOrWhiteSpace(cert_link) && !string.IsNullOrWhiteSpace(cert_text))
2008 {
2009 <a href="@cert_link" class="col-12" title="Læs mere om @cert_text">
2010 <p>@cert_text</p>
2011 </a>
2012 }
2013 }
2014 </div>
2015 }
2016 </div>
2017 @* certificationsFour *@
2018 <div class="col-12 col-sm-6 certification-item">
2019 @if (certificationsFour.Count > 0)
2020 {
2021 string cert_image = GetString("Item.Area.CertificationsFourIcon");
2022
2023 cert_image = "/Admin/Public/GetImage.ashx?Image=" + cert_image + "&Width=165&Height=63&Crop=6&DoNotUpscale=1";
2024 string cert_image_grey = cert_image.Replace("Certificeringer", "Certificeringer-grey");
2025
2026 if (!string.IsNullOrWhiteSpace(cert_image))
2027 {
2028 string attributeText = GetString("Item.Area.CertificationsFourIconAlttext");
2029 <div class="certification-image-wrapper">
2030 <img src="@(cert_image)" class="img-responsive" alt="@attributeText">
2031 </div>
2032 }
2033 <p class="certification-header">Læs mere:</p>
2034 <div class="certification-content">
2035 @foreach (var i in certificationsFour)
2036 {
2037 string cert_link = i.GetString("Item.Area.CertificationsFour.Link");
2038 int n;
2039 if (int.TryParse(cert_link, out n))
2040 {
2041 cert_link = "/Default.aspx?ID=" + cert_link;
2042 }
2043
2044 string cert_text = i.GetString("Item.Area.CertificationsFour.Text");
2045 if (!string.IsNullOrWhiteSpace(cert_link) && !string.IsNullOrWhiteSpace(cert_text))
2046 {
2047 <a href="@cert_link" class="col-12" title="Læs mere om @cert_text">
2048 <p>@cert_text</p>
2049 </a>
2050 }
2051 }
2052 </div>
2053 }
2054 </div>
2055 </div>
2056 </div>
2057 <div class="col-md-5 col-sm-12">
2058 <div class="row">
2059 <div class="col-md-8 col-md-offset-4 col-sm-12 col-sm-offset-0">
2060 @if (!string.IsNullOrWhiteSpace(companyLogo))
2061 {
2062 <a href="/Default.aspx?Id=@(topFirstPage)" title="Gå til forside">
2063 @DinForsyning.Shared.Icons.Logo
2064 </a>
2065 }
2066 <div class="col-12 company-info">
2067 <p>
2068 @companyName
2069 <br>
2070 @companyAddress, @companyPostal @companyCity
2071 </p>
2072 <p>
2073 <a class="companyphone" href="tel:@companyPhoneFixed">Tlf: @companyPhone</a>
2074 <br>
2075 <a class="companyemail" href="mailto:@companyEmail">@companyEmail</a>
2076 <br>
2077 <a class="footersafemail" href="https://dinforsyning.signflow.dk/webapp/securemailbox/new" target="_blank">Klik for sikker-mail-portal</a>
2078 </p>
2079 <div class="footer-social-wrapper">
2080 <span>@Translate("Følg med her:")</span>
2081 <a href="https://www.facebook.com/dinforsyning" target="_blank">
2082 <svg id="svg-facebook" class="footer-svg" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 60 60"><title>Facebook</title><path d="M25.76,46.32h6.75V30H37l.59-5.63H32.51V21.56c0-1.47.14-2.25,2.24-2.25h2.81V13.68h-4.5c-5.4,0-7.31,2.73-7.31,7.32v3.37H22.4V30h3.36ZM30,60A30,30,0,1,1,60,30,30,30,0,0,1,30,60Z"></path></svg>
2083 </a>
2084 <a href="https://www.linkedin.com/company/din-forsyning-a-s" target="_blank">
2085 <svg id="svg-linkedin" class="footer-svg" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 60 60"><title>LinkedIn</title><path d="M46.84,44.14V32.42c0-6.27-3.35-9.19-7.82-9.19A6.75,6.75,0,0,0,32.9,26.6V23.71H26.11c.09,1.92,0,20.43,0,20.43H32.9V32.73a4.66,4.66,0,0,1,.23-1.66,3.7,3.7,0,0,1,3.48-2.48c2.46,0,3.44,1.87,3.44,4.62V44.14ZM19,20.92a3.54,3.54,0,1,0,0-7.06,3.54,3.54,0,1,0-.08,7.06ZM30,60A30,30,0,1,1,60,30,30,30,0,0,1,30,60ZM22.35,44.14V23.71H15.57V44.14Z"></path></svg>
2086 </a>
2087 </div>
2088 @*<p> <a class="companyContact" href="/Default.aspx?Id=1225">Kontakt</a></p>*@
2089 <p><a href="/was">Tilgængelighedserklæring</a></p>
2090 </div>
2091 </div>
2092 </div>
2093 </div>
2094
2095 @*<div class="col-12" style="margin-top: 50px; margin-bottom: 50px; width: 100%; height: 20px; float: left;"></div>*@
2096 </div>
2097 </div>
2098 <div class="bottomline">
2099 @*<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="bottomline-svg" width="1905" height="15.004" viewbox="0 0 1905 15.004">
2100 <defs>
2101 <clippath id="clip-path">
2102 <rect id="Rectangle_43" data-name="Rectangle 43" width="1905" height="15.004" transform="translate(0 0)" fill="none"></rect>
2103 </clippath>
2104 </defs>
2105 <g id="Group_48" data-name="Group 48" transform="translate(0 0)">
2106 <g id="Group_47" data-name="Group 47" clip-path="url(#clip-path)">
2107 <path id="Path_202" data-name="Path 202" d="M0,0V15H1154.728A122.868,122.868,0,0,1,1165.2,0Z" fill="#003c7d"></path>
2108 <path id="Path_203" data-name="Path 203" d="M1338.585,0a123.936,123.936,0,0,1,10.47,15H1905V0Z" fill="#f47d22"></path>
2109 <path id="Path_204" data-name="Path 204" d="M1338.585,0H1165.2a122.868,122.868,0,0,0-10.477,15l97.177,0,97.15,0a123.936,123.936,0,0,0-10.47-15" fill="#e22636"></path>
2110 </g>
2111 </g>
2112 </svg>*@
2113 </div>
2114 </footer>
2115
2116 @SnippetEnd("Footer")
2117
2118 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
2119 @SnippetStart("Css")
2120 @{
2121 string css_AssetsBaseUrl = "/Files/Templates/Assets/";
2122 string css_DesignBaseUrl = GetString("Template:DesignBaseUrl");
2123 bool css_SlideBars = GetBoolean("Item.Area.SlideBars_UseForNav");
2124 string css_ImageOverlayType = GetString("Item.Area.ImageOverlayType");
2125
2126 AddCssFile(
2127 css_AssetsBaseUrl + "formvalidation/css/formValidation.min.css",
2128
2129 "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.4/css/bootstrap-datepicker3.min.css"
2130 // css_AssetsBaseUrl + "qtip/jquery.qtip.min.css"
2131 );
2132
2133 if (css_SlideBars) {
2134 AddCssFile(css_AssetsBaseUrl + "Slidebars/dist/slidebars.min.css");
2135 }
2136
2137 if (css_ImageOverlayType == "Lightbox") {
2138 AddCssFile(css_AssetsBaseUrl + "lightbox2/dist/css/lightbox.css");
2139 } else {
2140 AddCssFile(css_AssetsBaseUrl + "fancyBox/source/jquery.fancybox.css");
2141 if (GetBoolean("Item.Area.Fancybox_Thumbs")) {
2142 AddCssFile(css_AssetsBaseUrl + "fancyBox/source/helpers/jquery.fancybox-thumbs.css");
2143 }
2144 }
2145
2146 AddCssFile(css_DesignBaseUrl + "css/style.min.css?v=14052025T1626");
2147
2148 var listCss = LoadContextItem<List<string>>("SB.CssFiles");
2149 }
2150 <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
2151 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" media='all'>
2152 <link href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.1/animate.min.css" rel="stylesheet">
2153 @if (!true) {
2154 var listCssObj = listCss.Select(o => new {
2155 Path = o,
2156 IsCDN = o.StartsWith("http", StringComparison.OrdinalIgnoreCase) || o.StartsWith("//")
2157 }).ToList();
2158
2159 foreach (var css in listCssObj.Where(o => o.IsCDN)) {
2160 <link href="@(css.Path)" rel="stylesheet">
2161 }
2162
2163 var csses = string.Join(",", listCssObj.Where(o => !o.IsCDN).Select(o => o.Path));
2164 <link href="/Admin/Public/ControlResourcesHandler.ashx?OutputType=css&Files=@(csses)" rel="stylesheet">
2165 } else {
2166 foreach (var css in listCss) {
2167 <link href="@(css)" rel="stylesheet">
2168 }
2169 }
2170 @SnippetEnd("Css")
2171 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
2172 @SnippetStart("TopJs")
2173 <!--[if lt IE 9]>
2174 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
2175 <![endif]-->
2176 <!--[if gte IE 9]><!-->
2177 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
2178 <!--<![endif]-->
2179 <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC57K9SyqY_wVeNW0XGZkon-AGqCP0scUc"></script>
2180 @SnippetEnd("TopJs")
2181 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
2182 @SnippetStart("BottomJs")
2183 @{
2184 string bottomJs_AssetsBaseUrl = "/Files/Templates/Assets/";
2185 string bottomJs_DesignBaseUrl = GetString("Template:DesignBaseUrl");
2186 bool bottomJs_SlideBars = GetBoolean("Item.Area.SlideBars_UseForNav");
2187 string bottomJs_ImageOverlayType = GetString("Item.Area.ImageOverlayType");
2188
2189 AddJsFile(
2190 "https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js",
2191 "https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"
2192 );
2193
2194 AddJsFile(
2195 bottomJs_AssetsBaseUrl + "formvalidation/js/formValidation.min.js",
2196 bottomJs_AssetsBaseUrl + "formvalidation/js/framework/bootstrap.min.js",
2197 bottomJs_AssetsBaseUrl + "formvalidation/js/language/da_DK.js",
2198
2199 "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.4/js/bootstrap-datepicker.min.js",
2200 "https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.4/locales/bootstrap-datepicker.da.min.js",
2201 "https://cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.11.1/typeahead.bundle.min.js"
2202
2203 // bottomJs_AssetsBaseUrl + "qtip/jquery.qtip.min.js"
2204 );
2205
2206 // if (bottomJs_SlideBars) {
2207 // AddJsFile(bottomJs_AssetsBaseUrl + "Slidebars/dist/slidebars.min.js");
2208 // }
2209
2210 if(bottomJs_ImageOverlayType == "Lightbox") {
2211 AddJsFile(bottomJs_AssetsBaseUrl + "lightbox2/dist/js/lightbox.min.js");
2212 } else if(bottomJs_ImageOverlayType == "Fancybox") {
2213 AddJsFile(bottomJs_AssetsBaseUrl + "fancyBox/lib/jquery.mousewheel-3.0.6.pack.js");
2214 AddJsFile(bottomJs_AssetsBaseUrl + "fancyBox/source/jquery.fancybox.pack.js");
2215 if(GetBoolean("Item.Area.Fancybox_Thumbs")) {
2216 AddJsFile(bottomJs_AssetsBaseUrl + "fancyBox/source/helpers/jquery.fancybox-thumbs.js");
2217 }
2218 if(!GetBoolean("Item.Area.Fancybox_Media")) {
2219 AddJsFile(bottomJs_AssetsBaseUrl + "fancyBox/source/helpers/jquery.fancybox-media.js");
2220 }
2221 }
2222
2223 // if (GetBoolean("Item.Area.ShowCookieNotice")) {
2224 // AddJsFile(bottomJs_AssetsBaseUrl + "skabertrang/CookieNotice/Script/jquery.skabertrang-cookie-notice.js");
2225 // }
2226
2227 // AddJsFile(bottomJs_AssetsBaseUrl + "skabertrang/skabertrang.js");
2228 AddJsFile(bottomJs_AssetsBaseUrl + "skabertrang/formValidation2.js");
2229 AddJsFile(bottomJs_DesignBaseUrl + "js/script.js?v=20231212T1317");
2230
2231
2232
2233 var listBottomJs = LoadContextItem<List<string>>("SB.JsFiles");
2234
2235 string ipAddress = Dynamicweb.Context.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
2236
2237 if (!string.IsNullOrEmpty(ipAddress)){
2238 string[] addresses = ipAddress.Split(',');
2239 if (addresses.Length != 0){
2240 ipAddress = addresses[0];
2241 }
2242 }
2243
2244 ipAddress = Dynamicweb.Context.Current.Request.ServerVariables["REMOTE_ADDR"];
2245
2246 string[] ipAddresses = new string[12];
2247
2248 ipAddresses[0] = "195.42.150.175"; //din forsyning
2249 ipAddresses[1] = "147.29.63.250"; //esbjerg forsyning
2250 ipAddresses[2] = "95.154.48.68"; //varde forsyning
2251 ipAddresses[3] = "80.162.21.196"; //Jos Van der Haar - privat
2252 ipAddresses[4] = "217.198.209.46"; //Skabertrang
2253 ipAddresses[5] = "90.185.98.23"; //Hans-Christian
2254 ipAddresses[6] = "92.246.24.79"; //Claus
2255 ipAddresses[7] = "178.157.250.165"; //Pete
2256 ipAddresses[8] = "95.154.33.99"; // DF IT mand
2257 ipAddresses[9] = "85.184.168.218"; //Per
2258 ipAddresses[10] = "81.95.255.42"; //Dynamicweb
2259 ipAddresses[11] = "212.112.155.26"; //Oprettet for HC
2260
2261 bool allowed = false;
2262
2263 foreach(string ip in ipAddresses){
2264 if(ip == ipAddress){
2265 allowed = true;
2266 break;
2267 }
2268 }
2269 if(allowed) {
2270 AddJsFile(bottomJs_DesignBaseUrl + "js/script-admin.js?v=2021-12-06T09:00");
2271 }
2272
2273
2274 }
2275 <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
2276 @if(!true) {
2277 var listBottomJsObj = listBottomJs.Select(o => new {
2278 Path = o,
2279 IsCDN = o.StartsWith("http", StringComparison.OrdinalIgnoreCase) || o.StartsWith("//")
2280 }).ToList();
2281
2282 foreach(var js in listBottomJsObj.Where(o => o.IsCDN)) {
2283 <script src="@(js.Path)"></script>
2284 }
2285
2286 var bottomJses = string.Join(",", listBottomJsObj.Where(o => !o.IsCDN).Select(o => o.Path));
2287 <script src="/Admin/Public/ControlResourcesHandler.ashx?OutputType=js&Files=@(bottomJses)"></script>
2288 } else {
2289 foreach(var js in listBottomJs) {
2290 <script src="@(js)"></script>
2291 }
2292 }
2293
2294 @*
2295 @if (bottomJs_SlideBars) {
2296 <script type="text/javascript">
2297 $(function() {
2298 $.slidebars();
2299 });
2300 </script>
2301 }
2302 *@
2303 @if (bottomJs_ImageOverlayType == "Fancybox") {
2304 var fancybox_thumbs = GetBoolean("Item.Area.Fancybox_Thumbs");
2305 var fancybox_autoPlay = GetBoolean("Item.Area.Fancybox_AutoPlay");
2306 var fancybox_media = !GetBoolean("Item.Area.Fancybox_Media");
2307 var fancybox_various = !GetBoolean("Item.Area.Fancybox_Various");
2308 var fancybox_playSpeed = GetInteger("Item.Area.Fancybox_PlaySpeed") > 0 ? GetInteger("Item.Area.Fancybox_PlaySpeed") : 3000;
2309
2310 var fancybox_thumbs_width = GetInteger("Item.Area.Fancybox_Thumbs_Width") > 0 ? GetInteger("Item.Area.Fancybox_Thumbs_Width") : 50;
2311 var fancybox_thumbs_height = GetInteger("Item.Area.Fancybox_Thumbs_Height") > 0 ? GetInteger("Item.Area.Fancybox_Thumbs_Height") : 50;
2312 var fancybox_thumbs_position = NullIfEmpty(GetString("Item.Area.Fancybox_Thumbs_Position")) ?? "bottom";
2313
2314 <script type="text/javascript">
2315 $(function() {
2316 $('.fancybox').fancybox({
2317 openEffect: 'none',
2318 closeEffect: 'none',
2319 autoPlay: @(fancybox_autoPlay ? "true" : "false"),
2320 playSpeed: @(fancybox_playSpeed)
2321
2322 @if (fancybox_thumbs) {
2323 <text>, helpers: {
2324 thumbs: {
2325 width: @(fancybox_thumbs_width),
2326 height: @(fancybox_thumbs_height),
2327 position: '@(fancybox_thumbs_position)'
2328 }
2329 }</text>
2330 }
2331 });
2332 });
2333 </script>
2334
2335 if (fancybox_media) {
2336 <script type="text/javascript">
2337 $(function() {
2338 $('.fancybox-media').fancybox({
2339 openEffect: 'none',
2340 closeEffect: 'none'
2341 });
2342 });
2343 </script>
2344 }
2345
2346 if (fancybox_various) {
2347 <script type="text/javascript">
2348 $(function() {
2349 $('.fancybox-various').fancybox({
2350 maxWidth: 800,
2351 maxHeight: 600,
2352 fitToView: false,
2353 width: '70%',
2354 height: '70%',
2355 autoSize: false,
2356 closeClick: false,
2357 openEffect: 'none',
2358 closeEffect: 'none'
2359 });
2360 });
2361 </script>
2362 }
2363 }
2364
2365 @SnippetEnd("BottomJs")
2366 @SnippetStart("Icons")
2367 @SnippetStart("Icons")
2368 @{
2369 /*
2370 * http://www.favicon-generator.org
2371 */
2372
2373 var icons_DesktopIconsFolder = GetString("Item.Area.Icons_Desktopicons_Folder");
2374 var icons_FacebookShareIcon = GetString("Item.Area.Icons_FacebookShareIcon");
2375
2376 if (!string.IsNullOrWhiteSpace(icons_DesktopIconsFolder) && icons_DesktopIconsFolder.EndsWith("/")) {
2377 icons_DesktopIconsFolder = icons_DesktopIconsFolder.Remove(icons_DesktopIconsFolder.Length - 1);
2378 }
2379
2380 if (icons_DesktopIconsFolder.ToUpper() == "/FILES") {
2381 icons_DesktopIconsFolder = null;
2382 }
2383 }
2384 @if (!string.IsNullOrWhiteSpace(icons_DesktopIconsFolder)) {
2385 <link rel="shortcut icon" href="@(icons_DesktopIconsFolder)/favicon.ico">
2386
2387 <link rel="apple-touch-icon" sizes="57x57" href="@(icons_DesktopIconsFolder)/apple-icon-57x57.png">
2388 <link rel="apple-touch-icon" sizes="60x60" href="@(icons_DesktopIconsFolder)/apple-icon-60x60.png">
2389 <link rel="apple-touch-icon" sizes="72x72" href="@(icons_DesktopIconsFolder)/apple-icon-72x72.png">
2390 <link rel="apple-touch-icon" sizes="76x76" href="@(icons_DesktopIconsFolder)/apple-icon-76x76.png">
2391 <link rel="apple-touch-icon" sizes="114x114" href="@(icons_DesktopIconsFolder)/apple-icon-114x114.png">
2392 <link rel="apple-touch-icon" sizes="120x120" href="@(icons_DesktopIconsFolder)/apple-icon-120x120.png">
2393 <link rel="apple-touch-icon" sizes="144x144" href="@(icons_DesktopIconsFolder)/apple-icon-144x144.png">
2394 <link rel="apple-touch-icon" sizes="152x152" href="@(icons_DesktopIconsFolder)/apple-icon-152x152.png">
2395 <link rel="apple-touch-icon" sizes="180x180" href="@(icons_DesktopIconsFolder)/apple-icon-180x180.png">
2396
2397 <link rel="icon" type="image/png" sizes="192x192" href="@(icons_DesktopIconsFolder)/favicon-192x192.png">
2398 <link rel="icon" type="image/png" sizes="32x32" href="@(icons_DesktopIconsFolder)/favicon-32x32.png">
2399 <link rel="icon" type="image/png" sizes="96x96" href="@(icons_DesktopIconsFolder)/favicon-96x96.png">
2400 <link rel="icon" type="image/png" sizes="16x16" href="@(icons_DesktopIconsFolder)/favicon-16x16.png">
2401
2402 @* <link rel="manifest" href="@(icons_DesktopIconsFolder)/manifest.json"> *@
2403
2404 <meta name="msapplication-TileColor" content="#ffffff">
2405 <meta name="msapplication-TileImage" content="@(icons_DesktopIconsFolder)/ms-icon-144x144.png">
2406 <meta name="msapplication-config" content="@(icons_DesktopIconsFolder)/browserconfig.xml">
2407 <meta name="theme-color" content="#ffffff">
2408 }
2409 @if (!string.IsNullOrWhiteSpace(icons_FacebookShareIcon)) {
2410 <link rel="image_src" href="@(icons_FacebookShareIcon)">
2411 }
2412 @SnippetEnd("Icons")
2413 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
2414 @SnippetStart("CookieNotice")
2415 @{
2416 string noticeType = GetString("Item.Area.Cookie_Notice_Type");
2417 }
2418 @if (!string.IsNullOrWhiteSpace(noticeType) && noticeType != "false") {
2419 if(noticeType == "slide") {
2420 string moreInfoUrl = GetString("Item.Area.Cookie_More_Info_Url");
2421 var cookieNoticeOptions = new {
2422 iconPath = NullIfEmpty(GetString("Item.Area.Cookie_Icon")) ?? "/Files/Templates/Assets/skabertrang/CookieNotice/Images/Actions-file-close-icon.png",
2423 closeIconPath = NullIfEmpty(GetString("Item.Area.Cookie_Close_Icon")) ?? "/Files/Templates/Assets/skabertrang/CookieNotice/Images/footprint.png",
2424 cookiePageURL = moreInfoUrl,
2425 position = NullIfEmpty(GetString("Item.Area.Cookie_Horizontal_Position")) ?? "left",
2426 initialHideDelayTime = GetInteger("Item.Area.Cookie_Initial_Hide_Delay_Time"),
2427 topPositionFirstPriority = GetString("Item.Area.Cookie_Auto_Adjust_Position_Priority") == "top",
2428 showOnFirstVisit = GetString("Item.Area.Cookie_Show_On_First_Visit") == "True",
2429
2430 orientation = new {
2431 position = NullIfEmpty(GetString("Item.Area.Cookie_Vertical_Position")) ?? "bottom",
2432 minOffSet = int.Parse(NullIfEmpty(GetString("Item.Area.Cookie_Minimum_Top_Offset")) ?? "150"),
2433 percentage = GetInteger("Item.Area.Cookie_Margin_Top_Percentage"),
2434 topAuto = GetBoolean("Item.Area.Cookie_Auto_Adjust_Top_Position")
2435 },
2436
2437 text = new {
2438 top = new {
2439 headline = (NullIfEmpty(GetString("Item.Area.Cookie_Text_Top_Headline")) ?? "Information").Replace("\r", string.Empty).Replace("\n", string.Empty),
2440 content = (NullIfEmpty(GetString("Item.Area.Cookie_Text_Top_Content")) ?? "Om brug af cookies").Replace("\r", string.Empty).Replace("\n", string.Empty)
2441 },
2442 bottom = new {
2443 headline = (NullIfEmpty(GetString("Item.Area.Cookie_Text_Bottom_Headline")) ?? "Hjemmesiden bruger cookies").Replace("\r", string.Empty).Replace("\n", string.Empty),
2444 content = (NullIfEmpty(GetString("Item.Area.Cookie_Text_Bottom_Content")) ?? "Dette website anvender cookies til følgende formål:<br><br>Teknisk funktionalitet så vi kan huske dine præferencer.<br><br>Trafikmåling så vi ved, hvor mange der besøger vores hjemmeside, og dermed kan dokumentere dette overfor fx annoncører.<br><br>Cookies er en fil, som lægges på din computer eller andet IT udstyr. Den gør det muligt at genkende din computer og samle information om hvilke sider og funktioner der besøges med din browser. Men cookies kan ikke se, hvem du er, hvad du hedder, hvor du bor eller om computeren bruges af en eller flere personer. Den kan heller ikke sprede computervirus eller andre skadelige programmer.<br><br><b>Hvis du klikker videre på siden, accepterer du vores brug af cookies.</b><br><br>Vil du vide mere om vores cookies, og hvordan du sletter dem, ").Replace("\r\n", "<br>").Replace("\r", string.Empty).Replace("\n", string.Empty),
2445 link = (NullIfEmpty(GetString("Item.Area.Cookie_More_Info_Link_Text")) ?? "klik her")
2446 }
2447 },
2448
2449 css = new {
2450 fontFamily = NullIfEmpty(GetString("Item.Area.Cookie_Css_FontFamily")) ?? "arial,sans-serif",
2451 border = NullIfEmpty(GetString("Item.Area.Cookie_Css_Border")) ?? "3px solid #45abd7",
2452 backgroundColor = NullIfEmpty(GetString("Item.Area.Cookie_Css_BackgroundColor")) ?? "#ffffff",
2453 borderRadius = NullIfEmpty(GetString("Item.Area.Cookie_Css_BorderRadius")) ?? "10px",
2454 width = NullIfEmpty(GetString("Item.Area.Cookie_Css_Width")) ?? "230px",
2455 widthAuto = GetBoolean("Item.Area.Cookie_Auto_Adjust_Width"),
2456 linkColor = NullIfEmpty(GetString("Item.Area.Cookie_Css_LinkColor")) ?? "#0026ff",
2457
2458 headline = new {
2459 color = NullIfEmpty(GetString("Item.Area.Cookie_Css_Headline_Color")) ?? "#000000",
2460 lineHeight = NullIfEmpty(GetString("Item.Area.Cookie_Css_Headline_LineHeight")) ?? "14px",
2461 fontSize = NullIfEmpty(GetString("Item.Area.Cookie_Css_Headline_FontSize")) ?? "12px",
2462 fontWeight = NullIfEmpty(GetString("Item.Area.Cookie_Css_Headline_FontWeight")) ?? "bold",
2463 textTransform = NullIfEmpty(GetString("Item.Area.Cookie_Css_Headline_TextTransform")) ?? "uppercase"
2464 },
2465
2466 content = new {
2467 color = NullIfEmpty(GetString("Item.Area.Cookie_Css_Content_Color")) ?? "#000000",
2468 lineHeight = NullIfEmpty(GetString("Item.Area.Cookie_Css_Content_LineHeight")) ?? "14px",
2469 fontSize = NullIfEmpty(GetString("Item.Area.Cookie_Css_Content_FontSize")) ?? "12px",
2470 fontWeight = NullIfEmpty(GetString("Item.Area.Cookie_Css_Content_FontWeight")) ?? "normal"
2471 }
2472 },
2473
2474 seen = false
2475 };
2476
2477 <script type="text/javascript">
2478 $(function() {
2479 var options = @(ToJson(cookieNoticeOptions));
2480 //$.fn.skabertrangCookieNotice(options);
2481 });
2482 </script>
2483 } else {
2484 var moreInfoUrl = GetString("Item.Area.Cookie_Consent_More_Info_Url");
2485 var target = !string.IsNullOrEmpty(moreInfoUrl) && (moreInfoUrl.IndexOf("http") > -1 || moreInfoUrl.IndexOf("www") > -1) ? "_blank" : "_self";
2486 var message = Translate("Cookie message", "Dette website anvender cookies til at sikre, at du får den bedste oplevelse på vores website.");
2487 var moreInfo = Translate("Mere info");
2488 var close = Translate("Luk");
2489
2490 <link href="https://cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.4/cookieconsent.min.css" rel="stylesheet">
2491 <style type="text/css">
2492 .cc-window { border-top: 2px solid #c22e34; }
2493 </style>
2494 <script src="https://cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.4/cookieconsent.min.js"></script>
2495 <script type="text/javascript">
2496 (function(window) {
2497 window.cookieconsent.initialise({
2498 palette: {
2499 popup: {
2500 background : '#ffffff',
2501 text : '#000000'
2502 },
2503 button: {
2504 background : '#3a44ad',
2505 text : '#ffffff'
2506 }
2507 },
2508
2509 elements: {
2510 header : '<span class="cc-header">{{header}}</span> ',
2511 message : '<span id="cookieconsent:desc" class="cc-message">{{message}}</span>',
2512 messagelink : '<span id="cookieconsent:desc" class="cc-message">{{message}} <a aria-label="learn more about cookies" role="button" tabindex="0" class="cc-link" href="{{href}}">{{link}}</a></span>',
2513 dismiss : '<a aria-label="dismiss cookie message" role="button" tabindex="0" class="cc-btn cc-dismiss">{{dismiss}}</a>',
2514 allow : '<a aria-label="allow cookies" role="button" tabindex="0" class="cc-btn cc-allow">{{allow}}</a>',
2515 deny : '<a aria-label="deny cookies" role="button" tabindex="0" class="cc-btn cc-deny">{{deny}}</a>',
2516 link : '<a aria-label="learn more about cookies" role="button" tabindex="0" class="cc-link" href="{{href}}">{{link}}</a>',
2517 close : '<span aria-label="dismiss cookie message" role="button" tabindex="0" class="cc-close">{{close}}</span>'
2518 },
2519
2520 content: {
2521 message : '@(message.Replace("'", "\'"))',
2522 dismiss : '@(close.Replace("'", "\'"))',
2523 link : '@(moreInfo.Replace("'", "\'"))',
2524 href : '@(moreInfoUrl)'
2525 },
2526
2527 position: 'bottom'
2528 });
2529 })(window);
2530 </script>
2531 }
2532 }
2533 @SnippetEnd("CookieNotice")
2534
2535 @SnippetStart("FacebookSDK")
2536 <div id="fb-root"></div>
2537 <script type="text/javascript">
2538 (function(d, s, id) {
2539 var js, fjs = d.getElementsByTagName(s)[0];
2540 if (d.getElementById(id)) return;
2541 js = d.createElement(s); js.id = id;
2542 js.src = "//connect.facebook.net/da_DK/sdk.js#xfbml=1&version=v2.6";
2543 fjs.parentNode.insertBefore(js, fjs);
2544 }(document, 'script', 'facebook-jssdk'));
2545 </script>
2546 @SnippetEnd("FacebookSDK")
2547 @SnippetStart("ViewportHack")
2548 @* IE10 viewport hack for Surface/desktop Windows 8 bug *@
2549 <script type="text/javascript">
2550 (function () {
2551 'use strict';
2552 if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
2553 var msViewportStyle = document.createElement('style');
2554 msViewportStyle.appendChild(document.createTextNode('@@-ms-viewport{width:auto!important}'));
2555 document.querySelector('head').appendChild(msViewportStyle);
2556 }
2557 })();
2558 </script>
2559 @SnippetEnd("ViewportHack")
2560
2561 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
2562 @SnippetStart("NavBarCanvas")
2563 <div class="navcanvas-block">
2564
2565 <div class="top-nav-search col-xs-10 col-xs-offset-1" style="border: 1px solid #f1f1f1;">
2566 <div id="typeahead1-wrapper" class="typeahead-wrapper">
2567 <div class="typeahead-input">
2568 <form method="get" action="/Default.aspx" role="search" onsubmit="searchSubmit(this)">
2569 <input type="hidden" name="Id" value="2144">
2570 <div class="input-group">
2571 <input type="text" class="form-control" name="q" autocomplete="off" placeholder="SØG..." value="" style="background-color: white;" title="Søg">
2572 <span class="input-group-btn">
2573 <button class="btn btn-default search-submit" type="submit">
2574 <span class="glyphicon glyphicon-search" aria-hidden="true"></span>
2575 <span class="sr-only">Submit</span>
2576 </button>
2577 </span>
2578 </div>
2579 </form>
2580 </div>
2581 <div id="typeahead1-menu" class="typeahead-menu tt-empty"></div>
2582 </div>
2583 </div>
2584
2585
2586 @if (GetInteger("DwPageID_1") == 1447) {
2587 int campaignPageId = GetInteger("DwPageID_2");
2588 if (campaignPageId != 0 && campaignPageId != 9343) {
2589 <ul class="extra-pages">
2590 @RenderNavigation(new {
2591 startlevel = 1,
2592 endlevel = 99,
2593 template = "SlideTopBarNav.xslt",
2594 expandmode = "All",
2595 parentid = campaignPageId,
2596 areaid = Pageview.AreaID,
2597 includemode = "All"
2598 })
2599 </ul>
2600 }
2601 if (campaignPageId != 0 && campaignPageId == 9343) {
2602 <ul class="extra-pages">
2603 @RenderNavigation(new {
2604 startlevel = 1,
2605 endlevel = 99,
2606 template = "Slide.xslt",
2607 expandmode = "All",
2608 parentid = campaignPageId,
2609 areaid = Pageview.AreaID,
2610 includemode = "All"
2611 })
2612 </ul>
2613 }
2614
2615 }
2616 else {
2617 <ul class="extra-pages">
2618 @foreach (var i in GetLoop("Item.Area.Nav_List")) {
2619
2620 Dynamicweb.Content.Page extraPage = Dynamicweb.Services.Pages.GetPage(i.GetInteger("Item.Area.Nav_List.Link"));
2621 var extraPageSubPages = Dynamicweb.Services.Pages.GetPagesByParentID(extraPage.ID).Where(x => (bool)x.Active == true);
2622 string text = i.GetString("Item.Area.Nav_List.Text");
2623 string liClass = string.Empty;
2624 bool hasActiveSubPages = extraPageSubPages.Any();
2625 string extraSubMenuSpanClass = "submenu-button";
2626 string extraSubUlClass = "submenu";
2627
2628 if (extraPage.ID == 1250) {
2629 liClass = "disrupter ";
2630 //liClass = "disrupter " + disrupterClass;
2631 //text += " (" + beredskabsCounter + ")";
2632 }
2633 if (hasActiveSubPages) {
2634 liClass += " has-sub";
2635 }
2636 if (Pageview.ID == extraPage.ID) {
2637 liClass += " active";
2638 liClass += " inpath";
2639 extraSubMenuSpanClass += " submenu-button-open";
2640 extraSubUlClass += " submenu-open";
2641 }
2642 else {
2643 foreach (Dynamicweb.Content.Page extraPageSubPage in extraPageSubPages) {
2644 if (extraPageSubPage.ID == Pageview.ID) {
2645 liClass += " inpath";
2646 extraSubMenuSpanClass += " submenu-button-open";
2647 extraSubUlClass += " submenu-open";
2648 break;
2649 }
2650 }
2651 }
2652 <li class="@liClass">
2653 @*<a href="@extraPage.ExactUrl">@text</a>*@
2654 <a href="/Default.aspx?ID=@extraPage.ID">@text</a>
2655 @if (hasActiveSubPages) {
2656 <ul class="@extraSubUlClass">
2657 @RenderNavigation(new {
2658 startlevel = 1,
2659 endlevel = 99,
2660 template = "SlideTopBarNav.xslt",
2661 expandmode = "All",
2662 parentid = extraPage.ID,
2663 areaid = Pageview.AreaID,
2664 includemode = "All"
2665 })
2666 </ul>
2667 <span class="@extraSubMenuSpanClass"></span>
2668 }
2669 </li>
2670
2671 }
2672 </ul>
2673
2674 <ul>
2675 @RenderNavigation(new {
2676 startlevel = 1,
2677 endlevel = 5,
2678 template = "Slide.xslt",
2679 expandmode = "All",
2680 parentid = 0,
2681 areaid = Pageview.AreaID,
2682 includemode = "All"
2683 })
2684 </ul>
2685
2686 <ul class="top-pages">
2687 @RenderNavigation(new {
2688 startlevel = 1,
2689 endlevel = 5,
2690 template = "Slide.xslt",
2691 expandmode = "All",
2692 parentid = 1220,
2693 areaid = Pageview.AreaID,
2694 includemode = "All"
2695 })
2696 </ul>
2697
2698 }
2699 </div>
2700 <script type="text/javascript">
2701 $(function () {
2702 var $navcanvasBlock = $('.navcanvas-block');
2703
2704 $('.submenu-button', $navcanvasBlock).on('click', function () {
2705 var $this = $(this);
2706
2707 $this.toggleClass('submenu-button-open');
2708 $('> .submenu', $this.parent()).toggleClass('submenu-open');
2709 });
2710
2711 $('li.active.inpath', $('.navcanvas-block')).closest('ul.submenu').addClass('submenu-open').closest('li.inpath.has-sub').find('> .submenu-button').addClass('submenu-button-open');
2712 })
2713 </script>
2714 @SnippetEnd("NavBarCanvas")
2715
2716 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
2717 @using System.Text.RegularExpressions
2718 @SnippetStart("IconBar")
2719 @{
2720 string topPageId = GetString("DwTopPageID");
2721 }
2722 <div class="icon-bar row">
2723 @foreach (var icon in GetLoop("Item.Area.Icons")) {
2724 string image = icon.GetString("Item.Area.Icons.Icon");
2725 string imageHover = image.Split('.')[0] + "_hover." + image.Split('.')[1];
2726 string text = icon.GetString("Item.Area.Icons.Text");
2727 string attributeText = Regex.Replace(text, "<.*?>", String.Empty);
2728 string link = icon.GetString("Item.Area.Icons.Link");
2729 string iconClass = "icon";
2730 if (!string.IsNullOrWhiteSpace(image) && !string.IsNullOrWhiteSpace(link)) {
2731 if (link == topPageId) {
2732 iconClass += " inpath";
2733 image = imageHover;
2734 }
2735
2736 <a href="/Default.aspx?ID=@link" title="Gå til @attributeText" aria-label="Gå til side vedr. @attributeText" class="@iconClass">
2737 <img alt="Ikon for @attributeText" src="@image" data-image-hover="@imageHover">
2738 @if (!string.IsNullOrWhiteSpace(text)) {
2739 <p>@text</p>
2740 }
2741 </a>
2742
2743 }
2744 }
2745 </div>
2746 @SnippetEnd("IconBar")
2747
2748