Error executing template "master/partials/opengraph.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1
Laserbaserade mät- och uppriktningssystem | Easy-Laser
Error executing template "master/partials/header.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1

Mätning och uppriktning den enkla vägen

Easy-Laser är världens ledande tillverkare och leverantör av laserbaserade mät- och uppriktningssystem. Vi utvecklar lättbegripliga produkter gjorda för att snabbt och enkelt kunna utföra exakta mätningar och rikta upp alla typer av maskiner med högsta precision. 

Error executing template "Designs/EasyLaser2019/Paragraph/StartpageTopRight.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dynamicweb.Rendering.Template.TranslateText(String text, String defaultValue, String cultureName)
   at Dynamicweb.Rendering.TemplateBase`1.Translate(String text)
   at CompiledRazorTemplates.Dynamic.RazorEngine_f10ee92fc5ab4a1fa6f1d94145a86241.Execute() in e:\webroot\easylaser2019.se\Files\Templates\Designs\EasyLaser2019\Paragraph\StartpageTopRight.cshtml:line 96
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @{ 3 var content = Model.Item.GetString("Content"); 4 var imageUrl = Model.Item.GetFile("Image"); 5 var parameters = Model.Item.GetFile("Image").GetFocalPointParameters(); 6 var link = Model.Item.GetString("Link"); 7 8 var imageUrlXS = imageUrl.Path; 9 var imageUrlS = $"/Admin/Public/GetImage.ashx?Image={imageUrl.Path}&Format=jpg&Height=450&Width=450&Crop=0&{parameters}"; 10 var imageUrlM = $"/Admin/Public/GetImage.ashx?Image={imageUrl.Path}&Format=jpg&Height=431&Width=615&Crop=0&{parameters}"; 11 var imageUrlXL = $"/Admin/Public/GetImage.ashx?Image={imageUrl.Path}&Format=jpg&Height=431&&Crop=0&{parameters}"; 12 var imageUrlXXL = $"/Admin/Public/GetImage.ashx?Image={imageUrl.Path}&Format=jpg&Width=830&&Crop=0&{parameters}"; 13 14 } 15 16 <style> 17 .item-startpagetopright--img > img:first-child { 18 height: 400px; 19 } 20 .item-startpagetopright--img { 21 background-size: cover; 22 background-position: center center; 23 } 24 25 26 @@media (min-width: 1891px) { 27 .item-startpagetopright--img { 28 background-image: url( @imageUrlXL ); 29 } 30 } 31 32 @@media (min-width: 2191px) { 33 .item-startpagetopright--img { 34 background-image: url( @imageUrlXXL ); 35 } 36 } 37 38 39 @@media (max-width: 1890px) { 40 .item-startpagetopright--img { 41 background-image: url( 42 @imageUrlM ); 43 } 44 } 45 46 @@media (max-width: 1600px) { 47 .item-startpagetopright--img { 48 background-image: url(@imageUrlS); 49 } 50 } 51 52 @@media (max-width: 1246px) { 53 .item-startpagetopright--img { 54 background-image: url(@imageUrlS); 55 } 56 } 57 58 @@media (max-width: 1024px) { 59 .item-startpagetopright--img { 60 background-image: url( @imageUrlS ); 61 } 62 63 .item-startpagetopright--img > img > img:first-child { 64 height: 400px; 65 } 66 } 67 68 @@media(max-width: 768px) { 69 .item-startpagetopright--img { 70 background-image: url( @imageUrlXS 71 ); 72 } 73 74 .item-startpagetopright--img > img > img:first-child { 75 height: 400px; 76 } 77 } 78 79 80 81 82 83 84 85 86 </style> 87 <div class="container-fluid"> 88 <div class="grid item-startpagetopright js-linkClick"> 89 <div class="col-lg-8 col-md-6 col-sm-12 col-xs-12 item-startpagetopright--img "> 90 <img class="flex-img hidden-md hidden-lg hidden-xlg " style=" opacity: 0;" src="@imageUrlM" /> 91 <img class="left-arrow-bg" src="/Files/templates/designs/easylaser2019/assets/img/left-filled-arrow.png" /> 92 </div> 93 <div class="col-lg-4 col-md-6 col-sm-12 col-xs-12 u-xs-auto-height item-startpagetopright--content"> 94 <div class="u-pr-55 u-pl-35 u-pt-15vh u-sm-pt-5vh u-pt-xs-0"> 95 @content 96 <div class="u-float-right u-pb-35"><a href="@link" class="u-italic">@Translate("Read more")</a></div> 97 </div> 98 </div> 99 </div> 100 </div> 101
Error executing template "Paragraph/Partials/Content_NoImage.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1
Error executing template "Paragraph/Partials/Content_NoImage.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1
Error executing template "/Designs/EasyLaser2019/Paragraph/_Render_Startpage_WorkwithUs.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dynamicweb.Rendering.Template.TranslateText(String text, String defaultValue, String cultureName)
   at Dynamicweb.Rendering.TemplateBase`1.Translate(String text)
   at CompiledRazorTemplates.Dynamic.RazorEngine_398e9e2029fc4525a7475804476722c9.Execute() in e:\webroot\easylaser2019.se\Files\Templates\Designs\EasyLaser2019\Paragraph\_Render_Startpage_WorkwithUs.cshtml:line 8
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @{ 3 var moduleOutput = Model.GetModuleOutput(); 4 var content = Model.Item.GetString("Content"); 5 var link = Model.Item.GetString("Link"); 6 var imageUrl = Model.Item.GetFile("Image"); 7 var renderTopMargin = Model.Item.GetBoolean("TopMargin"); 8 var topMarginClass = renderTopMargin ? "u-mt-100" : string.Empty; 9 } 10 11 <a href="@link" class="u-link-neutral"> 12 <div class="container container-mobile js-index-container"> 13 <div class="grid align-center"> 14 <div class="col-2 col-md-12 u-md-text-center u-xs-mr-20"> 15 <img class="flex-img" src="@imageUrl.Path" alt="@Translate("Work with us")"> 16 </div> 17 <div class="col-auto col-md-12 col-bleed u-md-text-center arrow-left-xs"> 18 @content 19 </div> 20 21 </div> 22 </div> 23 </a> 24
Error executing template "/Designs/EasyLaser2019/Paragraph/_Render_Startpage_FindRetailer.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dynamicweb.Rendering.Template.TranslateText(String text, String defaultValue, String cultureName)
   at Dynamicweb.Rendering.TemplateBase`1.Translate(String text)
   at CompiledRazorTemplates.Dynamic.RazorEngine_25f653747e274d67806610496bf9c815.Execute() in e:\webroot\easylaser2019.se\Files\Templates\Designs\EasyLaser2019\Paragraph\_Render_Startpage_FindRetailer.cshtml:line 8
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @{ 3 var moduleOutput = Model.GetModuleOutput(); 4 var content = Model.Item.GetString("Content"); 5 var imageUrl = Model.Item.GetFile("Image"); 6 var link = Model.Item.GetString("Link"); 7 var renderTopMargin = Model.Item.GetBoolean("TopMargin"); 8 var topMarginClass = renderTopMargin ? "u-mt-100" : string.Empty; 9 } 10 11 12 <a href="@link" class="u-link-neutral"> 13 <div class="container container-mobile js-index-container u-xs-mb-20"> 14 <div class="grid align-center"> 15 <div class="col-2 col-md-12 u-md-text-center u-xs-mr-20"> 16 17 <img class="flex-img" src="@imageUrl.Path" alt="@Translate("Find retailer")"> 18 19 </div> 20 <div class="col-auto col-md-12 col-bleed u-md-text-center arrow-left-xs"> 21 @content 22 </div> 23 24 </div> 25 </div> 26 </a> 27 28 29
Error executing template "/Designs/EasyLaser2019/Paragraph/SelectedProducts.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dynamicweb.Rendering.Template.TranslateText(String text, String defaultValue, String cultureName)
   at Dynamicweb.Rendering.TemplateBase`1.Translate(String text)
   at CompiledRazorTemplates.Dynamic.RazorEngine_78b6a4880f884e11b917875be0139679.Execute() in e:\webroot\easylaser2019.se\Files\Templates\Designs\EasyLaser2019\Paragraph\SelectedProducts.cshtml:line 15
   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 @using Dynamicweb.Data 2 @using Dynamicweb.Frontend.Devices 3 @using Softgear.Easylaser.Data.Common 4 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 5 @{ 6 var dbManager = new DatabaseManager(); 7 var isDesktop = Dynamicweb.Frontend.PageView.Current().Device == DeviceType.Desktop; 8 var slickCssStart = isDesktop ? "activate-slick-start-desktop" : "activate-slick-start"; 9 //Dynamicweb.Frontend.PageView.Current().Device == DeviceType.Mobile 10 11 } 12 <div class="container-fluid bg-grey"> 13 <div class="grid u-text-center"> 14 <div class="col-auto"> 15 <h3 class="u-m-0">@Translate("Selected products")</h3> 16 </div> 17 </div> 18 <div class="grid @isDesktop @slickCssStart"> 19 @foreach (var li in GetLoop("Item.RelatedProducts")) 20 { 21 22 var http = Dynamicweb.Context.Current.Request.Url.Scheme; 23 var pageId = dbManager.GetPageId(li.GetString("Item.RelatedProducts.Id")); 24 var productSmallImage = li.GetValue("Item.RelatedProducts.Small_Image"); 25 var detailsUrl = $"https://{Dynamicweb.Context.Current.Request.Url.Host}/Default.aspx?ID={pageId}"; 26 var productName = li.GetValue("Item.RelatedProducts.Name"); 27 var productExtraText = li.GetString("Item.RelatedProducts.ProductListExtraText"); 28 var productNameExtension = li.GetString("Item.RelatedProducts.Category_Alternative"); 29 30 detailsUrl = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(pageId); 31 <div class="col-auto"> 32 <a href="@detailsUrl"> 33 <div class="product-card--wrapper text-center"> 34 <img class="flex-img lazyload" alt="@productName - @productNameExtension" data-src="@productSmallImage" /> 35 <h3 class="u-bold">@productName - @productNameExtension</h3> 36 <div> 37 @productExtraText 38 </div> 39 <div class="u-text-center"> 40 <span class="u-italic u-underline">@Translate("More about") @productName</span> 41 </div> 42 </div> 43 </a> 44 </div> 45 } 46 47 </div> 48 </div>
Error executing template "CookieWarning/CookieConsent.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at Dynamicweb.Rendering.Template.TranslateText(String text, String defaultValue, String cultureName)
   at Dynamicweb.Rendering.TemplateBase`1.Translate(String text)
   at CompiledRazorTemplates.Dynamic.RazorEngine_b87b9779790345f7a75733a5151a8e5a.Execute() in e:\webroot\easylaser2019.se\Files\Templates\CookieWarning\CookieConsent.cshtml:line 238
   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 @using Dynamicweb.Environment; 3 @{ 4 var categories = CookieManager.GetCategories(); 5 var currentPageView = Dynamicweb.Frontend.PageView.Current(); 6 7 string cookieNoticeLink = currentPageView.AreaSettings.GetString("Privacy_Policy_Link") != null ? currentPageView.AreaSettings.GetString("CookiePolicyLink") : ""; 8 string privacyPolicyLink = currentPageView.AreaSettings.GetString("Privacy_Policy_Link") != null ? currentPageView.AreaSettings.GetString("PrivacyPolicyLink") : ""; 9 var googleTagManagerID = "GTM-N36XPN8"; 10 11 } 12 13 <style> 14 .flex-column, .flex-row { 15 -webkit-box-direction: normal !important; 16 } 17 18 .flex-row { 19 -webkit-box-orient: horizontal !important; 20 -ms-flex-direction: row !important; 21 flex-direction: row !important; 22 } 23 24 .d-flex { 25 display: -webkit-box !important; 26 display: -ms-flexbox !important; 27 display: flex !important; 28 } 29 30 .flex-fill { 31 -webkit-box-flex: 1 !important; 32 -ms-flex: 1 1 auto !important; 33 flex: 1 1 auto !important; 34 } 35 36 .py-3 { 37 padding-bottom: 1rem !important; 38 padding-top: 1rem !important; 39 } 40 41 .py-4 { 42 padding-bottom: 2rem !important; 43 padding-top: 2rem !important; 44 } 45 46 .px-3 { 47 padding-left: 1rem !important; 48 padding-right: 1rem !important; 49 } 50 51 .gap-3 { 52 gap: 1rem !important; 53 } 54 55 .col { 56 -webkit-box-flex: 1; 57 -ms-flex: 1 0 0%; 58 flex: 1 0 0%; 59 } 60 61 .d-none { 62 display: none !important; 63 } 64 65 .border-1 { 66 border-width: 1px !important; 67 } 68 69 .border-bottom { 70 border-bottom: 1px solid #d9d9d9 !important; 71 } 72 73 .border-top { 74 border-top: 1px solid #d9d9d9 !important; 75 } 76 77 .flex-grow-1 { 78 -webkit-box-flex: 1 !important; 79 -ms-flex-positive: 1 !important; 80 flex-grow: 1 !important; 81 } 82 83 .border-end { 84 border-right: 1px solid #d9d9d9 !important; 85 } 86 87 label { 88 display: inline-block; 89 } 90 91 92 .form-switch { 93 padding-left: 2.5em; 94 } 95 96 .form-check { 97 display: block; 98 min-height: 1.5rem; 99 padding-left: 1.5em; 100 margin-bottom: .125rem 101 } 102 103 .form-check .form-check-input { 104 float: left; 105 margin-left: -1.5em 106 } 107 108 .form-check-input { 109 width: 1em; 110 height: 1em; 111 margin-top: .25em; 112 vertical-align: top; 113 background-color: #fff; 114 background-repeat: no-repeat; 115 background-position: center; 116 background-size: contain; 117 border: 1px solid rgba(0,0,0,.25); 118 -webkit-appearance: none; 119 -moz-appearance: none; 120 appearance: none; 121 -webkit-print-color-adjust: exact; 122 color-adjust: exact 123 } 124 125 .form-check-input[type=checkbox] { 126 border-radius: .25em 127 } 128 129 .form-check-input[type=radio] { 130 border-radius: 50% 131 } 132 133 .form-check-input:active { 134 -webkit-filter: brightness(90%); 135 filter: brightness(90%) 136 } 137 138 .form-check-input:focus { 139 border-color: #a6a6a6; 140 outline: 0; 141 -webkit-box-shadow: 0 0 0 .25rem rgba(77,77,77,.25); 142 box-shadow: 0 0 0 .25rem rgba(77,77,77,.25) 143 } 144 145 .form-check-input:checked { 146 background-color: var(--swift-foreground-color); 147 border-color: var(--swift-foreground-color) 148 } 149 150 .form-check-input:checked[type=checkbox] { 151 background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' class='feather feather-check'%3e%3cpolyline points='20 6 9 17 4 12'%3e%3c/polyline%3e%3c/svg%3e") 152 } 153 154 .form-check-input:checked[type=radio] { 155 background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='white'/%3e%3c/svg%3e") 156 } 157 158 .form-check-input[type=checkbox]:indeterminate { 159 background-color: #4d4d4d; 160 border-color: #4d4d4d; 161 background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e") 162 } 163 164 .form-check-input:disabled { 165 pointer-events: none; 166 -webkit-filter: none; 167 filter: none; 168 opacity: .5 169 } 170 171 .form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { 172 opacity: .5 173 } 174 175 .form-switch { 176 padding-left: 2.5em 177 } 178 179 .form-switch .form-check-input { 180 width: 2em; 181 margin-left: -2.5em; 182 background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); 183 background-position: left center; 184 border-radius: 2em; 185 -webkit-transition: background-position .15s ease-in-out; 186 transition: background-position .15s ease-in-out 187 } 188 189 190 191 .form-switch .form-check-input:focus { 192 background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23a6a6a6'/%3e%3c/svg%3e") 193 } 194 195 .form-switch .form-check-input:checked { 196 background-position: right center; 197 background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='white'/%3e%3c/svg%3e") 198 } 199 200 .form-check-input:checked { 201 background-color: #333333; 202 border-color: #333333; 203 } 204 205 .form-check-inline { 206 display: inline-block; 207 margin-right: 1rem 208 } 209 210 .btn-check { 211 position: absolute; 212 clip: rect(0, 0, 0, 0); 213 pointer-events: none 214 } 215 216 .btn-check[disabled] + .btn, .btn-check:disabled + .btn { 217 pointer-events: none; 218 -webkit-filter: none; 219 filter: none; 220 opacity: .65 221 } 222 223 224 button, input, optgroup, select, textarea { 225 font-family: inherit; 226 font-size: inherit; 227 line-height: inherit; 228 margin: 0; 229 } 230 </style> 231 232 <div class="modal fade modal-background" id="dwCookieModal" style="overflow:scroll;"> 233 <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable cookie-modal" style="max-width: 650px; width: auto;"> 234 <div class="modal-content "> 235 <div > 236 <div class="p-3 p-md-5 overflow-auto" style=""> 237 <div class="cookie-modal-text"> 238 <div class="h3">@Translate("You control your data")</div> 239 <p>@Translate("We and our partners use technologies, including cookies, to collect information about you for various purposes, including"):</p> 240 <ol> 241 <li>@Translate("Necessary – makes the website usable.")</li> 242 <li>@Translate("Statistics – help us understand how visitors interact with our website.")</li> 243 <li>@Translate("Marketing – Used by advertisers to help us display relevant ads in other channels.")</li> 244 </ol> 245 246 <p>@Translate("By clicking 'Accept All' you consent to all these purposes. You can also choose to indicate what purposes you will consent to using the custom selections and then click 'Accept selected'").</p> 247 248 @if (!string.IsNullOrEmpty(cookieNoticeLink) || !string.IsNullOrEmpty(privacyPolicyLink)) 249 { 250 <p>@Translate("You can read more about our use of cookies and other technologies, as well as our collection and processing of personal data by clicking here"):</p> 251 } 252 253 @if (!string.IsNullOrEmpty(cookieNoticeLink)) 254 { 255 <a href="@cookieNoticeLink" class="d-block mb-3">@Translate("Read more about Cookies")</a> 256 } 257 @if (!string.IsNullOrEmpty(privacyPolicyLink)) 258 { 259 <a href="@privacyPolicyLink" class="d-block mb-3">@Translate("Our privacy policy")</a> 260 } 261 </div> 262 <div class="py-3 py-md-4 px-3 px-md-5 "> 263 <div class="d-flex flex-row gap-3"> 264 <button type="button" onclick="setOptInCookie(0)" class="btn btn-secondary rounded-pill flex-grow-1" data-bs-dismiss="modal" id="dwCookieDeclineAll">Decline All</button> 265 <button type="button" onclick="acceptCustomSetup()" class="btn btn-outline-secondary rounded-pill flex-grow-1 d-none" data-bs-dismiss="modal" id="dwCookieAcceptSelected">Accept selected</button> 266 <div class="col d-flex"> 267 <button type="button" onclick="setOptInCookie(2)" class="btn btn-blue rounded-pill flex-fill" data-bs-dismiss="modal">Accept All</button> 268 </div> 269 </div> 270 </div> 271 272 @if (categories.Any()) 273 { 274 int categoriesCount = 0; 275 int totalCategories = categories.Count(); 276 277 <form id="dwCookieModalCustomForm" method="post" action="/Admin/Public/CookieOptInLevelConfig.aspx"> 278 <input type="hidden" name="OptInLevel" id="OptInLevel" value="0" /> 279 280 <div class="border-top border-bottom border-1 px-3 px-md-4"> 281 <div class="d-flex flex-row"> 282 283 <div class="flex-grow-1 py-4 px-3 border-end"> 284 <label class="form-check-label" for="dwCookieNecessary"><strong>@Translate("Necessary")</strong></label> 285 <div class="form-check form-switch form-control-lg"> 286 <input class="form-check-input" type="checkbox" id="dwCookieNecessary" checked disabled> 287 </div> 288 </div> 289 290 @for (var i = categories.Count - 1; i >= 0; i--) 291 { 292 string border = categoriesCount < (totalCategories - 1) ? "border-end" : ""; 293 294 <div class="flex-grow-1 py-4 px-3 @(border)"> 295 <label class="form-check-label" for="CookieCategory_@categories[i]"><strong>@categories[i]</strong></label> 296 <div class="form-check form-switch form-control-lg"> 297 <input class="form-check-input js-checkbox" type="checkbox" name="OptInCategory" id="@categories[i]" onchange="toggleAcceptSelected()"> 298 </div> 299 </div> 300 301 categoriesCount++; 302 } 303 304 </div> 305 </div> 306 </form> 307 } 308 309 </div> 310 </div> 311 </div> 312 </div> 313 </div> 314 <script> 315 async function setOptInCookie(optInLevel) { 316 let response = await fetch("/admin/public/CookieOptInLevelConfig.aspx?cmd=SetCookieOptInLevel&OptInLevel=" + optInLevel, { method: "POST", mode: "cors" }); 317 318 @if (!string.IsNullOrWhiteSpace(googleTagManagerID)){ 319 <text> 320 if (optInLevel == '2') { 321 consentGrantedAll(); 322 } 323 </text> 324 } 325 326 if (response.ok) { 327 328 if (document.querySelector("#dwCookieModal")) { 329 document.querySelector('#dwCookieModal').style.display = "none"; 330 } 331 332 if (document.querySelector("#dwCookieBanner")) { 333 document.querySelector("#dwCookieBanner").classList.add("d-none"); 334 } 335 return false; 336 } else { 337 return false; 338 } 339 } 340 341 342 343 async function acceptCustomSetup() { 344 var form = document.querySelector("#dwCookieModalCustomForm"); 345 346 let formData = new FormData(form); 347 console.log(form); 348 console.log(formData); 349 350 351 var checks = form.elements["OptInCategory"]; 352 353 var optInUrl = "/admin/public/CookieOptInLevelConfig.aspx?cmd=SetCookieOptInLevel&OptInLevel=1"; 354 355 checks.forEach((element) => { 356 if (element.checked) { 357 console.log("Value: " + element.value); 358 optInUrl = optInUrl + "&OptInCategory=" + element.id 359 360 } 361 }); 362 363 for (const value of formData.values()) { 364 console.log(value); 365 if (value == 'Marketing') { 366 console.log('Granting marketing cookies') 367 consentGrantedMarketing(); 368 } 369 if (value == 'Statistics') { 370 console.log('Granting statistical cookies') 371 consentGrantedAnalyticsStorage(); 372 } 373 } 374 375 let response = await fetch(optInUrl, { method: "POST", mode: "cors" }); 376 377 378 if (response.ok) { 379 380 381 if (document.querySelector("#dwCookieModal")) { 382 document.querySelector('#dwCookieModal').style.display = "none"; 383 } 384 385 if (document.querySelector("#dwCookieBanner")) { 386 document.querySelector("#dwCookieBanner").classList.add("d-none"); 387 } 388 return false; 389 } else { 390 return false; 391 } 392 } 393 394 function toggleAcceptSelected() { 395 var cookieCalegoriesElement = document.querySelector("#dwCookieModalCustomForm"); 396 var enableAcceptSelected = false; 397 398 cookieCalegoriesElement.querySelectorAll(".js-checkbox").forEach(function (field) { 399 if (field.checked == true) { 400 enableAcceptSelected = true; 401 } 402 }); 403 404 if (enableAcceptSelected) { 405 document.querySelector("#dwCookieDeclineAll").classList.add("d-none"); 406 document.querySelector("#dwCookieAcceptSelected").classList.remove("d-none"); 407 } else { 408 document.querySelector("#dwCookieDeclineAll").classList.remove("d-none"); 409 document.querySelector("#dwCookieAcceptSelected").classList.add("d-none"); 410 } 411 } 412 413 function showCookieModal() { 414 415 document.querySelector('#dwCookieModal').style.display = "block"; 416 /* 417 var cookieModal = new bootstrap.Modal(document.querySelector('#dwCookieModal'), { 418 backdrop: 'static' 419 }); 420 cookieModal.show(); 421 */ 422 } 423 424 function consentGrantedAll() { 425 consentGrantedMarketing(); 426 consentGrantedAnalyticsStorage(); 427 } 428 429 function consentGrantedMarketing() { 430 consentGrantedAdStorage(); 431 consentGrantedAdUserData(); 432 consentGrantedAdPersonalization(); 433 } 434 435 function consentGrantedAdStorage() { 436 if (!window.dataLayer) return; 437 gtag('consent', 'update', { 438 'ad_storage': 'granted' 439 }); 440 } 441 442 function consentGrantedAdUserData() { 443 if (!window.dataLayer) return; 444 gtag('consent', 'update', { 445 'ad_user_data': 'granted' 446 }); 447 } 448 449 function consentGrantedAdPersonalization() { 450 if (!window.dataLayer) return; 451 gtag('consent', 'update', { 452 'ad_personalization': 'granted' 453 }); 454 } 455 456 function consentGrantedAnalyticsStorage() { 457 if (!window.dataLayer) return; 458 gtag('consent', 'update', { 459 'analytics_storage': 'granted' 460 }); 461 } 462 463 </script> 464 465 466 <script type="module"> 467 showCookieModal(); 468 </script> 469