RealMæglerne

Søg bolig

0 Boliger til salg
Error executing template "Designs/rm_sub/ContentPage/Paragraph/App.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_3b08cc96e01e4a9a8ff2e0d0e1cda451.ExecuteAsync()
   at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
   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 @using Dynamicweb.Frontend 3 @using Dynamicweb.Rapido.Blocks.Components 4 @using Dynamicweb.Rapido.Blocks.Components.General 5 6 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 7 @using Dynamicweb.Frontend 8 9 @* Include the components *@ 10 @using System.Text.RegularExpressions 11 @using System.Collections.Generic 12 @using System.Reflection 13 @using Dynamicweb.Rapido.Blocks.Components 14 @using Dynamicweb.Rapido.Blocks.Components.Articles 15 @using Dynamicweb.Rapido.Blocks.Components.Documentation 16 @using Dynamicweb.Rapido.Blocks 17 @using Dynamicweb; 18 19 @functions { 20 void RenderBlockList(List<Block> blocks) 21 { 22 bool debug = !String.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(Dynamicweb.Context.Current.Request.QueryString.Get("debug")) : false; 23 blocks = blocks.OrderBy(item => item.SortId).ToList(); 24 25 foreach (Block item in blocks) 26 { 27 if (debug) { 28 <!-- Block START: @item.Id --> 29 } 30 31 if (item.Design == null) 32 { 33 RenderBlock(item); 34 } 35 else if (item.Design.RenderType == RenderType.None) { 36 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 37 38 <div class="@cssClass dw-mod"> 39 RenderBlock(item); 40 </div> 41 } 42 else if (item.Design.RenderType != RenderType.Hide) 43 { 44 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 45 46 if (!item.SkipRenderBlocksList) { 47 if (item.Design.RenderType == RenderType.Row) 48 { 49 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id"> 50 RenderBlock(item); 51 </div> 52 } 53 54 if (item.Design.RenderType == RenderType.Column) 55 { 56 string hidePadding = item.Design.HidePadding ? "u-no-padding" : ""; 57 string size = item.Design.Size ?? "12"; 58 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size; 59 60 <div class="grid__col-lg-@item.Design.Size grid__col-md-@item.Design.Size grid__col-sm-12 grid__col-xs-12 @hidePadding @cssClass dw-mod" id="Block__@item.Id"> 61 RenderBlock(item); 62 </div> 63 } 64 65 if (item.Design.RenderType == RenderType.Table) 66 { 67 <table class="table @cssClass dw-mod" id="Block__@item.Id"> 68 RenderBlock(item); 69 </table> 70 } 71 72 if (item.Design.RenderType == RenderType.TableRow) 73 { 74 <tr class="@cssClass dw-mod" id="Block__@item.Id"> 75 RenderBlock(item); 76 </tr> 77 } 78 79 if (item.Design.RenderType == RenderType.TableColumn) 80 { 81 <td class="@cssClass dw-mod" id="Block__@item.Id"> 82 RenderBlock(item); 83 </td> 84 } 85 86 if (item.Design.RenderType == RenderType.CardHeader) 87 { 88 <div class="card-header @cssClass dw-mod"> 89 RenderBlock(item); 90 </div> 91 } 92 93 if (item.Design.RenderType == RenderType.CardBody) 94 { 95 <div class="card @cssClass dw-mod"> 96 RenderBlock(item); 97 </div> 98 } 99 100 if (item.Design.RenderType == RenderType.CardFooter) 101 { 102 <div class="card-footer @cssClass dw-mod"> 103 RenderBlock(item); 104 </div> 105 } 106 } 107 else 108 { 109 RenderBlock(item); 110 } 111 } 112 113 if (debug) { 114 <!-- Block END: @item.Id --> 115 } 116 } 117 } 118 119 void RenderBlock(Block item) 120 { 121 bool debug = !String.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(Dynamicweb.Context.Current.Request.QueryString.Get("debug")) : false; 122 123 if (item.Template != null) 124 { 125 @BlocksPage.RenderTemplate(item.Template) 126 } 127 128 if (item.Component != null) 129 { 130 string customSufix = "Custom"; 131 string methodName = item.Component.HelperName; 132 133 ComponentBase[] methodParameters = new ComponentBase[1]; 134 methodParameters[0] = item.Component; 135 Type methodType = this.GetType(); 136 137 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix); 138 MethodInfo generalMethod = methodType.GetMethod(methodName); 139 140 try { 141 if (debug) { 142 <!-- Component: @methodName.Replace("Render", "") --> 143 } 144 @customMethod.Invoke(this, methodParameters).ToString(); 145 } catch { 146 try { 147 @generalMethod.Invoke(this, methodParameters).ToString() 148 ; 149 } catch(Exception ex) { 150 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex); 151 } 152 } 153 } 154 155 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList) 156 { 157 RenderBlockList(item.BlocksList); 158 } 159 } 160 } 161 162 163 @using Dynamicweb.Rapido.Blocks.Components 164 @using Dynamicweb.Rapido.Blocks.Components.General 165 @using Dynamicweb.Rapido.Blocks 166 @using System.IO 167 168 @* Required *@ 169 @using Dynamicweb.Rapido.Blocks.Components 170 @using Dynamicweb.Rapido.Blocks.Components.General 171 @using Dynamicweb.Rapido.Blocks 172 173 @functions { 174 void Render(ComponentBase component) 175 { 176 if (component != null) 177 { 178 @component.Render(this) 179 } 180 } 181 } 182 183 @* Components *@ 184 @using System.Reflection 185 @using Dynamicweb.Rapido.Blocks.Components.General 186 187 @* Component *@ 188 189 @functions { 190 void RenderIcon(Icon settings) 191 { 192 if (settings != null) 193 { 194 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 195 196 if (settings.Name != null) 197 { 198 if (string.IsNullOrEmpty(settings.Label)) 199 { 200 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i> 201 } 202 else 203 { 204 if (settings.LabelPosition == IconLabelPosition.Before) 205 { 206 <div class="u-flex u-flex--align-items-center @settings.CssClass">@settings.Label <i class="@settings.Prefix @settings.Name u-margin-left" @color></i></div> 207 } 208 else 209 { 210 <div class="u-flex u-flex--align-items-center @settings.CssClass"><i class="@settings.Prefix @settings.Name u-margin-right--lg u-w20px" @color></i>@settings.Label</div> 211 } 212 } 213 } 214 else if (!string.IsNullOrEmpty(settings.Label)) 215 { 216 @settings.Label 217 } 218 } 219 } 220 } 221 222 @using System.Reflection 223 @using Dynamicweb.Rapido.Blocks.Components.General 224 @using Dynamicweb.Rapido.Blocks.Components 225 @using Dynamicweb.Core 226 @using System.Text.RegularExpressions 227 228 @* Component *@ 229 230 @functions { 231 void RenderButton(Button settings) 232 { 233 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 234 { 235 Dictionary<string, string> attributes = new Dictionary<string, string>(); 236 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 237 if (settings.Disabled) { 238 attributes.Add("disabled", "true"); 239 classList.Add("disabled"); 240 } 241 242 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle)) 243 { 244 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 245 RenderConfirmDialog(settings); 246 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true"; 247 } 248 249 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 250 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 251 if (!string.IsNullOrEmpty(settings.AltText)) 252 { 253 attributes.Add("title", settings.AltText); 254 } 255 else if (!string.IsNullOrEmpty(settings.Title)) 256 { 257 string cleanTitle = Regex.Replace(settings.Title, "<.*?>", String.Empty); 258 cleanTitle = cleanTitle.Replace("&nbsp;", " "); 259 attributes.Add("title", cleanTitle); 260 } 261 262 var onClickEvents = new List<string>(); 263 if (!string.IsNullOrEmpty(settings.OnClick)) 264 { 265 onClickEvents.Add(settings.OnClick); 266 } 267 if (!string.IsNullOrEmpty(settings.Href)) 268 { 269 if (settings.Href.Contains("javascript")) 270 { 271 settings.Href = settings.Href.Replace("http://", ""); 272 } 273 onClickEvents.Add("location.href='" + settings.Href + "'"); 274 } 275 if (onClickEvents.Count > 0) 276 { 277 attributes.Add("onClick", string.Join(";", onClickEvents)); 278 } 279 280 if (settings.ButtonLayout != ButtonLayout.None) 281 { 282 classList.Add("btn"); 283 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 284 if (btnLayout == "linkclean") 285 { 286 btnLayout = "link-clean"; //fix 287 } 288 classList.Add("btn--" + btnLayout); 289 } 290 291 if (settings.Icon == null) 292 { 293 settings.Icon = new Icon(); 294 } 295 296 settings.Icon.CssClass += Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower() != "linkclean" ? " u-flex--align-center" : ""; 297 settings.Icon.Label = settings.Title; 298 299 attributes.Add("type", Enum.GetName(typeof(ButtonType), settings.ButtonType).ToLower()); 300 301 <button class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@{RenderIcon(settings.Icon);}</button> 302 } 303 } 304 305 void RenderConfirmDialog(Button settings) 306 { 307 Modal confirmDialog = new Modal { 308 Id = settings.Id, 309 Width = ModalWidth.Sm, 310 Heading = new Heading 311 { 312 Level = 2, 313 Title = settings.ConfirmTitle 314 }, 315 BodyText = settings.ConfirmText 316 }; 317 318 confirmDialog.AddAction(new Button { Title = Translate("Cancel"), ButtonLayout = ButtonLayout.Secondary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false"}); 319 confirmDialog.AddAction(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false;" + settings.OnClick }); 320 321 RenderModal(confirmDialog); 322 } 323 } 324 @using System.Reflection 325 @using Dynamicweb.Rapido.Blocks.Components.General 326 @using Dynamicweb.Rapido.Blocks.Components 327 @using Dynamicweb.Core 328 329 @* Component *@ 330 331 @functions{ 332 void RenderLink(Link settings) 333 { 334 if (settings != null && !string.IsNullOrEmpty(settings.Href) && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 335 { 336 Dictionary<string, string> attributes = new Dictionary<string, string>(); 337 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 338 if (settings.Disabled) 339 { 340 attributes.Add("disabled", "true"); 341 classList.Add("disabled"); 342 } 343 344 if (!string.IsNullOrEmpty(settings.AltText)) 345 { 346 attributes.Add("title", settings.AltText); 347 } 348 else if (!string.IsNullOrEmpty(settings.Title)) 349 { 350 attributes.Add("title", settings.Title); 351 } 352 353 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 354 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 355 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onClick", settings.OnClick); } 356 attributes.Add("href", settings.Href); 357 358 if (settings.ButtonLayout != ButtonLayout.None) 359 { 360 classList.Add("btn"); 361 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 362 if (btnLayout == "linkclean") 363 { 364 btnLayout = "link-clean"; //fix 365 } 366 classList.Add("btn--" + btnLayout); 367 } 368 369 if (settings.Icon == null) 370 { 371 settings.Icon = new Icon(); 372 } 373 settings.Icon.Label = settings.Title; 374 375 if (settings.Target == LinkTargetType.Blank && settings.Rel == LinkRelType.None) 376 { 377 settings.Rel = LinkRelType.Noopener; 378 } 379 if (settings.Target != LinkTargetType.None) 380 { 381 attributes.Add("target", "_" + Enum.GetName(typeof(LinkTargetType), settings.Target).ToLower()); 382 } 383 if (settings.Download) 384 { 385 attributes.Add("download", "true"); 386 } 387 if (settings.Rel != LinkRelType.None) 388 { 389 attributes.Add("rel", Enum.GetName(typeof(LinkRelType), settings.Rel).ToLower()); 390 } 391 392 <a class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>Render(settings.Icon);</a> 393 } 394 } 395 } 396 397 @using System.Reflection 398 @using Dynamicweb.Rapido.Blocks.Components 399 @using Dynamicweb.Rapido.Blocks.Components.General 400 @using Dynamicweb.Rapido.Blocks 401 402 @* Component *@ 403 404 @functions{ 405 void RenderRating(Rating settings) 406 { 407 if (settings.Score > 0) 408 { 409 int rating = settings.Score; 410 string iconType = "fa-star"; 411 412 switch (settings.Type.ToString()) { 413 case "Stars": 414 iconType = "fa-star"; 415 break; 416 case "Hearts": 417 iconType = "fa-heart"; 418 break; 419 case "Lemons": 420 iconType = "fa-lemon"; 421 break; 422 case "Bombs": 423 iconType = "fa-bomb"; 424 break; 425 } 426 427 <div class="u-ta-right"> 428 @for (int i = 0; i < settings.OutOf; i++) 429 { 430 <i class="@(rating > i ? "fas" : "far") @iconType"></i> 431 } 432 </div> 433 } 434 } 435 } 436 @using System.Reflection 437 @using Dynamicweb.Rapido.Blocks.Components.General 438 @using Dynamicweb.Rapido.Blocks.Components 439 440 441 @* Component *@ 442 443 @functions{ 444 void RenderNavigation(Navigation settings) { 445 RenderNavigation(new 446 { 447 id = settings.Id, 448 cssclass = settings.CssClass, 449 startLevel = settings.StartLevel, 450 endlevel = settings.EndLevel, 451 expandmode = settings.Expandmode, 452 sitemapmode = settings.SitemapMode, 453 template = settings.Template 454 }); 455 } 456 } 457 458 @using Dynamicweb.Rapido.Blocks.Components.General 459 @using Dynamicweb.Rapido.Blocks.Components 460 461 @* Component *@ 462 463 @functions { 464 void RenderLeftNavigation(LeftNavigation settings) { 465 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 466 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 467 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 468 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 469 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 470 471 <div class="grid__cell"> 472 RenderNavigation(settings); 473 </div> 474 } 475 } 476 477 @using System.Reflection 478 @using Dynamicweb.Rapido.Blocks.Components.General 479 @using Dynamicweb.Core 480 481 @* Component *@ 482 483 @functions { 484 void RenderHeading(Heading settings) 485 { 486 if (settings != null && !string.IsNullOrEmpty(settings.Title)) 487 { 488 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 489 string tagName = settings.Level != 0 ? "h" + settings.Level.ToString() : "div"; 490 491 @("<" + tagName + " class=\"" + settings.CssClass + " dw-mod\" " + color + ">") 492 if (!string.IsNullOrEmpty(settings.Link)) 493 { 494 RenderLink(new Link { Href = settings.Link, Icon = settings.Icon, Title = settings.Title, ButtonLayout = ButtonLayout.None }); 495 } 496 else 497 { 498 if (settings.Icon == null) 499 { 500 settings.Icon = new Icon(); 501 } 502 settings.Icon.Label = settings.Title; 503 RenderIcon(settings.Icon); 504 } 505 @("</" + tagName + ">"); 506 } 507 } 508 } 509 510 @using Dynamicweb.Rapido.Blocks.Components 511 @using Dynamicweb.Rapido.Blocks.Components.General 512 @using Dynamicweb.Rapido.Blocks 513 @using Dynamicweb.Frontend 514 515 @* Component *@ 516 517 @functions { 518 void RenderImage(Image settings) 519 { 520 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 521 { 522 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 523 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 524 525 if (settings.Caption != null) 526 { 527 @:<div> 528 } 529 530 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 531 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 532 533 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 534 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 535 @if (settings.Link != null) 536 { 537 <a href="@settings.Link"> 538 RenderTheImage(settings); 539 </a> 540 } 541 else 542 { 543 RenderTheImage(settings); 544 } 545 </div> 546 </div> 547 548 if (settings.Caption != null) 549 { 550 <span class="image-caption dw-mod">@settings.Caption</span> 551 @:</div> 552 } 553 } 554 else 555 { 556 if (settings.Caption != null) 557 { 558 @:<div> 559 } 560 if (!string.IsNullOrEmpty(settings.Link)) 561 { 562 <a href="@settings.Link"> 563 RenderTheImage(settings); 564 </a> 565 } 566 else 567 { 568 RenderTheImage(settings); 569 } 570 571 if (settings.Caption != null) 572 { 573 <span class="image-caption dw-mod">@settings.Caption</span> 574 @:</div> 575 } 576 } 577 } 578 579 void RenderTheImage(Image settings) 580 { 581 if (settings != null) 582 { 583 string alternativeImage = !string.IsNullOrEmpty(PageView.Current().AreaSettings.GetString("AlternativeImage")) ? PageView.Current().AreaSettings.GetFile("AlternativeImage")?.PathUrlEncoded : "/Images/missing_image.jpg"; 584 string placeholderImage = "/Files/Images/placeholder.gif"; 585 string imageEngine = "/Admin/Public/GetImage.ashx?"; 586 587 string imageStyle = ""; 588 589 switch (settings.Style) 590 { 591 case ImageStyle.Ball: 592 imageStyle = "grid__cell-img--ball"; 593 break; 594 595 case ImageStyle.Triangle: 596 imageStyle = "grid__cell-img--triangle"; 597 break; 598 } 599 600 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 601 { 602 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 603 604 if (settings.ImageDefault != null) 605 { 606 settings.ImageDefault.Height = settings.ImageDefault.Width; 607 } 608 if (settings.ImageMedium != null) 609 { 610 settings.ImageMedium.Height = settings.ImageMedium.Width; 611 } 612 if (settings.ImageSmall != null) 613 { 614 settings.ImageSmall.Height = settings.ImageSmall.Width; 615 } 616 } 617 618 string defaultImage = imageEngine; 619 string imageSmall = ""; 620 string imageMedium = ""; 621 622 if (settings.DisableImageEngine) 623 { 624 defaultImage = settings.Path; 625 } 626 else 627 { 628 if (settings.ImageDefault != null) 629 { 630 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 631 632 if (settings.Path.GetType() != typeof(string)) 633 { 634 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 635 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 636 } 637 else 638 { 639 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 640 } 641 642 defaultImage += "&AlternativeImage=" + alternativeImage; 643 } 644 645 if (settings.ImageSmall != null) 646 { 647 imageSmall = "data-src-small=\"" + imageEngine; 648 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 649 650 if (settings.Path.GetType() != typeof(string)) 651 { 652 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 653 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 654 } 655 else 656 { 657 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 658 } 659 660 imageSmall += "&alternativeImage=" + alternativeImage; 661 662 imageSmall += "\""; 663 } 664 665 if (settings.ImageMedium != null) 666 { 667 imageMedium = "data-src-medium=\"" + imageEngine; 668 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 669 670 if (settings.Path.GetType() != typeof(string)) 671 { 672 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 673 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 674 } 675 else 676 { 677 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 678 } 679 680 imageMedium += "&alternativeImage=" + alternativeImage; 681 682 imageMedium += "\""; 683 } 684 } 685 686 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 687 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 688 if (!string.IsNullOrEmpty(settings.Title)) 689 { 690 optionalAttributes.Add("alt", settings.Title); 691 optionalAttributes.Add("title", settings.Title); 692 } 693 694 if (settings.DisableLazyLoad) 695 { 696 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 697 } 698 else 699 { 700 701 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" loading="lazy" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 702 } 703 } 704 } 705 } 706 @using System.Reflection 707 @using Dynamicweb.Rapido.Blocks.Components.General 708 @using Dynamicweb.Rapido.Blocks.Components 709 710 @* Component *@ 711 712 @functions { 713 void RenderHiddenField(HiddenField settings) { 714 var attributes = new Dictionary<string, string>(); 715 attributes.Add("type", "hidden"); 716 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 717 if (settings.Value != null) { attributes.Add("value", settings.Value); } 718 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 719 720 <input @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)/> 721 } 722 } 723 724 @using System.Reflection 725 @using Dynamicweb.Rapido.Blocks.Components.General 726 @using Dynamicweb.Rapido.Blocks.Components 727 728 @* Component *@ 729 730 @functions { 731 void RenderRadioButtonField(RadioButtonField settings) 732 { 733 var attributes = new Dictionary<string, string>(); 734 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 735 { 736 settings.Id = Guid.NewGuid().ToString("N"); 737 } 738 739 /*base settings*/ 740 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 741 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 742 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 743 if (settings.Disabled) { attributes.Add("disabled", "true"); } 744 if (settings.Required) { attributes.Add("required", "true"); } 745 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 746 /*end*/ 747 748 attributes.Add("type", "radio"); 749 if (settings.Checked) { attributes.Add("checked", "true"); } 750 settings.CssClass = "form__control " + settings.CssClass; 751 if (settings.Value != null) { attributes.Add("value", settings.Value); } 752 753 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 754 755 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 756 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 757 @if (!string.IsNullOrEmpty(settings.Label)) 758 { 759 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 760 } 761 @if (!string.IsNullOrEmpty(settings.HelpText)) 762 { 763 <small class="form__help-text">@settings.HelpText</small> 764 } 765 Render(new NotificationMessage { Message = settings.ErrorMessage }); 766 </div> 767 } 768 } 769 @using System.Reflection 770 @using Dynamicweb.Rapido.Blocks.Components.General 771 @using Dynamicweb.Rapido.Blocks.Components 772 773 @* Component *@ 774 775 @functions{ 776 void RenderRadioButtonListField(RadioButtonListField settings) 777 { 778 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 779 780 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 781 @if (!string.IsNullOrEmpty(settings.Label)) 782 { 783 <label>@settings.Label</label> 784 } 785 @if (!string.IsNullOrEmpty(settings.HelpText)) 786 { 787 <small class="form__help-text">@settings.HelpText</small> 788 } 789 790 @foreach (var item in settings.Options) 791 { 792 if (settings.Required) 793 { 794 item.Required = true; 795 } 796 if (settings.Disabled) 797 { 798 item.Disabled = true; 799 } 800 if (!string.IsNullOrEmpty(settings.Name)) 801 { 802 item.Name = settings.Name; 803 } 804 if (settings.Value != null && settings.Value == item.Value) 805 { 806 item.Checked = true; 807 } 808 if (!string.IsNullOrEmpty(settings.OnClick)) 809 { 810 item.OnClick += settings.OnClick; 811 } 812 if (!string.IsNullOrEmpty(settings.OnChange)) 813 { 814 item.OnChange += settings.OnChange; 815 } 816 if (!string.IsNullOrEmpty(settings.CssClass)) 817 { 818 item.CssClass += settings.CssClass; 819 } 820 Render(item); 821 } 822 823 Render(new NotificationMessage { Message = settings.ErrorMessage }); 824 </div> 825 } 826 } 827 @using Dynamicweb.Rapido.Blocks.Components.General 828 @using Dynamicweb.Rapido.Blocks.Components 829 830 @* Component *@ 831 832 @functions { 833 void RenderForm(Form settings) { 834 if (settings != null) 835 { 836 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 837 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); }; 838 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); }; 839 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); }; 840 var enctypes = new Dictionary<string, string> 841 { 842 { "multipart", "multipart/form-data" }, 843 { "text", "text/plain" }, 844 { "application", "application/x-www-form-urlencoded" } 845 }; 846 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); }; 847 optionalAttributes.Add("method", settings.Method.ToString()); 848 849 if (!string.IsNullOrEmpty(settings.FormStartMarkup)) 850 { 851 @settings.FormStartMarkup 852 } 853 else 854 { 855 @:<form class="@settings.CssClass u-no-margin dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 856 } 857 858 foreach (var field in settings.GetFields()) 859 { 860 Render(field); 861 } 862 863 @:</form> 864 } 865 } 866 } 867 868 @using System.Reflection 869 @using Dynamicweb.Rapido.Blocks.Components.General 870 @using Dynamicweb.Rapido.Blocks.Components 871 872 @* Component *@ 873 874 @functions { 875 void RenderText(Text settings) 876 { 877 @settings.Content 878 } 879 } 880 881 @using System.Reflection 882 @using Dynamicweb.Rapido.Blocks.Components.General 883 @using Dynamicweb.Rapido.Blocks.Components 884 885 886 @* Component *@ 887 888 @functions { 889 void RenderContentModule(ContentModule settings) { 890 if (!string.IsNullOrEmpty(settings.Content)) 891 { 892 @settings.Content 893 } 894 } 895 } 896 897 @using System.Reflection 898 @using Dynamicweb.Rapido.Blocks.Components.General 899 @using Dynamicweb.Rapido.Blocks.Components 900 901 902 @* Component *@ 903 904 @functions { 905 void RenderModal(Modal settings) { 906 if (settings != null) 907 { 908 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 909 910 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : ""; 911 912 <input type="checkbox" id="@(modalId)ModalTrigger" class="modal-trigger" @onchange /> 913 914 <div class="modal-container"> 915 @if (!settings.DisableDarkOverlay) 916 { 917 <label for="@(modalId)ModalTrigger" id="@(modalId)ModalOverlay" class="modal-overlay"></label> 918 } 919 <div class="modal modal--@settings.Width.ToString().ToLower() modal-height--@settings.Height.ToString().ToLower()" id="@(modalId)Modal"> 920 @if (settings.Heading != null) 921 { 922 if (!string.IsNullOrEmpty(settings.Heading.Title)) 923 { 924 <div class="modal__header"> 925 RenderHeading(settings.Heading); 926 </div> 927 } 928 } 929 <div class="modal__body @(settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "")"> 930 @if (!string.IsNullOrEmpty(settings.BodyText)) 931 { 932 @settings.BodyText 933 } 934 @if (settings.BodyTemplate != null) 935 { 936 @settings.BodyTemplate 937 } 938 @{ 939 var actions = settings.GetActions(); 940 } 941 </div> 942 @if (actions.Length > 0) 943 { 944 <div class="modal__footer"> 945 @foreach (var action in actions) 946 { 947 if (Dynamicweb.Frontend.PageView.Current().Device.ToString() != "Mobile") { 948 action.CssClass += " u-no-margin"; 949 } else { 950 action.CssClass += " u-full-width u-margin-bottom"; 951 } 952 953 Render(action); 954 } 955 </div> 956 } 957 <label class="modal__close-btn" for="@(modalId)ModalTrigger"></label> 958 </div> 959 </div> 960 } 961 } 962 } 963 @using Dynamicweb.Rapido.Blocks.Components.General 964 965 @* Component *@ 966 967 @functions { 968 void RenderMediaListItem(MediaListItem settings) 969 { 970 <div class="media-list-item @settings.CssClass dw-mod" @(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "")> 971 @if (!string.IsNullOrEmpty(settings.Label)) 972 { 973 if (!string.IsNullOrEmpty(settings.Link)) 974 { 975 Render(new Link 976 { 977 Href = settings.Link, 978 CssClass = "media-list-item__sticker dw-mod", 979 ButtonLayout = ButtonLayout.None, 980 Title = settings.Label, 981 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 982 }); 983 } 984 else if (!string.IsNullOrEmpty(settings.OnClick)) 985 { 986 <span class="media-list-item__sticker dw-mod" onclick="@(settings.OnClick)"> 987 <span class="u-uppercase">@settings.Label</span> 988 </span> 989 } 990 else 991 { 992 <span class="media-list-item__sticker media-list-item__sticker--no-link dw-mod"> 993 <span class="u-uppercase">@settings.Label</span> 994 </span> 995 } 996 } 997 <div class="media-list-item__wrap"> 998 <div class="media-list-item__info dw-mod"> 999 <div class="media-list-item__header dw-mod"> 1000 @if (!string.IsNullOrEmpty(settings.Title)) 1001 { 1002 if (!string.IsNullOrEmpty(settings.Link)) 1003 { 1004 Render(new Link 1005 { 1006 Href = settings.Link, 1007 CssClass = "media-list-item__name dw-mod", 1008 ButtonLayout = ButtonLayout.None, 1009 Title = settings.Title, 1010 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 1011 }); 1012 } 1013 else if (!string.IsNullOrEmpty(settings.OnClick)) 1014 { 1015 <span class="media-list-item__name dw-mod" onclick="@(settings.OnClick)">@settings.Title</span> 1016 } 1017 else 1018 { 1019 <span class="media-list-item__name media-list-item__name--no-link dw-mod">@settings.Title</span> 1020 } 1021 } 1022 1023 @if (!string.IsNullOrEmpty(settings.Status)) 1024 { 1025 <div class="media-list-item__state dw-mod">@settings.Status</div> 1026 } 1027 </div> 1028 @{ 1029 settings.InfoTable.CssClass += " media-list-item__parameters-table"; 1030 } 1031 1032 Render(settings.InfoTable); 1033 </div> 1034 <div class="media-list-item__actions dw-mod"> 1035 <div class="media-list-item__actions-list dw-mod"> 1036 @{ 1037 var actions = settings.GetActions(); 1038 1039 foreach (ButtonBase action in actions) 1040 { 1041 action.ButtonLayout = ButtonLayout.None; 1042 action.CssClass += " media-list-item__action link"; 1043 1044 Render(action); 1045 } 1046 } 1047 </div> 1048 1049 @if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title)) 1050 { 1051 settings.SelectButton.CssClass += " u-no-margin"; 1052 1053 <div class="media-list-item__action-button"> 1054 Render(settings.SelectButton); 1055 </div> 1056 } 1057 </div> 1058 </div> 1059 </div> 1060 } 1061 } 1062 1063 1064 @using Dynamicweb.Rapido.Blocks.Components.General 1065 @using Dynamicweb.Rapido.Blocks.Components 1066 1067 @functions { 1068 void RenderTable(Table settings) 1069 { 1070 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1071 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1072 1073 var enumToClasses = new Dictionary<TableDesign, string> 1074 { 1075 { TableDesign.Clean, "table--clean" }, 1076 { TableDesign.Bordered, "table--bordered" }, 1077 { TableDesign.Striped, "table--striped" }, 1078 { TableDesign.Hover, "table--hover" }, 1079 { TableDesign.Compact, "table--compact" }, 1080 { TableDesign.Condensed, "table--condensed" }, 1081 { TableDesign.NoTopBorder, "table--no-top-border" } 1082 }; 1083 string tableDesignClass = ""; 1084 if (settings.Design != TableDesign.None) 1085 { 1086 tableDesignClass = enumToClasses[settings.Design]; 1087 } 1088 1089 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); } 1090 1091 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 1092 1093 <table @ComponentMethods.AddAttributes(resultAttributes)> 1094 @if (settings.Header != null) 1095 { 1096 <thead> 1097 Render(settings.Header); 1098 </thead> 1099 } 1100 <tbody> 1101 @foreach (var row in settings.Rows) 1102 { 1103 Render(row); 1104 } 1105 </tbody> 1106 @if (settings.Footer != null) 1107 { 1108 <tfoot> 1109 Render(settings.Footer); 1110 </tfoot> 1111 } 1112 </table> 1113 } 1114 } 1115 @using Dynamicweb.Rapido.Blocks.Components.General 1116 @using Dynamicweb.Rapido.Blocks.Components 1117 1118 @functions { 1119 void RenderTableRow(TableRow settings) 1120 { 1121 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1122 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1123 1124 var enumToClasses = new Dictionary<TableRowDesign, string> 1125 { 1126 { TableRowDesign.NoBorder, "table__row--no-border" }, 1127 { TableRowDesign.Border, "table__row--border" }, 1128 { TableRowDesign.TopBorder, "table__row--top-line" }, 1129 { TableRowDesign.BottomBorder, "table__row--bottom-line" }, 1130 { TableRowDesign.Solid, "table__row--solid" } 1131 }; 1132 1133 string tableRowDesignClass = ""; 1134 if (settings.Design != TableRowDesign.None) 1135 { 1136 tableRowDesignClass = enumToClasses[settings.Design]; 1137 } 1138 1139 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); } 1140 1141 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 1142 1143 <tr @ComponentMethods.AddAttributes(resultAttributes)> 1144 @foreach (var cell in settings.Cells) 1145 { 1146 if (settings.IsHeaderRow) 1147 { 1148 cell.IsHeader = true; 1149 } 1150 Render(cell); 1151 } 1152 </tr> 1153 } 1154 } 1155 @using Dynamicweb.Rapido.Blocks.Components.General 1156 @using Dynamicweb.Rapido.Blocks.Components 1157 @using Dynamicweb.Core 1158 1159 @functions { 1160 void RenderTableCell(TableCell settings) 1161 { 1162 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1163 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1164 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); } 1165 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); } 1166 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); } 1167 1168 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 1169 1170 string tagName = settings.IsHeader ? "th" : "td"; 1171 1172 @("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">") 1173 @settings.Content 1174 @("</" + tagName + ">"); 1175 } 1176 } 1177 1178 @{ 1179 string innerPadding = Model.Item.GetList("Padding") != null ? " padding-size-" + Model.Item.GetList("Padding").SelectedValue.ToLower() : ""; 1180 innerPadding += Model.Item.GetList("PaddingPosition") != null ? " padding-position-" + Model.Item.GetList("PaddingPosition").SelectedValue.ToLower() : ""; 1181 string outerMargin = Model.Item.GetList("Margin") != null ? " margin-" + Model.Item.GetList("Margin").SelectedValue.ToLower() : ""; 1182 string outerMarginPosition = Model.Item.GetList("MarginPosition") != null ? " margin-position-" + Model.Item.GetList("MarginPosition").SelectedValue.ToLower() : ""; 1183 1184 string style = ""; 1185 string card = ""; 1186 1187 if (!string.IsNullOrEmpty(Model.Item.GetString("RenderAsCard"))) { 1188 style = Model.Item.GetBoolean("RenderAsCard") ? "background-color: #fff" : ""; 1189 card = Model.Item.GetBoolean("RenderAsCard") ? "card" : ""; 1190 } 1191 } 1192 1193 <div class="content-row__item__body @innerPadding @outerMargin @outerMarginPosition @card dw-mod" style="@style"> 1194 @if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) && !Model.Item.GetBoolean("HideTitle")) { 1195 <div class="u-margin-bottom--lg"> 1196 @if (!Model.Item.GetBoolean("HideTitle")) { 1197 RenderHeading(new Heading { Title = Model.Item.GetString("Title"), Level = 2, CssClass = "u-no-margin" }); 1198 } 1199 </div> 1200 } 1201 @Model.GetModuleOutput() 1202 </div> 1203 1204 1205 1206

Dette er kolonnen App - Feltet Title

Dette er Card Parapghaph

Dette er tekstfelt Card Paragraph

Titel til Carousel

ArticleComponents.cshtml

RenderBlock(item);

Dette er kolonne Plain Heading

Dette er kolonnen "Salgsvurdering"
Bestil vurdering
Skriv adressen på den bolig, som du ønsker vurderet og dine kontaktoplysninger

Ved at bestille en vurdering accepterer du vores brug af personlige oplysninger

Dette er kolonnon Standard Paragraph 1, Feltet "Title"


Dette er kolonnon Standard Paragraph 1, Feltet "Text"

Dette er kolonnen Standard Paragraph three, Feltet "Title"

Dette er kolonnen Standard Paragraph three, Feltet "Text"

Dette er kolonnen Standard Paragraph Two, Feltet "Title"


Dette er kolonnen Standard Paragraph Two, Feltet "Text"

Log ind på RealMæglernes Boligagent

Med Mit RealMæglerne er det nemt at følge boligmarkedet. Leder du efter nyt, kan du gemme dine favorit boliger og målrette din søgning ned til mindste detalje. Skal du sælge, kan du løbende følge interessen for din bolig og meget mere.


Kontakt Mægler

Din bolig

* Der samles ingen personlige oplysninger uden dit udtrykkelige samtykke. Ved at klikke på denne checkboks giver du dit samtykke til, at dine data samles og behandles af RealMæglerne A/S for at kunne kontakte dig. Du kan til enhver tid tilbagekalde dit samtykke. For at gøre dette skal du blot sende en meddelelse til info@realmaeglerne.dk. Læs mere på privatlivspolitikkerne.

Tilmeld til åbent hus

Adresse:
Dato:
Tidspunkt:

Dine kontaktoplysninger

Du accepterer samtidig vores privatlivspolitikkerne og giver samtykke til, at dine data samles og behandles af RealMæglerne A/S for at kunne kontakte dig

Kontakt Mægler

* Der samles ingen personlige oplysninger uden dit udtrykkelige samtykke. Ved at klikke på denne checkboks giver du dit samtykke til, at dine data samles og behandles af RealMæglerne A/S for at kunne kontakte dig. Du kan til enhver tid tilbagekalde dit samtykke. For at gøre dette skal du blot sende en meddelelse til info@realmaeglerne.dk. Læs mere på privatlivspolitikkerne.

Bestil gratis salgsvurdering

Din bolig

Send salgsvurdering til:

Vælg mægler

* Der samles ingen personlige oplysninger uden dit udtrykkelige samtykke. Ved at klikke på denne checkboks giver du dit samtykke til, at dine data samles og behandles af RealMæglerne A/S for at kunne kontakte dig. Du kan til enhver tid tilbagekalde dit samtykke. For at gøre dette skal du blot sende en meddelelse til info@realmaeglerne.dk. Læs mere på privatlivspolitikkerne.

Bestil gratis salgsvurdering

Din bolig

Send salgsvurdering til:

Vælg mægler

* Der samles ingen personlige oplysninger uden dit udtrykkelige samtykke. Ved at klikke på denne checkboks giver du dit samtykke til, at dine data samles og behandles af RealMæglerne A/S for at kunne kontakte dig. Du kan til enhver tid tilbagekalde dit samtykke. For at gøre dette skal du blot sende en meddelelse til info@realmaeglerne.dk. Læs mere på privatlivspolitikkerne.