Error executing template "Designs/rm/SPfindbroker.cshtml"
System.IO.IOException: Mappenavnet er ugyldigt. : 'C:\Dynamicweb.net\Solutions\Realmaeglerne-DW10\wwwroot-b\wwwroot\System\Real\Broker_Search\데이트대행천안출장만남【kakaotalk:za32】모든 요구 사항 충족'
   at System.IO.FileSystem.CreateDirectory(String fullPath, Byte[] securityDescriptor)
   at Custom.Integration.Brokers.FileManager.Set(Boolean CountFirst) in D:\a\1\s\Custom.Import.Broker\FileManager.cs:line 178
   at Custom.Integration.Brokers.Rotation.Rotate[T](IEnumerable`1 IL, Func`2 matchFunc, String Function, String Action) in D:\a\1\s\Custom.Import.Broker\Rotation.cs:line 57
   at Custom.Integration.Brokers.Search.Broker(String query, Boolean BoligOne) in D:\a\1\s\Custom.Import.Broker\Search.cs:line 320
   at CompiledRazorTemplates.Dynamic.RazorEngine_78e8cbe862a74d79939af7fbe61ebee9.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.Globalization; 3 @using System.Text.RegularExpressions; 4 @using Dynamicweb.Environment; 5 @using Newtonsoft.Json; 6 @using Dynamicweb.Logging; 7 @using Dynamicweb.Frontend.Navigation; 8 @using Dynamicweb; 9 @using Dynamicweb.Security.UserManagement; 10 @using Dynamicweb.Content.Items; 11 @using Dynamicweb.Core; 12 @using Dynamicweb.Core.Encoders; 13 14 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 15 @using Dynamicweb.Content.Items; 16 17 @functions{ 18 void RenderErhvervsTypeCheckboxes(string productGroupFilter) 19 { 20 <div class="col-xs-6 col-md-4"> 21 <div class="checkbox"> 22 <label> 23 <input type="checkbox" name="propertytype" value="bolig/erhverv, kombineret erhverv og bolig, byejendom (kontor, butik, beboelse)" /> 24 <span>Bolig/erhverv</span> 25 </label> 26 </div> 27 <div class="checkbox"> 28 <label> 29 <input type="checkbox" name="propertytype" value="erhvervsgrund" /> 30 <span>Erhvervsgrund</span> 31 </label> 32 </div> 33 <div class="checkbox"> 34 <label> 35 <input type="checkbox" name="propertytype" value="boligudlejning" /> 36 <span>Boligudlejningsejendom</span> 37 </label> 38 </div> 39 <div class="checkbox"> 40 <label> 41 <input type="checkbox" name="propertytype" value="kontor, klinik, kontorhotel, showroom, undervisningslokaler" /> 42 <span>Kontor</span> 43 </label> 44 </div> 45 </div> 46 <div class="col-xs-6 col-md-4"> 47 <div class="checkbox"> 48 <label> 49 <input type="checkbox" name="propertytype" value="butik / detail, butik / detailhandel" /> 50 <span>Butik/detailhandel</span> 51 </label> 52 </div> 53 <div class="checkbox"> 54 <label> 55 <input type="checkbox" name="propertytype" value="industri / logistik, håndværk, industri, kontor / lager, logistik" /> 56 <span>Produktion/lager</span> 57 </label> 58 </div> 59 <div class="checkbox"> 60 <label> 61 <input type="checkbox" name="propertytype" value="hotel - kursusejendom, restaurant" /> 62 <span>Hotel og restaurant</span> 63 </label> 64 </div> 65 <div class="checkbox"> 66 <label> 67 <input type="checkbox" name="propertytype" value="projekt ejendom" /> 68 <span>Projektejendom</span> 69 </label> 70 </div> 71 </div> 72 <div class="col-xs-6 col-md-4"> 73 <div class="checkbox"> 74 <label> 75 <input type="checkbox" name="propertytype" value="andet" /> 76 <span>Andet</span> 77 </label> 78 </div> 79 </div> 80 81 <input type="hidden" name="propertycategory" value="erhverv, udlejning" /> 82 <input type="hidden" name="filtrering" value="@productGroupFilter" /> 83 } 84 void RenderBoligtypeCheckboxes() 85 { 86 <div class="col-6 col-md-4"> 87 <div class="checkbox"> 88 <label> 89 <input type="checkbox" name="propertytype" value="villa" /> 90 <span>Villa</span> 91 </label> 92 </div> 93 <div class="checkbox"> 94 <label> 95 <input type="checkbox" name="propertytype" value="rækkehus" /> 96 <span>Rækkehus</span> 97 </label> 98 </div> 99 <div class="checkbox"> 100 <label> 101 <input type="checkbox" name="propertytype" value="villalejlighed" /> 102 <span>Villalejlighed</span> 103 </label> 104 </div> 105 <div class="checkbox"> 106 <label> 107 <input type="checkbox" name="propertytype" value="andelsbolig" /> 108 <span>Andelsbolig</span> 109 </label> 110 </div> 111 </div> 112 <div class="col-6 col-md-4"> 113 <div class="checkbox"> 114 <label> 115 <input type="checkbox" name="propertytype" value="fritidshus, fritidsbolig" /> 116 <span>Fritidsbolig</span> 117 </label> 118 </div> 119 <div class="checkbox"> 120 <label> 121 <input type="checkbox" name="propertytype" value="ejerlejlighed" class="specialOption" data-disable-slider="#grundareal" data-disable-slider-ranges="#grundarealmin,#grundarealmax" /> 122 <span>Ejerlejlighed</span> 123 </label> 124 </div> 125 <div class="checkbox"> 126 <label> 127 <input type="checkbox" name="propertytype" value="helårsgrund" class="specialOption" data-disable-slider="#boligareal,#roomsslider" data-disable-slider-ranges="#boligarealmin,#boligarealmax,#roomsmin" /> 128 <span>Helårsgrund</span> 129 </label> 130 </div> 131 <div class="checkbox"> 132 <label> 133 <input type="checkbox" name="propertytype" value="fritidsgrund" class="specialOption" data-disable-slider="#boligareal,#roomsslider" data-disable-slider-ranges="#boligarealmin,#boligarealmax,#roomsmin" /> 134 <span>Fritidsgrund</span> 135 </label> 136 </div> 137 </div> 138 <div class="col-6 col-md-4"> 139 <div class="checkbox"> 140 <label> 141 <input type="checkbox" name="propertytype" value="landejendom, lystejendom" class="specialOption" data-disable-checkbox="true" /> 142 <span>Landejendom</span> 143 </label> 144 </div> 145 <div class="checkbox"> 146 <label> 147 <input type="checkbox" name="propertytype" value="erhverv" class="specialOption" data-disable-checkbox="true" data-disable-slider="#roomsslider" data-disable-slider-ranges="#roomsmin" /> 148 <span>Erhverv</span> 149 </label> 150 </div> 151 </div> 152 } 153 154 void RenderChecked(string queryString) 155 { 156 if (Dynamicweb.Context.Current.Request.QueryString["propertytype"] == queryString) 157 { 158 @("checked") 159 } 160 } 161 162 void RenderBoligtypeCheckboxesDropdown() 163 { 164 Dictionary<string, string> propertyTypes = new Dictionary<string, string>(){ 165 { "Villa", "villa" }, { "Rækkehus", "rækkehus" }, { "Villalejlighed", "villalejlighed" }, 166 { "Andelsbolig", "andelsbolig" } 167 }; 168 foreach (KeyValuePair<string, string> type in propertyTypes) 169 { 170 bool ischecked = false; 171 string[] propertytypeSplit = new string[0]; 172 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["propertytype"])) 173 { 174 propertytypeSplit = Dynamicweb.Context.Current.Request.QueryString["propertytype"].Split(','); 175 } 176 foreach (var propertytypeParams in propertytypeSplit) 177 { 178 if (propertytypeParams == type.Value) 179 { 180 ischecked = true; 181 } 182 } 183 <li> 184 <label class="checkbox-container d-flex"> 185 @Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + "") 186 <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" /> 187 <span class="checkmark grey"></span> 188 </label> 189 </li> 190 } 191 192 Dictionary<string, string> propertyTypes2 = new Dictionary<string, string>(){ 193 { "Fritidsbolig", "fritidshus, fritidsbolig" }, { "Ejerlejlighed", "ejerlejlighed" }, { "Helårsgrund", "helårsgrund" }, 194 { "Fritidsgrund", "fritidsgrund" }, { "Landejendom", "landejendom, lystejendom" } 195 }; 196 foreach (KeyValuePair<string, string> type in propertyTypes2) 197 { 198 bool ischecked = false; 199 string[] propertytypeSplit2 = new string[0]; 200 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["propertytype"])) 201 { 202 propertytypeSplit2 = Dynamicweb.Context.Current.Request.QueryString["propertytype"].Split(','); 203 } 204 foreach (var propertytypeParams in propertytypeSplit2) 205 { 206 if (propertytypeParams == type.Value) 207 { 208 ischecked = true; 209 } 210 } 211 <li> 212 <label class="checkbox-container d-flex"> 213 @Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + "") 214 @if (type.Value == "ejerlejlighed") 215 { 216 <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" /> 217 } 218 else if (type.Value == "helårsgrund") 219 { 220 <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" /> 221 } 222 else if (type.Value == "fritidsgrund") 223 { 224 <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" /> 225 } 226 else 227 { 228 <input type="checkbox" name="propertytype" value="@type.Value" class="js-input-check datavalue" data-val="@type.Key" onchange="submitFilter()" checked="@ischecked" /> 229 } 230 <span class="checkmark grey"></span> 231 </label> 232 </li> 233 } 234 } 235 236 void RenderBoligTypeErhverv(bool submitOnChange = false, bool frontpage = false) 237 { 238 Dictionary<string, string> erhverType = new Dictionary<string, string>(){ 239 { "Kontor", "OwnUseOffices" }, { "Lager + Produktion", "OwnUseStoresAndProductions" }, { "Detailhandel", "OwnUseRetailAndStores" }, 240 { "Grunde", "OwnUseParcel" }, { "Andre typer", "OwnUseOtherTypes" }, { "Hotel + Restaurant", "OwnUseHotelsAndRestaurants" } 241 }; 242 var submitonchange = ""; 243 if (submitOnChange) 244 { 245 submitonchange = "onchange='submitFilter()'"; 246 } 247 248 foreach (KeyValuePair<string, string> type in erhverType) 249 { 250 string ischecked = ""; 251 string[] olineParamsSplit = new string[0]; 252 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["olinecategory"])) 253 { 254 olineParamsSplit = Dynamicweb.Context.Current.Request.QueryString["olinecategory"].Split(','); 255 } 256 foreach (var olineParams in olineParamsSplit) 257 { 258 if (olineParams == type.Value) 259 { 260 ischecked = "checked"; 261 } 262 } 263 264 <li> 265 <label class="checkbox-container d-flex"> 266 @Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + "") 267 <input type="checkbox" name="olinecategory" value="@type.Value" class="js-input-check datavalue" data-val="@type.Key" @submitonchange @ischecked /> 268 <span class="checkmark grey"></span> 269 </label> 270 </li> 271 } 272 } 273 274 void RenderBoligTypeErhvervInvest(bool submitOnChange = false) 275 { 276 Dictionary<string, string> erhverType = new Dictionary<string, string>(){ 277 { "Kontor", "Kontor" }, { "Lager + Produktion", "InvestmentStoresAndProductions" }, { "Boligudlejning", "InvestmentHousingRental" }, 278 { "Detailhandel", "InvestmentRetailAndStores" }, { "Grunde", "InvestmentParcel" }, { "Hotel + Restaurant", "InvestmentHotelsAndRestaurants" }, { "Andre typer", "InvestmentOtherTypes" } 279 }; 280 281 foreach (KeyValuePair<string, string> type in erhverType) 282 { 283 bool ischecked = false; 284 string[] olineParamsSplit = new string[0]; 285 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["olinecategory"])) 286 { 287 olineParamsSplit = Dynamicweb.Context.Current.Request.QueryString["olinecategory"].Split(','); 288 } 289 foreach (var olineParams in olineParamsSplit) 290 { 291 if (olineParams == type.Value) 292 { 293 ischecked = true; 294 } 295 } 296 297 <li> 298 <label class="checkbox-container"> 299 @Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + "") 300 <input type="checkbox" name="olinecategory" value="@type.Value" class="js-input-check datavalue" data-val="@type.Key" onchange="submitFilter()" checked="@ischecked" /> 301 <span class="checkmark grey"></span> 302 </label> 303 </li> 304 } 305 } 306 int GetWebsiteSettingsPageId(string pageSysName) 307 { 308 int sideId = 0; 309 310 var pw = Dynamicweb.Frontend.PageView.Current(); 311 312 string settingsItemId = "1"; 313 314 if ((pw.Area.Item.ContainsKey("Type") && pw.Area.Item["Type"].ToString() == "bone") || Dynamicweb.Context.Current.Request.QueryString["bone"] == "true") 315 { 316 settingsItemId = "2"; 317 } 318 319 var settingsItem = ItemManager.Storage.GetById("Delte_Egenskaber", settingsItemId); 320 321 if (settingsItem == null || !settingsItem.ContainsKey(pageSysName)) 322 { 323 return sideId; 324 } 325 326 string boligsideLink = settingsItem[pageSysName] as String; 327 string linkPrefix = "Default.aspx?ID="; 328 329 if (!String.IsNullOrEmpty(boligsideLink) && boligsideLink.ToLower().StartsWith(linkPrefix.ToLower())) 330 { 331 Int32.TryParse(boligsideLink.Substring(linkPrefix.Length), out sideId); 332 } 333 334 return sideId; 335 } 336 337 int GetPageSettingsPageId(string pageSysName) 338 { 339 int sideId = 0; 340 341 var pw = Dynamicweb.Frontend.PageView.Current(); 342 343 if (pw.Page == null || pw.Page.PropertyItem == null || !pw.Page.PropertyItem.ContainsKey(pageSysName)) 344 { 345 return sideId; 346 } 347 348 string boligsideLink = pw.Page.PropertyItem[pageSysName] as String; 349 string linkPrefix = "Default.aspx?ID="; 350 351 if (!String.IsNullOrEmpty(boligsideLink) && boligsideLink.ToLower().StartsWith(linkPrefix.ToLower())) 352 { 353 Int32.TryParse(boligsideLink.Substring(linkPrefix.Length), out sideId); 354 } 355 356 return sideId; 357 } 358 void RenderMobileSelectBox(string name, int max, int step, string className, string inputname) 359 { 360 <select class="form-control d-block d-lg-none mb-10 @className" onchange="submitFilter()" name="@inputname"> 361 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder." + name + "", "" + name + "")</option> 362 363 @for (var i = 0; i <= max; i += step) 364 { 365 var selected = string.Empty; 366 var current = string.Empty; 367 if (i == max) 368 { 369 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString[inputname]) && Dynamicweb.Context.Current.Request.QueryString[inputname] == Convert.ToString(i)) 370 { 371 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")' selected="selected">@Convert.ToInt32(i).ToString("N0")+</option> 372 } 373 else 374 { 375 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")+</option> 376 } 377 } 378 else 379 { 380 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString[inputname]) && Dynamicweb.Context.Current.Request.QueryString[inputname] == Convert.ToString(i)) 381 { 382 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")' selected="selected">@Convert.ToInt32(i).ToString("N0")</option> 383 } 384 else 385 { 386 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option> 387 } 388 } 389 } 390 </select> 391 } 392 393 void RenderTopFilter(string parameter) 394 { 395 if (parameter == "pricemin" || parameter == "pricemax") 396 { 397 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["pricemin"])) 398 { 399 if (parameter == "pricemin") 400 { 401 @("<div class='search-terms' id='priceFilter'>") 402 @("Pris ") @Dynamicweb.Context.Current.Request[parameter] 403 } 404 405 else 406 { 407 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kr.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="pricemin,pricemax"></i> 408 @("</div>") 409 } 410 } 411 } 412 413 else if (parameter == "subsidymin" || parameter == "subsidymax") 414 { 415 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["subsidymin"])) 416 { 417 if (parameter == "subsidymin") 418 { 419 @("<div class='search-terms' id='subsidyFilter'>") 420 @("Årlig leje ") @Dynamicweb.Context.Current.Request[parameter] 421 } 422 423 else 424 { 425 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kr.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="subsidymin,subsidymax"></i> 426 @("</div>") 427 } 428 } 429 } 430 else if (parameter == "etagearealmin" || parameter == "etagearealmax") 431 { 432 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["etagearealmin"])) 433 { 434 if (parameter == "etagearealmin") 435 { 436 @("<div class='search-terms' id='etagearealFilter'>") 437 @("Etageareal ") @Dynamicweb.Context.Current.Request[parameter] 438 } 439 440 else 441 { 442 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kvm.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="etagearealmin,etagearealmax"></i> 443 @("</div>") 444 } 445 } 446 } 447 448 else if (parameter == "grundarealmin" || parameter == "grundarealmax") 449 { 450 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["grundarealmin"])) 451 { 452 if (parameter == "grundarealmin") 453 { 454 @("<div class='search-terms' id='grundarealFilter'>") 455 @("Grundareal ") @Dynamicweb.Context.Current.Request[parameter] 456 } 457 458 else 459 { 460 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kvm.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="grundarealmin,grundarealmax"></i> 461 @("</div>") 462 } 463 } 464 } 465 466 else if (parameter == "subsidykvmmin" || parameter == "subsidykvmmax") 467 { 468 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["subsidykvmmin"])) 469 { 470 if (parameter == "subsidykvmmin") 471 { 472 @("<div class='search-terms' id='subsidykvmFilter'>") 473 @("Årlig leje kvm ") @Dynamicweb.Context.Current.Request[parameter] 474 } 475 476 else 477 { 478 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kr.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="subsidykvmmin,subsidykvmmax"></i> 479 @("</div>") 480 } 481 } 482 } 483 484 else if (parameter == "olinecategory") 485 { 486 487 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["olinecategory"])) 488 { 489 Dictionary<string, string> erhverType = new Dictionary<string, string>(){ 490 {"OwnUseOffices", "Kontor" }, { "OwnUseStoresAndProductions","Lager + Produktion" }, { "OwnUseRetailAndStores","Detailhandel" }, 491 { "OwnUseParcel", "Grunde" }, { "OwnUseHotelsAndRestaurants", "Hotel + Restaurant" }, { "OwnUseOtherTypes", "Andre typer"}, 492 { "Kontor", "Kontor" }, { "InvestmentStoresAndProductions", "Lager + Produktion" }, { "InvestmentHousingRental", "Boligudlejning" }, 493 { "InvestmentRetailAndStores", "Detailhandel" }, { "InvestmentParcel", "Grunde" }, { "InvestmentHotelsAndRestaurants", "Hotel + Restaurant" }, { "InvestmentOtherTypes", "Andre typer" } 494 }; 495 496 497 foreach (var er in erhverType) 498 { 499 if (Dynamicweb.Context.Current.Request[parameter].Contains(er.Key)) 500 { 501 <div class="search-terms" id="@parameter"> 502 @er.Value <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="@parameter" data-val="@er.Key"></i> 503 </div> 504 } 505 } 506 } 507 } 508 else if (parameter == "search") 509 { 510 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["search"])) 511 { 512 <div class="search-terms" id="@parameter"> 513 @Dynamicweb.Context.Current.Request[parameter] <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="@parameter"></i> 514 </div> 515 } 516 } 517 else 518 { 519 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request[parameter])) 520 { 521 Dictionary<string, string> 522 ubudsform = new Dictionary<string, string> 523 (){ 524 {"salg", "Salg" }, { "leje","Leje" } 525 }; 526 527 foreach (var er in ubudsform) 528 { 529 if (Dynamicweb.Context.Current.Request[parameter].Contains(er.Key)) 530 { 531 <div class="search-terms" id="@parameter"> 532 @er.Value <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="@parameter" data-val="@er.Key"></i> 533 </div> 534 } 535 } 536 537 538 } 539 } 540 } 541 542 void RenderSelectValue(string dropdownname, string dropdownvalue, string queryString) 543 { 544 var selected = ""; 545 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString[queryString]) && Dynamicweb.Context.Current.Request.QueryString[queryString] == dropdownvalue) 546 { 547 selected = "selected"; 548 } 549 550 var current = string.Format("<option value='" + dropdownvalue + "'>" + dropdownname + "</option>", selected); 551 552 @current 553 } 554 555 void RenderSearchForHousing(int searchPageId, string querySearch, string querySearchNameAttr, string queryZipCodeFrom, string queryZipCodeTo, string template, Item SettingsItem, string cssClasses = "") 556 { 557 <div class="main-search-form frontpage @cssClasses"> 558 <div class="dropdown-overlay"></div> 559 <div class="row mb-3 align-items-center"> 560 <div class="col-xs-12 col-md-3 border-right"> 561 <h3>@Translate("Smartpage:Search.Søg bolig", "Søg bolig")</h3> 562 </div> 563 <div class="col-xs-12 col-md-9 home-count d-none d-md-block"> 564 <span class="search-count" id="searchCounter">0</span> <span>@Translate("Smartpage:Search.BoligerTilSalg", "Boliger til salg")</span> 565 </div> 566 </div> 567 568 <form id="main-search-frontpage" class="searchbar-wrapper" action="/Default.aspx" method="GET"> 569 <input type="hidden" name="ID" value='@searchPageId' id="searchPageId-frontpage" disabled="disabled" /> 570 <div class="row form-wrapper no-gutters"> 571 572 <div class="col-xs-12 col-md-5 col-searchbar"> 573 <div class="searchbar"> 574 <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)" /> 575 <input type="hidden" id="zipcodefrom-frontpage" name="zipcodefrom" value="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(queryZipCodeFrom)" /> 576 <input type="hidden" id="zipcodeto-frontpage" name="zipcodeto" value="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(queryZipCodeTo)" /> 577 </div> 578 </div> 579 <div class="col-xs-12 col-md-5"> 580 <div class="row no-gutters"> 581 <div class="col-xs-12 col-md-6 input-col"> 582 <div class="dropdown w-overlay"> 583 <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"> 584 @Translate("Smartpage:Search.Boligtype", "Boligtype") 585 </button> 586 <div class="dropdown-menu box-shadow bolig-dropdown-container" aria-labelledby="Boligtype"> 587 <ul class="bolig-dropdown list-unstyled"> 588 @{ 589 RenderBoligtypeCheckboxesDropdown(); 590 } 591 </ul> 592 <span class="border-fat"></span> 593 <button class="btn btn-primary js-close-dropdown">@Translate("Smartpage:Search.Anvend", "Anvend")</button> 594 </div> 595 596 </div> 597 598 </div> 599 <div class="col-xs-12 col-md-6 input-col"> 600 <div class="dropdown w-overlay"> 601 <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"> 602 @Translate("Smartpage:Search.Pris", "Pris") 603 </button> 604 <div class="dropdown-menu box-shadow dropdown-price" aria-labelledby="Pris"> 605 <input type="text" class="form-control mb-10 js-auto-thousand js-pricemin-frontpage-input" placeholder='@Translate("Smartpage:Search.Placeholder.MinPris","Min. pris")' /> 606 <select class="form-control js-pricemin-frontpage-select js-input-min-select mb-10"> 607 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris")</option> 608 @for (var i = 0; i <= 10000000; i += 100000) 609 { 610 if (i == 10000000) 611 { 612 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")+'>@Convert.ToInt32(i).ToString("N0")+</option> 613 } 614 else 615 { 616 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option> 617 } 618 } 619 </select> 620 <input type="hidden" id="pricemin-frontpage" name="pricemin" /> 621 622 <input type="text" class="form-control js-auto-thousand js-pricemax-frontpage-input" placeholder='@Translate("Smartpage:Search.Placeholder.MaxPris","Max. pris")' /> 623 <select class="form-control js-pricemax-frontpage-select js-input-max-select"> 624 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris")</option> 625 @for (var i = 0; i <= 10000000; i += 100000) 626 { 627 if (i == 10000000) 628 { 629 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")+'>@Convert.ToInt32(i).ToString("N0")+</option> 630 } 631 else 632 { 633 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option> 634 } 635 } 636 </select> 637 <input type="hidden" id="pricemax-frontpage" name="pricemax" /> 638 <button class="btn btn-primary js-close-dropdown mt-3">@Translate("Smartpage:Search.Anvend", "Anvend")</button> 639 </div> 640 </div> 641 </div> 642 </div> 643 </div> 644 <div class="col-xs-12 col-md-2 d-none d-md-block"> 645 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search"></i> @Translate("Smartpage:Search.Søg", "Søg")</button> 646 </div> 647 </div> 648 649 <div class="row moresearch-btn no-gutters"> 650 <div class="col-sm-12"> 651 <div class="row align-items-center no-gutters"> 652 <div class="col-12 col-md-4"> 653 <button class="btn-blank js-search-collapse" type="button" data-toggle="collapse" data-target="#moreSearch" aria-expanded="false" aria-controls="moreSearch"> 654 <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> 655 </button> 656 </div> 657 <div class="col-6 col-md-2 mb-xs-4"> 658 <a class="js-reset reset-btn">@Translate("Smartpage:Search.NulstilValg", "Nulstil valg")</a> 659 </div> 660 </div> 661 662 <div class="collapse" id="moreSearch"> 663 <h4 class="mt-20"><b>@Translate("Smartpage:Search.Bolig", "Bolig")</b></h4> 664 <div class="row align-items-end mb-30"> 665 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"> 666 <div class="filter-container row"> 667 <label class="d-block col-12">@Translate("Smartpage:Search.Boligareal", "Boligareal")</label> 668 <div class="col-6 pr-sm-0 pr-2"> 669 <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")' /> 670 <select class="form-control js-boligarealmin-frontpage-select js-count"> 671 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")</option> 672 @for (var i = 0; i <= 300; i += 10) 673 { 674 if (i == 300) 675 { 676 <option value="@i">@i+</option> 677 } 678 else 679 { 680 <option value="@i">@i</option> 681 } 682 } 683 </select> 684 </div> 685 <div class="col-6 pl-sm-0 pl-2"> 686 <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")' /> 687 <select class="form-control js-boligarealmax-frontpage-select js-count"> 688 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")</option> 689 @for (var i = 0; i <= 300; i += 10) 690 { 691 if (i == 300) 692 { 693 <option value="@i">@i+</option> 694 } 695 else 696 { 697 <option value="@i">@i</option> 698 } 699 } 700 </select> 701 </div> 702 </div> 703 </div> 704 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"> 705 <div class="filter-container row"> 706 <label class="d-block col-12">@Translate("Smartpage:Search.Grundareal", "Grundareal")</label> 707 <div class="col-6 pr-sm-0 pr-2"> 708 <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")' /> 709 <select class="form-control js-grundarealmin-frontpage-select js-count"> 710 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")</option> 711 @for (var i = 0; i <= 10000; i += 100) 712 { 713 if (i == 10000) 714 { 715 <option value="@i">@i+</option> 716 } 717 else 718 { 719 <option value="@i">@i</option> 720 } 721 } 722 </select> 723 </div> 724 <div class="col-6 pl-sm-0 pl-2"> 725 <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")' /> 726 <select class="form-control js-grundarealmax-frontpage-select js-count"> 727 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")</option> 728 @for (var i = 0; i <= 10000; i += 100) 729 { 730 if (i == 10000) 731 { 732 <option value="@i">@i+</option> 733 } 734 else 735 { 736 <option value="@i">@i</option> 737 } 738 } 739 </select> 740 </div> 741 </div> 742 </div> 743 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"> 744 <div class="filter-container row"> 745 <label class="d-block col-12">Antal rum</label> 746 747 <div class="col-6 pr-sm-0 pr-2"> 748 <select name="roomsmin" id="roomsmin-frontpage" class="form-control reverse js-count"> 749 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Min", "Min")</option> 750 <option value="1">1</option> 751 <option value="2">2</option> 752 <option value="3">3</option> 753 <option value="4">4</option> 754 <option value="5+">5+</option> 755 </select> 756 </div> 757 <div class="col-6 pl-sm-0 pl-2"> 758 <select name="roomsmax" id="roomsmax-frontpage" class="form-control reverse js-count"> 759 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Max", "Max")</option> 760 <option value="1">1</option> 761 <option value="2">2</option> 762 <option value="3">3</option> 763 <option value="4">4</option> 764 <option value="5+">@Translate("Smartpage:Rooms.5", "5")</option> 765 </select> 766 </div> 767 </div> 768 </div> 769 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"> 770 <div class="row"> 771 <div class="col-12"> 772 <div class="filter-container"> 773 <label class="d-block">Energimærke</label> 774 <select name="energylabel" id="energylabel-frontpage" class="form-control reverse js-count"> 775 <option disabled selected="selected">@Translate("Smartpage:Search.Vælg", "Vælg")</option> 776 <option value="01">G</option> 777 <option value="02">F</option> 778 <option value="03">E</option> 779 <option value="04">D</option> 780 <option value="05">C</option> 781 <option value="06">B</option> 782 <option value="07">A</option> 783 <option value="08">A2010</option> 784 <option value="09">A2015</option> 785 <option value="10">A2020+</option> 786 </select> 787 </div> 788 </div> 789 </div> 790 </div> 791 <div class="col-12 col-sm-6 col-lg-3 mt-3"> 792 <h4 class=""><b>@Translate("Smartpage:Search.Økonomi", "Økonomi")</b></h4> 793 <div class="filter-container row"> 794 <label class="d-block col-12">@Translate("Smartpage:Search.Ejerudgift/boligydelse pr. måned", "Ejerudgift/boligydelse pr. måned")</label> 795 <div class="col-6 pr-sm-0 pr-2"> 796 <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")' /> 797 <select class="form-control js-subsidymin-frontpage-select js-count"> 798 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MinDKK", "Min. DKK")</option> 799 @for (var i = 0; i <= 25000; i += 1250) 800 { 801 if (i == 25000) 802 { 803 <option>@Convert.ToInt32(i).ToString("N0")+</option> 804 } 805 else 806 { 807 <option>@Convert.ToInt32(i).ToString("N0")</option> 808 } 809 } 810 </select> 811 </div> 812 <div class="col-6 pl-sm-0 pl-2"> 813 <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")' /> 814 <select class="form-control js-subsidymax-frontpage-select js-count"> 815 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MaxDKK", "Max. DKK")</option> 816 @for (var i = 0; i <= 25000; i += 1250) 817 { 818 if (i == 25000) 819 { 820 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")+</option> 821 } 822 else 823 { 824 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")</option> 825 } 826 } 827 </select> 828 </div> 829 </div> 830 </div> 831 <div class="col-12 col-sm-6 col-lg-4 offset-lg-5 mt-3 mt-sm-0"> 832 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search"></i> @Translate("Smartpage:Search.AnvendFiltre", "Anvend filtre")</button> 833 </div> 834 </div> 835 </div> 836 </div> 837 </div> 838 839 <div class="row d-block d-md-none form-wrapper no-gutters"> 840 <div class="col-xs-12 col-md-2"> 841 <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> 842 </div> 843 </div> 844 </form> 845 <div class="front-page-actions d-md-none"> 846 <div> 847 <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> 848 </div> 849 <div> 850 @{ 851 string brokerSearchId = SettingsItem != null ? Dynamicweb.Core.Converter.ToString(SettingsItem["Maeglersogning"]).Replace("Default.aspx?Id=", "") : ""; 852 string ctaText = Translate("Smartpage.Frontpage.Mobile.FindBroker", "FIND EJENDOMSMÆGLER"); 853 <form method="GET" action="/Default.aspx"> 854 <input name="id" value="@brokerSearchId" type="hidden" /> 855 <div class="icon-wrapper-wclick"> 856 <i class="fas fa-search ta-submit-on-icon-click"></i> 857 <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'" /> 858 </div> 859 </form> 860 } 861 </div> 862 <div> 863 <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> 864 </div> 865 </div> 866 </div> 867 868 } 869 Custom.Integration.Brokers.Models.BrokerEmployee GetBrokerFromCurrentProduct() 870 { 871 string productId = Dynamicweb.Context.Current.Request["ProductId"]; 872 873 if (string.IsNullOrWhiteSpace(productId)) 874 { 875 return null; 876 } 877 878 var propertyProduct = Dynamicweb.Ecommerce.Services.Products.GetProductById(productId, string.Empty, true); 879 if (propertyProduct == null) 880 { 881 return null; 882 } 883 884 string employee = Dynamicweb.Core.Converter.ToString( 885 Dynamicweb.Ecommerce.Services.Products.GetProductFieldValue(propertyProduct, "xAktoererMaeglerKontaktEmail") 886 ); 887 string storeId = Dynamicweb.Core.Converter.ToString( 888 Dynamicweb.Ecommerce.Services.Products.GetProductFieldValue(propertyProduct, "xButikID") 889 ); 890 891 if (string.IsNullOrWhiteSpace(employee) || string.IsNullOrWhiteSpace(storeId)) 892 { 893 return null; 894 } 895 896 return Custom.Integration.Brokers.Search.GetEmployee(storeId, employee); 897 } 898 899 string GetAgentTitleFromCurrentProduct() 900 { 901 var propBroker = GetBrokerFromCurrentProduct(); 902 903 if (propBroker?.Broker == null) 904 { 905 return string.Empty; 906 } 907 908 if (!string.IsNullOrEmpty(propBroker.Broker.CompanyName)) 909 { 910 return propBroker.Broker.CompanyName; 911 } 912 913 return propBroker.Broker.Name ?? string.Empty; 914 } 915 916 string GetMasterBrokerUrlFromCurrentProduct() 917 { 918 var propBroker = GetBrokerFromCurrentProduct(); 919 920 var itemId = propBroker?.Broker?.ItemId; 921 var itemType = propBroker?.Broker?.ItemType; 922 923 if (string.IsNullOrWhiteSpace(itemId) || string.IsNullOrWhiteSpace(itemType)) 924 { 925 return string.Empty; 926 } 927 var brokerItem = Dynamicweb.Content.Items.ItemManager.Storage.GetById(itemType, itemId); 928 929 if (brokerItem == null) 930 { 931 return string.Empty; 932 } 933 934 var websiteId = Dynamicweb.Core.Converter.ToInt32(brokerItem["WebsiteId"]); 935 var page = Dynamicweb.Content.Services.Pages.GetFirstPageForArea(websiteId); 936 return Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl("Default.aspx?Id=" + page?.ID); 937 } 938 939 // === Video link helpers (used by the property page) === 940 941 // True when the link points directly at a video file we can play in a <video> element. Everything else is iframed. 942 bool IsDirectVideoFile(string url) 943 { 944 if (string.IsNullOrWhiteSpace(url)) { return false; } 945 946 // Strip query/fragment before checking the file extension. 947 string path = url.Split('?', '#')[0]; 948 string[] directExtensions = { ".mp4", ".webm", ".ogg", ".ogv", ".mov", ".m4v" }; 949 foreach (var ext in directExtensions) 950 { 951 if (path.EndsWith(ext, StringComparison.InvariantCultureIgnoreCase)) { return true; } 952 } 953 return false; 954 } 955 956 string GetYouTubeId(string url) 957 { 958 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; } 959 960 string[] patterns = { @"youtu\.be/([^?&/]+)", @"[?&]v=([^?&]+)", @"/embed/([^?&/]+)", @"/shorts/([^?&/]+)" }; 961 foreach (var pattern in patterns) 962 { 963 var match = System.Text.RegularExpressions.Regex.Match(url, pattern); 964 if (match.Success) { return match.Groups[1].Value; } 965 } 966 967 return string.Empty; 968 } 969 970 string GetVimeoId(string url) 971 { 972 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; } 973 var match = System.Text.RegularExpressions.Regex.Match(url, @"vimeo\.com/(?:.*?/)?(\d+)"); 974 return match.Success ? match.Groups[1].Value : string.Empty; 975 } 976 977 string GetVimeoHash(string url) 978 { 979 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; } 980 // Unlisted videos carry a privacy hash: vimeo.com/{id}/{hash} 981 var match = System.Text.RegularExpressions.Regex.Match(url, @"vimeo\.com/(?:.*?/)?\d+/(\w+)"); 982 return match.Success ? match.Groups[1].Value : string.Empty; 983 } 984 985 // Builds the iframe src for a non-file link. YouTube/Vimeo share links are rewritten to their embeddable form 986 // (their pages block framing); every other link (Matterport, CR3, already-embeddable pages) is used as-is. 987 string BuildEmbedUrl(string url, bool background) 988 { 989 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; } 990 991 if (url.Contains("youtube", StringComparison.InvariantCultureIgnoreCase) || url.Contains("youtu.be", StringComparison.InvariantCultureIgnoreCase)) 992 { 993 string id = GetYouTubeId(url); 994 if (!string.IsNullOrEmpty(id)) 995 { 996 string baseUrl = "https://www.youtube-nocookie.com/embed/" + id; 997 return background 998 ? baseUrl + "?autoplay=1&mute=1&loop=1&playlist=" + id + "&controls=0&playsinline=1&rel=0" 999 : baseUrl + "?rel=0"; 1000 } 1001 } 1002 else if (url.Contains("vimeo", StringComparison.InvariantCultureIgnoreCase)) 1003 { 1004 string id = GetVimeoId(url); 1005 if (!string.IsNullOrEmpty(id)) 1006 { 1007 string baseUrl = "https://player.vimeo.com/video/" + id; 1008 var queryParams = new List<string>(); 1009 string hash = GetVimeoHash(url); 1010 if (!string.IsNullOrEmpty(hash)) { queryParams.Add("h=" + hash); } 1011 if (background) { queryParams.Add("background=1"); } 1012 return queryParams.Count > 0 ? baseUrl + "?" + string.Join("&", queryParams) : baseUrl; 1013 } 1014 } 1015 1016 // Matterport, CR3 and any already-embeddable link frame as-is. 1017 return url; 1018 } 1019 } 1020 1021 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 1022 @using Dynamicweb.Core; 1023 @using Dynamicweb.Core.Encoders; 1024 @using Dynamicweb.Frontend.Navigation; 1025 @using Dynamicweb; 1026 1027 @functions { 1028 void RenderSlideMenu(bool BoligOne, bool erhverv, string maeglersoegning) 1029 { 1030 <div id="menu" 1031 class="main-menu-slide" 1032 role="navigation" 1033 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.MainMenu", "Hovedmenu"))" 1034 aria-modal="true"> 1035 <div class="container"> 1036 <div class="row"> 1037 <div class="col-12"> 1038 <span class="menu-headline">MENU</span> 1039 </div> 1040 <div class="menu-slide" 1041 role="button" 1042 tabindex="0" 1043 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.CloseMenu", "Luk menu"))"> 1044 <b aria-hidden="true"></b> 1045 </div> 1046 1047 <div class="col-12 main-slidemenu" role="region" aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.NavigationLinks", "Navigationslinks"))"> 1048 @{ 1049 string erhvervsNavigationAreaId = !string.IsNullOrWhiteSpace(Converter.ToString(Pageview.Area.Item["SpErhvervNavigationAreaId"])) ? Converter.ToString(Pageview.Area.Item["SpErhvervNavigationAreaId"]) : "2723"; 1050 string rmNavigationAreaId = !string.IsNullOrWhiteSpace(Converter.ToString(Pageview.Area.Item["SpRMNavigationAreaId"])) ? Converter.ToString(Pageview.Area.Item["SpRMNavigationAreaId"]) : "1"; 1051 1052 if (Pageview.Page.ItemType == "AgentPage") 1053 { 1054 @Navigation.RenderNavigation("Navigation/AgentNavigation.cshtml", 1055 new NavigationSettings { StartLevel = 1, StopLevel = 1, RootAreaId = Pageview.Area.ID }) 1056 } 1057 else if (erhverv) 1058 { 1059 <ul id="main-nav-erhverv" class="navigation dwnavigation" settings="startlevel:1;endlevel:2;template:Erhverv_ul_li.xslt;expandmode:all;areaid:@erhvervsNavigationAreaId;"></ul> 1060 @GetValue("DwNavigation(mainnaverhverv)") 1061 } 1062 else 1063 { 1064 <ul id="main-nav" class="navigation dwnavigation" settings="startlevel:1;endlevel:2;template:Erhverv_ul_li.xslt;expandmode:all;areaid:@rmNavigationAreaId;"></ul> 1065 @GetValue("DwNavigation(mainnav)") 1066 } 1067 } 1068 </div> 1069 <div class="col-12 bottom-btns"> 1070 1071 @{ 1072 string[] maeglerid; 1073 string maegler = !string.IsNullOrEmpty(Converter.ToString(Pageview.Area.Item["ErhvervMaeglersoegning"])) ? Converter.ToString(Pageview.Area.Item["ErhvervMaeglersoegning"]) : "Default?Id=0"; 1074 1075 if (erhverv) 1076 { 1077 maeglerid = maegler.Split(new string[] { "?Id=" }, StringSplitOptions.None); 1078 } 1079 else 1080 { 1081 maeglerid = Convert.ToString(maeglersoegning).Split(new string[] { "?Id=" }, StringSplitOptions.None); 1082 } 1083 1084 <form method="GET" action="/Default.aspx" role="search"> 1085 <input name="id" value="@maeglerid[1]" type="hidden" /> 1086 <div class="icon-wrapper-wclick"> 1087 <label for="broker-search-menu" class="sr-only">@Translate("Custom:Accessibility.FindBroker", "Find mægler")</label> 1088 <i class="fas fa-search ta-submit-on-icon-click" 1089 aria-hidden="true" 1090 role="button" 1091 tabindex="0" 1092 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.SearchBroker", "Søg efter mægler"))"></i> 1093 <input id="broker-search-menu" 1094 class="box-cta-input ta-postnummer ta-submit-on-select ta-submit-on-enter" 1095 name="q" 1096 type="text" 1097 placeholder="@HtmlEncoder.HtmlAttributeEncode(Translate("Smartpage:BoxWidget.FindMægler", "FIND MÆGLER"))" 1098 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.BrokerSearchField", "Indtast postnummer eller navn for at finde mægler"))" 1099 onfocus="this.placeholder = 'FIND MÆGLER'" /> 1100 </div> 1101 </form> 1102 } 1103 <br /> 1104 @{ 1105 var dpmaegler = "" + Context.Current.Session["DP"] + "Hovedmenu" + ""; 1106 } 1107 <a href="javascript:panelSalgsvurdering('@dpmaegler', '@Pageview.AreaID');" 1108 class="btn btn-block btn-default-invert js-close-menu" 1109 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> 1110 </div> 1111 </div> 1112 </div> 1113 </div> 1114 } 1115 } 1116 @{ 1117 Context.Current.Response.AddHeader("access-control-allow-origin", "*"); 1118 1119 string bodyClass = ""; 1120 string template = "real"; 1121 string TemplateUrl = "/Files/Templates/Designs/rm/"; 1122 string logoUrl = TemplateUrl + (!Dynamicweb.Core.Converter.ToBoolean(Pageview.Area.Item["IsErhverv"]) ? "assets/images/logo-real.svg" : "assets/images/logo-erhverv.svg"); 1123 string MetaTitle = GetString("Title"); 1124 string MetaDescription = GetString("Meta.Description"); 1125 string MetaKeywords = GetString("Meta.Keywords"); 1126 string searchClass = ""; 1127 1128 var cssFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/dist/css/main.min.css")); 1129 string mainCSS = TemplateUrl + $"assets/dist/css/main.min.css?{cssFileInfo.LastWriteTime.Ticks}"; 1130 1131 string loadingIcon = "/Files/Images/real-maeglerne-loading.svg"; 1132 1133 var SettingsItem = ItemManager.Storage.GetById("Delte_Egenskaber", template != "bone" ? "1" : "2"); 1134 1135 // Indstillinger 1136 var settings_Frontpage = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["Frontpage"])) ? SettingsItem["Frontpage"] : ""; 1137 var settings_Boligside = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["Boligside"])) ? SettingsItem["Boligside"] : ""; 1138 var settings_Maeglersogning = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["Maeglersogning"])) ? SettingsItem["Maeglersogning"] : ""; 1139 var settings_MinSide = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["MinSide"])) ? SettingsItem["MinSide"] : ""; 1140 var settings_Sibling_Site = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["Sibling_Site"])) ? SettingsItem["Sibling_Site"] : ""; 1141 var settings_Sibling_Boligvisning = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["Sibling_Boligvisning"])) ? SettingsItem["Sibling_Boligvisning"] : ""; 1142 var settings_Product_Group = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["Product_Group"])) ? SettingsItem["Product_Group"] : ""; 1143 var settings_Boligagent = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["Boligagent"])) ? SettingsItem["Boligagent"] : ""; 1144 var settings_Persondatapolitik = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["Persondatapolitik"])) ? SettingsItem["Persondatapolitik"] : ""; 1145 1146 // API 1147 var settings_BoligSearchFeed = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["BoligSearchFeed"])) ? SettingsItem["BoligSearchFeed"] : ""; 1148 var settings_BoligListFeed = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["BoligListFeed"])) ? SettingsItem["BoligListFeed"] : ""; 1149 var settings_BoligListFeedErhverv = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["BoligListFeedErhverv"])) ? SettingsItem["BoligListFeedErhverv"] : ""; 1150 var settings_BoligListFeedMaegler = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["BoligListFeedMaegler"])) ? SettingsItem["BoligListFeedMaegler"] : ""; 1151 var settings_BoligCountFeed = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["BoligCountFeed"])) ? SettingsItem["BoligCountFeed"] : ""; 1152 var settings_BoligMapFeed = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["BoligMapFeed"])) ? SettingsItem["BoligMapFeed"] : ""; 1153 var settings_AdvisorSearchFeed = "Default.aspx?ID=" + Pageview.Area.Item["AdvisorSearchFeed"]; 1154 1155 // Forside 1156 var settings_FrontpageOverskrift = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["FrontpageOverskrift"])) ? SettingsItem["FrontpageOverskrift"] : ""; 1157 var settings_FrontpageVideo = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["FrontpageVideo"])) ? SettingsItem["FrontpageVideo"] : ""; 1158 var settings_FrontpageVideoImage = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["FrontpageVideoImage"])) ? SettingsItem["FrontpageVideoImage"] : ""; 1159 1160 // Tracking 1161 var settings_Google_Tag_Manager_ID = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Google_Tag_Manager_ID"])) ? SettingsItem["Google_Tag_Manager_ID"] : ""; 1162 if (!string.IsNullOrEmpty(Converter.ToString(Pageview.Area.Item["BrokerGoogleTagManagerId"]))) 1163 { 1164 settings_Google_Tag_Manager_ID = Converter.ToString(Pageview.Area.Item["BrokerGoogleTagManagerId"]); 1165 } 1166 var settings_Google_Tag_Manager_ID_BoligOne = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["Google_Tag_Manager_ID_BoligOne"])) ? SettingsItem["Google_Tag_Manager_ID_BoligOne"] : ""; 1167 var settings_Facebook_App_ID = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["Facebook_App_ID"])) ? SettingsItem["Facebook_App_ID"] : ""; 1168 var settings_Leadhub_Pixel_ID = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["Leadhub_Pixel_ID"])) ? SettingsItem["Leadhub_Pixel_ID"] : ""; 1169 var settings_AntiFlicker_ID = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["AntiFlicker_ID"])) ? SettingsItem["AntiFlicker_ID"] : ""; 1170 var settings_ConduzeId = Converter.ToString(SettingsItem["SpConduzeId"]); 1171 var settings_Weply = Converter.ToString(SettingsItem["SpWeplyId"]); 1172 var settings_RealEquityApplicationId = Converter.ToString(SettingsItem["RealEquityApplicationID"]); 1173 1174 // Indstillinger for brugerfunktioner 1175 var settings_ForgotPwPage = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["ForgotPwPage"])) ? SettingsItem["ForgotPwPage"] : ""; 1176 var settings_NewsletterSignup = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["NewsletterSignup"])) ? SettingsItem["NewsletterSignup"] : ""; 1177 var settings_CreateUserModal = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["CreateUserModal"])) ? SettingsItem["CreateUserModal"] : ""; 1178 var settings_LoginModal = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["LoginModal"])) ? SettingsItem["LoginModal"] : ""; 1179 1180 int createUserParagraphId = 0; 1181 int loginParagraphId = 0; 1182 Int32.TryParse(settings_CreateUserModal.ToString(), out createUserParagraphId); 1183 Int32.TryParse(settings_LoginModal.ToString(), out loginParagraphId); 1184 1185 // Use configured search page id for search action which depends on the context. Context can currently be one of: rm, boligone or erhverv. 1186 // Subsequent calls to search page via ajax (sorting, loading, etc) should preserve search context. (vv) 1187 int searchPageId = GetPageSettingsPageId("Boligside"); 1188 if (searchPageId == 0) 1189 { 1190 searchPageId = GetWebsiteSettingsPageId("Boligside"); 1191 } 1192 1193 int boligsideId = GetPageSettingsPageId("Boligside"); 1194 if (boligsideId == 0) 1195 { 1196 boligsideId = GetWebsiteSettingsPageId("Boligside"); 1197 } 1198 1199 string productGroupFilter = String.Empty; 1200 if (Pageview.Page.PropertyItem != null && Pageview.Page.PropertyItem.ContainsKey("Product_Group") && Pageview.Page.PropertyItem["Product_Group"] != null) 1201 { 1202 productGroupFilter = Pageview.Page.PropertyItem["Product_Group"].ToString(); 1203 } 1204 1205 if (GetString("DwAreaFirstActivePageID") == GetString("DwPageID") || GetBoolean("Item.Page.TransparentHeader")) 1206 { 1207 bodyClass += " frontpage"; 1208 bodyClass += " header-transparent"; 1209 1210 } 1211 if (Pageview.Page.PropertyItem != null && Convert.ToBoolean(Pageview.Page.PropertyItem["IsRealFrontpage"])) 1212 { 1213 searchClass = "is-frontpage"; 1214 } 1215 1216 bool isErhverv = false; 1217 if (Pageview.Page.PropertyItem != null && Pageview.Page.PropertyItem.ContainsKey("Erhverv") && Pageview.Page.PropertyItem["Erhverv"] != null) 1218 { 1219 var s = Pageview.Page.PropertyItem["Erhverv"].ToString(); 1220 Boolean.TryParse(s, out isErhverv); 1221 } 1222 1223 bool isBrokerPage = false; 1224 if (!String.IsNullOrEmpty(GetString("Item.Area.M_glerGruppeId.Value"))) 1225 { 1226 isBrokerPage = true; 1227 bodyClass = ""; // Get rid of transparent header on brokerPage 1228 } 1229 1230 string callTrackingId = GetString("Item.Area.CallTrackingId.Value"); 1231 1232 RealEstate.User.Model.BrokerEmployee MyBroker = null; 1233 try 1234 { 1235 var MyB = new RealEstate.User.MyBroker(); 1236 MyBroker = MyB.GetMyBroker(); 1237 } 1238 catch 1239 { 1240 // Ignore 1241 } 1242 1243 string querySearch = (Context.Current.Request.QueryString["search"] != null ? Context.Current.Request.QueryString["search"] : ""); 1244 string querySearchNameAttr = "search"; 1245 // Overwrite search with zipcodeinterval if set 1246 if (Context.Current.Request.QueryString["zipcodeinterval"] != null) 1247 { 1248 querySearch = Context.Current.Request.QueryString["zipcodeinterval"]; 1249 querySearchNameAttr = "zipcodeinterval"; 1250 } 1251 string queryZipCodeFrom = (Context.Current.Request.QueryString["zipcodefrom"] != null ? Context.Current.Request.QueryString["zipcodefrom"] : ""); 1252 string queryZipCodeTo = (Context.Current.Request.QueryString["zipcodeto"] != null ? Context.Current.Request.QueryString["zipcodeto"] : ""); 1253 1254 Dynamicweb.Security.UserManagement.User user = null; 1255 int userID = 0; 1256 string userName = ""; 1257 string userEmail = ""; 1258 string userPhone = ""; 1259 string userZip = ""; 1260 string userAddress = ""; 1261 1262 if (UserContext.Current.IsLoggedOn) 1263 { 1264 user = UserContext.Current.User; 1265 userName = user.Name; 1266 userEmail = user.Email; 1267 userPhone = user.Phone; 1268 userZip = user.Zip; 1269 userAddress = user.Address; 1270 userID = user.ID; 1271 } 1272 1273 if (!String.IsNullOrEmpty(GetString("DW_extranet_AccessUserName"))) 1274 { 1275 userName = GetString("DW_extranet_AccessUserName"); 1276 } 1277 1278 string forgotPwSubject = Translate("email-forgot-pw-subject", "Glemt adgangskode"); 1279 string mapMarkerUrl = TemplateUrl + "assets/images/logo-real.png"; 1280 string forgotPwTemplate = "/Login/email_template_forgotpw_RM.cshtml"; 1281 string forgotPwSender = "noreply@mailreal.dk"; 1282 string markerColor = "#213960"; 1283 1284 var butikId = string.Empty; 1285 var primaryArea = string.Empty; 1286 string bEmail = string.Empty; 1287 if (MyBroker != null && MyBroker.Broker != null) 1288 { 1289 var item = Dynamicweb.Content.Items.ItemManager.Storage.GetById(MyBroker.Broker.ItemType, MyBroker.Broker.ItemId); 1290 butikId = Converter.ToString(item["CBMedlemsnummer"]); 1291 primaryArea = Converter.ToString(item["PrimaertOmraade"]); 1292 bEmail = Converter.ToString(item["Email"]); 1293 } 1294 1295 var salesAssessmentPageId = Converter.ToString(GetPageIdByNavigationTag("OrderSalesAssessment")); 1296 var termsMail = "info@realmaeglerne.dk"; 1297 } 1298 1299 <!DOCTYPE html> 1300 <html> 1301 <head> 1302 <meta charset="utf-8"> 1303 <title>@MetaTitle</title> 1304 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 1305 <meta name="description" content="@MetaDescription"> 1306 <meta name="keywords" content="@MetaKeywords"> 1307 <meta name="format-detection" content="telephone=no"> 1308 <meta http-equiv="Expires" content="60"> 1309 <meta name="robots" content="@(Pageview.Area.Noindex ? "noindex" : "index"),@(Pageview.Area.Nofollow ? "nofollow" : "follow")"> 1310 1311 @RenderSnippet("OpenGraphTags") 1312 1313 @*RICH SNIPPETS*@ 1314 1315 <script type="application/ld+json"> 1316 { 1317 "context": "https://schema.org/", 1318 "@@type": "WebSite", 1319 "name": "RealMæglerne", 1320 "url": "https://www.realmaeglerne.dk/", 1321 "potentialAction": { 1322 "type": "SearchAction", 1323 "target": "https://www.realmaeglerne.dk/find-maegler?q={search_term_string}", 1324 "query-input": "required name=search_term_string" 1325 } 1326 } 1327 </script> 1328 1329 <script type="application/ld+json"> 1330 { 1331 "context": "https://schema.org", 1332 "@@type": "Corporation", 1333 "name": "RealMæglerne", 1334 "alternateName": "R&B Mægler A/S", 1335 "url": "https://www.realmaeglerne.dk", 1336 "logo": "https://www.realmaeglerne.dk/Files/Images/RealM_Logo_NY_MBlaa_RGB.png", 1337 "contactPoint": { 1338 "type": "ContactPoint", 1339 "telephone": "+4570237153", 1340 "contactType": "sales", 1341 "areaServed": "DK", 1342 "availableLanguage": "Danish" 1343 }, 1344 "sameAs": [ 1345 "https://www.facebook.com/realmaeglerne/", 1346 "https://www.linkedin.com/company/realmæglerne/", 1347 "https://www.youtube.com/channel/UCLHYWIUcNtFitvSsbBJnI3g", 1348 "https://www.realmaeglerne.dk/" 1349 ] 1350 } 1351 </script> 1352 @RenderSnippet("StructuredData") 1353 @*RICH SNIPPETS END*@ 1354 1355 @*FONT AWESOME*@ 1356 @{ 1357 <link rel="stylesheet" href="@(TemplateUrl)assets/fontawesome/css/all.css" async /> 1358 <link rel="stylesheet" href="@mainCSS" async /> 1359 <link rel="icon" type="image/ico" href="@(TemplateUrl)assets/images/favicons/favicon-real.ico?v=1"> 1360 <link rel="icon" type="image/png" href="@(TemplateUrl)assets/images/favicons/favicon-real-16x16.png" sizes="16x16"> 1361 <link rel="icon" type="image/png" href="@(TemplateUrl)assets/images/favicons/favicon-real-32x32.png" sizes="32x32"> 1362 <link rel="icon" type="image/png" href="@(TemplateUrl)assets/images/favicons/favicon-real-96x96.png" sizes="96x96"> 1363 <meta name="google-site-verification" content="hsV-j5ENQp9iR1Kpd6h9uYGqfD6YqOE5zg-jsWjRPOg" /> 1364 } 1365 <!-- Cookie Saver Preload --> 1366 <script> 1367 (function () { function r(n, e, t) { function i(o, u) { if (!e[o]) { if (!n[o]) { var f = "function" == typeof require && require; if (!u && f) return f(o, !0); if (a) return a(o, !0); var c = new Error("Cannot find module '" + o + "'"); throw c.code = "MODULE_NOT_FOUND", c } var s = e[o] = { exports: {} }; n[o][0].call(s.exports, function (r) { var e = n[o][1][r]; return i(e || r) }, s, s.exports, r, n, e, t) } return e[o].exports } for (var a = "function" == typeof require && require, o = 0; o < t.length; o++)i(t[o]); return i } return r })()({ 1: [function (r, n, e) { "use strict"; function t(r, n) { return o(r) || a(r, n) || i() } function i() { throw new TypeError("Invalid attempt to destructure non-iterable instance") } function a(r, n) { var e = []; var t = true; var i = false; var a = undefined; try { for (var o = r[Symbol.iterator](), u; !(t = (u = o.next()).done); t = true) { e.push(u.value); if (n && e.length === n) break } } catch (r) { i = true; a = r } finally { try { if (!t && o["return"] != null) o["return"]() } finally { if (i) throw a } } return e } function o(r) { if (Array.isArray(r)) return r } (function (r, n) { var e = "3.2"; var i = Date.now(); if (!Object.entries) { Object.entries = function (r) { var n = Object.keys(r), e = n.length, t = new Array(e); while (e--) { t[e] = [n[e], r[n[e]]] } return t } } function a() { var r = "cs_test_cookie=1"; var n = document.location.hostname.split("."); for (var e = n.length - 1; e >= 0; e--) { var t = n.slice(e).join("."); document.cookie = r + ";domain=." + t + ";"; if (document.cookie.indexOf(r) > -1) { document.cookie = r.split("=")[0] + "=;domain=." + t + ";expires=Thu, 01 Jan 1970 00:00:01 GMT;"; return t } } return document.location.hostname } function o(r, n) { var e = [n]; var t = r.substring(0, r.length - n.length); if (t.length > 0) { var i = t.split("."); i.pop(); var a = n; for (var o = i.length - 1; o >= 0; o--) { a = i[o] + "." + a; e.push(a) } } return e } function u(r, n, e, t, i) { var a = r + "=" + n + ";"; if (e !== null) { a += "expires=" + e + ";" } if (t !== null) { a += "domain=" + t + ";" } if (i) { a += "secure;" } a += "path=/;"; document.cookie = a } var f = Date.now(); var c = []; var s = document.cookie; if (!s) { return } var l = a(); var v = o(document.location.hostname, l); s = s.split(/; */); var h = {}; for (var d = 0; d < s.length; d++) { h[s[d].substring(0, s[d].indexOf("="))] = s[d].substring(s[d].indexOf("=") + 1) } var g = "_acs_"; var p = "_acs__acsr_"; var b = []; Object.entries(h).forEach(function (r) { var n = t(r, 2), e = n[0], i = n[1]; if (e.indexOf(g) === 0) { var a = true; for (var o in v) { if (e === g + v[o]) { a = false; break } } if (a) { b.push(e); return } try { var s = JSON.parse(h[e]); if (s.c) { var l = e.substring(g.length); for (var d = 0, p = Object.entries(s.c); d < p.length; d++) { var m = t(p[d], 2), O = m[0], w = m[1]; var x = parseInt(w.e, 36) * 1e3; if (!(O in h) && x > f) { u(O, w.v, new Date(x).toUTCString(), w.r ? null : "." + l, w.s ? true : false) } } } } catch (r) { c.push({ n: e, v: h[e], e: r }) } } }); b.forEach(function (r) { var n = h[r]; if (r.indexOf(p) === 0) { if (!(r.substring(p.length) in h)) { u(r.substring(p.length), n, null, null, null); return } } if (r.indexOf(g) === 0) { if (!(r.substring(g.length) in h)) { u(r.substring(g.length), n, null, l, null) } } }); var m = Date.now(); r.acqps = { v: e, s: i, e: m, t: m - i, w: c } })(window) }, {}] }, {}, [1]); 1368 </script> 1369 <!-- End Cookie Saver --> 1370 1371 @if (!string.IsNullOrEmpty(settings_AntiFlicker_ID.ToString())) 1372 { 1373 <!-- Anti-flicker snippet --> 1374 <style> 1375 .async-hide { 1376 opacity: 0 !important 1377 } 1378 </style> 1379 <script> 1380 (function (a, s, y, n, c, h, i, d, e) { 1381 s.className += ' ' + y; h.start = 1 * new Date; 1382 h.end = i = function () { s.className = s.className.replace(RegExp(' ?' + y), '') }; 1383 (a[n] = a[n] || []).hide = h; setTimeout(function () { i(); h.end = null }, c); h.timeout = c; 1384 })(window, document.documentElement, 'async-hide', 'dataLayer', 4000, 1385 { '@settings_Google_Tag_Manager_ID': true });</script> 1386 1387 } 1388 1389 @if (isBrokerPage && !String.IsNullOrEmpty(callTrackingId)) 1390 { 1391 <script type="text/javascript" src="https://call.call-tracking.dk/getJavascript?custid=@callTrackingId"></script> 1392 } 1393 1394 @if (!string.IsNullOrEmpty(settings_Google_Tag_Manager_ID.ToString())) 1395 { 1396 <!-- Datalaget --> 1397 <script> 1398 window.dataLayer = window.dataLayer || []; 1399 </script> 1400 1401 <!-- Andet --> 1402 <script> 1403 window.dataLayer.push({ 1404 'division': '@(isErhverv ? "b2b" : "b2c")', // 'b2c', 'b2b', 'project' ... 1405 }); 1406 </script> 1407 1408 @RenderSnippet("GtmDatalayer") 1409 1410 <!-- Google Tag Manager --> 1411 <script> 1412 (function (w, d, s, l, i) { 1413 w[l] = w[l] || []; w[l].push({ 1414 'gtm.start': 1415 new Date().getTime(), event: 'gtm.js' 1416 }); var f = d.getElementsByTagName(s)[0], 1417 j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 1418 'https://frap.realmaeglerne.dk/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); 1419 })(window, document, 'script', 'dataLayer', '@Converter.ToString(settings_Google_Tag_Manager_ID)'); 1420 </script> 1421 } 1422 1423 @if (!string.IsNullOrEmpty(settings_Leadhub_Pixel_ID.ToString())) 1424 { 1425 <!-- Begin Leadhub Pixel Code --> 1426 <script> 1427 (function(w,d,x,n,u,t,f,s,o){ 1428 f='LHInsights';w[n]=w[f]=w[f]||function(n,d){ 1429 (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) 1430 })(window,document, 'script', 'lhi', '//www.lhinsights.com/agent.js', '@settings_Leadhub_Pixel_ID'); 1431 lhi('pageview'); 1432 </script> 1433 <!-- End Leadhub Pixel Code --> 1434 } 1435 1436 <script> 1437 // Global namespace used for fetching API feeds from DW 1438 var RMAPI = (RMAPI) ? RMAPI : {}; 1439 var ApiPreFix = "/Default.aspx?ID="; 1440 RMAPI.BoligCountFeed = ApiPreFix + "@settings_BoligCountFeed"; 1441 RMAPI.BoligListFeed = ApiPreFix + "@settings_BoligListFeed" + "&refpageid=@Pageview.Page.ID"; 1442 RMAPI.BoligListFeedErhverv = "@settings_BoligListFeedErhverv"; 1443 RMAPI.BoligListFeedMaegler = ApiPreFix + "@settings_BoligListFeedMaegler" + "&refpageid=@Pageview.Page.ID"; 1444 RMAPI.BoligSearchFeed = ApiPreFix + "@settings_BoligSearchFeed"; 1445 RMAPI.BoligMapFeed = ApiPreFix + "@settings_BoligMapFeed"; 1446 RMAPI.Boligagent = "@settings_Boligagent"; 1447 RMAPI.IsErhverv = @isErhverv.ToString().ToLower(); 1448 RMAPI.ProductGroupFilter = "@productGroupFilter"; 1449 RMAPI.ButikId = "@butikId"; 1450 RMAPI.Boligvisning = false; 1451 RMAPI.RefPageId = "@Pageview.Page.ID"; 1452 RMAPI.Template = "@template"; 1453 RMAPI.SliderSettings = @JsonConvert.SerializeObject(Settings.Site); 1454 RMAPI.AdvisorSearchFeed = "@settings_AdvisorSearchFeed"; 1455 RMAPI.LoadingIcon = "@loadingIcon"; 1456 RMAPI.MarkerColor = "@markerColor"; 1457 RMAPI.IsBoligOne = "false"; 1458 RMAPI.mapMarkerUrl = "@mapMarkerUrl"; 1459 RMAPI.settings_ForgotPwPage = "@settings_ForgotPwPage"; 1460 </script> 1461 1462 @if (!string.IsNullOrEmpty(settings_Facebook_App_ID.ToString())) 1463 { 1464 <!-- Facebook Pixel Code --> 1465 <script> 1466 !function (f, b, e, v, n, t, s) { 1467 if (f.fbq) return; n = f.fbq = function () { 1468 n.callMethod ? 1469 n.callMethod.apply(n, arguments) : n.queue.push(arguments) 1470 }; 1471 if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0'; 1472 n.queue = []; t = b.createElement(e); t.async = !0; 1473 t.src = v; s = b.getElementsByTagName(e)[0]; 1474 s.parentNode.insertBefore(t, s) 1475 }(window, document, 'script', 1476 'https://connect.facebook.net/en_US/fbevents.js'); 1477 fbq('init', '@settings_Facebook_App_ID'); 1478 fbq('track', 'PageView'); 1479 </script> 1480 <noscript> 1481 <img height="1" width="1" src="https://www.facebook.com/tr?id=@settings_Facebook_App_ID&ev=PageView&noscript=1" /> 1482 </noscript> 1483 <!-- End Facebook Pixel Code --> 1484 } 1485 1486 <script type='text/javascript' src='https://platform-api.sharethis.com/js/sharethis.js#property=5d68cfaf5fea9f001288d9ac&product=inline-share-buttons' async='async'></script> 1487 1488 </head> 1489 1490 <body class="@template@bodyClass theme-@Pageview.Page.ItemType.ToLower()" data-spforgotpwtemplate="@forgotPwTemplate" data-spforgotpwsender="@forgotPwSender" data-spforgotpwsubject="@forgotPwSubject" data-spsalesassesmentid="@salesAssessmentPageId"> 1491 @if (!string.IsNullOrEmpty(settings_Google_Tag_Manager_ID_BoligOne.ToString())) 1492 { 1493 <!-- Google Tag Manager (noscript) --> 1494 <noscript> 1495 <iframe src="https://www.googletagmanager.com/ns.html?id=@settings_Google_Tag_Manager_ID_BoligOne.ToString()" 1496 height="0" width="0" style="display:none;visibility:hidden"></iframe> 1497 </noscript> 1498 <!-- End Google Tag Manager (noscript) --> 1499 } 1500 1501 @{ 1502 var agentUserGroup = GetValue("Real:Broker") as Dynamicweb.Security.UserManagement.UserGroup; 1503 var agentTitle = agentUserGroup != null ? agentUserGroup.CompanyName.IsNotNullOrEmpty() ? agentUserGroup.CompanyName : agentUserGroup.Name : string.Empty; 1504 string masterBrokerUrl = string.Empty; 1505 1506 if (string.IsNullOrEmpty(agentTitle)) 1507 { 1508 agentTitle = GetAgentTitleFromCurrentProduct(); 1509 masterBrokerUrl = GetMasterBrokerUrlFromCurrentProduct(); 1510 } 1511 } 1512 <div class="header__container container"> 1513 <div class="header__logo"> 1514 <a href="/" 1515 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.HomePageLink", "Gå til forsiden"))" 1516 title="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.HomePageLink", "Gå til forsiden"))"> 1517 <img src="@(logoUrl)" alt="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.LogoAlt", "RealMæglerne logo"))" /> 1518 </a> 1519 </div> 1520 <div class="header__title"> 1521 @if (!string.IsNullOrEmpty(agentTitle)) 1522 { 1523 var parts = agentTitle.Split(new[] { ' ' }, 2, StringSplitOptions.None); 1524 1525 <span>@parts[0]</span> 1526 1527 @if (parts.Length > 1) 1528 { 1529 <span> 1530 @if (!string.IsNullOrWhiteSpace(masterBrokerUrl)) 1531 { 1532 <a href="@masterBrokerUrl">@parts[1]</a> 1533 } 1534 else 1535 { 1536 @parts[1] 1537 } 1538 </span> 1539 } 1540 } 1541 else 1542 { 1543 <span>@Translate("Custom:Header.Title", "RealMæglerne")</span> 1544 } 1545 </div> 1546 @if (userID > 0) 1547 { 1548 <div class="header__navigation d-none d-md-flex"> 1549 <div class="header__navigation"> 1550 <div class="header__Link"> 1551 <ul> 1552 <li class="d-flex align-items-center"> 1553 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"> 1554 <path d="M16.6663 17.5C16.6663 16.337 16.6663 15.7555 16.5228 15.2824C16.1996 14.217 15.366 13.3834 14.3006 13.0602C13.8275 12.9167 13.246 12.9167 12.083 12.9167H7.91634C6.75337 12.9167 6.17189 12.9167 5.69872 13.0602C4.63339 13.3834 3.79971 14.217 3.47654 15.2824C3.33301 15.7555 3.33301 16.337 3.33301 17.5M13.7497 6.25C13.7497 8.32107 12.0707 10 9.99967 10C7.92861 10 6.24967 8.32107 6.24967 6.25C6.24967 4.17893 7.92861 2.5 9.99967 2.5C12.0707 2.5 13.7497 4.17893 13.7497 6.25Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> 1555 </svg> 1556 <a class="ml-2" 1557 href="/Default.aspx?ID=@settings_MinSide" 1558 target="_blank" 1559 aria-label="@Translate("Custom:Accessibility.MyAccountLink", "Gå til Mit RealMæglerne - åbner i nyt vindue")"> 1560 @Translate("Mit RealMæglerne") 1561 </a> 1562 </li> 1563 </ul> 1564 </div> 1565 </div> 1566 </div> 1567 1568 } 1569 else 1570 { 1571 <div class="header__navigation d-none d-md-flex"> 1572 <div class="header__navigation"> 1573 <div class="header__Link"> 1574 <ul> 1575 <li class="d-flex align-items-center"> 1576 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none"> 1577 <path d="M16.6663 17.5C16.6663 16.337 16.6663 15.7555 16.5228 15.2824C16.1996 14.217 15.366 13.3834 14.3006 13.0602C13.8275 12.9167 13.246 12.9167 12.083 12.9167H7.91634C6.75337 12.9167 6.17189 12.9167 5.69872 13.0602C4.63339 13.3834 3.79971 14.217 3.47654 15.2824C3.33301 15.7555 3.33301 16.337 3.33301 17.5M13.7497 6.25C13.7497 8.32107 12.0707 10 9.99967 10C7.92861 10 6.24967 8.32107 6.24967 6.25C6.24967 4.17893 7.92861 2.5 9.99967 2.5C12.0707 2.5 13.7497 4.17893 13.7497 6.25Z" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" /> 1578 </svg> 1579 <a class="ml-2" 1580 href="javascript:panelLogin()" 1581 aria-label="@Translate("Custom:Accessibility.Login", "Login - åbner i sidepanel")"> 1582 @Translate("Login") 1583 </a> 1584 </li> 1585 </ul> 1586 </div> 1587 </div> 1588 </div> 1589 } 1590 <div class="header__search flex-column flex-md-row js-mainsearch" 1591 role="button" 1592 tabindex="0" 1593 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.OpenSearch", "Åbn søgeformular"))"> 1594 @Translate("Søg bolig") 1595 </div> 1596 <div class="header__navigation"> 1597 <!-- ACCESSIBILITY: Consider using <nav> element for navigation area --> 1598 <div class="header__navigation-icon menu-slide" 1599 role="button" 1600 tabindex="0" 1601 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.OpenMenu", "Åbn hovedmenu"))"> 1602 <div class="d-none d-md-block"> 1603 @Translate("Menu") 1604 </div> 1605 </div> 1606 </div> 1607 </div> 1608 <div class="search-modal" role="dialog" aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.SearchModal", "Søgeformular"))"> 1609 1610 @if (Converter.ToString(Pageview.Area.Item["Type"]) == "real") 1611 { 1612 <div class="main-search-form"> 1613 <i class="fal fa-times float-right fa-2x js-close-search close-search" 1614 role="button" 1615 tabindex="0" 1616 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.CloseSearch", "Luk søgeformular"))"></i> 1617 <div class="row mb-3 align-items-center"> 1618 <div class="col-xs-12 col-md-3 border-right"> 1619 <h3>@Translate("Smartpage:Search.Søg bolig", "Søg bolig")</h3> 1620 </div> 1621 <div class="col-xs-12 col-md-9 home-count d-none d-md-block"> 1622 <span class="search-count" id="searchCounterMain">0</span> <span class="position-relative">@Translate("Smartpage:Search.BoligerTilSalg", "Boliger til salg")<span class="loader js-loader"></span></span> 1623 1624 </div> 1625 </div> 1626 1627 <form id="main-search" class="searchbar-wrapper" action="/Default.aspx" method="GET" role="search"> 1628 <input type="hidden" name="ID" value='@searchPageId' id="searchPageId" disabled="disabled" /> 1629 <div class="row form-wrapper no-gutters"> 1630 1631 <div class="col-xs-12 col-md-5 col-searchbar"> 1632 <div class="searchbar"> 1633 <input type="text" 1634 name="@querySearchNameAttr" 1635 id="searchfield" 1636 class="search-input" 1637 placeholder="Postnummer, by, vej eller sagsnummer" 1638 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.SearchField", "Indtast postnummer, by, vej eller sagsnummer"))" 1639 tabindex="1" 1640 value="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(querySearch)" /> 1641 <input type="hidden" id="zipcodefrom" name="zipcodefrom" value="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(queryZipCodeFrom)" /> 1642 <input type="hidden" id="zipcodeto" name="zipcodeto" value="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(queryZipCodeTo)" /> 1643 </div> 1644 </div> 1645 <div class="col-xs-12 col-md-5"> 1646 <div class="row no-gutters"> 1647 <div class="col-xs-12 col-md-6 input-col"> 1648 <div class="dropdown"> 1649 <button class="btn btn-dropdown dropdown-toggle reverse" 1650 type="button" 1651 id="Boligtype" 1652 data-toggle="dropdown" 1653 aria-haspopup="true" 1654 aria-expanded="false" 1655 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.PropertyTypeDropdown", "Vælg boligtype"))"> 1656 @Translate("Smartpage:Search.Boligtype", "Boligtype") 1657 </button> 1658 <div class="dropdown-menu box-shadow bolig-dropdown-container" aria-labelledby="Boligtype"> 1659 <ul class="bolig-dropdown list-unstyled"> 1660 @{ 1661 RenderBoligtypeCheckboxesDropdown(); 1662 } 1663 </ul> 1664 <span class="border-fat"></span> 1665 <button class="btn btn-primary js-close-dropdown">@Translate("Smartpage:Search.Anvend", "Anvend")</button> 1666 </div> 1667 </div> 1668 </div> 1669 <div class="col-xs-12 col-md-6 input-col"> 1670 <div class="dropdown"> 1671 <button class="btn btn-dropdown dropdown-toggle reverse" 1672 type="button" 1673 id="Pris" 1674 data-toggle="dropdown" 1675 aria-haspopup="true" 1676 aria-expanded="false" 1677 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.PriceDropdown", "Vælg prisinterval"))"> 1678 @Translate("Smartpage:Search.Pris", "Pris") 1679 </button> 1680 <div class="dropdown-menu box-shadow dropdown-price js-dropdown-price" aria-labelledby="Pris"> 1681 <input name="pricemin" type="text" class="form-control mb-10 js-auto-thousand js-pricemin-frontpage-input" placeholder="@HtmlEncoder.HtmlAttributeEncode(Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris"))" value="@(!string.IsNullOrEmpty(Context.Current.Request.QueryString["pricemin"]) ? Context.Current.Request.QueryString["pricemin"] : "")" /> 1682 <select class="form-control js-pricemin-frontpage-select js-input-min-select mb-10"> 1683 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris")</option> 1684 @for (var i = 0; i <= 10000000; i += 100000) 1685 { 1686 if (i == 10000000) 1687 { 1688 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")+'>@Convert.ToInt32(i).ToString("N0")+</option> 1689 } 1690 else 1691 { 1692 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option> 1693 } 1694 } 1695 </select> 1696 1697 <input type="text" name="pricemax" class="form-control js-auto-thousand js-pricemax-frontpage-input" placeholder="@HtmlEncoder.HtmlAttributeEncode(Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris"))" value="@(!string.IsNullOrEmpty(Context.Current.Request.QueryString["pricemax"]) ? Context.Current.Request.QueryString["pricemax"] : "")" /> 1698 <select class="form-control js-pricemax-frontpage-select js-input-max-select"> 1699 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris")</option> 1700 @for (var i = 0; i <= 10000000; i += 100000) 1701 { 1702 if (i == 10000000) 1703 { 1704 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")+'>@Convert.ToInt32(i).ToString("N0")+</option> 1705 } 1706 else 1707 { 1708 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option> 1709 } 1710 } 1711 </select> 1712 </div> 1713 </div> 1714 </div> 1715 </div> 1716 </div> 1717 <div class="col-xs-12 col-md-2 d-none d-md-block"> 1718 <button type="submit" 1719 class="btn btn-block btn-search" 1720 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.ExecuteSearch", "Udfør søgning"))"> 1721 <i class="fa fa-search" aria-hidden="true"></i> @Translate("Smartpage:Search.Søg", "Søg") 1722 </button> 1723 </div> 1724 </div> 1725 1726 <div class="row moresearch-btn no-gutters"> 1727 <div class="col-sm-12"> 1728 <div class="row align-items-center no-gutters"> 1729 <div class="col-12 col-md-4"> 1730 <button class="btn-blank js-search-collapse" 1731 type="button" 1732 data-toggle="collapse" 1733 data-target="#moreSearch-master" 1734 aria-expanded="false" 1735 aria-controls="moreSearch" 1736 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.MoreSearchOptions", "Vis eller skjul flere søgemuligheder"))"> 1737 <span class="moreSearch-text"> 1738 <i class="fas fa-plus open-close" aria-hidden="true"></i> 1739 <span class="not-open white">@Translate("Smartpage:Search.Flere søgemuligheder", "Flere søgemuligheder")</span> 1740 <span class="open white"><span class="js-filter-count">0</span> @Translate("Smartpage:Search.FiltreAnvendt", "filtre anvendt")</span> 1741 </span> 1742 </button> 1743 </div> 1744 <div class="col-6 col-md-2 mb-xs-4"> 1745 <a class="js-reset reset-btn white" 1746 role="button" 1747 tabindex="0" 1748 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.ResetFilters", "Nulstil alle filtre"))"> 1749 @Translate("Smartpage:Search.NulstilValg", "Nulstil valg") 1750 </a> 1751 </div> 1752 </div> 1753 1754 <div class="collapse" id="moreSearch-master"> 1755 1756 <h4 class="mt-20"><b>@Translate("Smartpage:Search.Bolig", "Bolig")</b></h4> 1757 <div class="row align-items-end mb-30"> 1758 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"> 1759 <div class="filter-container row"> 1760 <label class="d-block col-12">@Translate("Smartpage:Search.Boligareal", "Boligareal")</label> 1761 <div class="col-6 pr-sm-0 pr-2"> 1762 <input type="text" 1763 name="boligarealmin" 1764 id="boligarealmin" 1765 class="form-control js-boligarealmin-frontpage-input js-count" 1766 placeholder="@HtmlEncoder.HtmlAttributeEncode(Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2"))" 1767 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.MinLivingArea", "Minimum boligareal i kvadratmeter"))" 1768 value="@(!string.IsNullOrEmpty(Context.Current.Request.QueryString["boligarealmin"]) ? Context.Current.Request.QueryString["boligarealmin"] : "")" /> 1769 <select class="form-control js-boligarealmin-frontpage-select js-count"> 1770 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")</option> 1771 @for (var i = 0; i <= 300; i += 10) 1772 { 1773 if (i == 300) 1774 { 1775 <option>@i+</option> 1776 } 1777 else 1778 { 1779 <option>@i</option> 1780 } 1781 } 1782 </select> 1783 1784 </div> 1785 <div class="col-6 pl-sm-0 pl-2"> 1786 <input type="text" 1787 name="boligarealmax" 1788 id="boligarealmax" 1789 class="form-control js-boligarealmax-frontpage-input js-count" 1790 placeholder="@HtmlEncoder.HtmlAttributeEncode(Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2"))" 1791 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.MaxLivingArea", "Maksimum boligareal i kvadratmeter"))" 1792 value="@(!string.IsNullOrEmpty(Context.Current.Request.QueryString["boligarealmax"]) ? Context.Current.Request.QueryString["boligarealmax"] : "")" /> 1793 <select class="form-control js-boligarealmax-frontpage-select js-count"> 1794 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")</option> 1795 @for (var i = 0; i <= 300; i += 10) 1796 { 1797 if (i == 300) 1798 { 1799 <option>@i+</option> 1800 } 1801 else 1802 { 1803 <option>@i</option> 1804 } 1805 } 1806 </select> 1807 1808 </div> 1809 </div> 1810 </div> 1811 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"> 1812 <div class="filter-container row"> 1813 <label class="d-block col-12">@Translate("Smartpage:Search.Grundareal", "Grundareal")</label> 1814 <div class="col-6 pr-sm-0 pr-2"> 1815 <input type="text" name="grundarealmin" id="grundarealmin" class="form-control js-grundarealmin-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")' value='@(!string.IsNullOrEmpty(Context.Current.Request.QueryString["grundarealmin"]) ? Context.Current.Request.QueryString["grundarealmin"] : "")' /> 1816 <select class="form-control js-grundarealmin-frontpage-select js-count"> 1817 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")</option> 1818 @for (var i = 0; i <= 10000; i += 100) 1819 { 1820 if (i == 10000) 1821 { 1822 <option>@i+</option> 1823 } 1824 else 1825 { 1826 <option>@i</option> 1827 } 1828 } 1829 </select> 1830 </div> 1831 <div class="col-6 pl-sm-0 pl-2"> 1832 <input type="text" name="grundarealmax" id="grundarealmax" class="form-control js-grundarealmax-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")' value='@(!string.IsNullOrEmpty(Context.Current.Request.QueryString["grundarealmax"]) ? Context.Current.Request.QueryString["grundarealmax"] : "")' /> 1833 <select class="form-control js-grundarealmax-frontpage-select js-count"> 1834 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")</option> 1835 @for (var i = 0; i <= 10000; i += 100) 1836 { 1837 if (i == 10000) 1838 { 1839 <option>@i+</option> 1840 } 1841 else 1842 { 1843 <option>@i</option> 1844 } 1845 } 1846 </select> 1847 </div> 1848 </div> 1849 </div> 1850 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"> 1851 <div class="filter-container row"> 1852 <label class="d-block col-12">Antal rum</label> 1853 <div class="col-6 pr-sm-0 pr-2"> 1854 <select name="roomsmin" 1855 id="roomsmin" 1856 class="form-control reverse js-roomsmin-select js-count" 1857 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.MinRooms", "Minimum antal rum"))"> 1858 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Min", "Min")</option> 1859 @{ 1860 RenderSelectValue("1", "1", "roomsmin"); 1861 RenderSelectValue("2", "2", "roomsmin"); 1862 RenderSelectValue("3", "3", "roomsmin"); 1863 RenderSelectValue("4", "4", "roomsmin"); 1864 RenderSelectValue("5+", "5", "roomsmin"); 1865 } 1866 </select> 1867 </div> 1868 <div class="col-6 pl-sm-0 pl-2"> 1869 <select name="roomsmax" 1870 id="roomsmax" 1871 class="form-control reverse js-roomsmax-select js-count" 1872 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.MaxRooms", "Maksimum antal rum"))"> 1873 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Max", "Max")</option> 1874 @{ 1875 RenderSelectValue("1", "1", "roomsmax"); 1876 RenderSelectValue("2", "2", "roomsmax"); 1877 RenderSelectValue("3", "3", "roomsmax"); 1878 RenderSelectValue("4", "4", "roomsmax"); 1879 RenderSelectValue(Translate("Smartpage:Rooms.5", "5"), "5", "roomsmax"); 1880 } 1881 </select> 1882 </div> 1883 </div> 1884 </div> 1885 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"> 1886 <div class="row"> 1887 <div class="col-12 pr-2"> 1888 <div class="filter-container"> 1889 <label class="d-block">Energimærke</label> 1890 <select name="energylabel" 1891 id="energylabel" 1892 class="form-control reverse js-energylabel-select js-count" 1893 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.EnergyLabel", "Vælg energimærke"))"> 1894 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Vælg", "Vælg")</option> 1895 <option value="01">G</option> 1896 <option value="02">F</option> 1897 <option value="03">E</option> 1898 <option value="04">D</option> 1899 <option value="05">C</option> 1900 <option value="06">B</option> 1901 <option value="07">A</option> 1902 <option value="08">A2010</option> 1903 <option value="09">A2015</option> 1904 <option value="10">A2020+</option> 1905 </select> 1906 </div> 1907 </div> 1908 </div> 1909 </div> 1910 <div class="col-12 col-sm-6 col-lg-3 mt-3"> 1911 <h4 class=""><b>@Translate("Smartpage:Search.Økonomi", "Økonomi")</b></h4> 1912 <div class="filter-container row"> 1913 <label class="d-block col-12">@Translate("Smartpage:Search.Ejerudgift/boligydelse pr. måned", "Ejerudgift/boligydelse pr. måned")</label> 1914 <div class="col-6 pr-sm-0 pr-2"> 1915 <input type="text" name="subsidymin" id="subsidymin" class="form-control js-subsidymin-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.MinDKK", "Min. DKK")' value='@(!string.IsNullOrEmpty(Context.Current.Request.QueryString["subsidymin"]) ? Context.Current.Request.QueryString["subsidymin"] : "")' /> 1916 <select class="form-control js-subsidymin-frontpage-select js-count"> 1917 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MinDKK", "Min. DKK")</option> 1918 @for (var i = 0; i <= 25000; i += 1250) 1919 { 1920 if (i == 25000) 1921 { 1922 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")+</option> 1923 } 1924 else 1925 { 1926 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")</option> 1927 } 1928 } 1929 </select> 1930 </div> 1931 <div class="col-6 pl-sm-0 pl-2"> 1932 <input type="text" name="subsidymax" id="subsidymax" class="form-control js-subsidymax-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.MaxDKK", "Max. DKK")' value='@(!string.IsNullOrEmpty(Context.Current.Request.QueryString["subsidymax"]) ? Context.Current.Request.QueryString["subsidymax"] : "")' /> 1933 <select class="form-control js-subsidymax-frontpage-select js-count"> 1934 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MaxDKK", "Max. DKK")</option> 1935 @for (var i = 0; i <= 25000; i += 1250) 1936 { 1937 if (i == 25000) 1938 { 1939 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")+</option> 1940 } 1941 else 1942 { 1943 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")</option> 1944 } 1945 } 1946 </select> 1947 </div> 1948 </div> 1949 </div> 1950 <div class="col-12 col-sm-6 col-lg-4 offset-lg-5 mt-3 mt-sm-0"> 1951 <button type="submit" 1952 class="btn btn-block btn-search" 1953 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.ApplyFilters", "Anvend søgefiltre"))"> 1954 <i class="fa fa-search" aria-hidden="true"></i> @Translate("Smartpage:Search.AnvendFiltre", "Anvend filtre") 1955 </button> 1956 </div> 1957 </div> 1958 </div> 1959 </div> 1960 </div> 1961 <div class="row d-block d-md-none form-wrapper no-gutters"> 1962 <div class="col-xs-12 col-md-2"> 1963 <button type="submit" 1964 class="btn btn-block btn-search" 1965 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.ExecuteSearchMobile", "Udfør søgning"))"> 1966 <i class="fa fa-search" aria-hidden="true"></i> @Translate("Smartpage:Search.Søg", "Søg") 1967 </button> 1968 </div> 1969 </div> 1970 1971 1972 </form> 1973 </div> 1974 } 1975 else 1976 { 1977 <div class="main-search-form center"> 1978 <i class="fal fa-times float-right fa-2x js-close-search" 1979 role="button" 1980 tabindex="0" 1981 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.CloseSearch", "Luk søgeformular"))"></i> 1982 <div class="row mb-3 align-items-center"> 1983 <div class="col-xs-12 col-md-5 border-right"> 1984 <h3>@Translate("Smartpage:Search.Søg bolig", "Søg bolig")</h3> 1985 </div> 1986 <div class="col-xs-12 col-md-7 home-count d-none d-md-block"> 1987 <span class="search-count" id="searchCounterMain">0</span> <span>@Translate("Smartpage:Search.BoligerTilSalg", "Boliger til salg")</span> 1988 </div> 1989 </div> 1990 1991 <form id="main-search" class="searchbar-wrapper" action="/Default.aspx" method="GET" role="search"> 1992 <input type="hidden" name="ID" value='@searchPageId' id="searchPageId" disabled="disabled" /> 1993 <div class="row form-wrapper no-gutters"> 1994 1995 <div class="col-12 mb-10"> 1996 <div class="searchbar"> 1997 <input type="text" 1998 name="@querySearchNameAttr" 1999 id="searchfield" 2000 class="search-input" 2001 placeholder="Postnummer, by, vej eller sagsnummer" 2002 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.SearchField", "Indtast postnummer, by, vej eller sagsnummer"))" 2003 tabindex="1" 2004 value='@querySearch' /> 2005 <input type="hidden" id="zipcodefrom" name="zipcodefrom" value='@queryZipCodeFrom' /> 2006 <input type="hidden" id="zipcodeto" name="zipcodeto" value='@queryZipCodeTo' /> 2007 </div> 2008 </div> 2009 <div class="col-xs-12 col-md-8"> 2010 <div class="row no-gutters"> 2011 <div class="col-xs-12 col-md-6 input-col"> 2012 <div class="dropdown"> 2013 <button class="btn btn-dropdown dropdown-toggle reverse js-count" type="button" id="Boligtype" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 2014 @Translate("Smartpage:Search.Boligtype", "Boligtype") 2015 </button> 2016 <div class="dropdown-menu box-shadow bolig-dropdown-container" aria-labelledby="Boligtype"> 2017 <ul class="bolig-dropdown list-unstyled"> 2018 @{ 2019 RenderBoligtypeCheckboxesDropdown(); 2020 } 2021 </ul> 2022 <span class="border-fat"></span> 2023 <button class="btn btn-primary js-close-dropdown">@Translate("Smartpage:Search.Anvend", "Anvend")</button> 2024 </div> 2025 2026 </div> 2027 2028 </div> 2029 <div class="col-xs-12 col-md-6 input-col"> 2030 <div class="dropdown"> 2031 <button class="btn btn-dropdown dropdown-toggle reverse" type="button" id="Pris" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 2032 @Translate("Smartpage:Search.Pris", "Pris") 2033 </button> 2034 <div class="dropdown-menu box-shadow dropdown-price" aria-labelledby="Pris"> 2035 <input type="text" name="pricemin" class="form-control mb-10 js-auto-thousand js-pricemin-frontpage-input" placeholder='@Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris")' /> 2036 <select class="form-control js-pricemin-frontpage-select js-input-min-select mb-10"> 2037 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris")</option> 2038 @for (var i = 0; i <= 10000000; i += 100000) 2039 { 2040 if (i == 10000000) 2041 { 2042 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")+'>@Convert.ToInt32(i).ToString("N0")+</option> 2043 } 2044 else 2045 { 2046 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option> 2047 } 2048 } 2049 </select> 2050 2051 <input type="text" name="pricemax" class="form-control js-auto-thousand js-pricemax-frontpage-input" placeholder='@Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris")' /> 2052 <select class="form-control js-pricemax-frontpage-select js-input-max-select"> 2053 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris")</option> 2054 @for (var i = 0; i <= 10000000; i += 100000) 2055 { 2056 if (i == 10000000) 2057 { 2058 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")+'>@Convert.ToInt32(i).ToString("N0")+</option> 2059 } 2060 else 2061 { 2062 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option> 2063 } 2064 } 2065 </select> 2066 </div> 2067 </div> 2068 </div> 2069 </div> 2070 </div> 2071 <div class="col-xs-12 col-md-4 d-none d-md-block"> 2072 <button type="submit" 2073 class="btn btn-block btn-search" 2074 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.ExecuteSearch", "Udfør søgning"))"> 2075 <i class="fa fa-search" aria-hidden="true"></i> @Translate("Smartpage:Search.Søg", "Søg") 2076 </button> 2077 </div> 2078 </div> 2079 2080 <div class="row moresearch-btn no-gutters"> 2081 <div class="col-sm-12"> 2082 <div class="row align-items-center no-gutters"> 2083 <div class="col-12 col-md-5"> 2084 <button class="btn-blank js-search-collapse" type="button" data-toggle="collapse" data-target="#moreSearch-master" aria-expanded="false" aria-controls="moreSearch-master"> 2085 <span class="moreSearch-text"><i class="fas fa-plus open-close white"></i> <span class="not-open white">@Translate("Smartpage:Search.Flere søgemuligheder", "Flere søgemuligheder")</span> <span class="open white"><span class="js-filter-count">0</span> @Translate("Smartpage:Search.FiltreAnvendt", "filtre anvendt") </span></span> 2086 </button> 2087 </div> 2088 <div class="col-6 col-md-3 mb-xs-4"> 2089 <a class="js-reset reset-btn white">@Translate("Smartpage:Search.NulstilValg", "Nulstil valg")</a> 2090 </div> 2091 <div class="col-6 col-md-4 mb-xs-4"> 2092 <div class="parent-purchases"> 2093 <label class="checkbox-container white"> 2094 @Translate("Smartpage:Search.Forældrekøbegnet", "Forældrekøbegnet") 2095 <input type="checkbox" name="foraeldrekoebegnet" value="true" class="js-input-check"> 2096 <span class="checkmark grey"></span> 2097 </label> 2098 </div> 2099 </div> 2100 </div> 2101 2102 <div class="collapse" id="moreSearch-master"> 2103 2104 <h4 class="mt-20"><b>@Translate("Smartpage:Search.Bolig", "Bolig")</b></h4> 2105 <div class="row align-items-end mb-30"> 2106 <div class="col-12 col-sm-6 col-lg-6 mb-3 mb-lg-0"> 2107 <div class="filter-container row"> 2108 <label class="d-block col-12">@Translate("Smartpage:Search.Boligareal", "Boligareal")</label> 2109 <div class="col-6 pr-sm-0 pr-2"> 2110 <input type="text" name="boligarealmin" id="boligarealmin" class="form-control js-boligarealmin-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")' /> 2111 <select class="form-control js-boligarealmin-frontpage-select js-count"> 2112 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")</option> 2113 @for (var i = 0; i <= 300; i += 10) 2114 { 2115 if (i == 300) 2116 { 2117 <option>@i+</option> 2118 } 2119 else 2120 { 2121 <option>@i</option> 2122 } 2123 } 2124 </select> 2125 </div> 2126 <div class="col-6 pl-sm-0 pl-2"> 2127 <input type="text" name="boligarealmax" id="boligarealmax" class="form-control js-boligarealmax-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")' /> 2128 <select class="form-control js-boligarealmax-frontpage-select js-count"> 2129 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")</option> 2130 @for (var i = 0; i <= 300; i += 10) 2131 { 2132 if (i == 300) 2133 { 2134 <option>@i+</option> 2135 } 2136 else 2137 { 2138 <option>@i</option> 2139 } 2140 } 2141 </select> 2142 </div> 2143 </div> 2144 </div> 2145 <div class="col-12 col-sm-6 col-lg-6 mb-3 mb-lg-0"> 2146 <div class="filter-container row"> 2147 <label class="d-block col-12">@Translate("Smartpage:Search.Grundareal", "Grundareal")</label> 2148 <div class="col-6 pr-sm-0 pr-2"> 2149 <input type="text" name="grundarealmin" id="grundarealmin" class="form-control js-grundarealmin-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")' /> 2150 <select class="form-control js-grundarealmin-frontpage-select js-count"> 2151 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")</option> 2152 @for (var i = 0; i <= 10000; i += 100) 2153 { 2154 if (i == 10000) 2155 { 2156 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")+</option> 2157 } 2158 else 2159 { 2160 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")</option> 2161 } 2162 } 2163 </select> 2164 </div> 2165 <div class="col-6 pl-sm-0 pl-2"> 2166 <input type="text" name="grundarealmax" id="grundarealmax" class="form-control js-grundarealmax-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")' /> 2167 <select class="form-control js-grundarealmax-frontpage-select"> 2168 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")</option> 2169 @for (var i = 0; i <= 10000; i += 100) 2170 { 2171 if (i == 10000) 2172 { 2173 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")+</option> 2174 } 2175 else 2176 { 2177 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")</option> 2178 } 2179 } 2180 </select> 2181 </div> 2182 </div> 2183 </div> 2184 <div class="col-12 col-sm-6 col-lg-6 mb-3 mb-lg-0"> 2185 <div class="filter-container row"> 2186 <label class="d-block col-12">Antal rum</label> 2187 2188 <div class="col-6 pr-sm-0 pr-2"> 2189 <select name="roomsmin" id="roomsmin" class="form-control reverse js-roomsmin-select js-count"> 2190 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Min", "Min")</option> 2191 <option value="1">1</option> 2192 <option value="2">2</option> 2193 <option value="3">3</option> 2194 <option value="4">4</option> 2195 <option value="5">5+</option> 2196 </select> 2197 </div> 2198 <div class="col-6 pl-sm-0 pl-2"> 2199 <select name="roomsmax" id="roomsmax" class="form-control reverse js-roomsmax-select js-count"> 2200 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Max", "Max")</option> 2201 <option value="1">1</option> 2202 <option value="2">2</option> 2203 <option value="3">3</option> 2204 <option value="4">4</option> 2205 <option value="5">5+</option> 2206 </select> 2207 </div> 2208 </div> 2209 </div> 2210 <div class="col-12 col-sm-6 col-lg-6 mb-3 mb-lg-0"> 2211 <div class="row"> 2212 <div class="col-12 pr-2"> 2213 <div class="filter-container"> 2214 <label class="d-block">Energimærke</label> 2215 <select name="energylabel" id="energylabel" class="form-control reverse js-energylabel-select js-count"> 2216 <option disabled selected="selected">@Translate("Smartpage:Search.Vælg", "Vælg")</option> 2217 <option value="01">G</option> 2218 <option value="02">F</option> 2219 <option value="03">E</option> 2220 <option value="04">D</option> 2221 <option value="05">C</option> 2222 <option value="06">B</option> 2223 <option value="07">A</option> 2224 <option value="08">A2010</option> 2225 <option value="09">A2015</option> 2226 <option value="10">A2020+</option> 2227 </select> 2228 </div> 2229 </div> 2230 </div> 2231 </div> 2232 <div class="col-12 col-sm-6 col-lg-6 mt-3"> 2233 <h4 class=""><b>@Translate("Smartpage:Search.Økonomi", "Økonomi")</b></h4> 2234 <div class="filter-container row"> 2235 <label class="d-block col-12">@Translate("Smartpage:Search.Ejerudgift/boligydelse pr. måned", "Ejerudgift/boligydelse pr. måned")</label> 2236 <div class="col-6 pr-sm-0 pr-2"> 2237 <input type="text" name="subsidymin" id="subsidymin" class="form-control js-subsidymin-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Min", "Min")' /> 2238 <select class="form-control js-subsidymin-frontpage-select js-count"> 2239 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MinDKK", "Min. DKK")</option> 2240 @for (var i = 0; i <= 25000; i += 1250) 2241 { 2242 if (i == 25000) 2243 { 2244 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")+</option> 2245 } 2246 else 2247 { 2248 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")</option> 2249 } 2250 } 2251 </select> 2252 </div> 2253 <div class="col-6 pl-sm-0 pl-2"> 2254 <input type="text" name="subsidymax" id="subsidymax" class="form-control js-subsidymax-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Max", "Max")' /> 2255 <select class="form-control js-subsidymax-frontpage-select js-count"> 2256 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MaxDKK", "Max. DKK")</option> 2257 @for (var i = 0; i <= 25000; i += 1250) 2258 { 2259 if (i == 25000) 2260 { 2261 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")+</option> 2262 } 2263 else 2264 { 2265 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")</option> 2266 } 2267 } 2268 </select> 2269 </div> 2270 </div> 2271 </div> 2272 <div class="col-12 col-sm-6 col-lg-6 mt-3 mt-sm-0"> 2273 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search"></i> @Translate("Smartpage:Search.AnvendFiltre", "Anvend filtre")</button> 2274 </div> 2275 </div> 2276 </div> 2277 </div> 2278 </div> 2279 <div class="row d-block d-md-none form-wrapper no-gutters"> 2280 <div class="col-xs-12 col-md-2"> 2281 <button type="submit" 2282 class="btn btn-block btn-search dark-red" 2283 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.ExecuteSearchMobile", "Udfør søgning"))"> 2284 <i class="fa fa-search" aria-hidden="true"></i> @Translate("Smartpage:Search.Søg", "Søg") 2285 </button> 2286 </div> 2287 </div> 2288 2289 2290 </form> 2291 </div> 2292 } 2293 2294 </div> 2295 @{ 2296 RenderSlideMenu(false, false, Converter.ToString(settings_Maeglersogning)); 2297 } 2298 2299 @if (isBrokerPage && Pageview.Page.ItemType != "AgentPage") 2300 { 2301 <section class="maegler-navbar"> 2302 @RenderNavigation(new 2303 { 2304 id = "navbar-main", 2305 cssclass = "dwnavigation", 2306 template = "ul_li.xslt", 2307 StartLevel = 1, 2308 EndLevel = 1 2309 }) 2310 </section> 2311 } 2312 2313 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2314 @using System 2315 @using RealMaeglerne.Dynamicweb; 2316 @using Newtonsoft.Json; 2317 @using Dynamicweb; 2318 @using Dynamicweb.Core; 2319 @using Custom.Integration.Brokers; 2320 @using static RealMaeglerne.Library.Helper; 2321 @using System.Text.RegularExpressions; 2322 2323 2324 @GetValue("Title( Mæglersøgning )") 2325 @GetValue("Description( Søgeside: Mæglere )") 2326 @{ 2327 string AreaID = GetGlobalValue("Global:Area.ID"); 2328 2329 string query = ""; 2330 string queryDisplay = ""; 2331 if (!String.IsNullOrEmpty(Context.Current.Request.QueryString["q"])) 2332 { 2333 query = Context.Current.Request.QueryString["q"]; 2334 queryDisplay = Dynamicweb.Core.Encoders.HtmlEncoder.HtmlEncode(query); 2335 }; 2336 2337 string mapMarkerUrlFindBroker = TemplateUrl + "assets/images/logo-real.png"; 2338 int mapMarkerHeight = 32; 2339 int mapMarkerWidth = 32; 2340 2341 bool Erhverv = false; 2342 2343 if (!string.IsNullOrEmpty(GetString("Item.Page.Erhverv")) && GetBoolean("Item.Page.Erhverv")) 2344 { 2345 Erhverv = true; 2346 } 2347 2348 string FindBrokerPage = settings_Maeglersogning.ToString(); 2349 string FindBrokerUrl = "/Default.aspx"; 2350 string FindBrokerUrlId = Converter.ToString(settings_Maeglersogning).Split(new string[] { "?Id=" }, StringSplitOptions.None)[1]; 2351 2352 IEnumerable<Dynamicweb.Security.UserManagement.UserGroup> brokers = null; 2353 2354 if (string.IsNullOrEmpty(query)) 2355 { 2356 brokers = Search.Broker(); 2357 } 2358 else 2359 { 2360 brokers = Search.Broker(query, false); 2361 } 2362 2363 if (Erhverv) 2364 { 2365 brokers = brokers.Where(x => x != null && x.Item() != null && x.Item().GetBool("Erhvervsm_gler")); 2366 } 2367 2368 brokers = brokers.Where(b => Converter.ToInt32(Regex.Match(b.Name, @"\d+").Value) < 900); 2369 2370 // If there only is one broker redirect to the broker page to avoid unnecessary clicks 2371 // This should maybe be done in backend but that would require us to fetch brokers twice or alter the get brokers logic 2372 if (brokers.Count() == 1) 2373 { 2374 Context.Current.Response.Redirect("/" + brokers.FirstOrDefault().Item().GetString("CBMedlemsnummer").Substring(1)); 2375 } 2376 2377 List<Dictionary<string, string>> brokersMin = new List<Dictionary<string, string>>(); 2378 2379 var myBrokerID = 0; 2380 if (MyBroker.Broker != null) 2381 { 2382 myBrokerID = MyBroker.Broker.ID; 2383 } 2384 } 2385 2386 <section class="search-broker"> 2387 <div class="broker-header"> 2388 <div class="container"> 2389 <div class="row"> 2390 <div class="col-12 col-md-8 offset-md-2 col-lg-6 offset-lg-3 text-center"> 2391 @if (Erhverv) 2392 { 2393 <h1>@Translate("Ejendomme til salg/leje", "Ejendomme til salg/leje")</h1> 2394 } 2395 else 2396 { 2397 if (brokers.Count() > 0 && !string.IsNullOrEmpty(query)) 2398 { 2399 string noun = "mæglere"; 2400 if (brokers.Count() == 1) 2401 { 2402 noun = "mægler"; 2403 } 2404 <h1><b data-attr="count">@brokers.Count()</b> @(noun) i nærheden</h1> 2405 <p> 2406 <a href='@(FindBrokerUrl)?ID=@(FindBrokerUrlId)'>@Translate("find-broker-show-all", "Vis alle mæglere")</a> 2407 </p> 2408 } 2409 else 2410 { 2411 <h1>@Translate("find-broker-title", "Find mægler")</h1> 2412 } 2413 <form action='@(FindBrokerUrl)' method="GET"> 2414 <input type="hidden" name="id" value="@(FindBrokerUrlId)"> 2415 <div class="input-group"> 2416 <input type="text" class="form-control ta-postnummer ta-submit-on-selec" name="q" placeholder="Indtast post nr. eller by" value="@queryDisplay"> 2417 <div class="input-group-append"> 2418 <button class="btn btn-primary" type="submit"> 2419 @Translate("find-broker-submitbtn", "Find din mægler") 2420 </button> 2421 </div> 2422 </div> 2423 2424 </form> 2425 } 2426 <br /><br /> 2427 </div> 2428 </div> 2429 </div> 2430 </div> 2431 2432 @if (!string.IsNullOrEmpty(Context.Current.Request.QueryString["q"]) || brokers.Count() > 0) 2433 { 2434 <div class="container"> 2435 <div class="page"> 2436 <div class="content"> 2437 @if (brokers.Count() > 0) 2438 { 2439 <div class="broker-map"> 2440 <div id="map"></div> 2441 </div> 2442 if (!Erhverv) 2443 { 2444 <div class="broker-list row"> 2445 2446 @foreach (var broker in brokers.OrderBy(b => b.Item().GetString("CBMedlemsnummer"))) 2447 { 2448 int bID = broker.ID; 2449 string bAreaID = broker.Item().GetString("WebsiteId"); 2450 string medlemsnummer = broker.Item().GetString("CBMedlemsnummer"); 2451 2452 string bName = broker.Name; 2453 2454 if (!string.IsNullOrEmpty(broker.CompanyName)) 2455 { 2456 bName = broker.CompanyName; 2457 } 2458 string bMail = broker.Item().GetString("Email"); 2459 string imageUrl = broker.GeolocationIcon; 2460 string imageClass = ""; 2461 if (string.IsNullOrEmpty(imageUrl)) 2462 { 2463 imageUrl = "/Files/Templates/Designs/rm/assets/images/na-real.png"; 2464 imageClass = "na"; 2465 } 2466 2467 Dictionary<string, string> bObj = new Dictionary<string, string>(); 2468 bObj.Add("id", bID.ToString()); 2469 bObj.Add("name", bName); 2470 bObj.Add("position", broker.Item().GetString("GpsLng").Replace(",", ".") + ", " + broker.Item().GetString("GpsLat").Replace(",", ".")); 2471 brokersMin.Add(bObj); 2472 <div class="broker col-12 col-sm-6 col-md-3" data-id="@bID"> 2473 <a href="/@medlemsnummer.Substring(1)"> 2474 <div class="broker-img @imageClass" style="background-image:url('@imageUrl');"></div> 2475 </a> 2476 <div class="text"> 2477 <p> 2478 <b>@bName.Replace("RealMæglerne", "RealMæglerne<br>")</b><br> 2479 @broker.Address<br> 2480 @broker.ZipCode @broker.City<br> 2481 @if (!string.IsNullOrEmpty(bMail)) 2482 { 2483 <text>Mail: <a href='mailto:@bMail'>@bMail</a><br></text> 2484 } 2485 @if (!string.IsNullOrEmpty(broker.Telephone)) 2486 { 2487 <text>Tlf.: <a href="tel:@broker.Telephone">@FormatPhoneNumber(broker.Telephone)</a></text> 2488 } 2489 </p> 2490 </div> 2491 </div> 2492 } 2493 </div> 2494 } 2495 } 2496 else 2497 { 2498 <div class="row"> 2499 <div class="col-12 text-center"> 2500 <h2>Søgningen på '@queryDisplay'<br>gav desværre ingen resultater</h2> 2501 </div> 2502 </div> 2503 } 2504 </div> 2505 </div> 2506 </div> 2507 } 2508 2509 </section> 2510 2511 <div class="dwcontent" id="content-main" title="Main content" data-settings="unwrap: true;"></div> 2512 @GetValue("DwContent(contentmain)") 2513 2514 @{ 2515 var findbrokerFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/dist/bundle.findbroker.min.js")); 2516 <script type="text/javascript" src='@(TemplateUrl)assets/dist/bundle.findbroker.min.js?@(findbrokerFileInfo.LastWriteTime.Ticks)'></script> 2517 } 2518 2519 2520 @if (brokers.Count() > 0) 2521 { 2522 <input type="hidden" class="js-mapMarkerUrl" value="@mapMarkerUrlFindBroker" /> 2523 <input type="hidden" class="js-mapMarkerHeight" value="@mapMarkerHeight" /> 2524 <input type="hidden" class="js-mapMarkerWidth" value="@mapMarkerWidth" /> 2525 <input type="hidden" class="js-mapMarkerImg" value="@mapMarkerUrlFindBroker" /> 2526 2527 // CREATE MARKER JSON 2528 List<Feature> featureList = new List<Feature>(); 2529 2530 foreach (var broker in brokers) 2531 { 2532 featureList.Add(new Feature 2533 { 2534 type = "Feature", 2535 geometry = new Geometry 2536 { 2537 type = "Point", 2538 coordinates = new double[] 2539 { 2540 Converter.ToDouble(broker.Item().GetString("GpsLat")), Convert.ToDouble(broker.Item().GetString("GpsLng")) 2541 } 2542 }, 2543 properties = new Property 2544 { 2545 name = broker.CompanyName, 2546 href = "/" + broker.Item().GetString("CBMedlemsnummer").Substring(1) 2547 } 2548 }); 2549 } 2550 2551 var marker = new Marker 2552 { 2553 type = "FeatureCollection", 2554 features = featureList, 2555 imgIcon = mapMarkerUrlFindBroker, 2556 mapColors = new MapColor 2557 { 2558 2559 bigColor = "#003761", 2560 mediumColor = "#6e6143", 2561 smallColor = "#667497", 2562 bigBorderColor = "#8f9ea1", 2563 mediumBorderColor = "#9b8e5f", 2564 smallBorderColor = "#5d5170" 2565 } 2566 }; 2567 2568 var json = JsonConvert.SerializeObject(marker); 2569 2570 <div class="json-markers d-none"> 2571 @json 2572 </div> 2573 } 2574 2575 @functions{ 2576 2577 public class Marker 2578 { 2579 public string type { get; set; } 2580 public List<Feature> features { get; set; } 2581 public string imgIcon { get; set; } 2582 public MapColor mapColors { get; set; } 2583 } 2584 2585 public class Feature 2586 { 2587 public string type { get; set; } 2588 public Geometry geometry { get; set; } 2589 public Property properties { get; set; } 2590 } 2591 2592 public class Geometry 2593 { 2594 public string type { get; set; } 2595 public double[] coordinates { get; set; } 2596 } 2597 2598 public class Property 2599 { 2600 public string name { get; set; } 2601 public string href { get; set; } 2602 } 2603 2604 public class MapColor 2605 { 2606 public string bigColor { get; set; } 2607 public string mediumColor { get; set; } 2608 public string smallColor { get; set; } 2609 public string bigBorderColor { get; set; } 2610 public string mediumBorderColor { get; set; } 2611 public string smallBorderColor { get; set; } 2612 } 2613 } 2614 2615 2616 @if (MyBroker != null && MyBroker.Broker != null && MyBroker.Employee != null && GetBoolean("Item.Page.HideMyBroker.Value") != true) 2617 { 2618 string bName = MyBroker.Broker.Name; 2619 string bImage = ""; 2620 string bClass = "na"; 2621 bImage = "/Files/Templates/Designs/rm/assets/images/na-real.png"; 2622 var item = ItemManager.Storage.GetById(MyBroker.Employee.ItemType, MyBroker.Employee.ItemId); 2623 2624 if (!string.IsNullOrEmpty(MyBroker.Broker.CompanyName)) 2625 { 2626 bName = MyBroker.Broker.CompanyName; 2627 } 2628 try 2629 { 2630 var imgUrl = Converter.ToString(item["BilledeUrl"]); 2631 if (!string.IsNullOrEmpty(imgUrl)) 2632 { 2633 bImage = imgUrl; 2634 bClass = ""; 2635 } 2636 } 2637 catch 2638 { 2639 // Ignore 2640 } 2641 2642 string bAreaID = Converter.ToString(item["WebsiteId"]); 2643 string medlemsnummer = Converter.ToString(item["CBMedlemsnummer"]); 2644 <section class="din-maegler"> 2645 <div class="img-wrapper @bClass" style="background-image:url('@bImage')"></div> 2646 <div class="container"> 2647 <div class="col-12 col-sm-12 col-md-6 offset-md-6"> 2648 <h2>Din personlige mægler</h2> 2649 <div class="row"> 2650 <div class="col-12 col-sm-6"> 2651 <p> 2652 <b class="my-broker-name">@MyBroker.Employee.Name</b><br> 2653 @if (!string.IsNullOrEmpty(MyBroker.Employee.Email)) 2654 { 2655 <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> 2656 } 2657 @if (!string.IsNullOrEmpty(MyBroker.Employee.PhoneMobile)) 2658 { 2659 <text>Tlf.: <a href="tel:@(MyBroker.Employee.PhoneMobile)" class="my-broker-phone">@RealMaeglerne.Library.Helper.FormatPhoneNumber(MyBroker.Employee.PhoneMobile)</a></text> 2660 } 2661 else if (!string.IsNullOrEmpty(MyBroker.Broker.Telephone)) 2662 { 2663 <text>Tlf.: <a href="tel:@(MyBroker.Broker.Telephone)" class="my-broker-phone">@RealMaeglerne.Library.Helper.FormatPhoneNumber(MyBroker.Broker.Telephone)</a></text> 2664 } 2665 </p> 2666 </div> 2667 <div class="col-12 col-sm-6"> 2668 <p> 2669 <b class="my-broker-company-name">@bName</b><br> 2670 <span class="my-broker-company-address">@MyBroker.Broker.Address</span><br> 2671 <span class="my-broker-company-zip">@MyBroker.Broker.ZipCode</span> <span class="my-broker-company-city">@MyBroker.Broker.City</span><br> 2672 @if (!string.IsNullOrEmpty(bEmail)) 2673 { 2674 <text>Mail: <a href="mailto:@(bEmail)" class="my-broker-broker-email">@bEmail</a><br></text> 2675 } 2676 @if (!string.IsNullOrEmpty(MyBroker.Broker.Telephone)) 2677 { 2678 <text>Tlf.: <a href="tel:@(MyBroker.Broker.Telephone)" class="my-broker-broker-phone">@RealMaeglerne.Library.Helper.FormatPhoneNumber(MyBroker.Broker.Telephone)</a></text> 2679 } 2680 </p> 2681 </div> 2682 </div> 2683 <div class="row"> 2684 <br /> 2685 <div class="col-12 col-sm-6"> 2686 <a href="/@medlemsnummer.Substring(1)" class="btn btn-primary btn-block my-broker-company-url">Til mæglerens side</a> 2687 </div> 2688 2689 </div> 2690 </div> 2691 </div> 2692 </section> 2693 } 2694 2695 <footer> 2696 <div class="container"> 2697 <div class="row"> 2698 @{ 2699 var navigationSettings = new NavigationSettings(); 2700 navigationSettings.StartLevel = 1; 2701 navigationSettings.StopLevel = 3; 2702 navigationSettings.ExpandMode = ExpandMode.All; 2703 navigationSettings.RootAreaId = 1; 2704 navigationSettings.RootNavigationTag = "footer-nav"; 2705 2706 } 2707 @Navigation.RenderNavigation("Navigation/footerNav.cshtml", navigationSettings) 2708 </div> 2709 </div> 2710 </footer> 2711 2712 <div id="panel-login" class="panel panel-form js-loginforms"> 2713 <button type="button" class="close" data-dismiss="panel-form" aria-label="@HtmlEncoder.HtmlAttributeEncode(@Translate("Custom:Accessiblity.PanelLoginBtn.Close","Luk"))"> 2714 <b></b> 2715 </button> 2716 <a href="@(settings_MinSide)" target="_blank" class="btn btn-primary btn-block link-customer">@Translate("Smartpage:Login.Button.CustomerUniverse", "Realmæglernes Kundeunivers")</a> 2717 <button class="js-open-login btn btn-primary btn-block">@Translate("Smartpage.Login.Button.RealestateAgent", "Realmæglernes Boligagent")</button> 2718 <div class="loginform login"> 2719 @if (loginParagraphId > 0) 2720 { 2721 <text> 2722 @RenderParagraphContent(loginParagraphId) 2723 </text> 2724 } 2725 </div> 2726 <div class="loginform register js-register-form-wrapper" style="display: none;"> 2727 @if (createUserParagraphId > 0) 2728 { 2729 <text> 2730 @RenderParagraphContent(createUserParagraphId) 2731 </text> 2732 } 2733 </div> 2734 @* Shared "glemt adgangskode"-form. Renders both inside #panel-login (SPmaster) and inline on the 2735 login page, so all hooks are classes - ids would collide when both are on the same page. *@ 2736 <div class="loginform forgotpw" style="display: none;"> 2737 <h2 class="forgotpw-reg">@Translate("forgot-pw-reg-title", "Glemt adgangskode")</h2> 2738 <h2 class="forgotpw-broker">@Translate("forgot-pw-broker-title", "Tilmeldt via. mægler")</h2> 2739 <form class="form-body js-forgotpw-form" method="post" action=""> 2740 <input type="hidden" name="AccessUserShopID" class="js-forgotpw-shopid" value="SHOP6" /> 2741 <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> 2742 <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> 2743 <div class="form-group"> 2744 <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 /> 2745 </div> 2746 <button class="btn btn-primary btn-block" type="submit">@Translate("forgot-pw-cta", "Nulstil adgangskode")</button> 2747 <br /> 2748 <div class="js-forgotpw-message"></div> 2749 </form> 2750 2751 <hr> 2752 <button type="button" class="btn btn-default btn-block action-login">@Translate("forgot-pw-back-to-login", "Tilbage til login")</button> 2753 </div> 2754 2755 </div> 2756 2757 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2758 @using System 2759 @using RealMaeglerne.Dynamicweb; 2760 @using RealMaeglerne.Library; 2761 @using RealMaeglerne.Library.Models; 2762 @using Dynamicweb.Content.Items; 2763 @using Dynamicweb.Core; 2764 @using System.Linq; 2765 2766 @{ 2767 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"); 2768 } 2769 2770 <!-- KONTAKT KØBERRAADGIVNING --> 2771 <div id="panel-kontakt-koeberraadgivning" class="panel panel-form"> 2772 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close"> 2773 <b></b> 2774 </button> 2775 <h2>@Translate("Smarptage:Guldkøber.KontaktMægler", "Kontakt Mægler")</h2> 2776 <form id="form-koeberraadgivning" method="POST" action="/InboxHandler"> 2777 <div class="form-group"> 2778 <label><strong>@Translate("form-navn", "Navn")*</strong></label> 2779 <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 /> 2780 </div> 2781 <div class="form-group"> 2782 <label><strong>@Translate("form-email", "E-mail")*</strong></label> 2783 <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 /> 2784 </div> 2785 <div class="form-group row mb-4"> 2786 <div class="col-6"> 2787 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label> 2788 <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 /> 2789 </div> 2790 <div class="col-6"> 2791 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label> 2792 <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")' /> 2793 </div> 2794 </div> 2795 <h3>@Translate("Smartpage:Salgsvurdering.DinBolig", "Din bolig")</h3> 2796 <div class="form-group row"> 2797 <div class="col-4"> 2798 <label><strong>@Translate("form-zip", "Post nr")*</strong></label> 2799 <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 /> 2800 <input type="hidden" class="js-postnummer-validation" /> 2801 </div> 2802 <div class="col-8"> 2803 <label><strong>@Translate("form-city", "By")*</strong></label> 2804 <input class="form-control js-city" type="text" readonly /> 2805 </div> 2806 </div> 2807 <div class="form-group overflow-unset"> 2808 <label><strong>@Translate("form-adresse", "Adresse")*</strong></label> 2809 <input class="form-control js-validate-address" type="text" name="adresse" tabindex="6" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse")' required /> 2810 2811 <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> 2812 </div> 2813 <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"> 2814 <strong class="f-12"><i class="fas fa-plus"></i> @Translate("Smartpage:Salgsvurdering.Skrivenkommentar", "Skriv en kommentar")</strong> 2815 </button> 2816 <div class="collapse" id="kontaktkoeberrradgiver-collapse"> 2817 <div class="form-group"> 2818 <textarea class="form-control" name="besked" placeholder='@Translate("form-besked-max", "Skriv en besked på max 150 tegn")' maxlength="150"></textarea> 2819 </div> 2820 </div> 2821 2822 <div class="form-group mt-3"> 2823 <div class="checkbox"> 2824 <label> 2825 <input type="checkbox" name="kontaktmigok" required /> 2826 <span>@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span> 2827 </label> 2828 </div> 2829 </div> 2830 <div class="form-group"> 2831 <div class="row"> 2832 <div class="col-12"> 2833 <button type="submit" class="btn btn-green btn-block">@Translate("KontaktMægler", "Kontakt Mægler")</button> 2834 </div> 2835 </div> 2836 </div> 2837 <div class="form-group form-group-terms"> 2838 @privacyPolicyText <a href="mailto:@termsMail">@termsMail</a>. 2839 Læs mere på <a href="@settings_Persondatapolitik">privatlivspolitikkerne</a>. 2840 </div> 2841 2842 <input type="hidden" name="fn" value="krk" /> 2843 <input type="hidden" name="origin" value="" /> 2844 <input type="hidden" name="brugerId" value="" /> 2845 <input type="hidden" name="areaid" value="@Pageview.AreaID" /> 2846 <input type="hidden" name="butikId" value="@butikId" /> 2847 <input type="hidden" name="ejendomstype" value="" /> 2848 <input type="hidden" name="salgspris" value="" /> 2849 <input type="hidden" name="modtager" value="" /> 2850 </form> 2851 <div id="tak-kontakt-advisor" style="display:none;"> 2852 <h2>@Translate("TakForDinInteresse", "Tak for din interesse")</h2> 2853 <div class="row"> 2854 <div class="col-6"> 2855 <img src="" class="img-fluid js-maegler-img" /> 2856 </div> 2857 <div class="col-6"> 2858 <p class="js-maegler-name"></p> 2859 <p class="js-maegler-address"></p> 2860 <p class="js-maegler-phone"></p> 2861 <p class="js-maegler-mail"></p> 2862 </div> 2863 </div> 2864 <p>@Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt")</p> 2865 </div> 2866 </div> 2867 2868 <!--ÅBENT HUS--> 2869 <div id="panel-aabenthus" class="panel panel-form"> 2870 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close"> 2871 <b></b> 2872 </button> 2873 2874 <form id="form-aabenthus" method="POST" action="/InboxHandler"> 2875 <h2>@Translate("Smarptage:Aabenthus.TilmeldTilÅbenthus", "Tilmeld til åbent hus")</h2> 2876 @{ 2877 string sagsnr = Dynamicweb.Context.Current.Request["ProductId"]; 2878 var product = Dynamicweb.Ecommerce.Services.Products.GetProductById(sagsnr, string.Empty, true); 2879 if (product != null) 2880 { 2881 var boligManager = new BoligManager(Pageview); 2882 Bolig bolig = boligManager.CreateBolig(product, true); 2883 var kommendeAabnehuse = boligManager.KommendeAabnehuse(bolig).Take(3); 2884 2885 if (kommendeAabnehuse.Count() > 0) 2886 { 2887 <div> 2888 <div class="open-house-dates"> 2889 @foreach (var openHouse in kommendeAabnehuse) 2890 { 2891 <label class="open-house-dates__date"> 2892 @openHouse.DatoClean 2893 <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" /> 2894 </label> 2895 } 2896 </div> 2897 @foreach (var openHouse in kommendeAabnehuse) 2898 { 2899 <div id="@openHouse.Id" class="open-house-times"> 2900 @if (openHouse.VisInterval && openHouse.Tilmelding) 2901 { 2902 int counter = 0; 2903 foreach (var interval in openHouse.TidsIntervallerFormateret) 2904 { 2905 <div><input class="js-aabenthus-time-select time-radio" type="radio" name="AabenthusTid" value="@interval" checked="@(counter == 0)" /><span>@interval.Substring(3)</span></div> 2906 counter++; 2907 } 2908 2909 } 2910 2911 @if (!openHouse.Tilmelding) 2912 { 2913 <div class="js-open-house-no-signup open-house-no-signup"> 2914 @Translate("Smartpage:Aabenthus.IngenTilmelding", "Ingen tilmelding påkrævet") 2915 </div> 2916 } 2917 </div> 2918 } 2919 </div> 2920 } 2921 } 2922 } 2923 2924 <div class="d-block"> 2925 <strong>@Translate("Smarptage:Adresse", "Adresse:")</strong> <label class="js-aabenthus-address mb-0"></label> 2926 </div> 2927 <div class="d-block"> 2928 <strong>@Translate("Smarptage:Date", "Dato:")</strong> <label class="js-aabenthus-date mb-0"></label> 2929 </div> 2930 <div class="d-block mb-4"> 2931 <strong>@Translate("Smarptage:Time", "Tidspunkt:")</strong> <label class="js-aabenthus-time mb-0"></label> 2932 </div> 2933 <div class="js-open-house-signup open-house-signup"> 2934 <h3>@Translate("Smartpage:Aabenthus.DineKontaktoplysning", "Dine kontaktoplysninger")</h3> 2935 <div class="form-group"> 2936 <label for="aabenthus-name"><strong>@Translate("form-navn", "Navn")*</strong></label> 2937 <input class="form-control" type="text" name="navn" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Navn", "Indtast dit navn")' value='@GetGlobalValue("Global:Extranet.Name")' required /> 2938 </div> 2939 <div class="form-group"> 2940 <label><strong>@Translate("form-email", "E-mail")*</strong></label> 2941 <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 /> 2942 </div> 2943 <div class="form-group row"> 2944 <div class="col-6"> 2945 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label> 2946 <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 /> 2947 </div> 2948 <div class="col-6"> 2949 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label> 2950 <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")' /> 2951 </div> 2952 2953 </div> 2954 <div class="form-group"> 2955 <div class="checkbox"> 2956 <label> 2957 <input type="checkbox" name="kontaktmigok" required /> 2958 <span class="base-color">@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span> 2959 </label> 2960 </div> 2961 </div> 2962 <div class="form-group"> 2963 <div class="row"> 2964 <div class="col-12"> 2965 <button type="submit" class="btn btn-block btn-green">@Translate("Smartpage:Aabenthus.TilmeldKnap", "Tilmeld åbent hus")</button> 2966 </div> 2967 </div> 2968 </div> 2969 <div class="form-group"> 2970 @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>") 2971 2972 </div> 2973 </div> 2974 <input type="hidden" name="fn" value="ah" /> 2975 <input type="hidden" name="origin" value="" /> 2976 <input type="hidden" name="brugerId" value="@userID" /> 2977 <input type="hidden" name="areaid" value="@Pageview.AreaID" /> 2978 <input type="hidden" name="butikId" value="@butikId" /> 2979 <input type="hidden" name="sagsaddresse" value="" class="js-aabenthus-address-input" /> 2980 <input type="hidden" name="ejendomstype" value="" /> 2981 <input type="hidden" name="salgspris" value="" /> 2982 <input type="hidden" name="modtager" value="" /> 2983 <input type="hidden" name="employee" value="" /> 2984 <input type="hidden" name="sagsnr" value="" class="js-sagsnr" /> 2985 <input type="hidden" name="productId" value="@Dynamicweb.Context.Current.Request["ProductId"]" /> 2986 <input type="hidden" name="aftaleid" value="" class="js-aftaleid" /> 2987 2988 <input type="hidden" name="dateMail" class="js-aabenthus-date-input" /> 2989 <input type="hidden" name="timeMail" class="js-aabenthus-time-input" /> 2990 <input type="hidden" name="visintervaller" class="js-aabenthus-showinterval-input" /> 2991 <input type="hidden" name="brokerImageMail" class="property-broker-image-input" /> 2992 <input type="hidden" name="employeeNameMail" class="js-maegler-employee-name-input" /> 2993 <input type="hidden" name="employeeTitleMail" class="js-maegler-employee-title-input" /> 2994 <input type="hidden" name="employeeMailMail" class="js-maegler-mail-input" /> 2995 <input type="hidden" name="employeeMobileMail" class="js-maegler-mobile-input" /> 2996 <input type="hidden" name="employeePhoneMail" class="js-maegler-phone-input" /> 2997 2998 <input type="hidden" name="brokerNameMail" class="js-broker-name-input" /> 2999 <input type="hidden" name="brokerAddressMail" class="js-broker-address-input" /> 3000 <input type="hidden" name="brokerPhoneMail" class="js-broker-phone-input" /> 3001 <input type="hidden" name="greenmobility" class="js-green-mobility" /> 3002 </form> 3003 <div id="tak-aabenthus" style="display:none;"> 3004 <h2>@Translate("Smarptage:Aabenthus.TakForTilmelding", "Tak for din tilmelding til åbent hus!")</h2> 3005 <div class="d-block"> 3006 <strong>@Translate("Smarptage:Adresse", "Adresse:")</strong> <label class="js-aabenthus-address mb-0"></label> 3007 </div> 3008 <div class="d-block"> 3009 <strong>@Translate("Smarptage:Date", "Dato:")</strong> <label class="js-aabenthus-date mb-0"></label> 3010 3011 </div> 3012 <div class="d-block mb-4"> 3013 <strong>@Translate("Smarptage:Time", "Tidspunkt:")</strong> <label class="js-aabenthus-time mb-0"></label> 3014 3015 </div> 3016 <div class="js-employee"> 3017 <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> 3018 </div> 3019 <div class="js-not-employee"> 3020 <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> 3021 </div> 3022 <div class="row"> 3023 <div class="js-employee"> 3024 <div class="col-12 js-maegler-img aabenthus-image"> 3025 <div class="property-broker-image" style=""></div> 3026 3027 </div> 3028 </div> 3029 <div class="col-12"> 3030 <div class="bg-base"> 3031 3032 <div class="js-employee"> 3033 <h4 class="js-maegler-employee-name"></h4> 3034 <div class="icon-container"> 3035 <i class="fas fa-envelope"></i> <span class="js-maegler-mail"></span> 3036 </div> 3037 <div class="icon-container"> 3038 <i class="fas fa-phone"></i> <span class="js-maegler-mobile"></span> 3039 </div> 3040 </div> 3041 3042 3043 <h4 class="js-maegler-name"></h4> 3044 <div class="icon-container"> 3045 <i class="fas fa-map-marker-alt"></i> <span class="js-maegler-address"></span> 3046 </div> 3047 <div class="icon-container"> 3048 <i class="fas fa-phone"></i> <span class="js-maegler-phone"></span> 3049 3050 </div> 3051 <a class="btn btn-border" onclick="panelKontaktmaeglerGuldkoeber()">KONTAKT MÆGLER</a> 3052 </div> 3053 </div> 3054 </div> 3055 </div> 3056 </div> 3057 3058 <!-- KONTAKT GULDKØBER --> 3059 <div id="panel-kontakt-guldkoeber" class="panel panel-form"> 3060 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close"> 3061 <b></b> 3062 </button> 3063 <h2>@Translate("Smarptage:Guldkøber.KontaktMægler", "Kontakt Mægler")</h2> 3064 <form id="form-kontaktmaegler" method="POST" action="/InboxHandler"> 3065 <div class="form-group"> 3066 <label><strong>@Translate("form-navn", "Navn")*</strong></label> 3067 <input class="form-control" type="text" name="navn" placeholder='@Translate("form-navn", "Navn")' value='@GetGlobalValue("Global:Extranet.Name")' required /> 3068 </div> 3069 <div class="form-group"> 3070 <label><strong>@Translate("form-email", "E-mail")*</strong></label> 3071 <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 /> 3072 </div> 3073 <div class="form-group row mb-4"> 3074 <div class="col-6"> 3075 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label> 3076 <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 /> 3077 </div> 3078 <div class="col-6"> 3079 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label> 3080 <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")' /> 3081 </div> 3082 </div> 3083 <div class="form-group row"> 3084 <div class="col-4"> 3085 <label><strong>@Translate("form-zip", "Post nr")*</strong></label> 3086 <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 /> 3087 <input type="hidden" class="js-postnummer-validation" /> 3088 </div> 3089 <div class="col-8"> 3090 <label><strong>@Translate("form-city", "By")*</strong></label> 3091 <input class="form-control js-city" type="text" readonly /> 3092 </div> 3093 </div> 3094 3095 <div class="form-group overflow-unset"> 3096 <label><strong>@Translate("form-adresse", "Adresse")*</strong></label> 3097 <input class="form-control js-validate-address" type="text" name="adresse" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse")' value="@userAddress" required /> 3098 <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> 3099 </div> 3100 <div class="form-group"> 3101 <textarea class="form-control" name="besked" placeholder='@Translate("form-besked-max", "Skriv en besked på max 150 tegn")' maxlength="150"></textarea> 3102 </div> 3103 <div class="form-group"> 3104 <div class="checkbox"> 3105 <label> 3106 <input type="checkbox" name="kontaktmigok" required /> 3107 <span>@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span> 3108 </label> 3109 </div> 3110 </div> 3111 <div class="form-group"> 3112 <div class="row"> 3113 <div class="col-12"> 3114 <button type="submit" class="btn btn-green btn-block">@Translate("KontaktMægler", "Kontakt Mægler")</button> 3115 </div> 3116 </div> 3117 </div> 3118 <div class="form-group form-group-terms"> 3119 @privacyPolicyText <a href="mailto:@termsMail">@termsMail</a>. 3120 Læs mere på <a href="@settings_Persondatapolitik">privatlivspolitikkerne</a>. 3121 </div> 3122 <input type="hidden" name="fn" value="gk" /> 3123 <input type="hidden" name="origin" value="" /> 3124 <input type="hidden" name="brugerId" value="@userID" /> 3125 <input type="hidden" name="areaid" value="@Pageview.AreaID" /> 3126 <input type="hidden" name="butikId" value="@butikId" /> 3127 <input type="hidden" name="ejendomstype" value="" /> 3128 <input type="hidden" name="salgspris" value="" /> 3129 <input type="hidden" name="modtager" value="" /> 3130 <input type="hidden" name="employee" value="" /> 3131 </form> 3132 <div id="tak-kontakt-maegler-guldkoeber" style="display:none;"> 3133 <h2>@Translate("TakForDinInteresse", "Tak for din interesse")</h2> 3134 <p>@Translate("Smartpage:FormKontaktGuld.Subheader", "Vi har sendt din forespørgsel om guldkøbere til:")</p> 3135 <div class="row"> 3136 <div class="col-6"> 3137 <img src="" class="img-fluid js-maegler-img" /> 3138 </div> 3139 <div class="col-6"> 3140 <p class="js-maegler-name"></p> 3141 <p class="js-maegler-address"></p> 3142 <p class="js-maegler-phone"></p> 3143 <p class="js-maegler-mail"></p> 3144 </div> 3145 </div> 3146 <p>@Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt")</p> 3147 </div> 3148 </div> 3149 3150 <!-- BESTIL SALGSVURDERING --> 3151 <div id="panel-salgsvurdering" class="panel panel-form"> 3152 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close"> 3153 <b></b> 3154 </button> 3155 3156 <form id="bestil-salgsvurdering" class="buyer-advisor-form js-buyer-advisor-form" method="POST" action="/InboxHandler"> 3157 <h2 class="js-buyer-advisor-header">@Translate("form-salgsvurdering-titel", "Bestil gratis salgsvurdering")</h2> 3158 <p>@Translate("form-salgsvurdering-beskrivelse", "")</p> 3159 <div class="form-group"> 3160 <label><strong>@Translate("form-navn", "Navn")*</strong></label> 3161 <input class="form-control" type="text" name="navn" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Navn", "Indtast dit navn")' value='@GetGlobalValue("Global:Extranet.Name")' required /> 3162 </div> 3163 <div class="form-group"> 3164 <label><strong>@Translate("form-email", "E-mail")*</strong></label> 3165 <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 /> 3166 </div> 3167 <div class="form-group row mb-4"> 3168 <div class="col-6"> 3169 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label> 3170 <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 /> 3171 </div> 3172 <div class="col-6"> 3173 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label> 3174 <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")' /> 3175 </div> 3176 3177 </div> 3178 3179 @{ 3180 // isErhverv comes from master template 3181 bool pageIsErhverv = isErhverv || Converter.ToBoolean(Pageview.Area.Item["IsErhverv"]); 3182 string yourPropertyHeader = pageIsErhverv ? Translate("Smartpage:Salgsvurdering.DinEjendom", "Din ejendom") : Translate("Smartpage:Salgsvurdering.DinBolig", "Din bolig"); 3183 // If user is on broker page already then don't suggest alternative broker 3184 bool isOnBrokerPage = !string.IsNullOrEmpty(butikId); 3185 } 3186 3187 <h3>@yourPropertyHeader</h3> 3188 <div class="form-group row"> 3189 <div class="col-4"> 3190 <label><strong>@Translate("form-zip", "Post nr")*</strong></label> 3191 @{ 3192 string primaryAreaEncoded = Dynamicweb.Core.Encoders.HtmlEncoder.HtmlEncode(primaryArea); 3193 <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 /> 3194 <input type="hidden" class="js-postnummer-validation" /> 3195 } 3196 </div> 3197 <div class="col-8"> 3198 <label><strong>@Translate("form-city", "By")*</strong></label> 3199 <input class="form-control js-city" type="text" readonly /> 3200 </div> 3201 </div> 3202 <div class="form-group overflow-unset"> 3203 <label><strong>@Translate("form-adresse", "Adresse")*</strong></label> 3204 <input class="form-control js-validate-address" type="text" name="adresse" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse")' value="@userAddress" required /> 3205 <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> 3206 </div> 3207 3208 <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"> 3209 <strong class="f-12"><i class="fas fa-plus"></i> @Translate("Smartpage:Salgsvurdering.Skrivenkommentar", "Skriv en kommentar")</strong> 3210 </button> 3211 <div class="collapse" id="salgsvurdering-collapse"> 3212 <div class="form-group"> 3213 <textarea class="form-control" name="besked" placeholder='@Translate("form-besked-max", "Skriv en besked på max 150 tegn")' maxlength="150"></textarea> 3214 </div> 3215 </div> 3216 3217 <div class="salgsvurdering-precheck"> 3218 <h3>@Translate("Smartpage:Salgsvurdering.SendSalgsvurderingTil", "Send salgsvurdering til:")</h3> 3219 <div class="col-12"> 3220 <div class="choose-broker row align-items-center active"> 3221 <div class="col-2"> 3222 <input class="js-broker-radio" type="radio" id="" name="choose-broker" value="" checked> 3223 <label class="js-broker-label" for=""></label><div class="check"> 3224 <div class="inside"> 3225 </div> 3226 </div> 3227 </div> 3228 <div class="col-4"> 3229 <img src="" class="img-fluid js-broker-image"> 3230 </div> 3231 <div class="col-6"> 3232 <span class="d-block"> 3233 <strong class="js-choose-broker-name"></strong> 3234 </span> 3235 <span class="js-choose-broker-address"></span> 3236 <input type="hidden" class="js-choose-broker-phone" value="" /> 3237 <input type="hidden" class="js-choose-broker-email" value="" /> 3238 </div> 3239 </div> 3240 </div> 3241 </div> 3242 <div class="salgsvurdering-broker"> 3243 <h3 class="js-brokerh3">@Translate("Smartpage:Salgsvurdering.VælgMægler", "Vælg mægler")</h3> 3244 <div class="js-choose-broker col-12"> 3245 </div> 3246 3247 </div> 3248 <div class="form-group mt-4"> 3249 <div class="checkbox"> 3250 <label> 3251 <input type="checkbox" name="kontaktmigok" required /> 3252 <span class="consent-checkbox">@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span> 3253 </label> 3254 </div> 3255 </div> 3256 <div class="form-group"> 3257 <div class="row"> 3258 <div class="col-12"> 3259 <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> 3260 </div> 3261 </div> 3262 </div> 3263 <div class="form-group form-group-terms"> 3264 @privacyPolicyText <a href="mailto:@termsMail">@termsMail</a>. 3265 Læs mere på <a href="@settings_Persondatapolitik">privatlivspolitikkerne</a>. 3266 </div> 3267 <input type="hidden" name="fn" value="bsv" /> 3268 <input type="hidden" name="origin" class="js-salgsvurdering-origin" value="" /> 3269 <input type="hidden" name="brugerId" value="@userID" /> 3270 <input type="hidden" name="areaid" value="@Pageview.AreaID" /> 3271 <input type="hidden" id="boligvisning" name="boligvisning" value="" /> 3272 <input type="hidden" id="panel-salgsvurdering-butikid" name="butikId" value="" /> 3273 <input type="hidden" id="panel-salgsvurdering-sagsnr" name="sagsnr" value="" /> 3274 <input type="hidden" name="productId" value="@Dynamicweb.Context.Current.Request["ProductId"]" /> 3275 <input type="hidden" name="ejendomstype" value="" /> 3276 <input type="hidden" name="salgspris" value="" /> 3277 <input type="hidden" name="employee" value="" /> 3278 <input type="hidden" name="modtager" value="" /> 3279 <input class="js-value-check" type="hidden" name="valueCheck" value="" /> 3280 <input class="js-green-appraisal" type="hidden" name="greenAppraisal" value="" /> 3281 </form> 3282 <div id="tak-salgsvurdering" style="display:none;"> 3283 <h2>@Translate("TakForDinInteresse", "Tak for din interesse")</h2> 3284 <p>@Translate("Smartpage:FormSalgsvurdering.Subheader", "Vi har sendt din bestilling af gratis salgsvurdering til:")</p> 3285 <div class="row"> 3286 <div class="col-6"> 3287 <img src="" class="img-fluid js-maegler-img" /> 3288 </div> 3289 <div class="col-6"> 3290 <p class="js-maegler-name"></p> 3291 <p class="js-maegler-address"></p> 3292 <p class="js-maegler-phone"></p> 3293 <p class="js-maegler-mail"></p> 3294 </div> 3295 </div> 3296 <p>@Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt")</p> 3297 </div> 3298 </div> 3299 3300 <!-- BESTIL SALGSVURDERING GULDKØBER --> 3301 <div id="panel-salgsvurdering-guldkoeber" class="panel panel-form"> 3302 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close"> 3303 <b></b> 3304 </button> 3305 3306 <form id="bestil-salgsvurdering-guldkoeber" method="POST" action="/InboxHandler"> 3307 <h2>@Translate("form-salgsvurdering-titel", "Bestil gratis salgsvurdering")</h2> 3308 <p>@Translate("form-salgsvurdering-beskrivelse", "")</p> 3309 <div class="form-group"> 3310 <label><strong>@Translate("form-navn", "Navn")*</strong></label> 3311 <input class="form-control" type="text" name="navn" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Navn", "Indtast dit navn")' value='@GetGlobalValue("Global:Extranet.Name")' required /> 3312 </div> 3313 <div class="form-group"> 3314 <label><strong>@Translate("form-email", "E-mail")*</strong></label> 3315 <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 /> 3316 </div> 3317 <div class="form-group row mb-4"> 3318 <div class="col-6"> 3319 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label> 3320 <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")' /> 3321 </div> 3322 <div class="col-6"> 3323 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label> 3324 <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 /> 3325 </div> 3326 </div> 3327 3328 <h3>@Translate("Smartpage:Salgsvurdering.DinBolig", "Din bolig")</h3> 3329 3330 <div class="form-group row"> 3331 <div class="col-4"> 3332 <label><strong>@Translate("form-zip", "Post nr")*</strong></label> 3333 <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 /> 3334 <input type="hidden" class="js-postnummer-validation" /> 3335 </div> 3336 <div class="col-8"> 3337 <label><strong>@Translate("form-city", "By")*</strong></label> 3338 <input class="form-control js-city" type="text" readonly /> 3339 </div> 3340 </div> 3341 <div class="form-group overflow-unset"> 3342 <label><strong>@Translate("form-adresse", "Adresse")*</strong></label> 3343 <input class="form-control js-validate-address" type="text" name="adresse" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse")' value="@userAddress" required /> 3344 <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> 3345 </div> 3346 3347 <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"> 3348 <strong class="f-12"><i class="fas fa-plus"></i> @Translate("Smartpage:Salgsvurdering.Skrivenkommentar", "Skriv en kommentar")</strong> 3349 </button> 3350 <div class="collapse" id="salgsvurdering-collapse"> 3351 <div class="form-group"> 3352 <textarea class="form-control" name="besked" placeholder='@Translate("form-besked-max", "Skriv en besked på max 150 tegn")' maxlength="150"></textarea> 3353 </div> 3354 </div> 3355 <div class="salgsvurdering-precheck"> 3356 <h3>@Translate("Smartpage:Salgsvurdering.SendSalgsvurderingTil", "Send salgsvurdering til:")</h3> 3357 <div class="col-12"> 3358 <div class="choose-broker row align-items-center active"> 3359 <div class="col-2"> 3360 <input class="js-broker-radio" type="radio" id="" name="choose-broker-gk" value="" checked> 3361 <label class="js-broker-label" for=""></label><div class="check"> 3362 <div class="inside"> 3363 </div> 3364 </div> 3365 </div> 3366 <div class="col-4"> 3367 <img src="" class="img-fluid js-broker-image"> 3368 </div> 3369 <div class="col-6"> 3370 <span class="d-block"> 3371 <strong class="js-choose-broker-name"></strong> 3372 </span> 3373 <span class="js-choose-broker-address"></span> 3374 <input type="hidden" class="js-choose-broker-phone" value="" /> 3375 <input type="hidden" class="js-choose-broker-email" value="" /> 3376 </div> 3377 </div> 3378 </div> 3379 </div> 3380 <div class="salgsvurdering-broker"> 3381 <h3 class="js-brokerh3">@Translate("Smartpage:Salgsvurdering.VælgMægler", "Vælg mægler")</h3> 3382 <div class="js-choose-broker col-12"> 3383 </div> 3384 3385 </div> 3386 3387 <div class="form-group"> 3388 <div class="checkbox"> 3389 <label> 3390 <input type="checkbox" name="kontaktmigok" required /> 3391 <span>@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span> 3392 </label> 3393 </div> 3394 </div> 3395 <div class="form-group"> 3396 <div class="row"> 3397 <div class="col-12"> 3398 <button type="submit" class="btn btn-green btn-block">@Translate("form-salgsvurdering-submitbtn", "Bestil gratis salgsvurdering")</button> 3399 </div> 3400 </div> 3401 </div> 3402 <div class="form-group form-group-terms"> 3403 @privacyPolicyText <a href="mailto:@termsMail">@termsMail</a>. 3404 Læs mere på <a href="@settings_Persondatapolitik">privatlivspolitikkerne</a>. 3405 </div> 3406 <input type="hidden" name="fn" value="bsg" /> 3407 <input type="hidden" name="origin" class="js-salgsvurdering-origin" value="" /> 3408 <input type="hidden" name="brugerId" value="@userID" /> 3409 <input type="hidden" name="areaid" value="@Pageview.AreaID" /> 3410 <input type="hidden" id="boligvisning-gk" name="boligvisning" value="" /> 3411 <input type="hidden" id="panel-salgsvurdering-gk-butikid" name="butikId" value="" /> 3412 <input type="hidden" id="panel-salgsvurdering-gk-sagsnr" name="sagsnr" value="" /> 3413 <input type="hidden" name="productId" value="@Dynamicweb.Context.Current.Request["ProductId"]" /> 3414 <input type="hidden" name="ejendomstype" value="" /> 3415 <input type="hidden" name="salgspris" value="" /> 3416 <input type="hidden" name="employee" value="" /> 3417 <input type="hidden" name="modtager" value="" /> 3418 </form> 3419 <div id="tak-salgsvurdering" style="display:none;"> 3420 <h2>@Translate("TakForDinInteresse", "Tak for din interesse")</h2> 3421 <p>@Translate("Smartpage:FormSalgsvurdering.Subheader", "Vi har sendt din bestilling af gratis salgsvurdering til:")</p> 3422 <div class="row"> 3423 <div class="col-6"> 3424 <img src="" class="img-fluid js-maegler-img" /> 3425 </div> 3426 <div class="col-6"> 3427 <p class="js-maegler-name"></p> 3428 <p class="js-maegler-address"></p> 3429 <p class="js-maegler-phone"></p> 3430 <p class="js-maegler-mail"></p> 3431 </div> 3432 </div> 3433 <p>@Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt")</p> 3434 </div> 3435 </div> 3436 3437 @using Dynamicweb.Core; 3438 @using Dynamicweb.Core.Encoders; 3439 3440 @{ 3441 var areaItem = Pageview.Area.Item; 3442 bool turnstileDisabled = areaItem != null 3443 && areaItem.ContainsKey("DisableTurnstile") 3444 && Converter.ToBoolean(areaItem["DisableTurnstile"]); 3445 bool turnstileEnabled = !turnstileDisabled && RealMaeglerne.Dynamicweb.Config.IsTurnstileConfigured(); 3446 } 3447 3448 @if (turnstileEnabled) 3449 { 3450 string turnstileSiteKey = RealMaeglerne.Dynamicweb.Config.GetTurnstileSiteKey(); 3451 string turnstileAreaId = Converter.ToString(Pageview.Area.ID); 3452 string turnstileLanguage = Pageview.Area.CultureInfo.Name; 3453 3454 <div class="js-turnstile-configuration d-none" 3455 data-site-key="@HtmlEncoder.HtmlAttributeEncode(turnstileSiteKey)" 3456 data-area-id="@HtmlEncoder.HtmlAttributeEncode(turnstileAreaId)"> 3457 <input type="hidden" 3458 class="js-turnstile-language" 3459 value="@HtmlEncoder.HtmlAttributeEncode(turnstileLanguage)" /> 3460 <input type="hidden" 3461 class="js-turnstile-validation-message-text" 3462 value="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Turnstile.ValidationMessage", "Bekræft venligst, at du ikke er en robot."))" /> 3463 </div> 3464 } 3465 3466 3467 <div class="overlay-wrapper"></div> 3468 <div class="dropdown-overlay"></div> 3469 <div class="loader-inner ball-pulse"></div> 3470 3471 @{ 3472 var viamapstrapFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/webpack/js/3rdparty/viamapstrap.js")); 3473 <script type="text/javascript" src='@(TemplateUrl)assets/webpack/js/3rdparty/viamapstrap.js?@(viamapstrapFileInfo.LastWriteTime.Ticks)' async></script> 3474 3475 var bundleFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/dist/bundle.app.min.js")); 3476 <script type="text/javascript" src='@(TemplateUrl)assets/dist/bundle.app.min.js?@(bundleFileInfo.LastWriteTime.Ticks)' async></script> 3477 } 3478 3479 @RenderSnippet("JavaScriptBottom") 3480 3481 @if (Context.Current.Request.QueryString["ShowLogin"] == "true") 3482 { 3483 <input class="js-showLogin" value="true" /> 3484 } 3485 @if (!string.IsNullOrWhiteSpace(GetString("DW_extranet_error_uk"))) 3486 { 3487 <input class="js-DWError" value="true" /> 3488 <input class="js-DWErrorVal" value="@GetString("DW_extranet_error_dk")" /> 3489 } 3490 3491 @if (!string.IsNullOrEmpty(settings_ConduzeId)) 3492 { 3493 <script type="text/javascript" id="conduze-sdk" src="https://cdn.conduze.com/@settings_ConduzeId/tracking.js" async></script> 3494 } 3495 3496 @if (!string.IsNullOrEmpty(settings_Weply)) 3497 { 3498 <script src="https://app.weply.chat/widget/@settings_Weply" async></script> 3499 } 3500 3501 @if (Pageview.ID == boligsideId && !string.IsNullOrEmpty(settings_RealEquityApplicationId) && Guid.TryParse(settings_RealEquityApplicationId, out _)) 3502 { 3503 var realEquityQuery = HtmlEncoder.UrlEncode(settings_RealEquityApplicationId, System.Text.Encoding.Default); 3504 <script src="@HtmlEncoder.HtmlAttributeEncode($"https://api.prod.realequity.dk/api/tracking-script?id={realEquityQuery}")"></script> 3505 } 3506 3507 </body> 3508 </html> 3509 3510