Error executing template "Designs/rm_sub/Erhverv_frontpage.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_2013b575c14d4ca6bfbad5748f8a54b5.ExecuteAsync()
   at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

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