Error executing template "Designs/rm_sub/Erhverv_frontpage.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_8e9925e61eca4bc79674a473879d1321.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.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2 @using System; 3 @using Custom.Integration.Brokers; 4 @using RealMaeglerne.Dynamicweb; 5 @using Dynamicweb.Content.Items; 6 @using Dynamicweb.Environment; 7 @using Dynamicweb.Environment.Helpers; 8 @using Newtonsoft.Json; 9 @using Dynamicweb; 10 @using Dynamicweb.Core; 11 @using Dynamicweb.Core.Encoders; 12 @using RealMaeglerne.Library; 13 @using Dynamicweb.Frontend.Navigation; 14 15 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 16 @using Dynamicweb.Content.Items; 17 18 @functions{ 19 void RenderErhvervsTypeCheckboxes(string productGroupFilter) 20 { 21 <div class="col-xs-6 col-md-4"> 22 <div class="checkbox"> 23 <label> 24 <input type="checkbox" name="propertytype" value="bolig/erhverv, kombineret erhverv og bolig, byejendom (kontor, butik, beboelse)" /> 25 <span>Bolig/erhverv</span> 26 </label> 27 </div> 28 <div class="checkbox"> 29 <label> 30 <input type="checkbox" name="propertytype" value="erhvervsgrund" /> 31 <span>Erhvervsgrund</span> 32 </label> 33 </div> 34 <div class="checkbox"> 35 <label> 36 <input type="checkbox" name="propertytype" value="boligudlejning" /> 37 <span>Boligudlejningsejendom</span> 38 </label> 39 </div> 40 <div class="checkbox"> 41 <label> 42 <input type="checkbox" name="propertytype" value="kontor, klinik, kontorhotel, showroom, undervisningslokaler" /> 43 <span>Kontor</span> 44 </label> 45 </div> 46 </div> 47 <div class="col-xs-6 col-md-4"> 48 <div class="checkbox"> 49 <label> 50 <input type="checkbox" name="propertytype" value="butik / detail, butik / detailhandel" /> 51 <span>Butik/detailhandel</span> 52 </label> 53 </div> 54 <div class="checkbox"> 55 <label> 56 <input type="checkbox" name="propertytype" value="industri / logistik, håndværk, industri, kontor / lager, logistik" /> 57 <span>Produktion/lager</span> 58 </label> 59 </div> 60 <div class="checkbox"> 61 <label> 62 <input type="checkbox" name="propertytype" value="hotel - kursusejendom, restaurant" /> 63 <span>Hotel og restaurant</span> 64 </label> 65 </div> 66 <div class="checkbox"> 67 <label> 68 <input type="checkbox" name="propertytype" value="projekt ejendom" /> 69 <span>Projektejendom</span> 70 </label> 71 </div> 72 </div> 73 <div class="col-xs-6 col-md-4"> 74 <div class="checkbox"> 75 <label> 76 <input type="checkbox" name="propertytype" value="andet" /> 77 <span>Andet</span> 78 </label> 79 </div> 80 </div> 81 82 <input type="hidden" name="propertycategory" value="erhverv, udlejning" /> 83 <input type="hidden" name="filtrering" value="@productGroupFilter" /> 84 } 85 void RenderBoligtypeCheckboxes() 86 { 87 <div class="col-6 col-md-4"> 88 <div class="checkbox"> 89 <label> 90 <input type="checkbox" name="propertytype" value="villa" /> 91 <span>Villa</span> 92 </label> 93 </div> 94 <div class="checkbox"> 95 <label> 96 <input type="checkbox" name="propertytype" value="rækkehus" /> 97 <span>Rækkehus</span> 98 </label> 99 </div> 100 <div class="checkbox"> 101 <label> 102 <input type="checkbox" name="propertytype" value="villalejlighed" /> 103 <span>Villalejlighed</span> 104 </label> 105 </div> 106 <div class="checkbox"> 107 <label> 108 <input type="checkbox" name="propertytype" value="andelsbolig" /> 109 <span>Andelsbolig</span> 110 </label> 111 </div> 112 </div> 113 <div class="col-6 col-md-4"> 114 <div class="checkbox"> 115 <label> 116 <input type="checkbox" name="propertytype" value="fritidshus, fritidsbolig" /> 117 <span>Fritidsbolig</span> 118 </label> 119 </div> 120 <div class="checkbox"> 121 <label> 122 <input type="checkbox" name="propertytype" value="ejerlejlighed" class="specialOption" data-disable-slider="#grundareal" data-disable-slider-ranges="#grundarealmin,#grundarealmax" /> 123 <span>Ejerlejlighed</span> 124 </label> 125 </div> 126 <div class="checkbox"> 127 <label> 128 <input type="checkbox" name="propertytype" value="helårsgrund" class="specialOption" data-disable-slider="#boligareal,#roomsslider" data-disable-slider-ranges="#boligarealmin,#boligarealmax,#roomsmin" /> 129 <span>Helårsgrund</span> 130 </label> 131 </div> 132 <div class="checkbox"> 133 <label> 134 <input type="checkbox" name="propertytype" value="fritidsgrund" class="specialOption" data-disable-slider="#boligareal,#roomsslider" data-disable-slider-ranges="#boligarealmin,#boligarealmax,#roomsmin" /> 135 <span>Fritidsgrund</span> 136 </label> 137 </div> 138 </div> 139 <div class="col-6 col-md-4"> 140 <div class="checkbox"> 141 <label> 142 <input type="checkbox" name="propertytype" value="landejendom, lystejendom" class="specialOption" data-disable-checkbox="true" /> 143 <span>Landejendom</span> 144 </label> 145 </div> 146 <div class="checkbox"> 147 <label> 148 <input type="checkbox" name="propertytype" value="erhverv" class="specialOption" data-disable-checkbox="true" data-disable-slider="#roomsslider" data-disable-slider-ranges="#roomsmin" /> 149 <span>Erhverv</span> 150 </label> 151 </div> 152 </div> 153 } 154 155 void RenderChecked(string queryString) 156 { 157 if (Dynamicweb.Context.Current.Request.QueryString["propertytype"] == queryString) 158 { 159 @("checked") 160 } 161 } 162 163 void RenderBoligtypeCheckboxesDropdown() 164 { 165 Dictionary<string, string> propertyTypes = new Dictionary<string, string>(){ 166 { "Villa", "villa" }, { "Rækkehus", "rækkehus" }, { "Villalejlighed", "villalejlighed" }, 167 { "Andelsbolig", "andelsbolig" } 168 }; 169 foreach (KeyValuePair<string, string> type in propertyTypes) 170 { 171 bool ischecked = false; 172 string[] propertytypeSplit = new string[0]; 173 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["propertytype"])) 174 { 175 propertytypeSplit = Dynamicweb.Context.Current.Request.QueryString["propertytype"].Split(','); 176 } 177 foreach (var propertytypeParams in propertytypeSplit) 178 { 179 if (propertytypeParams == type.Value) 180 { 181 ischecked = true; 182 } 183 } 184 <li> 185 <label class="checkbox-container d-flex"> 186 @Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + "") 187 <input type="checkbox" name="propertytype" value="@type.Value" class="js-input-check datavalue js-datavalue js-count" data-val="@type.Key" onchange="submitFilter()" checked="@ischecked" /> 188 <span class="checkmark grey"></span> 189 </label> 190 </li> 191 } 192 193 Dictionary<string, string> propertyTypes2 = new Dictionary<string, string>(){ 194 { "Fritidsbolig", "fritidshus, fritidsbolig" }, { "Ejerlejlighed", "ejerlejlighed" }, { "Helårsgrund", "helårsgrund" }, 195 { "Fritidsgrund", "fritidsgrund" }, { "Landejendom", "landejendom, lystejendom" } 196 }; 197 foreach (KeyValuePair<string, string> type in propertyTypes2) 198 { 199 bool ischecked = false; 200 string[] propertytypeSplit2 = new string[0]; 201 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["propertytype"])) 202 { 203 propertytypeSplit2 = Dynamicweb.Context.Current.Request.QueryString["propertytype"].Split(','); 204 } 205 foreach (var propertytypeParams in propertytypeSplit2) 206 { 207 if (propertytypeParams == type.Value) 208 { 209 ischecked = true; 210 } 211 } 212 <li> 213 <label class="checkbox-container d-flex"> 214 @Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + "") 215 @if (type.Value == "ejerlejlighed") 216 { 217 <input type="checkbox" name="propertytype" value="@type.Value" class="js-input-check datavalue" data-disable-slider="#grundareal" data-disable-slider-ranges="#grundarealmin,#grundarealmax" data-val="@type.Key" onchange="submitFilter()" checked="@ischecked" /> 218 } 219 else if (type.Value == "helårsgrund") 220 { 221 <input type="checkbox" name="propertytype" value="@type.Value" class="js-input-check datavalue" data-disable-slider="#boligareal,#roomsslider" data-disable-slider-ranges="#boligarealmin,#boligarealmax,#roomsmin" data-val="@type.Key" onchange="submitFilter()" checked="@ischecked" /> 222 } 223 else if (type.Value == "fritidsgrund") 224 { 225 <input type="checkbox" name="propertytype" value="@type.Value" class="js-input-check datavalue" data-disable-slider="#boligareal,#roomsslider" data-disable-slider-ranges="#boligarealmin,#boligarealmax,#roomsmin" data-val="@type.Key" onchange="submitFilter()" checked="@ischecked" /> 226 } 227 else 228 { 229 <input type="checkbox" name="propertytype" value="@type.Value" class="js-input-check datavalue" data-val="@type.Key" onchange="submitFilter()" checked="@ischecked" /> 230 } 231 <span class="checkmark grey"></span> 232 </label> 233 </li> 234 } 235 } 236 237 void RenderBoligTypeErhverv(bool submitOnChange = false, bool frontpage = false) 238 { 239 Dictionary<string, string> erhverType = new Dictionary<string, string>(){ 240 { "Kontor", "OwnUseOffices" }, { "Lager + Produktion", "OwnUseStoresAndProductions" }, { "Detailhandel", "OwnUseRetailAndStores" }, 241 { "Grunde", "OwnUseParcel" }, { "Andre typer", "OwnUseOtherTypes" }, { "Hotel + Restaurant", "OwnUseHotelsAndRestaurants" } 242 }; 243 var submitonchange = ""; 244 if (submitOnChange) 245 { 246 submitonchange = "onchange='submitFilter()'"; 247 } 248 249 foreach (KeyValuePair<string, string> type in erhverType) 250 { 251 string ischecked = ""; 252 string[] olineParamsSplit = new string[0]; 253 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["olinecategory"])) 254 { 255 olineParamsSplit = Dynamicweb.Context.Current.Request.QueryString["olinecategory"].Split(','); 256 } 257 foreach (var olineParams in olineParamsSplit) 258 { 259 if (olineParams == type.Value) 260 { 261 ischecked = "checked"; 262 } 263 } 264 265 <li> 266 <label class="checkbox-container d-flex"> 267 @Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + "") 268 <input type="checkbox" name="olinecategory" value="@type.Value" class="js-input-check datavalue" data-val="@type.Key" @submitonchange @ischecked /> 269 <span class="checkmark grey"></span> 270 </label> 271 </li> 272 } 273 } 274 275 void RenderBoligTypeErhvervInvest(bool submitOnChange = false) 276 { 277 Dictionary<string, string> erhverType = new Dictionary<string, string>(){ 278 { "Kontor", "Kontor" }, { "Lager + Produktion", "InvestmentStoresAndProductions" }, { "Boligudlejning", "InvestmentHousingRental" }, 279 { "Detailhandel", "InvestmentRetailAndStores" }, { "Grunde", "InvestmentParcel" }, { "Hotel + Restaurant", "InvestmentHotelsAndRestaurants" }, { "Andre typer", "InvestmentOtherTypes" } 280 }; 281 282 foreach (KeyValuePair<string, string> type in erhverType) 283 { 284 bool ischecked = false; 285 string[] olineParamsSplit = new string[0]; 286 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["olinecategory"])) 287 { 288 olineParamsSplit = Dynamicweb.Context.Current.Request.QueryString["olinecategory"].Split(','); 289 } 290 foreach (var olineParams in olineParamsSplit) 291 { 292 if (olineParams == type.Value) 293 { 294 ischecked = true; 295 } 296 } 297 298 <li> 299 <label class="checkbox-container"> 300 @Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + "") 301 <input type="checkbox" name="olinecategory" value="@type.Value" class="js-input-check datavalue" data-val="@type.Key" onchange="submitFilter()" checked="@ischecked" /> 302 <span class="checkmark grey"></span> 303 </label> 304 </li> 305 } 306 } 307 int GetWebsiteSettingsPageId(string pageSysName) 308 { 309 int sideId = 0; 310 311 var pw = Dynamicweb.Frontend.PageView.Current(); 312 313 string settingsItemId = "1"; 314 315 if ((pw.Area.Item.ContainsKey("Type") && pw.Area.Item["Type"].ToString() == "bone") || Dynamicweb.Context.Current.Request.QueryString["bone"] == "true") 316 { 317 settingsItemId = "2"; 318 } 319 320 var settingsItem = ItemManager.Storage.GetById("Delte_Egenskaber", settingsItemId); 321 322 if (settingsItem == null || !settingsItem.ContainsKey(pageSysName)) 323 { 324 return sideId; 325 } 326 327 string boligsideLink = settingsItem[pageSysName] as String; 328 string linkPrefix = "Default.aspx?ID="; 329 330 if (!String.IsNullOrEmpty(boligsideLink) && boligsideLink.ToLower().StartsWith(linkPrefix.ToLower())) 331 { 332 Int32.TryParse(boligsideLink.Substring(linkPrefix.Length), out sideId); 333 } 334 335 return sideId; 336 } 337 338 int GetPageSettingsPageId(string pageSysName) 339 { 340 int sideId = 0; 341 342 var pw = Dynamicweb.Frontend.PageView.Current(); 343 344 if (pw.Page == null || pw.Page.PropertyItem == null || !pw.Page.PropertyItem.ContainsKey(pageSysName)) 345 { 346 return sideId; 347 } 348 349 string boligsideLink = pw.Page.PropertyItem[pageSysName] as String; 350 string linkPrefix = "Default.aspx?ID="; 351 352 if (!String.IsNullOrEmpty(boligsideLink) && boligsideLink.ToLower().StartsWith(linkPrefix.ToLower())) 353 { 354 Int32.TryParse(boligsideLink.Substring(linkPrefix.Length), out sideId); 355 } 356 357 return sideId; 358 } 359 void RenderMobileSelectBox(string name, int max, int step, string className, string inputname) 360 { 361 <select class="form-control d-block d-lg-none mb-10 @className" onchange="submitFilter()" name="@inputname"> 362 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder." + name + "", "" + name + "")</option> 363 364 @for (var i = 0; i <= max; i += step) 365 { 366 var selected = string.Empty; 367 var current = string.Empty; 368 if (i == max) 369 { 370 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString[inputname]) && Dynamicweb.Context.Current.Request.QueryString[inputname] == Convert.ToString(i)) 371 { 372 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")' selected="selected">@Convert.ToInt32(i).ToString("N0")+</option> 373 } 374 else 375 { 376 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")+</option> 377 } 378 } 379 else 380 { 381 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString[inputname]) && Dynamicweb.Context.Current.Request.QueryString[inputname] == Convert.ToString(i)) 382 { 383 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")' selected="selected">@Convert.ToInt32(i).ToString("N0")</option> 384 } 385 else 386 { 387 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option> 388 } 389 } 390 } 391 </select> 392 } 393 394 void RenderTopFilter(string parameter) 395 { 396 if (parameter == "pricemin" || parameter == "pricemax") 397 { 398 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["pricemin"])) 399 { 400 if (parameter == "pricemin") 401 { 402 @("<div class='search-terms' id='priceFilter'>") 403 @("Pris ") @Dynamicweb.Context.Current.Request[parameter] 404 } 405 406 else 407 { 408 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kr.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="pricemin,pricemax"></i> 409 @("</div>") 410 } 411 } 412 } 413 414 else if (parameter == "subsidymin" || parameter == "subsidymax") 415 { 416 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["subsidymin"])) 417 { 418 if (parameter == "subsidymin") 419 { 420 @("<div class='search-terms' id='subsidyFilter'>") 421 @("Årlig leje ") @Dynamicweb.Context.Current.Request[parameter] 422 } 423 424 else 425 { 426 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kr.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="subsidymin,subsidymax"></i> 427 @("</div>") 428 } 429 } 430 } 431 else if (parameter == "etagearealmin" || parameter == "etagearealmax") 432 { 433 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["etagearealmin"])) 434 { 435 if (parameter == "etagearealmin") 436 { 437 @("<div class='search-terms' id='etagearealFilter'>") 438 @("Etageareal ") @Dynamicweb.Context.Current.Request[parameter] 439 } 440 441 else 442 { 443 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kvm.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="etagearealmin,etagearealmax"></i> 444 @("</div>") 445 } 446 } 447 } 448 449 else if (parameter == "grundarealmin" || parameter == "grundarealmax") 450 { 451 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["grundarealmin"])) 452 { 453 if (parameter == "grundarealmin") 454 { 455 @("<div class='search-terms' id='grundarealFilter'>") 456 @("Grundareal ") @Dynamicweb.Context.Current.Request[parameter] 457 } 458 459 else 460 { 461 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kvm.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="grundarealmin,grundarealmax"></i> 462 @("</div>") 463 } 464 } 465 } 466 467 else if (parameter == "subsidykvmmin" || parameter == "subsidykvmmax") 468 { 469 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["subsidykvmmin"])) 470 { 471 if (parameter == "subsidykvmmin") 472 { 473 @("<div class='search-terms' id='subsidykvmFilter'>") 474 @("Årlig leje kvm ") @Dynamicweb.Context.Current.Request[parameter] 475 } 476 477 else 478 { 479 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kr.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="subsidykvmmin,subsidykvmmax"></i> 480 @("</div>") 481 } 482 } 483 } 484 485 else if (parameter == "olinecategory") 486 { 487 488 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["olinecategory"])) 489 { 490 Dictionary<string, string> erhverType = new Dictionary<string, string>(){ 491 {"OwnUseOffices", "Kontor" }, { "OwnUseStoresAndProductions","Lager + Produktion" }, { "OwnUseRetailAndStores","Detailhandel" }, 492 { "OwnUseParcel", "Grunde" }, { "OwnUseHotelsAndRestaurants", "Hotel + Restaurant" }, { "OwnUseOtherTypes", "Andre typer"}, 493 { "Kontor", "Kontor" }, { "InvestmentStoresAndProductions", "Lager + Produktion" }, { "InvestmentHousingRental", "Boligudlejning" }, 494 { "InvestmentRetailAndStores", "Detailhandel" }, { "InvestmentParcel", "Grunde" }, { "InvestmentHotelsAndRestaurants", "Hotel + Restaurant" }, { "InvestmentOtherTypes", "Andre typer" } 495 }; 496 497 498 foreach (var er in erhverType) 499 { 500 if (Dynamicweb.Context.Current.Request[parameter].Contains(er.Key)) 501 { 502 <div class="search-terms" id="@parameter"> 503 @er.Value <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="@parameter" data-val="@er.Key"></i> 504 </div> 505 } 506 } 507 } 508 } 509 else if (parameter == "search") 510 { 511 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["search"])) 512 { 513 <div class="search-terms" id="@parameter"> 514 @Dynamicweb.Context.Current.Request[parameter] <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="@parameter"></i> 515 </div> 516 } 517 } 518 else 519 { 520 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request[parameter])) 521 { 522 Dictionary<string, string> 523 ubudsform = new Dictionary<string, string> 524 (){ 525 {"salg", "Salg" }, { "leje","Leje" } 526 }; 527 528 foreach (var er in ubudsform) 529 { 530 if (Dynamicweb.Context.Current.Request[parameter].Contains(er.Key)) 531 { 532 <div class="search-terms" id="@parameter"> 533 @er.Value <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="@parameter" data-val="@er.Key"></i> 534 </div> 535 } 536 } 537 538 539 } 540 } 541 } 542 543 void RenderSelectValue(string dropdownname, string dropdownvalue, string queryString) 544 { 545 var selected = ""; 546 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString[queryString]) && Dynamicweb.Context.Current.Request.QueryString[queryString] == dropdownvalue) 547 { 548 selected = "selected"; 549 } 550 551 var current = string.Format("<option value='" + dropdownvalue + "'>" + dropdownname + "</option>", selected); 552 553 @current 554 } 555 556 void RenderSearchForHousing(int searchPageId, string querySearch, string querySearchNameAttr, string queryZipCodeFrom, string queryZipCodeTo, string template, Item SettingsItem, string cssClasses = "") 557 { 558 <div class="main-search-form frontpage @cssClasses"> 559 <div class="dropdown-overlay"></div> 560 <div class="row mb-3 align-items-center"> 561 <div class="col-xs-12 col-md-3 border-right"> 562 <h3>@Translate("Smartpage:Search.Søg bolig", "Søg bolig")</h3> 563 </div> 564 <div class="col-xs-12 col-md-9 home-count d-none d-md-block"> 565 <span class="search-count" id="searchCounter">0</span> <span>@Translate("Smartpage:Search.BoligerTilSalg", "Boliger til salg")</span> 566 </div> 567 </div> 568 569 <form id="main-search-frontpage" class="searchbar-wrapper" action="/Default.aspx" method="GET"> 570 <input type="hidden" name="ID" value='@searchPageId' id="searchPageId-frontpage" disabled="disabled" /> 571 <div class="row form-wrapper no-gutters"> 572 573 <div class="col-xs-12 col-md-5 col-searchbar"> 574 <div class="searchbar"> 575 <input type="text" name="@querySearchNameAttr" id="searchfield-frontpage" class="search-input" placeholder="Postnummer, by, vej eller sagsnummer" tabindex="1" value="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(querySearch)" /> 576 <input type="hidden" id="zipcodefrom-frontpage" name="zipcodefrom" value="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(queryZipCodeFrom)" /> 577 <input type="hidden" id="zipcodeto-frontpage" name="zipcodeto" value="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(queryZipCodeTo)" /> 578 </div> 579 </div> 580 <div class="col-xs-12 col-md-5"> 581 <div class="row no-gutters"> 582 <div class="col-xs-12 col-md-6 input-col"> 583 <div class="dropdown w-overlay"> 584 <button class="btn btn-dropdown dropdown-toggle reverse position-absolute-md" type="button" id="Boligtype-frontpage" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 585 @Translate("Smartpage:Search.Boligtype", "Boligtype") 586 </button> 587 <div class="dropdown-menu box-shadow bolig-dropdown-container" aria-labelledby="Boligtype"> 588 <ul class="bolig-dropdown list-unstyled"> 589 @{ 590 RenderBoligtypeCheckboxesDropdown(); 591 } 592 </ul> 593 <span class="border-fat"></span> 594 <button class="btn btn-primary js-close-dropdown">@Translate("Smartpage:Search.Anvend", "Anvend")</button> 595 </div> 596 597 </div> 598 599 </div> 600 <div class="col-xs-12 col-md-6 input-col"> 601 <div class="dropdown w-overlay"> 602 <button class="btn btn-dropdown dropdown-toggle reverse position-absolute-md" type="button" id="Pris-frontpage" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 603 @Translate("Smartpage:Search.Pris", "Pris") 604 </button> 605 <div class="dropdown-menu box-shadow dropdown-price" aria-labelledby="Pris"> 606 <input type="text" class="form-control mb-10 js-auto-thousand js-pricemin-frontpage-input" placeholder='@Translate("Smartpage:Search.Placeholder.MinPris","Min. pris")' /> 607 <select class="form-control js-pricemin-frontpage-select js-input-min-select mb-10"> 608 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris")</option> 609 @for (var i = 0; i <= 10000000; i += 100000) 610 { 611 if (i == 10000000) 612 { 613 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")+'>@Convert.ToInt32(i).ToString("N0")+</option> 614 } 615 else 616 { 617 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option> 618 } 619 } 620 </select> 621 <input type="hidden" id="pricemin-frontpage" name="pricemin" /> 622 623 <input type="text" class="form-control js-auto-thousand js-pricemax-frontpage-input" placeholder='@Translate("Smartpage:Search.Placeholder.MaxPris","Max. pris")' /> 624 <select class="form-control js-pricemax-frontpage-select js-input-max-select"> 625 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris")</option> 626 @for (var i = 0; i <= 10000000; i += 100000) 627 { 628 if (i == 10000000) 629 { 630 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")+'>@Convert.ToInt32(i).ToString("N0")+</option> 631 } 632 else 633 { 634 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option> 635 } 636 } 637 </select> 638 <input type="hidden" id="pricemax-frontpage" name="pricemax" /> 639 <button class="btn btn-primary js-close-dropdown mt-3">@Translate("Smartpage:Search.Anvend", "Anvend")</button> 640 </div> 641 </div> 642 </div> 643 </div> 644 </div> 645 <div class="col-xs-12 col-md-2 d-none d-md-block"> 646 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search"></i> @Translate("Smartpage:Search.Søg", "Søg")</button> 647 </div> 648 </div> 649 650 <div class="row moresearch-btn no-gutters"> 651 <div class="col-sm-12"> 652 <div class="row align-items-center no-gutters"> 653 <div class="col-12 col-md-4"> 654 <button class="btn-blank js-search-collapse" type="button" data-toggle="collapse" data-target="#moreSearch" aria-expanded="false" aria-controls="moreSearch"> 655 <span class="moreSearch-text"><i class="fas fa-plus open-close"></i> <span class="not-open">@Translate("Smartpage:Search.Flere søgemuligheder", "Flere søgemuligheder")</span> <span class="open"><span class="js-filter-count">0</span> @Translate("Smartpage:Search.FiltreAnvendt", "filtre anvendt") </span></span> 656 </button> 657 </div> 658 <div class="col-6 col-md-2 mb-xs-4"> 659 <a class="js-reset reset-btn">@Translate("Smartpage:Search.NulstilValg", "Nulstil valg")</a> 660 </div> 661 </div> 662 663 <div class="collapse" id="moreSearch"> 664 <h4 class="mt-20"><b>@Translate("Smartpage:Search.Bolig", "Bolig")</b></h4> 665 <div class="row align-items-end mb-30"> 666 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"> 667 <div class="filter-container row"> 668 <label class="d-block col-12">@Translate("Smartpage:Search.Boligareal", "Boligareal")</label> 669 <div class="col-6 pr-sm-0 pr-2"> 670 <input type="text" name="boligarealmin" id="boligarealmin-frontpage" class="form-control js-boligarealmin-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Minm2","Min. m2")' /> 671 <select class="form-control js-boligarealmin-frontpage-select js-count"> 672 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")</option> 673 @for (var i = 0; i <= 300; i += 10) 674 { 675 if (i == 300) 676 { 677 <option value="@i">@i+</option> 678 } 679 else 680 { 681 <option value="@i">@i</option> 682 } 683 } 684 </select> 685 </div> 686 <div class="col-6 pl-sm-0 pl-2"> 687 <input type="text" name="boligarealmax" id="boligarealmax-frontpage" class="form-control js-boligarealmax-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Maxm2","Max. m2")' /> 688 <select class="form-control js-boligarealmax-frontpage-select js-count"> 689 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")</option> 690 @for (var i = 0; i <= 300; i += 10) 691 { 692 if (i == 300) 693 { 694 <option value="@i">@i+</option> 695 } 696 else 697 { 698 <option value="@i">@i</option> 699 } 700 } 701 </select> 702 </div> 703 </div> 704 </div> 705 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"> 706 <div class="filter-container row"> 707 <label class="d-block col-12">@Translate("Smartpage:Search.Grundareal", "Grundareal")</label> 708 <div class="col-6 pr-sm-0 pr-2"> 709 <input type="text" name="grundarealmin" id="grundarealmin-frontpage" class="form-control js-grundarealmin-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Minm2","Min. m2")' /> 710 <select class="form-control js-grundarealmin-frontpage-select js-count"> 711 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")</option> 712 @for (var i = 0; i <= 10000; i += 100) 713 { 714 if (i == 10000) 715 { 716 <option value="@i">@i+</option> 717 } 718 else 719 { 720 <option value="@i">@i</option> 721 } 722 } 723 </select> 724 </div> 725 <div class="col-6 pl-sm-0 pl-2"> 726 <input type="text" name="grundarealmax" id="grundarealmax-frontpage" class="form-control js-grundarealmax-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Maxm2","Max. m2")' /> 727 <select class="form-control js-grundarealmax-frontpage-select js-count"> 728 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")</option> 729 @for (var i = 0; i <= 10000; i += 100) 730 { 731 if (i == 10000) 732 { 733 <option value="@i">@i+</option> 734 } 735 else 736 { 737 <option value="@i">@i</option> 738 } 739 } 740 </select> 741 </div> 742 </div> 743 </div> 744 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"> 745 <div class="filter-container row"> 746 <label class="d-block col-12">Antal rum</label> 747 748 <div class="col-6 pr-sm-0 pr-2"> 749 <select name="roomsmin" id="roomsmin-frontpage" class="form-control reverse js-count"> 750 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Min", "Min")</option> 751 <option value="1">1</option> 752 <option value="2">2</option> 753 <option value="3">3</option> 754 <option value="4">4</option> 755 <option value="5+">5+</option> 756 </select> 757 </div> 758 <div class="col-6 pl-sm-0 pl-2"> 759 <select name="roomsmax" id="roomsmax-frontpage" class="form-control reverse js-count"> 760 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Max", "Max")</option> 761 <option value="1">1</option> 762 <option value="2">2</option> 763 <option value="3">3</option> 764 <option value="4">4</option> 765 <option value="5+">@Translate("Smartpage:Rooms.5", "5")</option> 766 </select> 767 </div> 768 </div> 769 </div> 770 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"> 771 <div class="row"> 772 <div class="col-12"> 773 <div class="filter-container"> 774 <label class="d-block">Energimærke</label> 775 <select name="energylabel" id="energylabel-frontpage" class="form-control reverse js-count"> 776 <option disabled selected="selected">@Translate("Smartpage:Search.Vælg", "Vælg")</option> 777 <option value="01">G</option> 778 <option value="02">F</option> 779 <option value="03">E</option> 780 <option value="04">D</option> 781 <option value="05">C</option> 782 <option value="06">B</option> 783 <option value="07">A</option> 784 <option value="08">A2010</option> 785 <option value="09">A2015</option> 786 <option value="10">A2020+</option> 787 </select> 788 </div> 789 </div> 790 </div> 791 </div> 792 <div class="col-12 col-sm-6 col-lg-3 mt-3"> 793 <h4 class=""><b>@Translate("Smartpage:Search.Økonomi", "Økonomi")</b></h4> 794 <div class="filter-container row"> 795 <label class="d-block col-12">@Translate("Smartpage:Search.Ejerudgift/boligydelse pr. måned", "Ejerudgift/boligydelse pr. måned")</label> 796 <div class="col-6 pr-sm-0 pr-2"> 797 <input type="text" name="subsidymin" id="subsidymin-frontpage" class="form-control js-subsidymin-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.MinDKK","Min. DKK")' /> 798 <select class="form-control js-subsidymin-frontpage-select js-count"> 799 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MinDKK", "Min. DKK")</option> 800 @for (var i = 0; i <= 25000; i += 1250) 801 { 802 if (i == 25000) 803 { 804 <option>@Convert.ToInt32(i).ToString("N0")+</option> 805 } 806 else 807 { 808 <option>@Convert.ToInt32(i).ToString("N0")</option> 809 } 810 } 811 </select> 812 </div> 813 <div class="col-6 pl-sm-0 pl-2"> 814 <input type="text" name="subsidymax" id="subsidymax-frontpage" class="form-control js-subsidymax-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.MaxDKK","Max. DKK")' /> 815 <select class="form-control js-subsidymax-frontpage-select js-count"> 816 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MaxDKK", "Max. DKK")</option> 817 @for (var i = 0; i <= 25000; i += 1250) 818 { 819 if (i == 25000) 820 { 821 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")+</option> 822 } 823 else 824 { 825 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")</option> 826 } 827 } 828 </select> 829 </div> 830 </div> 831 </div> 832 <div class="col-12 col-sm-6 col-lg-4 offset-lg-5 mt-3 mt-sm-0"> 833 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search"></i> @Translate("Smartpage:Search.AnvendFiltre", "Anvend filtre")</button> 834 </div> 835 </div> 836 </div> 837 </div> 838 </div> 839 840 <div class="row d-block d-md-none form-wrapper no-gutters"> 841 <div class="col-xs-12 col-md-2"> 842 <button type="submit" class="btn btn-block btn-search btn-mobile-search">@Translate("Smartpage:Search.SøgBolig", "Søg Bolig")<i class="fa fa-search cta-icon"></i></button> 843 </div> 844 </div> 845 </form> 846 <div class="front-page-actions d-md-none"> 847 <div> 848 <button class="btn btn-block btn-search btn-mobile-search js-search-mobile">@Translate("Smartpage:Search.SøgBolig", "Søg Bolig")<i class="fa fa-search cta-icon"></i></button> 849 </div> 850 <div> 851 @{ 852 string brokerSearchId = SettingsItem != null ? Dynamicweb.Core.Converter.ToString(SettingsItem["Maeglersogning"]).Replace("Default.aspx?Id=", "") : ""; 853 string ctaText = Translate("Smartpage.Frontpage.Mobile.FindBroker", "FIND EJENDOMSMÆGLER"); 854 <form method="GET" action="/Default.aspx"> 855 <input name="id" value="@brokerSearchId" type="hidden" /> 856 <div class="icon-wrapper-wclick"> 857 <i class="fas fa-search ta-submit-on-icon-click"></i> 858 <input class="box-cta-input ta-postnummer ta-submit-on-select ta-submit-on-enter" name="q" type="text" placeholder="@ctaText" onfocus="this.placeholder = ''" onblur="this.placeholder='@ctaText'" /> 859 </div> 860 </form> 861 } 862 </div> 863 <div> 864 <a href="javascript:panelSalgsvurdering('Hovedmenu')" class="btn btn-orange btn-block">@Translate("Smartpage:Frontpage.Mobile.GetFreeAppraisal", "BESTIL GRATIS VURDERING")<i class="cta-icon fa fa-angle-right"></i></a> 865 </div> 866 </div> 867 </div> 868 869 } 870 Custom.Integration.Brokers.Models.BrokerEmployee GetBrokerFromCurrentProduct() 871 { 872 string productId = Dynamicweb.Context.Current.Request["ProductId"]; 873 874 if (string.IsNullOrWhiteSpace(productId)) 875 { 876 return null; 877 } 878 879 var propertyProduct = Dynamicweb.Ecommerce.Services.Products.GetProductById(productId, string.Empty, true); 880 if (propertyProduct == null) 881 { 882 return null; 883 } 884 885 string employee = Dynamicweb.Core.Converter.ToString( 886 Dynamicweb.Ecommerce.Services.Products.GetProductFieldValue(propertyProduct, "xAktoererMaeglerKontaktEmail") 887 ); 888 string storeId = Dynamicweb.Core.Converter.ToString( 889 Dynamicweb.Ecommerce.Services.Products.GetProductFieldValue(propertyProduct, "xButikID") 890 ); 891 892 if (string.IsNullOrWhiteSpace(employee) || string.IsNullOrWhiteSpace(storeId)) 893 { 894 return null; 895 } 896 897 return Custom.Integration.Brokers.Search.GetEmployee(storeId, employee); 898 } 899 900 string GetAgentTitleFromCurrentProduct() 901 { 902 var propBroker = GetBrokerFromCurrentProduct(); 903 904 if (propBroker?.Broker == null) 905 { 906 return string.Empty; 907 } 908 909 if (!string.IsNullOrEmpty(propBroker.Broker.CompanyName)) 910 { 911 return propBroker.Broker.CompanyName; 912 } 913 914 return propBroker.Broker.Name ?? string.Empty; 915 } 916 917 string GetMasterBrokerUrlFromCurrentProduct() 918 { 919 var propBroker = GetBrokerFromCurrentProduct(); 920 921 var itemId = propBroker?.Broker?.ItemId; 922 var itemType = propBroker?.Broker?.ItemType; 923 924 if (string.IsNullOrWhiteSpace(itemId) || string.IsNullOrWhiteSpace(itemType)) 925 { 926 return string.Empty; 927 } 928 var brokerItem = Dynamicweb.Content.Items.ItemManager.Storage.GetById(itemType, itemId); 929 930 if (brokerItem == null) 931 { 932 return string.Empty; 933 } 934 935 var websiteId = Dynamicweb.Core.Converter.ToInt32(brokerItem["WebsiteId"]); 936 var page = Dynamicweb.Content.Services.Pages.GetFirstPageForArea(websiteId); 937 return Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl("Default.aspx?Id=" + page?.ID); 938 } 939 940 // === Video link helpers (used by the property page) === 941 942 // True when the link points directly at a video file we can play in a <video> element. Everything else is iframed. 943 bool IsDirectVideoFile(string url) 944 { 945 if (string.IsNullOrWhiteSpace(url)) { return false; } 946 947 // Strip query/fragment before checking the file extension. 948 string path = url.Split('?', '#')[0]; 949 string[] directExtensions = { ".mp4", ".webm", ".ogg", ".ogv", ".mov", ".m4v" }; 950 foreach (var ext in directExtensions) 951 { 952 if (path.EndsWith(ext, StringComparison.InvariantCultureIgnoreCase)) { return true; } 953 } 954 return false; 955 } 956 957 string GetYouTubeId(string url) 958 { 959 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; } 960 961 string[] patterns = { @"youtu\.be/([^?&/]+)", @"[?&]v=([^?&]+)", @"/embed/([^?&/]+)", @"/shorts/([^?&/]+)" }; 962 foreach (var pattern in patterns) 963 { 964 var match = System.Text.RegularExpressions.Regex.Match(url, pattern); 965 if (match.Success) { return match.Groups[1].Value; } 966 } 967 968 return string.Empty; 969 } 970 971 string GetVimeoId(string url) 972 { 973 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; } 974 var match = System.Text.RegularExpressions.Regex.Match(url, @"vimeo\.com/(?:.*?/)?(\d+)"); 975 return match.Success ? match.Groups[1].Value : string.Empty; 976 } 977 978 string GetVimeoHash(string url) 979 { 980 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; } 981 // Unlisted videos carry a privacy hash: vimeo.com/{id}/{hash} 982 var match = System.Text.RegularExpressions.Regex.Match(url, @"vimeo\.com/(?:.*?/)?\d+/(\w+)"); 983 return match.Success ? match.Groups[1].Value : string.Empty; 984 } 985 986 // Builds the iframe src for a non-file link. YouTube/Vimeo share links are rewritten to their embeddable form 987 // (their pages block framing); every other link (Matterport, CR3, already-embeddable pages) is used as-is. 988 string BuildEmbedUrl(string url, bool background) 989 { 990 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; } 991 992 if (url.Contains("youtube", StringComparison.InvariantCultureIgnoreCase) || url.Contains("youtu.be", StringComparison.InvariantCultureIgnoreCase)) 993 { 994 string id = GetYouTubeId(url); 995 if (!string.IsNullOrEmpty(id)) 996 { 997 string baseUrl = "https://www.youtube-nocookie.com/embed/" + id; 998 return background 999 ? baseUrl + "?autoplay=1&mute=1&loop=1&playlist=" + id + "&controls=0&playsinline=1&rel=0" 1000 : baseUrl + "?rel=0"; 1001 } 1002 } 1003 else if (url.Contains("vimeo", StringComparison.InvariantCultureIgnoreCase)) 1004 { 1005 string id = GetVimeoId(url); 1006 if (!string.IsNullOrEmpty(id)) 1007 { 1008 string baseUrl = "https://player.vimeo.com/video/" + id; 1009 var queryParams = new List<string>(); 1010 string hash = GetVimeoHash(url); 1011 if (!string.IsNullOrEmpty(hash)) { queryParams.Add("h=" + hash); } 1012 if (background) { queryParams.Add("background=1"); } 1013 return queryParams.Count > 0 ? baseUrl + "?" + string.Join("&", queryParams) : baseUrl; 1014 } 1015 } 1016 1017 // Matterport, CR3 and any already-embeddable link frame as-is. 1018 return url; 1019 } 1020 } 1021 1022 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 1023 @using Dynamicweb.Core; 1024 @using Dynamicweb.Core.Encoders; 1025 @using Dynamicweb.Frontend.Navigation; 1026 @using Dynamicweb; 1027 1028 @functions { 1029 void RenderSlideMenu(bool BoligOne, bool erhverv, string maeglersoegning) 1030 { 1031 <div id="menu" 1032 class="main-menu-slide" 1033 role="navigation" 1034 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.MainMenu", "Hovedmenu"))" 1035 aria-modal="true"> 1036 <div class="container"> 1037 <div class="row"> 1038 <div class="col-12"> 1039 <span class="menu-headline">MENU</span> 1040 </div> 1041 <div class="menu-slide" 1042 role="button" 1043 tabindex="0" 1044 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.CloseMenu", "Luk menu"))"> 1045 <b aria-hidden="true"></b> 1046 </div> 1047 1048 <div class="col-12 main-slidemenu" role="region" aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.NavigationLinks", "Navigationslinks"))"> 1049 @{ 1050 string erhvervsNavigationAreaId = !string.IsNullOrWhiteSpace(Converter.ToString(Pageview.Area.Item["SpErhvervNavigationAreaId"])) ? Converter.ToString(Pageview.Area.Item["SpErhvervNavigationAreaId"]) : "2723"; 1051 string rmNavigationAreaId = !string.IsNullOrWhiteSpace(Converter.ToString(Pageview.Area.Item["SpRMNavigationAreaId"])) ? Converter.ToString(Pageview.Area.Item["SpRMNavigationAreaId"]) : "1"; 1052 1053 if (Pageview.Page.ItemType == "AgentPage") 1054 { 1055 @Navigation.RenderNavigation("Navigation/AgentNavigation.cshtml", 1056 new NavigationSettings { StartLevel = 1, StopLevel = 1, RootAreaId = Pageview.Area.ID }) 1057 } 1058 else if (erhverv) 1059 { 1060 <ul id="main-nav-erhverv" class="navigation dwnavigation" settings="startlevel:1;endlevel:2;template:Erhverv_ul_li.xslt;expandmode:all;areaid:@erhvervsNavigationAreaId;"></ul> 1061 @GetValue("DwNavigation(mainnaverhverv)") 1062 } 1063 else 1064 { 1065 <ul id="main-nav" class="navigation dwnavigation" settings="startlevel:1;endlevel:2;template:Erhverv_ul_li.xslt;expandmode:all;areaid:@rmNavigationAreaId;"></ul> 1066 @GetValue("DwNavigation(mainnav)") 1067 } 1068 } 1069 </div> 1070 <div class="col-12 bottom-btns"> 1071 1072 @{ 1073 string[] maeglerid; 1074 string maegler = !string.IsNullOrEmpty(Converter.ToString(Pageview.Area.Item["ErhvervMaeglersoegning"])) ? Converter.ToString(Pageview.Area.Item["ErhvervMaeglersoegning"]) : "Default?Id=0"; 1075 1076 if (erhverv) 1077 { 1078 maeglerid = maegler.Split(new string[] { "?Id=" }, StringSplitOptions.None); 1079 } 1080 else 1081 { 1082 maeglerid = Convert.ToString(maeglersoegning).Split(new string[] { "?Id=" }, StringSplitOptions.None); 1083 } 1084 1085 <form method="GET" action="/Default.aspx" role="search"> 1086 <input name="id" value="@maeglerid[1]" type="hidden" /> 1087 <div class="icon-wrapper-wclick"> 1088 <label for="broker-search-menu" class="sr-only">@Translate("Custom:Accessibility.FindBroker", "Find mægler")</label> 1089 <i class="fas fa-search ta-submit-on-icon-click" 1090 aria-hidden="true" 1091 role="button" 1092 tabindex="0" 1093 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.SearchBroker", "Søg efter mægler"))"></i> 1094 <input id="broker-search-menu" 1095 class="box-cta-input ta-postnummer ta-submit-on-select ta-submit-on-enter" 1096 name="q" 1097 type="text" 1098 placeholder="@HtmlEncoder.HtmlAttributeEncode(Translate("Smartpage:BoxWidget.FindMægler", "FIND MÆGLER"))" 1099 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.BrokerSearchField", "Indtast postnummer eller navn for at finde mægler"))" 1100 onfocus="this.placeholder = 'FIND MÆGLER'" /> 1101 </div> 1102 </form> 1103 } 1104 <br /> 1105 @{ 1106 var dpmaegler = "" + Context.Current.Session["DP"] + "Hovedmenu" + ""; 1107 } 1108 <a href="javascript:panelSalgsvurdering('@dpmaegler', '@Pageview.AreaID');" 1109 class="btn btn-block btn-default-invert js-close-menu" 1110 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.FreeSalesAssessment", "Få gratis salgsvurdering"))">Gratis salgsvurdering <i class="cta-icon fa fa-angle-right" aria-hidden="true"></i></a> 1111 </div> 1112 </div> 1113 </div> 1114 </div> 1115 } 1116 } 1117 1118 @functions { 1119 static string JsonString(object value) => 1120 HtmlEncoder.JavaScriptStringEncode(Converter.ToString(value), true); 1121 } 1122 1123 @{ 1124 Context.Current?.Response?.AddHeader("access-control-allow-origin", "*"); 1125 1126 string bodyClass = ""; 1127 string template = "real"; 1128 string TemplateUrl = "/Files/Templates/Designs/rm/"; 1129 string logoUrl = TemplateUrl + "assets/images/logo-erhverv.svg"; 1130 string MetaTitle = GetString("Title"); 1131 string MetaDescription = GetString("Meta.Description"); 1132 string MetaKeywords = GetString("Meta.Keywords"); 1133 string searchClass = ""; 1134 1135 var mainCssFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/dist/css/main.min.css")); 1136 var erhvervCssFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/dist/css/erhverv.min.css")); 1137 string mainCSS = TemplateUrl + "assets/dist/css/main.min.css?" + mainCssFileInfo.LastWriteTime.Ticks; 1138 string erhvervCSS = TemplateUrl + "assets/dist/css/erhverv.min.css?" + erhvervCssFileInfo.LastWriteTime.Ticks; 1139 string loadingIcon = "/Files/Images/real-maeglerne-loading-erhverv.svg"; 1140 1141 var SettingsItem = ItemManager.Storage.GetById("Delte_Egenskaber", template != "bone" ? "1" : "2"); 1142 1143 // Indstillinger 1144 var settings_Frontpage = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Frontpage"])) ? SettingsItem["Frontpage"] : ""; 1145 var settings_Boligside = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Boligside"])) ? SettingsItem["Boligside"] : ""; 1146 var settings_BoligsideErhverv = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligsideErhverv"])) ? Converter.ToString(SettingsItem["BoligsideErhverv"]) : ""; 1147 var settings_BoligListFeedMaegler = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligListFeedMaeglerErhverv"])) ? SettingsItem["BoligListFeedMaeglerErhverv"] : ""; 1148 var settings_Maeglersogning = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Maeglersogning"])) ? SettingsItem["Maeglersogning"] : ""; 1149 var settings_MinSide = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["MinSide"])) ? SettingsItem["MinSide"] : ""; 1150 var settings_Sibling_Site = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Sibling_Site"])) ? SettingsItem["Sibling_Site"] : ""; 1151 var settings_Sibling_Boligvisning = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Sibling_Boligvisning"])) ? SettingsItem["Sibling_Boligvisning"] : ""; 1152 var settings_Product_Group = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Product_Group"])) ? SettingsItem["Product_Group"] : ""; 1153 var settings_Boligagent = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Boligagent"])) ? SettingsItem["Boligagent"] : ""; 1154 string settings_Persondatapolitik = Converter.ToString(SettingsItem["Persondatapolitik"]); 1155 1156 // API 1157 var settings_BoligSearchFeed = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligSearchFeed"])) ? SettingsItem["BoligSearchFeed"] : ""; 1158 var settings_BoligListFeed = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligListFeed"])) ? SettingsItem["BoligListFeed"] : ""; 1159 var settings_BoligListFeedErhverv = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligListFeedErhverv"])) ? SettingsItem["BoligListFeedErhverv"] : ""; 1160 var settings_BoligCountFeed = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligCountFeed"])) ? SettingsItem["BoligCountFeed"] : ""; 1161 var settings_BoligMapFeed = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligMapFeedErhverv"])) ? SettingsItem["BoligMapFeedErhverv"] : ""; 1162 var settings_AdvisorSearchFeed = Converter.ToString(Pageview.Area.Item["AdvisorSearchFeed"]); 1163 1164 // Forside 1165 var settings_FrontpageOverskrift = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["FrontpageOverskrift"])) ? SettingsItem["FrontpageOverskrift"] : ""; 1166 var settings_FrontpageVideo = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["FrontpageVideo"])) ? SettingsItem["FrontpageVideo"] : ""; 1167 var settings_FrontpageVideoImage = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["FrontpageVideoImage"])) ? SettingsItem["FrontpageVideoImage"] : ""; 1168 1169 // Tracking 1170 var settings_Google_Tag_Manager_ID = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Google_Tag_Manager_ID"])) ? SettingsItem["Google_Tag_Manager_ID"] : ""; 1171 var settings_Google_Tag_Manager_ID_BoligOne = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Google_Tag_Manager_ID_BoligOne"])) ? SettingsItem["Google_Tag_Manager_ID_BoligOne"] : ""; 1172 var settings_Facebook_App_ID = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Facebook_App_ID"])) ? SettingsItem["Facebook_App_ID"] : ""; 1173 var settings_Leadhub_Pixel_ID = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Leadhub_Pixel_ID"])) ? SettingsItem["Leadhub_Pixel_ID"] : ""; 1174 var settings_AntiFlicker_ID = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["AntiFlicker_ID"])) ? SettingsItem["AntiFlicker_ID"] : ""; 1175 var settings_RealEquityApplicationId = Converter.ToString(SettingsItem["RealEquityApplicationID"]); 1176 1177 // Indstillinger for brugerfunktioner 1178 var settings_ForgotPwPage = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["ForgotPwPage"])) ? SettingsItem["ForgotPwPage"] : ""; 1179 var settings_NewsletterSignup = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["NewsletterSignup"])) ? SettingsItem["NewsletterSignup"] : ""; 1180 var settings_CreateUserModal = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["CreateUserModal"])) ? SettingsItem["CreateUserModal"] : ""; 1181 var settings_LoginModal = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["LoginModal"])) ? SettingsItem["LoginModal"] : ""; 1182 1183 int createUserParagraphId = 0; 1184 int loginParagraphId = 0; 1185 Int32.TryParse(settings_CreateUserModal.ToString(), out createUserParagraphId); 1186 Int32.TryParse(settings_LoginModal.ToString(), out loginParagraphId); 1187 1188 // Use configured search page id for search action which depends on the context. Context can currently be one of: rm, boligone or erhverv. 1189 // Subsequent calls to search page via ajax (sorting, loading, etc) should preserve search context. (vv) 1190 int searchPageId = GetPageSettingsPageId("Boligside"); 1191 if (searchPageId == 0) 1192 { 1193 searchPageId = GetWebsiteSettingsPageId("Boligside"); 1194 } 1195 1196 int boligsideId = GetPageSettingsPageId("BoligsideErhverv"); 1197 if (boligsideId == 0) 1198 { 1199 boligsideId = GetWebsiteSettingsPageId("BoligsideErhverv"); 1200 } 1201 1202 string productGroupFilter = String.Empty; 1203 if (Pageview.Page.PropertyItem != null && Pageview.Page.PropertyItem.ContainsKey("Product_Group") && Pageview.Page.PropertyItem["Product_Group"] != null) 1204 { 1205 productGroupFilter = Pageview.Page.PropertyItem["Product_Group"].ToString(); 1206 } 1207 if (GetString("DwAreaFirstActivePageID") == GetString("DwPageID") || GetBoolean("Item.Page.TransparentHeader")) 1208 { 1209 bodyClass += " frontpage"; 1210 bodyClass += " header-transparent"; 1211 1212 } 1213 if (Pageview.Page.PropertyItem != null && Convert.ToBoolean(Pageview.Page.PropertyItem["IsRealFrontpage"])) 1214 { 1215 searchClass = "is-frontpage"; 1216 } 1217 1218 bool isErhverv = false; 1219 if (Pageview.Page.PropertyItem != null && Pageview.Page.PropertyItem.ContainsKey("Erhverv") && Pageview.Page.PropertyItem["Erhverv"] != null) 1220 { 1221 var s = Pageview.Page.PropertyItem["Erhverv"].ToString(); 1222 Boolean.TryParse(s, out isErhverv); 1223 } 1224 1225 bool isBrokerPage = false; 1226 if (!String.IsNullOrEmpty(GetString("Item.Area.M_glerGruppeId.Value"))) 1227 { 1228 isBrokerPage = true; 1229 bodyClass = ""; // Get rid of transparent header on brokerPage 1230 } 1231 1232 string callTrackingId = GetString("Item.Area.CallTrackingId.Value"); 1233 1234 RealEstate.User.Model.BrokerEmployee MyBroker = null; 1235 try 1236 { 1237 var MyB = new RealEstate.User.MyBroker(); 1238 MyBroker = MyB.GetMyBroker(); 1239 } 1240 catch 1241 { 1242 // Ignore 1243 } 1244 1245 string querySearch = Context.Current?.Request?.QueryString["search"] ?? string.Empty; 1246 int commercialSearchPageId = LinkHelper.GetInternalPageId(Converter.ToString(SettingsItem["BoliglisteErhverv"])); 1247 if (commercialSearchPageId == 0) 1248 { 1249 commercialSearchPageId = searchPageId; 1250 } 1251 if (Pageview.Page.ID == commercialSearchPageId || isBrokerPage) 1252 { 1253 bodyClass += " commercial-listing-page"; 1254 } 1255 1256 string commercialFacetUrl = "/Default.aspx?ID=" + commercialSearchPageId; 1257 1258 Dynamicweb.Security.UserManagement.User user = null; 1259 int userID = 0; 1260 string userName = ""; 1261 string userEmail = ""; 1262 string userPhone = ""; 1263 string userZip = ""; 1264 string userAddress = ""; 1265 1266 if (Dynamicweb.Security.UserManagement.User.IsExtranetUserLoggedIn()) 1267 { 1268 user = Dynamicweb.Security.UserManagement.User.GetCurrentExtranetUser(); 1269 userName = user.Name; 1270 userEmail = user.Email; 1271 userPhone = user.Phone; 1272 userZip = user.Zip; 1273 userAddress = user.Address; 1274 userID = user.ID; 1275 } 1276 1277 string markerColor = ""; 1278 string mapMarkerUrl = TemplateUrl + "assets/images/logo-real.png"; 1279 1280 markerColor = "#213960"; 1281 1282 var butikId = string.Empty; 1283 var primaryArea = string.Empty; 1284 string bEmail = string.Empty; 1285 if (MyBroker != null && MyBroker.Broker != null) 1286 { 1287 butikId = MyBroker.Broker.Item().GetString("CBMedlemsnummer"); 1288 primaryArea = MyBroker.Broker.Item().GetString("PrimaertOmraade"); 1289 bEmail = MyBroker.Broker.Item().GetString("Email"); 1290 } 1291 1292 var salesAssessmentPageId = Dynamicweb.Core.Converter.ToString(GetPageIdByNavigationTag("OrderSalesAssessment")); 1293 var termsMail = "info@realmaeglerne.dk"; 1294 } 1295 1296 <!DOCTYPE html> 1297 <html> 1298 <head> 1299 <meta charset="utf-8"> 1300 <title>@MetaTitle</title> 1301 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 1302 <meta name="description" content="@MetaDescription"> 1303 <meta name="keywords" content="@MetaKeywords"> 1304 <meta name="format-detection" content="telephone=no"> 1305 <meta http-equiv="Expires" content="60"> 1306 <meta name="robots" content="@(Pageview.Area.Noindex ? "noindex" : "index"),@(Pageview.Area.Nofollow ? "nofollow" : "follow")"> 1307 @RenderSnippet("OpenGraphTags") 1308 1309 @*FONT AWESOME*@ 1310 <link rel="stylesheet" href="@(TemplateUrl)assets/fontawesome/css/all.css" /> 1311 <link rel="stylesheet" href="@mainCSS" /> 1312 <link rel="stylesheet" href="@erhvervCSS" /> 1313 <link rel="icon" type="image/ico" href="@(TemplateUrl)assets/images/favicons/favicon-real.ico?v=1"> 1314 <link rel="icon" type="image/png" href="@(TemplateUrl)assets/images/favicons/favicon-real-16x16.png" sizes="16x16"> 1315 <link rel="icon" type="image/png" href="@(TemplateUrl)assets/images/favicons/favicon-real-32x32.png" sizes="32x32"> 1316 <link rel="icon" type="image/png" href="@(TemplateUrl)assets/images/favicons/favicon-real-96x96.png" sizes="96x96"> 1317 <meta name="google-site-verification" content="ldo3P1JA2R9wtsYlK2cge26EWxu2gOM-aoQhe2qTukA" /> 1318 1319 @if (!string.IsNullOrEmpty(settings_AntiFlicker_ID.ToString())) 1320 { 1321 <!-- Anti-flicker snippet --> 1322 <style> 1323 .async-hide { 1324 opacity: 0 !important 1325 } 1326 </style> 1327 <script> 1328 (function (a, s, y, n, c, h, i, d, e) { 1329 s.className += ' ' + y; h.start = 1 * new Date; 1330 h.end = i = function () { s.className = s.className.replace(RegExp(' ?' + y), '') }; 1331 (a[n] = a[n] || []).hide = h; setTimeout(function () { i(); h.end = null }, c); h.timeout = c; 1332 })(window, document.documentElement, 'async-hide', 'dataLayer', 4000, 1333 { 'GTM-THN57XP': true });</script> 1334 1335 } 1336 1337 @if (isBrokerPage && !string.IsNullOrEmpty(callTrackingId)) 1338 { 1339 <script type="text/javascript" src="https://call.call-tracking.dk/getJavascript?custid=@callTrackingId"></script> 1340 } 1341 1342 @if (!string.IsNullOrEmpty(Converter.ToString(settings_Google_Tag_Manager_ID))) 1343 { 1344 1345 <!-- Datalaget --> 1346 <script> 1347 window.dataLayer = window.dataLayer || []; 1348 </script> 1349 1350 1351 <!-- Andet --> 1352 <script> 1353 window.dataLayer.push({ 1354 'division': '@(isErhverv ? "b2b" : "b2c")', // 'b2c', 'b2b', 'project' ... 1355 }); 1356 </script> 1357 1358 @RenderSnippet("GtmDatalayer") 1359 1360 <!-- Google Tag Manager --> 1361 <script> 1362 (function (w, d, s, l, i) { 1363 w[l] = w[l] || []; w[l].push({ 1364 'gtm.start': 1365 new Date().getTime(), event: 'gtm.js' 1366 }); var f = d.getElementsByTagName(s)[0], 1367 j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 1368 'https://frap.realmaeglerne.dk/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); 1369 })(window, document, 'script', 'dataLayer', '@Converter.ToString(settings_Google_Tag_Manager_ID)'); 1370 </script> 1371 1372 } 1373 1374 @if (!string.IsNullOrEmpty(settings_Leadhub_Pixel_ID.ToString())) 1375 { 1376 <!-- Begin Leadhub Pixel Code --> 1377 <script> 1378 (function(w,d,x,n,u,t,f,s,o){ 1379 f='LHInsights';w[n]=w[f]=w[f]||function(n,d){ 1380 (w[f].q=w[f].q||[]).push([n,d])};w[f].l=1*new Date();s=d.createElement(x); s.async=1;s.src=u+'?t='+t;o=d.getElementsByTagName(x)[0];o.parentNode.insertBefore(s,o) 1381 })(window,document, 'script', 'lhi', '//www.lhinsights.com/agent.js', '@settings_Leadhub_Pixel_ID'); 1382 lhi('pageview'); 1383 </script> 1384 <!-- End Leadhub Pixel Code --> 1385 } 1386 1387 <script> 1388 // Global namespace used for fetching API feeds from DW 1389 var RMAPI = (RMAPI) ? RMAPI : {}; 1390 var ApiPreFix = @JsonString("/Default.aspx?ID="); 1391 RMAPI.BoligCountFeed = ApiPreFix + @JsonString(settings_BoligCountFeed); 1392 RMAPI.BoligListFeed = ApiPreFix + @JsonString(settings_BoligListFeed) + "&refpageid=" + @JsonString(Pageview.Page.ID); 1393 RMAPI.BoligListFeedMaegler = ApiPreFix + @JsonString(settings_BoligListFeedMaegler) + "&refpageid=" + @JsonString(Pageview.Page.ID); 1394 RMAPI.BoligSearchFeed = ApiPreFix + @JsonString(settings_BoligSearchFeed); 1395 RMAPI.BoligListFeedErhverv = @JsonString(settings_BoligListFeedErhverv); 1396 RMAPI.BoligMapFeed = ApiPreFix + @JsonString(settings_BoligMapFeed); 1397 RMAPI.Boligagent = @JsonString(settings_Boligagent); 1398 RMAPI.IsErhverv = @(isErhverv ? "true" : "false"); 1399 RMAPI.ProductGroupFilter = @JsonString(productGroupFilter); 1400 RMAPI.ButikId = @JsonString(butikId); 1401 RMAPI.Boligvisning = false; 1402 RMAPI.RefPageId = @JsonString(Pageview.Page.ID); 1403 RMAPI.Template = @JsonString(template); 1404 RMAPI.SliderSettings = @(JsonConvert.SerializeObject(Settings.Site, new JsonSerializerSettings { StringEscapeHandling = StringEscapeHandling.EscapeHtml })); 1405 RMAPI.AdvisorSearchFeed = @JsonString(settings_AdvisorSearchFeed); 1406 RMAPI.LoadingIcon = @JsonString(loadingIcon); 1407 RMAPI.MarkerColor = @JsonString(markerColor); 1408 RMAPI.IsBoligOne = "false"; 1409 RMAPI.mapMarkerUrl = @JsonString(mapMarkerUrl); 1410 RMAPI.settings_ForgotPwPage = @JsonString(settings_ForgotPwPage); 1411 RMAPI.settings_Boligside = @JsonString(settings_Boligside); 1412 1413 </script> 1414 1415 @if (!string.IsNullOrEmpty(settings_Facebook_App_ID.ToString())) 1416 { 1417 <!-- Facebook Pixel Code --> 1418 <script> 1419 !function (f, b, e, v, n, t, s) { 1420 if (f.fbq) return; n = f.fbq = function () { 1421 n.callMethod ? 1422 n.callMethod.apply(n, arguments) : n.queue.push(arguments) 1423 }; 1424 if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0'; 1425 n.queue = []; t = b.createElement(e); t.async = !0; 1426 t.src = v; s = b.getElementsByTagName(e)[0]; 1427 s.parentNode.insertBefore(t, s) 1428 }(window, document, 'script', 1429 'https://connect.facebook.net/en_US/fbevents.js'); 1430 fbq('init', '@settings_Facebook_App_ID'); 1431 fbq('track', 'PageView'); 1432 </script> 1433 <noscript> 1434 <img height="1" width="1" src="https://www.facebook.com/tr?id=@settings_Facebook_App_ID&ev=PageView&noscript=1" /> 1435 </noscript> 1436 <!-- End Facebook Pixel Code --> 1437 } 1438 1439 </head> 1440 1441 <body class="@HtmlEncoder.HtmlAttributeEncode(template + bodyClass)" data-spsalesassesmentid="@HtmlEncoder.HtmlAttributeEncode(salesAssessmentPageId)"> 1442 @{ 1443 var agentUserGroup = GetValue("Real:Broker") as Dynamicweb.Security.UserManagement.UserGroup; 1444 var agentTitle = agentUserGroup != null ? agentUserGroup.CompanyName.IsNotNullOrEmpty() ? agentUserGroup.CompanyName : agentUserGroup.Name : string.Empty; 1445 string masterBrokerUrl = string.Empty; 1446 1447 if (string.IsNullOrEmpty(agentTitle)) 1448 { 1449 agentTitle = GetAgentTitleFromCurrentProduct(); 1450 masterBrokerUrl = GetMasterBrokerUrlFromCurrentProduct(); 1451 } 1452 } 1453 1454 <div class="header__container container commercial"> 1455 <div class="header__logo"> 1456 <a href="/erhverv" 1457 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.HomePageLink", "Gå til forsiden"))" 1458 title="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.HomePageLink", "Gå til forsiden"))"> 1459 <img src="@logoUrl" alt="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.LogoAlt", "RealMæglerne logo"))" /> 1460 </a> 1461 </div> 1462 <div class="header__title"> 1463 @if (!string.IsNullOrEmpty(agentTitle)) 1464 { 1465 var parts = agentTitle.Split(new[] { ' ' }, 2, StringSplitOptions.None); 1466 1467 <span>@parts[0]</span> 1468 1469 @if (parts.Length > 1) 1470 { 1471 <span> 1472 @if (!string.IsNullOrWhiteSpace(masterBrokerUrl)) 1473 { 1474 <a href="@masterBrokerUrl">@parts[1]</a> 1475 } 1476 else 1477 { 1478 @parts[1] 1479 } 1480 </span> 1481 } 1482 } 1483 else 1484 { 1485 <span>@Translate("Custom:Header.Title", "RealMæglerne")</span> 1486 <span>@Translate("Custom:Header.TitleErhverv", "Erhverv")</span> 1487 } 1488 </div> 1489 @if (GetPageIdByNavigationTag("ErhvervFrontPage") != Pageview.ID) 1490 { 1491 <div class="header__search flex-column flex-md-row js-mainsearch @searchClass" 1492 role="button" 1493 tabindex="0" 1494 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.OpenSearch", "Åbn søgeformular"))"> 1495 @Translate("Smartpage:Search.Søg", "Søg") 1496 </div> 1497 } 1498 <div class="header__navigation"> 1499 <div class="header__navigation-icon menu-slide" 1500 role="button" 1501 tabindex="0" 1502 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.OpenMenu", "Åbn hovedmenu"))"> 1503 <div class="d-none d-md-block"> 1504 @Translate("Menu") 1505 </div> 1506 </div> 1507 </div> 1508 </div> 1509 1510 @if (GetPageIdByNavigationTag("ErhvervFrontPage") != Pageview.ID) 1511 { 1512 <div class="top-search"> 1513 <div class="header logo"> 1514 <div class="logo"> 1515 <a href="/erhverv"> 1516 <img src="@HtmlEncoder.HtmlAttributeEncode(logoUrl)" alt="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Brand.LogoAlt", "RealMæglerne"))" /> 1517 </a> 1518 </div> 1519 </div> 1520 <div class="top-form mx-auto"> 1521 <form class="js-commercial-navigation-form" action="/Default.aspx" method="get"> 1522 <input type="hidden" name="ID" value="@HtmlEncoder.HtmlAttributeEncode(Converter.ToString(commercialSearchPageId))" /> 1523 <div class="row form-wrapper no-gutters"> 1524 <div class="col-9 col-searchbar"> 1525 <div class="searchbar float-label-container text-left"> 1526 <label class="float-label js-float-label-trigger">@Translate("Smartpage:Erhver.Postnummer, by, vej eller sagsnummer", "Postnummer, by, vej eller sagsnummer")</label> 1527 <input type="search" 1528 name="search" 1529 class="search-input js-float-label js-commercial-search-input" 1530 value="@HtmlEncoder.HtmlAttributeEncode(querySearch)" 1531 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Smartpage:Erhver.Postnummer, by, vej eller sagsnummer", "Postnummer, by, vej eller sagsnummer"))" /> 1532 </div> 1533 </div> 1534 <div class="col-3"> 1535 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search" aria-hidden="true"></i> @Translate("Smartpage:Search.Søg", "Søg")</button> 1536 </div> 1537 </div> 1538 </form> 1539 </div> 1540 </div> 1541 <div class="search-modal"> 1542 <div class="main-search-form frontpage"> 1543 <form class="searchbar-wrapper erhverv js-commercial-navigation-form" action="/Default.aspx" method="get"> 1544 <input type="hidden" name="ID" value="@HtmlEncoder.HtmlAttributeEncode(Converter.ToString(commercialSearchPageId))" /> 1545 <div class="row mb-3 align-items-center mt-3"> 1546 <div class="col-12"> 1547 <h3>@Translate("Smartpage:Search.Erhverv.Søg erhvervs", "Søg erhvervs") <span class="thin">- @Translate("Smartpage:Search.Erhverv.lokaler/ejendomme", "lokaler/ejendomme")</span></h3> 1548 </div> 1549 </div> 1550 <div class="row form-wrapper no-gutters"> 1551 <div class="col-12 col-md-9 col-lg-10 col-searchbar"> 1552 <div class="searchbar float-label-container"> 1553 <label class="float-label js-float-label-trigger">@Translate("Smartpage:Erhver.Postnummer, by, vej eller sagsnummer", "Postnummer, by, vej eller sagsnummer")</label> 1554 <input type="search" 1555 name="search" 1556 class="search-input js-float-label js-commercial-search-input" 1557 value="@HtmlEncoder.HtmlAttributeEncode(querySearch)" 1558 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Smartpage:Erhver.Postnummer, by, vej eller sagsnummer", "Postnummer, by, vej eller sagsnummer"))" /> 1559 </div> 1560 </div> 1561 <div class="col-12 col-md-3 col-lg-2"> 1562 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search" aria-hidden="true"></i> @Translate("Smartpage:Search.Søg", "Søg")</button> 1563 </div> 1564 </div> 1565 <div class="mt-3 commercial-facet-container js-commercial-facet-container" 1566 data-commercial-facets-url="@HtmlEncoder.HtmlAttributeEncode(commercialFacetUrl)" 1567 aria-busy="false"> 1568 <p class="d-none js-commercial-facet-loading" role="status">@Translate("Custom:CommercialSearch.States.LoadingFacets", "Henter filtre …")</p> 1569 <div class="d-none js-commercial-facet-error" role="alert"> 1570 <span>@Translate("Custom:CommercialSearch.States.FacetsFailed", "Filtrene kunne ikke hentes.")</span> 1571 <button type="button" class="btn btn-link js-commercial-facet-retry">@Translate("Custom:CommercialSearch.Actions.Retry", "Prøv igen")</button> 1572 </div> 1573 <div class="js-commercial-facet-content"></div> 1574 </div> 1575 </form> 1576 </div> 1577 </div> 1578 } 1579 @{ 1580 RenderSlideMenu(false, true, ""); 1581 } 1582 1583 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 1584 @using Custom.Integration.Brokers; 1585 @using Custom.Integration.Brokers.Models; 1586 @using Newtonsoft.Json; 1587 @using RealMaeglerne.Dynamicweb; 1588 @using Dynamicweb.Core; 1589 @using Dynamicweb; 1590 @using RealMaeglerne.Library; 1591 1592 1593 @GetValue("Title(Forside)") 1594 @GetValue("Description(Forsideskabelon til Mæglersider)") 1595 @{ 1596 string siteUrl = Utils.GetBaseUrl(true); 1597 var Broker = GetValue("Real:Broker") as Dynamicweb.Security.UserManagement.UserGroup; 1598 string brokerName = Broker.Name; 1599 if (!string.IsNullOrEmpty(Broker.CompanyName)) 1600 { 1601 brokerName = Broker.CompanyName; 1602 } 1603 string brokerPhone = RealMaeglerne.Library.Helper.FormatPhoneNumber(Broker.Telephone); 1604 string brokerEmail = Broker.Item().GetString("Email"); 1605 string brokerID = Broker.ID.ToString(); 1606 string brokerRating = ""; 1607 string brokerImage = Broker.GeolocationIcon.ToString(); 1608 string brokerUrl = siteUrl + GetString("DwAreaName"); 1609 string brokerTitle = GetString("Item.SPTitleForDesc"); 1610 string brokerDesc = GetString("Item.Beskrivelse"); 1611 string teaserDesc = System.Text.RegularExpressions.Regex.Replace(brokerDesc, "<[^>]*>", string.Empty); 1612 if (teaserDesc.Length > 300) 1613 { 1614 teaserDesc = teaserDesc.Substring(0, 300) + "..."; 1615 } 1616 if (!string.IsNullOrEmpty(Broker.Item().GetString("Rating"))) 1617 { 1618 brokerRating = Broker.Item().GetString("Rating"); 1619 } 1620 string brokerBadgeBesvarelser = ""; 1621 if (!string.IsNullOrEmpty(Broker.Item().GetString("BadgeBesvarelser"))) 1622 { 1623 brokerBadgeBesvarelser = Broker.Item().GetString("BadgeBesvarelser"); 1624 } 1625 1626 butikId = Broker.Item().GetString("CBMedlemsnummer"); 1627 primaryArea = Broker.Item().GetString("PrimaertOmraade"); 1628 1629 string brugerId = String.Empty; 1630 try 1631 { 1632 brugerId = Dynamicweb.Security.UserManagement.User.GetCurrentUserID().ToString(); 1633 } 1634 catch 1635 { 1636 // Ignore 1637 } 1638 1639 var Aabningstider = JsonConvert.DeserializeObject<ForretningsoplysningerAabningstider>(Broker.Item().GetString("AabningstiderJson")); 1640 } 1641 1642 @SnippetStart("OpenGraphTags") 1643 1644 <meta property="og:type" content="website" /> 1645 <meta property="og:url" content="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(Context.Current.Request.Url.AbsoluteUri)" /> 1646 <meta property="og:image" content="@brokerImage" /> 1647 <meta property="og:title" content="@brokerName" /> 1648 <meta property="og:description" content="@teaserDesc" /> 1649 1650 @SnippetEnd("OpenGraphTags") 1651 1652 @SnippetStart("JavaScriptBottom") 1653 <script type="application/ld+json"> 1654 { 1655 "@@context": "http://schema.org", 1656 "@@type": "RealEstateAgent", 1657 "image": "@(brokerImage)", 1658 "@@id": "@(brokerUrl)", 1659 "name": "@(brokerName)", 1660 "address": { 1661 "@@type": "PostalAddress", 1662 "streetAddress": "@(Broker.Address.ToString())", 1663 "addressLocality": "@(Broker.City.ToString())", 1664 "postalCode": "@(Broker.ZipCode.ToString())", 1665 "addressCountry": "DK" 1666 }, 1667 "geo": { 1668 "@@type": "GeoCoordinates", 1669 "latitude": @(Broker.GeolocationLatitude.ToString().Replace(',', '.')), 1670 "longitude": @(Broker.GeolocationLongitude.ToString().Replace(',', '.')) 1671 }, 1672 @if (!string.IsNullOrEmpty(brokerRating) 1673 && !string.IsNullOrEmpty(brokerBadgeBesvarelser) 1674 && Convert.ToDouble(brokerRating, System.Globalization.CultureInfo.InvariantCulture) >= 8.5) 1675 { 1676 <text>"aggregateRating": { 1677 "@@type":"AggregateRating", 1678 "bestRating":"10.0", 1679 "ratingValue":"@brokerRating", 1680 "worstRating":"0.0", 1681 "reviewCount":"@brokerBadgeBesvarelser" 1682 },</text> 1683 } 1684 "url": "@(brokerUrl)", 1685 "telephone": "+45 @(RealMaeglerne.Library.Helper.FormatPhoneNumber(Broker.Telephone))" 1686 } 1687 </script> 1688 1689 <script> 1690 var RMAPI = (RMAPI) ? RMAPI : {}; 1691 RMAPI.brokerImage = "@(brokerImage)"; 1692 RMAPI.CBMedlemsnummer = "@(Broker.Item().GetString("CBMedlemsnummer"))"; 1693 RMAPI.CompanyName = "@(Broker.CompanyName)"; 1694 RMAPI.AddressZip = "@($"{Broker.Address}, {Broker.ZipCode}")"; 1695 RMAPI.Telephone = "@(Broker.Telephone)"; 1696 RMAPI.Email = "@(Broker.Item().GetString("Email"))"; 1697 RMAPI.GeolocationIcon = "@(Broker.GeolocationIcon.ToString())"; 1698 RMAPI.City = "@Broker.City"; 1699 RMAPI.ButikId = "@butikId"; 1700 </script> 1701 1702 @{ 1703 var maeglerFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath("/Files/Templates/Designs/rm/assets/dist/bundle.maegler.min.js")); 1704 } 1705 <script type="text/javascript" src="/Files/Templates/Designs/rm/assets/dist/bundle.maegler.min.js?@(maeglerFileInfo.LastWriteTime.Ticks)"></script> 1706 1707 1708 @SnippetEnd("JavaScriptBottom") 1709 1710 @if (!string.IsNullOrEmpty(Broker.GeolocationIcon.ToString())) 1711 { 1712 <section class="maegler-header" style="background-image: url('@brokerImage');"></section> 1713 } 1714 <section class="maegler-page"> 1715 <div class="container"> 1716 <div class="page"> 1717 <div class="content"> 1718 <div class="row no-gutters"> 1719 <div class="col-12 col-lg-6 p-45"> 1720 <div class="border-right blue"> 1721 <h1 class="sp-broker-title-style js-choose-broker-name-val">@brokerName</h1> 1722 <div class="read-more-cont"> 1723 <div class="text-min"> 1724 @brokerDesc.TruncateHtml(500)<span class="read-more">.. <b>@Translate("product-read-more", "læs mere")</b></span> 1725 </div> 1726 <div class="text-full" style="display: none;"> 1727 @brokerDesc<span class="read-less">.. <b>@Translate("product-read-less", "læs mindre")</b></span> 1728 </div> 1729 </div> 1730 1731 </div> 1732 </div> 1733 <div class="col-12 col-lg-3 p-30"> 1734 @if (!string.IsNullOrEmpty(GetString("Item.Area.USP"))) 1735 { 1736 <ul class="usp fa-ul"> 1737 @{ 1738 string[] uspSplit = GetString("Item.Area.USP").Split(','); 1739 for (var i = 0; i < uspSplit.Length; i++) 1740 { 1741 <li><span class="fa-li"><i class="fas fa-check"></i><i class="fas fa-circle"></i></span>@uspSplit[i]</li> 1742 if (i == 2) 1743 { 1744 break; 1745 } 1746 } 1747 } 1748 </ul> 1749 } 1750 <p> 1751 <span class="js-choose-broker-address-val">@Broker.Address<br></span> 1752 <span class="js-choose-broker-zip">@Broker.ZipCode @Broker.City<br></span> 1753 @if (!string.IsNullOrEmpty(brokerEmail)) 1754 { 1755 <text>Mail: <a href='mailto:@brokerEmail'>@brokerEmail</a><br></text> 1756 } 1757 @if (!string.IsNullOrEmpty(brokerPhone)) 1758 { 1759 <text>Tlf.: <a href="tel:@brokerPhone">@brokerPhone</a></text> 1760 } 1761 </p> 1762 1763 </div> 1764 1765 <div class="col-xs-12 col-md-4 col-lg-3 light-blue p-30"> 1766 <h3 class="big">@Translate("Smartpage:Erhverv.Mægler.Skal du sælge dine lokaler eller ejendom?", "Skal du sælge dine lokaler eller ejendom?")</h3> 1767 <br /> 1768 @{ 1769 var dpmaegler = "" + Context.Current.Session["DP"] + "Mæglervisning" + ""; 1770 } 1771 <a class="btn btn-primary btn-block btn-left" href="#bestilSalgsvurdering">@Translate("form-vurdering-cta", "Bestil vurdering") <i class="fal fa-angle-right"></i></a> 1772 <a class="btn btn-default btn-block btn-left" href="javascript:panelKontaktmaegler('Mæglervisning');">@Translate("Smartpage:KontaktMægler", "Kontakt mægler") <i class="fal fa-angle-right"></i></a> 1773 </div> 1774 </div> 1775 </div> 1776 </div> 1777 </div> 1778 </section> 1779 @* Render boliglist *@ 1780 1781 <div class="dwcontent" id="content-main" title="Main content" data-settings="unwrap: true;"></div> 1782 @GetValue("DwContent(contentmain)") 1783 1784 <div id="bestilSalgsvurdering" class="salgsvurdering-container" style="background-color: #00182b; padding: 50px 0px;"> 1785 <div class="u-full-height"> 1786 <div class="grid bestil-salgsvurdering-item dw-mod"> 1787 <div class="grid__col- col-lg-12 col-sm-12 rhs"> 1788 <div class="salgsvurdering-form"> 1789 <div class="top-section"> 1790 <div class="header"> 1791 @Translate("Smartpage:Form.Salgsvurdering.Erhverv.Header", "Bestil vurdering") 1792 </div> 1793 <div class="description"> 1794 @Translate("Smartpage:Form.Salgsvurdering.Erhverv.Description", "Skriv adressen på den ejendom, som du ønsker vurderet og dine kontaktoplysninger")<i class="icon fas fa-question-circle"></i> 1795 </div> 1796 </div> 1797 <form id="bestil-salgsvurdering" class="buyer-advisor-form js-buyer-advisor-form" method="POST" action="/InboxHandler"> 1798 <p>@Translate("form-salgsvurdering-beskrivelse", "")</p> 1799 <div class="form-group-container"> 1800 <div class="form-group"> 1801 <input class="form-control js-autocomplete-city" type="hidden" readonly /> 1802 <input class="form-control js-autocomplete-postnummer" data-is-on-broker-page="true" data-primary-area="" type="hidden" pattern="^[0-9]*$" maxlength="4" name="postnummer" placeholder='@Translate("Smartpage:Salgsvurdering.Erhverv.Placeholder.Adresse", "Post nr")' value="" required /> 1803 <input type="hidden" class="js-postnummer-validation" /> 1804 <input type="hidden" class="form-control js-autocomplete-adresse" name="adresse" /> 1805 </div> 1806 1807 <div class="form-group mr-3 address"> 1808 <div class="autocomplete-container"> 1809 <input id="dawa-autocomplete-input" class="form-control js-adresse" name="autocompleteAdresse" type="search" placeholder='@Translate("Smartpage:Salgsvurdering.Erhverv.Placeholder.Zip", "Adresse")*' value="" required data-message='@Translate("Smartpage:Form.Validation.Error.Adresse", "Indtast venligst en gyldig adresse")' data-is-on-broker-page='true' /> 1810 </div> 1811 </div> 1812 1813 <div class="form-group mr-3"> 1814 <input class="form-control js-navn" type="text" name="navn" placeholder='@Translate("Smartpage:Salgsvurdering.Erhverv.Placeholder.Navn", "Navn")*' value='' required data-message='@Translate("Smartpage:Form.Validation.Error.Navn", "Indtast venligst dit navn")' /> 1815 </div> 1816 1817 <div class="form-group mr-3"> 1818 <input class="form-control js-email" type="email" pattern="[_a-z0-9.%+-]+&#64;[a-z0-9.-]+.[a-z]{2,4}$" name="email" placeholder='@Translate("Smartpage:Salgsvurdering.Erhverv.Placeholder.Email", "E-mail")*' value='' required data-message='@Translate("Smartpage:Form.Validation.Error.Email", "Indtast venligst din e-mail")' /> 1819 </div> 1820 1821 <div class="form-group mr-3"> 1822 <input class="form-control js-telefonnummer" type="tel" pattern="^[0-9]*$" maxlength="20" name="telefonnummer" placeholder='@Translate("Smartpage:Salgsvurdering.Erhverv.Placeholder.Telefon", "Telefon")*' value='' required data-message='@Translate("Smartpage:Form.Validation.Error.Telefon", "Indtast venligst dit telefonnummer")' /> 1823 </div> 1824 </div> 1825 <button class="comment-button text-left js-collapse-focus" type="button" data-toggle="collapse" data-target="#salgsvurdering-collapse" aria-expanded="false" aria-controls="salgsvurdering-collapse"> 1826 <i class="icon fas fa-plus"></i><span class="text">@Translate("Smartpage:Salgsvurdering.Erhverv.Skrivenkommentar", "Tilføj kommentar til mægler")</span> 1827 </button> 1828 1829 <div class="collapse" id="salgsvurdering-collapse"> 1830 <div class="form-group"> 1831 <textarea class="form-control" name="besked" placeholder='@Translate("form-besked-max", "Skriv en besked på max 150 tegn")' maxlength="150"></textarea> 1832 </div> 1833 </div> 1834 1835 1836 <div class="form-group mt-3 mb-2"> 1837 <div class="checkbox"> 1838 <label> 1839 <input class="js-kontaktmigok" type="checkbox" name="kontaktmigok" required data-message='@Translate("Smartpage:Form.Validation.Error.Kontakt", "Afkryds dette felt så vi kan kontakte dig med salgsvurderingen")' /> 1840 <span class="consent-checkbox">@Translate("Smartpage:Salgsvurdering.Erhverv.KontaktOk", "Ja, RealMæglerne må kontakte mig. ") @Translate("Smartpage:Salgsvurdering.PrivacyPolicyText", "Ved at bestille en vurdering accepterer du vores brug af") <a class="link" href="@settings_Persondatapolitik"> @Translate("Smartpage:PrivacyPolicyText.PersonalInfo", "personlige oplysninger")</a></span> 1841 </label> 1842 </div> 1843 </div> 1844 <div class="form-group mb-0"> 1845 <button type="submit" class="btn btn-primary btn-light-blue btn-block js-buyer-advisor-button" onclick="document.getElementById('oneBrokerToChoose').click();">@Translate("form-salgsvurdering-submitbtn", "Bestil gratis salgsvurdering")</button> 1846 </div> 1847 <input type="hidden" name="fn" value="bsv" /> 1848 <input type="hidden" name="origin" class="js-salgsvurdering-origin" value="SalgsvurderingBrokerPage" /> 1849 <input type="hidden" name="brugerId" value="" /> 1850 <input type="hidden" name="areaid" value="@Pageview.AreaID" /> 1851 <input type="hidden" id="boligvisning" name="boligvisning" value="" /> 1852 <input type="hidden" id="panel-salgsvurdering-butikid" name="butikId" value="@butikId" /> 1853 <input type="hidden" id="panel-salgsvurdering-sagsnr" name="sagsnr" value="" /> 1854 <input type="hidden" name="ejendomstype" value="" /> 1855 <input type="hidden" name="salgspris" value="" /> 1856 <input type="hidden" name="employee" value="" /> 1857 <input type="hidden" name="modtager" value="" /> 1858 <input class="js-value-check" type="hidden" name="valueCheck" value="" /> 1859 <input class="js-green-appraisal" type="hidden" name="greenAppraisal" value="" /> 1860 </form> 1861 1862 </div> 1863 <div id="tak-salgsvurdering" class="salgsvurdering-confirmation" style="display:none;"> 1864 <div class="header"> 1865 @Translate("Smartpage:Form.Salgsvurdering.Erhverv.Confirmation.Header", "Tak for din interesse") 1866 </div> 1867 <div class="description"> 1868 @Translate("Smartpage:Form.Salgsvurdering.Erhverv.Confirmation.Description", "Du vil snarest blive kontaktet af en af vores medarbejdere.") 1869 </div> 1870 </div> 1871 </div> 1872 </div> 1873 </div> 1874 </div> 1875 @if (GetLoop("Real:Broker.Employees").Count > 0) 1876 { 1877 <section class="brokers"> 1878 <div class="container"> 1879 <h2 class="text-center mt-4">Medarbejdere</h2> 1880 <div class="broker-list row"> 1881 @{ 1882 foreach (var employee in GetLoop("Real:Broker.Employees")) 1883 { 1884 string employeePhone = RealMaeglerne.Library.Helper.FormatPhoneNumber(employee.GetString("PhoneMobile")); 1885 string employeeEmail = RealMaeglerne.Library.Helper.ExtractMaskedEmail(employee.GetString("Email")); 1886 string employeeImage = ""; 1887 string employeeClass = "na"; 1888 1889 employeeImage = "/Files/Templates/Designs/rm/assets/images/na-real.png"; 1890 1891 bool CanSelect = employee.GetBoolean("MyEmployee"); 1892 if (!string.IsNullOrEmpty(employee.GetString("Image"))) 1893 { 1894 employeeImage = employee.GetString("Image"); 1895 employeeClass = ""; 1896 } 1897 if (!string.IsNullOrEmpty(employee.GetString("ImageWithBackground"))) 1898 { 1899 employeeImage = employee.GetString("ImageWithBackground"); 1900 employeeClass = ""; 1901 } 1902 1903 <div class="din-maegler col-12 col-lg-6 p-50"> 1904 <div class="row h-100"> 1905 <div class="col-12 box-shadow"> 1906 <div class="row h-100"> 1907 <div class="col-12 col-sm-6"> 1908 <div class="img-wrapper @employeeClass" style="background-image:url('@employeeImage')"> 1909 </div> 1910 </div> 1911 <div class="col-12 col-md-6 py-4"> 1912 <h4>@(employee.GetValue("Name"))</h4> 1913 @if (!string.IsNullOrEmpty(employee.GetString("JobTitle"))) 1914 { 1915 <p>@employee.GetString("JobTitle")</p> 1916 } 1917 <div class="icon-container"> 1918 <i class="fas fa-envelope"></i> 1919 @if (!string.IsNullOrEmpty(employeeEmail)) 1920 { 1921 <span>Mail: <a href='mailto:@(employeeEmail)'>@(employeeEmail)</a></span> 1922 } 1923 </div> 1924 <div class="icon-container mb-2"> 1925 <i class="fas fa-phone"></i> 1926 @if (!string.IsNullOrEmpty(employeePhone)) 1927 { 1928 <span>Tlf.: <a href='tel:@(employeePhone)'>@(employeePhone)</a></span> 1929 } 1930 </div> 1931 <a class="btn btn-border blue btn-left mt-2" href="javascript:panelKontaktmaegler('@Context.Current.Session["DP"]Mæglervisning');">@Translate("Smartpage:Kontakt", "Kontakt") <i class="fal fa-angle-right"></i></a> 1932 </div> 1933 </div> 1934 </div> 1935 </div> 1936 </div> 1937 } 1938 } 1939 </div> 1940 </div> 1941 </section> 1942 } 1943 1944 <section class="maegler-bottom"> 1945 <div class="container"> 1946 <h2 class="text-center mt-4">@brokerName</h2> 1947 <div class="row"> 1948 <div class="col-12 col-lg-6"> 1949 <img class="img-fluid" src="@brokerImage" /> 1950 </div> 1951 <div class="col-12 col-lg-6"> 1952 <div class="row"> 1953 <div class="col-12"> 1954 <div class="box-shadow"> 1955 <div class="row"> 1956 @if (Aabningstider != null) 1957 { 1958 <div class="col-12"> 1959 <h3>@Translate("Smartpage:Åbningstider", "Åbningstider")</h3> 1960 </div> 1961 } 1962 <div class="col-6"> 1963 @if (Aabningstider != null) 1964 { 1965 <table> 1966 <tr> 1967 <td>@Translate("Smartpage:Mandag", "Mandag")</td> 1968 <td align="right"><b>@Aabningstider.Mandag</b></td> 1969 </tr> 1970 <tr> 1971 <td>@Translate("Smartpage:Tirsdag", "Tirsdag")</td> 1972 <td align="right"><b>@Aabningstider.Tirsdag</b></td> 1973 </tr> 1974 <tr> 1975 <td>@Translate("Smartpage:Onsdag", "Onsdag")</td> 1976 <td align="right"><b>@Aabningstider.Onsdag</b></td> 1977 </tr> 1978 <tr> 1979 <td>@Translate("Smartpage:Torsdag", "Torsdag")</td> 1980 <td align="right"><b>@Aabningstider.Torsdag</b></td> 1981 </tr> 1982 <tr> 1983 <td>@Translate("Smartpage:Fredag", "Fredag")</td> 1984 <td align="right"><b>@Aabningstider.Fredag</b></td> 1985 </tr> 1986 @if (Aabningstider.Loerdag == Aabningstider.Soendag) 1987 { 1988 <tr> 1989 <td>@Translate("Smartpage:LødagSøndag", "Lørdag - søndag")</td> 1990 <td align="right"><b>@Aabningstider.Loerdag</b></td> 1991 </tr> 1992 } 1993 else 1994 { 1995 <tr> 1996 <td>@Translate("Smartpage:Lørdag", "Lørdag")</td> 1997 <td align="right"><b>@Aabningstider.Loerdag</b></td> 1998 </tr> 1999 <tr> 2000 <td>@Translate("Smartpage:Søndag", "Søndag")</td> 2001 <td align="right"><b>@Aabningstider.Soendag</b></td> 2002 </tr> 2003 } 2004 </table> 2005 } 2006 </div> 2007 <div class="col-12 col-lg-6 text-center text-lg-left"> 2008 @if (!string.IsNullOrEmpty(Converter.ToString(Pageview.Area.Item["FacebookLink"]))) 2009 { 2010 <a href='@Pageview.Area.Item["FacebookLink"]' target="_blank"> 2011 <p class="d-inline-block d-lg-block"><i class="fab fa-facebook-f"></i> @Translate("Smartpage:SocialLinks.Facebook", "Facebook")</p> 2012 </a> 2013 } 2014 @if (!string.IsNullOrEmpty(Converter.ToString(Pageview.Area.Item["LinkedinLink"]))) 2015 { 2016 <a href='@Pageview.Area.Item["LinkedinLink"]' target="_blank"> 2017 <p class="d-inline-block d-lg-block"><i class="fab fa-linkedin-in"></i> @Translate("Smartpage:SocialLinks.LinkedIn", "LinkedIn")</p> 2018 </a> 2019 } 2020 </div> 2021 </div> 2022 </div> 2023 </div> 2024 </div> 2025 2026 <div id="myCarousel" class="carousel slide" data-ride="carousel"> 2027 <div class="carousel-inner row w-100 mx-auto no-gutters"> 2028 @{ 2029 var count = 0; 2030 var isActive = ""; 2031 } 2032 @foreach (var d in GetLoop("Item.Area.DownloadOrLink")) 2033 { 2034 if (count == 0) 2035 { 2036 isActive = "active"; 2037 } 2038 else 2039 { 2040 isActive = ""; 2041 } 2042 <div class="col-12 col-lg-6 carousel-item @isActive"> 2043 <div class="box-shadow"> 2044 <h3>@d.GetString("Item.Area.DownloadOrLink.Overskrift")</h3> 2045 2046 @if (d.GetString("Item.Area.DownloadOrLink.DownloadOrLink") == "download") 2047 { 2048 <a class="fat bounce" href='@d.GetString("Item.Area.DownloadOrLink.File")' download>@Translate("Smartpage:Download", "Download") <span class="fal fa-arrow-to-bottom"></span></a> 2049 } 2050 else 2051 { 2052 <a class="fat bounce" href='@d.GetString("Item.Area.DownloadOrLink.Link")' target="_blank">@d.GetString("Item.Area.DownloadOrLink.LinkTitel") <span class="fal fa-angle-right right"></span></a> 2053 } 2054 </div> 2055 </div> 2056 2057 count++; 2058 2059 } 2060 </div> 2061 2062 @*ONLY SHOW IF MORE THAN 2*@ 2063 <div class="d-none d-lg-block"> 2064 2065 </div> 2066 @if (count > 2) 2067 { 2068 <a class="carousel-control-prev" href="#myCarousel" role="button" data-slide="prev"> 2069 <i class="fal fa-angle-left fa-2x"></i> 2070 <i class="fa fa-circle blue fa-3x"></i> 2071 </a> 2072 <a class="carousel-control-next" href="#myCarousel" role="button" data-slide="next"> 2073 <i class="fal fa-angle-right fa-2x"></i> 2074 <i class="fa fa-circle blue fa-3x"></i> 2075 </a> 2076 } 2077 2078 <div class="d-block d-lg-none"> 2079 @if (count > 1) 2080 { 2081 <a class="carousel-control-prev" href="#myCarousel" role="button" data-slide="prev"> 2082 <i class="fal fa-angle-left fa-2x"></i> 2083 <i class="fa fa-circle blue fa-3x"></i> 2084 </a> 2085 <a class="carousel-control-next" href="#myCarousel" role="button" data-slide="next"> 2086 <i class="fal fa-angle-right fa-2x"></i> 2087 <i class="fa fa-circle blue fa-3x"></i> 2088 </a> 2089 } 2090 </div> 2091 </div> 2092 </div> 2093 </div> 2094 </div> 2095 </section> 2096 2097 <div id="panel-kontaktmaegler" class="panel panel-form"> 2098 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close"> 2099 <b></b> 2100 </button> 2101 <h2>@Translate("form-kontaktmaegler-titel", "Kontakt mægler")</h2> 2102 <p>@Translate("form-kontaktmaegler-beskrivelse", "")</p> 2103 <form id="form-kontaktmaegler" method="POST" action="/InboxHandler"> 2104 <div class="form-group"> 2105 <input class="form-control" type="text" name="navn" placeholder='@Translate("form-navn", "Navn")' value='@GetGlobalValue("Global:Extranet.Name")' required /> 2106 </div> 2107 <div class="form-group"> 2108 <input class="form-control" type="email" pattern="[_a-z0-9.%+-]+&#64;[a-z0-9.-]+.[a-z]{2,4}$" name="email" placeholder='@Translate("form-email", "E-mail")' value='@GetGlobalValue("Global:Extranet.Email")' required /> 2109 </div> 2110 <div class="form-group"> 2111 <div class="radio"> 2112 <label> 2113 <input type="radio" name="phonetype" value="fastnet" /> 2114 <span>@Translate("form-phonetype-fastnet", "Fastnet")</span> 2115 </label> 2116 <label> 2117 <input type="radio" name="phonetype" value="mobil" checked="checked" /> 2118 <span>@Translate("form-phonetype-mobil", "Mobil")</span> 2119 </label> 2120 </div> 2121 </div> 2122 <div class="form-group"> 2123 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="telefonnummer" placeholder='@Translate("form-telefonnummer", "Telefonnummer")' value='@GetGlobalValue("Global:Extranet.Phone")' required /> 2124 </div> 2125 <div class="form-group"> 2126 <textarea class="form-control" name="besked" placeholder='@Translate("form-besked-mægler", "Din besked til mægleren. F.eks ”Jeg ønsker en salgsvurdering”")'></textarea> 2127 </div> 2128 <div class="form-group"> 2129 <div class="checkbox"> 2130 <label> 2131 <input type="checkbox" name="kontaktmigok" required /> 2132 <span>@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span> 2133 </label> 2134 </div> 2135 </div> 2136 <div class="form-group"> 2137 <div class="row"> 2138 <div class="col-12"> 2139 <button type="submit" class="btn btn-primary btn-block">@Translate("form-kontaktmaegler-submitbtn", "Send")</button> 2140 </div> 2141 </div> 2142 </div> 2143 <div class="form-group form-group-terms"> 2144 * Der samles ingen personlige oplysninger uden dit udtrykkelige samtykke. 2145 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. 2146 Du kan til enhver tid tilbagekalde dit samtykke. For at gøre dette skal du blot sende en meddelelse til <a href="mailto:@termsMail">@termsMail</a>. 2147 Læs mere på <a href="@settings_Persondatapolitik">privatlivspolitikkerne</a>. 2148 </div> 2149 <input type="hidden" name="fn" value="km" /> 2150 <input type="hidden" name="origin" value="" /> 2151 <input type="hidden" name="brugerId" value="@brugerId" /> 2152 <input type="hidden" name="areaid" value="@Pageview.AreaID" /> 2153 <input type="hidden" name="butikId" value="@butikId" /> 2154 </form> 2155 <div id="tak-kontaktmaegler" style="display:none;"> 2156 <p>@Translate("form-kontaktmaegler-tak", "Tak for din interesse, vi vender tilbage hurtigst muligt.")</p> 2157 </div> 2158 </div> 2159 2160 2161 @if (MyBroker != null && MyBroker.Broker != null && MyBroker.Employee != null && GetBoolean("Item.Page.HideMyBroker.Value") != true) 2162 { 2163 string bName = MyBroker.Broker.Name; 2164 string bImage = "/Files/Templates/Designs/rm/assets/images/na-real.png"; 2165 string bClass = "na"; 2166 2167 if (!string.IsNullOrEmpty(MyBroker.Broker.CompanyName)) 2168 { 2169 bName = MyBroker.Broker.CompanyName; 2170 } 2171 try 2172 { 2173 var imageUrl = MyBroker.Employee.Item().GetString("BilledeUrl"); 2174 if (!string.IsNullOrEmpty(imageUrl)) 2175 { 2176 bImage = imageUrl; 2177 bClass = ""; 2178 } 2179 } 2180 catch 2181 { 2182 // Ignore 2183 } 2184 2185 string bAreaID = MyBroker.Broker.Item().GetString("WebsiteId"); 2186 string medlemsnummer = MyBroker.Broker.Item().GetString("CBMedlemsnummer"); 2187 <section class="din-maegler"> 2188 <div class="img-wrapper @HtmlEncoder.HtmlAttributeEncode(bClass)" style="background-image:url('@HtmlEncoder.HtmlAttributeEncode(bImage)')"></div> 2189 <div class="container"> 2190 <div class="col-12 col-sm-12 col-md-6 offset-md-6"> 2191 <h2>Din personlige mægler</h2> 2192 <div class="row"> 2193 <div class="col-12 col-sm-6"> 2194 <p> 2195 <b class="my-broker-name">@MyBroker.Employee.Name</b><br> 2196 @if (!string.IsNullOrEmpty(MyBroker.Employee.Email)) 2197 { 2198 <text>Mail: <a href="mailto:@(RealMaeglerne.Library.Helper.ExtractMaskedEmail(MyBroker.Employee.Email))" class="my-broker-email">@RealMaeglerne.Library.Helper.ExtractMaskedEmail(MyBroker.Employee.Email)</a><br></text> 2199 } 2200 @if (!string.IsNullOrEmpty(MyBroker.Employee.PhoneMobile)) 2201 { 2202 <text>Tlf.: <a href="tel:@(MyBroker.Employee.PhoneMobile)" class="my-broker-phone">@RealMaeglerne.Library.Helper.FormatPhoneNumber(MyBroker.Employee.PhoneMobile)</a></text> 2203 } 2204 else if (!string.IsNullOrEmpty(MyBroker.Broker.Telephone)) 2205 { 2206 <text>Tlf.: <a href="tel:@(MyBroker.Broker.Telephone)" class="my-broker-phone">@RealMaeglerne.Library.Helper.FormatPhoneNumber(MyBroker.Broker.Telephone)</a></text> 2207 } 2208 </p> 2209 </div> 2210 <div class="col-12 col-sm-6"> 2211 <p> 2212 <b class="my-broker-company-name">@bName</b><br> 2213 <span class="my-broker-company-address">@MyBroker.Broker.Address</span><br> 2214 <span class="my-broker-company-zip">@MyBroker.Broker.ZipCode</span> <span class="my-broker-company-city">@MyBroker.Broker.City</span><br> 2215 @if (!string.IsNullOrEmpty(bEmail)) 2216 { 2217 <text>Mail: <a href="mailto:@(bEmail)" class="my-broker-broker-email">@bEmail</a><br></text> 2218 } 2219 @if (!string.IsNullOrEmpty(MyBroker.Broker.Telephone)) 2220 { 2221 <text>Tlf.: <a href="tel:@(MyBroker.Broker.Telephone)" class="my-broker-broker-phone">@RealMaeglerne.Library.Helper.FormatPhoneNumber(MyBroker.Broker.Telephone)</a></text> 2222 } 2223 </p> 2224 </div> 2225 </div> 2226 <div class="row"> 2227 <br /> 2228 <div class="col-12 col-sm-6"> 2229 <a href="/@medlemsnummer" class="btn btn-primary btn-block my-broker-company-url">Til mæglerens side</a> 2230 </div> 2231 </div> 2232 </div> 2233 </div> 2234 </section> 2235 } 2236 2237 @if (GetGlobalValue("Global:CookieOptInLevel") != "All") 2238 { 2239 <section class="cookie-bar bar-text" id="cookieBar"> 2240 <div class="container"> 2241 <div class="row"> 2242 <div class="col-12"> 2243 <a class="close" onclick="return setOptInCookie(2);"><i class="fa fa-times"></i></a> 2244 <p>@Translate("Custom:CookieBanner.Description", "Denne hjemmeside bruger cookies til trafikmåling og optimering af indhold. Hvis du klikker videre, accepterer du vores brug af cookies.") <a href="@HtmlEncoder.HtmlAttributeEncode(settings_Persondatapolitik)">@Translate("Custom:CookieBanner.ReadMore", "Læs mere")</a></p> 2245 </div> 2246 </div> 2247 </div> 2248 </section> 2249 } 2250 2251 <footer> 2252 <div class="container"> 2253 <div class="row"> 2254 <ul id="footer-nav" class="navigation dwnavigation" settings="startlevel:1;endlevel:3;template:footerNav.xslt;expandmode:all;parenttag:footer-nav-erhverv;"></ul> 2255 @GetValue("DwNavigation(footernav)") 2256 </div> 2257 </div> 2258 </footer> 2259 2260 @if (GetInteger("DW_extranet_AccessUserID") <= 0) 2261 { 2262 <div id="panel-login" class="panel panel-form js-loginforms"> 2263 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close"> 2264 <b></b> 2265 </button> 2266 <div class="loginform login"> 2267 @if (loginParagraphId > 0) 2268 { 2269 <text> 2270 @RenderParagraphContent(loginParagraphId) 2271 </text> 2272 } 2273 </div> 2274 <div class="loginform register js-register-form-wrapper" style="display: none;"> 2275 @if (createUserParagraphId > 0) 2276 { 2277 <text> 2278 @RenderParagraphContent(createUserParagraphId) 2279 </text> 2280 } 2281 </div> 2282 @* Shared "glemt adgangskode"-form. Renders both inside #panel-login (SPmaster) and inline on the 2283 login page, so all hooks are classes - ids would collide when both are on the same page. *@ 2284 <div class="loginform forgotpw" style="display: none;"> 2285 <h2 class="forgotpw-reg">@Translate("forgot-pw-reg-title", "Glemt adgangskode")</h2> 2286 <h2 class="forgotpw-broker">@Translate("forgot-pw-broker-title", "Tilmeldt via. mægler")</h2> 2287 <form class="form-body js-forgotpw-form" method="post" action=""> 2288 <input type="hidden" name="AccessUserShopID" class="js-forgotpw-shopid" value="SHOP6" /> 2289 <p class="forgotpw-reg">@Translate("forgot-pw-reg-teaser", "Har du glemt din adgangskode? Udfyld din e-mail herunder og få tilsendt instrukser for nulstillelse/ændring af din adgangskode.")</p> 2290 <p class="forgotpw-broker">@Translate("forgot-pw-broker-teaser", "Er du blevet tilmeldt via. din mægler, men mangler adgangskode til dit login? Udfyld e-mailen du har oplyst hos mægleren og få tilsendt instrukser for nulstillelse/ændring af din adgangskode.")</p> 2291 <div class="form-group"> 2292 <input name="AccessUserEmail" type="email" pattern="[_a-z0-9.%+-]+&#64;[a-z0-9.-]+.[a-z]{2,4}$" placeholder="E-mail" class="form-control js-forgotpw-email" required /> 2293 </div> 2294 <button class="btn btn-primary btn-block" type="submit">@Translate("forgot-pw-cta", "Nulstil adgangskode")</button> 2295 <br /> 2296 <div class="js-forgotpw-message"></div> 2297 </form> 2298 2299 <hr> 2300 <button type="button" class="btn btn-default btn-block action-login">@Translate("forgot-pw-back-to-login", "Tilbage til login")</button> 2301 </div> 2302 2303 </div> 2304 } 2305 2306 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2307 @using System 2308 @using RealMaeglerne.Dynamicweb; 2309 @using RealMaeglerne.Library; 2310 @using RealMaeglerne.Library.Models; 2311 @using Dynamicweb.Content.Items; 2312 @using Dynamicweb.Core; 2313 @using System.Linq; 2314 2315 @{ 2316 string privacyPolicyText = Translate("Smartpage:PrivacyPolicyText", "* 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"); 2317 } 2318 2319 <!-- KONTAKT KØBERRAADGIVNING --> 2320 <div id="panel-kontakt-koeberraadgivning" class="panel panel-form"> 2321 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close"> 2322 <b></b> 2323 </button> 2324 <h2>@Translate("Smarptage:Guldkøber.KontaktMægler", "Kontakt Mægler")</h2> 2325 <form id="form-koeberraadgivning" method="POST" action="/InboxHandler"> 2326 <div class="form-group"> 2327 <label><strong>@Translate("form-navn", "Navn")*</strong></label> 2328 <input class="form-control" type="text" name="navn" tabindex="1" placeholder='@Translate("Smartpage:Kontakt.Placeholder.Navn", "Indtast dit navn")' value='@GetGlobalValue("Global:Extranet.Name")' required /> 2329 </div> 2330 <div class="form-group"> 2331 <label><strong>@Translate("form-email", "E-mail")*</strong></label> 2332 <input class="form-control" type="email" tabindex="2" pattern="[_a-z0-9.%+-]+&#64;[a-z0-9.-]+.[a-z]{2,4}$" name="email" placeholder='@Translate("Smartpage:Kontakt.Placeholder.Email", "Indtast din e-mail")' value='@GetGlobalValue("Global:Extranet.Email")' required /> 2333 </div> 2334 <div class="form-group row mb-4"> 2335 <div class="col-6"> 2336 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label> 2337 <input class="form-control" type="tel" pattern="^[0-9]*$" tabindex="3" maxlength="20" name="mobile" placeholder='@Translate("Smartpage:Kontakt.Placeholder.Mobile", "Indtast mobil nr.")' value='@GetGlobalValue("Global:Extranet.Phone")' required /> 2338 </div> 2339 <div class="col-6"> 2340 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label> 2341 <input class="form-control" type="tel" pattern="^[0-9]*$" tabindex="4" maxlength="20" name="telefonnummer" placeholder='@Translate("Smartpage:Kontakt.Placeholder.Telefon", "Indtast tlf nr.")' value='@GetGlobalValue("Global:Extranet.Phone")' /> 2342 </div> 2343 </div> 2344 <h3>@Translate("Smartpage:Salgsvurdering.DinBolig", "Din bolig")</h3> 2345 <div class="form-group row"> 2346 <div class="col-4"> 2347 <label><strong>@Translate("form-zip", "Post nr")*</strong></label> 2348 <input class="form-control js-postnummer" type="tel" pattern="^[0-9]*$" maxlength="4" name="postnummer" tabindex="5" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Adresse", "Post nr")' value="@userZip" required /> 2349 <input type="hidden" class="js-postnummer-validation" /> 2350 </div> 2351 <div class="col-8"> 2352 <label><strong>@Translate("form-city", "By")*</strong></label> 2353 <input class="form-control js-city" type="text" readonly /> 2354 </div> 2355 </div> 2356 <div class="form-group overflow-unset"> 2357 <label><strong>@Translate("form-adresse", "Adresse")*</strong></label> 2358 <input class="form-control js-validate-address" type="text" name="adresse" tabindex="6" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse")' required /> 2359 2360 <label class="form-validate-error js-address-error d-none" for="adresse">@Translate("Smarptage:Kontakt.Forkert adresse", "Den indtastede adresse matchede ikke en kendt dansk adresse")</label> 2361 </div> 2362 <button class="form-control text-left js-collapse-focus" type="button" data-toggle="collapse" data-target="#kontaktkoeberrradgiver-collapse" aria-expanded="false" aria-controls="kontaktkoeberrradgiver-collapse"> 2363 <strong class="f-12"><i class="fas fa-plus"></i> @Translate("Smartpage:Salgsvurdering.Skrivenkommentar", "Skriv en kommentar")</strong> 2364 </button> 2365 <div class="collapse" id="kontaktkoeberrradgiver-collapse"> 2366 <div class="form-group"> 2367 <textarea class="form-control" name="besked" placeholder='@Translate("form-besked-max", "Skriv en besked på max 150 tegn")' maxlength="150"></textarea> 2368 </div> 2369 </div> 2370 2371 <div class="form-group mt-3"> 2372 <div class="checkbox"> 2373 <label> 2374 <input type="checkbox" name="kontaktmigok" required /> 2375 <span>@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span> 2376 </label> 2377 </div> 2378 </div> 2379 <div class="form-group"> 2380 <div class="row"> 2381 <div class="col-12"> 2382 <button type="submit" class="btn btn-green btn-block">@Translate("KontaktMægler", "Kontakt Mægler")</button> 2383 </div> 2384 </div> 2385 </div> 2386 <div class="form-group form-group-terms"> 2387 @privacyPolicyText <a href="mailto:@termsMail">@termsMail</a>. 2388 Læs mere på <a href="@settings_Persondatapolitik">privatlivspolitikkerne</a>. 2389 </div> 2390 2391 <input type="hidden" name="fn" value="krk" /> 2392 <input type="hidden" name="origin" value="" /> 2393 <input type="hidden" name="brugerId" value="" /> 2394 <input type="hidden" name="areaid" value="@Pageview.AreaID" /> 2395 <input type="hidden" name="butikId" value="@butikId" /> 2396 <input type="hidden" name="ejendomstype" value="" /> 2397 <input type="hidden" name="salgspris" value="" /> 2398 <input type="hidden" name="modtager" value="" /> 2399 </form> 2400 <div id="tak-kontakt-advisor" style="display:none;"> 2401 <h2>@Translate("TakForDinInteresse", "Tak for din interesse")</h2> 2402 <div class="row"> 2403 <div class="col-6"> 2404 <img src="" class="img-fluid js-maegler-img" /> 2405 </div> 2406 <div class="col-6"> 2407 <p class="js-maegler-name"></p> 2408 <p class="js-maegler-address"></p> 2409 <p class="js-maegler-phone"></p> 2410 <p class="js-maegler-mail"></p> 2411 </div> 2412 </div> 2413 <p>@Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt")</p> 2414 </div> 2415 </div> 2416 2417 <!--ÅBENT HUS--> 2418 <div id="panel-aabenthus" class="panel panel-form"> 2419 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close"> 2420 <b></b> 2421 </button> 2422 2423 <form id="form-aabenthus" method="POST" action="/InboxHandler"> 2424 <h2>@Translate("Smarptage:Aabenthus.TilmeldTilÅbenthus", "Tilmeld til åbent hus")</h2> 2425 @{ 2426 string sagsnr = Dynamicweb.Context.Current.Request["ProductId"]; 2427 var product = Dynamicweb.Ecommerce.Services.Products.GetProductById(sagsnr, string.Empty, true); 2428 if (product != null) 2429 { 2430 var boligManager = new BoligManager(Pageview); 2431 Bolig bolig = boligManager.CreateBolig(product, true); 2432 var kommendeAabnehuse = boligManager.KommendeAabnehuse(bolig).Take(3); 2433 2434 if (kommendeAabnehuse.Count() > 0) 2435 { 2436 <div> 2437 <div class="open-house-dates"> 2438 @foreach (var openHouse in kommendeAabnehuse) 2439 { 2440 <label class="open-house-dates__date"> 2441 @openHouse.DatoClean 2442 <input class="js-aabenthus-date-select hidden" type="radio" name="AabenthusDato" value="@openHouse.Dag @openHouse.DatoFormateret" data-time="@openHouse.Tidspunkt" data-house-id="@openHouse.Id" /> 2443 </label> 2444 } 2445 </div> 2446 @foreach (var openHouse in kommendeAabnehuse) 2447 { 2448 <div id="@openHouse.Id" class="open-house-times"> 2449 @if (openHouse.VisInterval && openHouse.Tilmelding) 2450 { 2451 int counter = 0; 2452 foreach (var interval in openHouse.TidsIntervallerFormateret) 2453 { 2454 <div><input class="js-aabenthus-time-select time-radio" type="radio" name="AabenthusTid" value="@interval" checked="@(counter == 0)" /><span>@interval.Substring(3)</span></div> 2455 counter++; 2456 } 2457 2458 } 2459 2460 @if (!openHouse.Tilmelding) 2461 { 2462 <div class="js-open-house-no-signup open-house-no-signup"> 2463 @Translate("Smartpage:Aabenthus.IngenTilmelding", "Ingen tilmelding påkrævet") 2464 </div> 2465 } 2466 </div> 2467 } 2468 </div> 2469 } 2470 } 2471 } 2472 2473 <div class="d-block"> 2474 <strong>@Translate("Smarptage:Adresse", "Adresse:")</strong> <label class="js-aabenthus-address mb-0"></label> 2475 </div> 2476 <div class="d-block"> 2477 <strong>@Translate("Smarptage:Date", "Dato:")</strong> <label class="js-aabenthus-date mb-0"></label> 2478 </div> 2479 <div class="d-block mb-4"> 2480 <strong>@Translate("Smarptage:Time", "Tidspunkt:")</strong> <label class="js-aabenthus-time mb-0"></label> 2481 </div> 2482 <div class="js-open-house-signup open-house-signup"> 2483 <h3>@Translate("Smartpage:Aabenthus.DineKontaktoplysning", "Dine kontaktoplysninger")</h3> 2484 <div class="form-group"> 2485 <label for="aabenthus-name"><strong>@Translate("form-navn", "Navn")*</strong></label> 2486 <input class="form-control" type="text" name="navn" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Navn", "Indtast dit navn")' value='@GetGlobalValue("Global:Extranet.Name")' required /> 2487 </div> 2488 <div class="form-group"> 2489 <label><strong>@Translate("form-email", "E-mail")*</strong></label> 2490 <input class="form-control" type="email" pattern="[_a-z0-9.%+-]+&#64;[a-z0-9.-]+.[a-z]{2,4}$" name="email" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Email", "Indtast din e-mail")' value='@GetGlobalValue("Global:Extranet.Email")' required /> 2491 </div> 2492 <div class="form-group row"> 2493 <div class="col-6"> 2494 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label> 2495 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="mobile" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Mobile", "Indtast mobil nr.")' value='@GetGlobalValue("Global:Extranet.Phone")' required /> 2496 </div> 2497 <div class="col-6"> 2498 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label> 2499 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="telefonnummer" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Telefon", "Indtast tlf nr.")' value='@GetGlobalValue("Global:Extranet.Phone")' /> 2500 </div> 2501 2502 </div> 2503 <div class="form-group"> 2504 <div class="checkbox"> 2505 <label> 2506 <input type="checkbox" name="kontaktmigok" required /> 2507 <span class="base-color">@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span> 2508 </label> 2509 </div> 2510 </div> 2511 <div class="form-group"> 2512 <div class="row"> 2513 <div class="col-12"> 2514 <button type="submit" class="btn btn-block btn-green">@Translate("Smartpage:Aabenthus.TilmeldKnap", "Tilmeld åbent hus")</button> 2515 </div> 2516 </div> 2517 </div> 2518 <div class="form-group"> 2519 @String.Format(Translate("Smartpage:Panel.Accept", "Du accepterer samtidig vores {0} og giver samtykke til, at dine data samles og behandles af RealMæglerne A/S for at kunne kontakte dig"), "<a href='" + settings_Persondatapolitik + "'>privatlivspolitikkerne</a>") 2520 2521 </div> 2522 </div> 2523 <input type="hidden" name="fn" value="ah" /> 2524 <input type="hidden" name="origin" value="" /> 2525 <input type="hidden" name="brugerId" value="@userID" /> 2526 <input type="hidden" name="areaid" value="@Pageview.AreaID" /> 2527 <input type="hidden" name="butikId" value="@butikId" /> 2528 <input type="hidden" name="sagsaddresse" value="" class="js-aabenthus-address-input" /> 2529 <input type="hidden" name="ejendomstype" value="" /> 2530 <input type="hidden" name="salgspris" value="" /> 2531 <input type="hidden" name="modtager" value="" /> 2532 <input type="hidden" name="employee" value="" /> 2533 <input type="hidden" name="sagsnr" value="" class="js-sagsnr" /> 2534 <input type="hidden" name="productId" value="@Dynamicweb.Context.Current.Request["ProductId"]" /> 2535 <input type="hidden" name="aftaleid" value="" class="js-aftaleid" /> 2536 2537 <input type="hidden" name="dateMail" class="js-aabenthus-date-input" /> 2538 <input type="hidden" name="timeMail" class="js-aabenthus-time-input" /> 2539 <input type="hidden" name="visintervaller" class="js-aabenthus-showinterval-input" /> 2540 <input type="hidden" name="brokerImageMail" class="property-broker-image-input" /> 2541 <input type="hidden" name="employeeNameMail" class="js-maegler-employee-name-input" /> 2542 <input type="hidden" name="employeeTitleMail" class="js-maegler-employee-title-input" /> 2543 <input type="hidden" name="employeeMailMail" class="js-maegler-mail-input" /> 2544 <input type="hidden" name="employeeMobileMail" class="js-maegler-mobile-input" /> 2545 <input type="hidden" name="employeePhoneMail" class="js-maegler-phone-input" /> 2546 2547 <input type="hidden" name="brokerNameMail" class="js-broker-name-input" /> 2548 <input type="hidden" name="brokerAddressMail" class="js-broker-address-input" /> 2549 <input type="hidden" name="brokerPhoneMail" class="js-broker-phone-input" /> 2550 <input type="hidden" name="greenmobility" class="js-green-mobility" /> 2551 </form> 2552 <div id="tak-aabenthus" style="display:none;"> 2553 <h2>@Translate("Smarptage:Aabenthus.TakForTilmelding", "Tak for din tilmelding til åbent hus!")</h2> 2554 <div class="d-block"> 2555 <strong>@Translate("Smarptage:Adresse", "Adresse:")</strong> <label class="js-aabenthus-address mb-0"></label> 2556 </div> 2557 <div class="d-block"> 2558 <strong>@Translate("Smarptage:Date", "Dato:")</strong> <label class="js-aabenthus-date mb-0"></label> 2559 2560 </div> 2561 <div class="d-block mb-4"> 2562 <strong>@Translate("Smarptage:Time", "Tidspunkt:")</strong> <label class="js-aabenthus-time mb-0"></label> 2563 2564 </div> 2565 <div class="js-employee"> 2566 <p>@String.Format(Translate("Smartpage:Aabenthus.Tak", "Vi glæder os til at vise dig boligen. Har du spørgsmål inden vi ses, kan du kontakte {0} fra RealMæglerne"), "<b class='js-aabenthus-employee-name'></b>")</p> 2567 </div> 2568 <div class="js-not-employee"> 2569 <p>@Translate("Smartpage:Aabenthus.Tak.NoEmployee", "Vi glæder os til at vise dig boligen. Har du spørgsmål inden vi ses, er du velkommen til at kontakte os")</p> 2570 </div> 2571 <div class="row"> 2572 <div class="js-employee"> 2573 <div class="col-12 js-maegler-img aabenthus-image"> 2574 <div class="property-broker-image" style=""></div> 2575 2576 </div> 2577 </div> 2578 <div class="col-12"> 2579 <div class="bg-base"> 2580 2581 <div class="js-employee"> 2582 <h4 class="js-maegler-employee-name"></h4> 2583 <div class="icon-container"> 2584 <i class="fas fa-envelope"></i> <span class="js-maegler-mail"></span> 2585 </div> 2586 <div class="icon-container"> 2587 <i class="fas fa-phone"></i> <span class="js-maegler-mobile"></span> 2588 </div> 2589 </div> 2590 2591 2592 <h4 class="js-maegler-name"></h4> 2593 <div class="icon-container"> 2594 <i class="fas fa-map-marker-alt"></i> <span class="js-maegler-address"></span> 2595 </div> 2596 <div class="icon-container"> 2597 <i class="fas fa-phone"></i> <span class="js-maegler-phone"></span> 2598 2599 </div> 2600 <a class="btn btn-border" onclick="panelKontaktmaeglerGuldkoeber()">KONTAKT MÆGLER</a> 2601 </div> 2602 </div> 2603 </div> 2604 </div> 2605 </div> 2606 2607 <!-- KONTAKT GULDKØBER --> 2608 <div id="panel-kontakt-guldkoeber" class="panel panel-form"> 2609 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close"> 2610 <b></b> 2611 </button> 2612 <h2>@Translate("Smarptage:Guldkøber.KontaktMægler", "Kontakt Mægler")</h2> 2613 <form id="form-kontaktmaegler" method="POST" action="/InboxHandler"> 2614 <div class="form-group"> 2615 <label><strong>@Translate("form-navn", "Navn")*</strong></label> 2616 <input class="form-control" type="text" name="navn" placeholder='@Translate("form-navn", "Navn")' value='@GetGlobalValue("Global:Extranet.Name")' required /> 2617 </div> 2618 <div class="form-group"> 2619 <label><strong>@Translate("form-email", "E-mail")*</strong></label> 2620 <input class="form-control" type="email" pattern="[_a-z0-9.%+-]+&#64;[a-z0-9.-]+.[a-z]{2,4}$" name="email" placeholder='@Translate("form-email", "E-mail")' value='@GetGlobalValue("Global:Extranet.Email")' required /> 2621 </div> 2622 <div class="form-group row mb-4"> 2623 <div class="col-6"> 2624 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label> 2625 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="mobile" placeholder='@Translate("Smartpage:Kontakt.Placeholder.Mobile", "Indtast mobil nr.")' value='@GetGlobalValue("Global:Extranet.Phone")' required /> 2626 </div> 2627 <div class="col-6"> 2628 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label> 2629 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="telefonnummer" placeholder='@Translate("Smartpage:Kontakt.Placeholder.Telefon", "Indtast tlf nr.")' value='@GetGlobalValue("Global:Extranet.Phone")' /> 2630 </div> 2631 </div> 2632 <div class="form-group row"> 2633 <div class="col-4"> 2634 <label><strong>@Translate("form-zip", "Post nr")*</strong></label> 2635 <input class="form-control js-postnummer" type="tel" pattern="^[0-9]*$" maxlength="4" name="postnummer" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Adresse", "Post nr")' value="@userZip" required /> 2636 <input type="hidden" class="js-postnummer-validation" /> 2637 </div> 2638 <div class="col-8"> 2639 <label><strong>@Translate("form-city", "By")*</strong></label> 2640 <input class="form-control js-city" type="text" readonly /> 2641 </div> 2642 </div> 2643 2644 <div class="form-group overflow-unset"> 2645 <label><strong>@Translate("form-adresse", "Adresse")*</strong></label> 2646 <input class="form-control js-validate-address" type="text" name="adresse" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse")' value="@userAddress" required /> 2647 <label class="form-validate-error js-address-error d-none" for="adresse">@Translate("Smarptage:Kontakt.Forkert adresse", "Den indtastede adresse matchede ikke en kendt dansk adresse")</label> 2648 </div> 2649 <div class="form-group"> 2650 <textarea class="form-control" name="besked" placeholder='@Translate("form-besked-max", "Skriv en besked på max 150 tegn")' maxlength="150"></textarea> 2651 </div> 2652 <div class="form-group"> 2653 <div class="checkbox"> 2654 <label> 2655 <input type="checkbox" name="kontaktmigok" required /> 2656 <span>@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span> 2657 </label> 2658 </div> 2659 </div> 2660 <div class="form-group"> 2661 <div class="row"> 2662 <div class="col-12"> 2663 <button type="submit" class="btn btn-green btn-block">@Translate("KontaktMægler", "Kontakt Mægler")</button> 2664 </div> 2665 </div> 2666 </div> 2667 <div class="form-group form-group-terms"> 2668 @privacyPolicyText <a href="mailto:@termsMail">@termsMail</a>. 2669 Læs mere på <a href="@settings_Persondatapolitik">privatlivspolitikkerne</a>. 2670 </div> 2671 <input type="hidden" name="fn" value="gk" /> 2672 <input type="hidden" name="origin" value="" /> 2673 <input type="hidden" name="brugerId" value="@userID" /> 2674 <input type="hidden" name="areaid" value="@Pageview.AreaID" /> 2675 <input type="hidden" name="butikId" value="@butikId" /> 2676 <input type="hidden" name="ejendomstype" value="" /> 2677 <input type="hidden" name="salgspris" value="" /> 2678 <input type="hidden" name="modtager" value="" /> 2679 <input type="hidden" name="employee" value="" /> 2680 </form> 2681 <div id="tak-kontakt-maegler-guldkoeber" style="display:none;"> 2682 <h2>@Translate("TakForDinInteresse", "Tak for din interesse")</h2> 2683 <p>@Translate("Smartpage:FormKontaktGuld.Subheader", "Vi har sendt din forespørgsel om guldkøbere til:")</p> 2684 <div class="row"> 2685 <div class="col-6"> 2686 <img src="" class="img-fluid js-maegler-img" /> 2687 </div> 2688 <div class="col-6"> 2689 <p class="js-maegler-name"></p> 2690 <p class="js-maegler-address"></p> 2691 <p class="js-maegler-phone"></p> 2692 <p class="js-maegler-mail"></p> 2693 </div> 2694 </div> 2695 <p>@Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt")</p> 2696 </div> 2697 </div> 2698 2699 <!-- BESTIL SALGSVURDERING --> 2700 <div id="panel-salgsvurdering" class="panel panel-form"> 2701 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close"> 2702 <b></b> 2703 </button> 2704 2705 <form id="bestil-salgsvurdering" class="buyer-advisor-form js-buyer-advisor-form" method="POST" action="/InboxHandler"> 2706 <h2 class="js-buyer-advisor-header">@Translate("form-salgsvurdering-titel", "Bestil gratis salgsvurdering")</h2> 2707 <p>@Translate("form-salgsvurdering-beskrivelse", "")</p> 2708 <div class="form-group"> 2709 <label><strong>@Translate("form-navn", "Navn")*</strong></label> 2710 <input class="form-control" type="text" name="navn" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Navn", "Indtast dit navn")' value='@GetGlobalValue("Global:Extranet.Name")' required /> 2711 </div> 2712 <div class="form-group"> 2713 <label><strong>@Translate("form-email", "E-mail")*</strong></label> 2714 <input class="form-control" type="email" pattern="[_a-z0-9.%+-]+&#64;[a-z0-9.-]+.[a-z]{2,4}$" name="email" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Email", "Indtast din e-mail")' value='@GetGlobalValue("Global:Extranet.Email")' required /> 2715 </div> 2716 <div class="form-group row mb-4"> 2717 <div class="col-6"> 2718 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label> 2719 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="mobile" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Mobile", "Indtast mobil nr.")' value='@GetGlobalValue("Global:Extranet.Phone")' required /> 2720 </div> 2721 <div class="col-6"> 2722 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label> 2723 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="telefonnummer" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Telefon", "Indtast tlf nr.")' value='@GetGlobalValue("Global:Extranet.Phone")' /> 2724 </div> 2725 2726 </div> 2727 2728 @{ 2729 // isErhverv comes from master template 2730 bool pageIsErhverv = isErhverv || Converter.ToBoolean(Pageview.Area.Item["IsErhverv"]); 2731 string yourPropertyHeader = pageIsErhverv ? Translate("Smartpage:Salgsvurdering.DinEjendom", "Din ejendom") : Translate("Smartpage:Salgsvurdering.DinBolig", "Din bolig"); 2732 // If user is on broker page already then don't suggest alternative broker 2733 bool isOnBrokerPage = !string.IsNullOrEmpty(butikId); 2734 } 2735 2736 <h3>@yourPropertyHeader</h3> 2737 <div class="form-group row"> 2738 <div class="col-4"> 2739 <label><strong>@Translate("form-zip", "Post nr")*</strong></label> 2740 @{ 2741 string primaryAreaEncoded = Dynamicweb.Core.Encoders.HtmlEncoder.HtmlEncode(primaryArea); 2742 <input class="form-control js-postnummer js-updatebroker-list" data-is-on-broker-page="@isOnBrokerPage" data-primary-area="@primaryAreaEncoded" type="tel" pattern="^[0-9]*$" maxlength="4" name="postnummer" placeholder="@Translate("Smartpage:Aabenthus.Placeholder.Adresse", "Post nr")" value="@userZip" required /> 2743 <input type="hidden" class="js-postnummer-validation" /> 2744 } 2745 </div> 2746 <div class="col-8"> 2747 <label><strong>@Translate("form-city", "By")*</strong></label> 2748 <input class="form-control js-city" type="text" readonly /> 2749 </div> 2750 </div> 2751 <div class="form-group overflow-unset"> 2752 <label><strong>@Translate("form-adresse", "Adresse")*</strong></label> 2753 <input class="form-control js-validate-address" type="text" name="adresse" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse")' value="@userAddress" required /> 2754 <label class="form-validate-error js-address-error d-none" for="adresse">@Translate("Smarptage:Kontakt.Forkert adresse", "Den indtastede adresse matchede ikke en kendt dansk adresse")</label> 2755 </div> 2756 2757 <button class="form-control text-left js-collapse-focus" type="button" data-toggle="collapse" data-target="#salgsvurdering-collapse" aria-expanded="false" aria-controls="salgsvurdering-collapse"> 2758 <strong class="f-12"><i class="fas fa-plus"></i> @Translate("Smartpage:Salgsvurdering.Skrivenkommentar", "Skriv en kommentar")</strong> 2759 </button> 2760 <div class="collapse" id="salgsvurdering-collapse"> 2761 <div class="form-group"> 2762 <textarea class="form-control" name="besked" placeholder='@Translate("form-besked-max", "Skriv en besked på max 150 tegn")' maxlength="150"></textarea> 2763 </div> 2764 </div> 2765 2766 <div class="salgsvurdering-precheck"> 2767 <h3>@Translate("Smartpage:Salgsvurdering.SendSalgsvurderingTil", "Send salgsvurdering til:")</h3> 2768 <div class="col-12"> 2769 <div class="choose-broker row align-items-center active"> 2770 <div class="col-2"> 2771 <input class="js-broker-radio" type="radio" id="" name="choose-broker" value="" checked> 2772 <label class="js-broker-label" for=""></label><div class="check"> 2773 <div class="inside"> 2774 </div> 2775 </div> 2776 </div> 2777 <div class="col-4"> 2778 <img src="" class="img-fluid js-broker-image"> 2779 </div> 2780 <div class="col-6"> 2781 <span class="d-block"> 2782 <strong class="js-choose-broker-name"></strong> 2783 </span> 2784 <span class="js-choose-broker-address"></span> 2785 <input type="hidden" class="js-choose-broker-phone" value="" /> 2786 <input type="hidden" class="js-choose-broker-email" value="" /> 2787 </div> 2788 </div> 2789 </div> 2790 </div> 2791 <div class="salgsvurdering-broker"> 2792 <h3 class="js-brokerh3">@Translate("Smartpage:Salgsvurdering.VælgMægler", "Vælg mægler")</h3> 2793 <div class="js-choose-broker col-12"> 2794 </div> 2795 2796 </div> 2797 <div class="form-group mt-4"> 2798 <div class="checkbox"> 2799 <label> 2800 <input type="checkbox" name="kontaktmigok" required /> 2801 <span class="consent-checkbox">@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span> 2802 </label> 2803 </div> 2804 </div> 2805 <div class="form-group"> 2806 <div class="row"> 2807 <div class="col-12"> 2808 <button type="submit" class="btn btn-green btn-block js-buyer-advisor-button" onclick="document.getElementById('oneBrokerToChoose').click();">@Translate("form-salgsvurdering-submitbtn", "Bestil gratis salgsvurdering")</button> 2809 </div> 2810 </div> 2811 </div> 2812 <div class="form-group form-group-terms"> 2813 @privacyPolicyText <a href="mailto:@termsMail">@termsMail</a>. 2814 Læs mere på <a href="@settings_Persondatapolitik">privatlivspolitikkerne</a>. 2815 </div> 2816 <input type="hidden" name="fn" value="bsv" /> 2817 <input type="hidden" name="origin" class="js-salgsvurdering-origin" value="" /> 2818 <input type="hidden" name="brugerId" value="@userID" /> 2819 <input type="hidden" name="areaid" value="@Pageview.AreaID" /> 2820 <input type="hidden" id="boligvisning" name="boligvisning" value="" /> 2821 <input type="hidden" id="panel-salgsvurdering-butikid" name="butikId" value="" /> 2822 <input type="hidden" id="panel-salgsvurdering-sagsnr" name="sagsnr" value="" /> 2823 <input type="hidden" name="productId" value="@Dynamicweb.Context.Current.Request["ProductId"]" /> 2824 <input type="hidden" name="ejendomstype" value="" /> 2825 <input type="hidden" name="salgspris" value="" /> 2826 <input type="hidden" name="employee" value="" /> 2827 <input type="hidden" name="modtager" value="" /> 2828 <input class="js-value-check" type="hidden" name="valueCheck" value="" /> 2829 <input class="js-green-appraisal" type="hidden" name="greenAppraisal" value="" /> 2830 </form> 2831 <div id="tak-salgsvurdering" style="display:none;"> 2832 <h2>@Translate("TakForDinInteresse", "Tak for din interesse")</h2> 2833 <p>@Translate("Smartpage:FormSalgsvurdering.Subheader", "Vi har sendt din bestilling af gratis salgsvurdering til:")</p> 2834 <div class="row"> 2835 <div class="col-6"> 2836 <img src="" class="img-fluid js-maegler-img" /> 2837 </div> 2838 <div class="col-6"> 2839 <p class="js-maegler-name"></p> 2840 <p class="js-maegler-address"></p> 2841 <p class="js-maegler-phone"></p> 2842 <p class="js-maegler-mail"></p> 2843 </div> 2844 </div> 2845 <p>@Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt")</p> 2846 </div> 2847 </div> 2848 2849 <!-- BESTIL SALGSVURDERING GULDKØBER --> 2850 <div id="panel-salgsvurdering-guldkoeber" class="panel panel-form"> 2851 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close"> 2852 <b></b> 2853 </button> 2854 2855 <form id="bestil-salgsvurdering-guldkoeber" method="POST" action="/InboxHandler"> 2856 <h2>@Translate("form-salgsvurdering-titel", "Bestil gratis salgsvurdering")</h2> 2857 <p>@Translate("form-salgsvurdering-beskrivelse", "")</p> 2858 <div class="form-group"> 2859 <label><strong>@Translate("form-navn", "Navn")*</strong></label> 2860 <input class="form-control" type="text" name="navn" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Navn", "Indtast dit navn")' value='@GetGlobalValue("Global:Extranet.Name")' required /> 2861 </div> 2862 <div class="form-group"> 2863 <label><strong>@Translate("form-email", "E-mail")*</strong></label> 2864 <input class="form-control" type="email" pattern="[_a-z0-9.%+-]+&#64;[a-z0-9.-]+.[a-z]{2,4}$" name="email" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Email", "Indtast din e-mail")' value='@GetGlobalValue("Global:Extranet.Email")' required /> 2865 </div> 2866 <div class="form-group row mb-4"> 2867 <div class="col-6"> 2868 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label> 2869 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="telefonnummer" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Telefon", "Indtast tlf nr.")' value='@GetGlobalValue("Global:Extranet.Phone")' /> 2870 </div> 2871 <div class="col-6"> 2872 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label> 2873 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="mobile" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Mobile", "Indtast mobil nr.")' value='@GetGlobalValue("Global:Extranet.Phone")' required /> 2874 </div> 2875 </div> 2876 2877 <h3>@Translate("Smartpage:Salgsvurdering.DinBolig", "Din bolig")</h3> 2878 2879 <div class="form-group row"> 2880 <div class="col-4"> 2881 <label><strong>@Translate("form-zip", "Post nr")*</strong></label> 2882 <input class="form-control js-postnummer js-updatebroker-list" type="tel" pattern="^[0-9]*$" maxlength="4" name="postnummer" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Adresse", "Post nr")' value="@userZip" required /> 2883 <input type="hidden" class="js-postnummer-validation" /> 2884 </div> 2885 <div class="col-8"> 2886 <label><strong>@Translate("form-city", "By")*</strong></label> 2887 <input class="form-control js-city" type="text" readonly /> 2888 </div> 2889 </div> 2890 <div class="form-group overflow-unset"> 2891 <label><strong>@Translate("form-adresse", "Adresse")*</strong></label> 2892 <input class="form-control js-validate-address" type="text" name="adresse" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse")' value="@userAddress" required /> 2893 <label class="form-validate-error js-address-error d-none" for="adresse">@Translate("Smarptage:Kontakt.Forkert adresse", "Den indtastede adresse matchede ikke en kendt dansk adresse")</label> 2894 </div> 2895 2896 <button class="form-control text-left js-collapse-focus" type="button" data-toggle="collapse" data-target="#salgsvurdering-collapse" aria-expanded="false" aria-controls="salgsvurdering-collapse"> 2897 <strong class="f-12"><i class="fas fa-plus"></i> @Translate("Smartpage:Salgsvurdering.Skrivenkommentar", "Skriv en kommentar")</strong> 2898 </button> 2899 <div class="collapse" id="salgsvurdering-collapse"> 2900 <div class="form-group"> 2901 <textarea class="form-control" name="besked" placeholder='@Translate("form-besked-max", "Skriv en besked på max 150 tegn")' maxlength="150"></textarea> 2902 </div> 2903 </div> 2904 <div class="salgsvurdering-precheck"> 2905 <h3>@Translate("Smartpage:Salgsvurdering.SendSalgsvurderingTil", "Send salgsvurdering til:")</h3> 2906 <div class="col-12"> 2907 <div class="choose-broker row align-items-center active"> 2908 <div class="col-2"> 2909 <input class="js-broker-radio" type="radio" id="" name="choose-broker-gk" value="" checked> 2910 <label class="js-broker-label" for=""></label><div class="check"> 2911 <div class="inside"> 2912 </div> 2913 </div> 2914 </div> 2915 <div class="col-4"> 2916 <img src="" class="img-fluid js-broker-image"> 2917 </div> 2918 <div class="col-6"> 2919 <span class="d-block"> 2920 <strong class="js-choose-broker-name"></strong> 2921 </span> 2922 <span class="js-choose-broker-address"></span> 2923 <input type="hidden" class="js-choose-broker-phone" value="" /> 2924 <input type="hidden" class="js-choose-broker-email" value="" /> 2925 </div> 2926 </div> 2927 </div> 2928 </div> 2929 <div class="salgsvurdering-broker"> 2930 <h3 class="js-brokerh3">@Translate("Smartpage:Salgsvurdering.VælgMægler", "Vælg mægler")</h3> 2931 <div class="js-choose-broker col-12"> 2932 </div> 2933 2934 </div> 2935 2936 <div class="form-group"> 2937 <div class="checkbox"> 2938 <label> 2939 <input type="checkbox" name="kontaktmigok" required /> 2940 <span>@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span> 2941 </label> 2942 </div> 2943 </div> 2944 <div class="form-group"> 2945 <div class="row"> 2946 <div class="col-12"> 2947 <button type="submit" class="btn btn-green btn-block">@Translate("form-salgsvurdering-submitbtn", "Bestil gratis salgsvurdering")</button> 2948 </div> 2949 </div> 2950 </div> 2951 <div class="form-group form-group-terms"> 2952 @privacyPolicyText <a href="mailto:@termsMail">@termsMail</a>. 2953 Læs mere på <a href="@settings_Persondatapolitik">privatlivspolitikkerne</a>. 2954 </div> 2955 <input type="hidden" name="fn" value="bsg" /> 2956 <input type="hidden" name="origin" class="js-salgsvurdering-origin" value="" /> 2957 <input type="hidden" name="brugerId" value="@userID" /> 2958 <input type="hidden" name="areaid" value="@Pageview.AreaID" /> 2959 <input type="hidden" id="boligvisning-gk" name="boligvisning" value="" /> 2960 <input type="hidden" id="panel-salgsvurdering-gk-butikid" name="butikId" value="" /> 2961 <input type="hidden" id="panel-salgsvurdering-gk-sagsnr" name="sagsnr" value="" /> 2962 <input type="hidden" name="productId" value="@Dynamicweb.Context.Current.Request["ProductId"]" /> 2963 <input type="hidden" name="ejendomstype" value="" /> 2964 <input type="hidden" name="salgspris" value="" /> 2965 <input type="hidden" name="employee" value="" /> 2966 <input type="hidden" name="modtager" value="" /> 2967 </form> 2968 <div id="tak-salgsvurdering" style="display:none;"> 2969 <h2>@Translate("TakForDinInteresse", "Tak for din interesse")</h2> 2970 <p>@Translate("Smartpage:FormSalgsvurdering.Subheader", "Vi har sendt din bestilling af gratis salgsvurdering til:")</p> 2971 <div class="row"> 2972 <div class="col-6"> 2973 <img src="" class="img-fluid js-maegler-img" /> 2974 </div> 2975 <div class="col-6"> 2976 <p class="js-maegler-name"></p> 2977 <p class="js-maegler-address"></p> 2978 <p class="js-maegler-phone"></p> 2979 <p class="js-maegler-mail"></p> 2980 </div> 2981 </div> 2982 <p>@Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt")</p> 2983 </div> 2984 </div> 2985 2986 @using Dynamicweb.Core; 2987 @using Dynamicweb.Core.Encoders; 2988 2989 @{ 2990 var areaItem = Pageview.Area.Item; 2991 bool turnstileDisabled = areaItem != null 2992 && areaItem.ContainsKey("DisableTurnstile") 2993 && Converter.ToBoolean(areaItem["DisableTurnstile"]); 2994 bool turnstileEnabled = !turnstileDisabled && RealMaeglerne.Dynamicweb.Config.IsTurnstileConfigured(); 2995 } 2996 2997 @if (turnstileEnabled) 2998 { 2999 string turnstileSiteKey = RealMaeglerne.Dynamicweb.Config.GetTurnstileSiteKey(); 3000 string turnstileAreaId = Converter.ToString(Pageview.Area.ID); 3001 string turnstileLanguage = Pageview.Area.CultureInfo.Name; 3002 3003 <div class="js-turnstile-configuration d-none" 3004 data-site-key="@HtmlEncoder.HtmlAttributeEncode(turnstileSiteKey)" 3005 data-area-id="@HtmlEncoder.HtmlAttributeEncode(turnstileAreaId)"> 3006 <input type="hidden" 3007 class="js-turnstile-language" 3008 value="@HtmlEncoder.HtmlAttributeEncode(turnstileLanguage)" /> 3009 <input type="hidden" 3010 class="js-turnstile-validation-message-text" 3011 value="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Turnstile.ValidationMessage", "Bekræft venligst, at du ikke er en robot."))" /> 3012 </div> 3013 } 3014 3015 3016 <div class="overlay-wrapper"></div> 3017 <div class="dropdown-overlay"></div> 3018 <div class="loader-inner ball-pulse"></div> 3019 <script type="text/javascript" src='@(TemplateUrl)assets/webpack/js/3rdparty/viamapstrap.js'></script> 3020 @{ 3021 var bundleFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/dist/bundle.app.min.js")); 3022 } 3023 <script type="text/javascript" src='@(TemplateUrl)assets/dist/bundle.app.min.js?@bundleFileInfo.LastWriteTime.Ticks'></script> 3024 3025 @RenderSnippet("JavaScriptBottom") 3026 3027 @if (Pageview.ID == boligsideId && !string.IsNullOrEmpty(settings_RealEquityApplicationId) && Guid.TryParse(settings_RealEquityApplicationId, out _)) 3028 { 3029 var realEquityQuery = HtmlEncoder.UrlEncode(settings_RealEquityApplicationId, System.Text.Encoding.Default); 3030 <script src="@HtmlEncoder.HtmlAttributeEncode($"https://api.prod.realequity.dk/api/tracking-script?id={realEquityQuery}")"></script> 3031 } 3032 3033 @if (Context.Current.Request.QueryString["ShowLogin"] == "true") 3034 { 3035 <input class="js-showLogin" value="true" /> 3036 } 3037 @if (!string.IsNullOrWhiteSpace(GetString("DW_extranet_error_uk"))) 3038 { 3039 <input class="js-DWError" value="true" /> 3040 <input class="js-DWErrorVal" value="@GetString("DW_extranet_error_dk")" /> 3041 } 3042 </body> 3043 </html> 3044