Error executing template "Designs/ncnielsen/_parsed/pdf-used-machine.parsed.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_85f76158191a4df7ade078c428dc7e8e.Execute() in D:\dynamicweb.net\Solutions\Gotcha\ncn.dw9.dynamicweb-cms.com\files\Templates\Designs\ncnielsen\_parsed\pdf-used-machine.parsed.cshtml:line 544
   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 2 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 3 @using Dynamicweb 4 @using Dynamicweb.Environment 5 @using Gotcha.NCNielsen.API; 6 @using Gotcha.NCNielsen.Business; 7 8 <!DOCTYPE html> 9 <html lang='@GetString("LongLang")'> 10 @{ 11 string istouch = "False"; 12 13 string jsEditDate = System.IO.File.GetLastWriteTime(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/js/ncnielsen.min.js")).ToString(); 14 jsEditDate = jsEditDate.Replace(":", "").Replace(" ", "").Replace("-", ""); 15 16 if (GetGlobalValue("Global:Device.IsTablet").ToString() == "True" || @GetGlobalValue("Global:Device.IsMobile").ToString() == "True") 17 { 18 istouch = "True"; 19 } 20 21 string templateName = GetGlobalValue("Global:Pageview.LayoutTemplate").Replace("test.", "").Replace(".cshtml", "").Replace(".html", "").Replace(".", ""); 22 23 string UMID = "-1"; 24 string productID = "-1"; 25 26 if (System.Web.HttpContext.Current.Request.QueryString["UMID"] != null) 27 { 28 UMID = System.Web.HttpContext.Current.Request.QueryString["UMID"]; 29 } 30 31 if (System.Web.HttpContext.Current.Request.QueryString["ProductID"] != null) 32 { 33 productID = System.Web.HttpContext.Current.Request.QueryString["ProductID"]; 34 } 35 36 string language = "dan"; 37 38 if (Pageview.Area.ID == 3) 39 { 40 language = "enu"; 41 } 42 else if (Pageview.Area.ID == 4) 43 { 44 language = "sve"; 45 } 46 else if (Pageview.Area.ID == 5) 47 { 48 language = "nor"; 49 } 50 51 ProductModel productModel = ProductFacade.GetProductModel(UMID, language); 52 string pdfDownloadLink = System.Web.HttpContext.Current.Request.Url.PathAndQuery; 53 54 if (pdfDownloadLink.Contains("?")) 55 { 56 pdfDownloadLink += "&"; 57 } 58 else 59 { 60 pdfDownloadLink += "?"; 61 } 62 63 if (UMID != "-1" && productModel.HasProduct) 64 { 65 pdfDownloadLink += "layoutTemplate=pdf-used-machine.cshtml&pdf=true&filename=" + productModel.Product.Name.ToLower().Replace(" ", "_").Replace("/", "-") + ".pdf"; 66 } 67 else if (productID != "-1") 68 { 69 Dynamicweb.Ecommerce.Products.ProductService ps = new Dynamicweb.Ecommerce.Products.ProductService(); 70 Dynamicweb.Ecommerce.Products.Product p = ps.GetProductById(productID, "", true); 71 72 pdfDownloadLink += "layoutTemplate=pdf-used-machine.cshtml&pdf=true&filename=" + p.Name.ToLower().Replace(" ", "_").Replace("/", "-") + ".pdf"; 73 } 74 75 string ConvertToBase64Image(string uri) 76 { 77 using var httpClient = new System.Net.Http.HttpClient(); 78 var imageBytes = httpClient.GetByteArrayAsync(uri).Result; 79 return $"data:image/png;base64, {Convert.ToBase64String(imageBytes)}"; 80 } 81 } 82 <head> 83 <meta charset='@GetString("CharSet")'> 84 <title>@GetValue("Title")</title> 85 @if (System.Web.HttpContext.Current.Request.Url.Host.Contains(".by.gotcha.dk")) 86 { 87 <meta name="robots" content="noindex,nofollow"> 88 } 89 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 90 @GetString("MetaTags") 91 @if (System.Web.HttpContext.Current.Request.Cookies["ncnielsen-styles"] != null || System.Web.HttpContext.Current.Request.QueryString["oldschoolcss"] != null) 92 { 93 <link rel="stylesheet" href="/Files/Templates/Designs/ncnielsen/css/ncnielsen.min.css" id="style1" media="screen"> 94 } 95 else 96 { 97 if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/css/" + templateName + ".critical.css"))) 98 { 99 <text>@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/css/" + templateName + ".critical.css"))</text> 100 } 101 else 102 { 103 <link rel="stylesheet" href="/Files/Templates/Designs/ncnielsen/css/ncnielsen.min.css" id="style2" media="screen"> 104 } 105 } 106 <link rel="preload" href="/Files/Templates/Designs/ncnielsen/fonts/35C9D3_0_0.woff2" as="font" type="font/woff2" crossorigin=""> 107 <link rel="preload" href="/Files/Templates/Designs/ncnielsen/fonts/35C9D3_0_0.woff" as="font" type="font/woff" crossorigin=""> 108 <link rel="preload" href="/Files/Templates/Designs/ncnielsen/fonts/35C9D3_1_0.woff2" as="font" type="font/woff2" crossorigin=""> 109 <link rel="preload" href="/Files/Templates/Designs/ncnielsen/fonts/35C9D3_1_0.woff" as="font" type="font/woff" crossorigin=""> 110 <link rel="preload" href="/Files/Templates/Designs/ncnielsen/fonts/24cac6da-66aa-48cc-b950-fcadf2b76ec5.woff2" as="font" type="font/woff2" crossorigin=""> 111 <link rel="preload" href="/Files/Templates/Designs/ncnielsen/fonts/bd659a5c-378a-4055-80a1-69bc94044bac.woff" as="font" type="font/woff" crossorigin=""> 112 <link rel="preload" href="/Files/Templates/Designs/ncnielsen/fonts/4e27b36d-615c-41eb-baf6-a3095eb585f5.woff2" as="font" type="font/woff2" crossorigin=""> 113 <link rel="preload" href="/Files/Templates/Designs/ncnielsen/fonts/9805cfa5-519d-4bfb-82af-f6e07c275f94.woff" as="font" type="font/woff" crossorigin=""> 114 @RenderSnippet("csstop") 115 </head> 116 <body data-is-touch="@istouch" data-is-mobile='@GetGlobalValue("Global:Device.IsMobile")' data-is-tablet='@GetGlobalValue("Global:Device.IsTablet")' data-is-desktop='@GetGlobalValue("Global:Device.IsDesktop")' data-is-ios='@GetGlobalValue("Global:Device.IsIOS")' class='preload page-template-@templateName'> 117 <div id="pageWrap"> 118 <nav id="navigation"> 119 <a href="/" id="logo"> 120 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/nc_nielsen_logo.svg"))) 121 { 122 <text>@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/nc_nielsen_logo.svg"))</text> 123 } 124 </a> 125 @GetValue("DwNavigation(primaryNavigation)") 126 <a id="burger"> 127 <span class="icon icon-burger"> 128 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-burger.svg"))) 129 { 130 <text>@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-burger.svg"))</text> 131 } 132 </span> 133 </a> 134 @if (!string.IsNullOrWhiteSpace(GetString("Ecom:Order.OrderLines.TotalProductQuantity"))) 135 { 136 <span class="cart mobile-cart"> 137 <a> 138 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-cart.svg"))) 139 { 140 <span class="icon icon-cart">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-cart.svg"))</span> 141 } 142 <span class="cart-count"> 143 @GetString("Ecom:Order.OrderLines.TotalProductQuantity") 144 </span> 145 </a> 146 </span> 147 } 148 <ul id="secondaryNavigation"> 149 @if (!string.IsNullOrWhiteSpace(GetString("Ecom:Order.OrderLines.TotalProductQuantity"))) 150 { 151 <li class="cart"> 152 <a> 153 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-cart.svg"))) 154 { 155 <span class="icon icon-cart">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-cart.svg"))</span> 156 } 157 <span class="cart-count"> 158 @GetString("Ecom:Order.OrderLines.TotalProductQuantity") 159 </span> 160 </a> 161 </li> 162 } 163 <li> 164 <a data-modal-trigger="modalLanguages"> 165 @foreach (var wl in GetLoop("WebsiteLanguages")) 166 { 167 if (wl.GetBoolean("IsCurrent")) 168 { 169 <text>@Translate("Translate_Language_selector_" + wl.GetString("Culture") + "_short")</text> 170 } 171 } 172 </a> 173 </li> 174 <li> 175 <a href='/Default.aspx?ID=@GetString("Item.Area.LoginPageId")'> 176 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-lock.svg"))) 177 { 178 <span class="icon icon-lock">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-lock.svg"))</span> 179 } 180 </a> 181 </li> 182 <li> 183 <a data-modal-trigger="modalSearch"> 184 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-search.svg"))) 185 { 186 <span class="icon icon-search">@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-search.svg"))</span> 187 } 188 </a> 189 </li> 190 </ul> 191 <div id="burgerNavigation"> 192 <span class="burger-close"> 193 @Translate("Translate_Modal_Luk") 194 <span class="icon icon-close"> 195 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-close.svg"))) 196 { 197 <text>@System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-close.svg"))</text> 198 } 199 </span> 200 </span> 201 @GetValue("DwNavigation(burgerNav)") 202 <div class="social"> 203 <span class="header">@Translate("Translate_Foelg_os")</span> 204 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-facebook.svg")) && !string.IsNullOrWhiteSpace(GetString("Item.Area.Facebook"))) 205 { 206 <a href='@GetString("Item.Area.Facebook")' class="icon icon-facebook" target="_blank"> 207 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-facebook.svg")) 208 </a> 209 } 210 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-linkedin.svg")) && !string.IsNullOrWhiteSpace(GetString("Item.Area.LinkedIn"))) 211 { 212 <a href='@GetString("Item.Area.LinkedIn")' class="icon icon-linkedin" target="_blank"> 213 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-linkedin.svg")) 214 </a> 215 } 216 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-youtube.svg")) && !string.IsNullOrWhiteSpace(GetString("Item.Area.YouTube"))) 217 { 218 <a href='@GetString("Item.Area.YouTube")' class="icon icon-youtube" target="_blank"> 219 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-youtube.svg")) 220 </a> 221 } 222 </div> 223 <div id="burgerBottom"> 224 @if (Pageview.Area.ID == 1) 225 { 226 string burgerLoginHref = "/Default.aspx?ID=" + GetString("Item.Area.LoginPageId"); 227 228 <a href="@burgerLoginHref"> 229 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-lock.svg"))) 230 { 231 <span class="icon icon-lock"> 232 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-lock.svg")) 233 </span> 234 } 235 </a> 236 } 237 <a data-modal-trigger="modalSearch"> 238 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-search.svg"))) 239 { 240 <span class="icon icon-search"> 241 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-search.svg")) 242 </span> 243 } 244 </a> 245 <a data-modal-trigger="modalLanguages"> 246 <span> 247 @foreach (var wl in GetLoop("WebsiteLanguages")) 248 { 249 if (wl.GetBoolean("IsCurrent")) 250 { 251 <text>@Translate("Translate_Language_selector_" + wl.GetString("Culture") + "_short")</text> 252 } 253 } 254 </span> 255 </a> 256 </div> 257 </div> 258 </nav> 259 <header id="header"> 260 <div id="productGalleryImageMain"> 261 @if (UMID != "-1") 262 { 263 if (productModel.HasProduct) 264 { 265 string approvedValue = productModel.Product.GetSpecificationValue<string>("M-0090550", "-"); 266 267 <h1 data-test="test">@productModel.Product.Name</h1> 268 269 if (productModel.Product.ImageList.Count() > 1) 270 { 271 <div class="gallery"> 272 @{ 273 int counter = 0; 274 275 foreach (var img in productModel.Product.ImageList) 276 { 277 string imagePath = ConvertToBase64Image($"https:{img.Value}"); 278 279 if (counter == 0) 280 { 281 <div class="gallery-large"> 282 <div class="image js-active"> 283 <img src='@imagePath' alt='@img.Key'> 284 </div> 285 <div class="image second-image"></div> 286 @if (approvedValue != "-") 287 { 288 <span class="approved">@productModel.Product.Make @approvedValue</span> 289 } 290 </div> 291 <div class="gallery-small js-active"> 292 <img src='@imagePath' alt='@img.Key'> 293 </div> 294 } 295 else 296 { 297 <div class="gallery-small"> 298 <img src='@imagePath' alt='@img.Key'> 299 </div> 300 } 301 302 counter++; 303 } 304 } 305 </div> 306 } 307 else if (productModel.Product.ImageList.Count() == 1) 308 { 309 foreach (var img in productModel.Product.ImageList) 310 { 311 string imagePath = ConvertToBase64Image($"https:{img.Value}"); 312 313 <div> 314 <img src='@imagePath' alt='@img.Key'> 315 @if (approvedValue != "-") 316 { 317 <span class="approved">@productModel.Product.Make @approvedValue</span> 318 } 319 </div> 320 } 321 } 322 else if (productModel.Product.ImageList.Count() == 0) 323 { 324 <div> 325 <img src="/Files/Images/ncnielsen/used_machines/used_machines_fallback.jpg" alt=""> 326 @if (approvedValue != "-") 327 { 328 <span class="approved">@productModel.Product.Make @approvedValue</span> 329 } 330 </div> 331 } 332 } 333 else 334 { 335 <h1>@Translate("Translate_Used_machine_not_found")</h1> 336 <div> 337 <img src="http://placehold.it/690x516?text=@Translate(" translate_used_machine_not_found")"="" alt="No product"> 338 </div> 339 } 340 } 341 else 342 { 343 <text>@RenderSnippet("ChosenUsedMachineGallery")</text> 344 } 345 </div> 346 <div class="content"> 347 @if (productModel.HasProduct) 348 { 349 <a href="@pdfDownloadLink" target="_blank" id="usedMachineSavePdf"> 350 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-pdf.svg"))) 351 { 352 <span class="icon icon-pdf"> 353 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-pdf.svg")) 354 </span> 355 } 356 <span class="text"> 357 @Translate("Translate_Gem_som_PDF") 358 </span> 359 </a> 360 } 361 @if (UMID != "-1") 362 { 363 if (productModel.HasProduct) 364 { 365 <div class="specifications"> 366 <span class="header">@Translate("Translate_Specifikationer")</span> 367 <ul> 368 <li class="specification"> 369 <span class="label">@Translate("Translate_Intern_nummer")</span> 370 <span class="value">@productModel.Product.Id</span> 371 </li> 372 <li class="specification"> 373 <span class="label">@Translate("Translate_Aargang")</span> 374 <span class="value">@productModel.Product.Year</span> 375 </li> 376 @if (productModel.Product.SpecificationList.Count() > 10) 377 { 378 for (var a = 0; a < 10; a++) 379 { 380 if ( 381 @productModel.Product.SpecificationList[a].Id != "M-0090570" && 382 @productModel.Product.SpecificationList[a].Id != "M-0090565" 383 ) 384 { 385 <li class="specification"><span class="label">@productModel.Product.SpecificationList[a].Label</span> <span class="value">@productModel.Product.SpecificationList[a].Value</span></li> 386 } 387 } 388 } 389 else 390 { 391 foreach (var spec in productModel.Product.SpecificationList) 392 { 393 if ( 394 spec.Id != "M-0090570" && 395 spec.Id != "M-0090565" 396 ) 397 { 398 <li class="specification"><span class="label">@spec.Label</span> <span class="value">@spec.Value</span></li> 399 } 400 } 401 } 402 </ul> 403 @if (productModel.Product.SpecificationList.Count() > 10) 404 { 405 <div> 406 <a id="allSpecificationsLink" class="button button-inline">@Translate("Translate_Se_alle_specifikationer")</a> 407 </div> 408 } 409 <a id="usedMachineRequestButton" class="button button-primary"> 410 <span class="text">@Translate("Translate_Prisforespoergsel")</span> 411 </a> 412 </div> 413 <div id="usedMachinesRequestForm"> 414 @{ 415 int formParagraphID = -1; 416 417 try 418 { 419 formParagraphID = Convert.ToInt32(Pageview.Area.Item["UsedMachinesRequestParagraph"]); 420 } 421 catch 422 { 423 424 } 425 426 if (formParagraphID != -1) 427 { 428 <text>@RenderParagraphContent(formParagraphID)</text> 429 } 430 } 431 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-close.svg"))) 432 { 433 <span class="icon icon-close"> 434 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-close.svg")) 435 </span> 436 } 437 </div> 438 } 439 else 440 { 441 <div class="specifications"> 442 443 </div> 444 } 445 } 446 else 447 { 448 <text>@RenderSnippet("ChosenUsedMachineHeaderSpecifications")</text> 449 <div id="usedMachinesRequestForm"> 450 @{ 451 int formParagraphID = -1; 452 453 try 454 { 455 formParagraphID = Convert.ToInt32(Pageview.Area.Item["UsedMachinesRequestParagraph"]); 456 } 457 catch 458 { 459 460 } 461 462 if (formParagraphID != -1) 463 { 464 <text>@RenderParagraphContent(formParagraphID)</text> 465 } 466 } 467 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-close.svg"))) 468 { 469 <span class="icon icon-close"> 470 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-close.svg")) 471 </span> 472 } 473 </div> 474 } 475 <div class="social"> 476 <a href='tel:@Translate("Translate_Brugte_maskiner_kontakt_telefonnr")' class="button button-secondary"> 477 <span class="text">@Translate("Translate_Kontakt_os_paa")</span> 478 </a> 479 <span class="header">Følg os</span> 480 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-facebook.svg")) && !string.IsNullOrWhiteSpace(Pageview.Area.Item["Facebook"].ToString())) 481 { 482 <a href='@Pageview.Area.Item["Facebook"]' class="icon icon-facebook" target="_blank"> 483 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-facebook.svg")) 484 </a> 485 } 486 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-linkedin.svg")) && !string.IsNullOrWhiteSpace(Pageview.Area.Item["LinkedIn"].ToString())) 487 { 488 <a href='@Pageview.Area.Item["LinkedIn"]' class="icon icon-linkedin" target="_blank"> 489 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-linkedin.svg")) 490 </a> 491 } 492 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-youtube.svg")) && !string.IsNullOrWhiteSpace(Pageview.Area.Item["YouTube"].ToString())) 493 { 494 <a href='@Pageview.Area.Item["YouTube"]' class="icon icon-youtube" target="_blank"> 495 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-youtube.svg")) 496 </a> 497 } 498 </div> 499 </div> 500 </header> 501 @if (UMID != "-1") 502 { 503 if (productModel.HasProduct) 504 { 505 if (productModel.Product.SpecificationList.Count() > 10) 506 { 507 <section id="allSpecifications" class="section section-white"> 508 <div class="content"> 509 <div class="specifications"> 510 <h2>@Translate("Translate_Alle_specifikationer")</h2> 511 <ul> 512 <li class="specification"> 513 <span class="label">@Translate("Translate_Intern_nummer")</span> 514 <span class="value">@productModel.Product.Id</span> 515 </li> 516 <li class="specification"> 517 <span class="label">@Translate("Translate_Aargang")</span> 518 <span class="value">@productModel.Product.Year</span> 519 </li> 520 @foreach (var spec in productModel.Product.SpecificationList) 521 { 522 if ( 523 spec.Id != "M-0090570" && 524 spec.Id != "M-0090565" 525 ) 526 { 527 <li class="specification"><span class="label">@spec.Label</span> <span class="value">@spec.Value</span></li> 528 } 529 } 530 </ul> 531 <a id="usedMachineRequestButton" class="button button-primary"> 532 <span class="text">@Translate("Translate_Prisforespoergsel")</span> 533 </a> 534 </div> 535 </div> 536 </section> 537 } 538 } 539 540 string templatename = GetGlobalValue("Global:Pageview.LayoutTemplate").Replace(".cshtml", "").ToLower(); 541 542 if (templatename == "pdf-used-machine") 543 { 544 double dHalfWay = Convert.ToDouble(productModel.Product.SpecificationList.Count() - 2) / 2; 545 int halfWay = (int)Math.Ceiling(dHalfWay); 546 halfWay = halfWay; 547 548 <section id="pdfSpecifications" class="section section-white"> 549 <div class="content"> 550 <div class="specifications"> 551 <ul> 552 <li class="specification"> 553 <span class="label">@Translate("Translate_Intern_nummer")</span> 554 <span class="value">@productModel.Product.Id</span> 555 </li> 556 <li class="specification"> 557 <span class="label">@Translate("Translate_Aargang")</span> 558 <span class="value">@productModel.Product.Year</span> 559 </li> 560 @for (int a = 0; a < halfWay; a++) 561 { 562 <li class="specification"> 563 <span class="label">@productModel.Product.SpecificationList[a].Label</span> 564 <span class="value">@productModel.Product.SpecificationList[a].Value</span> 565 </li> 566 } 567 </ul> 568 <ul> 569 @for (int a = halfWay; a < productModel.Product.SpecificationList.Count(); a++) 570 { 571 <li class="specification"> 572 <span class="label">@productModel.Product.SpecificationList[a].Label</span> 573 <span class="value">@productModel.Product.SpecificationList[a].Value</span> 574 </li> 575 } 576 </ul> 577 </div> 578 </div> 579 </section> 580 } 581 } 582 else 583 { 584 <text>@RenderSnippet("UsedMachineAllSpecifications")</text> 585 } 586 <div id="ecomContent">@GetValue("DwContent(ecomContent)")</div> 587 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 588 @using Dynamicweb 589 @using Dynamicweb.Environment 590 591 592 593 @SnippetStart("csstop") 594 <style> 595 @@page { 596 size: A4; 597 } 598 599 * { 600 box-sizing: border-box; 601 } 602 603 html { 604 margin: 0; 605 min-height: 100%; 606 position: relative; 607 background: transparent; 608 } 609 610 body { 611 width: 100%; 612 height: 100%; 613 background: transparent; 614 margin: 0; 615 color: #000; 616 font-family: Arial, Helvetica, sans-serif; 617 position: relative; 618 } 619 620 body:before { 621 content: none; 622 } 623 624 #pageWrap { 625 overflow: hidden; 626 width: 100%; 627 height: 100%; 628 position: relative; 629 padding: 2cm 2cm; 630 background: transparent; 631 } 632 633 .content .specifications .header { 634 line-height: 1.5em; 635 background: transparent; 636 } 637 638 #navigation, 639 #modalLanguages, 640 #modalSearch, 641 #header:before, 642 #header:after, 643 #header .specifications *, 644 #usedMachineRequestButton, 645 .gallery .gallery-small, 646 #usedMachineRequestButton, 647 #usedMachinesRequestForm, 648 #usedMachineSavePdf, 649 #allSpecifications h2, 650 .social, 651 #footerNavigation, 652 #footer:before, 653 #footer br, 654 #footer .social, 655 #allSpecifications, 656 #ecomContent { 657 display: none; 658 } 659 660 #burgerNav:after, 661 #burgerNavigation ul, 662 .section.section-white { 663 background: transparent; 664 } 665 666 #header { 667 height: auto; 668 /*margin: 2cm 2cm 0.5cm 2cm;*/ 669 padding: 0; 670 background: transparent; 671 } 672 673 .section { 674 /*margin: 0 2cm;*/ 675 background: transparent; 676 } 677 678 #header .specifications .header { 679 display: block; 680 background: transparent; 681 } 682 683 #header .header, 684 h1 { 685 color: #000; 686 font-size: 24pt; 687 display: block; 688 font-family: Arial, Helvetica, sans-serif; 689 background: transparent; 690 } 691 692 #header .content, 693 .section { 694 text-align: left; 695 background: transparent; 696 } 697 698 .section, 699 .gallery { 700 padding: 0; 701 background: transparent; 702 } 703 704 #productGalleryImageMain { 705 width: calc(100% - 4cm); 706 margin-bottom: 5mm; 707 background: transparent; 708 } 709 710 #productGalleryImageMain h1 { 711 margin-bottom: 5mm; 712 background: transparent; 713 } 714 715 #productGalleryImageMain { 716 width: calc(100% - 4cm); 717 background: transparent; 718 } 719 720 #productGalleryImageMain > div { 721 padding: 0; 722 background: transparent; 723 height: auto; 724 width: auto; 725 max-width: 100%; 726 max-height: 142mm; 727 } 728 729 .gallery .gallery-large { 730 /*width: 100%;*/ 731 height: auto; 732 width: auto; 733 max-width: 100%; 734 max-height: 142mm; 735 } 736 737 #productGalleryImageMain img, 738 .gallery .gallery-large img { 739 height: auto; 740 width: auto; 741 max-width: 100%; 742 max-height: 142mm; 743 } 744 745 .image { 746 display: block; 747 } 748 749 #pdfSpecifications ul { 750 width: 50%; 751 float: left; 752 padding: 0; 753 font-size: 11pt; 754 line-height: 1.08; 755 margin-left: -5mm; 756 margin-right: -5mm; 757 background: transparent; 758 } 759 760 #pdfSpecifications ul + ul { 761 margin-left: 10mm; 762 background: transparent; 763 } 764 765 #pdfSpecifications li { 766 display: block; 767 width: 100%; 768 float: left; 769 padding-bottom: 2mm; 770 padding-left: 5mm; 771 padding-right: 5mm; 772 overflow: hidden; 773 background: transparent; 774 } 775 776 #pdfSpecifications .label { 777 display: inline-block; 778 float: left; 779 background: transparent; 780 } 781 782 #pdfSpecifications .value { 783 display: inline-block; 784 float: right; 785 background: transparent; 786 } 787 788 #footer { 789 background: none; 790 font-size: 7pt; 791 height: 7mm; 792 position: absolute; 793 top: 230mm; 794 /*bottom: 1cm;*/ 795 left: auto; 796 right: 2cm; 797 overflow: hidden; 798 line-height: 1.3; 799 color: #000; 800 background: transparent; 801 } 802 803 #footer .content { 804 display: block; 805 margin: 0; 806 width: 100%; 807 max-width: none; 808 background: transparent; 809 } 810 811 #footer .header { 812 display: inline; 813 text-transform: none; 814 font-size: 7pt; 815 padding: 0; 816 margin: 0; 817 line-height: 1.3; 818 color: #000; 819 font-family: Arial, Helvetica, sans-serif; 820 font-weight: bold; 821 background: transparent; 822 } 823 824 #footer .header:after { 825 content: ":"; 826 display: inline; 827 position: static; 828 height: auto; 829 width: auto; 830 background: none; 831 bottom: auto; 832 left: auto; 833 font-family: Arial, Helvetica, sans-serif; 834 font-weight: bold; 835 background: transparent; 836 } 837 838 #footer p { 839 display: inline; 840 background: transparent; 841 } 842 843 #footer-logo { 844 position: absolute; 845 top: 230mm; 846 /*bottom: 1cm;*/ 847 left: 2cm; 848 width: 39.2mm; 849 height: 7mm; 850 z-index: 999999; 851 background: transparent; 852 } 853 854 #footer-logo img { 855 width: 100%; 856 height: 100%; 857 background: transparent; 858 } 859 </style> 860 @SnippetEnd("csstop") 861 862 @SnippetStart("UsedMachineBeforeFooter") 863 <div id="footer-logo"> 864 <img src="/files/templates/designs/ncnielsen/images/nc_nielsen_logo_300ppi.png"> 865 </div> 866 @SnippetEnd("UsedMachineBeforeFooter") 867 <script src="/Files/Templates/Designs/ncnielsen/js/html2pdf.bundle.min.js" async=""></script> 868 <script> 869 let intervalCounter = 0; 870 871 let _checkReadyState = setInterval(function() { 872 intervalCounter++; 873 874 if ((document.readyState == 'complete' || document.readyState == 'loaded' || document.readyState == 'interactive') && typeof html2pdf) { 875 setupPrint(); 876 clearInterval(_checkReadyState); 877 } 878 879 if (intervalCounter > 100) { 880 clearInterval(_checkReadyState); 881 } 882 }, 100); 883 884 function setupPrint() { 885 const element = document.getElementById('pageWrap'); 886 const options = { 887 margin: 2, 888 fileName: 'Used machine', 889 jsPDF: { unit: 'cm', format: 'a4', orientation: 'portrait' } 890 } 891 892 if (element) { 893 html2pdf(element); 894 } 895 } 896 </script> 897 @RenderSnippet("UsedMachineBeforeFooter") 898 <footer id="footer" class="section section-greyextradark"> 899 <div class="content"> 900 <nav id="footerNavigation"> 901 <span class="header">Menu</span> 902 @GetValue("DwNavigation(footerNav)") 903 </nav> 904 @foreach (var departmentItem in GetLoop("Item.Area.Departments")) 905 { 906 @SnippetStart("ContactHeaderDepartments") 907 <li class="department"> 908 <h2>@departmentItem.GetString("Item.Area.Departments.Header")</h2> 909 <ul class="infoList"> 910 <li class="info"> 911 @departmentItem.GetString("Item.Area.Departments.Name") 912 <br> 913 @departmentItem.GetString("Item.Area.Departments.Address") 914 <br> 915 @departmentItem.GetString("Item.Area.Departments.Zipcode") @departmentItem.GetString("Item.Area.Departments.City") 916 </li> 917 <li class="info"> 918 Tlf.: <a href='tel:@departmentItem.GetString("Item.Area.Departments.Phone")'>@departmentItem.GetString("Item.Area.Departments.Phone")</a> 919 <br> 920 <a href='mailto:@departmentItem.GetString("Item.Area.Departments.Email")'>@departmentItem.GetString("Item.Area.Departments.Email")</a> 921 </li> 922 </ul> 923 </li> 924 @SnippetEnd("ContactHeaderDepartments") 925 <div id="@departmentItem.GetString(" item.area.departments.id_1")"=""> 926 <span class="header">@departmentItem.GetString("Item.Area.Departments.Header")</span> 927 <p> 928 @departmentItem.GetString("Item.Area.Departments.Name") 929 <br> 930 @departmentItem.GetString("Item.Area.Departments.Address") 931 <br> 932 @departmentItem.GetString("Item.Area.Departments.Zipcode") @departmentItem.GetString("Item.Area.Departments.City") 933 <br> 934 @departmentItem.GetString("Item.Area.Departments.Phone") 935 </p> 936 </div> 937 } 938 </div> 939 <div class="content"> 940 <div class="social"> 941 <span class="header">@Translate("Translate_Foelg_os")</span> 942 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-facebook.svg")) && !string.IsNullOrWhiteSpace(GetString("Item.Area.Facebook"))) 943 { 944 <a href='@GetString("Item.Area.Facebook")' class="icon icon-facebook" target="_blank"> 945 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-facebook.svg")) 946 </a> 947 } 948 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-linkedin.svg")) && !string.IsNullOrWhiteSpace(GetString("Item.Area.LinkedIn"))) 949 { 950 <a href='@GetString("Item.Area.LinkedIn")' class="icon icon-linkedin" target="_blank"> 951 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-linkedin.svg")) 952 </a> 953 } 954 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-youtube.svg")) && !string.IsNullOrWhiteSpace(GetString("Item.Area.YouTube"))) 955 { 956 <a href='@GetString("Item.Area.YouTube")' class="icon icon-youtube" target="_blank"> 957 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-youtube.svg")) 958 </a> 959 } 960 </div> 961 </div> 962 </footer> 963 </div> 964 <div id="pageOverlay"></div> 965 <div id="modalOverlay"></div> 966 <div id="modalSearch" class="modal"> 967 <div class="modal-content-wrap"> 968 <div class="content"> 969 <form method="get" action='/Default.aspx?Id=@GetString("Item.Area.SearchPageId")'> 970 <div class="input-wrap input-wrap-large"> 971 <input type="hidden" name="id" value='@GetString("Item.Area.SearchPageId")'> 972 <input type="text" name="q" placeholder='@Translate("Translate_Soeg_Placeholder")'> 973 <button type="submit" class="button button-primary"><span class="text">@Translate("Translate_Soeg")</span></button> 974 </div> 975 </form> 976 </div> 977 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-close.svg"))) 978 { 979 <span class="icon icon-close button-close"> 980 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-close.svg")) 981 </span> 982 } 983 </div> 984 </div> 985 <div id="modalLanguages" class="modal"> 986 <div class="modal-content-wrap"> 987 <div class="content"> 988 @foreach (var wl in GetLoop("WebsiteLanguages")) 989 { 990 if (wl.GetBoolean("IsCurrent")) 991 { 992 <span class="language-current"> 993 @Translate("Translate_Language_selector_" + wl.GetString("Culture")) 994 </span> 995 } 996 else if (!string.IsNullOrWhiteSpace(wl.GetString("PrimaryDomain"))) 997 { 998 string languageURL = "https://" + wl.GetString("PrimaryDomain"); 999 1000 @SnippetStart("OtherLanguages") 1001 <a class="language-other" href='@languageURL'><span>@Translate("Translate_Language_selector_" + wl.GetString("Culture") + "_short")</span></a> 1002 @SnippetEnd("OtherLanguages") 1003 } 1004 } 1005 @RenderSnippet("OtherLanguages") 1006 </div> 1007 @if (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-close.svg"))) 1008 { 1009 <span class="icon icon-close button-close"> 1010 @System.IO.File.ReadAllText(System.Web.HttpContext.Current.Server.MapPath("/files/templates/designs/ncnielsen/images/icon-close.svg")) 1011 </span> 1012 } 1013 </div> 1014 </div> 1015 @RenderSnippet("contentbottom") 1016 <script src='/Files/Templates/Designs/ncnielsen/js/ncnielsen.min.js?v=@jsEditDate' async="" defer=""></script> 1017 @if (System.Web.HttpContext.Current.Request.Cookies["ncnielsen-styles"] == null) 1018 { 1019 System.Web.HttpContext.Current.Response.Cookies["ncnielsen-styles"].Value = "1"; 1020 System.Web.HttpContext.Current.Response.Cookies["ncnielsen-styles"].Expires = DateTime.Now.AddDays(100); 1021 1022 <noscript id="deferred-styles"> 1023 <link rel="stylesheet" href="/files/templates/designs/ncnielsen/css/ncnielsen.min.css" media="screen"> 1024 </noscript> 1025 <script> 1026 var loadDeferredStyles = function () { 1027 var addStylesNode = document.getElementById("deferred-styles"); 1028 var replacement = document.createElement("div"); 1029 1030 replacement.innerHTML = addStylesNode.textContent; 1031 document.body.appendChild(replacement) 1032 addStylesNode.parentElement.removeChild(addStylesNode); 1033 }; 1034 1035 var raf = requestAnimationFrame || mozRequestAnimationFrame || webkitRequestAnimationFrame || msRequestAnimationFrame; 1036 1037 if (raf) raf(function () { window.setTimeout(loadDeferredStyles, 0); }); 1038 else window.addEventListener('load', loadDeferredStyles); 1039 </script> 1040 } 1041 </body> 1042 </html> 1043