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)&amp;currency_code=@(googleConversionCurrency)&amp;label=@(googleConversionLabel)&amp;guid=ON&amp;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("&amp;", 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)&amp;Format=webp&amp;Width=2000&amp;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&amp;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&oslash;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&Oslash;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 + "&amp;Format=jpg&amp;crop=7&amp;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&amp;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&amp;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&aring;r den bedste oplevelse p&aring; 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>&nbsp;', 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&Oslash;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