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