Error compiling template "Designs/rm/DynamicArticle.cshtml"
Line 21: The using directive for 'Dynamicweb.Content.Items' appeared previously in this namespace
Line 22: The using directive for 'Dynamicweb.Frontend.Navigation' appeared previously in this namespace
Line 23: The using directive for 'Dynamicweb.Core' appeared previously in this namespace
Line 25: The using directive for 'Dynamicweb' appeared previously in this namespace
Line 26: The using directive for 'System.Text.RegularExpressions' appeared previously in this namespace
Line 33: The using directive for 'Dynamicweb' appeared previously in this namespace
Line 34: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 36: The using directive for 'Dynamicweb.Rapido.Blocks' appeared previously in this namespace
Line 38: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 39: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 40: The using directive for 'Dynamicweb.Rapido.Blocks' appeared previously in this namespace
Line 41: The using directive for 'System.Reflection' appeared previously in this namespace
Line 42: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 43: The using directive for 'System.Reflection' appeared previously in this namespace
Line 44: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 45: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 46: The using directive for 'Dynamicweb.Core' appeared previously in this namespace
Line 47: The using directive for 'System.Text.RegularExpressions' appeared previously in this namespace
Line 48: The using directive for 'System.Reflection' appeared previously in this namespace
Line 49: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 50: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 51: The using directive for 'Dynamicweb.Core' appeared previously in this namespace
Line 52: The using directive for 'System.Reflection' appeared previously in this namespace
Line 53: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 54: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 55: The using directive for 'Dynamicweb.Rapido.Blocks' appeared previously in this namespace
Line 56: The using directive for 'System.Reflection' appeared previously in this namespace
Line 57: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 58: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 59: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 60: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 61: The using directive for 'System.Reflection' appeared previously in this namespace
Line 62: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 63: The using directive for 'Dynamicweb.Core' appeared previously in this namespace
Line 64: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 65: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 66: The using directive for 'Dynamicweb.Rapido.Blocks' appeared previously in this namespace
Line 68: The using directive for 'System.Reflection' appeared previously in this namespace
Line 69: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 70: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 71: The using directive for 'System.Reflection' appeared previously in this namespace
Line 72: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 73: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 74: The using directive for 'System.Reflection' appeared previously in this namespace
Line 75: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 76: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 77: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 78: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 79: The using directive for 'System.Reflection' appeared previously in this namespace
Line 80: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 81: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 82: The using directive for 'System.Reflection' appeared previously in this namespace
Line 83: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 84: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 85: The using directive for 'System.Reflection' appeared previously in this namespace
Line 86: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 87: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 88: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 89: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 90: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 91: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 92: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 93: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 94: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 95: The using directive for 'Dynamicweb.Core' appeared previously in this namespace
Line 97: The using directive for 'Dynamicweb.Core' appeared previously in this namespace
Line 98: The using directive for 'Dynamicweb.Rapido.Blocks.Components' appeared previously in this namespace
Line 99: The using directive for 'Dynamicweb.Rapido.Blocks.Components.Articles' appeared previously in this namespace
Line 100: The using directive for 'Dynamicweb.Rapido.Blocks.Components.General' appeared previously in this namespace
Line 101: The using directive for 'Dynamicweb.Rapido.Blocks' appeared previously in this namespace
Line 102: The using directive for 'Dynamicweb.Content.Items' appeared previously in this namespace
Line 1699: The type or namespace name 'Services' does not exist in the namespace 'Dynamicweb' (are you missing an assembly reference?)
Line 1700: 'ListViewModel.SelectedValue' is obsolete: 'Use SelectedValues property instead and join the values if needed'
Line 1702: 'ListViewModel.SelectedValue' is obsolete: 'Use SelectedValues property instead and join the values if needed'
Line 1704: 'ListViewModel.SelectedValue' is obsolete: 'Use SelectedValues property instead and join the values if needed'
Line 1791: 'ListViewModel.SelectedValue' is obsolete: 'Use SelectedValues property instead and join the values if needed'
Line 1792: 'ListViewModel.Options' is obsolete: 'Use the GetAllOptions extension method instead'
Line 1828: 'ListViewModel.SelectedValue' is obsolete: 'Use SelectedValues property instead and join the values if needed'
Line 1967: 'ListViewModel.SelectedValue' is obsolete: 'Use SelectedValues property instead and join the values if needed'
Line 1987: Argument 1: cannot convert from 'void' to 'object'
Line 5141: The variable 'placeholderImage' is assigned but its value is never used
Line 5785: The type or namespace name 'Services' does not exist in the namespace 'Dynamicweb' (are you missing an assembly reference?)
Line 5811: The type or namespace name 'Services' does not exist in the namespace 'Dynamicweb' (are you missing an assembly reference?)
Line 5813: The type or namespace name 'Services' does not exist in the namespace 'Dynamicweb' (are you missing an assembly reference?)
Line 5815: The type or namespace name 'Services' does not exist in the namespace 'Dynamicweb' (are you missing an assembly reference?)
Line 5817: The type or namespace name 'Services' does not exist in the namespace 'Dynamicweb' (are you missing an assembly reference?)
Line 5830: The type or namespace name 'Services' does not exist in the namespace 'Dynamicweb' (are you missing an assembly reference?)
Line 5832: The type or namespace name 'Services' does not exist in the namespace 'Dynamicweb' (are you missing an assembly reference?)
Line 5834: The type or namespace name 'Services' does not exist in the namespace 'Dynamicweb' (are you missing an assembly reference?)
Line 5836: The type or namespace name 'Services' does not exist in the namespace 'Dynamicweb' (are you missing an assembly reference?)
Line 5839: The type or namespace name 'Services' does not exist in the namespace 'Dynamicweb' (are you missing an assembly reference?)
1 // <auto-generated/>
2 #pragma warning disable 1591
3 namespace CompiledRazorTemplates.Dynamic
4 {
5 #line hidden
6 using System.Threading.Tasks;
7 using System.Linq;
8 using System;
9 using System.Globalization;
10 using System.Text.RegularExpressions;
11 using Custom.Integration.Brokers;
12 using RealMaeglerne.Dynamicweb;
13 using Dynamicweb.Content.Items;
14 using Dynamicweb.Environment;
15 using Newtonsoft.Json;
16 using Dynamicweb.Logging;
17 using Dynamicweb.Core;
18 using Dynamicweb.Frontend.Navigation;
19 using Dynamicweb;
20 using static RealMaeglerne.Library.Helper;
21 using Dynamicweb.Content.Items;
22 using Dynamicweb.Frontend.Navigation;
23 using Dynamicweb.Core;
24 using Dynamicweb.Core.Encoders;
25 using Dynamicweb;
26 using System.Text.RegularExpressions;
27 using System.Collections.Generic;
28 using System.Reflection;
29 using Dynamicweb.Rapido.Blocks.Components;
30 using Dynamicweb.Rapido.Blocks.Components.Articles;
31 using Dynamicweb.Rapido.Blocks.Components.Documentation;
32 using Dynamicweb.Rapido.Blocks;
33 using Dynamicweb;
34 using Dynamicweb.Rapido.Blocks.Components;
35 using Dynamicweb.Rapido.Blocks.Components.General;
36 using Dynamicweb.Rapido.Blocks;
37 using System.IO;
38 using Dynamicweb.Rapido.Blocks.Components;
39 using Dynamicweb.Rapido.Blocks.Components.General;
40 using Dynamicweb.Rapido.Blocks;
41 using System.Reflection;
42 using Dynamicweb.Rapido.Blocks.Components.General;
43 using System.Reflection;
44 using Dynamicweb.Rapido.Blocks.Components.General;
45 using Dynamicweb.Rapido.Blocks.Components;
46 using Dynamicweb.Core;
47 using System.Text.RegularExpressions;
48 using System.Reflection;
49 using Dynamicweb.Rapido.Blocks.Components.General;
50 using Dynamicweb.Rapido.Blocks.Components;
51 using Dynamicweb.Core;
52 using System.Reflection;
53 using Dynamicweb.Rapido.Blocks.Components;
54 using Dynamicweb.Rapido.Blocks.Components.General;
55 using Dynamicweb.Rapido.Blocks;
56 using System.Reflection;
57 using Dynamicweb.Rapido.Blocks.Components.General;
58 using Dynamicweb.Rapido.Blocks.Components;
59 using Dynamicweb.Rapido.Blocks.Components.General;
60 using Dynamicweb.Rapido.Blocks.Components;
61 using System.Reflection;
62 using Dynamicweb.Rapido.Blocks.Components.General;
63 using Dynamicweb.Core;
64 using Dynamicweb.Rapido.Blocks.Components;
65 using Dynamicweb.Rapido.Blocks.Components.General;
66 using Dynamicweb.Rapido.Blocks;
67 using Dynamicweb.Frontend;
68 using System.Reflection;
69 using Dynamicweb.Rapido.Blocks.Components.General;
70 using Dynamicweb.Rapido.Blocks.Components;
71 using System.Reflection;
72 using Dynamicweb.Rapido.Blocks.Components.General;
73 using Dynamicweb.Rapido.Blocks.Components;
74 using System.Reflection;
75 using Dynamicweb.Rapido.Blocks.Components.General;
76 using Dynamicweb.Rapido.Blocks.Components;
77 using Dynamicweb.Rapido.Blocks.Components.General;
78 using Dynamicweb.Rapido.Blocks.Components;
79 using System.Reflection;
80 using Dynamicweb.Rapido.Blocks.Components.General;
81 using Dynamicweb.Rapido.Blocks.Components;
82 using System.Reflection;
83 using Dynamicweb.Rapido.Blocks.Components.General;
84 using Dynamicweb.Rapido.Blocks.Components;
85 using System.Reflection;
86 using Dynamicweb.Rapido.Blocks.Components.General;
87 using Dynamicweb.Rapido.Blocks.Components;
88 using Dynamicweb.Rapido.Blocks.Components.General;
89 using Dynamicweb.Rapido.Blocks.Components.General;
90 using Dynamicweb.Rapido.Blocks.Components;
91 using Dynamicweb.Rapido.Blocks.Components.General;
92 using Dynamicweb.Rapido.Blocks.Components;
93 using Dynamicweb.Rapido.Blocks.Components.General;
94 using Dynamicweb.Rapido.Blocks.Components;
95 using Dynamicweb.Core;
96 using Dynamicweb.Extensibility;
97 using Dynamicweb.Core;
98 using Dynamicweb.Rapido.Blocks.Components;
99 using Dynamicweb.Rapido.Blocks.Components.Articles;
100 using Dynamicweb.Rapido.Blocks.Components.General;
101 using Dynamicweb.Rapido.Blocks;
102 using Dynamicweb.Content.Items;
103 using Dynamicweb.Security.UserManagement;
104 internal class RazorEngine_fd2a9ad94de344b58d0233177067400e : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
105 {
106 #pragma warning disable 1998
107 public async override global::System.Threading.Tasks.Task ExecuteAsync()
108 {
109 WriteLiteral("\r\n");
110 WriteLiteral("\r\n");
111 WriteLiteral("\r\n");
112 WriteLiteral("\r\n");
113 WriteLiteral("\r\n");
114 WriteLiteral("\r\n\r\n\r\n");
115 WriteLiteral("\r\n");
116 WriteLiteral("\r\n");
117 WriteLiteral("\r\n");
118 WriteLiteral("\r\n");
119 WriteLiteral("\r\n");
120 WriteLiteral("\r\n");
121 WriteLiteral("\r\n");
122 WriteLiteral("\r\n");
123 WriteLiteral("\r\n");
124 WriteLiteral("\r\n");
125 WriteLiteral("\r\n");
126 WriteLiteral("\r\n");
127 WriteLiteral("\r\n");
128 WriteLiteral("\r\n\r\n");
129 WriteLiteral("\r\n");
130 WriteLiteral("\r\n");
131 WriteLiteral("\r\n");
132 WriteLiteral("\r\n");
133 WriteLiteral("\r\n");
134 WriteLiteral("\r\n");
135 WriteLiteral("\r\n");
136 WriteLiteral("\r\n");
137 WriteLiteral("\r\n");
138 WriteLiteral("\r\n");
139 WriteLiteral("\r\n");
140 WriteLiteral("\r\n");
141 WriteLiteral("\r\n");
142 WriteLiteral("\r\n");
143 WriteLiteral("\r\n");
144 WriteLiteral("\r\n");
145 WriteLiteral("\r\n");
146 WriteLiteral("\r\n");
147 WriteLiteral("\r\n");
148 WriteLiteral("\r\n");
149 WriteLiteral("\r\n");
150 WriteLiteral("\r\n");
151 WriteLiteral("\r\n");
152 WriteLiteral("\r\n\r\n");
153 WriteLiteral("\r\n");
154 WriteLiteral("\r\n");
155 WriteLiteral("\r\n\r\n");
156 WriteLiteral("\r\n");
157 WriteLiteral("\r\n");
158 WriteLiteral("\r\n");
159 WriteLiteral("\r\n\r\n");
160 WriteLiteral("\r\n");
161 WriteLiteral("\r\n");
162 WriteLiteral("\r\n");
163 WriteLiteral("\r\n");
164
165 Context.Current.Response.AddHeader("access-control-allow-origin", "*");
166
167 string bodyClass = "";
168 string template = "real";
169 string TemplateUrl = "/Files/Templates/Designs/rm/";
170 string MetaTitle = Model.Title;
171 string MetaDescription = Model.Description;
172 string MetaKeywords = Model.Keywords;
173 string searchClass = "";
174
175 var cssFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/dist/css/main.min.css"));
176 string mainCSS = TemplateUrl + $"assets/dist/css/main.min.css?{cssFileInfo.LastWriteTime.Ticks}";
177
178 string loadingIcon = "/Files/Images/real-maeglerne-loading.svg";
179
180 var SettingsItem = ItemManager.Storage.GetById("Delte_Egenskaber", template != "bone" ? "1" : "2");
181
182 // Indstillinger
183 var settings_Frontpage = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Frontpage"])) ? SettingsItem["Frontpage"] : "";
184 var settings_Boligside = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Boligside"])) ? SettingsItem["Boligside"] : "";
185 var settings_Maeglersogning = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Maeglersogning"])) ? SettingsItem["Maeglersogning"] : "";
186 var settings_MinSide = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["MinSide"])) ? SettingsItem["MinSide"] : "";
187 var settings_Sibling_Site = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Sibling_Site"])) ? SettingsItem["Sibling_Site"] : "";
188 var settings_Sibling_Boligvisning = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Sibling_Boligvisning"])) ? SettingsItem["Sibling_Boligvisning"] : "";
189 var settings_Product_Group = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Product_Group"])) ? SettingsItem["Product_Group"] : "";
190 var settings_Boligagent = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Boligagent"])) ? SettingsItem["Boligagent"] : "";
191 var settings_Persondatapolitik = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Persondatapolitik"])) ? SettingsItem["Persondatapolitik"] : "";
192
193 // API
194 var settings_BoligSearchFeed = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligSearchFeed"])) ? SettingsItem["BoligSearchFeed"] : "";
195 var settings_BoligListFeed = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligListFeed"])) ? SettingsItem["BoligListFeed"] : "";
196 var settings_BoligListFeedErhverv = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligListFeedErhverv"])) ? SettingsItem["BoligListFeedErhverv"] : "";
197 var settings_BoligListFeedMaegler = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligListFeedMaegler"])) ? SettingsItem["BoligListFeedMaegler"] : "";
198 var settings_BoligCountFeed = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligCountFeed"])) ? SettingsItem["BoligCountFeed"] : "";
199 var settings_BoligMapFeed = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligMapFeed"])) ? SettingsItem["BoligMapFeed"] : "";
200 var settings_AdvisorSearchFeed = "Default.aspx?ID=" + Pageview.Area.Item["AdvisorSearchFeed"];
201
202 // Forside
203 var settings_FrontpageOverskrift = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["FrontpageOverskrift"])) ? SettingsItem["FrontpageOverskrift"] : "";
204 var settings_FrontpageVideo = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["FrontpageVideo"])) ? SettingsItem["FrontpageVideo"] : "";
205 var settings_FrontpageVideoImage = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["FrontpageVideoImage"])) ? SettingsItem["FrontpageVideoImage"] : "";
206
207 // Tracking
208 var settings_Google_Tag_Manager_ID = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["Google_Tag_Manager_ID"])) ? SettingsItem["Google_Tag_Manager_ID"] : "";
209 if (!string.IsNullOrEmpty(Converter.ToString(Pageview.Area.Item["BrokerGoogleTagManagerId"])))
210 {
211 settings_Google_Tag_Manager_ID = Converter.ToString(Pageview.Area.Item["BrokerGoogleTagManagerId"]);
212 }
213 var settings_Facebook_App_ID = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Facebook_App_ID"])) ? SettingsItem["Facebook_App_ID"] : "";
214 var settings_Leadhub_Pixel_ID = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Leadhub_Pixel_ID"])) ? SettingsItem["Leadhub_Pixel_ID"] : "";
215 var settings_AntiFlicker_ID = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["AntiFlicker_ID"])) ? SettingsItem["AntiFlicker_ID"] : "";
216 var settings_ConduzeId = Converter.ToString(SettingsItem["SpConduzeId"]);
217 var settings_Weply = Converter.ToString(SettingsItem["SpWeplyId"]);
218 var settings_Google_Optimize_Id = Converter.ToString(SettingsItem["Google_Optimize_Id"]);
219
220 // Indstillinger for brugerfunktioner
221 var settings_ForgotPwPage = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["ForgotPwPage"])) ? SettingsItem["ForgotPwPage"] : "";
222 var settings_NewsletterSignup = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["NewsletterSignup"])) ? SettingsItem["NewsletterSignup"] : "";
223 var settings_CreateUserModal = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["CreateUserModal"])) ? SettingsItem["CreateUserModal"] : "";
224 var settings_LoginModal = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["LoginModal"])) ? SettingsItem["LoginModal"] : "";
225
226 int createUserParagraphId = 0;
227 int loginParagraphId = 0;
228 Int32.TryParse(settings_CreateUserModal.ToString(), out createUserParagraphId);
229 Int32.TryParse(settings_LoginModal.ToString(), out loginParagraphId);
230
231 // Use configured search page id for search action which depends on the context. Context can currently be one of: rm, boligone or erhverv.
232 // Subsequent calls to search page via ajax (sorting, loading, etc) should preserve search context. (vv)
233 int searchPageId = GetPageSettingsPageId("Boligside");
234 if (searchPageId == 0)
235 {
236 searchPageId = GetWebsiteSettingsPageId("Boligside");
237 }
238
239 int boligsideId = GetPageSettingsPageId("Boligside");
240 if (boligsideId == 0)
241 {
242 boligsideId = GetWebsiteSettingsPageId("Boligside");
243 }
244
245 string productGroupFilter = String.Empty;
246 if (Pageview.Page.PropertyItem != null && Pageview.Page.PropertyItem.ContainsKey("Product_Group") && Pageview.Page.PropertyItem["Product_Group"] != null)
247 {
248 productGroupFilter = Pageview.Page.PropertyItem["Product_Group"].ToString();
249 }
250
251 if (Pageview.Page.PropertyItem != null && Convert.ToBoolean(Pageview.Page.PropertyItem["IsRealFrontpage"]))
252 {
253 searchClass = "is-frontpage";
254 }
255
256 bool isErhverv = false;
257 if (Pageview.Page.PropertyItem != null && Pageview.Page.PropertyItem.ContainsKey("Erhverv") && Pageview.Page.PropertyItem["Erhverv"] != null)
258 {
259 var s = Pageview.Page.PropertyItem["Erhverv"].ToString();
260 Boolean.TryParse(s, out isErhverv);
261 }
262
263 bool isBrokerPage = false;
264 if (!string.IsNullOrEmpty(Model.Area.Item.GetString("M_glerGruppeId")))
265 {
266 isBrokerPage = true;
267 bodyClass = ""; // Get rid of transparent header on brokerPage
268 }
269
270 string callTrackingId = Model.Item.GetString("CallTrackingId");
271
272 RealEstate.User.Model.BrokerEmployee MyBroker = null;
273 try
274 {
275 var MyB = new RealEstate.User.MyBroker();
276 MyBroker = MyB.GetMyBroker();
277 }
278 catch
279 {
280 // Ignore
281 }
282
283 string querySearch = (Context.Current.Request.QueryString["search"] != null ? Context.Current.Request.QueryString["search"] : "");
284 string querySearchNameAttr = "search";
285
286 // Overwrite search with zipcodeinterval if set
287 if (Context.Current.Request.QueryString["zipcodeinterval"] != null)
288 {
289 querySearch = Context.Current.Request.QueryString["zipcodeinterval"];
290 querySearchNameAttr = "zipcodeinterval";
291 }
292
293 string queryZipCodeFrom = (Context.Current.Request.QueryString["zipcodefrom"] != null ? Context.Current.Request.QueryString["zipcodefrom"] : "");
294 string queryZipCodeTo = (Context.Current.Request.QueryString["zipcodeto"] != null ? Context.Current.Request.QueryString["zipcodeto"] : "");
295
296 Dynamicweb.Security.UserManagement.User user = null;
297 int userID = 0;
298 string userName = "";
299 string userEmail = "";
300 string userPhone = "";
301 string userZip = "";
302 string userAddress = "";
303
304 if (Dynamicweb.Security.UserManagement.UserContext.Current.IsLoggedOn)
305 {
306 user = Dynamicweb.Security.UserManagement.UserContext.Current.User;
307 userName = user.Name;
308 userEmail = user.Email;
309 userPhone = user.Phone;
310 userZip = user.Zip;
311 userAddress = user.Address;
312 userID = user.ID;
313 }
314
315 string forgotPwSubject = Translate("email-forgot-pw-subject", "Glemt adgangskode");
316 string forgotPwTemplate = "";
317 string forgotPwSender = "";
318 string markerColor = "";
319 string mapMarkerUrl = TemplateUrl + "assets/images/logo-real.png";
320
321 // Important - e-mail templates for forgotPw must be placed in "UserManagement/Login" folder
322 forgotPwTemplate = "/Login/email_template_forgotpw_RM.cshtml";
323 forgotPwSender = "noreply@mailreal.dk";
324 markerColor = "#213960";
325
326 var butikId = string.Empty;
327 string bEmail = string.Empty;
328 if (MyBroker != null && MyBroker.Broker != null)
329 {
330 butikId = MyBroker.Broker.Item().GetString("CBMedlemsnummer");
331 bEmail = MyBroker.Broker.Item().GetString("Email");
332 }
333
334 var salesAssessmentPageId = Converter.ToString(GetPageIdByNavigationTag("OrderSalesAssessment"));
335
336 var termsMail = "info@realmaeglerne.dk";
337 WriteLiteral("\r\n<!DOCTYPE html>\r\n<html>\r\n<head>\r\n <meta charset=\"utf-8\">\r\n <title>");
338 Write(MetaTitle);
339 WriteLiteral("</title>\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n <meta name=\"description\"");
340 BeginWriteAttribute("content", " content=\"", 117041, "\"", 117067, 1);
341 WriteAttributeValue("", 117051, MetaDescription, 117051, 16, false);
342 EndWriteAttribute();
343 WriteLiteral(">\r\n <meta name=\"keywords\"");
344 BeginWriteAttribute("content", " content=\"", 117096, "\"", 117119, 1);
345 WriteAttributeValue("", 117106, MetaKeywords, 117106, 13, false);
346 EndWriteAttribute();
347 WriteLiteral(">\r\n <meta name=\"format-detection\" content=\"telephone=no\">\r\n <meta http-equiv=\"Expires\" content=\"60\">\r\n <meta name=\"robots\"");
348 BeginWriteAttribute("content", " content=\"", 117251, "\"", 117357, 3);
349 WriteAttributeValue("", 117261, Pageview.Area.Noindex ? "noindex" : "index", 117261, 46, false);
350 WriteAttributeValue("", 117307, ",", 117307, 1, true);
351 WriteAttributeValue("", 117308, Pageview.Area.Nofollow ? "nofollow" : "follow", 117308, 49, false);
352 EndWriteAttribute();
353 WriteLiteral(">\r\n\r\n");
354 WriteLiteral("\r\n ");
355 Write(RenderSnippet("OpenGraphTags"));
356 WriteLiteral("\r\n");
357 if (!string.IsNullOrEmpty(settings_Google_Optimize_Id))
358 {
359 WriteLiteral(" <!-- Google optimize script-->\r\n <script");
360 BeginWriteAttribute("src", " src=\"", 117549, "\"", 117629, 2);
361 WriteAttributeValue("", 117555, "https://www.googleoptimize.com/optimize.js?id=", 117555, 46, true);
362 WriteAttributeValue("", 117601, settings_Google_Optimize_Id, 117601, 28, false);
363 EndWriteAttribute();
364 WriteLiteral("></script>\r\n");
365 }
366 WriteLiteral(@" <!-- TrustBox script -->
367 <script type=""text/javascript"" src=""//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js"" async></script>
368 <!-- End TrustBox script -->
369
370 <script type=""application/ld+json"">
371 {
372 ""context"": ""https://schema.org/"",
373 """);
374 WriteLiteral(@"@type"": ""WebSite"",
375 ""name"": ""RealMæglerne"",
376 ""url"": ""https://www.realmaeglerne.dk/"",
377 ""potentialAction"": {
378 ""type"": ""SearchAction"",
379 ""target"": ""https://www.realmaeglerne.dk/find-maegler?q={search_term_string}"",
380 ""query-input"": ""required name=search_term_string""
381 }
382 }
383 </script>
384
385 <script type=""application/ld+json"">
386 {
387 ""context"": ""https://schema.org"",
388 """);
389 WriteLiteral(@"@type"": ""Corporation"",
390 ""name"": ""RealMæglerne"",
391 ""alternateName"": ""R&B Mægler A/S"",
392 ""url"": ""https://www.realmaeglerne.dk"",
393 ""logo"": ""https://www.realmaeglerne.dk/Files/Images/RealM_Logo_NY_MBlaa_RGB.png"",
394 ""contactPoint"": {
395 ""type"": ""ContactPoint"",
396 ""telephone"": ""+4570237153"",
397 ""contactType"": ""sales"",
398 ""areaServed"": ""DK"",
399 ""availableLanguage"": ""Danish""
400 },
401 ""sameAs"": [
402 ""https://www.facebook.com/realmaeglerne/"",
403 ""https://www.linkedin.com/company/realmæglerne/"",
404 ""https://www.youtube.com/channel/UCLHYWIUcNtFitvSsbBJnI3g"",
405 ""https://www.realmaeglerne.dk/""
406 ]
407 }
408 </script>
409 ");
410 Write(RenderSnippet("StructuredData"));
411 WriteLiteral("\r\n");
412 WriteLiteral("\r\n");
413 WriteLiteral(" <link rel=\"stylesheet\"");
414 BeginWriteAttribute("href", " href=\"", 119251, "\"", 119302, 2);
415 WriteAttributeValue("", 119258, TemplateUrl, 119258, 14, false);
416 WriteAttributeValue("", 119272, "assets/fontawesome/css/all.css", 119272, 30, true);
417 EndWriteAttribute();
418 WriteLiteral(" async />\r\n <link rel=\"stylesheet\"");
419 BeginWriteAttribute("href", " href=\"", 119344, "\"", 119359, 1);
420 WriteAttributeValue("", 119351, mainCSS, 119351, 8, false);
421 EndWriteAttribute();
422 WriteLiteral(" async />\r\n");
423
424 if (Converter.ToBoolean(Pageview.Area.Item["IsErhverv"]))
425 {
426 var cssErhvervFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/dist/css/erhverv.min.css"));
427 string erhvervCSS = TemplateUrl + $"assets/dist/css/erhverv.min.css?{cssErhvervFileInfo.LastWriteTime.Ticks}";
428 WriteLiteral(" <link rel=\"stylesheet\"");
429 BeginWriteAttribute("href", " href=\"", 119763, "\"", 119781, 1);
430 WriteAttributeValue("", 119770, erhvervCSS, 119770, 11, false);
431 EndWriteAttribute();
432 WriteLiteral(" async>\r\n");
433 }
434 WriteLiteral("\r\n\r\n <link rel=\"icon\" type=\"image/ico\"");
435 BeginWriteAttribute("href", " href=\"", 119850, "\"", 119914, 2);
436 WriteAttributeValue("", 119857, TemplateUrl, 119857, 14, false);
437 WriteAttributeValue("", 119871, "assets/images/favicons/favicon-real.ico?v=1", 119871, 43, true);
438 EndWriteAttribute();
439 WriteLiteral(">\r\n <link rel=\"icon\" type=\"image/png\"");
440 BeginWriteAttribute("href", " href=\"", 119955, "\"", 120021, 2);
441 WriteAttributeValue("", 119962, TemplateUrl, 119962, 14, false);
442 WriteAttributeValue("", 119976, "assets/images/favicons/favicon-real-16x16.png", 119976, 45, true);
443 EndWriteAttribute();
444 WriteLiteral(" sizes=\"16x16\">\r\n <link rel=\"icon\" type=\"image/png\"");
445 BeginWriteAttribute("href", " href=\"", 120076, "\"", 120142, 2);
446 WriteAttributeValue("", 120083, TemplateUrl, 120083, 14, false);
447 WriteAttributeValue("", 120097, "assets/images/favicons/favicon-real-32x32.png", 120097, 45, true);
448 EndWriteAttribute();
449 WriteLiteral(" sizes=\"32x32\">\r\n <link rel=\"icon\" type=\"image/png\"");
450 BeginWriteAttribute("href", " href=\"", 120197, "\"", 120263, 2);
451 WriteAttributeValue("", 120204, TemplateUrl, 120204, 14, false);
452 WriteAttributeValue("", 120218, "assets/images/favicons/favicon-real-96x96.png", 120218, 45, true);
453 EndWriteAttribute();
454 WriteLiteral(" sizes=\"96x96\">\r\n <meta name=\"google-site-verification\" content=\"hsV-j5ENQp9iR1Kpd6h9uYGqfD6YqOE5zg-jsWjRPOg\" />\r\n\r\n");
455 if (!string.IsNullOrEmpty(settings_Google_Tag_Manager_ID.ToString()))
456 {
457 WriteLiteral(@" <script>
458 window.dataLayer = window.dataLayer || []; // must be placed above GTM script
459 </script>
460 <!-- Google Tag Manager -->
461 <script>
462 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
463 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
464 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
465 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
466 })(window,document,'script','dataLayer','");
467 Write(settings_Google_Tag_Manager_ID);
468 WriteLiteral("\');</script>\r\n <!-- End Google Tag Manager -->\r\n");
469 }
470 WriteLiteral("\r\n");
471 if (isBrokerPage && !String.IsNullOrEmpty(callTrackingId))
472 {
473 WriteLiteral(" <script type=\"text/javascript\"");
474 BeginWriteAttribute("src", " src=\"", 121245, "\"", 121317, 2);
475 WriteAttributeValue("", 121251, "https://call.call-tracking.dk/getJavascript?custid=", 121251, 51, true);
476 WriteAttributeValue("", 121302, callTrackingId, 121302, 15, false);
477 EndWriteAttribute();
478 WriteLiteral("></script>\r\n");
479 }
480 WriteLiteral("\r\n");
481 if (!String.IsNullOrEmpty(settings_Leadhub_Pixel_ID.ToString()))
482 {
483 WriteLiteral(@" <!-- Begin Leadhub Pixel Code -->
484 <script>
485 (function(w,d,x,n,u,t,f,s,o){
486 f='LHInsights';w[n]=w[f]=w[f]||function(n,d){
487 (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)
488 })(window,document, 'script', 'lhi', '//www.lhinsights.com/agent.js', '");
489 Write(settings_Leadhub_Pixel_ID);
490 WriteLiteral("\');\r\n lhi(\'pageview\');\r\n </script>\r\n <!-- End Leadhub Pixel Code -->\r\n");
491 }
492 WriteLiteral("\r\n <script>\r\n // Global namespace used for fetching API feeds from DW\r\n var RMAPI = (RMAPI) ? RMAPI : {};\r\n var ApiPreFix = \"/Default.aspx?ID=\";\r\n RMAPI.BoligCountFeed = ApiPreFix + \"");
493 Write(settings_BoligCountFeed);
494 WriteLiteral("\";\r\n RMAPI.BoligListFeed = ApiPreFix + \"");
495 Write(settings_BoligListFeed);
496 WriteLiteral("\" + \"&refpageid=");
497 Write(Pageview.Page.ID);
498 WriteLiteral("\";\r\n RMAPI.BoligListFeedErhverv = \"");
499 Write(settings_BoligListFeedErhverv);
500 WriteLiteral("\";\r\n RMAPI.BoligListFeedMaegler = ApiPreFix + \"");
501 Write(settings_BoligListFeedMaegler);
502 WriteLiteral("\" + \"&refpageid=");
503 Write(Pageview.Page.ID);
504 WriteLiteral("\";\r\n RMAPI.BoligSearchFeed = ApiPreFix + \"");
505 Write(settings_BoligSearchFeed);
506 WriteLiteral("\";\r\n RMAPI.BoligMapFeed = ApiPreFix + \"");
507 Write(settings_BoligMapFeed);
508 WriteLiteral("\";\r\n RMAPI.Boligagent = \"");
509 Write(settings_Boligagent);
510 WriteLiteral("\";\r\n RMAPI.IsErhverv = ");
511 Write(isErhverv.ToString().ToLower());
512 WriteLiteral(";\r\n RMAPI.ProductGroupFilter = \"");
513 Write(productGroupFilter);
514 WriteLiteral("\";\r\n RMAPI.ButikId = \"");
515 Write(butikId);
516 WriteLiteral("\";\r\n RMAPI.Boligvisning = false;\r\n RMAPI.RefPageId = \"");
517 Write(Pageview.Page.ID);
518 WriteLiteral("\";\r\n RMAPI.Template = \"");
519 Write(template);
520 WriteLiteral("\";\r\n RMAPI.SliderSettings = ");
521 Write(JsonConvert.SerializeObject(Settings.Site));
522 WriteLiteral(";\r\n RMAPI.AdvisorSearchFeed = \"");
523 Write(settings_AdvisorSearchFeed);
524 WriteLiteral("\";\r\n RMAPI.LoadingIcon = \"");
525 Write(loadingIcon);
526 WriteLiteral("\";\r\n RMAPI.MarkerColor = \"");
527 Write(markerColor);
528 WriteLiteral("\";\r\n RMAPI.mapMarkerUrl = \"");
529 Write(mapMarkerUrl);
530 WriteLiteral("\";\r\n RMAPI.settings_ForgotPwPage = \"");
531 Write(settings_ForgotPwPage);
532 WriteLiteral("\";\r\n </script>\r\n\r\n");
533 if (!string.IsNullOrEmpty(settings_Facebook_App_ID.ToString()))
534 {
535 WriteLiteral(@" <!-- Facebook Pixel Code -->
536 <script>
537 !function (f, b, e, v, n, t, s) {
538 if (f.fbq) return; n = f.fbq = function () {
539 n.callMethod ?
540 n.callMethod.apply(n, arguments) : n.queue.push(arguments)
541 };
542 if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0';
543 n.queue = []; t = b.createElement(e); t.async = !0;
544 t.src = v; s = b.getElementsByTagName(e)[0];
545 s.parentNode.insertBefore(t, s)
546 }(window, document, 'script',
547 'https://connect.facebook.net/en_US/fbevents.js');
548 fbq('init', '");
549 Write(settings_Facebook_App_ID);
550 WriteLiteral("\');\r\n fbq(\'track\', \'PageView\');\r\n </script>\r\n <noscript>\r\n <img height=\"1\" width=\"1\"");
551 BeginWriteAttribute("src", " src=\"", 124220, "\"", 124305, 3);
552 WriteAttributeValue("", 124226, "https://www.facebook.com/tr?id=", 124226, 31, true);
553 WriteAttributeValue("", 124257, settings_Facebook_App_ID, 124257, 25, false);
554 WriteAttributeValue("", 124282, "&ev=PageView&noscript=1", 124282, 23, true);
555 EndWriteAttribute();
556 WriteLiteral(" />\r\n </noscript>\r\n <!-- End Facebook Pixel Code -->\r\n");
557 }
558 WriteLiteral("\r\n <script type=\'text/javascript\' src=\'https://platform-api.sharethis.com/js/sharethis.js#property=5d68cfaf5fea9f001288d9ac&product=inline-share-buttons\' async=\'async\'></script>\r\n\r\n</head>\r\n\r\n<body");
559 BeginWriteAttribute("class", " class=\"", 124581, "\"", 124608, 2);
560 WriteAttributeValue("", 124589, template, 124589, 9, false);
561 WriteAttributeValue("", 124598, bodyClass, 124598, 10, false);
562 EndWriteAttribute();
563 WriteLiteral(" data-spforgotpwtemplate=\"");
564 Write(forgotPwTemplate);
565 WriteLiteral("\" data-spforgotpwsender=\"");
566 Write(forgotPwSender);
567 WriteLiteral("\" data-spforgotpwsubject=\"");
568 Write(forgotPwSubject);
569 WriteLiteral("\" data-spsalesassesmentid=\"");
570 Write(salesAssessmentPageId);
571 WriteLiteral("\">\r\n");
572
573 string logoUrl = TemplateUrl + (!Converter.ToBoolean(Pageview.Area.Item["IsErhverv"]) ? "assets/images/logo-real.svg" : "assets/images/logo-erhverv.svg");
574 WriteLiteral("\r\n");
575 if (Converter.ToBoolean(Pageview.Area.Item["IsErhverv"]) && GetPageIdByNavigationTag("ErhvervFrontPage") != Pageview.ID)
576 {
577 WriteLiteral(" <div class=\"top-search\">\r\n <div class=\"header logo\">\r\n <div class=\"logo\">\r\n <a href=\"/erhverv\">\r\n <img");
578 BeginWriteAttribute("src", " src=\"", 125280, "\"", 125294, 1);
579 WriteAttributeValue("", 125286, logoUrl, 125286, 8, false);
580 EndWriteAttribute();
581 WriteLiteral(" alt=\"RealMæglerne\" />\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"top-form mx-auto\">\r\n <form id=\"main-search-top\" class=\"js-top-search\" action=\"/Default.aspx\" method=\"GET\">\r\n");
582
583
584 var settings_BoligListErhverv = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["BoliglisteErhverv"])) ? Converter.ToString(SettingsItem["BoliglisteErhverv"]).Replace("Default.aspx?Id=", "") : "";
585 WriteLiteral(" <input type=\"hidden\" name=\"ID\"");
586 BeginWriteAttribute("value", " value=\'", 125861, "\'", 125895, 1);
587 WriteAttributeValue("", 125869, settings_BoligListErhverv, 125869, 26, false);
588 EndWriteAttribute();
589 WriteLiteral(" id=\"searchPageId-top\" disabled=\"disabled\" />\r\n\r\n");
590 if (Context.Current.Request["type"] == "egetforbrug")
591 {
592 WriteLiteral(" <input name=\"type\" type=\"hidden\" value=\"egetforbrug\" />\r\n <input name=\"investeringsejendom\" type=\"hidden\" value=\"0\" />\r\n");
593 }
594 WriteLiteral(@" <div class=""row form-wrapper no-gutters"">
595 <div class=""col-xs-12 col-md-4 col-lg-5 col-searchbar"">
596 <div class=""searchbar float-label-container text-left"">
597 <label class=""float-label"">");
598 Write(Translate("Smartpage:Erhver.Postnummer, by, vej eller sagsnummer", "Postnummer, by, vej eller sagsnummer"));
599 WriteLiteral("</label>\r\n <input type=\"text\"");
600 BeginWriteAttribute("name", " name=\"", 126689, "\"", 126716, 1);
601 WriteAttributeValue("", 126696, querySearchNameAttr, 126696, 20, false);
602 EndWriteAttribute();
603 WriteLiteral(" id=\"searchfield-top\" class=\"search-input js-float-label js-getdata\" tabindex=\"1\"");
604 BeginWriteAttribute("value", " value=\"", 126798, "\"", 126876, 1);
605 WriteAttributeValue("", 126806, Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(querySearch), 126806, 70, false);
606 EndWriteAttribute();
607 WriteLiteral(@" />
608 </div>
609 </div>
610 <div class=""col-xs-12 col-md-5"">
611 <div class=""row no-gutters"">
612 <div class=""col-xs-12 col-md-6 input-col"">
613 <div class=""dropdown w-overlay float-label-container"">
614 <label class=""float-label"" data-toggle=""dropdown"" aria-haspopup=""true"" aria-expanded=""false"">");
615 Write(Translate("Smartpage:Search.Erhverv.Lokaletype", "Lokaletype"));
616 WriteLiteral(@"</label>
617 <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""></button>
618 <div class=""dropdown-menu box-shadow bolig-dropdown-container"" aria-labelledby=""Boligtype"">
619 <ul class=""bolig-dropdown list-unstyled"">
620 ");
621
622 RenderBoligTypeErhverv();
623 WriteLiteral(@" </ul>
624 <span class=""border-fat""></span>
625 <div class=""d-none d-md-block"">
626 <button class=""btn btn-primary js-close-dropdown"">");
627 Write(Translate("Smartpage:Search.Anvend", "Anvend"));
628 WriteLiteral(@"</button>
629 </div>
630 <div class=""d-flex row d-md-none"">
631 <div class=""col-6"">
632 <button class=""btn btn-danger js-remove-filter"">");
633 Write(Translate("Smartpage:Search.Annuller", "Annuller"));
634 WriteLiteral("</button>\r\n </div>\r\n <div class=\"col-6\">\r\n <button class=\"btn btn-primary js-close-dropdown\">");
635 Write(Translate("Smartpage:Search.Anvend", "Anvend"));
636 WriteLiteral(@"</button>
637 </div>
638 </div>
639 </div>
640
641 </div>
642 </div>
643 <div class=""col-xs-12 col-md-6 input-col"">
644 <div class=""btn-dropdown p-3 border-top-bottom-right"">
645 <ul class=""two-column list-unstyled"">
646 <li>
647 <label class=""checkbox-container"">
648 ");
649 Write(Translate("Smartpage:Search.Erhverv.Leje", "Leje"));
650 WriteLiteral(@"
651 <input type=""checkbox"" name=""propertytype"" value=""leje"" class=""js-input-check"" />
652 <span class=""checkmark""></span>
653 </label>
654 </li>
655 <li>
656 <label class=""checkbox-container"">
657 ");
658 Write(Translate("Smartpage:Search.Erhverv.Køb", "Køb"));
659 WriteLiteral(@"
660 <input type=""checkbox"" name=""propertytype"" value=""kob"" class=""js-input-check"" />
661 <span class=""checkmark""></span>
662 </label>
663 </li>
664 </ul>
665 </div>
666
667 </div>
668 </div>
669 </div>
670 <div class=""col-xs-12 col-md-3 col-lg-2 d-none d-md-block"">
671 <button type=""submit"" class=""btn btn-block btn-search""><i class=""fa fa-search""></i> ");
672 Write(Translate("Smartpage:Search.Søg", "Søg"));
673 WriteLiteral("</button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n");
674 }
675 WriteLiteral("\r\n");
676 if (Converter.ToBoolean(Pageview.Area.Item["IsErhverv"]))
677 {
678 WriteLiteral(" <div class=\"header shortcuts\">\r\n <div class=\"header-shortcuts float-right\">\r\n");
679 if (GetPageIdByNavigationTag("ErhvervFrontPage") != Pageview.ID)
680 {
681 WriteLiteral(" <a");
682 BeginWriteAttribute("href", " href=\'", 131579, "\'", 131586, 0);
683 EndWriteAttribute();
684 BeginWriteAttribute("class", " class=\"", 131587, "\"", 131703, 9);
685 WriteAttributeValue("", 131595, "search-menu", 131595, 11, true);
686 WriteAttributeValue(" ", 131606, "d-none", 131607, 7, true);
687 WriteAttributeValue(" ", 131613, "d-xl-flex", 131614, 10, true);
688 WriteAttributeValue(" ", 131623, "align-items-center", 131624, 19, true);
689 WriteAttributeValue(" ", 131642, "float-left", 131643, 11, true);
690 WriteAttributeValue(" ", 131653, "border-right", 131654, 13, true);
691 WriteAttributeValue(" ", 131666, "js-mainsearch", 131667, 14, true);
692 WriteAttributeValue(" ", 131680, "topsearch", 131681, 10, true);
693 WriteAttributeValue(" ", 131690, searchClass, 131691, 12, false);
694 EndWriteAttribute();
695 WriteLiteral(">\r\n <i class=\"fa fa-search\" aria-hidden=\"true\"></i><span class=\"search-menu-text hidden d-md-block\"> ");
696 Write(Translate("Smartpage:Search.Søg", "Søg"));
697 WriteLiteral("</span>\r\n </a>\r\n");
698 }
699 WriteLiteral(" <div class=\"menu-slide d-flex align-items-center\">\r\n <b></b>\r\n <span class=\"menu-text hidden d-md-block\">Menu</span>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n");
700 }
701 else
702 {
703 WriteLiteral(" <div class=\"header__container container\">\r\n <div class=\"header__logo\">\r\n <a href=\"/\"");
704 BeginWriteAttribute("title", " title=\"", 132303, "\"", 132311, 0);
705 EndWriteAttribute();
706 WriteLiteral(">\r\n <img");
707 BeginWriteAttribute("src", " src=\"", 132339, "\"", 132355, 1);
708 WriteAttributeValue("", 132345, logoUrl, 132345, 10, false);
709 EndWriteAttribute();
710 BeginWriteAttribute("alt", " alt=\"", 132356, "\"", 132362, 0);
711 EndWriteAttribute();
712 WriteLiteral(" />\r\n </a>\r\n </div>\r\n <div class=\"header__title\">\r\n <span>");
713 Write(Translate("Custom:Header.Title", "RealMæglerne"));
714 WriteLiteral("</span> \r\n </div>\r\n");
715 if (userID > 0)
716 {
717 WriteLiteral(@" <div class=""header__navigation d-none d-md-flex"">
718 <div class=""header__navigation"">
719 <div class=""header__Link"">
720 <ul>
721 <li class=""d-flex align-items-center"">
722 <svg xmlns=""http://www.w3.org/2000/svg"" width=""20"" height=""20"" viewBox=""0 0 20 20"" fill=""none"">
723 <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"" />
724 ");
725 WriteLiteral(" </svg>\r\n <a class=\"ml-2\"");
726 BeginWriteAttribute("href", "\r\n href=\"", 133720, "\"", 133802, 2);
727 WriteAttributeValue("", 133768, "/Default.aspx?ID=", 133768, 17, true);
728 WriteAttributeValue("", 133785, settings_MinSide, 133785, 17, false);
729 EndWriteAttribute();
730 WriteLiteral("\r\n target=\"_blank\"");
731 BeginWriteAttribute("aria-label", "\r\n aria-label=\"", 133860, "\"", 134010, 1);
732 WriteAttributeValue("", 133914, Translate("Custom:Accessibility.MyAccountLink", "Gå til Mit RealMæglerne - åbner i nyt vindue"), 133914, 96, false);
733 EndWriteAttribute();
734 WriteLiteral(">\r\n ");
735 Write(Translate("Mit RealMæglerne"));
736 WriteLiteral("\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n");
737
738 }
739 else
740 {
741 WriteLiteral(@" <div class=""header__navigation d-none d-md-flex"">
742 <div class=""header__navigation"">
743 <div class=""header__Link"">
744 <ul>
745 <li class=""d-flex align-items-center"">
746 <svg xmlns=""http://www.w3.org/2000/svg"" width=""20"" height=""20"" viewBox=""0 0 20 20"" fill=""none"">
747 <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"" />
748 ");
749 WriteLiteral(" </svg>\r\n <a class=\"ml-2\"\r\n href=\"javascript:panelLogin()\"");
750 BeginWriteAttribute("aria-label", "\r\n aria-label=\"", 135521, "\"", 135644, 1);
751 WriteAttributeValue("", 135575, Translate("Custom:Accessibility.Login", "Login - åbner i sidepanel"), 135575, 69, false);
752 EndWriteAttribute();
753 WriteLiteral(">\r\n ");
754 Write(Translate("Login"));
755 WriteLiteral("\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n");
756 }
757 WriteLiteral(" <div class=\"header__search flex-column flex-md-row js-mainsearch\">\r\n ");
758 Write(Translate("Søg bolig"));
759 WriteLiteral("\r\n </div>\r\n <div class=\"header__navigation\">\r\n <div class=\"header__navigation-icon menu-slide\">\r\n <div class=\"d-none d-md-block\">\r\n ");
760 Write(Translate("Menu"));
761 WriteLiteral("\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n");
762 }
763 WriteLiteral("\r\n <div class=\"search-modal\">\r\n\r\n");
764 if (Converter.ToString(Pageview.Area.Item["Type"]) == "real")
765 {
766 WriteLiteral(@" <div class=""main-search-form"">
767 <i class=""fal fa-times float-right fa-2x js-close-search close-search""></i>
768 <div class=""row mb-3 align-items-center"">
769 <div class=""col-xs-12 col-md-3 border-right"">
770 <h3>");
771 Write(Translate("Smartpage:Search.Søg bolig", "Søg bolig"));
772 WriteLiteral("</h3>\r\n </div>\r\n <div class=\"col-xs-12 col-md-9 home-count d-none d-md-block\">\r\n <span class=\"search-count\" id=\"searchCounterMain\">0</span> <span class=\"position-relative\">");
773 Write(Translate("Smartpage:Search.BoligerTilSalg", "Boliger til salg"));
774 WriteLiteral(@"<span class=""loader js-loader""></span></span>
775
776 </div>
777 </div>
778
779 <form id=""main-search"" class=""searchbar-wrapper"" action=""/Default.aspx"" method=""GET"">
780 <input type=""hidden"" name=""ID""");
781 BeginWriteAttribute("value", " value=\'", 137386, "\'", 137407, 1);
782 WriteAttributeValue("", 137394, searchPageId, 137394, 13, false);
783 EndWriteAttribute();
784 WriteLiteral(@" id=""searchPageId"" disabled=""disabled"" />
785 <div class=""row form-wrapper no-gutters"">
786
787 <div class=""col-xs-12 col-md-5 col-searchbar"">
788 <div class=""searchbar"">
789 <input type=""text""");
790 BeginWriteAttribute("name", " name=\"", 137691, "\"", 137718, 1);
791 WriteAttributeValue("", 137698, querySearchNameAttr, 137698, 20, false);
792 EndWriteAttribute();
793 WriteLiteral(" id=\"searchfield\" class=\"search-input\" placeholder=\"Postnummer, by, vej eller sagsnummer\" tabindex=\"1\"");
794 BeginWriteAttribute("value", " value=\"", 137821, "\"", 137899, 1);
795 WriteAttributeValue("", 137829, Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(querySearch), 137829, 70, false);
796 EndWriteAttribute();
797 WriteLiteral(" />\r\n <input type=\"hidden\" id=\"zipcodefrom\" name=\"zipcodefrom\"");
798 BeginWriteAttribute("value", " value=\"", 137993, "\"", 138076, 1);
799 WriteAttributeValue("", 138001, Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(queryZipCodeFrom), 138001, 75, false);
800 EndWriteAttribute();
801 WriteLiteral(" />\r\n <input type=\"hidden\" id=\"zipcodeto\" name=\"zipcodeto\"");
802 BeginWriteAttribute("value", " value=\"", 138166, "\"", 138247, 1);
803 WriteAttributeValue("", 138174, Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(queryZipCodeTo), 138174, 73, false);
804 EndWriteAttribute();
805 WriteLiteral(@" />
806 </div>
807 </div>
808 <div class=""col-xs-12 col-md-5"">
809 <div class=""row no-gutters"">
810 <div class=""col-xs-12 col-md-6 input-col"">
811 <div class=""dropdown"">
812 <button class=""btn btn-dropdown dropdown-toggle reverse"" type=""button"" id=""Boligtype"" data-toggle=""dropdown"" aria-haspopup=""true"" aria-expanded=""false"">
813 ");
814 Write(Translate("Smartpage:Search.Boligtype", "Boligtype"));
815 WriteLiteral(@"
816 </button>
817 <div class=""dropdown-menu box-shadow bolig-dropdown-container"" aria-labelledby=""Boligtype"">
818 <ul class=""bolig-dropdown list-unstyled"">
819 ");
820
821 RenderBoligtypeCheckboxesDropdown();
822 WriteLiteral(" </ul>\r\n <span class=\"border-fat\"></span>\r\n <button class=\"btn btn-primary js-close-dropdown\">");
823 Write(Translate("Smartpage:Search.Anvend", "Anvend"));
824 WriteLiteral(@"</button>
825 </div>
826
827 </div>
828
829 </div>
830 <div class=""col-xs-12 col-md-6 input-col"">
831 <div class=""dropdown"">
832 <button class=""btn btn-dropdown dropdown-toggle reverse"" type=""button"" id=""Pris"" data-toggle=""dropdown"" aria-haspopup=""true"" aria-expanded=""false"">
833 ");
834 Write(Translate("Smartpage:Search.Pris", "Pris"));
835 WriteLiteral(@"
836 </button>
837 <div class=""dropdown-menu box-shadow dropdown-price js-dropdown-price"" aria-labelledby=""Pris"">
838 <input name=""pricemin"" type=""text"" class=""form-control mb-10 js-auto-thousand js-pricemin-frontpage-input""");
839 BeginWriteAttribute("placeholder", " placeholder=\'", 140498, "\'", 140575, 1);
840 WriteAttributeValue("", 140512, Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris"), 140512, 63, false);
841 EndWriteAttribute();
842 BeginWriteAttribute("value", " value=\'", 140576, "\'", 140712, 1);
843 WriteAttributeValue("", 140584, !string.IsNullOrEmpty(Context.Current.Request.QueryString["pricemin"]) ? Context.Current.Request.QueryString["pricemin"] : "", 140584, 128, false);
844 EndWriteAttribute();
845 WriteLiteral(" />\r\n <select class=\"form-control js-pricemin-frontpage-select js-input-min-select mb-10\">\r\n <option selected=\"true\" disabled=\"disabled\">");
846 Write(Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris"));
847 WriteLiteral("</option>\r\n");
848 for (var i = 0; i <= 10000000; i += 100000)
849 {
850 if (i == 10000000)
851 {
852 WriteLiteral(" <option");
853 BeginWriteAttribute("value", " value=\"", 141349, "\"", 141359, 1);
854 WriteAttributeValue("", 141357, i, 141357, 2, false);
855 EndWriteAttribute();
856 WriteLiteral(" data-value=\'");
857 Write(Converter.ToInt32(i).ToString("N0"));
858 WriteLiteral("+\'>");
859 Write(Convert.ToInt32(i).ToString("N0"));
860 WriteLiteral("+</option>\r\n");
861 }
862 else
863 {
864 WriteLiteral(" <option");
865 BeginWriteAttribute("value", " value=\"", 141689, "\"", 141699, 1);
866 WriteAttributeValue("", 141697, i, 141697, 2, false);
867 EndWriteAttribute();
868 WriteLiteral(" data-value=\'");
869 Write(Converter.ToInt32(i).ToString("N0"));
870 WriteLiteral("\'>");
871 Write(Convert.ToInt32(i).ToString("N0"));
872 WriteLiteral("</option>\r\n");
873 }
874 }
875 WriteLiteral(" </select>\r\n\r\n <input type=\"text\" name=\"pricemax\" class=\"form-control js-auto-thousand js-pricemax-frontpage-input\"");
876 BeginWriteAttribute("placeholder", " placeholder=\'", 142103, "\'", 142180, 1);
877 WriteAttributeValue("", 142117, Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris"), 142117, 63, false);
878 EndWriteAttribute();
879 BeginWriteAttribute("value", " value=\'", 142181, "\'", 142317, 1);
880 WriteAttributeValue("", 142189, !string.IsNullOrEmpty(Context.Current.Request.QueryString["pricemax"]) ? Context.Current.Request.QueryString["pricemax"] : "", 142189, 128, false);
881 EndWriteAttribute();
882 WriteLiteral(" />\r\n <select class=\"form-control js-pricemax-frontpage-select js-input-max-select\">\r\n <option selected=\"true\" disabled=\"disabled\">");
883 Write(Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris"));
884 WriteLiteral("</option>\r\n");
885 for (var i = 0; i <= 10000000; i += 100000)
886 {
887 if (i == 10000000)
888 {
889 WriteLiteral(" <option");
890 BeginWriteAttribute("value", " value=\"", 142948, "\"", 142958, 1);
891 WriteAttributeValue("", 142956, i, 142956, 2, false);
892 EndWriteAttribute();
893 WriteLiteral(" data-value=\'");
894 Write(Converter.ToInt32(i).ToString("N0"));
895 WriteLiteral("+\'>");
896 Write(Convert.ToInt32(i).ToString("N0"));
897 WriteLiteral("+</option>\r\n");
898 }
899 else
900 {
901 WriteLiteral(" <option");
902 BeginWriteAttribute("value", " value=\"", 143288, "\"", 143298, 1);
903 WriteAttributeValue("", 143296, i, 143296, 2, false);
904 EndWriteAttribute();
905 WriteLiteral(" data-value=\'");
906 Write(Converter.ToInt32(i).ToString("N0"));
907 WriteLiteral("\'>");
908 Write(Convert.ToInt32(i).ToString("N0"));
909 WriteLiteral("</option>\r\n");
910 }
911 }
912 WriteLiteral(@" </select>
913 </div>
914 </div>
915 </div>
916 </div>
917 </div>
918 <div class=""col-xs-12 col-md-2 d-none d-md-block"">
919 <button type=""submit"" class=""btn btn-block btn-search""><i class=""fa fa-search""></i> ");
920 Write(Translate("Smartpage:Search.Søg", "Søg"));
921 WriteLiteral(@"</button>
922 </div>
923 </div>
924
925 <div class=""row moresearch-btn no-gutters"">
926 <div class=""col-sm-12"">
927 <div class=""row align-items-center no-gutters"">
928 <div class=""col-12 col-md-4"">
929 <button class=""btn-blank js-search-collapse"" type=""button"" data-toggle=""collapse"" data-target=""#moreSearch-master"" aria-expanded=""false"" aria-controls=""moreSearch"">
930 <span class=""moreSearch-text""><i class=""fas fa-plus open-close""></i> <span class=""not-open white"">");
931 Write(Translate("Smartpage:Search.Flere søgemuligheder", "Flere søgemuligheder"));
932 WriteLiteral("</span> <span class=\"open white\"><span class=\"js-filter-count\">0</span> ");
933 Write(Translate("Smartpage:Search.FiltreAnvendt", "filtre anvendt"));
934 WriteLiteral(" </span></span>\r\n </button>\r\n </div>\r\n <div class=\"col-6 col-md-2 mb-xs-4\">\r\n <a class=\"js-reset reset-btn white\">");
935 Write(Translate("Smartpage:Search.NulstilValg", "Nulstil valg"));
936 WriteLiteral("</a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"collapse\" id=\"moreSearch-master\">\r\n\r\n <h4 class=\"mt-20\"><b>");
937 Write(Translate("Smartpage:Search.Bolig", "Bolig"));
938 WriteLiteral(@"</b></h4>
939 <div class=""row align-items-end mb-30"">
940 <div class=""col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"">
941 <div class=""filter-container row"">
942 <label class=""d-block col-12"">");
943 Write(Translate("Smartpage:Search.Boligareal", "Boligareal"));
944 WriteLiteral(@"</label>
945 <div class=""col-6 pr-sm-0 pr-2"">
946 <input type=""text"" name=""boligarealmin"" id=""boligarealmin"" class=""form-control js-boligarealmin-frontpage-input js-count""");
947 BeginWriteAttribute("placeholder", " placeholder=\'", 146060, "\'", 146133, 1);
948 WriteAttributeValue("", 146074, Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2"), 146074, 59, false);
949 EndWriteAttribute();
950 BeginWriteAttribute("value", " value=\'", 146134, "\'", 146280, 1);
951 WriteAttributeValue("", 146142, !string.IsNullOrEmpty(Context.Current.Request.QueryString["boligarealmin"]) ? Context.Current.Request.QueryString["boligarealmin"] : "", 146142, 138, false);
952 EndWriteAttribute();
953 WriteLiteral(" />\r\n <select class=\"form-control js-boligarealmin-frontpage-select js-count\">\r\n <option selected=\"true\" disabled=\"disabled\">");
954 Write(Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2"));
955 WriteLiteral("</option>\r\n");
956 for (var i = 0; i <= 300; i += 10)
957 {
958 if (i == 300)
959 {
960 WriteLiteral(" <option>");
961 Write(i);
962 WriteLiteral("+</option>\r\n");
963 }
964 else
965 {
966 WriteLiteral(" <option>");
967 Write(i);
968 WriteLiteral("</option>\r\n");
969 }
970 }
971 WriteLiteral(@" </select>
972
973 </div>
974 <div class=""col-6 pl-sm-0 pl-2"">
975 <input type=""text"" name=""boligarealmax"" id=""boligarealmax"" class=""form-control js-boligarealmax-frontpage-input js-count""");
976 BeginWriteAttribute("placeholder", " placeholder=\'", 147665, "\'", 147738, 1);
977 WriteAttributeValue("", 147679, Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2"), 147679, 59, false);
978 EndWriteAttribute();
979 BeginWriteAttribute("value", " value=\'", 147739, "\'", 147885, 1);
980 WriteAttributeValue("", 147747, !string.IsNullOrEmpty(Context.Current.Request.QueryString["boligarealmax"]) ? Context.Current.Request.QueryString["boligarealmax"] : "", 147747, 138, false);
981 EndWriteAttribute();
982 WriteLiteral(" />\r\n <select class=\"form-control js-boligarealmax-frontpage-select js-count\">\r\n <option selected=\"true\" disabled=\"disabled\">");
983 Write(Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2"));
984 WriteLiteral("</option>\r\n");
985 for (var i = 0; i <= 300; i += 10)
986 {
987 if (i == 300)
988 {
989 WriteLiteral(" <option>");
990 Write(i);
991 WriteLiteral("+</option>\r\n");
992 }
993 else
994 {
995 WriteLiteral(" <option>");
996 Write(i);
997 WriteLiteral("</option>\r\n");
998 }
999 }
1000 WriteLiteral(@" </select>
1001
1002 </div>
1003 </div>
1004 </div>
1005 <div class=""col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"">
1006 <div class=""filter-container row"">
1007 <label class=""d-block col-12"">");
1008 Write(Translate("Smartpage:Search.Grundareal", "Grundareal"));
1009 WriteLiteral(@"</label>
1010 <div class=""col-6 pr-sm-0 pr-2"">
1011 <input type=""text"" name=""grundarealmin"" id=""grundarealmin"" class=""form-control js-grundarealmin-frontpage-input js-count""");
1012 BeginWriteAttribute("placeholder", " placeholder=\'", 149666, "\'", 149739, 1);
1013 WriteAttributeValue("", 149680, Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2"), 149680, 59, false);
1014 EndWriteAttribute();
1015 BeginWriteAttribute("value", " value=\'", 149740, "\'", 149887, 1);
1016 WriteAttributeValue("", 149748, !string.IsNullOrEmpty(Context.Current.Request.QueryString["grundarealmin"]) ? Context.Current.Request.QueryString["grundarealmin"] : "", 149748, 139, false);
1017 EndWriteAttribute();
1018 WriteLiteral(" />\r\n <select class=\"form-control js-grundarealmin-frontpage-select js-count\">\r\n <option selected=\"true\" disabled=\"disabled\">");
1019 Write(Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2"));
1020 WriteLiteral("</option>\r\n");
1021 for (var i = 0; i <= 10000; i += 100)
1022 {
1023 if (i == 10000)
1024 {
1025 WriteLiteral(" <option>");
1026 Write(i);
1027 WriteLiteral("+</option>\r\n");
1028 }
1029 else
1030 {
1031 WriteLiteral(" <option>");
1032 Write(i);
1033 WriteLiteral("</option>\r\n");
1034 }
1035 }
1036 WriteLiteral(@" </select>
1037 </div>
1038 <div class=""col-6 pl-sm-0 pl-2"">
1039 <input type=""text"" name=""grundarealmax"" id=""grundarealmax"" class=""form-control js-grundarealmax-frontpage-input js-count""");
1040 BeginWriteAttribute("placeholder", " placeholder=\'", 151275, "\'", 151348, 1);
1041 WriteAttributeValue("", 151289, Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2"), 151289, 59, false);
1042 EndWriteAttribute();
1043 BeginWriteAttribute("value", " value=\'", 151349, "\'", 151496, 1);
1044 WriteAttributeValue("", 151357, !string.IsNullOrEmpty(Context.Current.Request.QueryString["grundarealmax"]) ? Context.Current.Request.QueryString["grundarealmax"] : "", 151357, 139, false);
1045 EndWriteAttribute();
1046 WriteLiteral(" />\r\n <select class=\"form-control js-grundarealmax-frontpage-select js-count\">\r\n <option selected=\"selected\" disabled=\"disabled\">");
1047 Write(Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2"));
1048 WriteLiteral("</option>\r\n");
1049 for (var i = 0; i <= 10000; i += 100)
1050 {
1051 if (i == 10000)
1052 {
1053 WriteLiteral(" <option>");
1054 Write(i);
1055 WriteLiteral("+</option>\r\n");
1056 }
1057 else
1058 {
1059 WriteLiteral(" <option>");
1060 Write(i);
1061 WriteLiteral("</option>\r\n");
1062 }
1063 }
1064 WriteLiteral(@" </select>
1065 </div>
1066 </div>
1067 </div>
1068 <div class=""col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"">
1069 <div class=""filter-container row"">
1070 <label class=""d-block col-12"">Antal rum</label>
1071 <div class=""col-6 pr-sm-0 pr-2"">
1072 <select name=""roomsmin"" id=""roomsmin"" class=""form-control reverse js-roomsmin-select js-count"">
1073 <option selected=""selected"" disabled=""disabled"">");
1074 Write(Translate("Smartpage:Search.Placeholder.Min", "Min"));
1075 WriteLiteral("</option>\r\n");
1076
1077 RenderSelectValue("1", "1", "roomsmin");
1078 RenderSelectValue("2", "2", "roomsmin");
1079 RenderSelectValue("3", "3", "roomsmin");
1080 RenderSelectValue("4", "4", "roomsmin");
1081 RenderSelectValue("5+", "5", "roomsmin");
1082 WriteLiteral(@" </select>
1083 </div>
1084 <div class=""col-6 pl-sm-0 pl-2"">
1085 <select name=""roomsmax"" id=""roomsmax"" class=""form-control reverse js-roomsmax-select js-count"">
1086 <option selected=""selected"" disabled=""disabled"">");
1087 Write(Translate("Smartpage:Search.Placeholder.Max", "Max"));
1088 WriteLiteral("</option>\r\n");
1089
1090 RenderSelectValue("1", "1", "roomsmax");
1091 RenderSelectValue("2", "2", "roomsmax");
1092 RenderSelectValue("3", "3", "roomsmax");
1093 RenderSelectValue("4", "4", "roomsmax");
1094 RenderSelectValue(Translate("Smartpage:Rooms.5", "5"), "5", "roomsmax");
1095 WriteLiteral(@" </select>
1096 </div>
1097 </div>
1098 </div>
1099 <div class=""col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"">
1100 <div class=""row"">
1101 <div class=""col-12 pr-2"">
1102 <div class=""filter-container"">
1103 <label class=""d-block"">Energimærke</label>
1104 <select name=""energylabel"" id=""energylabel"" class=""form-control reverse js-energylabel-select js-count"">
1105 <option selected=""selected"" disabled=""disabled"">");
1106 Write(Translate("Smartpage:Search.Vælg", "Vælg"));
1107 WriteLiteral(@"</option>
1108 <option value=""01"">G</option>
1109 <option value=""02"">F</option>
1110 <option value=""03"">E</option>
1111 <option value=""04"">D</option>
1112 <option value=""05"">C</option>
1113 <option value=""06"">B</option>
1114 <option value=""07"">A</option>
1115 <option value=""08"">A2010</option>
1116 <option value=""09"">A2015</option>
1117 <option value=""10"">A2020+</option>
1118 </select>
1119 </div>
1120 ");
1121 WriteLiteral(@" </div>
1122 </div>
1123 </div>
1124 <div class=""col-12 col-sm-6 col-lg-3 mt-3"">
1125 <h4");
1126 BeginWriteAttribute("class", " class=\"", 157295, "\"", 157303, 0);
1127 EndWriteAttribute();
1128 WriteLiteral("><b>");
1129 Write(Translate("Smartpage:Search.Økonomi", "Økonomi"));
1130 WriteLiteral("</b></h4>\r\n <div class=\"filter-container row\">\r\n <label class=\"d-block col-12\">");
1131 Write(Translate("Smartpage:Search.Ejerudgift/boligydelse pr. måned", "Ejerudgift/boligydelse pr. måned"));
1132 WriteLiteral("</label>\r\n <div class=\"col-6 pr-sm-0 pr-2\">\r\n <input type=\"text\" name=\"subsidymin\" id=\"subsidymin\" class=\"form-control js-subsidymin-frontpage-input js-count\"");
1133 BeginWriteAttribute("placeholder", " placeholder=\'", 157865, "\'", 157940, 1);
1134 WriteAttributeValue("", 157879, Translate("Smartpage:Search.Placeholder.MinDKK", "Min. DKK"), 157879, 61, false);
1135 EndWriteAttribute();
1136 BeginWriteAttribute("value", " value=\'", 157941, "\'", 158082, 1);
1137 WriteAttributeValue("", 157949, !string.IsNullOrEmpty(Context.Current.Request.QueryString["subsidymin"]) ? Context.Current.Request.QueryString["subsidymin"] : "", 157949, 133, false);
1138 EndWriteAttribute();
1139 WriteLiteral(" />\r\n <select class=\"form-control js-subsidymin-frontpage-select js-count\">\r\n <option selected=\"selected\" disabled=\"disabled\">");
1140 Write(Translate("Smartpage:Search.Placeholder.MinDKK", "Min. DKK"));
1141 WriteLiteral("</option>\r\n");
1142 for (var i = 0; i <= 25000; i += 1250)
1143 {
1144 if (i == 25000)
1145 {
1146 WriteLiteral(" <option");
1147 BeginWriteAttribute("value", " value=\"", 158726, "\"", 158755, 1);
1148 WriteAttributeValue("", 158734, Converter.ToInt32(i), 158734, 21, false);
1149 EndWriteAttribute();
1150 WriteLiteral(">");
1151 Write(Converter.ToInt32(i).ToString("N0"));
1152 WriteLiteral("+</option>\r\n");
1153 }
1154 else
1155 {
1156 WriteLiteral(" <option");
1157 BeginWriteAttribute("value", " value=\"", 159052, "\"", 159081, 1);
1158 WriteAttributeValue("", 159060, Converter.ToInt32(i), 159060, 21, false);
1159 EndWriteAttribute();
1160 WriteLiteral(">");
1161 Write(Converter.ToInt32(i).ToString("N0"));
1162 WriteLiteral("</option>\r\n");
1163 }
1164 }
1165 WriteLiteral(@" </select>
1166 </div>
1167 <div class=""col-6 pl-sm-0 pl-2"">
1168 <input type=""text"" name=""subsidymax"" id=""subsidymax"" class=""form-control js-subsidymax-frontpage-input js-count""");
1169 BeginWriteAttribute("placeholder", " placeholder=\'", 159593, "\'", 159668, 1);
1170 WriteAttributeValue("", 159607, Translate("Smartpage:Search.Placeholder.MaxDKK", "Max. DKK"), 159607, 61, false);
1171 EndWriteAttribute();
1172 BeginWriteAttribute("value", " value=\'", 159669, "\'", 159810, 1);
1173 WriteAttributeValue("", 159677, !string.IsNullOrEmpty(Context.Current.Request.QueryString["subsidymax"]) ? Context.Current.Request.QueryString["subsidymax"] : "", 159677, 133, false);
1174 EndWriteAttribute();
1175 WriteLiteral(" />\r\n <select class=\"form-control js-subsidymax-frontpage-select js-count\">\r\n <option selected=\"true\" disabled=\"disabled\">");
1176 Write(Translate("Smartpage:Search.Placeholder.MaxDKK", "Max. DKK"));
1177 WriteLiteral("</option>\r\n");
1178 for (var i = 0; i <= 25000; i += 1250)
1179 {
1180 if (i == 25000)
1181 {
1182 WriteLiteral(" <option");
1183 BeginWriteAttribute("value", " value=\"", 160450, "\"", 160479, 1);
1184 WriteAttributeValue("", 160458, Converter.ToInt32(i), 160458, 21, false);
1185 EndWriteAttribute();
1186 WriteLiteral(">");
1187 Write(Convert.ToInt32(i).ToString("N0"));
1188 WriteLiteral("+</option>\r\n");
1189 }
1190 else
1191 {
1192 WriteLiteral(" <option");
1193 BeginWriteAttribute("value", " value=\"", 160774, "\"", 160803, 1);
1194 WriteAttributeValue("", 160782, Converter.ToInt32(i), 160782, 21, false);
1195 EndWriteAttribute();
1196 WriteLiteral(">");
1197 Write(Convert.ToInt32(i).ToString("N0"));
1198 WriteLiteral("</option>\r\n");
1199 }
1200 }
1201 WriteLiteral(@" </select>
1202 </div>
1203 </div>
1204 </div>
1205 <div class=""col-12 col-sm-6 col-lg-4 offset-lg-5 mt-3 mt-sm-0"">
1206 <button type=""submit"" class=""btn btn-block btn-search""><i class=""fa fa-search""></i> ");
1207 Write(Translate("Smartpage:Search.AnvendFiltre", "Anvend filtre"));
1208 WriteLiteral(@"</button>
1209 </div>
1210 </div>
1211 </div>
1212 </div>
1213 </div>
1214 <div class=""row d-block d-md-none form-wrapper no-gutters"">
1215 <div class=""col-xs-12 col-md-2"">
1216 <button type=""submit"" class=""btn btn-block btn-search""><i class=""fa fa-search""></i> ");
1217 Write(Translate("Smartpage:Search.Søg", "Søg"));
1218 WriteLiteral("</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </form>\r\n </div>\r\n");
1219 }
1220 else
1221 {
1222 WriteLiteral(@" <div class=""main-search-form center"">
1223 <i class=""fal fa-times float-right fa-2x js-close-search""></i>
1224 <div class=""row mb-3 align-items-center"">
1225 <div class=""col-xs-12 col-md-5 border-right"">
1226 <h3>");
1227 Write(Translate("Smartpage:Search.Søg bolig", "Søg bolig"));
1228 WriteLiteral("</h3>\r\n </div>\r\n <div class=\"col-xs-12 col-md-7 home-count d-none d-md-block\">\r\n <span class=\"search-count\" id=\"searchCounterMain\">0</span> <span>");
1229 Write(Translate("Smartpage:Search.BoligerTilSalg", "Boliger til salg"));
1230 WriteLiteral("</span>\r\n </div>\r\n </div>\r\n\r\n <form id=\"main-search\" class=\"searchbar-wrapper\" action=\"/Default.aspx\" method=\"GET\">\r\n <input type=\"hidden\" name=\"ID\"");
1231 BeginWriteAttribute("value", " value=\'", 162917, "\'", 162938, 1);
1232 WriteAttributeValue("", 162925, searchPageId, 162925, 13, false);
1233 EndWriteAttribute();
1234 WriteLiteral(@" id=""searchPageId"" disabled=""disabled"" />
1235 <div class=""row form-wrapper no-gutters"">
1236
1237 <div class=""col-12 mb-10"">
1238 <div class=""searchbar"">
1239 <input type=""text""");
1240 BeginWriteAttribute("name", " name=\"", 163202, "\"", 163229, 1);
1241 WriteAttributeValue("", 163209, querySearchNameAttr, 163209, 20, false);
1242 EndWriteAttribute();
1243 WriteLiteral(" id=\"searchfield\" class=\"search-input\" placeholder=\"Postnummer, by, vej eller sagsnummer\" tabindex=\"1\"");
1244 BeginWriteAttribute("value", " value=\'", 163332, "\'", 163352, 1);
1245 WriteAttributeValue("", 163340, querySearch, 163340, 12, false);
1246 EndWriteAttribute();
1247 WriteLiteral(" />\r\n <input type=\"hidden\" id=\"zipcodefrom\" name=\"zipcodefrom\"");
1248 BeginWriteAttribute("value", " value=\'", 163446, "\'", 163471, 1);
1249 WriteAttributeValue("", 163454, queryZipCodeFrom, 163454, 17, false);
1250 EndWriteAttribute();
1251 WriteLiteral(" />\r\n <input type=\"hidden\" id=\"zipcodeto\" name=\"zipcodeto\"");
1252 BeginWriteAttribute("value", " value=\'", 163561, "\'", 163584, 1);
1253 WriteAttributeValue("", 163569, queryZipCodeTo, 163569, 15, false);
1254 EndWriteAttribute();
1255 WriteLiteral(@" />
1256 </div>
1257 </div>
1258 <div class=""col-xs-12 col-md-8"">
1259 <div class=""row no-gutters"">
1260 <div class=""col-xs-12 col-md-6 input-col"">
1261 <div class=""dropdown"">
1262 <button class=""btn btn-dropdown dropdown-toggle reverse js-count"" type=""button"" id=""Boligtype"" data-toggle=""dropdown"" aria-haspopup=""true"" aria-expanded=""false"">
1263 ");
1264 Write(Translate("Smartpage:Search.Boligtype", "Boligtype"));
1265 WriteLiteral(@"
1266 </button>
1267 <div class=""dropdown-menu box-shadow bolig-dropdown-container"" aria-labelledby=""Boligtype"">
1268 <ul class=""bolig-dropdown list-unstyled"">
1269 ");
1270
1271 RenderBoligtypeCheckboxesDropdown();
1272 WriteLiteral(" </ul>\r\n <span class=\"border-fat\"></span>\r\n <button class=\"btn btn-primary js-close-dropdown\">");
1273 Write(Translate("Smartpage:Search.Anvend", "Anvend"));
1274 WriteLiteral(@"</button>
1275 </div>
1276
1277 </div>
1278
1279 </div>
1280 <div class=""col-xs-12 col-md-6 input-col"">
1281 <div class=""dropdown"">
1282 <button class=""btn btn-dropdown dropdown-toggle reverse"" type=""button"" id=""Pris"" data-toggle=""dropdown"" aria-haspopup=""true"" aria-expanded=""false"">
1283 ");
1284 Write(Translate("Smartpage:Search.Pris", "Pris"));
1285 WriteLiteral(@"
1286 </button>
1287 <div class=""dropdown-menu box-shadow dropdown-price"" aria-labelledby=""Pris"">
1288 <input type=""text"" name=""pricemin"" class=""form-control mb-10 js-auto-thousand js-pricemin-frontpage-input""");
1289 BeginWriteAttribute("placeholder", " placeholder=\'", 165826, "\'", 165903, 1);
1290 WriteAttributeValue("", 165840, Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris"), 165840, 63, false);
1291 EndWriteAttribute();
1292 WriteLiteral(" />\r\n <select class=\"form-control js-pricemin-frontpage-select js-input-min-select mb-10\">\r\n <option selected=\"true\" disabled=\"disabled\">");
1293 Write(Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris"));
1294 WriteLiteral("</option>\r\n");
1295 for (var i = 0; i <= 10000000; i += 100000)
1296 {
1297 if (i == 10000000)
1298 {
1299 WriteLiteral(" <option");
1300 BeginWriteAttribute("value", " value=\"", 166540, "\"", 166550, 1);
1301 WriteAttributeValue("", 166548, i, 166548, 2, false);
1302 EndWriteAttribute();
1303 WriteLiteral(" data-value=\'");
1304 Write(Converter.ToInt32(i).ToString("N0"));
1305 WriteLiteral("+\'>");
1306 Write(Converter.ToInt32(i).ToString("N0"));
1307 WriteLiteral("+</option>\r\n");
1308 }
1309 else
1310 {
1311 WriteLiteral(" <option");
1312 BeginWriteAttribute("value", " value=\"", 166882, "\"", 166892, 1);
1313 WriteAttributeValue("", 166890, i, 166890, 2, false);
1314 EndWriteAttribute();
1315 WriteLiteral(" data-value=\'");
1316 Write(Converter.ToInt32(i).ToString("N0"));
1317 WriteLiteral("\'>");
1318 Write(Converter.ToInt32(i).ToString("N0"));
1319 WriteLiteral("</option>\r\n");
1320 }
1321 }
1322 WriteLiteral(" </select>\r\n\r\n <input type=\"text\" name=\"pricemax\" class=\"form-control js-auto-thousand js-pricemax-frontpage-input\"");
1323 BeginWriteAttribute("placeholder", " placeholder=\'", 167298, "\'", 167375, 1);
1324 WriteAttributeValue("", 167312, Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris"), 167312, 63, false);
1325 EndWriteAttribute();
1326 WriteLiteral(" />\r\n <select class=\"form-control js-pricemax-frontpage-select js-input-max-select\">\r\n <option selected=\"true\" disabled=\"disabled\">");
1327 Write(Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris"));
1328 WriteLiteral("</option>\r\n");
1329 for (var i = 0; i <= 10000000; i += 100000)
1330 {
1331 if (i == 10000000)
1332 {
1333 WriteLiteral(" <option");
1334 BeginWriteAttribute("value", " value=\"", 168006, "\"", 168016, 1);
1335 WriteAttributeValue("", 168014, i, 168014, 2, false);
1336 EndWriteAttribute();
1337 WriteLiteral(" data-value=\'");
1338 Write(Converter.ToInt32(i).ToString("N0"));
1339 WriteLiteral("+\'>");
1340 Write(Converter.ToInt32(i).ToString("N0"));
1341 WriteLiteral("+</option>\r\n");
1342 }
1343 else
1344 {
1345 WriteLiteral(" <option");
1346 BeginWriteAttribute("value", " value=\"", 168348, "\"", 168358, 1);
1347 WriteAttributeValue("", 168356, i, 168356, 2, false);
1348 EndWriteAttribute();
1349 WriteLiteral(" data-value=\'");
1350 Write(Converter.ToInt32(i).ToString("N0"));
1351 WriteLiteral("\'>");
1352 Write(Converter.ToInt32(i).ToString("N0"));
1353 WriteLiteral("</option>\r\n");
1354 }
1355 }
1356 WriteLiteral(@" </select>
1357 </div>
1358 </div>
1359 </div>
1360 </div>
1361 </div>
1362 <div class=""col-xs-12 col-md-4 d-none d-md-block"">
1363 <button type=""submit"" class=""btn btn-block btn-search""><i class=""fa fa-search""></i> ");
1364 Write(Translate("Smartpage:Search.Søg", "Søg"));
1365 WriteLiteral(@"</button>
1366 </div>
1367 </div>
1368
1369 <div class=""row moresearch-btn no-gutters"">
1370 <div class=""col-sm-12"">
1371 <div class=""row align-items-center no-gutters"">
1372 <div class=""col-12 col-md-5"">
1373 <button class=""btn-blank js-search-collapse"" type=""button"" data-toggle=""collapse"" data-target=""#moreSearch-master"" aria-expanded=""false"" aria-controls=""moreSearch-master"">
1374 <span class=""moreSearch-text""><i class=""fas fa-plus open-close white""></i> <span class=""not-open white"">");
1375 Write(Translate("Smartpage:Search.Flere søgemuligheder", "Flere søgemuligheder"));
1376 WriteLiteral("</span> <span class=\"open white\"><span class=\"js-filter-count\">0</span> ");
1377 Write(Translate("Smartpage:Search.FiltreAnvendt", "filtre anvendt"));
1378 WriteLiteral(" </span></span>\r\n </button>\r\n </div>\r\n <div class=\"col-6 col-md-3 mb-xs-4\">\r\n <a class=\"js-reset reset-btn white\">");
1379 Write(Translate("Smartpage:Search.NulstilValg", "Nulstil valg"));
1380 WriteLiteral(@"</a>
1381 </div>
1382 <div class=""col-6 col-md-4 mb-xs-4"">
1383 <div class=""parent-purchases"">
1384 <label class=""checkbox-container white"">
1385 ");
1386 Write(Translate("Smartpage:Search.Forældrekøbegnet", "Forældrekøbegnet"));
1387 WriteLiteral(@"
1388 <input type=""checkbox"" name=""foraeldrekoebegnet"" value=""true"" class=""js-input-check"">
1389 <span class=""checkmark grey""></span>
1390 </label>
1391 </div>
1392 </div>
1393 </div>
1394
1395 <div class=""collapse"" id=""moreSearch-master"">
1396
1397 <h4 class=""mt-20""><b>");
1398 Write(Translate("Smartpage:Search.Bolig", "Bolig"));
1399 WriteLiteral(@"</b></h4>
1400 <div class=""row align-items-end mb-30"">
1401 <div class=""col-12 col-sm-6 col-lg-6 mb-3 mb-lg-0"">
1402 <div class=""filter-container row"">
1403 <label class=""d-block col-12"">");
1404 Write(Translate("Smartpage:Search.Boligareal", "Boligareal"));
1405 WriteLiteral(@"</label>
1406 <div class=""col-6 pr-sm-0 pr-2"">
1407 <input type=""text"" name=""boligarealmin"" id=""boligarealmin"" class=""form-control js-boligarealmin-frontpage-input js-count""");
1408 BeginWriteAttribute("placeholder", " placeholder=\'", 171815, "\'", 171888, 1);
1409 WriteAttributeValue("", 171829, Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2"), 171829, 59, false);
1410 EndWriteAttribute();
1411 WriteLiteral(" />\r\n <select class=\"form-control js-boligarealmin-frontpage-select js-count\">\r\n <option selected=\"true\" disabled=\"disabled\">");
1412 Write(Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2"));
1413 WriteLiteral("</option>\r\n");
1414 for (var i = 0; i <= 300; i += 10)
1415 {
1416 if (i == 300)
1417 {
1418 WriteLiteral(" <option>");
1419 Write(i);
1420 WriteLiteral("+</option>\r\n");
1421 }
1422 else
1423 {
1424 WriteLiteral(" <option>");
1425 Write(i);
1426 WriteLiteral("</option>\r\n");
1427 }
1428 }
1429 WriteLiteral(@" </select>
1430 </div>
1431 <div class=""col-6 pl-sm-0 pl-2"">
1432 <input type=""text"" name=""boligarealmax"" id=""boligarealmax"" class=""form-control js-boligarealmax-frontpage-input js-count""");
1433 BeginWriteAttribute("placeholder", " placeholder=\'", 173271, "\'", 173344, 1);
1434 WriteAttributeValue("", 173285, Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2"), 173285, 59, false);
1435 EndWriteAttribute();
1436 WriteLiteral(" />\r\n <select class=\"form-control js-boligarealmax-frontpage-select js-count\">\r\n <option selected=\"true\" disabled=\"disabled\">");
1437 Write(Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2"));
1438 WriteLiteral("</option>\r\n");
1439 for (var i = 0; i <= 300; i += 10)
1440 {
1441 if (i == 300)
1442 {
1443 WriteLiteral(" <option>");
1444 Write(i);
1445 WriteLiteral("+</option>\r\n");
1446 }
1447 else
1448 {
1449 WriteLiteral(" <option>");
1450 Write(i);
1451 WriteLiteral("</option>\r\n");
1452 }
1453 }
1454 WriteLiteral(@" </select>
1455 </div>
1456 </div>
1457 </div>
1458 <div class=""col-12 col-sm-6 col-lg-6 mb-3 mb-lg-0"">
1459 <div class=""filter-container row"">
1460 <label class=""d-block col-12"">");
1461 Write(Translate("Smartpage:Search.Grundareal", "Grundareal"));
1462 WriteLiteral(@"</label>
1463 <div class=""col-6 pr-sm-0 pr-2"">
1464 <input type=""text"" name=""grundarealmin"" id=""grundarealmin"" class=""form-control js-grundarealmin-frontpage-input js-count""");
1465 BeginWriteAttribute("placeholder", " placeholder=\'", 175123, "\'", 175196, 1);
1466 WriteAttributeValue("", 175137, Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2"), 175137, 59, false);
1467 EndWriteAttribute();
1468 WriteLiteral(" />\r\n <select class=\"form-control js-grundarealmin-frontpage-select js-count\">\r\n <option selected=\"true\" disabled=\"disabled\">");
1469 Write(Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2"));
1470 WriteLiteral("</option>\r\n");
1471 for (var i = 0; i <= 10000; i += 100)
1472 {
1473 if (i == 10000)
1474 {
1475 WriteLiteral(" <option");
1476 BeginWriteAttribute("value", " value=\"", 175836, "\"", 175865, 1);
1477 WriteAttributeValue("", 175844, Converter.ToInt32(i), 175844, 21, false);
1478 EndWriteAttribute();
1479 WriteLiteral(">");
1480 Write(Converter.ToInt32(i).ToString("N0"));
1481 WriteLiteral("+</option>\r\n");
1482 }
1483 else
1484 {
1485 WriteLiteral(" <option");
1486 BeginWriteAttribute("value", " value=\"", 176162, "\"", 176191, 1);
1487 WriteAttributeValue("", 176170, Converter.ToInt32(i), 176170, 21, false);
1488 EndWriteAttribute();
1489 WriteLiteral(">");
1490 Write(Converter.ToInt32(i).ToString("N0"));
1491 WriteLiteral("</option>\r\n");
1492 }
1493 }
1494 WriteLiteral(@" </select>
1495 </div>
1496 <div class=""col-6 pl-sm-0 pl-2"">
1497 <input type=""text"" name=""grundarealmax"" id=""grundarealmax"" class=""form-control js-grundarealmax-frontpage-input js-count""");
1498 BeginWriteAttribute("placeholder", " placeholder=\'", 176712, "\'", 176785, 1);
1499 WriteAttributeValue("", 176726, Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2"), 176726, 59, false);
1500 EndWriteAttribute();
1501 WriteLiteral(" />\r\n <select class=\"form-control js-grundarealmax-frontpage-select\">\r\n <option selected=\"true\" disabled=\"disabled\">");
1502 Write(Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2"));
1503 WriteLiteral("</option>\r\n");
1504 for (var i = 0; i <= 10000; i += 100)
1505 {
1506 if (i == 10000)
1507 {
1508 WriteLiteral(" <option");
1509 BeginWriteAttribute("value", " value=\"", 177416, "\"", 177445, 1);
1510 WriteAttributeValue("", 177424, Converter.ToInt32(i), 177424, 21, false);
1511 EndWriteAttribute();
1512 WriteLiteral(">");
1513 Write(Converter.ToInt32(i).ToString("N0"));
1514 WriteLiteral("+</option>\r\n");
1515 }
1516 else
1517 {
1518 WriteLiteral(" <option");
1519 BeginWriteAttribute("value", " value=\"", 177742, "\"", 177771, 1);
1520 WriteAttributeValue("", 177750, Converter.ToInt32(i), 177750, 21, false);
1521 EndWriteAttribute();
1522 WriteLiteral(">");
1523 Write(Converter.ToInt32(i).ToString("N0"));
1524 WriteLiteral("</option>\r\n");
1525 }
1526 }
1527 WriteLiteral(@" </select>
1528 </div>
1529 </div>
1530 </div>
1531 <div class=""col-12 col-sm-6 col-lg-6 mb-3 mb-lg-0"">
1532 <div class=""filter-container row"">
1533 <label class=""d-block col-12"">Antal rum</label>
1534
1535 <div class=""col-6 pr-sm-0 pr-2"">
1536 <select name=""roomsmin"" id=""roomsmin"" class=""form-control reverse js-roomsmin-select js-count"">
1537 <option selected=""selected"" disabled=""disabled"">");
1538 Write(Translate("Smartpage:Search.Placeholder.Min", "Min"));
1539 WriteLiteral(@"</option>
1540 <option value=""1"">1</option>
1541 <option value=""2"">2</option>
1542 <option value=""3"">3</option>
1543 <option value=""4"">4</option>
1544 <option value=""5"">5+</option>
1545 </select>
1546 </div>
1547 <div class=""col-6 pl-sm-0 pl-2"">
1548 <select name=""roomsmax"" id=""roomsmax"" class=""form-control reverse js-roomsmax-select js-count"">
1549 <option selected=""selected"" disabled=""disabled"">");
1550 Write(Translate("Smartpage:Search.Placeholder.Max", "Max"));
1551 WriteLiteral(@"</option>
1552 <option value=""1"">1</option>
1553 <option value=""2"">2</option>
1554 <option value=""3"">3</option>
1555 <option value=""4"">4</option>
1556 <option value=""5"">5+</option>
1557 </select>
1558 </div>
1559 </div>
1560 </div>
1561 <div class=""col-12 col-sm-6 col-lg-6 mb-3 mb-lg-0"">
1562 <div class=""row"">
1563 <div class=""col-12 pr-2"">
1564 <div class=""filter-container"">
1565 <label class=""d-block"">Energimærke</label>
1566 ");
1567 WriteLiteral(" <select name=\"energylabel\" id=\"energylabel\" class=\"form-control reverse js-energylabel-select js-count\">\r\n <option disabled selected=\"selected\">");
1568 Write(Translate("Smartpage:Search.Vælg", "Vælg"));
1569 WriteLiteral(@"</option>
1570 <option value=""01"">G</option>
1571 <option value=""02"">F</option>
1572 <option value=""03"">E</option>
1573 <option value=""04"">D</option>
1574 <option value=""05"">C</option>
1575 <option value=""06"">B</option>
1576 <option value=""07"">A</option>
1577 <option value=""08"">A2010</option>
1578 <option value=""09"">A2015</option>
1579 <option value=""10"">A2020+</option>
1580 </select>
1581 </div>
1582 ");
1583 WriteLiteral(@" </div>
1584 </div>
1585 </div>
1586 <div class=""col-12 col-sm-6 col-lg-6 mt-3"">
1587 <h4");
1588 BeginWriteAttribute("class", " class=\"", 182277, "\"", 182285, 0);
1589 EndWriteAttribute();
1590 WriteLiteral("><b>");
1591 Write(Translate("Smartpage:Search.Økonomi", "Økonomi"));
1592 WriteLiteral("</b></h4>\r\n <div class=\"filter-container row\">\r\n <label class=\"d-block col-12\">");
1593 Write(Translate("Smartpage:Search.Ejerudgift/boligydelse pr. måned", "Ejerudgift/boligydelse pr. måned"));
1594 WriteLiteral("</label>\r\n <div class=\"col-6 pr-sm-0 pr-2\">\r\n <input type=\"text\" name=\"subsidymin\" id=\"subsidymin\" class=\"form-control js-subsidymin-frontpage-input js-count\"");
1595 BeginWriteAttribute("placeholder", " placeholder=\'", 182847, "\'", 182914, 1);
1596 WriteAttributeValue("", 182861, Translate("Smartpage:Search.Placeholder.Min", "Min"), 182861, 53, false);
1597 EndWriteAttribute();
1598 WriteLiteral(" />\r\n <select class=\"form-control js-subsidymin-frontpage-select js-count\">\r\n <option selected=\"selected\" disabled=\"disabled\">");
1599 Write(Translate("Smartpage:Search.Placeholder.MinDKK", "Min. DKK"));
1600 WriteLiteral("</option>\r\n");
1601 for (var i = 0; i <= 25000; i += 1250)
1602 {
1603 if (i == 25000)
1604 {
1605 WriteLiteral(" <option");
1606 BeginWriteAttribute("value", " value=\"", 183558, "\"", 183587, 1);
1607 WriteAttributeValue("", 183566, Converter.ToInt32(i), 183566, 21, false);
1608 EndWriteAttribute();
1609 WriteLiteral(">");
1610 Write(Converter.ToInt32(i).ToString("N0"));
1611 WriteLiteral("+</option>\r\n");
1612 }
1613 else
1614 {
1615 WriteLiteral(" <option");
1616 BeginWriteAttribute("value", " value=\"", 183884, "\"", 183913, 1);
1617 WriteAttributeValue("", 183892, Converter.ToInt32(i), 183892, 21, false);
1618 EndWriteAttribute();
1619 WriteLiteral(">");
1620 Write(Converter.ToInt32(i).ToString("N0"));
1621 WriteLiteral("</option>\r\n");
1622 }
1623 }
1624 WriteLiteral(@" </select>
1625 </div>
1626 <div class=""col-6 pl-sm-0 pl-2"">
1627 <input type=""text"" name=""subsidymax"" id=""subsidymax"" class=""form-control js-subsidymax-frontpage-input js-count""");
1628 BeginWriteAttribute("placeholder", " placeholder=\'", 184425, "\'", 184492, 1);
1629 WriteAttributeValue("", 184439, Translate("Smartpage:Search.Placeholder.Max", "Max"), 184439, 53, false);
1630 EndWriteAttribute();
1631 WriteLiteral(" />\r\n <select class=\"form-control js-subsidymax-frontpage-select js-count\">\r\n <option selected=\"true\" disabled=\"disabled\">");
1632 Write(Translate("Smartpage:Search.Placeholder.MaxDKK", "Max. DKK"));
1633 WriteLiteral("</option>\r\n");
1634 for (var i = 0; i <= 25000; i += 1250)
1635 {
1636 if (i == 25000)
1637 {
1638 WriteLiteral(" <option");
1639 BeginWriteAttribute("value", " value=\"", 185132, "\"", 185161, 1);
1640 WriteAttributeValue("", 185140, Converter.ToInt32(i), 185140, 21, false);
1641 EndWriteAttribute();
1642 WriteLiteral(">");
1643 Write(Converter.ToInt32(i).ToString("N0"));
1644 WriteLiteral("+</option>\r\n");
1645 }
1646 else
1647 {
1648 WriteLiteral(" <option");
1649 BeginWriteAttribute("value", " value=\"", 185458, "\"", 185487, 1);
1650 WriteAttributeValue("", 185466, Converter.ToInt32(i), 185466, 21, false);
1651 EndWriteAttribute();
1652 WriteLiteral(">");
1653 Write(Converter.ToInt32(i).ToString("N0"));
1654 WriteLiteral("</option>\r\n");
1655 }
1656 }
1657 WriteLiteral(@" </select>
1658 </div>
1659 </div>
1660 </div>
1661 <div class=""col-12 col-sm-6 col-lg-6 mt-3 mt-sm-0"">
1662 <button type=""submit"" class=""btn btn-block btn-search""><i class=""fa fa-search""></i> ");
1663 Write(Translate("Smartpage:Search.AnvendFiltre", "Anvend filtre"));
1664 WriteLiteral(@"</button>
1665 </div>
1666 </div>
1667 </div>
1668 </div>
1669 </div>
1670 <div class=""row d-block d-md-none form-wrapper no-gutters"">
1671 <div class=""col-xs-12 col-md-2"">
1672 <button type=""submit"" class=""btn btn-block btn-search dark-red""><i class=""fa fa-search""></i> ");
1673 Write(Translate("Smartpage:Search.Søg", "Søg"));
1674 WriteLiteral("</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </form>\r\n </div>\r\n");
1675 }
1676 WriteLiteral(" </div>\r\n\r\n");
1677
1678 RenderSlideMenu(false, Convert.ToString(settings_Maeglersogning));
1679 WriteLiteral("\r\n");
1680 if (isBrokerPage)
1681 {
1682 WriteLiteral(" <section class=\"maegler-navbar\">\r\n ");
1683 Write(RenderNavigation(new
1684 {
1685 id = "navbar-main",
1686 cssclass = "dwnavigation",
1687 template = "ul_li.xslt",
1688 StartLevel = 1,
1689 EndLevel = 1
1690 }));
1691 WriteLiteral("\r\n </section>\r\n");
1692 }
1693 WriteLiteral("\r\n <div class=\"visual-editor\">\r\n");
1694 WriteLiteral("\r\n\r\n");
1695 WriteLiteral("\r\n");
1696 WriteLiteral("\r\n");
1697
1698 string listPageId = Converter.ToString(GetPageIdByNavigationTag("DynamicListFeed"));
1699 string parentPageId = Dynamicweb.Services.Pages.GetPage(Model.ID).Parent.ID.ToString();
1700 string topLayout = Model.Item.GetList("TopLayout") != null ? Model.Item.GetList("TopLayout").SelectedValue : "default";
1701 topLayout = topLayout == "default" && GetParentSettingsItem("ArticleTopLayout") != null ? GetParentSettingsItem("ArticleTopLayout").ToString().ToLower() : topLayout;
1702 string textLayout = Model.Item.GetList("TextLayout") != null ? Model.Item.GetList("TextLayout").SelectedValue : "default";
1703 textLayout = textLayout == "default" && GetParentSettingsItem("ArticleTextLayout") != null ? GetParentSettingsItem("ArticleTextLayout").ToString().ToLower() : textLayout;
1704 string imageLayout = Model.Item.GetList("ImageLayout") != null ? Model.Item.GetList("ImageLayout").SelectedValue : "default";
1705 imageLayout = imageLayout == "default" && GetParentSettingsItem("ArticleImageLayout") != null ? GetParentSettingsItem("ArticleImageLayout").ToString().ToLower() : imageLayout;
1706
1707 //string imageColumns = imageLayout == "straight" && textLayout != "full" ? "8" : "12";
1708 //string contentColumns = textLayout != "full" ? "8" : "12";
1709 string imageColumns = "12";
1710 string contentColumns = "12";
1711
1712 int externalParagraphId = Model.Item.GetItem("CTAParagraphLink") != null ? Model.Item.GetItem("CTAParagraphLink").ParagraphID : 0;
1713
1714 ArticleHeaderLayout headerLayout;
1715
1716 switch (topLayout)
1717 {
1718 case "default":
1719 headerLayout = ArticleHeaderLayout.Clean;
1720 break;
1721 case "split":
1722 headerLayout = ArticleHeaderLayout.Split;
1723 break;
1724 case "banner":
1725 headerLayout = ArticleHeaderLayout.Banner;
1726 break;
1727 case "overlay":
1728 headerLayout = ArticleHeaderLayout.Overlay;
1729 break;
1730 default:
1731 headerLayout = ArticleHeaderLayout.Clean;
1732 break;
1733 }
1734
1735
1736 Block articleContainer = new Block
1737 {
1738 Id = "ArticleContainer",
1739 SortId = 10,
1740 Design = new Design
1741 {
1742 RenderType = RenderType.Row
1743 },
1744 BlocksList = new List<Block> {
1745 new Block {
1746 Id = "ArticleBody",
1747 SortId = 30,
1748 Design = new Design {
1749 RenderType = RenderType.Column,
1750 Size = "12",
1751 HidePadding = true,
1752 CssClass = "margin-top-large"
1753 }
1754 }
1755 }
1756 };
1757 articlePage.Add(articleContainer);
1758
1759 ButtonLayout topBannerButtonLayout = ButtonLayout.Primary;
1760
1761 switch (Model.Item.GetString("ButtonDesign"))
1762 {
1763 case "primary":
1764 topBannerButtonLayout = ButtonLayout.Primary;
1765 break;
1766 case "secondary":
1767 topBannerButtonLayout = ButtonLayout.Secondary;
1768 break;
1769 case "teritary":
1770 topBannerButtonLayout = ButtonLayout.Tertiary;
1771 break;
1772 case "link":
1773 topBannerButtonLayout = ButtonLayout.Link;
1774 break;
1775 }
1776
1777 ArticleHeader topBanner = new ArticleHeader
1778 {
1779 Layout = headerLayout,
1780 Image = new Image { Path = Model.Item.GetFile("Image"), ImageDefault = new ImageSettings { Width = 1920, Height = 640 } },
1781 Heading = Model.Item.GetString("Title"),
1782 Subheading = Model.Item.GetString("Summary"),
1783 TextColor = "#fff",
1784 Author = Model.Item.GetString("Author"),
1785 Date = Model.Item.GetString("Date"),
1786 Category = GetArticleCategory(Model.ID),
1787 CategoryColor = GetArticleCategoryColor(Model.ID),
1788 Link = Model.Item.GetString("Link"),
1789 LinkText = Model.Item.GetString("LinkText"),
1790 ButtonLayout = topBannerButtonLayout,
1791 RatingScore = Model.Item.GetString("Rating") != null ? Converter.ToInt32(Model.Item.GetList("Rating").SelectedValue) : 0,
1792 RatingOutOf = Model.Item.GetString("Rating") != null ? Model.Item.GetList("Rating").Options.Count : 0,
1793 ExternalParagraphId = externalParagraphId
1794 };
1795
1796 Block articleTop = new Block
1797 {
1798 Id = "ArticleHead",
1799 SortId = 20,
1800 Component = topBanner,
1801 Design = new Design
1802 {
1803 RenderType = RenderType.Column,
1804 Size = "12",
1805 HidePadding = true,
1806 CssClass = "article-head"
1807 }
1808 };
1809 //articlePage.Add("ArticleContainer", articleTop);
1810
1811
1812 Block articleBodyRow = new Block
1813 {
1814 Id = "ArticleBodyRow",
1815 SortId = 10,
1816 SkipRenderBlocksList = true
1817 };
1818 articlePage.Add("ArticleBody", articleBodyRow);
1819
1820
1821 if (Model.Item.GetString("Paragraphs") != null)
1822 {
1823 int count = 0;
1824 foreach (var paragraph in Model.Item.GetItems("Paragraphs"))
1825 {
1826 if (!paragraph.GetBoolean("RenderAsQuote"))
1827 {
1828 string enableDropCap = Model.Item.GetString("EnableDropCap") != null ? Model.Item.GetList("EnableDropCap").SelectedValue.ToLower() : "default";
1829 enableDropCap = enableDropCap == "default" && GetParentSettingsItem("EnableDropCap") != null ? GetParentSettingsItem("EnableDropCap").ToString().ToLower() : enableDropCap;
1830 string text = paragraph.GetString("Text") != null ? paragraph.GetString("Text") : "";
1831
1832 if (!String.IsNullOrEmpty(text) && enableDropCap == "true" && count == 0 && paragraph.GetString("Text").Substring(0, 3) == "<p>")
1833 {
1834 string firstLetter = paragraph.GetString("Text").Substring(3, 1);
1835 text = paragraph.GetString("Text").Remove(3, 1);
1836 text = text.Insert(3, "<span class=\"article__drop-cap\">" + firstLetter + "</span>");
1837 }
1838
1839 if (!String.IsNullOrEmpty(paragraph.GetString("Heading")))
1840 {
1841 Block articleParagraphHeader = new Block
1842 {
1843 Id = "ArticleParagraph" + count + "Heading",
1844 SortId = (count * 10) ,
1845 Component = new ArticleSubHeader { Title = paragraph.GetString("Heading") },
1846 Design = new Design
1847 {
1848 RenderType = RenderType.Column,
1849 Size = contentColumns,
1850 CssClass = "u-color-light--bg u-padding--lg"
1851 }
1852 };
1853 articlePage.Add("ArticleBodyRow", articleParagraphHeader);
1854 }
1855
1856 if (paragraph.GetFile("Image") != null)
1857 {
1858 string imageTitle = !string.IsNullOrEmpty(paragraph.GetString("Heading")) ? paragraph.GetString("Heading") : "";
1859
1860 Block articleParagraphImage = new Block
1861 {
1862 Id = "ArticleParagraph" + count + "Image",
1863 SortId = (count * 10) + 2,
1864 Design = new Design
1865 {
1866 RenderType = RenderType.Column,
1867 Size = imageColumns,
1868 CssClass = "u-color-light--bg u-padding--lg"
1869 }
1870 };
1871
1872 if (imageLayout == "banner")
1873 {
1874 ArticleBanner banner = new ArticleBanner
1875 {
1876 Image = new Image { Path = paragraph.GetFile("Image"), ImageDefault = new ImageSettings { Height = 650, Width = 1300 }, Caption = paragraph.GetString("ImageCaption") },
1877 Heading = imageTitle,
1878 UseFilters = false
1879 };
1880 articleParagraphImage.Component = banner;
1881 }
1882 else
1883 {
1884 ArticleImage image = new ArticleImage
1885 {
1886 Image = new Image
1887 {
1888 Path = paragraph.GetFile("Image"),
1889 Title = imageTitle,
1890 ImageDefault = new ImageSettings { Height = 650, Width = 1300 },
1891 Caption = paragraph.GetString("ImageCaption"),
1892 CssClass = "u-full-width"
1893 }
1894 };
1895 articleParagraphImage.Component = image;
1896 }
1897
1898 articlePage.Add("ArticleBodyRow", articleParagraphImage);
1899 }
1900
1901 if (!String.IsNullOrEmpty(paragraph.GetString("VideoURL")))
1902 {
1903 Block articleParagraphVideo = new Block
1904 {
1905 Id = "ArticleParagraph" + count + "Video",
1906 SortId = (count * 10) + 3,
1907 Component = new ArticleVideo { Url = paragraph.GetString("VideoURL"), AutoPlay = "false" },
1908 Design = new Design
1909 {
1910 RenderType = RenderType.Column,
1911 Size = imageColumns,
1912 CssClass = "u-color-light--bg u-padding--lg"
1913 }
1914 };
1915 articlePage.Add("ArticleBodyRow", articleParagraphVideo);
1916 }
1917
1918 if (!String.IsNullOrEmpty(text))
1919 {
1920 Block articleParagraphText = new Block
1921 {
1922 Id = "ArticleParagraph" + count + "Text",
1923 SortId = (count * 10) + 3,
1924 Component = new ArticleText { Text = text },
1925 Design = new Design
1926 {
1927 RenderType = RenderType.Column,
1928 Size = contentColumns,
1929 CssClass = "u-color-light--bg u-padding--lg"
1930 }
1931 };
1932
1933 articlePage.Add("ArticleBodyRow", articleParagraphText);
1934 }
1935 }
1936 else
1937 {
1938 if (!String.IsNullOrEmpty(paragraph.GetString("Text")))
1939 {
1940 string quoteText = paragraph.GetString("Text") != null ? paragraph.GetString("Text") : "";
1941 string quoteAuthor = paragraph.GetString("Heading") != null ? paragraph.GetString("Heading") : "";
1942
1943 Block articleParagraphQuote = new Block
1944 {
1945 Id = "ArticleParagraph" + count + "Quote",
1946 SortId = (count * 10) + 3,
1947 Component = new ArticleQuote { Image = new Image { Path = paragraph.GetFile("Image") }, Text = quoteText, Author = quoteAuthor },
1948 Design = new Design
1949 {
1950 RenderType = RenderType.Column,
1951 Size = contentColumns,
1952 CssClass = "u-color-light--bg u-padding--lg"
1953 }
1954 };
1955 articlePage.Add("ArticleBodyRow", articleParagraphQuote);
1956 }
1957 }
1958
1959 count++;
1960 }
1961 }
1962
1963 articleBodyRow.Component = new ArticleBodyRow { SubBlocks = articleBodyRow.BlocksList, TopLayout = topLayout, TextLayout = textLayout };
1964
1965
1966 //Related
1967 string showRelatedArtices = Model.Item.GetString("ShowRelatedArticles") != null ? Model.Item.GetList("ShowRelatedArticles").SelectedValue.ToLower() : "default";
1968 showRelatedArtices = showRelatedArtices == "default" && GetParentSettingsItem("ShowRelatedArticles") != null ? GetParentSettingsItem("ShowRelatedArticles").ToString().ToLower() : showRelatedArtices;
1969
1970 if (showRelatedArtices == "true")
1971 {
1972 Block articleRelated = new Block
1973 {
1974 Id = "ArticleRelated",
1975 SortId = 30,
1976 Component = new ArticleRelated { Title = Translate("Related articles"), FeedPageId = listPageId, Query = "sourceType=Page&sourcePage=" + parentPageId, PageSize = 4, CurrentPageId = Model.ID.ToString() },
1977 Design = new Design
1978 {
1979 RenderType = RenderType.Column,
1980 Size = "12"
1981 }
1982 };
1983 articlePage.Add("ArticleContainer", articleRelated);
1984 }
1985 WriteLiteral("\r\n\r\n");
1986 WriteLiteral("<section class=\"center-container content-container dw-mod\">\r\n ");
1987 Write(RenderBlockList(articlePage.BlocksRoot.BlocksList));
1988 WriteLiteral("\r\n</section>\r\n </div>\r\n\r\n");
1989 if (MyBroker != null && MyBroker.Broker != null && MyBroker.Employee != null && Model.Item.GetBoolean("HideMyBroker") != true)
1990 {
1991 string bName = MyBroker.Broker.Name;
1992 string bClass = "na";
1993 string bImage = "/Files/Templates/Designs/rm/assets/images/na-real.png";
1994
1995 if (!string.IsNullOrEmpty(MyBroker.Broker.CompanyName))
1996 {
1997 bName = MyBroker.Broker.CompanyName;
1998 }
1999 try
2000 {
2001 var imgUrl = MyBroker.Employee.Item().GetString("BilledeUrl");
2002 if (!string.IsNullOrEmpty(imgUrl))
2003 {
2004 bImage = imgUrl;
2005 bClass = "";
2006 }
2007 }
2008 catch
2009 {
2010 // Ignore
2011 }
2012
2013 string bAreaID = MyBroker.Broker.Item().GetString("WebsiteId");
2014 string medlemsnummer = MyBroker.Broker.Item().GetString("CBMedlemsnummer");
2015
2016 WriteLiteral(" <section class=\"din-maegler\">\r\n <div");
2017 BeginWriteAttribute("class", " class=\"", 204281, "\"", 204308, 2);
2018 WriteAttributeValue("", 204289, "img-wrapper", 204289, 11, true);
2019 WriteAttributeValue(" ", 204300, bClass, 204301, 7, false);
2020 EndWriteAttribute();
2021 BeginWriteAttribute("style", " style=\"", 204309, "\"", 204348, 3);
2022 WriteAttributeValue("", 204317, "background-image:url(\'", 204317, 22, true);
2023 WriteAttributeValue("", 204339, bImage, 204339, 7, false);
2024 WriteAttributeValue("", 204346, "\')", 204346, 2, true);
2025 EndWriteAttribute();
2026 WriteLiteral(@"></div>
2027 <div class=""container"">
2028 <div class=""col-12 col-sm-12 col-md-6 offset-md-6"">
2029 <h2>Din personlige mægler</h2>
2030 <div class=""row"">
2031 <div class=""col-12 col-sm-6"">
2032 <p>
2033 <b class=""my-broker-name"">");
2034 Write(MyBroker.Employee.Name);
2035 WriteLiteral("</b><br>\r\n");
2036 if (!string.IsNullOrEmpty(MyBroker.Employee.Email))
2037 {
2038 WriteLiteral("Mail: <a");
2039 BeginWriteAttribute("href", " href=\"", 204905, "\"", 204965, 2);
2040 WriteAttributeValue("", 204912, "mailto:", 204912, 7, true);
2041 WriteAttributeValue("", 204919, ExtractMaskedEmail(MyBroker.Employee.Email), 204919, 46, false);
2042 EndWriteAttribute();
2043 WriteLiteral(" class=\"my-broker-email\">");
2044 Write(ExtractMaskedEmail(MyBroker.Employee.Email));
2045 WriteLiteral("</a><br>");
2046
2047 }
2048 if (!string.IsNullOrEmpty(MyBroker.Employee.PhoneMobile))
2049 {
2050 WriteLiteral("Tlf.: <a");
2051 BeginWriteAttribute("href", " href=\"", 205264, "\"", 205307, 2);
2052 WriteAttributeValue("", 205271, "tel:", 205271, 4, true);
2053 WriteAttributeValue("", 205275, MyBroker.Employee.PhoneMobile, 205275, 32, false);
2054 EndWriteAttribute();
2055 WriteLiteral(" class=\"my-broker-phone\">");
2056 Write(FormatPhoneNumber(MyBroker.Employee.PhoneMobile));
2057 WriteLiteral("</a>");
2058
2059 }
2060 else if (!string.IsNullOrEmpty(MyBroker.Broker.Telephone))
2061 {
2062 WriteLiteral("Tlf.: <a");
2063 BeginWriteAttribute("href", " href=\"", 205607, "\"", 205646, 2);
2064 WriteAttributeValue("", 205614, "tel:", 205614, 4, true);
2065 WriteAttributeValue("", 205618, MyBroker.Broker.Telephone, 205618, 28, false);
2066 EndWriteAttribute();
2067 WriteLiteral(" class=\"my-broker-phone\">");
2068 Write(FormatPhoneNumber(MyBroker.Broker.Telephone));
2069 WriteLiteral("</a>");
2070
2071 }
2072 WriteLiteral(" </p>\r\n </div>\r\n <div class=\"col-12 col-sm-6\">\r\n <p>\r\n <b class=\"my-broker-company-name\">");
2073 Write(bName);
2074 WriteLiteral("</b><br>\r\n <span class=\"my-broker-company-address\">");
2075 Write(MyBroker.Broker.Address);
2076 WriteLiteral("</span><br>\r\n <span class=\"my-broker-company-zip\">");
2077 Write(MyBroker.Broker.ZipCode);
2078 WriteLiteral("</span> <span class=\"my-broker-company-city\">");
2079 Write(MyBroker.Broker.City);
2080 WriteLiteral("</span><br>\r\n");
2081 if (!string.IsNullOrEmpty(bEmail))
2082 {
2083 WriteLiteral("Mail: <a");
2084 BeginWriteAttribute("href", " href=\"", 206435, "\"", 206458, 2);
2085 WriteAttributeValue("", 206442, "mailto:", 206442, 7, true);
2086 WriteAttributeValue("", 206449, bEmail, 206449, 9, false);
2087 EndWriteAttribute();
2088 WriteLiteral(" class=\"my-broker-broker-email\">");
2089 Write(bEmail);
2090 WriteLiteral("</a><br>");
2091
2092 }
2093 if (!string.IsNullOrEmpty(MyBroker.Broker.Telephone))
2094 {
2095 WriteLiteral("Tlf.: <a");
2096 BeginWriteAttribute("href", " href=\"", 206723, "\"", 206762, 2);
2097 WriteAttributeValue("", 206730, "tel:", 206730, 4, true);
2098 WriteAttributeValue("", 206734, MyBroker.Broker.Telephone, 206734, 28, false);
2099 EndWriteAttribute();
2100 WriteLiteral(" class=\"my-broker-broker-phone\">");
2101 Write(FormatPhoneNumber(MyBroker.Broker.Telephone));
2102 WriteLiteral("</a>");
2103
2104 }
2105 WriteLiteral(" </p>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <br />\r\n <div class=\"col-12 col-sm-6\">\r\n <a");
2106 BeginWriteAttribute("href", " href=\"", 207138, "\"", 207173, 2);
2107 WriteAttributeValue("", 207145, "/", 207145, 1, true);
2108 WriteAttributeValue("", 207146, medlemsnummer.Substring(1), 207146, 27, false);
2109 EndWriteAttribute();
2110 WriteLiteral(" class=\"btn btn-primary btn-block my-broker-company-url\">Til mæglerens side</a>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n");
2111 }
2112 WriteLiteral(" <footer>\r\n <div class=\"container\">\r\n <div class=\"row\">\r\n");
2113
2114 var navigationSettings = new NavigationSettings();
2115 navigationSettings.StartLevel = 1;
2116 navigationSettings.StopLevel = 3;
2117 navigationSettings.ExpandMode = ExpandMode.All;
2118 navigationSettings.RootAreaId = 1;
2119 navigationSettings.RootNavigationTag = "footer-nav";
2120
2121 WriteLiteral(" ");
2122 Write(Navigation.RenderNavigation("Navigation/footerNav.cshtml", navigationSettings));
2123 WriteLiteral("\r\n </div>\r\n </div>\r\n </footer>\r\n\r\n");
2124 if (Model.CurrentUser?.ID <= 0)
2125 {
2126 WriteLiteral(" <div id=\"panel-login\" class=\"panel panel-form\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"panel-form\" aria-label=\"Close\">\r\n <b></b>\r\n </button>\r\n <div class=\"loginform login\">\r\n");
2127 if (loginParagraphId > 0)
2128 {
2129 WriteLiteral("\r\n ");
2130 Write(RenderParagraphContent(loginParagraphId));
2131 WriteLiteral("\r\n ");
2132
2133 }
2134 WriteLiteral(" </div>\r\n <div class=\"loginform register js-register-form-wrapper\" style=\"display: none;\">\r\n");
2135 if (createUserParagraphId > 0)
2136 {
2137 WriteLiteral("\r\n ");
2138 Write(RenderParagraphContent(createUserParagraphId));
2139 WriteLiteral("\r\n ");
2140
2141 }
2142 WriteLiteral(" </div>\r\n <div class=\"loginform forgotpw\" style=\"display: none;\">\r\n <h2 class=\"forgotpw-reg\">");
2143 Write(Translate("forgot-pw-reg-title", "Glemt adgangskode"));
2144 WriteLiteral("</h2>\r\n <h2 class=\"forgotpw-broker\">");
2145 Write(Translate("forgot-pw-broker-title", "Tilmeldt via. mægler"));
2146 WriteLiteral("</h2>\r\n <form id=\"forgotPwForm\" class=\"form-body\" method=\"post\"");
2147 BeginWriteAttribute("action", " action=\"", 209236, "\"", 209245, 0);
2148 EndWriteAttribute();
2149 WriteLiteral(">\r\n <input type=\"hidden\" id=\"AccessUserShopID\" name=\"AccessUserShopID\" value=\"SHOP6\" />\r\n <p class=\"forgotpw-reg\">");
2150 Write(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."));
2151 WriteLiteral("</p>\r\n <p class=\"forgotpw-broker\">");
2152 Write(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."));
2153 WriteLiteral(@"</p>
2154 <div class=""form-group"">
2155 <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 />
2156 </div>
2157 <button class=""btn btn-primary btn-block"" type=""submit"">");
2158 Write(Translate("forgot-pw-cta", "Nulstil adgangskode"));
2159 WriteLiteral("</button>\r\n <br />\r\n <div id=\"submitMessage\"></div>\r\n </form>\r\n </div>\r\n </div>\r\n");
2160 }
2161 WriteLiteral("\r\n");
2162 WriteLiteral("\r\n");
2163
2164 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");
2165 WriteLiteral("\r\n<div id=\"panel-kontakt-koeberraadgivning\" class=\"panel panel-form\">\r\n <button type=\"button\" class=\"close\" data-dismiss=\"panel-form\" aria-label=\"Close\">\r\n <b></b>\r\n </button>\r\n <h2>");
2166 Write(Translate("Smarptage:Guldkøber.KontaktMægler", "Kontakt Mægler"));
2167 WriteLiteral("</h2>\r\n <form id=\"form-koeberraadgivning\" method=\"POST\" action=\"/InboxHandler\">\r\n <div class=\"form-group\">\r\n <label><strong>");
2168 Write(Translate("form-navn", "Navn"));
2169 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"text\" name=\"navn\" tabindex=\"1\"");
2170 BeginWriteAttribute("placeholder", " placeholder=\'", 211485, "\'", 211567, 1);
2171 WriteAttributeValue("", 211499, Translate("Smartpage:Kontakt.Placeholder.Navn", "Indtast dit navn"), 211499, 68, false);
2172 EndWriteAttribute();
2173 BeginWriteAttribute("value", " value=\'", 211568, "\'", 211607, 1);
2174 WriteAttributeValue("", 211576, UserContext.Current.User?.Name, 211576, 31, false);
2175 EndWriteAttribute();
2176 WriteLiteral(" required />\r\n </div>\r\n <div class=\"form-group\">\r\n <label><strong>");
2177 Write(Translate("form-email", "E-mail"));
2178 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"email\" tabindex=\"2\" pattern=\"[_a-z0-9.%+-]+@[a-z0-9.-]+.[a-z]{2,4}$\" name=\"email\"");
2179 BeginWriteAttribute("placeholder", " placeholder=\'", 211884, "\'", 211969, 1);
2180 WriteAttributeValue("", 211898, Translate("Smartpage:Kontakt.Placeholder.Email", "Indtast din e-mail"), 211898, 71, false);
2181 EndWriteAttribute();
2182 BeginWriteAttribute("value", " value=\'", 211970, "\'", 212010, 1);
2183 WriteAttributeValue("", 211978, UserContext.Current.User?.Email, 211978, 32, false);
2184 EndWriteAttribute();
2185 WriteLiteral(" required />\r\n </div>\r\n <div class=\"form-group row mb-4\">\r\n <div class=\"col-6\">\r\n <label><strong>");
2186 Write(Translate("form-mobile", "Mobil nr."));
2187 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"tel\" pattern=\"^[0-9]*$\" tabindex=\"3\" maxlength=\"20\" name=\"mobile\"");
2188 BeginWriteAttribute("placeholder", " placeholder=\'", 212321, "\'", 212406, 1);
2189 WriteAttributeValue("", 212335, Translate("Smartpage:Kontakt.Placeholder.Mobile", "Indtast mobil nr."), 212335, 71, false);
2190 EndWriteAttribute();
2191 BeginWriteAttribute("value", " value=\'", 212407, "\'", 212447, 1);
2192 WriteAttributeValue("", 212415, UserContext.Current.User?.Phone, 212415, 32, false);
2193 EndWriteAttribute();
2194 WriteLiteral(" required />\r\n </div>\r\n <div class=\"col-6\">\r\n <label><strong>");
2195 Write(Translate("form-telephone", "Telefon nr."));
2196 WriteLiteral("</strong></label>\r\n <input class=\"form-control\" type=\"tel\" pattern=\"^[0-9]*$\" tabindex=\"4\" maxlength=\"20\" name=\"telefonnummer\"");
2197 BeginWriteAttribute("placeholder", " placeholder=\'", 212730, "\'", 212814, 1);
2198 WriteAttributeValue("", 212744, Translate("Smartpage:Kontakt.Placeholder.Telefon", "Indtast tlf nr."), 212744, 70, false);
2199 EndWriteAttribute();
2200 BeginWriteAttribute("value", " value=\'", 212815, "\'", 212856, 1);
2201 WriteAttributeValue("", 212823, UserContext.Current?.User?.Phone, 212823, 33, false);
2202 EndWriteAttribute();
2203 WriteLiteral(" />\r\n </div>\r\n </div>\r\n <h3>");
2204 Write(Translate("Smartpage:Salgsvurdering.DinBolig", "Din bolig"));
2205 WriteLiteral("</h3>\r\n <div class=\"form-group row\">\r\n <div class=\"col-4\">\r\n <label><strong>");
2206 Write(Translate("form-zip", "Post nr"));
2207 WriteLiteral("*</strong></label>\r\n <input class=\"form-control js-postnummer\" type=\"tel\" pattern=\"^[0-9]*$\" maxlength=\"4\" name=\"postnummer\" tabindex=\"5\"");
2208 BeginWriteAttribute("placeholder", " placeholder=\'", 213264, "\'", 213342, 1);
2209 WriteAttributeValue("", 213278, Translate("Smartpage:Aabenthus.Placeholder.Adresse", "Post nr"), 213278, 64, false);
2210 EndWriteAttribute();
2211 BeginWriteAttribute("value", " value=\"", 213343, "\"", 213359, 1);
2212 WriteAttributeValue("", 213351, userZip, 213351, 8, false);
2213 EndWriteAttribute();
2214 WriteLiteral(" required />\r\n <input type=\"hidden\" class=\"js-postnummer-validation\" />\r\n </div>\r\n <div class=\"col-8\">\r\n <label><strong>");
2215 Write(Translate("form-city", "By"));
2216 WriteLiteral("*</strong></label>\r\n <input class=\"form-control js-city\" type=\"text\" readonly />\r\n </div>\r\n </div>\r\n <div class=\"form-group overflow-unset\">\r\n <label><strong>");
2217 Write(Translate("form-adresse", "Adresse"));
2218 WriteLiteral("*</strong></label>\r\n <input class=\"form-control js-validate-address\" type=\"text\" name=\"adresse\" tabindex=\"6\"");
2219 BeginWriteAttribute("placeholder", " placeholder=\'", 213926, "\'", 214016, 1);
2220 WriteAttributeValue("", 213940, Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse"), 213940, 76, false);
2221 EndWriteAttribute();
2222 WriteLiteral(" required />\r\n\r\n <label class=\"form-validate-error js-address-error d-none\" for=\"adresse\">");
2223 Write(Translate("Smarptage:Kontakt.Forkert adresse", "Den indtastede adresse matchede ikke en kendt dansk adresse"));
2224 WriteLiteral(@"</label>
2225 </div>
2226 <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"">
2227 <strong class=""f-12""><i class=""fas fa-plus""></i> ");
2228 Write(Translate("Smartpage:Salgsvurdering.Skrivenkommentar", "Skriv en kommentar"));
2229 WriteLiteral("</strong>\r\n </button>\r\n <div class=\"collapse\" id=\"kontaktkoeberrradgiver-collapse\">\r\n <div class=\"form-group\">\r\n <textarea class=\"form-control\" name=\"besked\"");
2230 BeginWriteAttribute("placeholder", " placeholder=\'", 214810, "\'", 214888, 1);
2231 WriteAttributeValue("", 214824, Translate("form-besked-max", "Skriv en besked på max 150 tegn"), 214824, 64, false);
2232 EndWriteAttribute();
2233 WriteLiteral(" maxlength=\"150\"></textarea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <button type=\"submit\" class=\"btn btn-green btn-block\">");
2234 Write(Translate("KontaktMægler", "Kontakt Mægler"));
2235 WriteLiteral(@"</button>
2236 </div>
2237 </div>
2238 </div>
2239 <div class=""form-group mt-3"">
2240 <div class=""checkbox"">
2241 <label>
2242 <input type=""checkbox"" name=""kontaktmigok"" required />
2243
2244 <span>");
2245 Write(Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *"));
2246 WriteLiteral("</span>\r\n\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"form-group form-group-terms\">\r\n ");
2247 Write(privacyPolicyText);
2248 WriteLiteral(" <a");
2249 BeginWriteAttribute("href", " href=\"", 215701, "\"", 215725, 2);
2250 WriteAttributeValue("", 215708, "mailto:", 215708, 7, true);
2251 WriteAttributeValue("", 215715, termsMail, 215715, 10, false);
2252 EndWriteAttribute();
2253 WriteLiteral(">");
2254 Write(termsMail);
2255 WriteLiteral("</a>.\r\n Læs mere på <a");
2256 BeginWriteAttribute("href", " href=\"", 215770, "\"", 215804, 1);
2257 WriteAttributeValue("", 215777, settings_Persondatapolitik, 215777, 27, false);
2258 EndWriteAttribute();
2259 WriteLiteral(">privatlivspolitikkerne</a>.\r\n </div>\r\n\r\n <input type=\"hidden\" name=\"fn\" value=\"krk\" />\r\n <input type=\"hidden\" name=\"origin\"");
2260 BeginWriteAttribute("value", " value=\"", 215950, "\"", 215958, 0);
2261 EndWriteAttribute();
2262 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"brugerId\"");
2263 BeginWriteAttribute("value", " value=\"", 216008, "\"", 216016, 0);
2264 EndWriteAttribute();
2265 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"areaid\"");
2266 BeginWriteAttribute("value", " value=\"", 216064, "\"", 216088, 1);
2267 WriteAttributeValue("", 216072, Pageview.AreaID, 216072, 16, false);
2268 EndWriteAttribute();
2269 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"butikId\"");
2270 BeginWriteAttribute("value", " value=\"", 216137, "\"", 216153, 1);
2271 WriteAttributeValue("", 216145, butikId, 216145, 8, false);
2272 EndWriteAttribute();
2273 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"ejendomstype\"");
2274 BeginWriteAttribute("value", " value=\"", 216207, "\"", 216215, 0);
2275 EndWriteAttribute();
2276 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"salgspris\"");
2277 BeginWriteAttribute("value", " value=\"", 216266, "\"", 216274, 0);
2278 EndWriteAttribute();
2279 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"modtager\"");
2280 BeginWriteAttribute("value", " value=\"", 216324, "\"", 216332, 0);
2281 EndWriteAttribute();
2282 WriteLiteral(" />\r\n </form>\r\n <div id=\"tak-kontakt-advisor\" style=\"display:none;\">\r\n <h2>");
2283 Write(Translate("TakForDinInteresse", "Tak for din interesse"));
2284 WriteLiteral("</h2>\r\n <div class=\"row\">\r\n <div class=\"col-6\">\r\n <img");
2285 BeginWriteAttribute("src", " src=\"", 216565, "\"", 216571, 0);
2286 EndWriteAttribute();
2287 WriteLiteral(@" class=""img-fluid js-maegler-img"" />
2288 </div>
2289 <div class=""col-6"">
2290 <p class=""js-maegler-name""></p>
2291 <p class=""js-maegler-address""></p>
2292 <p class=""js-maegler-phone""></p>
2293 <p class=""js-maegler-mail""></p>
2294 </div>
2295 </div>
2296 <p>");
2297 Write(Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt"));
2298 WriteLiteral(@"</p>
2299 </div>
2300 </div>
2301
2302 <!--ÅBENT HUS-->
2303 <div id=""panel-aabenthus"" class=""panel panel-form"">
2304 <button type=""button"" class=""close"" data-dismiss=""panel-form"" aria-label=""Close"">
2305 <b></b>
2306 </button>
2307
2308
2309 <form id=""form-aabenthus"" method=""POST"" action=""/InboxHandler"">
2310 <h2>");
2311 Write(Translate("Smarptage:Aabenthus.TilmeldTilÅbenthus", "Tilmeld til åbent hus"));
2312 WriteLiteral("</h2>\r\n <div class=\"d-block\">\r\n <strong>");
2313 Write(Translate("Smarptage:Adresse", "Adresse:"));
2314 WriteLiteral("</strong> <label class=\"js-aabenthus-address mb-0\"></label>\r\n </div>\r\n <div class=\"d-block\">\r\n <strong>");
2315 Write(Translate("Smarptage:Date", "Dato:"));
2316 WriteLiteral("</strong> <label class=\"js-aabenthus-date mb-0\"></label>\r\n </div>\r\n <div class=\"d-block mb-4\">\r\n <strong>");
2317 Write(Translate("Smarptage:Time", "Tidspunkt:"));
2318 WriteLiteral("</strong> <label class=\"js-aabenthus-time mb-0\"></label>\r\n </div>\r\n <h3>");
2319 Write(Translate("Smartpage:Aabenthus.DineKontaktoplysning", "Dine kontaktoplysninger"));
2320 WriteLiteral("</h3>\r\n <div class=\"form-group\">\r\n <label for=\"aabenthus-name\"><strong>");
2321 Write(Translate("form-navn", "Navn"));
2322 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"text\" name=\"navn\"");
2323 BeginWriteAttribute("placeholder", " placeholder=\'", 218189, "\'", 218273, 1);
2324 WriteAttributeValue("", 218203, Translate("Smartpage:Aabenthus.Placeholder.Navn", "Indtast dit navn"), 218203, 70, false);
2325 EndWriteAttribute();
2326 BeginWriteAttribute("value", " value=\'", 218274, "\'", 218314, 1);
2327 WriteAttributeValue("", 218282, UserContext.Current?.User?.Name, 218282, 32, false);
2328 EndWriteAttribute();
2329 WriteLiteral(" required />\r\n </div>\r\n <div class=\"form-group\">\r\n <label><strong>");
2330 Write(Translate("form-email", "E-mail"));
2331 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"email\" pattern=\"[_a-z0-9.%+-]+@[a-z0-9.-]+.[a-z]{2,4}$\" name=\"email\"");
2332 BeginWriteAttribute("placeholder", " placeholder=\'", 218578, "\'", 218665, 1);
2333 WriteAttributeValue("", 218592, Translate("Smartpage:Aabenthus.Placeholder.Email", "Indtast din e-mail"), 218592, 73, false);
2334 EndWriteAttribute();
2335 BeginWriteAttribute("value", " value=\'", 218666, "\'", 218706, 1);
2336 WriteAttributeValue("", 218674, UserContext.Current.User?.Email, 218674, 32, false);
2337 EndWriteAttribute();
2338 WriteLiteral(" required />\r\n </div>\r\n <div class=\"form-group row\">\r\n <div class=\"col-6\">\r\n <label><strong>");
2339 Write(Translate("form-mobile", "Mobil nr."));
2340 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"tel\" pattern=\"^[0-9]*$\" maxlength=\"20\" name=\"mobile\"");
2341 BeginWriteAttribute("placeholder", " placeholder=\'", 218999, "\'", 219086, 1);
2342 WriteAttributeValue("", 219013, Translate("Smartpage:Aabenthus.Placeholder.Mobile", "Indtast mobil nr."), 219013, 73, false);
2343 EndWriteAttribute();
2344 BeginWriteAttribute("value", " value=\'", 219087, "\'", 219127, 1);
2345 WriteAttributeValue("", 219095, UserContext.Current.User?.Phone, 219095, 32, false);
2346 EndWriteAttribute();
2347 WriteLiteral(" required />\r\n </div>\r\n <div class=\"col-6\">\r\n <label><strong>");
2348 Write(Translate("form-telephone", "Telefon nr."));
2349 WriteLiteral("</strong></label>\r\n <input class=\"form-control\" type=\"tel\" pattern=\"^[0-9]*$\" maxlength=\"20\" name=\"telefonnummer\"");
2350 BeginWriteAttribute("placeholder", " placeholder=\'", 219397, "\'", 219483, 1);
2351 WriteAttributeValue("", 219411, Translate("Smartpage:Aabenthus.Placeholder.Telefon", "Indtast tlf nr."), 219411, 72, false);
2352 EndWriteAttribute();
2353 BeginWriteAttribute("value", " value=\'", 219484, "\'", 219524, 1);
2354 WriteAttributeValue("", 219492, UserContext.Current.User?.Phone, 219492, 32, false);
2355 EndWriteAttribute();
2356 WriteLiteral(" />\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <button type=\"submit\" class=\"btn btn-block btn-green\">");
2357 Write(Translate("Smartpage:Aabenthus.TilmeldKnap", "Tilmeld åbent hus"));
2358 WriteLiteral(@"</button>
2359 </div>
2360 </div>
2361 </div>
2362 <div class=""form-group"">
2363 <div class=""checkbox"">
2364 <label>
2365 <input type=""checkbox"" name=""kontaktmigok"" required />
2366
2367 <span class=""base-color"">");
2368 Write(Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *"));
2369 WriteLiteral("</span>\r\n\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n ");
2370 Write(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>"));
2371 WriteLiteral("\r\n\r\n </div>\r\n <input type=\"hidden\" name=\"fn\" value=\"ah\" />\r\n <input type=\"hidden\" name=\"origin\"");
2372 BeginWriteAttribute("value", " value=\"", 220687, "\"", 220695, 0);
2373 EndWriteAttribute();
2374 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"brugerId\"");
2375 BeginWriteAttribute("value", " value=\"", 220745, "\"", 220760, 1);
2376 WriteAttributeValue("", 220753, userID, 220753, 7, false);
2377 EndWriteAttribute();
2378 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"areaid\"");
2379 BeginWriteAttribute("value", " value=\"", 220808, "\"", 220832, 1);
2380 WriteAttributeValue("", 220816, Pageview.AreaID, 220816, 16, false);
2381 EndWriteAttribute();
2382 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"butikId\"");
2383 BeginWriteAttribute("value", " value=\"", 220881, "\"", 220897, 1);
2384 WriteAttributeValue("", 220889, butikId, 220889, 8, false);
2385 EndWriteAttribute();
2386 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"sagsaddresse\"");
2387 BeginWriteAttribute("value", " value=\"", 220951, "\"", 220959, 0);
2388 EndWriteAttribute();
2389 WriteLiteral(" class=\"js-aabenthus-address-input\" />\r\n <input type=\"hidden\" name=\"ejendomstype\"");
2390 BeginWriteAttribute("value", " value=\"", 221048, "\"", 221056, 0);
2391 EndWriteAttribute();
2392 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"salgspris\"");
2393 BeginWriteAttribute("value", " value=\"", 221107, "\"", 221115, 0);
2394 EndWriteAttribute();
2395 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"modtager\"");
2396 BeginWriteAttribute("value", " value=\"", 221165, "\"", 221173, 0);
2397 EndWriteAttribute();
2398 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"employee\"");
2399 BeginWriteAttribute("value", " value=\"", 221223, "\"", 221231, 0);
2400 EndWriteAttribute();
2401 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"sagsnr\"");
2402 BeginWriteAttribute("value", " value=\"", 221279, "\"", 221287, 0);
2403 EndWriteAttribute();
2404 WriteLiteral(" class=\"js-sagsnr\" />\r\n <input type=\"hidden\" name=\"productId\"");
2405 BeginWriteAttribute("value", " value=\"", 221356, "\"", 221412, 1);
2406 WriteAttributeValue("", 221364, Dynamicweb.Context.Current.Request["ProductId"], 221364, 48, false);
2407 EndWriteAttribute();
2408 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"aftaleid\"");
2409 BeginWriteAttribute("value", " value=\"", 221462, "\"", 221470, 0);
2410 EndWriteAttribute();
2411 WriteLiteral(@" class=""js-aftaleid"" />
2412
2413 <input type=""hidden"" name=""dateMail"" class=""js-aabenthus-date-input"" />
2414 <input type=""hidden"" name=""timeMail"" class=""js-aabenthus-time-input"" />
2415 <input type=""hidden"" name=""brokerImageMail"" class=""property-broker-image-input"" />
2416 <input type=""hidden"" name=""employeeNameMail"" class=""js-maegler-employee-name-input"" />
2417 <input type=""hidden"" name=""employeeTitleMail"" class=""js-maegler-employee-title-input"" />
2418 <input type=""hidden"" name=""employeeMailMail"" class=""js-maegler-mail-input"" />
2419 <input type=""hidden"" name=""employeeMobileMail"" class=""js-maegler-mobile-input"" />
2420 <input type=""hidden"" name=""employeePhoneMail"" class=""js-maegler-phone-input"" />
2421
2422 <input type=""hidden"" name=""brokerNameMail"" class=""js-broker-name-input"" />
2423 <input type=""hidden"" name=""brokerAddressMail"" class=""js-broker-address-input"" />
2424 <input type=""hidden"" name=""brokerPhoneMail"" class=""js-broker-phone-input"" />
2425 </form>
2426 <di");
2427 WriteLiteral("v id=\"tak-aabenthus\" style=\"display:none;\">\r\n <h2>");
2428 Write(Translate("Smarptage:Aabenthus.TakForTilmelding", "Tak for din tilmelding til åbent hus!"));
2429 WriteLiteral("</h2>\r\n <div class=\"d-block\">\r\n <strong>");
2430 Write(Translate("Smarptage:Adresse", "Adresse:"));
2431 WriteLiteral("</strong> <label class=\"js-aabenthus-address mb-0\"></label>\r\n </div>\r\n <div class=\"d-block\">\r\n <strong>");
2432 Write(Translate("Smarptage:Date", "Dato:"));
2433 WriteLiteral("</strong> <label class=\"js-aabenthus-date mb-0\"></label>\r\n\r\n </div>\r\n <div class=\"d-block mb-4\">\r\n <strong>");
2434 Write(Translate("Smarptage:Time", "Tidspunkt:"));
2435 WriteLiteral("</strong> <label class=\"js-aabenthus-time mb-0\"></label>\r\n\r\n </div>\r\n\r\n <div class=\"js-employee\">\r\n <p>");
2436 Write(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>"));
2437 WriteLiteral("</p>\r\n </div>\r\n <div class=\"js-not-employee\">\r\n <p>");
2438 Write(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"));
2439 WriteLiteral("</p>\r\n </div>\r\n\r\n <div class=\"row\">\r\n <div class=\"js-employee\">\r\n <div class=\"col-12 js-maegler-img aabenthus-image\">\r\n <div class=\"property-broker-image\"");
2440 BeginWriteAttribute("style", " style=\"", 223862, "\"", 223870, 0);
2441 EndWriteAttribute();
2442 WriteLiteral(@"></div>
2443
2444 </div>
2445 </div>
2446 <div class=""col-12"">
2447 <div class=""bg-base"">
2448
2449 <div class=""js-employee"">
2450 <h4 class=""js-maegler-employee-name""></h4>
2451 <div class=""icon-container"">
2452 <i class=""fas fa-envelope""></i> <span class=""js-maegler-mail""></span>
2453 </div>
2454 <div class=""icon-container"">
2455 <i class=""fas fa-phone""></i> <span class=""js-maegler-mobile""></span>
2456 </div>
2457 </div>
2458
2459
2460 <h4 class=""js-maegler-name""></h4>
2461 <div class=""icon-container"">
2462 <i class=""fas fa-map-marker-alt""></i> <span class=""js-maegler-address""></span>
2463 </div>
2464 <div class=""icon-container"">
2465 <i class=""fas fa-phone""></i> <span class=""js-maegler-phone""></span>");
2466 WriteLiteral(@"
2467
2468 </div>
2469 <a class=""btn btn-border"" onclick=""panelKontaktmaeglerGuldkoeber()"">KONTAKT MÆGLER</a>
2470 </div>
2471 </div>
2472 </div>
2473 </div>
2474 </div>
2475
2476 <!-- KONTAKT GULDKØBER -->
2477 <div id=""panel-kontakt-guldkoeber"" class=""panel panel-form"">
2478 <button type=""button"" class=""close"" data-dismiss=""panel-form"" aria-label=""Close"">
2479 <b></b>
2480 </button>
2481 <h2>");
2482 Write(Translate("Smarptage:Guldkøber.KontaktMægler", "Kontakt Mægler"));
2483 WriteLiteral("</h2>\r\n <form id=\"form-kontaktmaegler\" method=\"POST\" action=\"/InboxHandler\">\r\n <div class=\"form-group\">\r\n <label><strong>");
2484 Write(Translate("form-navn", "Navn"));
2485 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"text\" name=\"navn\"");
2486 BeginWriteAttribute("placeholder", " placeholder=\'", 225655, "\'", 225700, 1);
2487 WriteAttributeValue("", 225669, Translate("form-navn", "Navn"), 225669, 31, false);
2488 EndWriteAttribute();
2489 BeginWriteAttribute("value", " value=\'", 225701, "\'", 225740, 1);
2490 WriteAttributeValue("", 225709, UserContext.Current.User?.Name, 225709, 31, false);
2491 EndWriteAttribute();
2492 WriteLiteral(" required />\r\n </div>\r\n <div class=\"form-group\">\r\n <label><strong>");
2493 Write(Translate("form-email", "E-mail"));
2494 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"email\" pattern=\"[_a-z0-9.%+-]+@[a-z0-9.-]+.[a-z]{2,4}$\" name=\"email\"");
2495 BeginWriteAttribute("placeholder", " placeholder=\'", 226004, "\'", 226052, 1);
2496 WriteAttributeValue("", 226018, Translate("form-email", "E-mail"), 226018, 34, false);
2497 EndWriteAttribute();
2498 BeginWriteAttribute("value", " value=\'", 226053, "\'", 226093, 1);
2499 WriteAttributeValue("", 226061, UserContext.Current.User?.Email, 226061, 32, false);
2500 EndWriteAttribute();
2501 WriteLiteral(" required />\r\n </div>\r\n <div class=\"form-group row mb-4\">\r\n <div class=\"col-6\">\r\n <label><strong>");
2502 Write(Translate("form-mobile", "Mobil nr."));
2503 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"tel\" pattern=\"^[0-9]*$\" maxlength=\"20\" name=\"mobile\"");
2504 BeginWriteAttribute("placeholder", " placeholder=\'", 226391, "\'", 226476, 1);
2505 WriteAttributeValue("", 226405, Translate("Smartpage:Kontakt.Placeholder.Mobile", "Indtast mobil nr."), 226405, 71, false);
2506 EndWriteAttribute();
2507 BeginWriteAttribute("value", " value=\'", 226477, "\'", 226517, 1);
2508 WriteAttributeValue("", 226485, UserContext.Current.User?.Phone, 226485, 32, false);
2509 EndWriteAttribute();
2510 WriteLiteral(" required />\r\n </div>\r\n <div class=\"col-6\">\r\n <label><strong>");
2511 Write(Translate("form-telephone", "Telefon nr."));
2512 WriteLiteral("</strong></label>\r\n <input class=\"form-control\" type=\"tel\" pattern=\"^[0-9]*$\" maxlength=\"20\" name=\"telefonnummer\"");
2513 BeginWriteAttribute("placeholder", " placeholder=\'", 226787, "\'", 226871, 1);
2514 WriteAttributeValue("", 226801, Translate("Smartpage:Kontakt.Placeholder.Telefon", "Indtast tlf nr."), 226801, 70, false);
2515 EndWriteAttribute();
2516 BeginWriteAttribute("value", " value=\'", 226872, "\'", 226912, 1);
2517 WriteAttributeValue("", 226880, UserContext.Current.User?.Phone, 226880, 32, false);
2518 EndWriteAttribute();
2519 WriteLiteral(" />\r\n </div>\r\n </div>\r\n <div class=\"form-group row\">\r\n <div class=\"col-4\">\r\n <label><strong>");
2520 Write(Translate("form-zip", "Post nr"));
2521 WriteLiteral("*</strong></label>\r\n <input class=\"form-control js-postnummer\" type=\"tel\" pattern=\"^[0-9]*$\" maxlength=\"4\" name=\"postnummer\"");
2522 BeginWriteAttribute("placeholder", " placeholder=\'", 227228, "\'", 227306, 1);
2523 WriteAttributeValue("", 227242, Translate("Smartpage:Aabenthus.Placeholder.Adresse", "Post nr"), 227242, 64, false);
2524 EndWriteAttribute();
2525 BeginWriteAttribute("value", " value=\"", 227307, "\"", 227323, 1);
2526 WriteAttributeValue("", 227315, userZip, 227315, 8, false);
2527 EndWriteAttribute();
2528 WriteLiteral(" required />\r\n <input type=\"hidden\" class=\"js-postnummer-validation\" />\r\n </div>\r\n <div class=\"col-8\">\r\n <label><strong>");
2529 Write(Translate("form-city", "By"));
2530 WriteLiteral("*</strong></label>\r\n <input class=\"form-control js-city\" type=\"text\" readonly />\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group overflow-unset\">\r\n <label><strong>");
2531 Write(Translate("form-adresse", "Adresse"));
2532 WriteLiteral("*</strong></label>\r\n <input class=\"form-control js-validate-address\" type=\"text\" name=\"adresse\"");
2533 BeginWriteAttribute("placeholder", " placeholder=\'", 227879, "\'", 227969, 1);
2534 WriteAttributeValue("", 227893, Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse"), 227893, 76, false);
2535 EndWriteAttribute();
2536 BeginWriteAttribute("value", " value=\"", 227970, "\"", 227990, 1);
2537 WriteAttributeValue("", 227978, userAddress, 227978, 12, false);
2538 EndWriteAttribute();
2539 WriteLiteral(" required />\r\n <label class=\"form-validate-error js-address-error d-none\" for=\"adresse\">");
2540 Write(Translate("Smarptage:Kontakt.Forkert adresse", "Den indtastede adresse matchede ikke en kendt dansk adresse"));
2541 WriteLiteral("</label>\r\n </div>\r\n <div class=\"form-group\">\r\n <textarea class=\"form-control\" name=\"besked\"");
2542 BeginWriteAttribute("placeholder", " placeholder=\'", 228316, "\'", 228394, 1);
2543 WriteAttributeValue("", 228330, Translate("form-besked-max", "Skriv en besked på max 150 tegn"), 228330, 64, false);
2544 EndWriteAttribute();
2545 WriteLiteral(" maxlength=\"150\"></textarea>\r\n </div>\r\n <div class=\"form-group\">\r\n <div class=\"checkbox\">\r\n <label>\r\n <input type=\"checkbox\" name=\"kontaktmigok\" required />\r\n\r\n <span>");
2546 Write(Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *"));
2547 WriteLiteral("</span>\r\n\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"form-group\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <button type=\"submit\" class=\"btn btn-green btn-block\">");
2548 Write(Translate("KontaktMægler", "Kontakt Mægler"));
2549 WriteLiteral("</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group form-group-terms\">\r\n ");
2550 Write(privacyPolicyText);
2551 WriteLiteral(" <a");
2552 BeginWriteAttribute("href", " href=\"", 229180, "\"", 229204, 2);
2553 WriteAttributeValue("", 229187, "mailto:", 229187, 7, true);
2554 WriteAttributeValue("", 229194, termsMail, 229194, 10, false);
2555 EndWriteAttribute();
2556 WriteLiteral(">");
2557 Write(termsMail);
2558 WriteLiteral("</a>.\r\n Læs mere på <a");
2559 BeginWriteAttribute("href", " href=\"", 229249, "\"", 229283, 1);
2560 WriteAttributeValue("", 229256, settings_Persondatapolitik, 229256, 27, false);
2561 EndWriteAttribute();
2562 WriteLiteral(">privatlivspolitikkerne</a>.\r\n </div>\r\n <input type=\"hidden\" name=\"fn\" value=\"gk\" />\r\n <input type=\"hidden\" name=\"origin\"");
2563 BeginWriteAttribute("value", " value=\"", 229426, "\"", 229434, 0);
2564 EndWriteAttribute();
2565 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"brugerId\"");
2566 BeginWriteAttribute("value", " value=\"", 229484, "\"", 229499, 1);
2567 WriteAttributeValue("", 229492, userID, 229492, 7, false);
2568 EndWriteAttribute();
2569 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"areaid\"");
2570 BeginWriteAttribute("value", " value=\"", 229547, "\"", 229571, 1);
2571 WriteAttributeValue("", 229555, Pageview.AreaID, 229555, 16, false);
2572 EndWriteAttribute();
2573 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"butikId\"");
2574 BeginWriteAttribute("value", " value=\"", 229620, "\"", 229636, 1);
2575 WriteAttributeValue("", 229628, butikId, 229628, 8, false);
2576 EndWriteAttribute();
2577 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"ejendomstype\"");
2578 BeginWriteAttribute("value", " value=\"", 229690, "\"", 229698, 0);
2579 EndWriteAttribute();
2580 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"salgspris\"");
2581 BeginWriteAttribute("value", " value=\"", 229749, "\"", 229757, 0);
2582 EndWriteAttribute();
2583 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"modtager\"");
2584 BeginWriteAttribute("value", " value=\"", 229807, "\"", 229815, 0);
2585 EndWriteAttribute();
2586 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"employee\"");
2587 BeginWriteAttribute("value", " value=\"", 229865, "\"", 229873, 0);
2588 EndWriteAttribute();
2589 WriteLiteral(" />\r\n </form>\r\n <div id=\"tak-kontakt-maegler-guldkoeber\" style=\"display:none;\">\r\n <h2>");
2590 Write(Translate("TakForDinInteresse", "Tak for din interesse"));
2591 WriteLiteral("</h2>\r\n <p>");
2592 Write(Translate("Smartpage:FormKontaktGuld.Subheader", "Vi har sendt din forespørgsel om guldkøbere til:"));
2593 WriteLiteral("</p>\r\n <div class=\"row\">\r\n <div class=\"col-6\">\r\n <img");
2594 BeginWriteAttribute("src", " src=\"", 230235, "\"", 230241, 0);
2595 EndWriteAttribute();
2596 WriteLiteral(@" class=""img-fluid js-maegler-img"" />
2597 </div>
2598 <div class=""col-6"">
2599 <p class=""js-maegler-name""></p>
2600 <p class=""js-maegler-address""></p>
2601 <p class=""js-maegler-phone""></p>
2602 <p class=""js-maegler-mail""></p>
2603 </div>
2604 </div>
2605 <p>");
2606 Write(Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt"));
2607 WriteLiteral(@"</p>
2608 </div>
2609 </div>
2610
2611 <!-- BESTIL SALGSVURDERING -->
2612 <div id=""panel-salgsvurdering"" class=""panel panel-form"">
2613 <button type=""button"" class=""close"" data-dismiss=""panel-form"" aria-label=""Close"">
2614 <b></b>
2615 </button>
2616
2617 <form id=""bestil-salgsvurdering"" class=""buyer-advisor-form js-buyer-advisor-form"" method=""POST"" action=""/InboxHandler"">
2618 <h2 class=""js-buyer-advisor-header"">");
2619 Write(Translate("form-salgsvurdering-titel", "Bestil gratis salgsvurdering"));
2620 WriteLiteral("</h2>\r\n <p>");
2621 Write(Translate("form-salgsvurdering-beskrivelse", ""));
2622 WriteLiteral("</p>\r\n <div class=\"form-group\">\r\n <label><strong>");
2623 Write(Translate("form-navn", "Navn"));
2624 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"text\" name=\"navn\"");
2625 BeginWriteAttribute("placeholder", " placeholder=\'", 231398, "\'", 231487, 1);
2626 WriteAttributeValue("", 231412, Translate("Smartpage:Salgsvurdering.Placeholder.Navn", "Indtast dit navn"), 231412, 75, false);
2627 EndWriteAttribute();
2628 BeginWriteAttribute("value", " value=\'", 231488, "\'", 231527, 1);
2629 WriteAttributeValue("", 231496, UserContext.Current.User?.Name, 231496, 31, false);
2630 EndWriteAttribute();
2631 WriteLiteral(" required />\r\n </div>\r\n <div class=\"form-group\">\r\n <label><strong>");
2632 Write(Translate("form-email", "E-mail"));
2633 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"email\" pattern=\"[_a-z0-9.%+-]+@[a-z0-9.-]+.[a-z]{2,4}$\" name=\"email\"");
2634 BeginWriteAttribute("placeholder", " placeholder=\'", 231791, "\'", 231883, 1);
2635 WriteAttributeValue("", 231805, Translate("Smartpage:Salgsvurdering.Placeholder.Email", "Indtast din e-mail"), 231805, 78, false);
2636 EndWriteAttribute();
2637 BeginWriteAttribute("value", " value=\'", 231884, "\'", 231924, 1);
2638 WriteAttributeValue("", 231892, UserContext.Current.User?.Email, 231892, 32, false);
2639 EndWriteAttribute();
2640 WriteLiteral(" required />\r\n </div>\r\n <div class=\"form-group row mb-4\">\r\n <div class=\"col-6\">\r\n <label><strong>");
2641 Write(Translate("form-mobile", "Mobil nr."));
2642 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"tel\" pattern=\"^[0-9]*$\" maxlength=\"20\" name=\"mobile\"");
2643 BeginWriteAttribute("placeholder", " placeholder=\'", 232222, "\'", 232314, 1);
2644 WriteAttributeValue("", 232236, Translate("Smartpage:Salgsvurdering.Placeholder.Mobile", "Indtast mobil nr."), 232236, 78, false);
2645 EndWriteAttribute();
2646 BeginWriteAttribute("value", " value=\'", 232315, "\'", 232355, 1);
2647 WriteAttributeValue("", 232323, UserContext.Current.User?.Phone, 232323, 32, false);
2648 EndWriteAttribute();
2649 WriteLiteral(" required />\r\n </div>\r\n <div class=\"col-6\">\r\n <label><strong>");
2650 Write(Translate("form-telephone", "Telefon nr."));
2651 WriteLiteral("</strong></label>\r\n <input class=\"form-control\" type=\"tel\" pattern=\"^[0-9]*$\" maxlength=\"20\" name=\"telefonnummer\"");
2652 BeginWriteAttribute("placeholder", " placeholder=\'", 232625, "\'", 232716, 1);
2653 WriteAttributeValue("", 232639, Translate("Smartpage:Salgsvurdering.Placeholder.Telefon", "Indtast tlf nr."), 232639, 77, false);
2654 EndWriteAttribute();
2655 BeginWriteAttribute("value", " value=\'", 232717, "\'", 232757, 1);
2656 WriteAttributeValue("", 232725, UserContext.Current.User?.Phone, 232725, 32, false);
2657 EndWriteAttribute();
2658 WriteLiteral(" />\r\n </div>\r\n\r\n </div>\r\n\r\n <h3>");
2659 Write(Translate("Smartpage:Salgsvurdering.DinBolig", "Din bolig"));
2660 WriteLiteral("</h3>\r\n <div class=\"form-group row\">\r\n <div class=\"col-4\">\r\n <label><strong>");
2661 Write(Translate("form-zip", "Post nr"));
2662 WriteLiteral("*</strong></label>\r\n <input class=\"form-control js-postnummer js-updatebroker-list\" type=\"tel\" pattern=\"^[0-9]*$\" maxlength=\"4\" name=\"postnummer\"");
2663 BeginWriteAttribute("placeholder", " placeholder=\'", 233177, "\'", 233255, 1);
2664 WriteAttributeValue("", 233191, Translate("Smartpage:Aabenthus.Placeholder.Adresse", "Post nr"), 233191, 64, false);
2665 EndWriteAttribute();
2666 BeginWriteAttribute("value", " value=\"", 233256, "\"", 233272, 1);
2667 WriteAttributeValue("", 233264, userZip, 233264, 8, false);
2668 EndWriteAttribute();
2669 WriteLiteral(" required />\r\n <input type=\"hidden\" class=\"js-postnummer-validation\" />\r\n </div>\r\n <div class=\"col-8\">\r\n <label><strong>");
2670 Write(Translate("form-city", "By"));
2671 WriteLiteral("*</strong></label>\r\n <input class=\"form-control js-city\" type=\"text\" readonly />\r\n </div>\r\n </div>\r\n <div class=\"form-group overflow-unset\">\r\n <label><strong>");
2672 Write(Translate("form-adresse", "Adresse"));
2673 WriteLiteral("*</strong></label>\r\n <input class=\"form-control js-validate-address\" type=\"text\" name=\"adresse\"");
2674 BeginWriteAttribute("placeholder", " placeholder=\'", 233826, "\'", 233916, 1);
2675 WriteAttributeValue("", 233840, Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse"), 233840, 76, false);
2676 EndWriteAttribute();
2677 BeginWriteAttribute("value", " value=\"", 233917, "\"", 233937, 1);
2678 WriteAttributeValue("", 233925, userAddress, 233925, 12, false);
2679 EndWriteAttribute();
2680 WriteLiteral(" required />\r\n <label class=\"form-validate-error js-address-error d-none\" for=\"adresse\">");
2681 Write(Translate("Smarptage:Kontakt.Forkert adresse", "Den indtastede adresse matchede ikke en kendt dansk adresse"));
2682 WriteLiteral(@"</label>
2683 </div>
2684
2685 <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"">
2686 <strong class=""f-12""><i class=""fas fa-plus""></i> ");
2687 Write(Translate("Smartpage:Salgsvurdering.Skrivenkommentar", "Skriv en kommentar"));
2688 WriteLiteral("</strong>\r\n </button>\r\n <div class=\"collapse\" id=\"salgsvurdering-collapse\">\r\n <div class=\"form-group\">\r\n <textarea class=\"form-control\" name=\"besked\"");
2689 BeginWriteAttribute("placeholder", " placeholder=\'", 234707, "\'", 234785, 1);
2690 WriteAttributeValue("", 234721, Translate("form-besked-max", "Skriv en besked på max 150 tegn"), 234721, 64, false);
2691 EndWriteAttribute();
2692 WriteLiteral(" maxlength=\"150\"></textarea>\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"salgsvurdering-precheck\">\r\n <h3>");
2693 Write(Translate("Smartpage:Salgsvurdering.SendSalgsvurderingTil", "Send salgsvurdering til:"));
2694 WriteLiteral("</h3>\r\n <div class=\"col-12\">\r\n <div class=\"choose-broker row align-items-center active\">\r\n <div class=\"col-2\">\r\n <input class=\"js-broker-radio\" type=\"radio\"");
2695 BeginWriteAttribute("id", " id=\"", 235231, "\"", 235236, 0);
2696 EndWriteAttribute();
2697 WriteLiteral(" name=\"choose-broker\"");
2698 BeginWriteAttribute("value", " value=\"", 235258, "\"", 235266, 0);
2699 EndWriteAttribute();
2700 WriteLiteral(" checked>\r\n <label class=\"js-broker-label\"");
2701 BeginWriteAttribute("for", " for=\"", 235332, "\"", 235338, 0);
2702 EndWriteAttribute();
2703 WriteLiteral("></label><div class=\"check\">\r\n <div class=\"inside\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <img");
2704 BeginWriteAttribute("src", " src=\"", 235584, "\"", 235590, 0);
2705 EndWriteAttribute();
2706 WriteLiteral(@" class=""img-fluid js-broker-image"">
2707 </div>
2708 <div class=""col-6"">
2709 <span class=""d-block"">
2710 <strong class=""js-choose-broker-name""></strong>
2711 </span>
2712 <span class=""js-choose-broker-address""></span>
2713 <input type=""hidden"" class=""js-choose-broker-phone""");
2714 BeginWriteAttribute("value", " value=\"", 236002, "\"", 236010, 0);
2715 EndWriteAttribute();
2716 WriteLiteral(" />\r\n <input type=\"hidden\" class=\"js-choose-broker-email\"");
2717 BeginWriteAttribute("value", " value=\"", 236091, "\"", 236099, 0);
2718 EndWriteAttribute();
2719 WriteLiteral(" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"salgsvurdering-broker\">\r\n <h3 class=\"js-brokerh3\">");
2720 Write(Translate("Smartpage:Salgsvurdering.VælgMægler", "Vælg mægler"));
2721 WriteLiteral(@"</h3>
2722 <div class=""js-choose-broker col-12"">
2723 </div>
2724
2725 </div>
2726
2727 <div class=""form-group mt-4"">
2728 <div class=""checkbox"">
2729 <label>
2730 <input type=""checkbox"" name=""kontaktmigok"" required />
2731
2732 <span class=""consent-checkbox"">");
2733 Write(Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *"));
2734 WriteLiteral(@"</span>
2735
2736 </label>
2737 </div>
2738 </div>
2739 <div class=""form-group"">
2740 <div class=""row"">
2741 <div class=""col-12"">
2742 <button type=""submit"" class=""btn btn-green btn-block js-buyer-advisor-button"">");
2743 Write(Translate("form-salgsvurdering-submitbtn", "Bestil gratis salgsvurdering"));
2744 WriteLiteral("</button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-group form-group-terms\">\r\n ");
2745 Write(privacyPolicyText);
2746 WriteLiteral(" <a");
2747 BeginWriteAttribute("href", " href=\"", 237259, "\"", 237283, 2);
2748 WriteAttributeValue("", 237266, "mailto:", 237266, 7, true);
2749 WriteAttributeValue("", 237273, termsMail, 237273, 10, false);
2750 EndWriteAttribute();
2751 WriteLiteral(">");
2752 Write(termsMail);
2753 WriteLiteral("</a>.\r\n Læs mere på <a");
2754 BeginWriteAttribute("href", " href=\"", 237328, "\"", 237362, 1);
2755 WriteAttributeValue("", 237335, settings_Persondatapolitik, 237335, 27, false);
2756 EndWriteAttribute();
2757 WriteLiteral(">privatlivspolitikkerne</a>.\r\n </div>\r\n <input type=\"hidden\" name=\"fn\" value=\"bsv\" />\r\n <input type=\"hidden\" name=\"origin\" class=\"js-salgsvurdering-origin\"");
2758 BeginWriteAttribute("value", " value=\"", 237539, "\"", 237547, 0);
2759 EndWriteAttribute();
2760 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"brugerId\"");
2761 BeginWriteAttribute("value", " value=\"", 237597, "\"", 237612, 1);
2762 WriteAttributeValue("", 237605, userID, 237605, 7, false);
2763 EndWriteAttribute();
2764 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"areaid\"");
2765 BeginWriteAttribute("value", " value=\"", 237660, "\"", 237684, 1);
2766 WriteAttributeValue("", 237668, Pageview.AreaID, 237668, 16, false);
2767 EndWriteAttribute();
2768 WriteLiteral(" />\r\n <input type=\"hidden\" id=\"boligvisning\" name=\"boligvisning\"");
2769 BeginWriteAttribute("value", " value=\"", 237756, "\"", 237764, 0);
2770 EndWriteAttribute();
2771 WriteLiteral(" />\r\n <input type=\"hidden\" id=\"panel-salgsvurdering-butikid\" name=\"butikId\"");
2772 BeginWriteAttribute("value", " value=\"", 237847, "\"", 237855, 0);
2773 EndWriteAttribute();
2774 WriteLiteral(" />\r\n <input type=\"hidden\" id=\"panel-salgsvurdering-sagsnr\" name=\"sagsnr\"");
2775 BeginWriteAttribute("value", " value=\"", 237936, "\"", 237944, 0);
2776 EndWriteAttribute();
2777 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"productId\"");
2778 BeginWriteAttribute("value", " value=\"", 237995, "\"", 238051, 1);
2779 WriteAttributeValue("", 238003, Dynamicweb.Context.Current.Request["ProductId"], 238003, 48, false);
2780 EndWriteAttribute();
2781 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"ejendomstype\"");
2782 BeginWriteAttribute("value", " value=\"", 238105, "\"", 238113, 0);
2783 EndWriteAttribute();
2784 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"salgspris\"");
2785 BeginWriteAttribute("value", " value=\"", 238164, "\"", 238172, 0);
2786 EndWriteAttribute();
2787 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"employee\"");
2788 BeginWriteAttribute("value", " value=\"", 238222, "\"", 238230, 0);
2789 EndWriteAttribute();
2790 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"modtager\"");
2791 BeginWriteAttribute("value", " value=\"", 238280, "\"", 238288, 0);
2792 EndWriteAttribute();
2793 WriteLiteral(" />\r\n <input class=\"js-value-check\" type=\"hidden\" name=\"valueCheck\"");
2794 BeginWriteAttribute("value", " value=\"", 238363, "\"", 238371, 0);
2795 EndWriteAttribute();
2796 WriteLiteral(" />\r\n <input class=\"js-green-appraisal\" type=\"hidden\" name=\"greenAppraisal\"");
2797 BeginWriteAttribute("value", " value=\"", 238454, "\"", 238462, 0);
2798 EndWriteAttribute();
2799 WriteLiteral(" />\r\n </form>\r\n <div id=\"tak-salgsvurdering\" style=\"display:none;\">\r\n <h2>");
2800 Write(Translate("TakForDinInteresse", "Tak for din interesse"));
2801 WriteLiteral("</h2>\r\n <p>");
2802 Write(Translate("Smartpage:FormSalgsvurdering.Subheader", "Vi har sendt din bestilling af gratis salgsvurdering til:"));
2803 WriteLiteral("</p>\r\n <div class=\"row\">\r\n <div class=\"col-6\">\r\n <img");
2804 BeginWriteAttribute("src", " src=\"", 238824, "\"", 238830, 0);
2805 EndWriteAttribute();
2806 WriteLiteral(@" class=""img-fluid js-maegler-img"" />
2807 </div>
2808 <div class=""col-6"">
2809 <p class=""js-maegler-name""></p>
2810 <p class=""js-maegler-address""></p>
2811 <p class=""js-maegler-phone""></p>
2812 <p class=""js-maegler-mail""></p>
2813 </div>
2814 </div>
2815 <p>");
2816 Write(Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt"));
2817 WriteLiteral(@"</p>
2818 </div>
2819 </div>
2820
2821 <!-- BESTIL SALGSVURDERING GULDKØBER -->
2822 <div id=""panel-salgsvurdering-guldkoeber"" class=""panel panel-form"">
2823 <button type=""button"" class=""close"" data-dismiss=""panel-form"" aria-label=""Close"">
2824 <b></b>
2825 </button>
2826
2827 <form id=""bestil-salgsvurdering-guldkoeber"" method=""POST"" action=""/InboxHandler"">
2828 <h2>");
2829 Write(Translate("form-salgsvurdering-titel", "Bestil gratis salgsvurdering"));
2830 WriteLiteral("</h2>\r\n <p>");
2831 Write(Translate("form-salgsvurdering-beskrivelse", ""));
2832 WriteLiteral("</p>\r\n <div class=\"form-group\">\r\n <label><strong>");
2833 Write(Translate("form-navn", "Navn"));
2834 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"text\" name=\"navn\"");
2835 BeginWriteAttribute("placeholder", " placeholder=\'", 239938, "\'", 240027, 1);
2836 WriteAttributeValue("", 239952, Translate("Smartpage:Salgsvurdering.Placeholder.Navn", "Indtast dit navn"), 239952, 75, false);
2837 EndWriteAttribute();
2838 BeginWriteAttribute("value", " value=\'", 240028, "\'", 240067, 1);
2839 WriteAttributeValue("", 240036, UserContext.Current.User?.Name, 240036, 31, false);
2840 EndWriteAttribute();
2841 WriteLiteral(" required />\r\n </div>\r\n <div class=\"form-group\">\r\n <label><strong>");
2842 Write(Translate("form-email", "E-mail"));
2843 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"email\" pattern=\"[_a-z0-9.%+-]+@[a-z0-9.-]+.[a-z]{2,4}$\" name=\"email\"");
2844 BeginWriteAttribute("placeholder", " placeholder=\'", 240331, "\'", 240423, 1);
2845 WriteAttributeValue("", 240345, Translate("Smartpage:Salgsvurdering.Placeholder.Email", "Indtast din e-mail"), 240345, 78, false);
2846 EndWriteAttribute();
2847 BeginWriteAttribute("value", " value=\'", 240424, "\'", 240464, 1);
2848 WriteAttributeValue("", 240432, UserContext.Current.User?.Email, 240432, 32, false);
2849 EndWriteAttribute();
2850 WriteLiteral(" required />\r\n </div>\r\n <div class=\"form-group row mb-4\">\r\n <div class=\"col-6\">\r\n <label><strong>");
2851 Write(Translate("form-telephone", "Telefon nr."));
2852 WriteLiteral("</strong></label>\r\n <input class=\"form-control\" type=\"tel\" pattern=\"^[0-9]*$\" maxlength=\"20\" name=\"telefonnummer\"");
2853 BeginWriteAttribute("placeholder", " placeholder=\'", 240773, "\'", 240864, 1);
2854 WriteAttributeValue("", 240787, Translate("Smartpage:Salgsvurdering.Placeholder.Telefon", "Indtast tlf nr."), 240787, 77, false);
2855 EndWriteAttribute();
2856 BeginWriteAttribute("value", " value=\'", 240865, "\'", 240905, 1);
2857 WriteAttributeValue("", 240873, UserContext.Current.User?.Phone, 240873, 32, false);
2858 EndWriteAttribute();
2859 WriteLiteral(" />\r\n </div>\r\n <div class=\"col-6\">\r\n <label><strong>");
2860 Write(Translate("form-mobile", "Mobil nr."));
2861 WriteLiteral("*</strong></label>\r\n <input class=\"form-control\" type=\"tel\" pattern=\"^[0-9]*$\" maxlength=\"20\" name=\"mobile\"");
2862 BeginWriteAttribute("placeholder", " placeholder=\'", 241155, "\'", 241247, 1);
2863 WriteAttributeValue("", 241169, Translate("Smartpage:Salgsvurdering.Placeholder.Mobile", "Indtast mobil nr."), 241169, 78, false);
2864 EndWriteAttribute();
2865 BeginWriteAttribute("value", " value=\'", 241248, "\'", 241288, 1);
2866 WriteAttributeValue("", 241256, UserContext.Current.User?.Phone, 241256, 32, false);
2867 EndWriteAttribute();
2868 WriteLiteral(" required />\r\n </div>\r\n </div>\r\n\r\n <h3>");
2869 Write(Translate("Smartpage:Salgsvurdering.DinBolig", "Din bolig"));
2870 WriteLiteral("</h3>\r\n\r\n <div class=\"form-group row\">\r\n <div class=\"col-4\">\r\n <label><strong>");
2871 Write(Translate("form-zip", "Post nr"));
2872 WriteLiteral("*</strong></label>\r\n <input class=\"form-control js-postnummer js-updatebroker-list\" type=\"tel\" pattern=\"^[0-9]*$\" maxlength=\"4\" name=\"postnummer\"");
2873 BeginWriteAttribute("placeholder", " placeholder=\'", 241717, "\'", 241795, 1);
2874 WriteAttributeValue("", 241731, Translate("Smartpage:Aabenthus.Placeholder.Adresse", "Post nr"), 241731, 64, false);
2875 EndWriteAttribute();
2876 BeginWriteAttribute("value", " value=\"", 241796, "\"", 241812, 1);
2877 WriteAttributeValue("", 241804, userZip, 241804, 8, false);
2878 EndWriteAttribute();
2879 WriteLiteral(" required />\r\n <input type=\"hidden\" class=\"js-postnummer-validation\" />\r\n </div>\r\n <div class=\"col-8\">\r\n <label><strong>");
2880 Write(Translate("form-city", "By"));
2881 WriteLiteral("*</strong></label>\r\n <input class=\"form-control js-city\" type=\"text\" readonly />\r\n </div>\r\n </div>\r\n <div class=\"form-group overflow-unset\">\r\n <label><strong>");
2882 Write(Translate("form-adresse", "Adresse"));
2883 WriteLiteral("*</strong></label>\r\n <input class=\"form-control js-validate-address\" type=\"text\" name=\"adresse\"");
2884 BeginWriteAttribute("placeholder", " placeholder=\'", 242366, "\'", 242456, 1);
2885 WriteAttributeValue("", 242380, Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse"), 242380, 76, false);
2886 EndWriteAttribute();
2887 BeginWriteAttribute("value", " value=\"", 242457, "\"", 242477, 1);
2888 WriteAttributeValue("", 242465, userAddress, 242465, 12, false);
2889 EndWriteAttribute();
2890 WriteLiteral(" required />\r\n <label class=\"form-validate-error js-address-error d-none\" for=\"adresse\">");
2891 Write(Translate("Smarptage:Kontakt.Forkert adresse", "Den indtastede adresse matchede ikke en kendt dansk adresse"));
2892 WriteLiteral(@"</label>
2893 </div>
2894
2895 <button class=""form-control text-left js-collapse-focus"" type=""button"" data-toggle=""collapse"" data-target=""#salgsvurdering-collapse"" aria-expanded=""false"" aria-controls=""salgsvurdering-collapse"">
2896 <strong class=""f-12""><i class=""fas fa-plus""></i> ");
2897 Write(Translate("Smartpage:Salgsvurdering.Skrivenkommentar", "Skriv en kommentar"));
2898 WriteLiteral("</strong>\r\n </button>\r\n <div class=\"collapse\" id=\"salgsvurdering-collapse\">\r\n <div class=\"form-group\">\r\n <textarea class=\"form-control\" name=\"besked\"");
2899 BeginWriteAttribute("placeholder", " placeholder=\'", 243247, "\'", 243325, 1);
2900 WriteAttributeValue("", 243261, Translate("form-besked-max", "Skriv en besked på max 150 tegn"), 243261, 64, false);
2901 EndWriteAttribute();
2902 WriteLiteral(" maxlength=\"150\"></textarea>\r\n </div>\r\n </div>\r\n\r\n <div class=\"salgsvurdering-precheck\">\r\n <h3>");
2903 Write(Translate("Smartpage:Salgsvurdering.SendSalgsvurderingTil", "Send salgsvurdering til:"));
2904 WriteLiteral("</h3>\r\n <div class=\"col-12\">\r\n <div class=\"choose-broker row align-items-center active\">\r\n <div class=\"col-2\">\r\n <input class=\"js-broker-radio\" type=\"radio\"");
2905 BeginWriteAttribute("id", " id=\"", 243769, "\"", 243774, 0);
2906 EndWriteAttribute();
2907 WriteLiteral(" name=\"choose-broker-gk\"");
2908 BeginWriteAttribute("value", " value=\"", 243799, "\"", 243807, 0);
2909 EndWriteAttribute();
2910 WriteLiteral(" checked>\r\n <label class=\"js-broker-label\"");
2911 BeginWriteAttribute("for", " for=\"", 243873, "\"", 243879, 0);
2912 EndWriteAttribute();
2913 WriteLiteral("></label><div class=\"check\">\r\n <div class=\"inside\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-4\">\r\n <img");
2914 BeginWriteAttribute("src", " src=\"", 244125, "\"", 244131, 0);
2915 EndWriteAttribute();
2916 WriteLiteral(@" class=""img-fluid js-broker-image"">
2917 </div>
2918 <div class=""col-6"">
2919 <span class=""d-block"">
2920 <strong class=""js-choose-broker-name""></strong>
2921 </span>
2922 <span class=""js-choose-broker-address""></span>
2923 <input type=""hidden"" class=""js-choose-broker-phone""");
2924 BeginWriteAttribute("value", " value=\"", 244543, "\"", 244551, 0);
2925 EndWriteAttribute();
2926 WriteLiteral(" />\r\n <input type=\"hidden\" class=\"js-choose-broker-email\"");
2927 BeginWriteAttribute("value", " value=\"", 244632, "\"", 244640, 0);
2928 EndWriteAttribute();
2929 WriteLiteral(" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"salgsvurdering-broker\">\r\n <h3 class=\"js-brokerh3\">");
2930 Write(Translate("Smartpage:Salgsvurdering.VælgMægler", "Vælg mægler"));
2931 WriteLiteral(@"</h3>
2932 <div class=""js-choose-broker col-12"">
2933 </div>
2934
2935 </div>
2936
2937
2938 <div class=""form-group"">
2939 <div class=""row"">
2940 <div class=""col-12"">
2941 <button type=""submit"" class=""btn btn-green btn-block"">");
2942 Write(Translate("form-salgsvurdering-submitbtn", "Bestil gratis salgsvurdering"));
2943 WriteLiteral(@"</button>
2944 </div>
2945 </div>
2946 </div>
2947 <div class=""form-group"">
2948 <div class=""checkbox"">
2949 <label>
2950 <input type=""checkbox"" name=""kontaktmigok"" required />
2951
2952 <span>");
2953 Write(Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *"));
2954 WriteLiteral("</span>\r\n\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"form-group form-group-terms\">\r\n ");
2955 Write(privacyPolicyText);
2956 WriteLiteral(" <a");
2957 BeginWriteAttribute("href", " href=\"", 245748, "\"", 245772, 2);
2958 WriteAttributeValue("", 245755, "mailto:", 245755, 7, true);
2959 WriteAttributeValue("", 245762, termsMail, 245762, 10, false);
2960 EndWriteAttribute();
2961 WriteLiteral(">");
2962 Write(termsMail);
2963 WriteLiteral("</a>.\r\n Læs mere på <a");
2964 BeginWriteAttribute("href", " href=\"", 245817, "\"", 245851, 1);
2965 WriteAttributeValue("", 245824, settings_Persondatapolitik, 245824, 27, false);
2966 EndWriteAttribute();
2967 WriteLiteral(">privatlivspolitikkerne</a>.\r\n </div>\r\n <input type=\"hidden\" name=\"fn\" value=\"bsg\" />\r\n <input type=\"hidden\" name=\"origin\" class=\"js-salgsvurdering-origin\"");
2968 BeginWriteAttribute("value", " value=\"", 246028, "\"", 246036, 0);
2969 EndWriteAttribute();
2970 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"brugerId\"");
2971 BeginWriteAttribute("value", " value=\"", 246086, "\"", 246101, 1);
2972 WriteAttributeValue("", 246094, userID, 246094, 7, false);
2973 EndWriteAttribute();
2974 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"areaid\"");
2975 BeginWriteAttribute("value", " value=\"", 246149, "\"", 246173, 1);
2976 WriteAttributeValue("", 246157, Pageview.AreaID, 246157, 16, false);
2977 EndWriteAttribute();
2978 WriteLiteral(" />\r\n <input type=\"hidden\" id=\"boligvisning-gk\" name=\"boligvisning\"");
2979 BeginWriteAttribute("value", " value=\"", 246248, "\"", 246256, 0);
2980 EndWriteAttribute();
2981 WriteLiteral(" />\r\n <input type=\"hidden\" id=\"panel-salgsvurdering-gk-butikid\" name=\"butikId\"");
2982 BeginWriteAttribute("value", " value=\"", 246342, "\"", 246350, 0);
2983 EndWriteAttribute();
2984 WriteLiteral(" />\r\n <input type=\"hidden\" id=\"panel-salgsvurdering-gk-sagsnr\" name=\"sagsnr\"");
2985 BeginWriteAttribute("value", " value=\"", 246434, "\"", 246442, 0);
2986 EndWriteAttribute();
2987 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"productId\"");
2988 BeginWriteAttribute("value", " value=\"", 246493, "\"", 246549, 1);
2989 WriteAttributeValue("", 246501, Dynamicweb.Context.Current.Request["ProductId"], 246501, 48, false);
2990 EndWriteAttribute();
2991 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"ejendomstype\"");
2992 BeginWriteAttribute("value", " value=\"", 246603, "\"", 246611, 0);
2993 EndWriteAttribute();
2994 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"salgspris\"");
2995 BeginWriteAttribute("value", " value=\"", 246662, "\"", 246670, 0);
2996 EndWriteAttribute();
2997 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"employee\"");
2998 BeginWriteAttribute("value", " value=\"", 246720, "\"", 246728, 0);
2999 EndWriteAttribute();
3000 WriteLiteral(" />\r\n <input type=\"hidden\" name=\"modtager\"");
3001 BeginWriteAttribute("value", " value=\"", 246778, "\"", 246786, 0);
3002 EndWriteAttribute();
3003 WriteLiteral(" />\r\n </form>\r\n <div id=\"tak-salgsvurdering\" style=\"display:none;\">\r\n <h2>");
3004 Write(Translate("TakForDinInteresse", "Tak for din interesse"));
3005 WriteLiteral("</h2>\r\n <p>");
3006 Write(Translate("Smartpage:FormSalgsvurdering.Subheader", "Vi har sendt din bestilling af gratis salgsvurdering til:"));
3007 WriteLiteral("</p>\r\n <div class=\"row\">\r\n <div class=\"col-6\">\r\n <img");
3008 BeginWriteAttribute("src", " src=\"", 247148, "\"", 247154, 0);
3009 EndWriteAttribute();
3010 WriteLiteral(@" class=""img-fluid js-maegler-img"" />
3011 </div>
3012 <div class=""col-6"">
3013 <p class=""js-maegler-name""></p>
3014 <p class=""js-maegler-address""></p>
3015 <p class=""js-maegler-phone""></p>
3016 <p class=""js-maegler-mail""></p>
3017 </div>
3018 </div>
3019 <p>");
3020 Write(Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt"));
3021 WriteLiteral("</p>\r\n </div>\r\n</div>\r\n\r\n\r\n <div class=\"overlay-wrapper\"></div>\r\n <div class=\"dropdown-overlay\"></div>\r\n <div class=\"loader-inner ball-pulse\"></div>\r\n\r\n");
3022
3023 var viamapstrapFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/webpack/js/3rdparty/viamapstrap.js"));
3024 WriteLiteral(" <script type=\"text/javascript\"");
3025 BeginWriteAttribute("src", " src=\'", 247955, "\'", 248059, 3);
3026 WriteAttributeValue("", 247961, TemplateUrl, 247961, 14, false);
3027 WriteAttributeValue("", 247975, "assets/webpack/js/3rdparty/viamapstrap.js?", 247975, 42, true);
3028 WriteAttributeValue("", 248017, viamapstrapFileInfo.LastWriteTime.Ticks, 248017, 42, false);
3029 EndWriteAttribute();
3030 WriteLiteral(" async></script>\r\n");
3031
3032 var bundleFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/dist/bundle.app.min.js"));
3033 WriteLiteral(" <script type=\"text/javascript\"");
3034 BeginWriteAttribute("src", " src=\'", 248262, "\'", 248349, 3);
3035 WriteAttributeValue("", 248268, TemplateUrl, 248268, 14, false);
3036 WriteAttributeValue("", 248282, "assets/dist/bundle.app.min.js?", 248282, 30, true);
3037 WriteAttributeValue("", 248312, bundleFileInfo.LastWriteTime.Ticks, 248312, 37, false);
3038 EndWriteAttribute();
3039 WriteLiteral(" async></script>\r\n");
3040 WriteLiteral("\r\n ");
3041 Write(RenderSnippet("JavaScriptBottom"));
3042 WriteLiteral("\r\n\r\n");
3043 if (Context.Current.Request.QueryString["ShowLogin"] == "true")
3044 {
3045 WriteLiteral(" <input class=\"js-showLogin\" value=\"true\" />\r\n");
3046 }
3047 WriteLiteral("\r\n");
3048 if (!string.IsNullOrEmpty(settings_ConduzeId))
3049 {
3050 WriteLiteral(" <script type=\"text/javascript\" id=\"conduze-sdk\"");
3051 BeginWriteAttribute("src", " src=\"", 248673, "\"", 248734, 3);
3052 WriteAttributeValue("", 248679, "https://cdn.conduze.com/", 248679, 24, true);
3053 WriteAttributeValue("", 248703, settings_ConduzeId, 248703, 19, false);
3054 WriteAttributeValue("", 248722, "/tracking.js", 248722, 12, true);
3055 EndWriteAttribute();
3056 WriteLiteral(" async></script>\r\n");
3057 }
3058 WriteLiteral("\r\n");
3059 if (!string.IsNullOrEmpty(settings_Weply))
3060 {
3061 WriteLiteral(" <script");
3062 BeginWriteAttribute("src", " src=\"", 248833, "\"", 248884, 2);
3063 WriteAttributeValue("", 248839, "https://app.weply.chat/widget/", 248839, 30, true);
3064 WriteAttributeValue("", 248869, settings_Weply, 248869, 15, false);
3065 EndWriteAttribute();
3066 WriteLiteral(" async></script>\r\n");
3067 }
3068 WriteLiteral("\r\n</body>\r\n</html>\r\n\r\n");
3069 }
3070 #pragma warning restore 1998
3071
3072 void RenderErhvervsTypeCheckboxes(string productGroupFilter)
3073 {
3074 WriteLiteral(@" <div class=""col-xs-6 col-md-4"">
3075 <div class=""checkbox"">
3076 <label>
3077 <input type=""checkbox"" name=""propertytype"" value=""bolig/erhverv, kombineret erhverv og bolig, byejendom (kontor, butik, beboelse)"" />
3078 <span>Bolig/erhverv</span>
3079 </label>
3080 </div>
3081 <div class=""checkbox"">
3082 <label>
3083 <input type=""checkbox"" name=""propertytype"" value=""erhvervsgrund"" />
3084 <span>Erhvervsgrund</span>
3085 </label>
3086 </div>
3087 <div class=""checkbox"">
3088 <label>
3089 <input type=""checkbox"" name=""propertytype"" value=""boligudlejning"" />
3090 <span>Boligudlejningsejendom</span>
3091 </label>
3092 </div>
3093 <div class=""checkbox"">
3094 <label>
3095 <input type=""checkbox"" name=""propertytype"" value=""kontor, klinik, kontorhotel, showroom, under");
3096 WriteLiteral(@"visningslokaler"" />
3097 <span>Kontor</span>
3098 </label>
3099 </div>
3100 </div>
3101 <div class=""col-xs-6 col-md-4"">
3102 <div class=""checkbox"">
3103 <label>
3104 <input type=""checkbox"" name=""propertytype"" value=""butik / detail, butik / detailhandel"" />
3105 <span>Butik/detailhandel</span>
3106 </label>
3107 </div>
3108 <div class=""checkbox"">
3109 <label>
3110 <input type=""checkbox"" name=""propertytype"" value=""industri / logistik, håndværk, industri, kontor / lager, logistik"" />
3111 <span>Produktion/lager</span>
3112 </label>
3113 </div>
3114 <div class=""checkbox"">
3115 <label>
3116 <input type=""checkbox"" name=""propertytype"" value=""hotel - kursusejendom, restaurant"" />
3117 <span>Hotel og restaurant</span>
3118 </label>
3119 </div>
3120 <div c");
3121 WriteLiteral(@"lass=""checkbox"">
3122 <label>
3123 <input type=""checkbox"" name=""propertytype"" value=""projekt ejendom"" />
3124 <span>Projektejendom</span>
3125 </label>
3126 </div>
3127 </div>
3128 <div class=""col-xs-6 col-md-4"">
3129 <div class=""checkbox"">
3130 <label>
3131 <input type=""checkbox"" name=""propertytype"" value=""andet"" />
3132 <span>Andet</span>
3133 </label>
3134 </div>
3135 </div>
3136 ");
3137 WriteLiteral(" <input type=\"hidden\" name=\"propertycategory\" value=\"erhverv, udlejning\" />\r\n <input type=\"hidden\" name=\"filtrering\"");
3138 BeginWriteAttribute("value", " value=\"", 3445, "\"", 3472, 1);
3139 WriteAttributeValue("", 3453, productGroupFilter, 3453, 19, false);
3140 EndWriteAttribute();
3141 WriteLiteral(" />\r\n");
3142 }
3143 void RenderBoligtypeCheckboxes()
3144 {
3145 WriteLiteral(@" <div class=""col-6 col-md-4"">
3146 <div class=""checkbox"">
3147 <label>
3148 <input type=""checkbox"" name=""propertytype"" value=""villa"" />
3149 <span>Villa</span>
3150 </label>
3151 </div>
3152 <div class=""checkbox"">
3153 <label>
3154 <input type=""checkbox"" name=""propertytype"" value=""rækkehus"" />
3155 <span>Rækkehus</span>
3156 </label>
3157 </div>
3158 <div class=""checkbox"">
3159 <label>
3160 <input type=""checkbox"" name=""propertytype"" value=""villalejlighed"" />
3161 <span>Villalejlighed</span>
3162 </label>
3163 </div>
3164 <div class=""checkbox"">
3165 <label>
3166 <input type=""checkbox"" name=""propertytype"" value=""andelsbolig"" />
3167 <span>Andelsbolig</span>
3168 </label>
3169 </div>
3170 </div>
3171 <div class=""co");
3172 WriteLiteral(@"l-6 col-md-4"">
3173 <div class=""checkbox"">
3174 <label>
3175 <input type=""checkbox"" name=""propertytype"" value=""fritidshus, fritidsbolig"" />
3176 <span>Fritidsbolig</span>
3177 </label>
3178 </div>
3179 <div class=""checkbox"">
3180 <label>
3181 <input type=""checkbox"" name=""propertytype"" value=""ejerlejlighed"" class=""specialOption"" data-disable-slider=""#grundareal"" data-disable-slider-ranges=""#grundarealmin,#grundarealmax"" />
3182 <span>Ejerlejlighed</span>
3183 </label>
3184 </div>
3185 <div class=""checkbox"">
3186 <label>
3187 <input type=""checkbox"" name=""propertytype"" value=""helårsgrund"" class=""specialOption"" data-disable-slider=""#boligareal,#roomsslider"" data-disable-slider-ranges=""#boligarealmin,#boligarealmax,#roomsmin"" />
3188 <span>Helårsgrund</span>
3189 </label>
3190 </div>
3191 <div ");
3192 WriteLiteral(@"class=""checkbox"">
3193 <label>
3194 <input type=""checkbox"" name=""propertytype"" value=""fritidsgrund"" class=""specialOption"" data-disable-slider=""#boligareal,#roomsslider"" data-disable-slider-ranges=""#boligarealmin,#boligarealmax,#roomsmin"" />
3195 <span>Fritidsgrund</span>
3196 </label>
3197 </div>
3198 </div>
3199 <div class=""col-6 col-md-4"">
3200 <div class=""checkbox"">
3201 <label>
3202 <input type=""checkbox"" name=""propertytype"" value=""landejendom, lystejendom"" class=""specialOption"" data-disable-checkbox=""true"" />
3203 <span>Landejendom</span>
3204 </label>
3205 </div>
3206 <div class=""checkbox"">
3207 <label>
3208 <input type=""checkbox"" name=""propertytype"" value=""erhverv"" class=""specialOption"" data-disable-checkbox=""true"" data-disable-slider=""#roomsslider"" data-disable-slider-ranges=""#roomsmin"" />
3209 <span>Erhverv<");
3210 WriteLiteral("/span>\r\n </label>\r\n </div>\r\n </div>\r\n");
3211 }
3212
3213 void RenderChecked(string queryString)
3214 {
3215 if (Dynamicweb.Context.Current.Request.QueryString["propertytype"] == queryString)
3216 {
3217 Write("checked");
3218
3219 }
3220 }
3221
3222 void RenderBoligtypeCheckboxesDropdown()
3223 {
3224 Dictionary<string, string> propertyTypes = new Dictionary<string, string>(){
3225 { "Villa", "villa" }, { "Rækkehus", "rækkehus" }, { "Villalejlighed", "villalejlighed" },
3226 { "Andelsbolig", "andelsbolig" }
3227 };
3228 foreach (KeyValuePair<string, string> type in propertyTypes)
3229 {
3230 bool ischecked = false;
3231 string[] propertytypeSplit = new string[0];
3232 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["propertytype"]))
3233 {
3234 propertytypeSplit = Dynamicweb.Context.Current.Request.QueryString["propertytype"].Split(',');
3235 }
3236 foreach (var propertytypeParams in propertytypeSplit)
3237 {
3238 if (propertytypeParams == type.Value)
3239 {
3240 ischecked = true;
3241 }
3242 }
3243 WriteLiteral(" <li>\r\n <label class=\"checkbox-container d-flex\">\r\n ");
3244 Write(Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + ""));
3245 WriteLiteral("\r\n <input type=\"checkbox\" name=\"propertytype\"");
3246 BeginWriteAttribute("value", " value=\"", 8068, "\"", 8087, 1);
3247 WriteAttributeValue("", 8076, type.Value, 8076, 11, false);
3248 EndWriteAttribute();
3249 WriteLiteral(" class=\"js-input-check datavalue js-datavalue js-count\" data-val=\"");
3250 Write(type.Key);
3251 WriteLiteral("\" onchange=\"submitFilter()\"");
3252 BeginWriteAttribute("checked", " checked=\"", 8190, "\"", 8210, 1);
3253 WriteAttributeValue("", 8200, ischecked, 8200, 10, false);
3254 EndWriteAttribute();
3255 WriteLiteral(" />\r\n <span class=\"checkmark grey\"></span>\r\n </label>\r\n </li>\r\n");
3256 }
3257
3258 Dictionary<string, string> propertyTypes2 = new Dictionary<string, string>(){
3259 { "Fritidsbolig", "fritidshus, fritidsbolig" }, { "Ejerlejlighed", "ejerlejlighed" }, { "Helårsgrund", "helårsgrund" },
3260 { "Fritidsgrund", "fritidsgrund" }, { "Landejendom", "landejendom, lystejendom" }
3261 };
3262 foreach (KeyValuePair<string, string> type in propertyTypes2)
3263 {
3264 bool ischecked = false;
3265 string[] propertytypeSplit2 = new string[0];
3266 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["propertytype"]))
3267 {
3268 propertytypeSplit2 = Dynamicweb.Context.Current.Request.QueryString["propertytype"].Split(',');
3269 }
3270 foreach (var propertytypeParams in propertytypeSplit2)
3271 {
3272 if (propertytypeParams == type.Value)
3273 {
3274 ischecked = true;
3275 }
3276 }
3277 WriteLiteral(" <li>\r\n <label class=\"checkbox-container d-flex\">\r\n ");
3278 Write(Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + ""));
3279 WriteLiteral("\r\n");
3280 if (type.Value == "ejerlejlighed")
3281 {
3282 WriteLiteral(" <input type=\"checkbox\" name=\"propertytype\"");
3283 BeginWriteAttribute("value", " value=\"", 9634, "\"", 9653, 1);
3284 WriteAttributeValue("", 9642, type.Value, 9642, 11, false);
3285 EndWriteAttribute();
3286 WriteLiteral(" class=\"js-input-check datavalue\" data-disable-slider=\"#grundareal\" data-disable-slider-ranges=\"#grundarealmin,#grundarealmax\" data-val=\"");
3287 Write(type.Key);
3288 WriteLiteral("\" onchange=\"submitFilter()\"");
3289 BeginWriteAttribute("checked", " checked=\"", 9827, "\"", 9847, 1);
3290 WriteAttributeValue("", 9837, ischecked, 9837, 10, false);
3291 EndWriteAttribute();
3292 WriteLiteral(" />\r\n");
3293 }
3294 else if (type.Value == "helårsgrund")
3295 {
3296 WriteLiteral(" <input type=\"checkbox\" name=\"propertytype\"");
3297 BeginWriteAttribute("value", " value=\"", 10024, "\"", 10043, 1);
3298 WriteAttributeValue("", 10032, type.Value, 10032, 11, false);
3299 EndWriteAttribute();
3300 WriteLiteral(" class=\"js-input-check datavalue\" data-disable-slider=\"#boligareal,#roomsslider\" data-disable-slider-ranges=\"#boligarealmin,#boligarealmax,#roomsmin\" data-val=\"");
3301 Write(type.Key);
3302 WriteLiteral("\" onchange=\"submitFilter()\"");
3303 BeginWriteAttribute("checked", " checked=\"", 10240, "\"", 10260, 1);
3304 WriteAttributeValue("", 10250, ischecked, 10250, 10, false);
3305 EndWriteAttribute();
3306 WriteLiteral(" />\r\n");
3307 }
3308 else if (type.Value == "fritidsgrund")
3309 {
3310 WriteLiteral(" <input type=\"checkbox\" name=\"propertytype\"");
3311 BeginWriteAttribute("value", " value=\"", 10438, "\"", 10457, 1);
3312 WriteAttributeValue("", 10446, type.Value, 10446, 11, false);
3313 EndWriteAttribute();
3314 WriteLiteral(" class=\"js-input-check datavalue\" data-disable-slider=\"#boligareal,#roomsslider\" data-disable-slider-ranges=\"#boligarealmin,#boligarealmax,#roomsmin\" data-val=\"");
3315 Write(type.Key);
3316 WriteLiteral("\" onchange=\"submitFilter()\"");
3317 BeginWriteAttribute("checked", " checked=\"", 10654, "\"", 10674, 1);
3318 WriteAttributeValue("", 10664, ischecked, 10664, 10, false);
3319 EndWriteAttribute();
3320 WriteLiteral(" />\r\n");
3321 }
3322 else
3323 {
3324 WriteLiteral(" <input type=\"checkbox\" name=\"propertytype\"");
3325 BeginWriteAttribute("value", " value=\"", 10818, "\"", 10837, 1);
3326 WriteAttributeValue("", 10826, type.Value, 10826, 11, false);
3327 EndWriteAttribute();
3328 WriteLiteral(" class=\"js-input-check datavalue\" data-val=\"");
3329 Write(type.Key);
3330 WriteLiteral("\" onchange=\"submitFilter()\"");
3331 BeginWriteAttribute("checked", " checked=\"", 10918, "\"", 10938, 1);
3332 WriteAttributeValue("", 10928, ischecked, 10928, 10, false);
3333 EndWriteAttribute();
3334 WriteLiteral(" />\r\n");
3335 }
3336 WriteLiteral(" <span class=\"checkmark grey\"></span>\r\n </label>\r\n </li>\r\n");
3337 }
3338 }
3339
3340 void RenderBoligTypeErhverv(bool submitOnChange = false, bool frontpage = false)
3341 {
3342 Dictionary<string, string> erhverType = new Dictionary<string, string>(){
3343 { "Kontor", "OwnUseOffices" }, { "Lager + Produktion", "OwnUseStoresAndProductions" }, { "Detailhandel", "OwnUseRetailAndStores" },
3344 { "Grunde", "OwnUseParcel" }, { "Andre typer", "OwnUseOtherTypes" }, { "Hotel + Restaurant", "OwnUseHotelsAndRestaurants" }
3345 };
3346 var submitonchange = "";
3347 if (submitOnChange)
3348 {
3349 submitonchange = "onchange='submitFilter()'";
3350 }
3351
3352 foreach (KeyValuePair<string, string> type in erhverType)
3353 {
3354 string ischecked = "";
3355 string[] olineParamsSplit = new string[0];
3356 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["olinecategory"]))
3357 {
3358 olineParamsSplit = Dynamicweb.Context.Current.Request.QueryString["olinecategory"].Split(',');
3359 }
3360 foreach (var olineParams in olineParamsSplit)
3361 {
3362 if (olineParams == type.Value)
3363 {
3364 ischecked = "checked";
3365 }
3366 }
3367
3368 WriteLiteral(" <li>\r\n <label class=\"checkbox-container d-flex\">\r\n ");
3369 Write(Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + ""));
3370 WriteLiteral("\r\n <input type=\"checkbox\" name=\"olinecategory\"");
3371 BeginWriteAttribute("value", " value=\"", 12582, "\"", 12601, 1);
3372 WriteAttributeValue("", 12590, type.Value, 12590, 11, false);
3373 EndWriteAttribute();
3374 WriteLiteral(" class=\"js-input-check datavalue\" data-val=\"");
3375 Write(type.Key);
3376 WriteLiteral("\" ");
3377 Write(submitonchange);
3378 WriteLiteral(" ");
3379 Write(ischecked);
3380 WriteLiteral(" />\r\n <span class=\"checkmark grey\"></span>\r\n </label>\r\n </li>\r\n");
3381 }
3382 }
3383
3384 void RenderBoligTypeErhvervInvest(bool submitOnChange = false)
3385 {
3386 Dictionary<string, string> erhverType = new Dictionary<string, string>(){
3387 { "Kontor", "Kontor" }, { "Lager + Produktion", "InvestmentStoresAndProductions" }, { "Boligudlejning", "InvestmentHousingRental" },
3388 { "Detailhandel", "InvestmentRetailAndStores" }, { "Grunde", "InvestmentParcel" }, { "Hotel + Restaurant", "InvestmentHotelsAndRestaurants" }, { "Andre typer", "InvestmentOtherTypes" }
3389 };
3390
3391 foreach (KeyValuePair<string, string> type in erhverType)
3392 {
3393 bool ischecked = false;
3394 string[] olineParamsSplit = new string[0];
3395 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["olinecategory"]))
3396 {
3397 olineParamsSplit = Dynamicweb.Context.Current.Request.QueryString["olinecategory"].Split(',');
3398 }
3399 foreach (var olineParams in olineParamsSplit)
3400 {
3401 if (olineParams == type.Value)
3402 {
3403 ischecked = true;
3404 }
3405 }
3406
3407 WriteLiteral(" <li>\r\n <label class=\"checkbox-container\">\r\n ");
3408 Write(Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + ""));
3409 WriteLiteral("\r\n <input type=\"checkbox\" name=\"olinecategory\"");
3410 BeginWriteAttribute("value", " value=\"", 14192, "\"", 14211, 1);
3411 WriteAttributeValue("", 14200, type.Value, 14200, 11, false);
3412 EndWriteAttribute();
3413 WriteLiteral(" class=\"js-input-check datavalue\" data-val=\"");
3414 Write(type.Key);
3415 WriteLiteral("\" onchange=\"submitFilter()\"");
3416 BeginWriteAttribute("checked", " checked=\"", 14292, "\"", 14312, 1);
3417 WriteAttributeValue("", 14302, ischecked, 14302, 10, false);
3418 EndWriteAttribute();
3419 WriteLiteral(" />\r\n <span class=\"checkmark grey\"></span>\r\n </label>\r\n </li>\r\n");
3420 }
3421 }
3422 int GetWebsiteSettingsPageId(string pageSysName)
3423 {
3424 int sideId = 0;
3425
3426 var pw = Dynamicweb.Frontend.PageView.Current();
3427
3428 string settingsItemId = "1";
3429
3430 if ((pw.Area.Item.ContainsKey("Type") && pw.Area.Item["Type"].ToString() == "bone") || Dynamicweb.Context.Current.Request.QueryString["bone"] == "true")
3431 {
3432 settingsItemId = "2";
3433 }
3434
3435 var settingsItem = ItemManager.Storage.GetById("Delte_Egenskaber", settingsItemId);
3436
3437 if (settingsItem == null || !settingsItem.ContainsKey(pageSysName))
3438 {
3439 return sideId;
3440 }
3441
3442 string boligsideLink = settingsItem[pageSysName] as String;
3443 string linkPrefix = "Default.aspx?ID=";
3444
3445 if (!String.IsNullOrEmpty(boligsideLink) && boligsideLink.ToLower().StartsWith(linkPrefix.ToLower()))
3446 {
3447 Int32.TryParse(boligsideLink.Substring(linkPrefix.Length), out sideId);
3448 }
3449
3450 return sideId;
3451 }
3452
3453 int GetPageSettingsPageId(string pageSysName)
3454 {
3455 int sideId = 0;
3456
3457 var pw = Dynamicweb.Frontend.PageView.Current();
3458
3459 if (pw.Page == null || pw.Page.PropertyItem == null || !pw.Page.PropertyItem.ContainsKey(pageSysName))
3460 {
3461 return sideId;
3462 }
3463
3464 string boligsideLink = pw.Page.PropertyItem[pageSysName] as String;
3465 string linkPrefix = "Default.aspx?ID=";
3466
3467 if (!String.IsNullOrEmpty(boligsideLink) && boligsideLink.ToLower().StartsWith(linkPrefix.ToLower()))
3468 {
3469 Int32.TryParse(boligsideLink.Substring(linkPrefix.Length), out sideId);
3470 }
3471
3472 return sideId;
3473 }
3474 void RenderMobileSelectBox(string name, int max, int step, string className, string inputname)
3475 {
3476 WriteLiteral(" <select");
3477 BeginWriteAttribute("class", " class=\"", 16255, "\"", 16310, 5);
3478 WriteAttributeValue("", 16263, "form-control", 16263, 12, true);
3479 WriteAttributeValue(" ", 16275, "d-block", 16276, 8, true);
3480 WriteAttributeValue(" ", 16283, "d-lg-none", 16284, 10, true);
3481 WriteAttributeValue(" ", 16293, "mb-10", 16294, 6, true);
3482 WriteAttributeValue(" ", 16299, className, 16300, 10, false);
3483 EndWriteAttribute();
3484 WriteLiteral(" onchange=\"submitFilter()\"");
3485 BeginWriteAttribute("name", " name=\"", 16337, "\"", 16354, 1);
3486 WriteAttributeValue("", 16344, inputname, 16344, 10, false);
3487 EndWriteAttribute();
3488 WriteLiteral(">\r\n <option selected=\"true\" disabled=\"disabled\">");
3489 Write(Translate("Smartpage:Search.Placeholder." + name + "", "" + name + ""));
3490 WriteLiteral("</option>\r\n\r\n");
3491 for (var i = 0; i <= max; i += step)
3492 {
3493 var selected = string.Empty;
3494 var current = string.Empty;
3495 if (i == max)
3496 {
3497 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString[inputname]) && Dynamicweb.Context.Current.Request.QueryString[inputname] == Convert.ToString(i))
3498 {
3499 WriteLiteral(" <option");
3500 BeginWriteAttribute("value", " value=\"", 16950, "\"", 16960, 1);
3501 WriteAttributeValue("", 16958, i, 16958, 2, false);
3502 EndWriteAttribute();
3503 WriteLiteral(" data-value=\'");
3504 Write(Convert.ToInt32(i).ToString("N0"));
3505 WriteLiteral("\' selected=\"selected\">");
3506 Write(Convert.ToInt32(i).ToString("N0"));
3507 WriteLiteral("+</option>\r\n");
3508 }
3509 else
3510 {
3511 WriteLiteral(" <option");
3512 BeginWriteAttribute("value", " value=\"", 17179, "\"", 17189, 1);
3513 WriteAttributeValue("", 17187, i, 17187, 2, false);
3514 EndWriteAttribute();
3515 WriteLiteral(" data-value=\'");
3516 Write(Convert.ToInt32(i).ToString("N0"));
3517 WriteLiteral("\'>");
3518 Write(Convert.ToInt32(i).ToString("N0"));
3519 WriteLiteral("+</option>\r\n");
3520 }
3521 }
3522 else
3523 {
3524 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString[inputname]) && Dynamicweb.Context.Current.Request.QueryString[inputname] == Convert.ToString(i))
3525 {
3526 WriteLiteral(" <option");
3527 BeginWriteAttribute("value", " value=\"", 17613, "\"", 17623, 1);
3528 WriteAttributeValue("", 17621, i, 17621, 2, false);
3529 EndWriteAttribute();
3530 WriteLiteral(" data-value=\'");
3531 Write(Convert.ToInt32(i).ToString("N0"));
3532 WriteLiteral("\' selected=\"selected\">");
3533 Write(Convert.ToInt32(i).ToString("N0"));
3534 WriteLiteral("</option>\r\n");
3535 }
3536 else
3537 {
3538 WriteLiteral(" <option");
3539 BeginWriteAttribute("value", " value=\"", 17841, "\"", 17851, 1);
3540 WriteAttributeValue("", 17849, i, 17849, 2, false);
3541 EndWriteAttribute();
3542 WriteLiteral(" data-value=\'");
3543 Write(Convert.ToInt32(i).ToString("N0"));
3544 WriteLiteral("\'>");
3545 Write(Convert.ToInt32(i).ToString("N0"));
3546 WriteLiteral("</option>\r\n");
3547 }
3548 }
3549 }
3550 WriteLiteral(" </select>\r\n");
3551 }
3552
3553 void RenderTopFilter(string parameter)
3554 {
3555 if (parameter == "pricemin" || parameter == "pricemax")
3556 {
3557 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["pricemin"]))
3558 {
3559 if (parameter == "pricemin")
3560 {
3561 Write("<div class='search-terms' id='priceFilter'>");
3562 Write("Pris ");
3563 Write(Dynamicweb.Context.Current.Request[parameter]);
3564
3565 }
3566
3567 else
3568 {
3569 Write(" - ");
3570 Write(Dynamicweb.Context.Current.Request[parameter]);
3571 Write(" kr.");
3572 WriteLiteral(" <i class=\"fa fa-times ml-2 pointer\" onclick=\"removeParams(this)\" data-tag=\"pricemin,pricemax\"></i>\r\n");
3573 Write("</div>");
3574
3575 }
3576 }
3577 }
3578
3579 else if (parameter == "subsidymin" || parameter == "subsidymax")
3580 {
3581 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["subsidymin"]))
3582 {
3583 if (parameter == "subsidymin")
3584 {
3585 Write("<div class='search-terms' id='subsidyFilter'>");
3586 Write("Årlig leje ");
3587 Write(Dynamicweb.Context.Current.Request[parameter]);
3588
3589 }
3590
3591 else
3592 {
3593 Write(" - ");
3594 Write(Dynamicweb.Context.Current.Request[parameter]);
3595 Write(" kr.");
3596 WriteLiteral(" <i class=\"fa fa-times ml-2 pointer\" onclick=\"removeParams(this)\" data-tag=\"subsidymin,subsidymax\"></i>\r\n");
3597 Write("</div>");
3598
3599 }
3600 }
3601 }
3602 else if (parameter == "etagearealmin" || parameter == "etagearealmax")
3603 {
3604 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["etagearealmin"]))
3605 {
3606 if (parameter == "etagearealmin")
3607 {
3608 Write("<div class='search-terms' id='etagearealFilter'>");
3609 Write("Etageareal ");
3610 Write(Dynamicweb.Context.Current.Request[parameter]);
3611
3612 }
3613
3614 else
3615 {
3616 Write(" - ");
3617 Write(Dynamicweb.Context.Current.Request[parameter]);
3618 Write(" kvm.");
3619 WriteLiteral(" <i class=\"fa fa-times ml-2 pointer\" onclick=\"removeParams(this)\" data-tag=\"etagearealmin,etagearealmax\"></i>\r\n");
3620 Write("</div>");
3621
3622 }
3623 }
3624 }
3625
3626 else if (parameter == "grundarealmin" || parameter == "grundarealmax")
3627 {
3628 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["grundarealmin"]))
3629 {
3630 if (parameter == "grundarealmin")
3631 {
3632 Write("<div class='search-terms' id='grundarealFilter'>");
3633 Write("Grundareal ");
3634 Write(Dynamicweb.Context.Current.Request[parameter]);
3635
3636 }
3637
3638 else
3639 {
3640 Write(" - ");
3641 Write(Dynamicweb.Context.Current.Request[parameter]);
3642 Write(" kvm.");
3643 WriteLiteral(" <i class=\"fa fa-times ml-2 pointer\" onclick=\"removeParams(this)\" data-tag=\"grundarealmin,grundarealmax\"></i>\r\n");
3644 Write("</div>");
3645
3646 }
3647 }
3648 }
3649
3650 else if (parameter == "subsidykvmmin" || parameter == "subsidykvmmax")
3651 {
3652 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["subsidykvmmin"]))
3653 {
3654 if (parameter == "subsidykvmmin")
3655 {
3656 Write("<div class='search-terms' id='subsidykvmFilter'>");
3657 Write("Årlig leje kvm ");
3658 Write(Dynamicweb.Context.Current.Request[parameter]);
3659
3660 }
3661
3662 else
3663 {
3664 Write(" - ");
3665 Write(Dynamicweb.Context.Current.Request[parameter]);
3666 Write(" kr.");
3667 WriteLiteral(" <i class=\"fa fa-times ml-2 pointer\" onclick=\"removeParams(this)\" data-tag=\"subsidykvmmin,subsidykvmmax\"></i>\r\n");
3668 Write("</div>");
3669
3670 }
3671 }
3672 }
3673
3674 else if (parameter == "olinecategory")
3675 {
3676
3677 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["olinecategory"]))
3678 {
3679 Dictionary<string, string> erhverType = new Dictionary<string, string>(){
3680 {"OwnUseOffices", "Kontor" }, { "OwnUseStoresAndProductions","Lager + Produktion" }, { "OwnUseRetailAndStores","Detailhandel" },
3681 { "OwnUseParcel", "Grunde" }, { "OwnUseHotelsAndRestaurants", "Hotel + Restaurant" }, { "OwnUseOtherTypes", "Andre typer"},
3682 { "Kontor", "Kontor" }, { "InvestmentStoresAndProductions", "Lager + Produktion" }, { "InvestmentHousingRental", "Boligudlejning" },
3683 { "InvestmentRetailAndStores", "Detailhandel" }, { "InvestmentParcel", "Grunde" }, { "InvestmentHotelsAndRestaurants", "Hotel + Restaurant" }, { "InvestmentOtherTypes", "Andre typer" }
3684 };
3685
3686
3687 foreach (var er in erhverType)
3688 {
3689 if (Dynamicweb.Context.Current.Request[parameter].Contains(er.Key))
3690 {
3691 WriteLiteral(" <div class=\"search-terms\"");
3692 BeginWriteAttribute("id", " id=\"", 23021, "\"", 23036, 1);
3693 WriteAttributeValue("", 23026, parameter, 23026, 10, false);
3694 EndWriteAttribute();
3695 WriteLiteral(">\r\n ");
3696 Write(er.Value);
3697 WriteLiteral(" <i class=\"fa fa-times ml-2 pointer\" onclick=\"removeParams(this)\" data-tag=\"");
3698 Write(parameter);
3699 WriteLiteral("\" data-val=\"");
3700 Write(er.Key);
3701 WriteLiteral("\"></i>\r\n </div>\r\n");
3702 }
3703 }
3704 }
3705 }
3706 else if (parameter == "search")
3707 {
3708 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["search"]))
3709 {
3710 WriteLiteral(" <div class=\"search-terms\"");
3711 BeginWriteAttribute("id", " id=\"", 23484, "\"", 23499, 1);
3712 WriteAttributeValue("", 23489, parameter, 23489, 10, false);
3713 EndWriteAttribute();
3714 WriteLiteral(">\r\n ");
3715 Write(Dynamicweb.Context.Current.Request[parameter]);
3716 WriteLiteral(" <i class=\"fa fa-times ml-2 pointer\" onclick=\"removeParams(this)\" data-tag=\"");
3717 Write(parameter);
3718 WriteLiteral("\"></i>\r\n </div>\r\n");
3719 }
3720 }
3721 else
3722 {
3723 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request[parameter]))
3724 {
3725 Dictionary<string, string>
3726 ubudsform = new Dictionary<string, string>
3727 (){
3728 {"salg", "Salg" }, { "leje","Leje" }
3729 };
3730
3731 foreach (var er in ubudsform)
3732 {
3733 if (Dynamicweb.Context.Current.Request[parameter].Contains(er.Key))
3734 {
3735 WriteLiteral(" <div class=\"search-terms\"");
3736 BeginWriteAttribute("id", " id=\"", 24648, "\"", 24663, 1);
3737 WriteAttributeValue("", 24653, parameter, 24653, 10, false);
3738 EndWriteAttribute();
3739 WriteLiteral(">\r\n ");
3740 Write(er.Value);
3741 WriteLiteral(" <i class=\"fa fa-times ml-2 pointer\" onclick=\"removeParams(this)\" data-tag=\"");
3742 Write(parameter);
3743 WriteLiteral("\" data-val=\"");
3744 Write(er.Key);
3745 WriteLiteral("\"></i>\r\n </div>\r\n");
3746 }
3747 }
3748
3749
3750 }
3751 }
3752 }
3753
3754 void RenderSelectValue(string dropdownname, string dropdownvalue, string queryString)
3755 {
3756 var selected = "";
3757 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString[queryString]) && Dynamicweb.Context.Current.Request.QueryString[queryString] == dropdownvalue)
3758 {
3759 selected = "selected";
3760 }
3761
3762 var current = string.Format("<option value='" + dropdownvalue + "'>" + dropdownname + "</option>", selected);
3763
3764 Write(current);
3765
3766 }
3767
3768 void RenderSearchForHousing(int searchPageId, string querySearch, string querySearchNameAttr, string queryZipCodeFrom, string queryZipCodeTo, string template, Item SettingsItem, string cssClasses = "")
3769 {
3770 WriteLiteral(" <div");
3771 BeginWriteAttribute("class", " class=\"", 25667, "\"", 25713, 3);
3772 WriteAttributeValue("", 25675, "main-search-form", 25675, 16, true);
3773 WriteAttributeValue(" ", 25691, "frontpage", 25692, 10, true);
3774 WriteAttributeValue(" ", 25701, cssClasses, 25702, 11, false);
3775 EndWriteAttribute();
3776 WriteLiteral(">\r\n <div class=\"dropdown-overlay\"></div>\r\n <div class=\"row mb-3 align-items-center\">\r\n <div class=\"col-xs-12 col-md-3 border-right\">\r\n <h3>");
3777 Write(Translate("Smartpage:Search.Søg bolig", "Søg bolig"));
3778 WriteLiteral("</h3>\r\n </div>\r\n <div class=\"col-xs-12 col-md-9 home-count d-none d-md-block\">\r\n <span class=\"search-count\" id=\"searchCounter\">0</span> <span>");
3779 Write(Translate("Smartpage:Search.BoligerTilSalg", "Boliger til salg"));
3780 WriteLiteral("</span>\r\n </div>\r\n </div>\r\n\r\n <form id=\"main-search-frontpage\" class=\"searchbar-wrapper\" action=\"/Default.aspx\" method=\"GET\">\r\n <input type=\"hidden\" name=\"ID\"");
3781 BeginWriteAttribute("value", " value=\'", 26428, "\'", 26449, 1);
3782 WriteAttributeValue("", 26436, searchPageId, 26436, 13, false);
3783 EndWriteAttribute();
3784 WriteLiteral(@" id=""searchPageId-frontpage"" disabled=""disabled"" />
3785 <div class=""row form-wrapper no-gutters"">
3786
3787 <div class=""col-xs-12 col-md-5 col-searchbar"">
3788 <div class=""searchbar"">
3789 <input type=""text""");
3790 BeginWriteAttribute("name", " name=\"", 26727, "\"", 26754, 1);
3791 WriteAttributeValue("", 26734, querySearchNameAttr, 26734, 20, false);
3792 EndWriteAttribute();
3793 WriteLiteral(" id=\"searchfield-frontpage\" class=\"search-input\" placeholder=\"Postnummer, by, vej eller sagsnummer\" tabindex=\"1\"");
3794 BeginWriteAttribute("value", " value=\"", 26867, "\"", 26945, 1);
3795 WriteAttributeValue("", 26875, Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(querySearch), 26875, 70, false);
3796 EndWriteAttribute();
3797 WriteLiteral(" />\r\n <input type=\"hidden\" id=\"zipcodefrom-frontpage\" name=\"zipcodefrom\"");
3798 BeginWriteAttribute("value", " value=\"", 27045, "\"", 27128, 1);
3799 WriteAttributeValue("", 27053, Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(queryZipCodeFrom), 27053, 75, false);
3800 EndWriteAttribute();
3801 WriteLiteral(" />\r\n <input type=\"hidden\" id=\"zipcodeto-frontpage\" name=\"zipcodeto\"");
3802 BeginWriteAttribute("value", " value=\"", 27224, "\"", 27305, 1);
3803 WriteAttributeValue("", 27232, Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(queryZipCodeTo), 27232, 73, false);
3804 EndWriteAttribute();
3805 WriteLiteral(@" />
3806 </div>
3807 </div>
3808 <div class=""col-xs-12 col-md-5"">
3809 <div class=""row no-gutters"">
3810 <div class=""col-xs-12 col-md-6 input-col"">
3811 <div class=""dropdown w-overlay"">
3812 <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"">
3813 ");
3814 Write(Translate("Smartpage:Search.Boligtype", "Boligtype"));
3815 WriteLiteral(@"
3816 </button>
3817 <div class=""dropdown-menu box-shadow bolig-dropdown-container"" aria-labelledby=""Boligtype"">
3818 <ul class=""bolig-dropdown list-unstyled"">
3819 ");
3820
3821 RenderBoligtypeCheckboxesDropdown();
3822 WriteLiteral(" </ul>\r\n <span class=\"border-fat\"></span>\r\n <button class=\"btn btn-primary js-close-dropdown\">");
3823 Write(Translate("Smartpage:Search.Anvend", "Anvend"));
3824 WriteLiteral(@"</button>
3825 </div>
3826
3827 </div>
3828
3829 </div>
3830 <div class=""col-xs-12 col-md-6 input-col"">
3831 <div class=""dropdown w-overlay"">
3832 <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"">
3833 ");
3834 Write(Translate("Smartpage:Search.Pris", "Pris"));
3835 WriteLiteral(@"
3836 </button>
3837 <div class=""dropdown-menu box-shadow dropdown-price"" aria-labelledby=""Pris"">
3838 <input type=""text"" class=""form-control mb-10 js-auto-thousand js-pricemin-frontpage-input""");
3839 BeginWriteAttribute("placeholder", " placeholder=\'", 29484, "\'", 29560, 1);
3840 WriteAttributeValue("", 29498, Translate("Smartpage:Search.Placeholder.MinPris","Min. pris"), 29498, 62, false);
3841 EndWriteAttribute();
3842 WriteLiteral(" />\r\n <select class=\"form-control js-pricemin-frontpage-select js-input-min-select mb-10\">\r\n <option selected=\"true\" disabled=\"disabled\">");
3843 Write(Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris"));
3844 WriteLiteral("</option>\r\n");
3845 for (var i = 0; i <= 10000000; i += 100000)
3846 {
3847 if (i == 10000000)
3848 {
3849 WriteLiteral(" <option");
3850 BeginWriteAttribute("value", " value=\"", 30169, "\"", 30179, 1);
3851 WriteAttributeValue("", 30177, i, 30177, 2, false);
3852 EndWriteAttribute();
3853 WriteLiteral(" data-value=\'");
3854 Write(Convert.ToInt32(i).ToString("N0"));
3855 WriteLiteral("+\'>");
3856 Write(Convert.ToInt32(i).ToString("N0"));
3857 WriteLiteral("+</option>\r\n");
3858 }
3859 else
3860 {
3861 WriteLiteral(" <option");
3862 BeginWriteAttribute("value", " value=\"", 30491, "\"", 30501, 1);
3863 WriteAttributeValue("", 30499, i, 30499, 2, false);
3864 EndWriteAttribute();
3865 WriteLiteral(" data-value=\'");
3866 Write(Convert.ToInt32(i).ToString("N0"));
3867 WriteLiteral("\'>");
3868 Write(Convert.ToInt32(i).ToString("N0"));
3869 WriteLiteral("</option>\r\n");
3870 }
3871 }
3872 WriteLiteral(@" </select>
3873 <input type=""hidden"" id=""pricemin-frontpage"" name=""pricemin"" />
3874
3875 <input type=""text"" class=""form-control js-auto-thousand js-pricemax-frontpage-input""");
3876 BeginWriteAttribute("placeholder", " placeholder=\'", 30976, "\'", 31052, 1);
3877 WriteAttributeValue("", 30990, Translate("Smartpage:Search.Placeholder.MaxPris","Max. pris"), 30990, 62, false);
3878 EndWriteAttribute();
3879 WriteLiteral(" />\r\n <select class=\"form-control js-pricemax-frontpage-select js-input-max-select\">\r\n <option selected=\"true\" disabled=\"disabled\">");
3880 Write(Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris"));
3881 WriteLiteral("</option>\r\n");
3882 for (var i = 0; i <= 10000000; i += 100000)
3883 {
3884 if (i == 10000000)
3885 {
3886 WriteLiteral(" <option");
3887 BeginWriteAttribute("value", " value=\"", 31655, "\"", 31665, 1);
3888 WriteAttributeValue("", 31663, i, 31663, 2, false);
3889 EndWriteAttribute();
3890 WriteLiteral(" data-value=\'");
3891 Write(Convert.ToInt32(i).ToString("N0"));
3892 WriteLiteral("+\'>");
3893 Write(Convert.ToInt32(i).ToString("N0"));
3894 WriteLiteral("+</option>\r\n");
3895 }
3896 else
3897 {
3898 WriteLiteral(" <option");
3899 BeginWriteAttribute("value", " value=\"", 31977, "\"", 31987, 1);
3900 WriteAttributeValue("", 31985, i, 31985, 2, false);
3901 EndWriteAttribute();
3902 WriteLiteral(" data-value=\'");
3903 Write(Convert.ToInt32(i).ToString("N0"));
3904 WriteLiteral("\'>");
3905 Write(Convert.ToInt32(i).ToString("N0"));
3906 WriteLiteral("</option>\r\n");
3907 }
3908 }
3909 WriteLiteral(" </select>\r\n <input type=\"hidden\" id=\"pricemax-frontpage\" name=\"pricemax\" />\r\n <button class=\"btn btn-primary js-close-dropdown mt-3\">");
3910 Write(Translate("Smartpage:Search.Anvend", "Anvend"));
3911 WriteLiteral(@"</button>
3912 </div>
3913 </div>
3914 </div>
3915 </div>
3916 </div>
3917 <div class=""col-xs-12 col-md-2 d-none d-md-block"">
3918 <button type=""submit"" class=""btn btn-block btn-search""><i class=""fa fa-search""></i> ");
3919 Write(Translate("Smartpage:Search.Søg", "Søg"));
3920 WriteLiteral(@"</button>
3921 </div>
3922 </div>
3923
3924 <div class=""row moresearch-btn no-gutters"">
3925 <div class=""col-sm-12"">
3926 <div class=""row align-items-center no-gutters"">
3927 <div class=""col-12 col-md-4"">
3928 <button class=""btn-blank js-search-collapse"" type=""button"" data-toggle=""collapse"" data-target=""#moreSearch"" aria-expanded=""false"" aria-controls=""moreSearch"">
3929 <span class=""moreSearch-text""><i class=""fas fa-plus open-close""></i> <span class=""not-open"">");
3930 Write(Translate("Smartpage:Search.Flere søgemuligheder", "Flere søgemuligheder"));
3931 WriteLiteral("</span> <span class=\"open\"><span class=\"js-filter-count\">0</span> ");
3932 Write(Translate("Smartpage:Search.FiltreAnvendt", "filtre anvendt"));
3933 WriteLiteral(" </span></span>\r\n </button>\r\n </div>\r\n <div class=\"col-6 col-md-2 mb-xs-4\">\r\n <a class=\"js-reset reset-btn\">");
3934 Write(Translate("Smartpage:Search.NulstilValg", "Nulstil valg"));
3935 WriteLiteral("</a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"collapse\" id=\"moreSearch\">\r\n <h4 class=\"mt-20\"><b>");
3936 Write(Translate("Smartpage:Search.Bolig", "Bolig"));
3937 WriteLiteral(@"</b></h4>
3938 <div class=""row align-items-end mb-30"">
3939 <div class=""col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"">
3940 <div class=""filter-container row"">
3941 <label class=""d-block col-12"">");
3942 Write(Translate("Smartpage:Search.Boligareal", "Boligareal"));
3943 WriteLiteral(@"</label>
3944 <div class=""col-6 pr-sm-0 pr-2"">
3945 <input type=""text"" name=""boligarealmin"" id=""boligarealmin-frontpage"" class=""form-control js-boligarealmin-frontpage-input js-count""");
3946 BeginWriteAttribute("placeholder", " placeholder=\'", 34853, "\'", 34925, 1);
3947 WriteAttributeValue("", 34867, Translate("Smartpage:Search.Placeholder.Minm2","Min. m2"), 34867, 58, false);
3948 EndWriteAttribute();
3949 WriteLiteral(" />\r\n <select class=\"form-control js-boligarealmin-frontpage-select js-count\">\r\n <option selected=\"true\" disabled=\"disabled\">");
3950 Write(Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2"));
3951 WriteLiteral("</option>\r\n");
3952 for (var i = 0; i <= 300; i += 10)
3953 {
3954 if (i == 300)
3955 {
3956 WriteLiteral(" <option");
3957 BeginWriteAttribute("value", " value=\"", 35532, "\"", 35542, 1);
3958 WriteAttributeValue("", 35540, i, 35540, 2, false);
3959 EndWriteAttribute();
3960 WriteLiteral(">");
3961 Write(i);
3962 WriteLiteral("+</option>\r\n");
3963 }
3964 else
3965 {
3966 WriteLiteral(" <option");
3967 BeginWriteAttribute("value", " value=\"", 35789, "\"", 35799, 1);
3968 WriteAttributeValue("", 35797, i, 35797, 2, false);
3969 EndWriteAttribute();
3970 WriteLiteral(">");
3971 Write(i);
3972 WriteLiteral("</option>\r\n");
3973 }
3974 }
3975 WriteLiteral(@" </select>
3976 </div>
3977 <div class=""col-6 pl-sm-0 pl-2"">
3978 <input type=""text"" name=""boligarealmax"" id=""boligarealmax-frontpage"" class=""form-control js-boligarealmax-frontpage-input js-count""");
3979 BeginWriteAttribute("placeholder", " placeholder=\'", 36272, "\'", 36344, 1);
3980 WriteAttributeValue("", 36286, Translate("Smartpage:Search.Placeholder.Maxm2","Max. m2"), 36286, 58, false);
3981 EndWriteAttribute();
3982 WriteLiteral(" />\r\n <select class=\"form-control js-boligarealmax-frontpage-select js-count\">\r\n <option selected=\"true\" disabled=\"disabled\">");
3983 Write(Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2"));
3984 WriteLiteral("</option>\r\n");
3985 for (var i = 0; i <= 300; i += 10)
3986 {
3987 if (i == 300)
3988 {
3989 WriteLiteral(" <option");
3990 BeginWriteAttribute("value", " value=\"", 36951, "\"", 36961, 1);
3991 WriteAttributeValue("", 36959, i, 36959, 2, false);
3992 EndWriteAttribute();
3993 WriteLiteral(">");
3994 Write(i);
3995 WriteLiteral("+</option>\r\n");
3996 }
3997 else
3998 {
3999 WriteLiteral(" <option");
4000 BeginWriteAttribute("value", " value=\"", 37208, "\"", 37218, 1);
4001 WriteAttributeValue("", 37216, i, 37216, 2, false);
4002 EndWriteAttribute();
4003 WriteLiteral(">");
4004 Write(i);
4005 WriteLiteral("</option>\r\n");
4006 }
4007 }
4008 WriteLiteral(@" </select>
4009 </div>
4010 </div>
4011 </div>
4012 <div class=""col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"">
4013 <div class=""filter-container row"">
4014 <label class=""d-block col-12"">");
4015 Write(Translate("Smartpage:Search.Grundareal", "Grundareal"));
4016 WriteLiteral(@"</label>
4017 <div class=""col-6 pr-sm-0 pr-2"">
4018 <input type=""text"" name=""grundarealmin"" id=""grundarealmin-frontpage"" class=""form-control js-grundarealmin-frontpage-input js-count""");
4019 BeginWriteAttribute("placeholder", " placeholder=\'", 38067, "\'", 38139, 1);
4020 WriteAttributeValue("", 38081, Translate("Smartpage:Search.Placeholder.Minm2","Min. m2"), 38081, 58, false);
4021 EndWriteAttribute();
4022 WriteLiteral(" />\r\n <select class=\"form-control js-grundarealmin-frontpage-select js-count\">\r\n <option selected=\"true\" disabled=\"disabled\">");
4023 Write(Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2"));
4024 WriteLiteral("</option>\r\n");
4025 for (var i = 0; i <= 10000; i += 100)
4026 {
4027 if (i == 10000)
4028 {
4029 WriteLiteral(" <option");
4030 BeginWriteAttribute("value", " value=\"", 38751, "\"", 38761, 1);
4031 WriteAttributeValue("", 38759, i, 38759, 2, false);
4032 EndWriteAttribute();
4033 WriteLiteral(">");
4034 Write(i);
4035 WriteLiteral("+</option>\r\n");
4036 }
4037 else
4038 {
4039 WriteLiteral(" <option");
4040 BeginWriteAttribute("value", " value=\"", 39008, "\"", 39018, 1);
4041 WriteAttributeValue("", 39016, i, 39016, 2, false);
4042 EndWriteAttribute();
4043 WriteLiteral(">");
4044 Write(i);
4045 WriteLiteral("</option>\r\n");
4046 }
4047 }
4048 WriteLiteral(@" </select>
4049 </div>
4050 <div class=""col-6 pl-sm-0 pl-2"">
4051 <input type=""text"" name=""grundarealmax"" id=""grundarealmax-frontpage"" class=""form-control js-grundarealmax-frontpage-input js-count""");
4052 BeginWriteAttribute("placeholder", " placeholder=\'", 39491, "\'", 39563, 1);
4053 WriteAttributeValue("", 39505, Translate("Smartpage:Search.Placeholder.Maxm2","Max. m2"), 39505, 58, false);
4054 EndWriteAttribute();
4055 WriteLiteral(" />\r\n <select class=\"form-control js-grundarealmax-frontpage-select js-count\">\r\n <option selected=\"true\" disabled=\"disabled\">");
4056 Write(Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2"));
4057 WriteLiteral("</option>\r\n");
4058 for (var i = 0; i <= 10000; i += 100)
4059 {
4060 if (i == 10000)
4061 {
4062 WriteLiteral(" <option");
4063 BeginWriteAttribute("value", " value=\"", 40175, "\"", 40185, 1);
4064 WriteAttributeValue("", 40183, i, 40183, 2, false);
4065 EndWriteAttribute();
4066 WriteLiteral(">");
4067 Write(i);
4068 WriteLiteral("+</option>\r\n");
4069 }
4070 else
4071 {
4072 WriteLiteral(" <option");
4073 BeginWriteAttribute("value", " value=\"", 40432, "\"", 40442, 1);
4074 WriteAttributeValue("", 40440, i, 40440, 2, false);
4075 EndWriteAttribute();
4076 WriteLiteral(">");
4077 Write(i);
4078 WriteLiteral("</option>\r\n");
4079 }
4080 }
4081 WriteLiteral(@" </select>
4082 </div>
4083 </div>
4084 </div>
4085 <div class=""col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"">
4086 <div class=""filter-container row"">
4087 <label class=""d-block col-12"">Antal rum</label>
4088
4089 <div class=""col-6 pr-sm-0 pr-2"">
4090 <select name=""roomsmin"" id=""roomsmin-frontpage"" class=""form-control reverse js-count"">
4091 <option selected=""true"" disabled=""disabled"">");
4092 Write(Translate("Smartpage:Search.Placeholder.Min", "Min"));
4093 WriteLiteral(@"</option>
4094 <option value=""1"">1</option>
4095 <option value=""2"">2</option>
4096 <option value=""3"">3</option>
4097 <option value=""4"">4</option>
4098 <option value=""5+"">5+</option>
4099 </select>
4100 </div>
4101 <div class=""col-6 pl-sm-0 pl-2"">
4102 <select name=""roomsmax"" id=""roomsmax-frontpage"" class=""form-control reverse js-count"">
4103 <option selected=""true"" disabled=""disabled"">");
4104 Write(Translate("Smartpage:Search.Placeholder.Max", "Max"));
4105 WriteLiteral(@"</option>
4106 <option value=""1"">1</option>
4107 <option value=""2"">2</option>
4108 <option value=""3"">3</option>
4109 <option value=""4"">4</option>
4110 <option value=""5+"">");
4111 Write(Translate("Smartpage:Rooms.5", "5"));
4112 WriteLiteral(@"</option>
4113 </select>
4114 </div>
4115 </div>
4116 </div>
4117 <div class=""col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0"">
4118 <div class=""row"">
4119 <div class=""col-12"">
4120 <div class=""filter-container"">
4121 <label class=""d-block"">Energimærke</label>
4122 <select name=""energylabel"" id=""energylabel-frontpage"" class=""form-control reverse js-count"">
4123 <option disabled selected=""selected"">");
4124 Write(Translate("Smartpage:Search.Vælg", "Vælg"));
4125 WriteLiteral(@"</option>
4126 <option value=""01"">G</option>
4127 <option value=""02"">F</option>
4128 <option value=""03"">E</option>
4129 <option value=""04"">D</option>
4130 <option value=""05"">C</option>
4131 <option value=""06"">B</option>
4132 <option value=""07"">A</option>
4133 <option value=""08"">A2010</option>
4134 <option value=""09"">A2015</option>
4135 <option value=""10"">A2020+</option>
4136 </select>
4137 </div>
4138 </div>
4139 ");
4140 WriteLiteral(" </div>\r\n </div>\r\n <div class=\"col-12 col-sm-6 col-lg-3 mt-3\">\r\n <h4");
4141 BeginWriteAttribute("class", " class=\"", 44687, "\"", 44695, 0);
4142 EndWriteAttribute();
4143 WriteLiteral("><b>");
4144 Write(Translate("Smartpage:Search.Økonomi", "Økonomi"));
4145 WriteLiteral("</b></h4>\r\n <div class=\"filter-container row\">\r\n <label class=\"d-block col-12\">");
4146 Write(Translate("Smartpage:Search.Ejerudgift/boligydelse pr. måned", "Ejerudgift/boligydelse pr. måned"));
4147 WriteLiteral("</label>\r\n <div class=\"col-6 pr-sm-0 pr-2\">\r\n <input type=\"text\" name=\"subsidymin\" id=\"subsidymin-frontpage\" class=\"form-control js-subsidymin-frontpage-input js-count\"");
4148 BeginWriteAttribute("placeholder", " placeholder=\'", 45251, "\'", 45325, 1);
4149 WriteAttributeValue("", 45265, Translate("Smartpage:Search.Placeholder.MinDKK","Min. DKK"), 45265, 60, false);
4150 EndWriteAttribute();
4151 WriteLiteral(" />\r\n <select class=\"form-control js-subsidymin-frontpage-select js-count\">\r\n <option selected=\"true\" disabled=\"disabled\">");
4152 Write(Translate("Smartpage:Search.Placeholder.MinDKK", "Min. DKK"));
4153 WriteLiteral("</option>\r\n");
4154 for (var i = 0; i <= 25000; i += 1250)
4155 {
4156 if (i == 25000)
4157 {
4158 WriteLiteral(" <option>");
4159 Write(Convert.ToInt32(i).ToString("N0"));
4160 WriteLiteral("+</option>\r\n");
4161 }
4162 else
4163 {
4164 WriteLiteral(" <option>");
4165 Write(Convert.ToInt32(i).ToString("N0"));
4166 WriteLiteral("</option>\r\n");
4167 }
4168 }
4169 WriteLiteral(@" </select>
4170 </div>
4171 <div class=""col-6 pl-sm-0 pl-2"">
4172 <input type=""text"" name=""subsidymax"" id=""subsidymax-frontpage"" class=""form-control js-subsidymax-frontpage-input js-count""");
4173 BeginWriteAttribute("placeholder", " placeholder=\'", 46710, "\'", 46784, 1);
4174 WriteAttributeValue("", 46724, Translate("Smartpage:Search.Placeholder.MaxDKK","Max. DKK"), 46724, 60, false);
4175 EndWriteAttribute();
4176 WriteLiteral(" />\r\n <select class=\"form-control js-subsidymax-frontpage-select js-count\">\r\n <option selected=\"true\" disabled=\"disabled\">");
4177 Write(Translate("Smartpage:Search.Placeholder.MaxDKK", "Max. DKK"));
4178 WriteLiteral("</option>\r\n");
4179 for (var i = 0; i <= 25000; i += 1250)
4180 {
4181 if (i == 25000)
4182 {
4183 WriteLiteral(" <option");
4184 BeginWriteAttribute("value", " value=\"", 47396, "\"", 47423, 1);
4185 WriteAttributeValue("", 47404, Convert.ToInt32(i), 47404, 19, false);
4186 EndWriteAttribute();
4187 WriteLiteral(">");
4188 Write(Convert.ToInt32(i).ToString("N0"));
4189 WriteLiteral("+</option>\r\n");
4190 }
4191 else
4192 {
4193 WriteLiteral(" <option");
4194 BeginWriteAttribute("value", " value=\"", 47702, "\"", 47729, 1);
4195 WriteAttributeValue("", 47710, Convert.ToInt32(i), 47710, 19, false);
4196 EndWriteAttribute();
4197 WriteLiteral(">");
4198 Write(Convert.ToInt32(i).ToString("N0"));
4199 WriteLiteral("</option>\r\n");
4200 }
4201 }
4202 WriteLiteral(@" </select>
4203 </div>
4204 </div>
4205 </div>
4206 <div class=""col-12 col-sm-6 col-lg-4 offset-lg-5 mt-3 mt-sm-0"">
4207 <button type=""submit"" class=""btn btn-block btn-search""><i class=""fa fa-search""></i> ");
4208 Write(Translate("Smartpage:Search.AnvendFiltre", "Anvend filtre"));
4209 WriteLiteral(@"</button>
4210 </div>
4211 </div>
4212 </div>
4213 </div>
4214 </div>
4215
4216 <div class=""row d-block d-md-none form-wrapper no-gutters"">
4217 <div class=""col-xs-12 col-md-2"">
4218 <button type=""submit"" class=""btn btn-block btn-search btn-mobile-search"">");
4219 Write(Translate("Smartpage:Search.SøgBolig", "Søg Bolig"));
4220 WriteLiteral(@"<i class=""fa fa-search cta-icon""></i></button>
4221 </div>
4222 </div>
4223 </form>
4224 <div class=""front-page-actions d-md-none"">
4225 <div>
4226 <button class=""btn btn-block btn-search btn-mobile-search js-search-mobile"">");
4227 Write(Translate("Smartpage:Search.SøgBolig", "Søg Bolig"));
4228 WriteLiteral("<i class=\"fa fa-search cta-icon\"></i></button>\r\n </div>\r\n <div>\r\n");
4229
4230 string brokerSearchId = SettingsItem != null ? Dynamicweb.Core.Converter.ToString(SettingsItem["Maeglersogning"]).Replace("Default.aspx?Id=", "") : "";
4231 string ctaText = Translate("Smartpage.Frontpage.Mobile.FindBroker", "FIND EJENDOMSMÆGLER");
4232 WriteLiteral(" <form method=\"GET\" action=\"/Default.aspx\">\r\n <input name=\"id\"");
4233 BeginWriteAttribute("value", " value=\"", 49672, "\"", 49695, 1);
4234 WriteAttributeValue("", 49680, brokerSearchId, 49680, 15, false);
4235 EndWriteAttribute();
4236 WriteLiteral(@" type=""hidden"" />
4237 <div class=""icon-wrapper-wclick"">
4238 <i class=""fas fa-search ta-submit-on-icon-click""></i>
4239 <input class=""box-cta-input ta-postnummer ta-submit-on-select ta-submit-on-enter"" name=""q"" type=""text""");
4240 BeginWriteAttribute("placeholder", " placeholder=\"", 49999, "\"", 50021, 1);
4241 WriteAttributeValue("", 50013, ctaText, 50013, 8, false);
4242 EndWriteAttribute();
4243 WriteLiteral(" onfocus=\"this.placeholder = \'\'\"");
4244 BeginWriteAttribute("onblur", " onblur=\"", 50054, "\"", 50090, 3);
4245 WriteAttributeValue("", 50063, "this.placeholder=\'", 50063, 18, true);
4246 WriteAttributeValue("", 50081, ctaText, 50081, 8, false);
4247 WriteAttributeValue("", 50089, "\'", 50089, 1, true);
4248 EndWriteAttribute();
4249 WriteLiteral(" />\r\n </div>\r\n </form>\r\n");
4250 WriteLiteral(" </div>\r\n <div>\r\n <a href=\"javascript:panelSalgsvurdering(\'Hovedmenu\')\" class=\"btn btn-orange btn-block\">");
4251 Write(Translate("Smartpage:Frontpage.Mobile.GetFreeAppraisal", "BESTIL GRATIS VURDERING"));
4252 WriteLiteral("<i class=\"cta-icon fa fa-angle-right\"></i></a>\r\n </div>\r\n </div>\r\n </div>\r\n");
4253
4254 }
4255 Custom.Integration.Brokers.Models.BrokerEmployee GetBrokerFromCurrentProduct()
4256 {
4257 string productId = Dynamicweb.Context.Current.Request["ProductId"];
4258
4259 if (string.IsNullOrWhiteSpace(productId))
4260 {
4261 return null;
4262 }
4263
4264 var propertyProduct = Dynamicweb.Ecommerce.Services.Products.GetProductById(productId, string.Empty, true);
4265 if (propertyProduct == null)
4266 {
4267 return null;
4268 }
4269
4270 string employee = Dynamicweb.Core.Converter.ToString(
4271 Dynamicweb.Ecommerce.Services.Products.GetProductFieldValue(propertyProduct, "xAktoererMaeglerKontaktEmail")
4272 );
4273 string storeId = Dynamicweb.Core.Converter.ToString(
4274 Dynamicweb.Ecommerce.Services.Products.GetProductFieldValue(propertyProduct, "xButikID")
4275 );
4276
4277 if (string.IsNullOrWhiteSpace(employee) || string.IsNullOrWhiteSpace(storeId))
4278 {
4279 return null;
4280 }
4281
4282 return Custom.Integration.Brokers.Search.GetEmployee(storeId, employee);
4283 }
4284
4285 string GetAgentTitleFromCurrentProduct()
4286 {
4287 var propBroker = GetBrokerFromCurrentProduct();
4288
4289 if (propBroker?.Broker == null)
4290 {
4291 return string.Empty;
4292 }
4293
4294 if (!string.IsNullOrEmpty(propBroker.Broker.CompanyName))
4295 {
4296 return propBroker.Broker.CompanyName;
4297 }
4298
4299 return propBroker.Broker.Name ?? string.Empty;
4300 }
4301
4302 string GetMasterBrokerUrlFromCurrentProduct()
4303 {
4304 var propBroker = GetBrokerFromCurrentProduct();
4305
4306 var itemId = propBroker?.Broker?.ItemId;
4307 var itemType = propBroker?.Broker?.ItemType;
4308
4309 if (string.IsNullOrWhiteSpace(itemId) || string.IsNullOrWhiteSpace(itemType))
4310 {
4311 return string.Empty;
4312 }
4313 var brokerItem = Dynamicweb.Content.Items.ItemManager.Storage.GetById(itemType, itemId);
4314
4315 if (brokerItem == null)
4316 {
4317 return string.Empty;
4318 }
4319
4320 var websiteId = Dynamicweb.Core.Converter.ToInt32(brokerItem["WebsiteId"]);
4321 var page = Dynamicweb.Content.Services.Pages.GetFirstPageForArea(websiteId);
4322 return Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl("Default.aspx?Id=" + page?.ID);
4323 }
4324
4325 // === Video link helpers (used by the property page) ===
4326
4327 // True when the link points directly at a video file we can play in a <video> element. Everything else is iframed.
4328 bool IsDirectVideoFile(string url)
4329 {
4330 if (string.IsNullOrWhiteSpace(url)) { return false; }
4331
4332 // Strip query/fragment before checking the file extension.
4333 string path = url.Split('?', '#')[0];
4334 string[] directExtensions = { ".mp4", ".webm", ".ogg", ".ogv", ".mov", ".m4v" };
4335 foreach (var ext in directExtensions)
4336 {
4337 if (path.EndsWith(ext, StringComparison.InvariantCultureIgnoreCase)) { return true; }
4338 }
4339 return false;
4340 }
4341
4342 string GetYouTubeId(string url)
4343 {
4344 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; }
4345
4346 string[] patterns = { @"youtu\.be/([^?&/]+)", @"[?&]v=([^?&]+)", @"/embed/([^?&/]+)", @"/shorts/([^?&/]+)" };
4347 foreach (var pattern in patterns)
4348 {
4349 var match = System.Text.RegularExpressions.Regex.Match(url, pattern);
4350 if (match.Success) { return match.Groups[1].Value; }
4351 }
4352
4353 return string.Empty;
4354 }
4355
4356 string GetVimeoId(string url)
4357 {
4358 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; }
4359 var match = System.Text.RegularExpressions.Regex.Match(url, @"vimeo\.com/(?:.*?/)?(\d+)");
4360 return match.Success ? match.Groups[1].Value : string.Empty;
4361 }
4362
4363 string GetVimeoHash(string url)
4364 {
4365 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; }
4366 // Unlisted videos carry a privacy hash: vimeo.com/{id}/{hash}
4367 var match = System.Text.RegularExpressions.Regex.Match(url, @"vimeo\.com/(?:.*?/)?\d+/(\w+)");
4368 return match.Success ? match.Groups[1].Value : string.Empty;
4369 }
4370
4371 // Builds the iframe src for a non-file link. YouTube/Vimeo share links are rewritten to their embeddable form
4372 // (their pages block framing); every other link (Matterport, CR3, already-embeddable pages) is used as-is.
4373 string BuildEmbedUrl(string url, bool background)
4374 {
4375 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; }
4376
4377 if (url.Contains("youtube", StringComparison.InvariantCultureIgnoreCase) || url.Contains("youtu.be", StringComparison.InvariantCultureIgnoreCase))
4378 {
4379 string id = GetYouTubeId(url);
4380 if (!string.IsNullOrEmpty(id))
4381 {
4382 string baseUrl = "https://www.youtube-nocookie.com/embed/" + id;
4383 return background
4384 ? baseUrl + "?autoplay=1&mute=1&loop=1&playlist=" + id + "&controls=0&playsinline=1&rel=0"
4385 : baseUrl + "?rel=0";
4386 }
4387 }
4388 else if (url.Contains("vimeo", StringComparison.InvariantCultureIgnoreCase))
4389 {
4390 string id = GetVimeoId(url);
4391 if (!string.IsNullOrEmpty(id))
4392 {
4393 string baseUrl = "https://player.vimeo.com/video/" + id;
4394 var queryParams = new List<string>();
4395 string hash = GetVimeoHash(url);
4396 if (!string.IsNullOrEmpty(hash)) { queryParams.Add("h=" + hash); }
4397 if (background) { queryParams.Add("background=1"); }
4398 return queryParams.Count > 0 ? baseUrl + "?" + string.Join("&", queryParams) : baseUrl;
4399 }
4400 }
4401
4402 // Matterport, CR3 and any already-embeddable link frame as-is.
4403 return url;
4404 }
4405
4406 void RenderSlideMenu(bool erhverv, string maeglersoegning)
4407 {
4408 WriteLiteral(" <div id=\"menu\" \r\n class=\"main-menu-slide \"\r\n role=\"navigation\"");
4409 BeginWriteAttribute("aria-label", "\r\n aria-label=\"", 56824, "\"", 56940, 1);
4410 WriteAttributeValue("", 56851, HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.MainMenu", "Hovedmenu")), 56851, 89, false);
4411 EndWriteAttribute();
4412 WriteLiteral(@"
4413 aria-modal=""true"">
4414 <div class=""container"">
4415 <div class=""row"">
4416 <div class=""col-12"">
4417 <span class=""menu-headline"">MENU</span>
4418 </div>
4419 <div class=""menu-slide""
4420 role=""button""
4421 tabindex=""0""");
4422 BeginWriteAttribute("aria-label", "\r\n aria-label=\"", 57305, "\"", 57433, 1);
4423 WriteAttributeValue("", 57344, HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.CloseMenu", "Luk menu")), 57344, 89, false);
4424 EndWriteAttribute();
4425 WriteLiteral(">\r\n <b aria-hidden=\"true\"></b>\r\n </div>\r\n <div class=\"col-12 main-slidemenu\" role=\"region\"");
4426 BeginWriteAttribute("aria-label", " aria-label=\"", 57585, "\"", 57701, 1);
4427 WriteAttributeValue("", 57598, HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.NavigationLinks", "Navigationslinks")), 57598, 103, false);
4428 EndWriteAttribute();
4429 WriteLiteral(">\r\n");
4430
4431 var navigationSettings = new NavigationSettings();
4432 navigationSettings.StartLevel = 1;
4433 navigationSettings.StopLevel = 2;
4434 navigationSettings.ExpandMode = ExpandMode.All;
4435 navigationSettings.RootAreaId = Pageview.Area.ID;
4436
4437 Write(Navigation.RenderNavigation("Navigation/slideMenu.cshtml", navigationSettings));
4438 WriteLiteral(" </div>\r\n <div class=\"col-12 bottom-btns\">\r\n\r\n");
4439
4440 string[] maeglerid;
4441 string maegler = !string.IsNullOrEmpty(Converter.ToString(Pageview.Area.Item["ErhvervMaeglersoegning"])) ? Converter.ToString(Pageview.Area.Item["ErhvervMaeglersoegning"]) : "Default?Id=0";
4442
4443 if (erhverv)
4444 {
4445 maeglerid = maegler.Split(new string[] { "?Id=" }, StringSplitOptions.None);
4446 }
4447 else
4448 {
4449 maeglerid = Convert.ToString(maeglersoegning).Split(new string[] { "?Id=" }, StringSplitOptions.None);
4450 }
4451
4452 WriteLiteral(" <form method=\"GET\" action=\"/Default.aspx\" role=\"search\">\r\n <input name=\"id\"");
4453 BeginWriteAttribute("value", " value=\"", 59198, "\"", 59219, 1);
4454 WriteAttributeValue("", 59206, maeglerid[1], 59206, 13, false);
4455 EndWriteAttribute();
4456 WriteLiteral(" type=\"hidden\" />\r\n <div class=\"icon-wrapper-wclick\">\r\n <label for=\"broker-search-menu-vm\" class=\"sr-only\">");
4457 Write(Translate("Custom:Accessibility.FindBroker", "Find mægler"));
4458 WriteLiteral(@"</label>
4459 <i class=""fas fa-search ta-submit-on-icon-click""
4460 aria-hidden=""true""
4461 role=""button""
4462 tabindex=""0""");
4463 BeginWriteAttribute("aria-label", "\r\n aria-label=\"", 59714, "\"", 59867, 1);
4464 WriteAttributeValue("", 59767, HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.SearchBroker", "Søg efter mægler")), 59767, 100, false);
4465 EndWriteAttribute();
4466 WriteLiteral(@"></i>
4467 <input id=""broker-search-menu-vm""
4468 class=""box-cta-input ta-postnummer ta-submit-on-select ta-submit-on-enter""
4469 name=""q""
4470 type=""text""");
4471 BeginWriteAttribute("placeholder", " \r\n placeholder=\"", 60175, "\"", 60326, 1);
4472 WriteAttributeValue("", 60234, HtmlEncoder.HtmlAttributeEncode(Translate("Smartpage:BoxWidget.FindMægler", "FIND MÆGLER")), 60234, 92, false);
4473 EndWriteAttribute();
4474 BeginWriteAttribute("aria-label", " \r\n aria-label=\"", 60327, "\"", 60523, 1);
4475 WriteAttributeValue("", 60385, HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.BrokerSearchField", "Indtast postnummer eller navn for at finde mægler")), 60385, 138, false);
4476 EndWriteAttribute();
4477 WriteLiteral("\r\n onfocus=\"this.placeholder = \'FIND MÆGLER\'\" />\r\n </div>\r\n </form>\r\n");
4478 WriteLiteral(" <br />\r\n");
4479
4480 var dpmaegler = "" + Context.Current.Session["DP"] + "Hovedmenu" + "";
4481 WriteLiteral(" <a");
4482 BeginWriteAttribute("href", " href=\"", 60933, "\"", 61004, 5);
4483 WriteAttributeValue("", 60940, "javascript:panelSalgsvurdering(\'", 60940, 32, true);
4484 WriteAttributeValue("", 60972, dpmaegler, 60972, 10, false);
4485 WriteAttributeValue("", 60982, "\',\'", 60982, 3, true);
4486 WriteAttributeValue("", 60985, Pageview.AreaID, 60985, 16, false);
4487 WriteAttributeValue("", 61001, "\');", 61001, 3, true);
4488 EndWriteAttribute();
4489 WriteLiteral(" \r\n class=\"btn btn-block btn-default-invert js-close-menu\"");
4490 BeginWriteAttribute("aria-label", "\r\n aria-label=\"", 61089, "\"", 61245, 1);
4491 WriteAttributeValue("", 61130, HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.FreeSalesAssessment", "Få gratis salgsvurdering")), 61130, 115, false);
4492 EndWriteAttribute();
4493 WriteLiteral(">Gratis salgsvurdering <i class=\"cta-icon fa fa-angle-right\" aria-hidden=\"true\"></i></a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n");
4494 }
4495
4496 void RenderBlockList(List<Block> blocks)
4497 {
4498 bool debug = !String.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(Dynamicweb.Context.Current.Request.QueryString.Get("debug")) : false;
4499 blocks = blocks.OrderBy(item => item.SortId).ToList();
4500
4501 foreach (Block item in blocks)
4502 {
4503 if (debug) {
4504 WriteLiteral(" <!-- Block START: ");
4505 Write(item.Id);
4506 WriteLiteral(" -->\r\n");
4507 }
4508
4509 if (item.Design == null)
4510 {
4511 RenderBlock(item);
4512 }
4513 else if (item.Design.RenderType == RenderType.None) {
4514 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : "";
4515
4516 WriteLiteral(" <div");
4517 BeginWriteAttribute("class", " class=\"", 62500, "\"", 62524, 2);
4518 WriteAttributeValue("", 62508, cssClass, 62508, 9, false);
4519 WriteAttributeValue(" ", 62517, "dw-mod", 62518, 7, true);
4520 EndWriteAttribute();
4521 WriteLiteral(">\r\n RenderBlock(item);\r\n </div>\r\n");
4522 }
4523 else if (item.Design.RenderType != RenderType.Hide)
4524 {
4525 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : "";
4526
4527 if (!item.SkipRenderBlocksList) {
4528 if (item.Design.RenderType == RenderType.Row)
4529 {
4530 WriteLiteral(" <div");
4531 BeginWriteAttribute("class", " class=\"", 62951, "\"", 63006, 4);
4532 WriteAttributeValue("", 62959, "grid", 62959, 4, true);
4533 WriteAttributeValue(" ", 62963, "grid--align-content-start", 62964, 26, true);
4534 WriteAttributeValue(" ", 62989, cssClass, 62990, 9, false);
4535 WriteAttributeValue(" ", 62999, "dw-mod", 63000, 7, true);
4536 EndWriteAttribute();
4537 BeginWriteAttribute("id", " id=\"", 63007, "\"", 63027, 2);
4538 WriteAttributeValue("", 63012, "Block__", 63012, 7, true);
4539 WriteAttributeValue("", 63019, item.Id, 63019, 8, false);
4540 EndWriteAttribute();
4541 WriteLiteral(">\r\n RenderBlock(item);\r\n </div>\r\n");
4542 }
4543
4544 if (item.Design.RenderType == RenderType.Column)
4545 {
4546 string hidePadding = item.Design.HidePadding ? "u-no-padding" : "";
4547 string size = item.Design.Size ?? "12";
4548 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size;
4549
4550 WriteLiteral(" <div");
4551 BeginWriteAttribute("class", " class=\"", 63523, "\"", 63654, 9);
4552 WriteAttributeValue("", 63531, "grid__col-lg-", 63531, 13, true);
4553 WriteAttributeValue("", 63544, item.Design.Size, 63544, 17, false);
4554 WriteAttributeValue(" ", 63561, "grid__col-md-", 63562, 14, true);
4555 WriteAttributeValue("", 63575, item.Design.Size, 63575, 17, false);
4556 WriteAttributeValue(" ", 63592, "grid__col-sm-12", 63593, 16, true);
4557 WriteAttributeValue(" ", 63608, "grid__col-xs-12", 63609, 16, true);
4558 WriteAttributeValue(" ", 63624, hidePadding, 63625, 12, false);
4559 WriteAttributeValue(" ", 63637, cssClass, 63638, 9, false);
4560 WriteAttributeValue(" ", 63647, "dw-mod", 63648, 7, true);
4561 EndWriteAttribute();
4562 BeginWriteAttribute("id", " id=\"", 63655, "\"", 63675, 2);
4563 WriteAttributeValue("", 63660, "Block__", 63660, 7, true);
4564 WriteAttributeValue("", 63667, item.Id, 63667, 8, false);
4565 EndWriteAttribute();
4566 WriteLiteral(">\r\n RenderBlock(item);\r\n </div>\r\n");
4567 }
4568
4569 if (item.Design.RenderType == RenderType.Table)
4570 {
4571 WriteLiteral(" <table");
4572 BeginWriteAttribute("class", " class=\"", 63906, "\"", 63936, 3);
4573 WriteAttributeValue("", 63914, "table", 63914, 5, true);
4574 WriteAttributeValue(" ", 63919, cssClass, 63920, 9, false);
4575 WriteAttributeValue(" ", 63929, "dw-mod", 63930, 7, true);
4576 EndWriteAttribute();
4577 BeginWriteAttribute("id", " id=\"", 63937, "\"", 63957, 2);
4578 WriteAttributeValue("", 63942, "Block__", 63942, 7, true);
4579 WriteAttributeValue("", 63949, item.Id, 63949, 8, false);
4580 EndWriteAttribute();
4581 WriteLiteral(">\r\n RenderBlock(item);\r\n </table>\r\n");
4582 }
4583
4584 if (item.Design.RenderType == RenderType.TableRow)
4585 {
4586 WriteLiteral(" <tr");
4587 BeginWriteAttribute("class", " class=\"", 64190, "\"", 64214, 2);
4588 WriteAttributeValue("", 64198, cssClass, 64198, 9, false);
4589 WriteAttributeValue(" ", 64207, "dw-mod", 64208, 7, true);
4590 EndWriteAttribute();
4591 BeginWriteAttribute("id", " id=\"", 64215, "\"", 64235, 2);
4592 WriteAttributeValue("", 64220, "Block__", 64220, 7, true);
4593 WriteAttributeValue("", 64227, item.Id, 64227, 8, false);
4594 EndWriteAttribute();
4595 WriteLiteral(">\r\n RenderBlock(item);\r\n </tr>\r\n");
4596 }
4597
4598 if (item.Design.RenderType == RenderType.TableColumn)
4599 {
4600 WriteLiteral(" <td");
4601 BeginWriteAttribute("class", " class=\"", 64468, "\"", 64492, 2);
4602 WriteAttributeValue("", 64476, cssClass, 64476, 9, false);
4603 WriteAttributeValue(" ", 64485, "dw-mod", 64486, 7, true);
4604 EndWriteAttribute();
4605 BeginWriteAttribute("id", " id=\"", 64493, "\"", 64513, 2);
4606 WriteAttributeValue("", 64498, "Block__", 64498, 7, true);
4607 WriteAttributeValue("", 64505, item.Id, 64505, 8, false);
4608 EndWriteAttribute();
4609 WriteLiteral(">\r\n RenderBlock(item);\r\n </td>\r\n");
4610 }
4611
4612 if (item.Design.RenderType == RenderType.CardHeader)
4613 {
4614 WriteLiteral(" <div");
4615 BeginWriteAttribute("class", " class=\"", 64746, "\"", 64782, 3);
4616 WriteAttributeValue("", 64754, "card-header", 64754, 11, true);
4617 WriteAttributeValue(" ", 64765, cssClass, 64766, 9, false);
4618 WriteAttributeValue(" ", 64775, "dw-mod", 64776, 7, true);
4619 EndWriteAttribute();
4620 WriteLiteral(">\r\n RenderBlock(item);\r\n </div>\r\n");
4621 }
4622
4623 if (item.Design.RenderType == RenderType.CardBody)
4624 {
4625 WriteLiteral(" <div");
4626 BeginWriteAttribute("class", " class=\"", 65014, "\"", 65043, 3);
4627 WriteAttributeValue("", 65022, "card", 65022, 4, true);
4628 WriteAttributeValue(" ", 65026, cssClass, 65027, 9, false);
4629 WriteAttributeValue(" ", 65036, "dw-mod", 65037, 7, true);
4630 EndWriteAttribute();
4631 WriteLiteral(">\r\n RenderBlock(item);\r\n </div>\r\n");
4632 }
4633
4634 if (item.Design.RenderType == RenderType.CardFooter)
4635 {
4636 WriteLiteral(" <div");
4637 BeginWriteAttribute("class", " class=\"", 65277, "\"", 65313, 3);
4638 WriteAttributeValue("", 65285, "card-footer", 65285, 11, true);
4639 WriteAttributeValue(" ", 65296, cssClass, 65297, 9, false);
4640 WriteAttributeValue(" ", 65306, "dw-mod", 65307, 7, true);
4641 EndWriteAttribute();
4642 WriteLiteral(">\r\n RenderBlock(item);\r\n </div>\r\n");
4643 }
4644 }
4645 else
4646 {
4647 RenderBlock(item);
4648 }
4649 }
4650
4651 if (debug) {
4652 WriteLiteral(" <!-- Block END: ");
4653 Write(item.Id);
4654 WriteLiteral(" -->\r\n");
4655 }
4656 }
4657 }
4658
4659 void RenderBlock(Block item)
4660 {
4661 bool debug = !String.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(Dynamicweb.Context.Current.Request.QueryString.Get("debug")) : false;
4662
4663 if (item.Template != null)
4664 {
4665 Write(BlocksPage.RenderTemplate(item.Template));
4666
4667 }
4668
4669 if (item.Component != null)
4670 {
4671 string customSufix = "Custom";
4672 string methodName = item.Component.HelperName;
4673
4674 ComponentBase[] methodParameters = new ComponentBase[1];
4675 methodParameters[0] = item.Component;
4676 Type methodType = this.GetType();
4677
4678 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix);
4679 MethodInfo generalMethod = methodType.GetMethod(methodName);
4680
4681 try {
4682 if (debug) {
4683 WriteLiteral(" <!-- Component: ");
4684 Write(methodName.Replace("Render", ""));
4685 WriteLiteral(" -->\r\n");
4686 }
4687 Write(customMethod.Invoke(this, methodParameters).ToString());
4688 ;
4689 } catch {
4690 try {
4691 Write(generalMethod.Invoke(this, methodParameters).ToString());
4692
4693 ;
4694 } catch(Exception ex) {
4695 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex);
4696 }
4697 }
4698 }
4699
4700 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList)
4701 {
4702 RenderBlockList(item.BlocksList);
4703 }
4704 }
4705
4706 void Render(ComponentBase component)
4707 {
4708 if (component != null)
4709 {
4710 Write(component.Render(this));
4711
4712 }
4713 }
4714
4715 void RenderIcon(Icon settings)
4716 {
4717 if (settings != null)
4718 {
4719 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : "";
4720
4721 if (settings.Name != null)
4722 {
4723 if (string.IsNullOrEmpty(settings.Label))
4724 {
4725 WriteLiteral(" <i");
4726 BeginWriteAttribute("class", " class=\"", 68209, "\"", 68267, 3);
4727 WriteAttributeValue("", 68217, settings.Prefix, 68217, 16, false);
4728 WriteAttributeValue(" ", 68233, settings.Name, 68234, 14, false);
4729 WriteAttributeValue(" ", 68248, settings.CssClass, 68249, 18, false);
4730 EndWriteAttribute();
4731 WriteLiteral(" ");
4732 Write(color);
4733 WriteLiteral("></i>\r\n");
4734 }
4735 else
4736 {
4737 if (settings.LabelPosition == IconLabelPosition.Before)
4738 {
4739 WriteLiteral(" <div");
4740 BeginWriteAttribute("class", " class=\"", 68470, "\"", 68530, 3);
4741 WriteAttributeValue("", 68478, "u-flex", 68478, 6, true);
4742 WriteAttributeValue(" ", 68484, "u-flex--align-items-center", 68485, 27, true);
4743 WriteAttributeValue(" ", 68511, settings.CssClass, 68512, 18, false);
4744 EndWriteAttribute();
4745 WriteLiteral(">");
4746 Write(settings.Label);
4747 WriteLiteral(" <i");
4748 BeginWriteAttribute("class", " class=\"", 68550, "\"", 68603, 3);
4749 WriteAttributeValue("", 68558, settings.Prefix, 68558, 16, false);
4750 WriteAttributeValue(" ", 68574, settings.Name, 68575, 14, false);
4751 WriteAttributeValue(" ", 68589, "u-margin-left", 68590, 14, true);
4752 EndWriteAttribute();
4753 WriteLiteral(" ");
4754 Write(color);
4755 WriteLiteral("></i></div>\r\n");
4756 }
4757 else
4758 {
4759 WriteLiteral(" <div");
4760 BeginWriteAttribute("class", " class=\"", 68724, "\"", 68784, 3);
4761 WriteAttributeValue("", 68732, "u-flex", 68732, 6, true);
4762 WriteAttributeValue(" ", 68738, "u-flex--align-items-center", 68739, 27, true);
4763 WriteAttributeValue(" ", 68765, settings.CssClass, 68766, 18, false);
4764 EndWriteAttribute();
4765 WriteLiteral("><i");
4766 BeginWriteAttribute("class", " class=\"", 68788, "\"", 68854, 4);
4767 WriteAttributeValue("", 68796, settings.Prefix, 68796, 16, false);
4768 WriteAttributeValue(" ", 68812, settings.Name, 68813, 14, false);
4769 WriteAttributeValue(" ", 68827, "u-margin-right--lg", 68828, 19, true);
4770 WriteAttributeValue(" ", 68846, "u-w20px", 68847, 8, true);
4771 EndWriteAttribute();
4772 WriteLiteral(" ");
4773 Write(color);
4774 WriteLiteral("></i>");
4775 Write(settings.Label);
4776 WriteLiteral("</div>\r\n");
4777 }
4778 }
4779 }
4780 else if (!string.IsNullOrEmpty(settings.Label))
4781 {
4782 Write(settings.Label);
4783
4784 }
4785 }
4786 }
4787
4788 void RenderButton(Button settings)
4789 {
4790 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null))
4791 {
4792 Dictionary<string, string> attributes = new Dictionary<string, string>();
4793 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>();
4794 if (settings.Disabled) {
4795 attributes.Add("disabled", "true");
4796 classList.Add("disabled");
4797 }
4798
4799 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle))
4800 {
4801 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N");
4802 RenderConfirmDialog(settings);
4803 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true";
4804 }
4805
4806 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
4807 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); }
4808 if (!string.IsNullOrEmpty(settings.AltText))
4809 {
4810 attributes.Add("title", settings.AltText);
4811 }
4812 else if (!string.IsNullOrEmpty(settings.Title))
4813 {
4814 string cleanTitle = Regex.Replace(settings.Title, "<.*?>", String.Empty);
4815 cleanTitle = cleanTitle.Replace(" ", " ");
4816 attributes.Add("title", cleanTitle);
4817 }
4818
4819 var onClickEvents = new List<string>();
4820 if (!string.IsNullOrEmpty(settings.OnClick))
4821 {
4822 onClickEvents.Add(settings.OnClick);
4823 }
4824 if (!string.IsNullOrEmpty(settings.Href))
4825 {
4826 if (settings.Href.Contains("javascript"))
4827 {
4828 settings.Href = settings.Href.Replace("http://", "");
4829 }
4830 onClickEvents.Add("location.href='" + settings.Href + "'");
4831 }
4832 if (onClickEvents.Count > 0)
4833 {
4834 attributes.Add("onClick", string.Join(";", onClickEvents));
4835 }
4836
4837 if (settings.ButtonLayout != ButtonLayout.None)
4838 {
4839 classList.Add("btn");
4840 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower();
4841 if (btnLayout == "linkclean")
4842 {
4843 btnLayout = "link-clean"; //fix
4844 }
4845 classList.Add("btn--" + btnLayout);
4846 }
4847
4848 if (settings.Icon == null)
4849 {
4850 settings.Icon = new Icon();
4851 }
4852
4853 settings.Icon.CssClass += Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower() != "linkclean" ? " u-flex--align-center" : "";
4854 settings.Icon.Label = settings.Title;
4855
4856 attributes.Add("type", Enum.GetName(typeof(ButtonType), settings.ButtonType).ToLower());
4857
4858 WriteLiteral(" <button");
4859 BeginWriteAttribute("class", " class=\"", 72447, "\"", 72490, 2);
4860 WriteAttributeValue("", 72455, string.Join(" ", classList), 72455, 28, false);
4861 WriteAttributeValue(" ", 72483, "dw-mod", 72484, 7, true);
4862 EndWriteAttribute();
4863 WriteLiteral(" ");
4864 Write(ComponentMethods.AddAttributes(attributes));
4865 WriteLiteral(" ");
4866 Write(ComponentMethods.AddAttributes(settings.ExtraAttributes));
4867 WriteLiteral(">");
4868 RenderIcon(settings.Icon);WriteLiteral("</button>\r\n");
4869 }
4870 }
4871
4872 void RenderConfirmDialog(Button settings)
4873 {
4874 Modal confirmDialog = new Modal {
4875 Id = settings.Id,
4876 Width = ModalWidth.Sm,
4877 Heading = new Heading
4878 {
4879 Level = 2,
4880 Title = settings.ConfirmTitle
4881 },
4882 BodyText = settings.ConfirmText
4883 };
4884
4885 confirmDialog.AddAction(new Button { Title = Translate("Cancel"), ButtonLayout = ButtonLayout.Secondary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false"});
4886 confirmDialog.AddAction(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false;" + settings.OnClick });
4887
4888 RenderModal(confirmDialog);
4889 }
4890
4891 void RenderLink(Link settings)
4892 {
4893 if (settings != null && !string.IsNullOrEmpty(settings.Href) && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null))
4894 {
4895 Dictionary<string, string> attributes = new Dictionary<string, string>();
4896 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>();
4897 if (settings.Disabled)
4898 {
4899 attributes.Add("disabled", "true");
4900 classList.Add("disabled");
4901 }
4902
4903 if (!string.IsNullOrEmpty(settings.AltText))
4904 {
4905 attributes.Add("title", settings.AltText);
4906 }
4907 else if (!string.IsNullOrEmpty(settings.Title))
4908 {
4909 attributes.Add("title", settings.Title);
4910 }
4911
4912 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
4913 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); }
4914 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onClick", settings.OnClick); }
4915 attributes.Add("href", settings.Href);
4916
4917 if (settings.ButtonLayout != ButtonLayout.None)
4918 {
4919 classList.Add("btn");
4920 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower();
4921 if (btnLayout == "linkclean")
4922 {
4923 btnLayout = "link-clean"; //fix
4924 }
4925 classList.Add("btn--" + btnLayout);
4926 }
4927
4928 if (settings.Icon == null)
4929 {
4930 settings.Icon = new Icon();
4931 }
4932 settings.Icon.Label = settings.Title;
4933
4934 if (settings.Target == LinkTargetType.Blank && settings.Rel == LinkRelType.None)
4935 {
4936 settings.Rel = LinkRelType.Noopener;
4937 }
4938 if (settings.Target != LinkTargetType.None)
4939 {
4940 attributes.Add("target", "_" + Enum.GetName(typeof(LinkTargetType), settings.Target).ToLower());
4941 }
4942 if (settings.Download)
4943 {
4944 attributes.Add("download", "true");
4945 }
4946 if (settings.Rel != LinkRelType.None)
4947 {
4948 attributes.Add("rel", Enum.GetName(typeof(LinkRelType), settings.Rel).ToLower());
4949 }
4950
4951 WriteLiteral(" <a");
4952 BeginWriteAttribute("class", " class=\"", 76222, "\"", 76265, 2);
4953 WriteAttributeValue("", 76230, string.Join(" ", classList), 76230, 28, false);
4954 WriteAttributeValue(" ", 76258, "dw-mod", 76259, 7, true);
4955 EndWriteAttribute();
4956 WriteLiteral(" ");
4957 Write(ComponentMethods.AddAttributes(attributes));
4958 WriteLiteral(" ");
4959 Write(ComponentMethods.AddAttributes(settings.ExtraAttributes));
4960 WriteLiteral(">Render(settings.Icon);</a>\r\n");
4961 }
4962 }
4963
4964 void RenderRating(Rating settings)
4965 {
4966 if (settings.Score > 0)
4967 {
4968 int rating = settings.Score;
4969 string iconType = "fa-star";
4970
4971 switch (settings.Type.ToString()) {
4972 case "Stars":
4973 iconType = "fa-star";
4974 break;
4975 case "Hearts":
4976 iconType = "fa-heart";
4977 break;
4978 case "Lemons":
4979 iconType = "fa-lemon";
4980 break;
4981 case "Bombs":
4982 iconType = "fa-bomb";
4983 break;
4984 }
4985
4986 WriteLiteral(" <div class=\"u-ta-right\">\r\n");
4987 for (int i = 0; i < settings.OutOf; i++)
4988 {
4989 WriteLiteral(" <i");
4990 BeginWriteAttribute("class", " class=\"", 77399, "\"", 77446, 2);
4991 WriteAttributeValue("", 77407, rating > i ? "fas" : "far", 77407, 29, false);
4992 WriteAttributeValue(" ", 77436, iconType, 77437, 9, false);
4993 EndWriteAttribute();
4994 WriteLiteral("></i>\r\n");
4995 }
4996 WriteLiteral(" </div>\r\n");
4997 }
4998 }
4999
5000 void RenderNavigation(Navigation settings) {
5001 RenderNavigation(new
5002 {
5003 id = settings.Id,
5004 cssclass = settings.CssClass,
5005 startLevel = settings.StartLevel,
5006 endlevel = settings.EndLevel,
5007 expandmode = settings.Expandmode,
5008 sitemapmode = settings.SitemapMode,
5009 template = settings.Template
5010 });
5011 }
5012
5013 void RenderLeftNavigation(LeftNavigation settings) {
5014 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id;
5015 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template;
5016 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel;
5017 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel;
5018 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode;
5019
5020 WriteLiteral(" <div class=\"grid__cell\">\r\n RenderNavigation(settings);\r\n </div> \r\n");
5021 }
5022
5023 void RenderHeading(Heading settings)
5024 {
5025 if (settings != null && !string.IsNullOrEmpty(settings.Title))
5026 {
5027 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : "";
5028 string tagName = settings.Level != 0 ? "h" + settings.Level.ToString() : "div";
5029
5030 Write("<" + tagName + " class=\"" + settings.CssClass + " dw-mod\" " + color + ">");
5031
5032 if (!string.IsNullOrEmpty(settings.Link))
5033 {
5034 RenderLink(new Link { Href = settings.Link, Icon = settings.Icon, Title = settings.Title, ButtonLayout = ButtonLayout.None });
5035 }
5036 else
5037 {
5038 if (settings.Icon == null)
5039 {
5040 settings.Icon = new Icon();
5041 }
5042 settings.Icon.Label = settings.Title;
5043 RenderIcon(settings.Icon);
5044 }
5045 Write("</" + tagName + ">");
5046 ;
5047 }
5048 }
5049
5050 void RenderImage(Image settings)
5051 {
5052 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None)
5053 {
5054 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>();
5055 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); }
5056
5057 if (settings.Caption != null)
5058 {
5059 WriteLiteral(" ");
5060 WriteLiteral("<div>\r\n");
5061 }
5062
5063 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower();
5064 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower();
5065
5066 WriteLiteral(" <div");
5067 BeginWriteAttribute("class", " class=\"", 80927, "\"", 81008, 5);
5068 WriteAttributeValue("", 80935, "image-filter", 80935, 12, true);
5069 WriteAttributeValue(" ", 80947, "image-filter--", 80948, 15, true);
5070 WriteAttributeValue("", 80962, primaryFilterClass, 80962, 19, false);
5071 WriteAttributeValue(" ", 80981, "u-position-relative", 80982, 20, true);
5072 WriteAttributeValue(" ", 81001, "dw-mod", 81002, 7, true);
5073 EndWriteAttribute();
5074 WriteLiteral(" ");
5075 Write(ComponentMethods.AddAttributes(optionalAttributes));
5076 WriteLiteral(">\r\n <div");
5077 BeginWriteAttribute("class", " class=\"", 81088, "\"", 81151, 4);
5078 WriteAttributeValue("", 81096, "image-filter", 81096, 12, true);
5079 WriteAttributeValue(" ", 81108, "image-filter--", 81109, 15, true);
5080 WriteAttributeValue("", 81123, secondaryFilterClass, 81123, 21, false);
5081 WriteAttributeValue(" ", 81144, "dw-mod", 81145, 7, true);
5082 EndWriteAttribute();
5083 WriteLiteral(">\r\n");
5084 if (settings.Link != null)
5085 {
5086 WriteLiteral(" <a");
5087 BeginWriteAttribute("href", " href=\"", 81265, "\"", 81286, 1);
5088 WriteAttributeValue("", 81272, settings.Link, 81272, 14, false);
5089 EndWriteAttribute();
5090 WriteLiteral(">\r\n RenderTheImage(settings);\r\n </a>\r\n");
5091 }
5092 else
5093 {
5094 RenderTheImage(settings);
5095 }
5096 WriteLiteral(" </div>\r\n </div>\r\n");
5097
5098 if (settings.Caption != null)
5099 {
5100 WriteLiteral(" <span class=\"image-caption dw-mod\">");
5101 Write(settings.Caption);
5102 WriteLiteral("</span>\r\n ");
5103 WriteLiteral("</div>\r\n");
5104 }
5105 }
5106 else
5107 {
5108 if (settings.Caption != null)
5109 {
5110 WriteLiteral(" ");
5111 WriteLiteral("<div>\r\n");
5112 }
5113 if (!string.IsNullOrEmpty(settings.Link))
5114 {
5115 WriteLiteral(" <a");
5116 BeginWriteAttribute("href", " href=\"", 82029, "\"", 82050, 1);
5117 WriteAttributeValue("", 82036, settings.Link, 82036, 14, false);
5118 EndWriteAttribute();
5119 WriteLiteral(">\r\n RenderTheImage(settings);\r\n </a>\r\n");
5120 }
5121 else
5122 {
5123 RenderTheImage(settings);
5124 }
5125
5126 if (settings.Caption != null)
5127 {
5128 WriteLiteral(" <span class=\"image-caption dw-mod\">");
5129 Write(settings.Caption);
5130 WriteLiteral("</span>\r\n ");
5131 WriteLiteral("</div>\r\n");
5132 }
5133 }
5134 }
5135
5136 void RenderTheImage(Image settings)
5137 {
5138 if (settings != null)
5139 {
5140 string alternativeImage = !string.IsNullOrEmpty(PageView.Current().AreaSettings.GetString("AlternativeImage")) ? PageView.Current().AreaSettings.GetFile("AlternativeImage")?.PathUrlEncoded : "/Images/missing_image.jpg";
5141 string placeholderImage = "/Files/Images/placeholder.gif";
5142 string imageEngine = "/Admin/Public/GetImage.ashx?";
5143
5144 string imageStyle = "";
5145
5146 switch (settings.Style)
5147 {
5148 case ImageStyle.Ball:
5149 imageStyle = "grid__cell-img--ball";
5150 break;
5151
5152 case ImageStyle.Triangle:
5153 imageStyle = "grid__cell-img--triangle";
5154 break;
5155 }
5156
5157 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle)
5158 {
5159 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop;
5160
5161 if (settings.ImageDefault != null)
5162 {
5163 settings.ImageDefault.Height = settings.ImageDefault.Width;
5164 }
5165 if (settings.ImageMedium != null)
5166 {
5167 settings.ImageMedium.Height = settings.ImageMedium.Width;
5168 }
5169 if (settings.ImageSmall != null)
5170 {
5171 settings.ImageSmall.Height = settings.ImageSmall.Width;
5172 }
5173 }
5174
5175 string defaultImage = imageEngine;
5176 string imageSmall = "";
5177 string imageMedium = "";
5178
5179 if (settings.DisableImageEngine)
5180 {
5181 defaultImage = settings.Path;
5182 }
5183 else
5184 {
5185 if (settings.ImageDefault != null)
5186 {
5187 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault);
5188
5189 if (settings.Path.GetType() != typeof(string))
5190 {
5191 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : "";
5192 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : "";
5193 }
5194 else
5195 {
5196 defaultImage += settings.Path != null ? "Image=" + settings.Path : "";
5197 }
5198
5199 defaultImage += "&AlternativeImage=" + alternativeImage;
5200 }
5201
5202 if (settings.ImageSmall != null)
5203 {
5204 imageSmall = "data-src-small=\"" + imageEngine;
5205 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall);
5206
5207 if (settings.Path.GetType() != typeof(string))
5208 {
5209 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : "";
5210 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : "";
5211 }
5212 else
5213 {
5214 imageSmall += settings.Path != null ? "Image=" + settings.Path : "";
5215 }
5216
5217 imageSmall += "&alternativeImage=" + alternativeImage;
5218
5219 imageSmall += "\"";
5220 }
5221
5222 if (settings.ImageMedium != null)
5223 {
5224 imageMedium = "data-src-medium=\"" + imageEngine;
5225 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium);
5226
5227 if (settings.Path.GetType() != typeof(string))
5228 {
5229 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : "";
5230 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : "";
5231 }
5232 else
5233 {
5234 imageMedium += settings.Path != null ? "Image=" + settings.Path : "";
5235 }
5236
5237 imageMedium += "&alternativeImage=" + alternativeImage;
5238
5239 imageMedium += "\"";
5240 }
5241 }
5242
5243 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>();
5244 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); }
5245 if (!string.IsNullOrEmpty(settings.Title))
5246 {
5247 optionalAttributes.Add("alt", settings.Title);
5248 optionalAttributes.Add("title", settings.Title);
5249 }
5250
5251 if (settings.DisableLazyLoad)
5252 {
5253 WriteLiteral(" <img");
5254 BeginWriteAttribute("id", " id=\"", 87529, "\"", 87546, 1);
5255 WriteAttributeValue("", 87534, settings.Id, 87534, 12, false);
5256 EndWriteAttribute();
5257 BeginWriteAttribute("class", " class=\"", 87547, "\"", 87592, 3);
5258 WriteAttributeValue("", 87555, imageStyle, 87555, 11, false);
5259 WriteAttributeValue(" ", 87566, settings.CssClass, 87567, 18, false);
5260 WriteAttributeValue(" ", 87585, "dw-mod", 87586, 7, true);
5261 EndWriteAttribute();
5262 BeginWriteAttribute("src", " src=\"", 87593, "\"", 87612, 1);
5263 WriteAttributeValue("", 87599, defaultImage, 87599, 13, false);
5264 EndWriteAttribute();
5265 WriteLiteral(" ");
5266 Write(ComponentMethods.AddAttributes(optionalAttributes));
5267 WriteLiteral(" ");
5268 Write(ComponentMethods.AddAttributes(settings.ExtraAttributes));
5269 WriteLiteral(" />\r\n");
5270 }
5271 else
5272 {
5273
5274 WriteLiteral(" <img");
5275 BeginWriteAttribute("id", " id=\"", 87810, "\"", 87827, 1);
5276 WriteAttributeValue("", 87815, settings.Id, 87815, 12, false);
5277 EndWriteAttribute();
5278 BeginWriteAttribute("class", " class=\"", 87828, "\"", 87873, 3);
5279 WriteAttributeValue("", 87836, imageStyle, 87836, 11, false);
5280 WriteAttributeValue(" ", 87847, settings.CssClass, 87848, 18, false);
5281 WriteAttributeValue(" ", 87866, "dw-mod", 87867, 7, true);
5282 EndWriteAttribute();
5283 WriteLiteral(" loading=\"lazy\"");
5284 BeginWriteAttribute("src", " src=\"", 87889, "\"", 87908, 1);
5285 WriteAttributeValue("", 87895, defaultImage, 87895, 13, false);
5286 EndWriteAttribute();
5287 WriteLiteral(" ");
5288 Write(ComponentMethods.AddAttributes(optionalAttributes));
5289 WriteLiteral(" ");
5290 Write(ComponentMethods.AddAttributes(settings.ExtraAttributes));
5291 WriteLiteral(" />\r\n");
5292 }
5293 }
5294 }
5295
5296 void RenderHiddenField(HiddenField settings) {
5297 var attributes = new Dictionary<string, string>();
5298 attributes.Add("type", "hidden");
5299 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
5300 if (settings.Value != null) { attributes.Add("value", settings.Value); }
5301 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); }
5302
5303 WriteLiteral(" <input ");
5304 Write(ComponentMethods.AddAttributes(attributes));
5305 WriteLiteral(" ");
5306 Write(ComponentMethods.AddAttributes(settings.ExtraAttributes));
5307 WriteLiteral("/>\r\n");
5308 }
5309
5310 void RenderRadioButtonField(RadioButtonField settings)
5311 {
5312 var attributes = new Dictionary<string, string>();
5313 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id))
5314 {
5315 settings.Id = Guid.NewGuid().ToString("N");
5316 }
5317
5318 /*base settings*/
5319 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
5320 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); }
5321 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); }
5322 if (settings.Disabled) { attributes.Add("disabled", "true"); }
5323 if (settings.Required) { attributes.Add("required", "true"); }
5324 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); }
5325 /*end*/
5326
5327 attributes.Add("type", "radio");
5328 if (settings.Checked) { attributes.Add("checked", "true"); }
5329 settings.CssClass = "form__control " + settings.CssClass;
5330 if (settings.Value != null) { attributes.Add("value", settings.Value); }
5331
5332 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value);
5333
5334 WriteLiteral(" <div");
5335 BeginWriteAttribute("class", " class=\"", 90228, "\"", 90286, 3);
5336 WriteAttributeValue("", 90236, "form__field-group", 90236, 17, true);
5337 WriteAttributeValue(" ", 90253, settings.WrapperCssClass, 90254, 25, false);
5338 WriteAttributeValue(" ", 90279, "dw-mod", 90280, 7, true);
5339 EndWriteAttribute();
5340 WriteLiteral(">\r\n <input ");
5341 Write(ComponentMethods.AddAttributes(resultAttributes));
5342 WriteLiteral(" class=\"");
5343 Write(settings.CssClass);
5344 WriteLiteral(" dw-mod\" />\r\n");
5345 if (!string.IsNullOrEmpty(settings.Label))
5346 {
5347 WriteLiteral(" <label");
5348 BeginWriteAttribute("for", " for=\"", 90491, "\"", 90509, 1);
5349 WriteAttributeValue("", 90497, settings.Id, 90497, 12, false);
5350 EndWriteAttribute();
5351 WriteLiteral(" class=\"dw-mod\">");
5352 Write(settings.Label);
5353 WriteLiteral("</label>\r\n");
5354 }
5355 if (!string.IsNullOrEmpty(settings.HelpText))
5356 {
5357 WriteLiteral(" <small class=\"form__help-text\">");
5358 Write(settings.HelpText);
5359 WriteLiteral("</small>\r\n");
5360 }
5361 WriteLiteral(" Render(new NotificationMessage { Message = settings.ErrorMessage });\r\n </div>\r\n");
5362 }
5363
5364 void RenderRadioButtonListField(RadioButtonListField settings)
5365 {
5366 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; }
5367
5368 WriteLiteral(" <div");
5369 BeginWriteAttribute("class", " class=\"", 91224, "\"", 91298, 4);
5370 WriteAttributeValue("", 91232, "form__field-group", 91232, 17, true);
5371 WriteAttributeValue(" ", 91249, settings.WrapperCssClass, 91250, 25, false);
5372 WriteAttributeValue(" ", 91275, "u-margin-bottom", 91276, 16, true);
5373 WriteAttributeValue(" ", 91291, "dw-mod", 91292, 7, true);
5374 EndWriteAttribute();
5375 WriteLiteral(" ");
5376 Write(ComponentMethods.AddAttributes(settings.ExtraAttributes));
5377 WriteLiteral(">\r\n");
5378 if (!string.IsNullOrEmpty(settings.Label))
5379 {
5380 WriteLiteral(" <label>");
5381 Write(settings.Label);
5382 WriteLiteral("</label>\r\n");
5383 }
5384 if (!string.IsNullOrEmpty(settings.HelpText))
5385 {
5386 WriteLiteral(" <small class=\"form__help-text\">");
5387 Write(settings.HelpText);
5388 WriteLiteral("</small>\r\n");
5389 }
5390 WriteLiteral("\r\n");
5391 foreach (var item in settings.Options)
5392 {
5393 if (settings.Required)
5394 {
5395 item.Required = true;
5396 }
5397 if (settings.Disabled)
5398 {
5399 item.Disabled = true;
5400 }
5401 if (!string.IsNullOrEmpty(settings.Name))
5402 {
5403 item.Name = settings.Name;
5404 }
5405 if (settings.Value != null && settings.Value == item.Value)
5406 {
5407 item.Checked = true;
5408 }
5409 if (!string.IsNullOrEmpty(settings.OnClick))
5410 {
5411 item.OnClick += settings.OnClick;
5412 }
5413 if (!string.IsNullOrEmpty(settings.OnChange))
5414 {
5415 item.OnChange += settings.OnChange;
5416 }
5417 if (!string.IsNullOrEmpty(settings.CssClass))
5418 {
5419 item.CssClass += settings.CssClass;
5420 }
5421 Render(item);
5422 }
5423 WriteLiteral("\r\n Render(new NotificationMessage { Message = settings.ErrorMessage });\r\n </div>\r\n");
5424 }
5425
5426 void RenderForm(Form settings) {
5427 if (settings != null)
5428 {
5429 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>();
5430 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); };
5431 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); };
5432 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); };
5433 var enctypes = new Dictionary<string, string>
5434 {
5435 { "multipart", "multipart/form-data" },
5436 { "text", "text/plain" },
5437 { "application", "application/x-www-form-urlencoded" }
5438 };
5439 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); };
5440 optionalAttributes.Add("method", settings.Method.ToString());
5441
5442 if (!string.IsNullOrEmpty(settings.FormStartMarkup))
5443 {
5444 Write(settings.FormStartMarkup);
5445
5446 }
5447 else
5448 {
5449 WriteLiteral(" ");
5450 WriteLiteral("<form class=\"");
5451 Write(settings.CssClass);
5452 WriteLiteral(" u-no-margin dw-mod\" ");
5453 Write(ComponentMethods.AddAttributes(optionalAttributes));
5454 WriteLiteral(" ");
5455 Write(ComponentMethods.AddAttributes(settings.ExtraAttributes));
5456 WriteLiteral(">\r\n");
5457 }
5458
5459 foreach (var field in settings.GetFields())
5460 {
5461 Render(field);
5462 }
5463
5464 WriteLiteral(" ");
5465 WriteLiteral("</form>\r\n");
5466 }
5467 }
5468
5469 void RenderText(Text settings)
5470 {
5471 Write(settings.Content);
5472
5473 }
5474
5475 void RenderContentModule(ContentModule settings) {
5476 if (!string.IsNullOrEmpty(settings.Content))
5477 {
5478 Write(settings.Content);
5479
5480 }
5481 }
5482
5483 void RenderModal(Modal settings) {
5484 if (settings != null)
5485 {
5486 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N");
5487
5488 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : "";
5489
5490 WriteLiteral(" <input type=\"checkbox\"");
5491 BeginWriteAttribute("id", " id=\"", 95694, "\"", 95721, 2);
5492 WriteAttributeValue("", 95699, modalId, 95699, 10, false);
5493 WriteAttributeValue("", 95709, "ModalTrigger", 95709, 12, true);
5494 EndWriteAttribute();
5495 WriteLiteral(" class=\"modal-trigger\" ");
5496 Write(onchange);
5497 WriteLiteral(" />\r\n");
5498 WriteLiteral(" <div class=\"modal-container\">\r\n");
5499 if (!settings.DisableDarkOverlay)
5500 {
5501 WriteLiteral(" <label");
5502 BeginWriteAttribute("for", " for=\"", 95901, "\"", 95929, 2);
5503 WriteAttributeValue("", 95907, modalId, 95907, 10, false);
5504 WriteAttributeValue("", 95917, "ModalTrigger", 95917, 12, true);
5505 EndWriteAttribute();
5506 BeginWriteAttribute("id", " id=\"", 95930, "\"", 95957, 2);
5507 WriteAttributeValue("", 95935, modalId, 95935, 10, false);
5508 WriteAttributeValue("", 95945, "ModalOverlay", 95945, 12, true);
5509 EndWriteAttribute();
5510 WriteLiteral(" class=\"modal-overlay\"></label>\r\n");
5511 }
5512 WriteLiteral(" <div");
5513 BeginWriteAttribute("class", " class=\"", 96030, "\"", 96139, 5);
5514 WriteAttributeValue("", 96038, "modal", 96038, 5, true);
5515 WriteAttributeValue(" ", 96043, "modal--", 96044, 8, true);
5516 WriteAttributeValue("", 96051, settings.Width.ToString().ToLower(), 96051, 36, false);
5517 WriteAttributeValue(" ", 96087, "modal-height--", 96088, 15, true);
5518 WriteAttributeValue("", 96102, settings.Height.ToString().ToLower(), 96102, 37, false);
5519 EndWriteAttribute();
5520 BeginWriteAttribute("id", " id=\"", 96140, "\"", 96160, 2);
5521 WriteAttributeValue("", 96145, modalId, 96145, 10, false);
5522 WriteAttributeValue("", 96155, "Modal", 96155, 5, true);
5523 EndWriteAttribute();
5524 WriteLiteral(">\r\n");
5525 if (settings.Heading != null)
5526 {
5527 if (!string.IsNullOrEmpty(settings.Heading.Title))
5528 {
5529 WriteLiteral(" <div class=\"modal__header\">\r\n RenderHeading(settings.Heading);\r\n </div>\r\n");
5530 }
5531 }
5532 WriteLiteral(" <div");
5533 BeginWriteAttribute("class", " class=\"", 96575, "\"", 96670, 2);
5534 WriteAttributeValue("", 96583, "modal__body", 96583, 11, true);
5535 WriteAttributeValue(" ", 96594, settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "", 96595, 75, false);
5536 EndWriteAttribute();
5537 WriteLiteral(">\r\n");
5538 if (!string.IsNullOrEmpty(settings.BodyText))
5539 {
5540 Write(settings.BodyText);
5541
5542 }
5543 if (settings.BodyTemplate != null)
5544 {
5545 Write(settings.BodyTemplate);
5546
5547 }
5548
5549 var actions = settings.GetActions();
5550 WriteLiteral(" </div>\r\n");
5551 if (actions.Length > 0)
5552 {
5553 WriteLiteral(" <div class=\"modal__footer\">\r\n");
5554 foreach (var action in actions)
5555 {
5556 if (Dynamicweb.Frontend.PageView.Current().Device.ToString() != "Mobile") {
5557 action.CssClass += " u-no-margin";
5558 } else {
5559 action.CssClass += " u-full-width u-margin-bottom";
5560 }
5561
5562 Render(action);
5563 }
5564 WriteLiteral(" </div>\r\n");
5565 }
5566 WriteLiteral(" <label class=\"modal__close-btn\"");
5567 BeginWriteAttribute("for", " for=\"", 97914, "\"", 97942, 2);
5568 WriteAttributeValue("", 97920, modalId, 97920, 10, false);
5569 WriteAttributeValue("", 97930, "ModalTrigger", 97930, 12, true);
5570 EndWriteAttribute();
5571 WriteLiteral("></label>\r\n </div>\r\n </div>\r\n");
5572 }
5573 }
5574
5575 void RenderMediaListItem(MediaListItem settings)
5576 {
5577 WriteLiteral(" <div");
5578 BeginWriteAttribute("class", " class=\"", 98180, "\"", 98229, 3);
5579 WriteAttributeValue("", 98188, "media-list-item", 98188, 15, true);
5580 WriteAttributeValue(" ", 98203, settings.CssClass, 98204, 18, false);
5581 WriteAttributeValue(" ", 98222, "dw-mod", 98223, 7, true);
5582 EndWriteAttribute();
5583 WriteLiteral(" ");
5584 Write(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "");
5585 WriteLiteral(">\r\n");
5586 if (!string.IsNullOrEmpty(settings.Label))
5587 {
5588 if (!string.IsNullOrEmpty(settings.Link))
5589 {
5590 Render(new Link
5591 {
5592 Href = settings.Link,
5593 CssClass = "media-list-item__sticker dw-mod",
5594 ButtonLayout = ButtonLayout.None,
5595 Title = settings.Label,
5596 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : ""
5597 });
5598 }
5599 else if (!string.IsNullOrEmpty(settings.OnClick))
5600 {
5601 WriteLiteral(" <span class=\"media-list-item__sticker dw-mod\"");
5602 BeginWriteAttribute("onclick", " onclick=\"", 99037, "\"", 99066, 1);
5603 WriteAttributeValue("", 99047, settings.OnClick, 99047, 19, false);
5604 EndWriteAttribute();
5605 WriteLiteral(">\r\n <span class=\"u-uppercase\">");
5606 Write(settings.Label);
5607 WriteLiteral("</span>\r\n </span>\r\n");
5608 }
5609 else
5610 {
5611 WriteLiteral(" <span class=\"media-list-item__sticker media-list-item__sticker--no-link dw-mod\">\r\n <span class=\"u-uppercase\">");
5612 Write(settings.Label);
5613 WriteLiteral("</span>\r\n </span>\r\n");
5614 }
5615 }
5616 WriteLiteral(" <div class=\"media-list-item__wrap\">\r\n <div class=\"media-list-item__info dw-mod\">\r\n <div class=\"media-list-item__header dw-mod\">\r\n");
5617 if (!string.IsNullOrEmpty(settings.Title))
5618 {
5619 if (!string.IsNullOrEmpty(settings.Link))
5620 {
5621 Render(new Link
5622 {
5623 Href = settings.Link,
5624 CssClass = "media-list-item__name dw-mod",
5625 ButtonLayout = ButtonLayout.None,
5626 Title = settings.Title,
5627 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : ""
5628 });
5629 }
5630 else if (!string.IsNullOrEmpty(settings.OnClick))
5631 {
5632 WriteLiteral(" <span class=\"media-list-item__name dw-mod\"");
5633 BeginWriteAttribute("onclick", " onclick=\"", 100563, "\"", 100592, 1);
5634 WriteAttributeValue("", 100573, settings.OnClick, 100573, 19, false);
5635 EndWriteAttribute();
5636 WriteLiteral(">");
5637 Write(settings.Title);
5638 WriteLiteral("</span>\r\n");
5639 }
5640 else
5641 {
5642 WriteLiteral(" <span class=\"media-list-item__name media-list-item__name--no-link dw-mod\">");
5643 Write(settings.Title);
5644 WriteLiteral("</span>\r\n");
5645 }
5646 }
5647 WriteLiteral("\r\n");
5648 if (!string.IsNullOrEmpty(settings.Status))
5649 {
5650 WriteLiteral(" <div class=\"media-list-item__state dw-mod\">");
5651 Write(settings.Status);
5652 WriteLiteral("</div>\r\n");
5653 }
5654 WriteLiteral(" </div>\r\n");
5655
5656 settings.InfoTable.CssClass += " media-list-item__parameters-table";
5657 WriteLiteral("\r\n Render(settings.InfoTable);\r\n </div>\r\n <div class=\"media-list-item__actions dw-mod\">\r\n <div class=\"media-list-item__actions-list dw-mod\">\r\n");
5658
5659 var actions = settings.GetActions();
5660
5661 foreach (ButtonBase action in actions)
5662 {
5663 action.ButtonLayout = ButtonLayout.None;
5664 action.CssClass += " media-list-item__action link";
5665
5666 Render(action);
5667 }
5668 WriteLiteral(" </div>\r\n\r\n");
5669 if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title))
5670 {
5671 settings.SelectButton.CssClass += " u-no-margin";
5672
5673 WriteLiteral(" <div class=\"media-list-item__action-button\">\r\n Render(settings.SelectButton);\r\n </div>\r\n");
5674 }
5675 WriteLiteral(" </div>\r\n </div>\r\n </div>\r\n");
5676 }
5677
5678 void RenderTable(Table settings)
5679 {
5680 Dictionary<string, string> attributes = new Dictionary<string, string>();
5681 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
5682
5683 var enumToClasses = new Dictionary<TableDesign, string>
5684 {
5685 { TableDesign.Clean, "table--clean" },
5686 { TableDesign.Bordered, "table--bordered" },
5687 { TableDesign.Striped, "table--striped" },
5688 { TableDesign.Hover, "table--hover" },
5689 { TableDesign.Compact, "table--compact" },
5690 { TableDesign.Condensed, "table--condensed" },
5691 { TableDesign.NoTopBorder, "table--no-top-border" }
5692 };
5693 string tableDesignClass = "";
5694 if (settings.Design != TableDesign.None)
5695 {
5696 tableDesignClass = enumToClasses[settings.Design];
5697 }
5698
5699 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); }
5700
5701 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value);
5702
5703 WriteLiteral(" <table ");
5704 Write(ComponentMethods.AddAttributes(resultAttributes));
5705 WriteLiteral(">\r\n");
5706 if (settings.Header != null)
5707 {
5708 WriteLiteral(" <thead>\r\n Render(settings.Header);\r\n </thead>\r\n");
5709 }
5710 WriteLiteral(" <tbody>\r\n");
5711 foreach (var row in settings.Rows)
5712 {
5713 Render(row);
5714 }
5715 WriteLiteral(" </tbody>\r\n");
5716 if (settings.Footer != null)
5717 {
5718 WriteLiteral(" <tfoot>\r\n Render(settings.Footer);\r\n </tfoot>\r\n");
5719 }
5720 WriteLiteral(" </table>\r\n");
5721 }
5722
5723 void RenderTableRow(TableRow settings)
5724 {
5725 Dictionary<string, string> attributes = new Dictionary<string, string>();
5726 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
5727
5728 var enumToClasses = new Dictionary<TableRowDesign, string>
5729 {
5730 { TableRowDesign.NoBorder, "table__row--no-border" },
5731 { TableRowDesign.Border, "table__row--border" },
5732 { TableRowDesign.TopBorder, "table__row--top-line" },
5733 { TableRowDesign.BottomBorder, "table__row--bottom-line" },
5734 { TableRowDesign.Solid, "table__row--solid" }
5735 };
5736
5737 string tableRowDesignClass = "";
5738 if (settings.Design != TableRowDesign.None)
5739 {
5740 tableRowDesignClass = enumToClasses[settings.Design];
5741 }
5742
5743 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); }
5744
5745 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value);
5746
5747 WriteLiteral(" <tr ");
5748 Write(ComponentMethods.AddAttributes(resultAttributes));
5749 WriteLiteral(">\r\n");
5750 foreach (var cell in settings.Cells)
5751 {
5752 if (settings.IsHeaderRow)
5753 {
5754 cell.IsHeader = true;
5755 }
5756 Render(cell);
5757 }
5758 WriteLiteral(" </tr>\r\n");
5759 }
5760
5761 void RenderTableCell(TableCell settings)
5762 {
5763 Dictionary<string, string> attributes = new Dictionary<string, string>();
5764 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
5765 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); }
5766 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); }
5767 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); }
5768
5769 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value);
5770
5771 string tagName = settings.IsHeader ? "th" : "td";
5772
5773 Write("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">");
5774 Write(settings.Content);
5775 Write("</" + tagName + ">");
5776 ;
5777 }
5778
5779 BlocksPage articlePage = BlocksPage.GetBlockPage("DynamicArticle");
5780
5781 public string GetParentSettingsItem(string systemName)
5782 {
5783 string item = null;
5784
5785 Dynamicweb.Content.Page current = Dynamicweb.Services.Pages.GetPage(Model.ID);
5786 while (current != null && current.Parent != current)
5787 {
5788 var temp = current.Item != null ? current.Item[systemName] : "";
5789
5790 if (temp != null)
5791 {
5792 item = temp.ToString();
5793
5794 if (!String.IsNullOrEmpty(item) && !String.Equals("default", item, StringComparison.OrdinalIgnoreCase))
5795 {
5796 break;
5797 }
5798 }
5799
5800 current = current.Parent;
5801 }
5802
5803 return item;
5804 }
5805
5806 public string GetArticleCategory(int pageId)
5807 {
5808 string categoryName = null;
5809
5810 //Secure that the article is not in the root folder = Actual has a category
5811 if (Dynamicweb.Services.Pages.GetPage(pageId).Parent != null)
5812 {
5813 if (Dynamicweb.Services.Pages.GetPage(pageId).Parent.Parent != null)
5814 {
5815 if (!String.IsNullOrEmpty(Dynamicweb.Services.Pages.GetPage(pageId).Parent.Parent.ItemType))
5816 {
5817 categoryName = Dynamicweb.Services.Pages.GetPage(pageId).Parent.GetDisplayName();
5818 }
5819 }
5820 }
5821
5822 return categoryName;
5823 }
5824
5825 public string GetArticleCategoryColor(int pageId)
5826 {
5827 string categoryColor = "";
5828
5829 //Secure that the article is not in the root folder = Actual has a category
5830 if (Dynamicweb.Services.Pages.GetPage(pageId).Parent != null)
5831 {
5832 if (Dynamicweb.Services.Pages.GetPage(pageId).Parent.Parent != null)
5833 {
5834 if (!String.IsNullOrEmpty(Dynamicweb.Services.Pages.GetPage(pageId).Parent.Parent.ItemType))
5835 {
5836 if (Dynamicweb.Services.Pages.GetPage(pageId).Parent.Item["CategoryColor"] != null)
5837 {
5838 var service = new ColorSwatchService();
5839 categoryColor = Dynamicweb.Services.Pages.GetPage(pageId).Parent.Item["CategoryColor"].ToString();
5840
5841 if (!categoryColor.Contains("#"))
5842 {
5843 categoryColor = service.GetHexColor(Converter.ToInt32(Model.Area.ID), categoryColor);
5844 }
5845 }
5846 }
5847 }
5848 }
5849
5850 return categoryColor;
5851 }
5852 }
5853 }
5854 #pragma warning restore 1591
5855
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
2 @using System
3 @using System.Globalization;
4 @using System.Text.RegularExpressions;
5 @using Custom.Integration.Brokers;
6 @using RealMaeglerne.Dynamicweb;
7 @using Dynamicweb.Content.Items;
8 @using Dynamicweb.Environment;
9 @using Newtonsoft.Json;
10 @using Dynamicweb.Logging;
11 @using Dynamicweb.Core;
12 @using Dynamicweb.Frontend.Navigation;
13 @using Dynamicweb;
14 @using static RealMaeglerne.Library.Helper;
15
16 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
17 @using Dynamicweb.Content.Items;
18
19 @functions{
20 void RenderErhvervsTypeCheckboxes(string productGroupFilter)
21 {
22 <div class="col-xs-6 col-md-4">
23 <div class="checkbox">
24 <label>
25 <input type="checkbox" name="propertytype" value="bolig/erhverv, kombineret erhverv og bolig, byejendom (kontor, butik, beboelse)" />
26 <span>Bolig/erhverv</span>
27 </label>
28 </div>
29 <div class="checkbox">
30 <label>
31 <input type="checkbox" name="propertytype" value="erhvervsgrund" />
32 <span>Erhvervsgrund</span>
33 </label>
34 </div>
35 <div class="checkbox">
36 <label>
37 <input type="checkbox" name="propertytype" value="boligudlejning" />
38 <span>Boligudlejningsejendom</span>
39 </label>
40 </div>
41 <div class="checkbox">
42 <label>
43 <input type="checkbox" name="propertytype" value="kontor, klinik, kontorhotel, showroom, undervisningslokaler" />
44 <span>Kontor</span>
45 </label>
46 </div>
47 </div>
48 <div class="col-xs-6 col-md-4">
49 <div class="checkbox">
50 <label>
51 <input type="checkbox" name="propertytype" value="butik / detail, butik / detailhandel" />
52 <span>Butik/detailhandel</span>
53 </label>
54 </div>
55 <div class="checkbox">
56 <label>
57 <input type="checkbox" name="propertytype" value="industri / logistik, håndværk, industri, kontor / lager, logistik" />
58 <span>Produktion/lager</span>
59 </label>
60 </div>
61 <div class="checkbox">
62 <label>
63 <input type="checkbox" name="propertytype" value="hotel - kursusejendom, restaurant" />
64 <span>Hotel og restaurant</span>
65 </label>
66 </div>
67 <div class="checkbox">
68 <label>
69 <input type="checkbox" name="propertytype" value="projekt ejendom" />
70 <span>Projektejendom</span>
71 </label>
72 </div>
73 </div>
74 <div class="col-xs-6 col-md-4">
75 <div class="checkbox">
76 <label>
77 <input type="checkbox" name="propertytype" value="andet" />
78 <span>Andet</span>
79 </label>
80 </div>
81 </div>
82
83 <input type="hidden" name="propertycategory" value="erhverv, udlejning" />
84 <input type="hidden" name="filtrering" value="@productGroupFilter" />
85 }
86 void RenderBoligtypeCheckboxes()
87 {
88 <div class="col-6 col-md-4">
89 <div class="checkbox">
90 <label>
91 <input type="checkbox" name="propertytype" value="villa" />
92 <span>Villa</span>
93 </label>
94 </div>
95 <div class="checkbox">
96 <label>
97 <input type="checkbox" name="propertytype" value="rækkehus" />
98 <span>Rækkehus</span>
99 </label>
100 </div>
101 <div class="checkbox">
102 <label>
103 <input type="checkbox" name="propertytype" value="villalejlighed" />
104 <span>Villalejlighed</span>
105 </label>
106 </div>
107 <div class="checkbox">
108 <label>
109 <input type="checkbox" name="propertytype" value="andelsbolig" />
110 <span>Andelsbolig</span>
111 </label>
112 </div>
113 </div>
114 <div class="col-6 col-md-4">
115 <div class="checkbox">
116 <label>
117 <input type="checkbox" name="propertytype" value="fritidshus, fritidsbolig" />
118 <span>Fritidsbolig</span>
119 </label>
120 </div>
121 <div class="checkbox">
122 <label>
123 <input type="checkbox" name="propertytype" value="ejerlejlighed" class="specialOption" data-disable-slider="#grundareal" data-disable-slider-ranges="#grundarealmin,#grundarealmax" />
124 <span>Ejerlejlighed</span>
125 </label>
126 </div>
127 <div class="checkbox">
128 <label>
129 <input type="checkbox" name="propertytype" value="helårsgrund" class="specialOption" data-disable-slider="#boligareal,#roomsslider" data-disable-slider-ranges="#boligarealmin,#boligarealmax,#roomsmin" />
130 <span>Helårsgrund</span>
131 </label>
132 </div>
133 <div class="checkbox">
134 <label>
135 <input type="checkbox" name="propertytype" value="fritidsgrund" class="specialOption" data-disable-slider="#boligareal,#roomsslider" data-disable-slider-ranges="#boligarealmin,#boligarealmax,#roomsmin" />
136 <span>Fritidsgrund</span>
137 </label>
138 </div>
139 </div>
140 <div class="col-6 col-md-4">
141 <div class="checkbox">
142 <label>
143 <input type="checkbox" name="propertytype" value="landejendom, lystejendom" class="specialOption" data-disable-checkbox="true" />
144 <span>Landejendom</span>
145 </label>
146 </div>
147 <div class="checkbox">
148 <label>
149 <input type="checkbox" name="propertytype" value="erhverv" class="specialOption" data-disable-checkbox="true" data-disable-slider="#roomsslider" data-disable-slider-ranges="#roomsmin" />
150 <span>Erhverv</span>
151 </label>
152 </div>
153 </div>
154 }
155
156 void RenderChecked(string queryString)
157 {
158 if (Dynamicweb.Context.Current.Request.QueryString["propertytype"] == queryString)
159 {
160 @("checked")
161 }
162 }
163
164 void RenderBoligtypeCheckboxesDropdown()
165 {
166 Dictionary<string, string> propertyTypes = new Dictionary<string, string>(){
167 { "Villa", "villa" }, { "Rækkehus", "rækkehus" }, { "Villalejlighed", "villalejlighed" },
168 { "Andelsbolig", "andelsbolig" }
169 };
170 foreach (KeyValuePair<string, string> type in propertyTypes)
171 {
172 bool ischecked = false;
173 string[] propertytypeSplit = new string[0];
174 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["propertytype"]))
175 {
176 propertytypeSplit = Dynamicweb.Context.Current.Request.QueryString["propertytype"].Split(',');
177 }
178 foreach (var propertytypeParams in propertytypeSplit)
179 {
180 if (propertytypeParams == type.Value)
181 {
182 ischecked = true;
183 }
184 }
185 <li>
186 <label class="checkbox-container d-flex">
187 @Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + "")
188 <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" />
189 <span class="checkmark grey"></span>
190 </label>
191 </li>
192 }
193
194 Dictionary<string, string> propertyTypes2 = new Dictionary<string, string>(){
195 { "Fritidsbolig", "fritidshus, fritidsbolig" }, { "Ejerlejlighed", "ejerlejlighed" }, { "Helårsgrund", "helårsgrund" },
196 { "Fritidsgrund", "fritidsgrund" }, { "Landejendom", "landejendom, lystejendom" }
197 };
198 foreach (KeyValuePair<string, string> type in propertyTypes2)
199 {
200 bool ischecked = false;
201 string[] propertytypeSplit2 = new string[0];
202 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["propertytype"]))
203 {
204 propertytypeSplit2 = Dynamicweb.Context.Current.Request.QueryString["propertytype"].Split(',');
205 }
206 foreach (var propertytypeParams in propertytypeSplit2)
207 {
208 if (propertytypeParams == type.Value)
209 {
210 ischecked = true;
211 }
212 }
213 <li>
214 <label class="checkbox-container d-flex">
215 @Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + "")
216 @if (type.Value == "ejerlejlighed")
217 {
218 <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" />
219 }
220 else if (type.Value == "helårsgrund")
221 {
222 <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" />
223 }
224 else if (type.Value == "fritidsgrund")
225 {
226 <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" />
227 }
228 else
229 {
230 <input type="checkbox" name="propertytype" value="@type.Value" class="js-input-check datavalue" data-val="@type.Key" onchange="submitFilter()" checked="@ischecked" />
231 }
232 <span class="checkmark grey"></span>
233 </label>
234 </li>
235 }
236 }
237
238 void RenderBoligTypeErhverv(bool submitOnChange = false, bool frontpage = false)
239 {
240 Dictionary<string, string> erhverType = new Dictionary<string, string>(){
241 { "Kontor", "OwnUseOffices" }, { "Lager + Produktion", "OwnUseStoresAndProductions" }, { "Detailhandel", "OwnUseRetailAndStores" },
242 { "Grunde", "OwnUseParcel" }, { "Andre typer", "OwnUseOtherTypes" }, { "Hotel + Restaurant", "OwnUseHotelsAndRestaurants" }
243 };
244 var submitonchange = "";
245 if (submitOnChange)
246 {
247 submitonchange = "onchange='submitFilter()'";
248 }
249
250 foreach (KeyValuePair<string, string> type in erhverType)
251 {
252 string ischecked = "";
253 string[] olineParamsSplit = new string[0];
254 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["olinecategory"]))
255 {
256 olineParamsSplit = Dynamicweb.Context.Current.Request.QueryString["olinecategory"].Split(',');
257 }
258 foreach (var olineParams in olineParamsSplit)
259 {
260 if (olineParams == type.Value)
261 {
262 ischecked = "checked";
263 }
264 }
265
266 <li>
267 <label class="checkbox-container d-flex">
268 @Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + "")
269 <input type="checkbox" name="olinecategory" value="@type.Value" class="js-input-check datavalue" data-val="@type.Key" @submitonchange @ischecked />
270 <span class="checkmark grey"></span>
271 </label>
272 </li>
273 }
274 }
275
276 void RenderBoligTypeErhvervInvest(bool submitOnChange = false)
277 {
278 Dictionary<string, string> erhverType = new Dictionary<string, string>(){
279 { "Kontor", "Kontor" }, { "Lager + Produktion", "InvestmentStoresAndProductions" }, { "Boligudlejning", "InvestmentHousingRental" },
280 { "Detailhandel", "InvestmentRetailAndStores" }, { "Grunde", "InvestmentParcel" }, { "Hotel + Restaurant", "InvestmentHotelsAndRestaurants" }, { "Andre typer", "InvestmentOtherTypes" }
281 };
282
283 foreach (KeyValuePair<string, string> type in erhverType)
284 {
285 bool ischecked = false;
286 string[] olineParamsSplit = new string[0];
287 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString["olinecategory"]))
288 {
289 olineParamsSplit = Dynamicweb.Context.Current.Request.QueryString["olinecategory"].Split(',');
290 }
291 foreach (var olineParams in olineParamsSplit)
292 {
293 if (olineParams == type.Value)
294 {
295 ischecked = true;
296 }
297 }
298
299 <li>
300 <label class="checkbox-container">
301 @Translate("Smartpage:Search.DropDown." + type.Key + "", "" + type.Key + "")
302 <input type="checkbox" name="olinecategory" value="@type.Value" class="js-input-check datavalue" data-val="@type.Key" onchange="submitFilter()" checked="@ischecked" />
303 <span class="checkmark grey"></span>
304 </label>
305 </li>
306 }
307 }
308 int GetWebsiteSettingsPageId(string pageSysName)
309 {
310 int sideId = 0;
311
312 var pw = Dynamicweb.Frontend.PageView.Current();
313
314 string settingsItemId = "1";
315
316 if ((pw.Area.Item.ContainsKey("Type") && pw.Area.Item["Type"].ToString() == "bone") || Dynamicweb.Context.Current.Request.QueryString["bone"] == "true")
317 {
318 settingsItemId = "2";
319 }
320
321 var settingsItem = ItemManager.Storage.GetById("Delte_Egenskaber", settingsItemId);
322
323 if (settingsItem == null || !settingsItem.ContainsKey(pageSysName))
324 {
325 return sideId;
326 }
327
328 string boligsideLink = settingsItem[pageSysName] as String;
329 string linkPrefix = "Default.aspx?ID=";
330
331 if (!String.IsNullOrEmpty(boligsideLink) && boligsideLink.ToLower().StartsWith(linkPrefix.ToLower()))
332 {
333 Int32.TryParse(boligsideLink.Substring(linkPrefix.Length), out sideId);
334 }
335
336 return sideId;
337 }
338
339 int GetPageSettingsPageId(string pageSysName)
340 {
341 int sideId = 0;
342
343 var pw = Dynamicweb.Frontend.PageView.Current();
344
345 if (pw.Page == null || pw.Page.PropertyItem == null || !pw.Page.PropertyItem.ContainsKey(pageSysName))
346 {
347 return sideId;
348 }
349
350 string boligsideLink = pw.Page.PropertyItem[pageSysName] as String;
351 string linkPrefix = "Default.aspx?ID=";
352
353 if (!String.IsNullOrEmpty(boligsideLink) && boligsideLink.ToLower().StartsWith(linkPrefix.ToLower()))
354 {
355 Int32.TryParse(boligsideLink.Substring(linkPrefix.Length), out sideId);
356 }
357
358 return sideId;
359 }
360 void RenderMobileSelectBox(string name, int max, int step, string className, string inputname)
361 {
362 <select class="form-control d-block d-lg-none mb-10 @className" onchange="submitFilter()" name="@inputname">
363 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder." + name + "", "" + name + "")</option>
364
365 @for (var i = 0; i <= max; i += step)
366 {
367 var selected = string.Empty;
368 var current = string.Empty;
369 if (i == max)
370 {
371 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString[inputname]) && Dynamicweb.Context.Current.Request.QueryString[inputname] == Convert.ToString(i))
372 {
373 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")' selected="selected">@Convert.ToInt32(i).ToString("N0")+</option>
374 }
375 else
376 {
377 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")+</option>
378 }
379 }
380 else
381 {
382 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString[inputname]) && Dynamicweb.Context.Current.Request.QueryString[inputname] == Convert.ToString(i))
383 {
384 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")' selected="selected">@Convert.ToInt32(i).ToString("N0")</option>
385 }
386 else
387 {
388 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option>
389 }
390 }
391 }
392 </select>
393 }
394
395 void RenderTopFilter(string parameter)
396 {
397 if (parameter == "pricemin" || parameter == "pricemax")
398 {
399 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["pricemin"]))
400 {
401 if (parameter == "pricemin")
402 {
403 @("<div class='search-terms' id='priceFilter'>")
404 @("Pris ") @Dynamicweb.Context.Current.Request[parameter]
405 }
406
407 else
408 {
409 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kr.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="pricemin,pricemax"></i>
410 @("</div>")
411 }
412 }
413 }
414
415 else if (parameter == "subsidymin" || parameter == "subsidymax")
416 {
417 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["subsidymin"]))
418 {
419 if (parameter == "subsidymin")
420 {
421 @("<div class='search-terms' id='subsidyFilter'>")
422 @("Årlig leje ") @Dynamicweb.Context.Current.Request[parameter]
423 }
424
425 else
426 {
427 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kr.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="subsidymin,subsidymax"></i>
428 @("</div>")
429 }
430 }
431 }
432 else if (parameter == "etagearealmin" || parameter == "etagearealmax")
433 {
434 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["etagearealmin"]))
435 {
436 if (parameter == "etagearealmin")
437 {
438 @("<div class='search-terms' id='etagearealFilter'>")
439 @("Etageareal ") @Dynamicweb.Context.Current.Request[parameter]
440 }
441
442 else
443 {
444 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kvm.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="etagearealmin,etagearealmax"></i>
445 @("</div>")
446 }
447 }
448 }
449
450 else if (parameter == "grundarealmin" || parameter == "grundarealmax")
451 {
452 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["grundarealmin"]))
453 {
454 if (parameter == "grundarealmin")
455 {
456 @("<div class='search-terms' id='grundarealFilter'>")
457 @("Grundareal ") @Dynamicweb.Context.Current.Request[parameter]
458 }
459
460 else
461 {
462 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kvm.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="grundarealmin,grundarealmax"></i>
463 @("</div>")
464 }
465 }
466 }
467
468 else if (parameter == "subsidykvmmin" || parameter == "subsidykvmmax")
469 {
470 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["subsidykvmmin"]))
471 {
472 if (parameter == "subsidykvmmin")
473 {
474 @("<div class='search-terms' id='subsidykvmFilter'>")
475 @("Årlig leje kvm ") @Dynamicweb.Context.Current.Request[parameter]
476 }
477
478 else
479 {
480 @(" - ") @Dynamicweb.Context.Current.Request[parameter] @(" kr.") <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="subsidykvmmin,subsidykvmmax"></i>
481 @("</div>")
482 }
483 }
484 }
485
486 else if (parameter == "olinecategory")
487 {
488
489 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["olinecategory"]))
490 {
491 Dictionary<string, string> erhverType = new Dictionary<string, string>(){
492 {"OwnUseOffices", "Kontor" }, { "OwnUseStoresAndProductions","Lager + Produktion" }, { "OwnUseRetailAndStores","Detailhandel" },
493 { "OwnUseParcel", "Grunde" }, { "OwnUseHotelsAndRestaurants", "Hotel + Restaurant" }, { "OwnUseOtherTypes", "Andre typer"},
494 { "Kontor", "Kontor" }, { "InvestmentStoresAndProductions", "Lager + Produktion" }, { "InvestmentHousingRental", "Boligudlejning" },
495 { "InvestmentRetailAndStores", "Detailhandel" }, { "InvestmentParcel", "Grunde" }, { "InvestmentHotelsAndRestaurants", "Hotel + Restaurant" }, { "InvestmentOtherTypes", "Andre typer" }
496 };
497
498
499 foreach (var er in erhverType)
500 {
501 if (Dynamicweb.Context.Current.Request[parameter].Contains(er.Key))
502 {
503 <div class="search-terms" id="@parameter">
504 @er.Value <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="@parameter" data-val="@er.Key"></i>
505 </div>
506 }
507 }
508 }
509 }
510 else if (parameter == "search")
511 {
512 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request["search"]))
513 {
514 <div class="search-terms" id="@parameter">
515 @Dynamicweb.Context.Current.Request[parameter] <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="@parameter"></i>
516 </div>
517 }
518 }
519 else
520 {
521 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request[parameter]))
522 {
523 Dictionary<string, string>
524 ubudsform = new Dictionary<string, string>
525 (){
526 {"salg", "Salg" }, { "leje","Leje" }
527 };
528
529 foreach (var er in ubudsform)
530 {
531 if (Dynamicweb.Context.Current.Request[parameter].Contains(er.Key))
532 {
533 <div class="search-terms" id="@parameter">
534 @er.Value <i class="fa fa-times ml-2 pointer" onclick="removeParams(this)" data-tag="@parameter" data-val="@er.Key"></i>
535 </div>
536 }
537 }
538
539
540 }
541 }
542 }
543
544 void RenderSelectValue(string dropdownname, string dropdownvalue, string queryString)
545 {
546 var selected = "";
547 if (!string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString[queryString]) && Dynamicweb.Context.Current.Request.QueryString[queryString] == dropdownvalue)
548 {
549 selected = "selected";
550 }
551
552 var current = string.Format("<option value='" + dropdownvalue + "'>" + dropdownname + "</option>", selected);
553
554 @current
555 }
556
557 void RenderSearchForHousing(int searchPageId, string querySearch, string querySearchNameAttr, string queryZipCodeFrom, string queryZipCodeTo, string template, Item SettingsItem, string cssClasses = "")
558 {
559 <div class="main-search-form frontpage @cssClasses">
560 <div class="dropdown-overlay"></div>
561 <div class="row mb-3 align-items-center">
562 <div class="col-xs-12 col-md-3 border-right">
563 <h3>@Translate("Smartpage:Search.Søg bolig", "Søg bolig")</h3>
564 </div>
565 <div class="col-xs-12 col-md-9 home-count d-none d-md-block">
566 <span class="search-count" id="searchCounter">0</span> <span>@Translate("Smartpage:Search.BoligerTilSalg", "Boliger til salg")</span>
567 </div>
568 </div>
569
570 <form id="main-search-frontpage" class="searchbar-wrapper" action="/Default.aspx" method="GET">
571 <input type="hidden" name="ID" value='@searchPageId' id="searchPageId-frontpage" disabled="disabled" />
572 <div class="row form-wrapper no-gutters">
573
574 <div class="col-xs-12 col-md-5 col-searchbar">
575 <div class="searchbar">
576 <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)" />
577 <input type="hidden" id="zipcodefrom-frontpage" name="zipcodefrom" value="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(queryZipCodeFrom)" />
578 <input type="hidden" id="zipcodeto-frontpage" name="zipcodeto" value="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(queryZipCodeTo)" />
579 </div>
580 </div>
581 <div class="col-xs-12 col-md-5">
582 <div class="row no-gutters">
583 <div class="col-xs-12 col-md-6 input-col">
584 <div class="dropdown w-overlay">
585 <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">
586 @Translate("Smartpage:Search.Boligtype", "Boligtype")
587 </button>
588 <div class="dropdown-menu box-shadow bolig-dropdown-container" aria-labelledby="Boligtype">
589 <ul class="bolig-dropdown list-unstyled">
590 @{
591 RenderBoligtypeCheckboxesDropdown();
592 }
593 </ul>
594 <span class="border-fat"></span>
595 <button class="btn btn-primary js-close-dropdown">@Translate("Smartpage:Search.Anvend", "Anvend")</button>
596 </div>
597
598 </div>
599
600 </div>
601 <div class="col-xs-12 col-md-6 input-col">
602 <div class="dropdown w-overlay">
603 <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">
604 @Translate("Smartpage:Search.Pris", "Pris")
605 </button>
606 <div class="dropdown-menu box-shadow dropdown-price" aria-labelledby="Pris">
607 <input type="text" class="form-control mb-10 js-auto-thousand js-pricemin-frontpage-input" placeholder='@Translate("Smartpage:Search.Placeholder.MinPris","Min. pris")' />
608 <select class="form-control js-pricemin-frontpage-select js-input-min-select mb-10">
609 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris")</option>
610 @for (var i = 0; i <= 10000000; i += 100000)
611 {
612 if (i == 10000000)
613 {
614 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")+'>@Convert.ToInt32(i).ToString("N0")+</option>
615 }
616 else
617 {
618 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option>
619 }
620 }
621 </select>
622 <input type="hidden" id="pricemin-frontpage" name="pricemin" />
623
624 <input type="text" class="form-control js-auto-thousand js-pricemax-frontpage-input" placeholder='@Translate("Smartpage:Search.Placeholder.MaxPris","Max. pris")' />
625 <select class="form-control js-pricemax-frontpage-select js-input-max-select">
626 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris")</option>
627 @for (var i = 0; i <= 10000000; i += 100000)
628 {
629 if (i == 10000000)
630 {
631 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")+'>@Convert.ToInt32(i).ToString("N0")+</option>
632 }
633 else
634 {
635 <option value="@i" data-value='@Convert.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option>
636 }
637 }
638 </select>
639 <input type="hidden" id="pricemax-frontpage" name="pricemax" />
640 <button class="btn btn-primary js-close-dropdown mt-3">@Translate("Smartpage:Search.Anvend", "Anvend")</button>
641 </div>
642 </div>
643 </div>
644 </div>
645 </div>
646 <div class="col-xs-12 col-md-2 d-none d-md-block">
647 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search"></i> @Translate("Smartpage:Search.Søg", "Søg")</button>
648 </div>
649 </div>
650
651 <div class="row moresearch-btn no-gutters">
652 <div class="col-sm-12">
653 <div class="row align-items-center no-gutters">
654 <div class="col-12 col-md-4">
655 <button class="btn-blank js-search-collapse" type="button" data-toggle="collapse" data-target="#moreSearch" aria-expanded="false" aria-controls="moreSearch">
656 <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>
657 </button>
658 </div>
659 <div class="col-6 col-md-2 mb-xs-4">
660 <a class="js-reset reset-btn">@Translate("Smartpage:Search.NulstilValg", "Nulstil valg")</a>
661 </div>
662 </div>
663
664 <div class="collapse" id="moreSearch">
665 <h4 class="mt-20"><b>@Translate("Smartpage:Search.Bolig", "Bolig")</b></h4>
666 <div class="row align-items-end mb-30">
667 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0">
668 <div class="filter-container row">
669 <label class="d-block col-12">@Translate("Smartpage:Search.Boligareal", "Boligareal")</label>
670 <div class="col-6 pr-sm-0 pr-2">
671 <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")' />
672 <select class="form-control js-boligarealmin-frontpage-select js-count">
673 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")</option>
674 @for (var i = 0; i <= 300; i += 10)
675 {
676 if (i == 300)
677 {
678 <option value="@i">@i+</option>
679 }
680 else
681 {
682 <option value="@i">@i</option>
683 }
684 }
685 </select>
686 </div>
687 <div class="col-6 pl-sm-0 pl-2">
688 <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")' />
689 <select class="form-control js-boligarealmax-frontpage-select js-count">
690 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")</option>
691 @for (var i = 0; i <= 300; i += 10)
692 {
693 if (i == 300)
694 {
695 <option value="@i">@i+</option>
696 }
697 else
698 {
699 <option value="@i">@i</option>
700 }
701 }
702 </select>
703 </div>
704 </div>
705 </div>
706 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0">
707 <div class="filter-container row">
708 <label class="d-block col-12">@Translate("Smartpage:Search.Grundareal", "Grundareal")</label>
709 <div class="col-6 pr-sm-0 pr-2">
710 <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")' />
711 <select class="form-control js-grundarealmin-frontpage-select js-count">
712 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")</option>
713 @for (var i = 0; i <= 10000; i += 100)
714 {
715 if (i == 10000)
716 {
717 <option value="@i">@i+</option>
718 }
719 else
720 {
721 <option value="@i">@i</option>
722 }
723 }
724 </select>
725 </div>
726 <div class="col-6 pl-sm-0 pl-2">
727 <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")' />
728 <select class="form-control js-grundarealmax-frontpage-select js-count">
729 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")</option>
730 @for (var i = 0; i <= 10000; i += 100)
731 {
732 if (i == 10000)
733 {
734 <option value="@i">@i+</option>
735 }
736 else
737 {
738 <option value="@i">@i</option>
739 }
740 }
741 </select>
742 </div>
743 </div>
744 </div>
745 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0">
746 <div class="filter-container row">
747 <label class="d-block col-12">Antal rum</label>
748
749 <div class="col-6 pr-sm-0 pr-2">
750 <select name="roomsmin" id="roomsmin-frontpage" class="form-control reverse js-count">
751 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Min", "Min")</option>
752 <option value="1">1</option>
753 <option value="2">2</option>
754 <option value="3">3</option>
755 <option value="4">4</option>
756 <option value="5+">5+</option>
757 </select>
758 </div>
759 <div class="col-6 pl-sm-0 pl-2">
760 <select name="roomsmax" id="roomsmax-frontpage" class="form-control reverse js-count">
761 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Max", "Max")</option>
762 <option value="1">1</option>
763 <option value="2">2</option>
764 <option value="3">3</option>
765 <option value="4">4</option>
766 <option value="5+">@Translate("Smartpage:Rooms.5", "5")</option>
767 </select>
768 </div>
769 </div>
770 </div>
771 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0">
772 <div class="row">
773 <div class="col-12">
774 <div class="filter-container">
775 <label class="d-block">Energimærke</label>
776 <select name="energylabel" id="energylabel-frontpage" class="form-control reverse js-count">
777 <option disabled selected="selected">@Translate("Smartpage:Search.Vælg", "Vælg")</option>
778 <option value="01">G</option>
779 <option value="02">F</option>
780 <option value="03">E</option>
781 <option value="04">D</option>
782 <option value="05">C</option>
783 <option value="06">B</option>
784 <option value="07">A</option>
785 <option value="08">A2010</option>
786 <option value="09">A2015</option>
787 <option value="10">A2020+</option>
788 </select>
789 </div>
790 </div>
791 </div>
792 </div>
793 <div class="col-12 col-sm-6 col-lg-3 mt-3">
794 <h4 class=""><b>@Translate("Smartpage:Search.Økonomi", "Økonomi")</b></h4>
795 <div class="filter-container row">
796 <label class="d-block col-12">@Translate("Smartpage:Search.Ejerudgift/boligydelse pr. måned", "Ejerudgift/boligydelse pr. måned")</label>
797 <div class="col-6 pr-sm-0 pr-2">
798 <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")' />
799 <select class="form-control js-subsidymin-frontpage-select js-count">
800 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MinDKK", "Min. DKK")</option>
801 @for (var i = 0; i <= 25000; i += 1250)
802 {
803 if (i == 25000)
804 {
805 <option>@Convert.ToInt32(i).ToString("N0")+</option>
806 }
807 else
808 {
809 <option>@Convert.ToInt32(i).ToString("N0")</option>
810 }
811 }
812 </select>
813 </div>
814 <div class="col-6 pl-sm-0 pl-2">
815 <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")' />
816 <select class="form-control js-subsidymax-frontpage-select js-count">
817 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MaxDKK", "Max. DKK")</option>
818 @for (var i = 0; i <= 25000; i += 1250)
819 {
820 if (i == 25000)
821 {
822 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")+</option>
823 }
824 else
825 {
826 <option value="@Convert.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")</option>
827 }
828 }
829 </select>
830 </div>
831 </div>
832 </div>
833 <div class="col-12 col-sm-6 col-lg-4 offset-lg-5 mt-3 mt-sm-0">
834 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search"></i> @Translate("Smartpage:Search.AnvendFiltre", "Anvend filtre")</button>
835 </div>
836 </div>
837 </div>
838 </div>
839 </div>
840
841 <div class="row d-block d-md-none form-wrapper no-gutters">
842 <div class="col-xs-12 col-md-2">
843 <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>
844 </div>
845 </div>
846 </form>
847 <div class="front-page-actions d-md-none">
848 <div>
849 <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>
850 </div>
851 <div>
852 @{
853 string brokerSearchId = SettingsItem != null ? Dynamicweb.Core.Converter.ToString(SettingsItem["Maeglersogning"]).Replace("Default.aspx?Id=", "") : "";
854 string ctaText = Translate("Smartpage.Frontpage.Mobile.FindBroker", "FIND EJENDOMSMÆGLER");
855 <form method="GET" action="/Default.aspx">
856 <input name="id" value="@brokerSearchId" type="hidden" />
857 <div class="icon-wrapper-wclick">
858 <i class="fas fa-search ta-submit-on-icon-click"></i>
859 <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'" />
860 </div>
861 </form>
862 }
863 </div>
864 <div>
865 <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>
866 </div>
867 </div>
868 </div>
869
870 }
871 Custom.Integration.Brokers.Models.BrokerEmployee GetBrokerFromCurrentProduct()
872 {
873 string productId = Dynamicweb.Context.Current.Request["ProductId"];
874
875 if (string.IsNullOrWhiteSpace(productId))
876 {
877 return null;
878 }
879
880 var propertyProduct = Dynamicweb.Ecommerce.Services.Products.GetProductById(productId, string.Empty, true);
881 if (propertyProduct == null)
882 {
883 return null;
884 }
885
886 string employee = Dynamicweb.Core.Converter.ToString(
887 Dynamicweb.Ecommerce.Services.Products.GetProductFieldValue(propertyProduct, "xAktoererMaeglerKontaktEmail")
888 );
889 string storeId = Dynamicweb.Core.Converter.ToString(
890 Dynamicweb.Ecommerce.Services.Products.GetProductFieldValue(propertyProduct, "xButikID")
891 );
892
893 if (string.IsNullOrWhiteSpace(employee) || string.IsNullOrWhiteSpace(storeId))
894 {
895 return null;
896 }
897
898 return Custom.Integration.Brokers.Search.GetEmployee(storeId, employee);
899 }
900
901 string GetAgentTitleFromCurrentProduct()
902 {
903 var propBroker = GetBrokerFromCurrentProduct();
904
905 if (propBroker?.Broker == null)
906 {
907 return string.Empty;
908 }
909
910 if (!string.IsNullOrEmpty(propBroker.Broker.CompanyName))
911 {
912 return propBroker.Broker.CompanyName;
913 }
914
915 return propBroker.Broker.Name ?? string.Empty;
916 }
917
918 string GetMasterBrokerUrlFromCurrentProduct()
919 {
920 var propBroker = GetBrokerFromCurrentProduct();
921
922 var itemId = propBroker?.Broker?.ItemId;
923 var itemType = propBroker?.Broker?.ItemType;
924
925 if (string.IsNullOrWhiteSpace(itemId) || string.IsNullOrWhiteSpace(itemType))
926 {
927 return string.Empty;
928 }
929 var brokerItem = Dynamicweb.Content.Items.ItemManager.Storage.GetById(itemType, itemId);
930
931 if (brokerItem == null)
932 {
933 return string.Empty;
934 }
935
936 var websiteId = Dynamicweb.Core.Converter.ToInt32(brokerItem["WebsiteId"]);
937 var page = Dynamicweb.Content.Services.Pages.GetFirstPageForArea(websiteId);
938 return Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl("Default.aspx?Id=" + page?.ID);
939 }
940
941 // === Video link helpers (used by the property page) ===
942
943 // True when the link points directly at a video file we can play in a <video> element. Everything else is iframed.
944 bool IsDirectVideoFile(string url)
945 {
946 if (string.IsNullOrWhiteSpace(url)) { return false; }
947
948 // Strip query/fragment before checking the file extension.
949 string path = url.Split('?', '#')[0];
950 string[] directExtensions = { ".mp4", ".webm", ".ogg", ".ogv", ".mov", ".m4v" };
951 foreach (var ext in directExtensions)
952 {
953 if (path.EndsWith(ext, StringComparison.InvariantCultureIgnoreCase)) { return true; }
954 }
955 return false;
956 }
957
958 string GetYouTubeId(string url)
959 {
960 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; }
961
962 string[] patterns = { @"youtu\.be/([^?&/]+)", @"[?&]v=([^?&]+)", @"/embed/([^?&/]+)", @"/shorts/([^?&/]+)" };
963 foreach (var pattern in patterns)
964 {
965 var match = System.Text.RegularExpressions.Regex.Match(url, pattern);
966 if (match.Success) { return match.Groups[1].Value; }
967 }
968
969 return string.Empty;
970 }
971
972 string GetVimeoId(string url)
973 {
974 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; }
975 var match = System.Text.RegularExpressions.Regex.Match(url, @"vimeo\.com/(?:.*?/)?(\d+)");
976 return match.Success ? match.Groups[1].Value : string.Empty;
977 }
978
979 string GetVimeoHash(string url)
980 {
981 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; }
982 // Unlisted videos carry a privacy hash: vimeo.com/{id}/{hash}
983 var match = System.Text.RegularExpressions.Regex.Match(url, @"vimeo\.com/(?:.*?/)?\d+/(\w+)");
984 return match.Success ? match.Groups[1].Value : string.Empty;
985 }
986
987 // Builds the iframe src for a non-file link. YouTube/Vimeo share links are rewritten to their embeddable form
988 // (their pages block framing); every other link (Matterport, CR3, already-embeddable pages) is used as-is.
989 string BuildEmbedUrl(string url, bool background)
990 {
991 if (string.IsNullOrWhiteSpace(url)) { return string.Empty; }
992
993 if (url.Contains("youtube", StringComparison.InvariantCultureIgnoreCase) || url.Contains("youtu.be", StringComparison.InvariantCultureIgnoreCase))
994 {
995 string id = GetYouTubeId(url);
996 if (!string.IsNullOrEmpty(id))
997 {
998 string baseUrl = "https://www.youtube-nocookie.com/embed/" + id;
999 return background
1000 ? baseUrl + "?autoplay=1&mute=1&loop=1&playlist=" + id + "&controls=0&playsinline=1&rel=0"
1001 : baseUrl + "?rel=0";
1002 }
1003 }
1004 else if (url.Contains("vimeo", StringComparison.InvariantCultureIgnoreCase))
1005 {
1006 string id = GetVimeoId(url);
1007 if (!string.IsNullOrEmpty(id))
1008 {
1009 string baseUrl = "https://player.vimeo.com/video/" + id;
1010 var queryParams = new List<string>();
1011 string hash = GetVimeoHash(url);
1012 if (!string.IsNullOrEmpty(hash)) { queryParams.Add("h=" + hash); }
1013 if (background) { queryParams.Add("background=1"); }
1014 return queryParams.Count > 0 ? baseUrl + "?" + string.Join("&", queryParams) : baseUrl;
1015 }
1016 }
1017
1018 // Matterport, CR3 and any already-embeddable link frame as-is.
1019 return url;
1020 }
1021 }
1022
1023 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel>
1024 @using Dynamicweb.Frontend.Navigation
1025 @using Dynamicweb.Core
1026 @using Dynamicweb.Core.Encoders
1027 @using Dynamicweb
1028
1029 @functions {
1030 void RenderSlideMenu(bool erhverv, string maeglersoegning)
1031 {
1032 <div id="menu"
1033 class="main-menu-slide "
1034 role="navigation"
1035 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.MainMenu", "Hovedmenu"))"
1036 aria-modal="true">
1037 <div class="container">
1038 <div class="row">
1039 <div class="col-12">
1040 <span class="menu-headline">MENU</span>
1041 </div>
1042 <div class="menu-slide"
1043 role="button"
1044 tabindex="0"
1045 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.CloseMenu", "Luk menu"))">
1046 <b aria-hidden="true"></b>
1047 </div>
1048 <div class="col-12 main-slidemenu" role="region" aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.NavigationLinks", "Navigationslinks"))">
1049 @{
1050 var navigationSettings = new NavigationSettings();
1051 navigationSettings.StartLevel = 1;
1052 navigationSettings.StopLevel = 2;
1053 navigationSettings.ExpandMode = ExpandMode.All;
1054 navigationSettings.RootAreaId = Pageview.Area.ID;
1055
1056 @Navigation.RenderNavigation("Navigation/slideMenu.cshtml", navigationSettings)
1057 }
1058 </div>
1059 <div class="col-12 bottom-btns">
1060
1061 @{
1062 string[] maeglerid;
1063 string maegler = !string.IsNullOrEmpty(Converter.ToString(Pageview.Area.Item["ErhvervMaeglersoegning"])) ? Converter.ToString(Pageview.Area.Item["ErhvervMaeglersoegning"]) : "Default?Id=0";
1064
1065 if (erhverv)
1066 {
1067 maeglerid = maegler.Split(new string[] { "?Id=" }, StringSplitOptions.None);
1068 }
1069 else
1070 {
1071 maeglerid = Convert.ToString(maeglersoegning).Split(new string[] { "?Id=" }, StringSplitOptions.None);
1072 }
1073
1074 <form method="GET" action="/Default.aspx" role="search">
1075 <input name="id" value="@maeglerid[1]" type="hidden" />
1076 <div class="icon-wrapper-wclick">
1077 <label for="broker-search-menu-vm" class="sr-only">@Translate("Custom:Accessibility.FindBroker", "Find mægler")</label>
1078 <i class="fas fa-search ta-submit-on-icon-click"
1079 aria-hidden="true"
1080 role="button"
1081 tabindex="0"
1082 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.SearchBroker", "Søg efter mægler"))"></i>
1083 <input id="broker-search-menu-vm"
1084 class="box-cta-input ta-postnummer ta-submit-on-select ta-submit-on-enter"
1085 name="q"
1086 type="text"
1087 placeholder="@HtmlEncoder.HtmlAttributeEncode(Translate("Smartpage:BoxWidget.FindMægler", "FIND MÆGLER"))"
1088 aria-label="@HtmlEncoder.HtmlAttributeEncode(Translate("Custom:Accessibility.BrokerSearchField", "Indtast postnummer eller navn for at finde mægler"))"
1089 onfocus="this.placeholder = 'FIND MÆGLER'" />
1090 </div>
1091 </form>
1092 }
1093 <br />
1094 @{
1095 var dpmaegler = "" + Context.Current.Session["DP"] + "Hovedmenu" + "";
1096 }
1097 <a href="javascript:panelSalgsvurdering('@dpmaegler','@Pageview.AreaID');"
1098 class="btn btn-block btn-default-invert js-close-menu"
1099 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>
1100 </div>
1101 </div>
1102 </div>
1103 </div>
1104 }
1105 }
1106 @using System.Text.RegularExpressions
1107 @using System.Collections.Generic
1108 @using System.Reflection
1109 @using Dynamicweb.Rapido.Blocks.Components
1110 @using Dynamicweb.Rapido.Blocks.Components.Articles
1111 @using Dynamicweb.Rapido.Blocks.Components.Documentation
1112 @using Dynamicweb.Rapido.Blocks
1113 @using Dynamicweb;
1114
1115 @functions {
1116 void RenderBlockList(List<Block> blocks)
1117 {
1118 bool debug = !String.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(Dynamicweb.Context.Current.Request.QueryString.Get("debug")) : false;
1119 blocks = blocks.OrderBy(item => item.SortId).ToList();
1120
1121 foreach (Block item in blocks)
1122 {
1123 if (debug) {
1124 <!-- Block START: @item.Id -->
1125 }
1126
1127 if (item.Design == null)
1128 {
1129 RenderBlock(item);
1130 }
1131 else if (item.Design.RenderType == RenderType.None) {
1132 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : "";
1133
1134 <div class="@cssClass dw-mod">
1135 RenderBlock(item);
1136 </div>
1137 }
1138 else if (item.Design.RenderType != RenderType.Hide)
1139 {
1140 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : "";
1141
1142 if (!item.SkipRenderBlocksList) {
1143 if (item.Design.RenderType == RenderType.Row)
1144 {
1145 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id">
1146 RenderBlock(item);
1147 </div>
1148 }
1149
1150 if (item.Design.RenderType == RenderType.Column)
1151 {
1152 string hidePadding = item.Design.HidePadding ? "u-no-padding" : "";
1153 string size = item.Design.Size ?? "12";
1154 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size;
1155
1156 <div class="grid__col-lg-@item.Design.Size grid__col-md-@item.Design.Size grid__col-sm-12 grid__col-xs-12 @hidePadding @cssClass dw-mod" id="Block__@item.Id">
1157 RenderBlock(item);
1158 </div>
1159 }
1160
1161 if (item.Design.RenderType == RenderType.Table)
1162 {
1163 <table class="table @cssClass dw-mod" id="Block__@item.Id">
1164 RenderBlock(item);
1165 </table>
1166 }
1167
1168 if (item.Design.RenderType == RenderType.TableRow)
1169 {
1170 <tr class="@cssClass dw-mod" id="Block__@item.Id">
1171 RenderBlock(item);
1172 </tr>
1173 }
1174
1175 if (item.Design.RenderType == RenderType.TableColumn)
1176 {
1177 <td class="@cssClass dw-mod" id="Block__@item.Id">
1178 RenderBlock(item);
1179 </td>
1180 }
1181
1182 if (item.Design.RenderType == RenderType.CardHeader)
1183 {
1184 <div class="card-header @cssClass dw-mod">
1185 RenderBlock(item);
1186 </div>
1187 }
1188
1189 if (item.Design.RenderType == RenderType.CardBody)
1190 {
1191 <div class="card @cssClass dw-mod">
1192 RenderBlock(item);
1193 </div>
1194 }
1195
1196 if (item.Design.RenderType == RenderType.CardFooter)
1197 {
1198 <div class="card-footer @cssClass dw-mod">
1199 RenderBlock(item);
1200 </div>
1201 }
1202 }
1203 else
1204 {
1205 RenderBlock(item);
1206 }
1207 }
1208
1209 if (debug) {
1210 <!-- Block END: @item.Id -->
1211 }
1212 }
1213 }
1214
1215 void RenderBlock(Block item)
1216 {
1217 bool debug = !String.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(Dynamicweb.Context.Current.Request.QueryString.Get("debug")) : false;
1218
1219 if (item.Template != null)
1220 {
1221 @BlocksPage.RenderTemplate(item.Template)
1222 }
1223
1224 if (item.Component != null)
1225 {
1226 string customSufix = "Custom";
1227 string methodName = item.Component.HelperName;
1228
1229 ComponentBase[] methodParameters = new ComponentBase[1];
1230 methodParameters[0] = item.Component;
1231 Type methodType = this.GetType();
1232
1233 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix);
1234 MethodInfo generalMethod = methodType.GetMethod(methodName);
1235
1236 try {
1237 if (debug) {
1238 <!-- Component: @methodName.Replace("Render", "") -->
1239 }
1240 @customMethod.Invoke(this, methodParameters).ToString();
1241 } catch {
1242 try {
1243 @generalMethod.Invoke(this, methodParameters).ToString()
1244 ;
1245 } catch(Exception ex) {
1246 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex);
1247 }
1248 }
1249 }
1250
1251 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList)
1252 {
1253 RenderBlockList(item.BlocksList);
1254 }
1255 }
1256 }
1257
1258
1259
1260 @* Include the components *@
1261 @using Dynamicweb.Rapido.Blocks.Components
1262 @using Dynamicweb.Rapido.Blocks.Components.General
1263 @using Dynamicweb.Rapido.Blocks
1264 @using System.IO
1265
1266 @* Required *@
1267 @using Dynamicweb.Rapido.Blocks.Components
1268 @using Dynamicweb.Rapido.Blocks.Components.General
1269 @using Dynamicweb.Rapido.Blocks
1270
1271 @functions {
1272 void Render(ComponentBase component)
1273 {
1274 if (component != null)
1275 {
1276 @component.Render(this)
1277 }
1278 }
1279 }
1280
1281 @* Components *@
1282 @using System.Reflection
1283 @using Dynamicweb.Rapido.Blocks.Components.General
1284
1285 @* Component *@
1286
1287 @functions {
1288 void RenderIcon(Icon settings)
1289 {
1290 if (settings != null)
1291 {
1292 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : "";
1293
1294 if (settings.Name != null)
1295 {
1296 if (string.IsNullOrEmpty(settings.Label))
1297 {
1298 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i>
1299 }
1300 else
1301 {
1302 if (settings.LabelPosition == IconLabelPosition.Before)
1303 {
1304 <div class="u-flex u-flex--align-items-center @settings.CssClass">@settings.Label <i class="@settings.Prefix @settings.Name u-margin-left" @color></i></div>
1305 }
1306 else
1307 {
1308 <div class="u-flex u-flex--align-items-center @settings.CssClass"><i class="@settings.Prefix @settings.Name u-margin-right--lg u-w20px" @color></i>@settings.Label</div>
1309 }
1310 }
1311 }
1312 else if (!string.IsNullOrEmpty(settings.Label))
1313 {
1314 @settings.Label
1315 }
1316 }
1317 }
1318 }
1319
1320 @using System.Reflection
1321 @using Dynamicweb.Rapido.Blocks.Components.General
1322 @using Dynamicweb.Rapido.Blocks.Components
1323 @using Dynamicweb.Core
1324 @using System.Text.RegularExpressions
1325
1326 @* Component *@
1327
1328 @functions {
1329 void RenderButton(Button settings)
1330 {
1331 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null))
1332 {
1333 Dictionary<string, string> attributes = new Dictionary<string, string>();
1334 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>();
1335 if (settings.Disabled) {
1336 attributes.Add("disabled", "true");
1337 classList.Add("disabled");
1338 }
1339
1340 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle))
1341 {
1342 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N");
1343 RenderConfirmDialog(settings);
1344 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true";
1345 }
1346
1347 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
1348 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); }
1349 if (!string.IsNullOrEmpty(settings.AltText))
1350 {
1351 attributes.Add("title", settings.AltText);
1352 }
1353 else if (!string.IsNullOrEmpty(settings.Title))
1354 {
1355 string cleanTitle = Regex.Replace(settings.Title, "<.*?>", String.Empty);
1356 cleanTitle = cleanTitle.Replace(" ", " ");
1357 attributes.Add("title", cleanTitle);
1358 }
1359
1360 var onClickEvents = new List<string>();
1361 if (!string.IsNullOrEmpty(settings.OnClick))
1362 {
1363 onClickEvents.Add(settings.OnClick);
1364 }
1365 if (!string.IsNullOrEmpty(settings.Href))
1366 {
1367 if (settings.Href.Contains("javascript"))
1368 {
1369 settings.Href = settings.Href.Replace("http://", "");
1370 }
1371 onClickEvents.Add("location.href='" + settings.Href + "'");
1372 }
1373 if (onClickEvents.Count > 0)
1374 {
1375 attributes.Add("onClick", string.Join(";", onClickEvents));
1376 }
1377
1378 if (settings.ButtonLayout != ButtonLayout.None)
1379 {
1380 classList.Add("btn");
1381 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower();
1382 if (btnLayout == "linkclean")
1383 {
1384 btnLayout = "link-clean"; //fix
1385 }
1386 classList.Add("btn--" + btnLayout);
1387 }
1388
1389 if (settings.Icon == null)
1390 {
1391 settings.Icon = new Icon();
1392 }
1393
1394 settings.Icon.CssClass += Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower() != "linkclean" ? " u-flex--align-center" : "";
1395 settings.Icon.Label = settings.Title;
1396
1397 attributes.Add("type", Enum.GetName(typeof(ButtonType), settings.ButtonType).ToLower());
1398
1399 <button class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@{RenderIcon(settings.Icon);}</button>
1400 }
1401 }
1402
1403 void RenderConfirmDialog(Button settings)
1404 {
1405 Modal confirmDialog = new Modal {
1406 Id = settings.Id,
1407 Width = ModalWidth.Sm,
1408 Heading = new Heading
1409 {
1410 Level = 2,
1411 Title = settings.ConfirmTitle
1412 },
1413 BodyText = settings.ConfirmText
1414 };
1415
1416 confirmDialog.AddAction(new Button { Title = Translate("Cancel"), ButtonLayout = ButtonLayout.Secondary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false"});
1417 confirmDialog.AddAction(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false;" + settings.OnClick });
1418
1419 RenderModal(confirmDialog);
1420 }
1421 }
1422 @using System.Reflection
1423 @using Dynamicweb.Rapido.Blocks.Components.General
1424 @using Dynamicweb.Rapido.Blocks.Components
1425 @using Dynamicweb.Core
1426
1427 @* Component *@
1428
1429 @functions{
1430 void RenderLink(Link settings)
1431 {
1432 if (settings != null && !string.IsNullOrEmpty(settings.Href) && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null))
1433 {
1434 Dictionary<string, string> attributes = new Dictionary<string, string>();
1435 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>();
1436 if (settings.Disabled)
1437 {
1438 attributes.Add("disabled", "true");
1439 classList.Add("disabled");
1440 }
1441
1442 if (!string.IsNullOrEmpty(settings.AltText))
1443 {
1444 attributes.Add("title", settings.AltText);
1445 }
1446 else if (!string.IsNullOrEmpty(settings.Title))
1447 {
1448 attributes.Add("title", settings.Title);
1449 }
1450
1451 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
1452 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); }
1453 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onClick", settings.OnClick); }
1454 attributes.Add("href", settings.Href);
1455
1456 if (settings.ButtonLayout != ButtonLayout.None)
1457 {
1458 classList.Add("btn");
1459 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower();
1460 if (btnLayout == "linkclean")
1461 {
1462 btnLayout = "link-clean"; //fix
1463 }
1464 classList.Add("btn--" + btnLayout);
1465 }
1466
1467 if (settings.Icon == null)
1468 {
1469 settings.Icon = new Icon();
1470 }
1471 settings.Icon.Label = settings.Title;
1472
1473 if (settings.Target == LinkTargetType.Blank && settings.Rel == LinkRelType.None)
1474 {
1475 settings.Rel = LinkRelType.Noopener;
1476 }
1477 if (settings.Target != LinkTargetType.None)
1478 {
1479 attributes.Add("target", "_" + Enum.GetName(typeof(LinkTargetType), settings.Target).ToLower());
1480 }
1481 if (settings.Download)
1482 {
1483 attributes.Add("download", "true");
1484 }
1485 if (settings.Rel != LinkRelType.None)
1486 {
1487 attributes.Add("rel", Enum.GetName(typeof(LinkRelType), settings.Rel).ToLower());
1488 }
1489
1490 <a class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>Render(settings.Icon);</a>
1491 }
1492 }
1493 }
1494
1495 @using System.Reflection
1496 @using Dynamicweb.Rapido.Blocks.Components
1497 @using Dynamicweb.Rapido.Blocks.Components.General
1498 @using Dynamicweb.Rapido.Blocks
1499
1500 @* Component *@
1501
1502 @functions{
1503 void RenderRating(Rating settings)
1504 {
1505 if (settings.Score > 0)
1506 {
1507 int rating = settings.Score;
1508 string iconType = "fa-star";
1509
1510 switch (settings.Type.ToString()) {
1511 case "Stars":
1512 iconType = "fa-star";
1513 break;
1514 case "Hearts":
1515 iconType = "fa-heart";
1516 break;
1517 case "Lemons":
1518 iconType = "fa-lemon";
1519 break;
1520 case "Bombs":
1521 iconType = "fa-bomb";
1522 break;
1523 }
1524
1525 <div class="u-ta-right">
1526 @for (int i = 0; i < settings.OutOf; i++)
1527 {
1528 <i class="@(rating > i ? "fas" : "far") @iconType"></i>
1529 }
1530 </div>
1531 }
1532 }
1533 }
1534 @using System.Reflection
1535 @using Dynamicweb.Rapido.Blocks.Components.General
1536 @using Dynamicweb.Rapido.Blocks.Components
1537
1538
1539 @* Component *@
1540
1541 @functions{
1542 void RenderNavigation(Navigation settings) {
1543 RenderNavigation(new
1544 {
1545 id = settings.Id,
1546 cssclass = settings.CssClass,
1547 startLevel = settings.StartLevel,
1548 endlevel = settings.EndLevel,
1549 expandmode = settings.Expandmode,
1550 sitemapmode = settings.SitemapMode,
1551 template = settings.Template
1552 });
1553 }
1554 }
1555
1556 @using Dynamicweb.Rapido.Blocks.Components.General
1557 @using Dynamicweb.Rapido.Blocks.Components
1558
1559 @* Component *@
1560
1561 @functions {
1562 void RenderLeftNavigation(LeftNavigation settings) {
1563 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id;
1564 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template;
1565 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel;
1566 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel;
1567 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode;
1568
1569 <div class="grid__cell">
1570 RenderNavigation(settings);
1571 </div>
1572 }
1573 }
1574
1575 @using System.Reflection
1576 @using Dynamicweb.Rapido.Blocks.Components.General
1577 @using Dynamicweb.Core
1578
1579 @* Component *@
1580
1581 @functions {
1582 void RenderHeading(Heading settings)
1583 {
1584 if (settings != null && !string.IsNullOrEmpty(settings.Title))
1585 {
1586 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : "";
1587 string tagName = settings.Level != 0 ? "h" + settings.Level.ToString() : "div";
1588
1589 @("<" + tagName + " class=\"" + settings.CssClass + " dw-mod\" " + color + ">")
1590 if (!string.IsNullOrEmpty(settings.Link))
1591 {
1592 RenderLink(new Link { Href = settings.Link, Icon = settings.Icon, Title = settings.Title, ButtonLayout = ButtonLayout.None });
1593 }
1594 else
1595 {
1596 if (settings.Icon == null)
1597 {
1598 settings.Icon = new Icon();
1599 }
1600 settings.Icon.Label = settings.Title;
1601 RenderIcon(settings.Icon);
1602 }
1603 @("</" + tagName + ">");
1604 }
1605 }
1606 }
1607
1608 @using Dynamicweb.Rapido.Blocks.Components
1609 @using Dynamicweb.Rapido.Blocks.Components.General
1610 @using Dynamicweb.Rapido.Blocks
1611 @using Dynamicweb.Frontend
1612
1613 @* Component *@
1614
1615 @functions {
1616 void RenderImage(Image settings)
1617 {
1618 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None)
1619 {
1620 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>();
1621 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); }
1622
1623 if (settings.Caption != null)
1624 {
1625 @:<div>
1626 }
1627
1628 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower();
1629 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower();
1630
1631 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)>
1632 <div class="image-filter image-filter--@secondaryFilterClass dw-mod">
1633 @if (settings.Link != null)
1634 {
1635 <a href="@settings.Link">
1636 RenderTheImage(settings);
1637 </a>
1638 }
1639 else
1640 {
1641 RenderTheImage(settings);
1642 }
1643 </div>
1644 </div>
1645
1646 if (settings.Caption != null)
1647 {
1648 <span class="image-caption dw-mod">@settings.Caption</span>
1649 @:</div>
1650 }
1651 }
1652 else
1653 {
1654 if (settings.Caption != null)
1655 {
1656 @:<div>
1657 }
1658 if (!string.IsNullOrEmpty(settings.Link))
1659 {
1660 <a href="@settings.Link">
1661 RenderTheImage(settings);
1662 </a>
1663 }
1664 else
1665 {
1666 RenderTheImage(settings);
1667 }
1668
1669 if (settings.Caption != null)
1670 {
1671 <span class="image-caption dw-mod">@settings.Caption</span>
1672 @:</div>
1673 }
1674 }
1675 }
1676
1677 void RenderTheImage(Image settings)
1678 {
1679 if (settings != null)
1680 {
1681 string alternativeImage = !string.IsNullOrEmpty(PageView.Current().AreaSettings.GetString("AlternativeImage")) ? PageView.Current().AreaSettings.GetFile("AlternativeImage")?.PathUrlEncoded : "/Images/missing_image.jpg";
1682 string placeholderImage = "/Files/Images/placeholder.gif";
1683 string imageEngine = "/Admin/Public/GetImage.ashx?";
1684
1685 string imageStyle = "";
1686
1687 switch (settings.Style)
1688 {
1689 case ImageStyle.Ball:
1690 imageStyle = "grid__cell-img--ball";
1691 break;
1692
1693 case ImageStyle.Triangle:
1694 imageStyle = "grid__cell-img--triangle";
1695 break;
1696 }
1697
1698 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle)
1699 {
1700 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop;
1701
1702 if (settings.ImageDefault != null)
1703 {
1704 settings.ImageDefault.Height = settings.ImageDefault.Width;
1705 }
1706 if (settings.ImageMedium != null)
1707 {
1708 settings.ImageMedium.Height = settings.ImageMedium.Width;
1709 }
1710 if (settings.ImageSmall != null)
1711 {
1712 settings.ImageSmall.Height = settings.ImageSmall.Width;
1713 }
1714 }
1715
1716 string defaultImage = imageEngine;
1717 string imageSmall = "";
1718 string imageMedium = "";
1719
1720 if (settings.DisableImageEngine)
1721 {
1722 defaultImage = settings.Path;
1723 }
1724 else
1725 {
1726 if (settings.ImageDefault != null)
1727 {
1728 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault);
1729
1730 if (settings.Path.GetType() != typeof(string))
1731 {
1732 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : "";
1733 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : "";
1734 }
1735 else
1736 {
1737 defaultImage += settings.Path != null ? "Image=" + settings.Path : "";
1738 }
1739
1740 defaultImage += "&AlternativeImage=" + alternativeImage;
1741 }
1742
1743 if (settings.ImageSmall != null)
1744 {
1745 imageSmall = "data-src-small=\"" + imageEngine;
1746 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall);
1747
1748 if (settings.Path.GetType() != typeof(string))
1749 {
1750 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : "";
1751 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : "";
1752 }
1753 else
1754 {
1755 imageSmall += settings.Path != null ? "Image=" + settings.Path : "";
1756 }
1757
1758 imageSmall += "&alternativeImage=" + alternativeImage;
1759
1760 imageSmall += "\"";
1761 }
1762
1763 if (settings.ImageMedium != null)
1764 {
1765 imageMedium = "data-src-medium=\"" + imageEngine;
1766 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium);
1767
1768 if (settings.Path.GetType() != typeof(string))
1769 {
1770 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : "";
1771 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : "";
1772 }
1773 else
1774 {
1775 imageMedium += settings.Path != null ? "Image=" + settings.Path : "";
1776 }
1777
1778 imageMedium += "&alternativeImage=" + alternativeImage;
1779
1780 imageMedium += "\"";
1781 }
1782 }
1783
1784 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>();
1785 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); }
1786 if (!string.IsNullOrEmpty(settings.Title))
1787 {
1788 optionalAttributes.Add("alt", settings.Title);
1789 optionalAttributes.Add("title", settings.Title);
1790 }
1791
1792 if (settings.DisableLazyLoad)
1793 {
1794 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) />
1795 }
1796 else
1797 {
1798
1799 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" loading="lazy" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) />
1800 }
1801 }
1802 }
1803 }
1804 @using System.Reflection
1805 @using Dynamicweb.Rapido.Blocks.Components.General
1806 @using Dynamicweb.Rapido.Blocks.Components
1807
1808 @* Component *@
1809
1810 @functions {
1811 void RenderHiddenField(HiddenField settings) {
1812 var attributes = new Dictionary<string, string>();
1813 attributes.Add("type", "hidden");
1814 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
1815 if (settings.Value != null) { attributes.Add("value", settings.Value); }
1816 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); }
1817
1818 <input @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)/>
1819 }
1820 }
1821
1822 @using System.Reflection
1823 @using Dynamicweb.Rapido.Blocks.Components.General
1824 @using Dynamicweb.Rapido.Blocks.Components
1825
1826 @* Component *@
1827
1828 @functions {
1829 void RenderRadioButtonField(RadioButtonField settings)
1830 {
1831 var attributes = new Dictionary<string, string>();
1832 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id))
1833 {
1834 settings.Id = Guid.NewGuid().ToString("N");
1835 }
1836
1837 /*base settings*/
1838 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
1839 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); }
1840 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); }
1841 if (settings.Disabled) { attributes.Add("disabled", "true"); }
1842 if (settings.Required) { attributes.Add("required", "true"); }
1843 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); }
1844 /*end*/
1845
1846 attributes.Add("type", "radio");
1847 if (settings.Checked) { attributes.Add("checked", "true"); }
1848 settings.CssClass = "form__control " + settings.CssClass;
1849 if (settings.Value != null) { attributes.Add("value", settings.Value); }
1850
1851 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value);
1852
1853 <div class="form__field-group @settings.WrapperCssClass dw-mod">
1854 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" />
1855 @if (!string.IsNullOrEmpty(settings.Label))
1856 {
1857 <label for="@settings.Id" class="dw-mod">@settings.Label</label>
1858 }
1859 @if (!string.IsNullOrEmpty(settings.HelpText))
1860 {
1861 <small class="form__help-text">@settings.HelpText</small>
1862 }
1863 Render(new NotificationMessage { Message = settings.ErrorMessage });
1864 </div>
1865 }
1866 }
1867 @using System.Reflection
1868 @using Dynamicweb.Rapido.Blocks.Components.General
1869 @using Dynamicweb.Rapido.Blocks.Components
1870
1871 @* Component *@
1872
1873 @functions{
1874 void RenderRadioButtonListField(RadioButtonListField settings)
1875 {
1876 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; }
1877
1878 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)>
1879 @if (!string.IsNullOrEmpty(settings.Label))
1880 {
1881 <label>@settings.Label</label>
1882 }
1883 @if (!string.IsNullOrEmpty(settings.HelpText))
1884 {
1885 <small class="form__help-text">@settings.HelpText</small>
1886 }
1887
1888 @foreach (var item in settings.Options)
1889 {
1890 if (settings.Required)
1891 {
1892 item.Required = true;
1893 }
1894 if (settings.Disabled)
1895 {
1896 item.Disabled = true;
1897 }
1898 if (!string.IsNullOrEmpty(settings.Name))
1899 {
1900 item.Name = settings.Name;
1901 }
1902 if (settings.Value != null && settings.Value == item.Value)
1903 {
1904 item.Checked = true;
1905 }
1906 if (!string.IsNullOrEmpty(settings.OnClick))
1907 {
1908 item.OnClick += settings.OnClick;
1909 }
1910 if (!string.IsNullOrEmpty(settings.OnChange))
1911 {
1912 item.OnChange += settings.OnChange;
1913 }
1914 if (!string.IsNullOrEmpty(settings.CssClass))
1915 {
1916 item.CssClass += settings.CssClass;
1917 }
1918 Render(item);
1919 }
1920
1921 Render(new NotificationMessage { Message = settings.ErrorMessage });
1922 </div>
1923 }
1924 }
1925 @using Dynamicweb.Rapido.Blocks.Components.General
1926 @using Dynamicweb.Rapido.Blocks.Components
1927
1928 @* Component *@
1929
1930 @functions {
1931 void RenderForm(Form settings) {
1932 if (settings != null)
1933 {
1934 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>();
1935 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); };
1936 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); };
1937 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); };
1938 var enctypes = new Dictionary<string, string>
1939 {
1940 { "multipart", "multipart/form-data" },
1941 { "text", "text/plain" },
1942 { "application", "application/x-www-form-urlencoded" }
1943 };
1944 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); };
1945 optionalAttributes.Add("method", settings.Method.ToString());
1946
1947 if (!string.IsNullOrEmpty(settings.FormStartMarkup))
1948 {
1949 @settings.FormStartMarkup
1950 }
1951 else
1952 {
1953 @:<form class="@settings.CssClass u-no-margin dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>
1954 }
1955
1956 foreach (var field in settings.GetFields())
1957 {
1958 Render(field);
1959 }
1960
1961 @:</form>
1962 }
1963 }
1964 }
1965
1966 @using System.Reflection
1967 @using Dynamicweb.Rapido.Blocks.Components.General
1968 @using Dynamicweb.Rapido.Blocks.Components
1969
1970 @* Component *@
1971
1972 @functions {
1973 void RenderText(Text settings)
1974 {
1975 @settings.Content
1976 }
1977 }
1978
1979 @using System.Reflection
1980 @using Dynamicweb.Rapido.Blocks.Components.General
1981 @using Dynamicweb.Rapido.Blocks.Components
1982
1983
1984 @* Component *@
1985
1986 @functions {
1987 void RenderContentModule(ContentModule settings) {
1988 if (!string.IsNullOrEmpty(settings.Content))
1989 {
1990 @settings.Content
1991 }
1992 }
1993 }
1994
1995 @using System.Reflection
1996 @using Dynamicweb.Rapido.Blocks.Components.General
1997 @using Dynamicweb.Rapido.Blocks.Components
1998
1999
2000 @* Component *@
2001
2002 @functions {
2003 void RenderModal(Modal settings) {
2004 if (settings != null)
2005 {
2006 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N");
2007
2008 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : "";
2009
2010 <input type="checkbox" id="@(modalId)ModalTrigger" class="modal-trigger" @onchange />
2011
2012 <div class="modal-container">
2013 @if (!settings.DisableDarkOverlay)
2014 {
2015 <label for="@(modalId)ModalTrigger" id="@(modalId)ModalOverlay" class="modal-overlay"></label>
2016 }
2017 <div class="modal modal--@settings.Width.ToString().ToLower() modal-height--@settings.Height.ToString().ToLower()" id="@(modalId)Modal">
2018 @if (settings.Heading != null)
2019 {
2020 if (!string.IsNullOrEmpty(settings.Heading.Title))
2021 {
2022 <div class="modal__header">
2023 RenderHeading(settings.Heading);
2024 </div>
2025 }
2026 }
2027 <div class="modal__body @(settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "")">
2028 @if (!string.IsNullOrEmpty(settings.BodyText))
2029 {
2030 @settings.BodyText
2031 }
2032 @if (settings.BodyTemplate != null)
2033 {
2034 @settings.BodyTemplate
2035 }
2036 @{
2037 var actions = settings.GetActions();
2038 }
2039 </div>
2040 @if (actions.Length > 0)
2041 {
2042 <div class="modal__footer">
2043 @foreach (var action in actions)
2044 {
2045 if (Dynamicweb.Frontend.PageView.Current().Device.ToString() != "Mobile") {
2046 action.CssClass += " u-no-margin";
2047 } else {
2048 action.CssClass += " u-full-width u-margin-bottom";
2049 }
2050
2051 Render(action);
2052 }
2053 </div>
2054 }
2055 <label class="modal__close-btn" for="@(modalId)ModalTrigger"></label>
2056 </div>
2057 </div>
2058 }
2059 }
2060 }
2061 @using Dynamicweb.Rapido.Blocks.Components.General
2062
2063 @* Component *@
2064
2065 @functions {
2066 void RenderMediaListItem(MediaListItem settings)
2067 {
2068 <div class="media-list-item @settings.CssClass dw-mod" @(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "")>
2069 @if (!string.IsNullOrEmpty(settings.Label))
2070 {
2071 if (!string.IsNullOrEmpty(settings.Link))
2072 {
2073 Render(new Link
2074 {
2075 Href = settings.Link,
2076 CssClass = "media-list-item__sticker dw-mod",
2077 ButtonLayout = ButtonLayout.None,
2078 Title = settings.Label,
2079 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : ""
2080 });
2081 }
2082 else if (!string.IsNullOrEmpty(settings.OnClick))
2083 {
2084 <span class="media-list-item__sticker dw-mod" onclick="@(settings.OnClick)">
2085 <span class="u-uppercase">@settings.Label</span>
2086 </span>
2087 }
2088 else
2089 {
2090 <span class="media-list-item__sticker media-list-item__sticker--no-link dw-mod">
2091 <span class="u-uppercase">@settings.Label</span>
2092 </span>
2093 }
2094 }
2095 <div class="media-list-item__wrap">
2096 <div class="media-list-item__info dw-mod">
2097 <div class="media-list-item__header dw-mod">
2098 @if (!string.IsNullOrEmpty(settings.Title))
2099 {
2100 if (!string.IsNullOrEmpty(settings.Link))
2101 {
2102 Render(new Link
2103 {
2104 Href = settings.Link,
2105 CssClass = "media-list-item__name dw-mod",
2106 ButtonLayout = ButtonLayout.None,
2107 Title = settings.Title,
2108 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : ""
2109 });
2110 }
2111 else if (!string.IsNullOrEmpty(settings.OnClick))
2112 {
2113 <span class="media-list-item__name dw-mod" onclick="@(settings.OnClick)">@settings.Title</span>
2114 }
2115 else
2116 {
2117 <span class="media-list-item__name media-list-item__name--no-link dw-mod">@settings.Title</span>
2118 }
2119 }
2120
2121 @if (!string.IsNullOrEmpty(settings.Status))
2122 {
2123 <div class="media-list-item__state dw-mod">@settings.Status</div>
2124 }
2125 </div>
2126 @{
2127 settings.InfoTable.CssClass += " media-list-item__parameters-table";
2128 }
2129
2130 Render(settings.InfoTable);
2131 </div>
2132 <div class="media-list-item__actions dw-mod">
2133 <div class="media-list-item__actions-list dw-mod">
2134 @{
2135 var actions = settings.GetActions();
2136
2137 foreach (ButtonBase action in actions)
2138 {
2139 action.ButtonLayout = ButtonLayout.None;
2140 action.CssClass += " media-list-item__action link";
2141
2142 Render(action);
2143 }
2144 }
2145 </div>
2146
2147 @if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title))
2148 {
2149 settings.SelectButton.CssClass += " u-no-margin";
2150
2151 <div class="media-list-item__action-button">
2152 Render(settings.SelectButton);
2153 </div>
2154 }
2155 </div>
2156 </div>
2157 </div>
2158 }
2159 }
2160
2161
2162 @using Dynamicweb.Rapido.Blocks.Components.General
2163 @using Dynamicweb.Rapido.Blocks.Components
2164
2165 @functions {
2166 void RenderTable(Table settings)
2167 {
2168 Dictionary<string, string> attributes = new Dictionary<string, string>();
2169 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
2170
2171 var enumToClasses = new Dictionary<TableDesign, string>
2172 {
2173 { TableDesign.Clean, "table--clean" },
2174 { TableDesign.Bordered, "table--bordered" },
2175 { TableDesign.Striped, "table--striped" },
2176 { TableDesign.Hover, "table--hover" },
2177 { TableDesign.Compact, "table--compact" },
2178 { TableDesign.Condensed, "table--condensed" },
2179 { TableDesign.NoTopBorder, "table--no-top-border" }
2180 };
2181 string tableDesignClass = "";
2182 if (settings.Design != TableDesign.None)
2183 {
2184 tableDesignClass = enumToClasses[settings.Design];
2185 }
2186
2187 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); }
2188
2189 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value);
2190
2191 <table @ComponentMethods.AddAttributes(resultAttributes)>
2192 @if (settings.Header != null)
2193 {
2194 <thead>
2195 Render(settings.Header);
2196 </thead>
2197 }
2198 <tbody>
2199 @foreach (var row in settings.Rows)
2200 {
2201 Render(row);
2202 }
2203 </tbody>
2204 @if (settings.Footer != null)
2205 {
2206 <tfoot>
2207 Render(settings.Footer);
2208 </tfoot>
2209 }
2210 </table>
2211 }
2212 }
2213 @using Dynamicweb.Rapido.Blocks.Components.General
2214 @using Dynamicweb.Rapido.Blocks.Components
2215
2216 @functions {
2217 void RenderTableRow(TableRow settings)
2218 {
2219 Dictionary<string, string> attributes = new Dictionary<string, string>();
2220 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
2221
2222 var enumToClasses = new Dictionary<TableRowDesign, string>
2223 {
2224 { TableRowDesign.NoBorder, "table__row--no-border" },
2225 { TableRowDesign.Border, "table__row--border" },
2226 { TableRowDesign.TopBorder, "table__row--top-line" },
2227 { TableRowDesign.BottomBorder, "table__row--bottom-line" },
2228 { TableRowDesign.Solid, "table__row--solid" }
2229 };
2230
2231 string tableRowDesignClass = "";
2232 if (settings.Design != TableRowDesign.None)
2233 {
2234 tableRowDesignClass = enumToClasses[settings.Design];
2235 }
2236
2237 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); }
2238
2239 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value);
2240
2241 <tr @ComponentMethods.AddAttributes(resultAttributes)>
2242 @foreach (var cell in settings.Cells)
2243 {
2244 if (settings.IsHeaderRow)
2245 {
2246 cell.IsHeader = true;
2247 }
2248 Render(cell);
2249 }
2250 </tr>
2251 }
2252 }
2253 @using Dynamicweb.Rapido.Blocks.Components.General
2254 @using Dynamicweb.Rapido.Blocks.Components
2255 @using Dynamicweb.Core
2256
2257 @functions {
2258 void RenderTableCell(TableCell settings)
2259 {
2260 Dictionary<string, string> attributes = new Dictionary<string, string>();
2261 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
2262 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); }
2263 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); }
2264 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); }
2265
2266 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value);
2267
2268 string tagName = settings.IsHeader ? "th" : "td";
2269
2270 @("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">")
2271 @settings.Content
2272 @("</" + tagName + ">");
2273 }
2274 }
2275 @* <h1>ArticleComponents.cshtml</h1> *@
2276
2277 @{
2278 Context.Current.Response.AddHeader("access-control-allow-origin", "*");
2279
2280 string bodyClass = "";
2281 string template = "real";
2282 string TemplateUrl = "/Files/Templates/Designs/rm/";
2283 string MetaTitle = Model.Title;
2284 string MetaDescription = Model.Description;
2285 string MetaKeywords = Model.Keywords;
2286 string searchClass = "";
2287
2288 var cssFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/dist/css/main.min.css"));
2289 string mainCSS = TemplateUrl + $"assets/dist/css/main.min.css?{cssFileInfo.LastWriteTime.Ticks}";
2290
2291 string loadingIcon = "/Files/Images/real-maeglerne-loading.svg";
2292
2293 var SettingsItem = ItemManager.Storage.GetById("Delte_Egenskaber", template != "bone" ? "1" : "2");
2294
2295 // Indstillinger
2296 var settings_Frontpage = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Frontpage"])) ? SettingsItem["Frontpage"] : "";
2297 var settings_Boligside = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Boligside"])) ? SettingsItem["Boligside"] : "";
2298 var settings_Maeglersogning = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Maeglersogning"])) ? SettingsItem["Maeglersogning"] : "";
2299 var settings_MinSide = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["MinSide"])) ? SettingsItem["MinSide"] : "";
2300 var settings_Sibling_Site = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Sibling_Site"])) ? SettingsItem["Sibling_Site"] : "";
2301 var settings_Sibling_Boligvisning = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Sibling_Boligvisning"])) ? SettingsItem["Sibling_Boligvisning"] : "";
2302 var settings_Product_Group = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Product_Group"])) ? SettingsItem["Product_Group"] : "";
2303 var settings_Boligagent = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Boligagent"])) ? SettingsItem["Boligagent"] : "";
2304 var settings_Persondatapolitik = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Persondatapolitik"])) ? SettingsItem["Persondatapolitik"] : "";
2305
2306 // API
2307 var settings_BoligSearchFeed = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligSearchFeed"])) ? SettingsItem["BoligSearchFeed"] : "";
2308 var settings_BoligListFeed = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligListFeed"])) ? SettingsItem["BoligListFeed"] : "";
2309 var settings_BoligListFeedErhverv = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligListFeedErhverv"])) ? SettingsItem["BoligListFeedErhverv"] : "";
2310 var settings_BoligListFeedMaegler = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligListFeedMaegler"])) ? SettingsItem["BoligListFeedMaegler"] : "";
2311 var settings_BoligCountFeed = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligCountFeed"])) ? SettingsItem["BoligCountFeed"] : "";
2312 var settings_BoligMapFeed = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["BoligMapFeed"])) ? SettingsItem["BoligMapFeed"] : "";
2313 var settings_AdvisorSearchFeed = "Default.aspx?ID=" + Pageview.Area.Item["AdvisorSearchFeed"];
2314
2315 // Forside
2316 var settings_FrontpageOverskrift = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["FrontpageOverskrift"])) ? SettingsItem["FrontpageOverskrift"] : "";
2317 var settings_FrontpageVideo = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["FrontpageVideo"])) ? SettingsItem["FrontpageVideo"] : "";
2318 var settings_FrontpageVideoImage = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["FrontpageVideoImage"])) ? SettingsItem["FrontpageVideoImage"] : "";
2319
2320 // Tracking
2321 var settings_Google_Tag_Manager_ID = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["Google_Tag_Manager_ID"])) ? SettingsItem["Google_Tag_Manager_ID"] : "";
2322 if (!string.IsNullOrEmpty(Converter.ToString(Pageview.Area.Item["BrokerGoogleTagManagerId"])))
2323 {
2324 settings_Google_Tag_Manager_ID = Converter.ToString(Pageview.Area.Item["BrokerGoogleTagManagerId"]);
2325 }
2326 var settings_Facebook_App_ID = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Facebook_App_ID"])) ? SettingsItem["Facebook_App_ID"] : "";
2327 var settings_Leadhub_Pixel_ID = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["Leadhub_Pixel_ID"])) ? SettingsItem["Leadhub_Pixel_ID"] : "";
2328 var settings_AntiFlicker_ID = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["AntiFlicker_ID"])) ? SettingsItem["AntiFlicker_ID"] : "";
2329 var settings_ConduzeId = Converter.ToString(SettingsItem["SpConduzeId"]);
2330 var settings_Weply = Converter.ToString(SettingsItem["SpWeplyId"]);
2331 var settings_Google_Optimize_Id = Converter.ToString(SettingsItem["Google_Optimize_Id"]);
2332
2333 // Indstillinger for brugerfunktioner
2334 var settings_ForgotPwPage = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["ForgotPwPage"])) ? SettingsItem["ForgotPwPage"] : "";
2335 var settings_NewsletterSignup = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["NewsletterSignup"])) ? SettingsItem["NewsletterSignup"] : "";
2336 var settings_CreateUserModal = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["CreateUserModal"])) ? SettingsItem["CreateUserModal"] : "";
2337 var settings_LoginModal = !string.IsNullOrEmpty(Converter.ToString(SettingsItem["LoginModal"])) ? SettingsItem["LoginModal"] : "";
2338
2339 int createUserParagraphId = 0;
2340 int loginParagraphId = 0;
2341 Int32.TryParse(settings_CreateUserModal.ToString(), out createUserParagraphId);
2342 Int32.TryParse(settings_LoginModal.ToString(), out loginParagraphId);
2343
2344 // Use configured search page id for search action which depends on the context. Context can currently be one of: rm, boligone or erhverv.
2345 // Subsequent calls to search page via ajax (sorting, loading, etc) should preserve search context. (vv)
2346 int searchPageId = GetPageSettingsPageId("Boligside");
2347 if (searchPageId == 0)
2348 {
2349 searchPageId = GetWebsiteSettingsPageId("Boligside");
2350 }
2351
2352 int boligsideId = GetPageSettingsPageId("Boligside");
2353 if (boligsideId == 0)
2354 {
2355 boligsideId = GetWebsiteSettingsPageId("Boligside");
2356 }
2357
2358 string productGroupFilter = String.Empty;
2359 if (Pageview.Page.PropertyItem != null && Pageview.Page.PropertyItem.ContainsKey("Product_Group") && Pageview.Page.PropertyItem["Product_Group"] != null)
2360 {
2361 productGroupFilter = Pageview.Page.PropertyItem["Product_Group"].ToString();
2362 }
2363
2364 if (Pageview.Page.PropertyItem != null && Convert.ToBoolean(Pageview.Page.PropertyItem["IsRealFrontpage"]))
2365 {
2366 searchClass = "is-frontpage";
2367 }
2368
2369 bool isErhverv = false;
2370 if (Pageview.Page.PropertyItem != null && Pageview.Page.PropertyItem.ContainsKey("Erhverv") && Pageview.Page.PropertyItem["Erhverv"] != null)
2371 {
2372 var s = Pageview.Page.PropertyItem["Erhverv"].ToString();
2373 Boolean.TryParse(s, out isErhverv);
2374 }
2375
2376 bool isBrokerPage = false;
2377 if (!string.IsNullOrEmpty(Model.Area.Item.GetString("M_glerGruppeId")))
2378 {
2379 isBrokerPage = true;
2380 bodyClass = ""; // Get rid of transparent header on brokerPage
2381 }
2382
2383 string callTrackingId = Model.Item.GetString("CallTrackingId");
2384
2385 RealEstate.User.Model.BrokerEmployee MyBroker = null;
2386 try
2387 {
2388 var MyB = new RealEstate.User.MyBroker();
2389 MyBroker = MyB.GetMyBroker();
2390 }
2391 catch
2392 {
2393 // Ignore
2394 }
2395
2396 string querySearch = (Context.Current.Request.QueryString["search"] != null ? Context.Current.Request.QueryString["search"] : "");
2397 string querySearchNameAttr = "search";
2398
2399 // Overwrite search with zipcodeinterval if set
2400 if (Context.Current.Request.QueryString["zipcodeinterval"] != null)
2401 {
2402 querySearch = Context.Current.Request.QueryString["zipcodeinterval"];
2403 querySearchNameAttr = "zipcodeinterval";
2404 }
2405
2406 string queryZipCodeFrom = (Context.Current.Request.QueryString["zipcodefrom"] != null ? Context.Current.Request.QueryString["zipcodefrom"] : "");
2407 string queryZipCodeTo = (Context.Current.Request.QueryString["zipcodeto"] != null ? Context.Current.Request.QueryString["zipcodeto"] : "");
2408
2409 Dynamicweb.Security.UserManagement.User user = null;
2410 int userID = 0;
2411 string userName = "";
2412 string userEmail = "";
2413 string userPhone = "";
2414 string userZip = "";
2415 string userAddress = "";
2416
2417 if (Dynamicweb.Security.UserManagement.UserContext.Current.IsLoggedOn)
2418 {
2419 user = Dynamicweb.Security.UserManagement.UserContext.Current.User;
2420 userName = user.Name;
2421 userEmail = user.Email;
2422 userPhone = user.Phone;
2423 userZip = user.Zip;
2424 userAddress = user.Address;
2425 userID = user.ID;
2426 }
2427
2428 string forgotPwSubject = Translate("email-forgot-pw-subject", "Glemt adgangskode");
2429 string forgotPwTemplate = "";
2430 string forgotPwSender = "";
2431 string markerColor = "";
2432 string mapMarkerUrl = TemplateUrl + "assets/images/logo-real.png";
2433
2434 // Important - e-mail templates for forgotPw must be placed in "UserManagement/Login" folder
2435 forgotPwTemplate = "/Login/email_template_forgotpw_RM.cshtml";
2436 forgotPwSender = "noreply@mailreal.dk";
2437 markerColor = "#213960";
2438
2439 var butikId = string.Empty;
2440 string bEmail = string.Empty;
2441 if (MyBroker != null && MyBroker.Broker != null)
2442 {
2443 butikId = MyBroker.Broker.Item().GetString("CBMedlemsnummer");
2444 bEmail = MyBroker.Broker.Item().GetString("Email");
2445 }
2446
2447 var salesAssessmentPageId = Converter.ToString(GetPageIdByNavigationTag("OrderSalesAssessment"));
2448
2449 var termsMail = "info@realmaeglerne.dk";
2450 }
2451
2452 <!DOCTYPE html>
2453 <html>
2454 <head>
2455 <meta charset="utf-8">
2456 <title>@MetaTitle</title>
2457 <meta name="viewport" content="width=device-width, initial-scale=1.0">
2458 <meta name="description" content="@MetaDescription">
2459 <meta name="keywords" content="@MetaKeywords">
2460 <meta name="format-detection" content="telephone=no">
2461 <meta http-equiv="Expires" content="60">
2462 <meta name="robots" content="@(Pageview.Area.Noindex ? "noindex" : "index"),@(Pageview.Area.Nofollow ? "nofollow" : "follow")">
2463
2464 @*RICH SNIPPETS*@
2465
2466 @RenderSnippet("OpenGraphTags")
2467 @if (!string.IsNullOrEmpty(settings_Google_Optimize_Id))
2468 {
2469 <!-- Google optimize script-->
2470 <script src="https://www.googleoptimize.com/optimize.js?id=@settings_Google_Optimize_Id"></script>
2471 }
2472 <!-- TrustBox script -->
2473 <script type="text/javascript" src="//widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js" async></script>
2474 <!-- End TrustBox script -->
2475
2476 <script type="application/ld+json">
2477 {
2478 "context": "https://schema.org/",
2479 "@@type": "WebSite",
2480 "name": "RealMæglerne",
2481 "url": "https://www.realmaeglerne.dk/",
2482 "potentialAction": {
2483 "type": "SearchAction",
2484 "target": "https://www.realmaeglerne.dk/find-maegler?q={search_term_string}",
2485 "query-input": "required name=search_term_string"
2486 }
2487 }
2488 </script>
2489
2490 <script type="application/ld+json">
2491 {
2492 "context": "https://schema.org",
2493 "@@type": "Corporation",
2494 "name": "RealMæglerne",
2495 "alternateName": "R&B Mægler A/S",
2496 "url": "https://www.realmaeglerne.dk",
2497 "logo": "https://www.realmaeglerne.dk/Files/Images/RealM_Logo_NY_MBlaa_RGB.png",
2498 "contactPoint": {
2499 "type": "ContactPoint",
2500 "telephone": "+4570237153",
2501 "contactType": "sales",
2502 "areaServed": "DK",
2503 "availableLanguage": "Danish"
2504 },
2505 "sameAs": [
2506 "https://www.facebook.com/realmaeglerne/",
2507 "https://www.linkedin.com/company/realmæglerne/",
2508 "https://www.youtube.com/channel/UCLHYWIUcNtFitvSsbBJnI3g",
2509 "https://www.realmaeglerne.dk/"
2510 ]
2511 }
2512 </script>
2513 @RenderSnippet("StructuredData")
2514 @*RICH SNIPPETS END*@
2515
2516 @*FONT AWESOME*@
2517 @{
2518 <link rel="stylesheet" href="@(TemplateUrl)assets/fontawesome/css/all.css" async />
2519 <link rel="stylesheet" href="@mainCSS" async />
2520
2521 if (Converter.ToBoolean(Pageview.Area.Item["IsErhverv"]))
2522 {
2523 var cssErhvervFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/dist/css/erhverv.min.css"));
2524 string erhvervCSS = TemplateUrl + $"assets/dist/css/erhverv.min.css?{cssErhvervFileInfo.LastWriteTime.Ticks}";
2525 <link rel="stylesheet" href="@erhvervCSS" async>
2526 }
2527 }
2528
2529
2530 <link rel="icon" type="image/ico" href="@(TemplateUrl)assets/images/favicons/favicon-real.ico?v=1">
2531 <link rel="icon" type="image/png" href="@(TemplateUrl)assets/images/favicons/favicon-real-16x16.png" sizes="16x16">
2532 <link rel="icon" type="image/png" href="@(TemplateUrl)assets/images/favicons/favicon-real-32x32.png" sizes="32x32">
2533 <link rel="icon" type="image/png" href="@(TemplateUrl)assets/images/favicons/favicon-real-96x96.png" sizes="96x96">
2534 <meta name="google-site-verification" content="hsV-j5ENQp9iR1Kpd6h9uYGqfD6YqOE5zg-jsWjRPOg" />
2535
2536 @if (!string.IsNullOrEmpty(settings_Google_Tag_Manager_ID.ToString()))
2537 {
2538 <script>
2539 window.dataLayer = window.dataLayer || []; // must be placed above GTM script
2540 </script>
2541 <!-- Google Tag Manager -->
2542 <script>
2543 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
2544 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
2545 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
2546 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
2547 })(window,document,'script','dataLayer','@settings_Google_Tag_Manager_ID');</script>
2548 <!-- End Google Tag Manager -->
2549 }
2550
2551 @if (isBrokerPage && !String.IsNullOrEmpty(callTrackingId))
2552 {
2553 <script type="text/javascript" src="https://call.call-tracking.dk/getJavascript?custid=@callTrackingId"></script>
2554 }
2555
2556 @if (!String.IsNullOrEmpty(settings_Leadhub_Pixel_ID.ToString()))
2557 {
2558 <!-- Begin Leadhub Pixel Code -->
2559 <script>
2560 (function(w,d,x,n,u,t,f,s,o){
2561 f='LHInsights';w[n]=w[f]=w[f]||function(n,d){
2562 (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)
2563 })(window,document, 'script', 'lhi', '//www.lhinsights.com/agent.js', '@settings_Leadhub_Pixel_ID');
2564 lhi('pageview');
2565 </script>
2566 <!-- End Leadhub Pixel Code -->
2567 }
2568
2569 <script>
2570 // Global namespace used for fetching API feeds from DW
2571 var RMAPI = (RMAPI) ? RMAPI : {};
2572 var ApiPreFix = "/Default.aspx?ID=";
2573 RMAPI.BoligCountFeed = ApiPreFix + "@settings_BoligCountFeed";
2574 RMAPI.BoligListFeed = ApiPreFix + "@settings_BoligListFeed" + "&refpageid=@Pageview.Page.ID";
2575 RMAPI.BoligListFeedErhverv = "@settings_BoligListFeedErhverv";
2576 RMAPI.BoligListFeedMaegler = ApiPreFix + "@settings_BoligListFeedMaegler" + "&refpageid=@Pageview.Page.ID";
2577 RMAPI.BoligSearchFeed = ApiPreFix + "@settings_BoligSearchFeed";
2578 RMAPI.BoligMapFeed = ApiPreFix + "@settings_BoligMapFeed";
2579 RMAPI.Boligagent = "@settings_Boligagent";
2580 RMAPI.IsErhverv = @isErhverv.ToString().ToLower();
2581 RMAPI.ProductGroupFilter = "@productGroupFilter";
2582 RMAPI.ButikId = "@butikId";
2583 RMAPI.Boligvisning = false;
2584 RMAPI.RefPageId = "@Pageview.Page.ID";
2585 RMAPI.Template = "@template";
2586 RMAPI.SliderSettings = @JsonConvert.SerializeObject(Settings.Site);
2587 RMAPI.AdvisorSearchFeed = "@settings_AdvisorSearchFeed";
2588 RMAPI.LoadingIcon = "@loadingIcon";
2589 RMAPI.MarkerColor = "@markerColor";
2590 RMAPI.mapMarkerUrl = "@mapMarkerUrl";
2591 RMAPI.settings_ForgotPwPage = "@settings_ForgotPwPage";
2592 </script>
2593
2594 @if (!string.IsNullOrEmpty(settings_Facebook_App_ID.ToString()))
2595 {
2596 <!-- Facebook Pixel Code -->
2597 <script>
2598 !function (f, b, e, v, n, t, s) {
2599 if (f.fbq) return; n = f.fbq = function () {
2600 n.callMethod ?
2601 n.callMethod.apply(n, arguments) : n.queue.push(arguments)
2602 };
2603 if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0';
2604 n.queue = []; t = b.createElement(e); t.async = !0;
2605 t.src = v; s = b.getElementsByTagName(e)[0];
2606 s.parentNode.insertBefore(t, s)
2607 }(window, document, 'script',
2608 'https://connect.facebook.net/en_US/fbevents.js');
2609 fbq('init', '@settings_Facebook_App_ID');
2610 fbq('track', 'PageView');
2611 </script>
2612 <noscript>
2613 <img height="1" width="1" src="https://www.facebook.com/tr?id=@settings_Facebook_App_ID&ev=PageView&noscript=1" />
2614 </noscript>
2615 <!-- End Facebook Pixel Code -->
2616 }
2617
2618 <script type='text/javascript' src='https://platform-api.sharethis.com/js/sharethis.js#property=5d68cfaf5fea9f001288d9ac&product=inline-share-buttons' async='async'></script>
2619
2620 </head>
2621
2622 <body class="@template@bodyClass" data-spforgotpwtemplate="@forgotPwTemplate" data-spforgotpwsender="@forgotPwSender" data-spforgotpwsubject="@forgotPwSubject" data-spsalesassesmentid="@salesAssessmentPageId">
2623 @{
2624 string logoUrl = TemplateUrl + (!Converter.ToBoolean(Pageview.Area.Item["IsErhverv"]) ? "assets/images/logo-real.svg" : "assets/images/logo-erhverv.svg");
2625 }
2626
2627 @if (Converter.ToBoolean(Pageview.Area.Item["IsErhverv"]) && GetPageIdByNavigationTag("ErhvervFrontPage") != Pageview.ID)
2628 {
2629 <div class="top-search">
2630 <div class="header logo">
2631 <div class="logo">
2632 <a href="/erhverv">
2633 <img src="@logoUrl" alt="RealMæglerne" />
2634 </a>
2635 </div>
2636 </div>
2637 <div class="top-form mx-auto">
2638 <form id="main-search-top" class="js-top-search" action="/Default.aspx" method="GET">
2639 @{
2640
2641 var settings_BoligListErhverv = !string.IsNullOrEmpty(Convert.ToString(SettingsItem["BoliglisteErhverv"])) ? Converter.ToString(SettingsItem["BoliglisteErhverv"]).Replace("Default.aspx?Id=", "") : "";
2642 }
2643 <input type="hidden" name="ID" value='@settings_BoligListErhverv' id="searchPageId-top" disabled="disabled" />
2644
2645 @if (Context.Current.Request["type"] == "egetforbrug")
2646 {
2647 <input name="type" type="hidden" value="egetforbrug" />
2648 <input name="investeringsejendom" type="hidden" value="0" />
2649 }
2650 <div class="row form-wrapper no-gutters">
2651 <div class="col-xs-12 col-md-4 col-lg-5 col-searchbar">
2652 <div class="searchbar float-label-container text-left">
2653 <label class="float-label">@Translate("Smartpage:Erhver.Postnummer, by, vej eller sagsnummer", "Postnummer, by, vej eller sagsnummer")</label>
2654 <input type="text" name="@querySearchNameAttr" id="searchfield-top" class="search-input js-float-label js-getdata" tabindex="1" value="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(querySearch)" />
2655 </div>
2656 </div>
2657 <div class="col-xs-12 col-md-5">
2658 <div class="row no-gutters">
2659 <div class="col-xs-12 col-md-6 input-col">
2660 <div class="dropdown w-overlay float-label-container">
2661 <label class="float-label" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">@Translate("Smartpage:Search.Erhverv.Lokaletype", "Lokaletype")</label>
2662 <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"></button>
2663 <div class="dropdown-menu box-shadow bolig-dropdown-container" aria-labelledby="Boligtype">
2664 <ul class="bolig-dropdown list-unstyled">
2665 @{
2666 RenderBoligTypeErhverv();
2667 }
2668 </ul>
2669 <span class="border-fat"></span>
2670 <div class="d-none d-md-block">
2671 <button class="btn btn-primary js-close-dropdown">@Translate("Smartpage:Search.Anvend", "Anvend")</button>
2672 </div>
2673 <div class="d-flex row d-md-none">
2674 <div class="col-6">
2675 <button class="btn btn-danger js-remove-filter">@Translate("Smartpage:Search.Annuller", "Annuller")</button>
2676 </div>
2677 <div class="col-6">
2678 <button class="btn btn-primary js-close-dropdown">@Translate("Smartpage:Search.Anvend", "Anvend")</button>
2679 </div>
2680 </div>
2681 </div>
2682
2683 </div>
2684 </div>
2685 <div class="col-xs-12 col-md-6 input-col">
2686 <div class="btn-dropdown p-3 border-top-bottom-right">
2687 <ul class="two-column list-unstyled">
2688 <li>
2689 <label class="checkbox-container">
2690 @Translate("Smartpage:Search.Erhverv.Leje", "Leje")
2691 <input type="checkbox" name="propertytype" value="leje" class="js-input-check" />
2692 <span class="checkmark"></span>
2693 </label>
2694 </li>
2695 <li>
2696 <label class="checkbox-container">
2697 @Translate("Smartpage:Search.Erhverv.Køb", "Køb")
2698 <input type="checkbox" name="propertytype" value="kob" class="js-input-check" />
2699 <span class="checkmark"></span>
2700 </label>
2701 </li>
2702 </ul>
2703 </div>
2704
2705 </div>
2706 </div>
2707 </div>
2708 <div class="col-xs-12 col-md-3 col-lg-2 d-none d-md-block">
2709 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search"></i> @Translate("Smartpage:Search.Søg", "Søg")</button>
2710 </div>
2711 </div>
2712 </form>
2713 </div>
2714 </div>
2715 }
2716
2717 @if (Converter.ToBoolean(Pageview.Area.Item["IsErhverv"]))
2718 {
2719 <div class="header shortcuts">
2720 <div class="header-shortcuts float-right">
2721 @if (GetPageIdByNavigationTag("ErhvervFrontPage") != Pageview.ID)
2722 {
2723 <a href='' class="search-menu d-none d-xl-flex align-items-center float-left border-right js-mainsearch topsearch @searchClass">
2724 <i class="fa fa-search" aria-hidden="true"></i><span class="search-menu-text hidden d-md-block"> @Translate("Smartpage:Search.Søg", "Søg")</span>
2725 </a>
2726 }
2727 <div class="menu-slide d-flex align-items-center">
2728 <b></b>
2729 <span class="menu-text hidden d-md-block">Menu</span>
2730 </div>
2731 </div>
2732
2733
2734 </div>
2735 }
2736 else
2737 {
2738 <div class="header__container container">
2739 <div class="header__logo">
2740 <a href="/" title="">
2741 <img src="@(logoUrl)" alt="" />
2742 </a>
2743 </div>
2744 <div class="header__title">
2745 <span>@Translate("Custom:Header.Title", "RealMæglerne")</span>
2746 </div>
2747 @if (userID > 0)
2748 {
2749 <div class="header__navigation d-none d-md-flex">
2750 <div class="header__navigation">
2751 <div class="header__Link">
2752 <ul>
2753 <li class="d-flex align-items-center">
2754 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
2755 <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" />
2756 </svg>
2757 <a class="ml-2"
2758 href="/Default.aspx?ID=@settings_MinSide"
2759 target="_blank"
2760 aria-label="@Translate("Custom:Accessibility.MyAccountLink", "Gå til Mit RealMæglerne - åbner i nyt vindue")">
2761 @Translate("Mit RealMæglerne")
2762 </a>
2763 </li>
2764 </ul>
2765 </div>
2766 </div>
2767 </div>
2768
2769 }
2770 else
2771 {
2772 <div class="header__navigation d-none d-md-flex">
2773 <div class="header__navigation">
2774 <div class="header__Link">
2775 <ul>
2776 <li class="d-flex align-items-center">
2777 <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
2778 <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" />
2779 </svg>
2780 <a class="ml-2"
2781 href="javascript:panelLogin()"
2782 aria-label="@Translate("Custom:Accessibility.Login", "Login - åbner i sidepanel")">
2783 @Translate("Login")
2784 </a>
2785 </li>
2786 </ul>
2787 </div>
2788 </div>
2789 </div>
2790 }
2791 <div class="header__search flex-column flex-md-row js-mainsearch">
2792 @Translate("Søg bolig")
2793 </div>
2794 <div class="header__navigation">
2795 <div class="header__navigation-icon menu-slide">
2796 <div class="d-none d-md-block">
2797 @Translate("Menu")
2798 </div>
2799 </div>
2800 </div>
2801 </div>
2802 }
2803
2804 <div class="search-modal">
2805
2806 @if (Converter.ToString(Pageview.Area.Item["Type"]) == "real")
2807 {
2808 <div class="main-search-form">
2809 <i class="fal fa-times float-right fa-2x js-close-search close-search"></i>
2810 <div class="row mb-3 align-items-center">
2811 <div class="col-xs-12 col-md-3 border-right">
2812 <h3>@Translate("Smartpage:Search.Søg bolig", "Søg bolig")</h3>
2813 </div>
2814 <div class="col-xs-12 col-md-9 home-count d-none d-md-block">
2815 <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>
2816
2817 </div>
2818 </div>
2819
2820 <form id="main-search" class="searchbar-wrapper" action="/Default.aspx" method="GET">
2821 <input type="hidden" name="ID" value='@searchPageId' id="searchPageId" disabled="disabled" />
2822 <div class="row form-wrapper no-gutters">
2823
2824 <div class="col-xs-12 col-md-5 col-searchbar">
2825 <div class="searchbar">
2826 <input type="text" name="@querySearchNameAttr" id="searchfield" class="search-input" placeholder="Postnummer, by, vej eller sagsnummer" tabindex="1" value="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(querySearch)" />
2827 <input type="hidden" id="zipcodefrom" name="zipcodefrom" value="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(queryZipCodeFrom)" />
2828 <input type="hidden" id="zipcodeto" name="zipcodeto" value="@Dynamicweb.Core.Encoders.HtmlEncoder.HtmlAttributeEncode(queryZipCodeTo)" />
2829 </div>
2830 </div>
2831 <div class="col-xs-12 col-md-5">
2832 <div class="row no-gutters">
2833 <div class="col-xs-12 col-md-6 input-col">
2834 <div class="dropdown">
2835 <button class="btn btn-dropdown dropdown-toggle reverse" type="button" id="Boligtype" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
2836 @Translate("Smartpage:Search.Boligtype", "Boligtype")
2837 </button>
2838 <div class="dropdown-menu box-shadow bolig-dropdown-container" aria-labelledby="Boligtype">
2839 <ul class="bolig-dropdown list-unstyled">
2840 @{
2841 RenderBoligtypeCheckboxesDropdown();
2842 }
2843 </ul>
2844 <span class="border-fat"></span>
2845 <button class="btn btn-primary js-close-dropdown">@Translate("Smartpage:Search.Anvend", "Anvend")</button>
2846 </div>
2847
2848 </div>
2849
2850 </div>
2851 <div class="col-xs-12 col-md-6 input-col">
2852 <div class="dropdown">
2853 <button class="btn btn-dropdown dropdown-toggle reverse" type="button" id="Pris" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
2854 @Translate("Smartpage:Search.Pris", "Pris")
2855 </button>
2856 <div class="dropdown-menu box-shadow dropdown-price js-dropdown-price" aria-labelledby="Pris">
2857 <input name="pricemin" type="text" class="form-control mb-10 js-auto-thousand js-pricemin-frontpage-input" placeholder='@Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris")' value='@(!string.IsNullOrEmpty(Context.Current.Request.QueryString["pricemin"]) ? Context.Current.Request.QueryString["pricemin"] : "")' />
2858 <select class="form-control js-pricemin-frontpage-select js-input-min-select mb-10">
2859 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris")</option>
2860 @for (var i = 0; i <= 10000000; i += 100000)
2861 {
2862 if (i == 10000000)
2863 {
2864 <option value="@i" data-value='@Converter.ToInt32(i).ToString("N0")+'>@Convert.ToInt32(i).ToString("N0")+</option>
2865 }
2866 else
2867 {
2868 <option value="@i" data-value='@Converter.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option>
2869 }
2870 }
2871 </select>
2872
2873 <input type="text" name="pricemax" class="form-control js-auto-thousand js-pricemax-frontpage-input" placeholder='@Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris")' value='@(!string.IsNullOrEmpty(Context.Current.Request.QueryString["pricemax"]) ? Context.Current.Request.QueryString["pricemax"] : "")' />
2874 <select class="form-control js-pricemax-frontpage-select js-input-max-select">
2875 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris")</option>
2876 @for (var i = 0; i <= 10000000; i += 100000)
2877 {
2878 if (i == 10000000)
2879 {
2880 <option value="@i" data-value='@Converter.ToInt32(i).ToString("N0")+'>@Convert.ToInt32(i).ToString("N0")+</option>
2881 }
2882 else
2883 {
2884 <option value="@i" data-value='@Converter.ToInt32(i).ToString("N0")'>@Convert.ToInt32(i).ToString("N0")</option>
2885 }
2886 }
2887 </select>
2888 </div>
2889 </div>
2890 </div>
2891 </div>
2892 </div>
2893 <div class="col-xs-12 col-md-2 d-none d-md-block">
2894 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search"></i> @Translate("Smartpage:Search.Søg", "Søg")</button>
2895 </div>
2896 </div>
2897
2898 <div class="row moresearch-btn no-gutters">
2899 <div class="col-sm-12">
2900 <div class="row align-items-center no-gutters">
2901 <div class="col-12 col-md-4">
2902 <button class="btn-blank js-search-collapse" type="button" data-toggle="collapse" data-target="#moreSearch-master" aria-expanded="false" aria-controls="moreSearch">
2903 <span class="moreSearch-text"><i class="fas fa-plus open-close"></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>
2904 </button>
2905 </div>
2906 <div class="col-6 col-md-2 mb-xs-4">
2907 <a class="js-reset reset-btn white">@Translate("Smartpage:Search.NulstilValg", "Nulstil valg")</a>
2908 </div>
2909 </div>
2910
2911 <div class="collapse" id="moreSearch-master">
2912
2913 <h4 class="mt-20"><b>@Translate("Smartpage:Search.Bolig", "Bolig")</b></h4>
2914 <div class="row align-items-end mb-30">
2915 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0">
2916 <div class="filter-container row">
2917 <label class="d-block col-12">@Translate("Smartpage:Search.Boligareal", "Boligareal")</label>
2918 <div class="col-6 pr-sm-0 pr-2">
2919 <input type="text" name="boligarealmin" id="boligarealmin" class="form-control js-boligarealmin-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")' value='@(!string.IsNullOrEmpty(Context.Current.Request.QueryString["boligarealmin"]) ? Context.Current.Request.QueryString["boligarealmin"] : "")' />
2920 <select class="form-control js-boligarealmin-frontpage-select js-count">
2921 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")</option>
2922 @for (var i = 0; i <= 300; i += 10)
2923 {
2924 if (i == 300)
2925 {
2926 <option>@i+</option>
2927 }
2928 else
2929 {
2930 <option>@i</option>
2931 }
2932 }
2933 </select>
2934
2935 </div>
2936 <div class="col-6 pl-sm-0 pl-2">
2937 <input type="text" name="boligarealmax" id="boligarealmax" class="form-control js-boligarealmax-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")' value='@(!string.IsNullOrEmpty(Context.Current.Request.QueryString["boligarealmax"]) ? Context.Current.Request.QueryString["boligarealmax"] : "")' />
2938 <select class="form-control js-boligarealmax-frontpage-select js-count">
2939 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")</option>
2940 @for (var i = 0; i <= 300; i += 10)
2941 {
2942 if (i == 300)
2943 {
2944 <option>@i+</option>
2945 }
2946 else
2947 {
2948 <option>@i</option>
2949 }
2950 }
2951 </select>
2952
2953 </div>
2954 </div>
2955 </div>
2956 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0">
2957 <div class="filter-container row">
2958 <label class="d-block col-12">@Translate("Smartpage:Search.Grundareal", "Grundareal")</label>
2959 <div class="col-6 pr-sm-0 pr-2">
2960 <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"] : "")' />
2961 <select class="form-control js-grundarealmin-frontpage-select js-count">
2962 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")</option>
2963 @for (var i = 0; i <= 10000; i += 100)
2964 {
2965 if (i == 10000)
2966 {
2967 <option>@i+</option>
2968 }
2969 else
2970 {
2971 <option>@i</option>
2972 }
2973 }
2974 </select>
2975 </div>
2976 <div class="col-6 pl-sm-0 pl-2">
2977 <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"] : "")' />
2978 <select class="form-control js-grundarealmax-frontpage-select js-count">
2979 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")</option>
2980 @for (var i = 0; i <= 10000; i += 100)
2981 {
2982 if (i == 10000)
2983 {
2984 <option>@i+</option>
2985 }
2986 else
2987 {
2988 <option>@i</option>
2989 }
2990 }
2991 </select>
2992 </div>
2993 </div>
2994 </div>
2995 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0">
2996 <div class="filter-container row">
2997 <label class="d-block col-12">Antal rum</label>
2998 <div class="col-6 pr-sm-0 pr-2">
2999 <select name="roomsmin" id="roomsmin" class="form-control reverse js-roomsmin-select js-count">
3000 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Min", "Min")</option>
3001 @{
3002 RenderSelectValue("1", "1", "roomsmin");
3003 RenderSelectValue("2", "2", "roomsmin");
3004 RenderSelectValue("3", "3", "roomsmin");
3005 RenderSelectValue("4", "4", "roomsmin");
3006 RenderSelectValue("5+", "5", "roomsmin");
3007 }
3008 </select>
3009 </div>
3010 <div class="col-6 pl-sm-0 pl-2">
3011 <select name="roomsmax" id="roomsmax" class="form-control reverse js-roomsmax-select js-count">
3012 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Max", "Max")</option>
3013 @{
3014 RenderSelectValue("1", "1", "roomsmax");
3015 RenderSelectValue("2", "2", "roomsmax");
3016 RenderSelectValue("3", "3", "roomsmax");
3017 RenderSelectValue("4", "4", "roomsmax");
3018 RenderSelectValue(Translate("Smartpage:Rooms.5", "5"), "5", "roomsmax");
3019 }
3020 </select>
3021 </div>
3022 </div>
3023 </div>
3024 <div class="col-12 col-sm-6 col-lg-3 mb-3 mb-lg-0">
3025 <div class="row">
3026 <div class="col-12 pr-2">
3027 <div class="filter-container">
3028 <label class="d-block">Energimærke</label>
3029 <select name="energylabel" id="energylabel" class="form-control reverse js-energylabel-select js-count">
3030 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Vælg", "Vælg")</option>
3031 <option value="01">G</option>
3032 <option value="02">F</option>
3033 <option value="03">E</option>
3034 <option value="04">D</option>
3035 <option value="05">C</option>
3036 <option value="06">B</option>
3037 <option value="07">A</option>
3038 <option value="08">A2010</option>
3039 <option value="09">A2015</option>
3040 <option value="10">A2020+</option>
3041 </select>
3042 </div>
3043 </div>
3044 </div>
3045 </div>
3046 <div class="col-12 col-sm-6 col-lg-3 mt-3">
3047 <h4 class=""><b>@Translate("Smartpage:Search.Økonomi", "Økonomi")</b></h4>
3048 <div class="filter-container row">
3049 <label class="d-block col-12">@Translate("Smartpage:Search.Ejerudgift/boligydelse pr. måned", "Ejerudgift/boligydelse pr. måned")</label>
3050 <div class="col-6 pr-sm-0 pr-2">
3051 <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"] : "")' />
3052 <select class="form-control js-subsidymin-frontpage-select js-count">
3053 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MinDKK", "Min. DKK")</option>
3054 @for (var i = 0; i <= 25000; i += 1250)
3055 {
3056 if (i == 25000)
3057 {
3058 <option value="@Converter.ToInt32(i)">@Converter.ToInt32(i).ToString("N0")+</option>
3059 }
3060 else
3061 {
3062 <option value="@Converter.ToInt32(i)">@Converter.ToInt32(i).ToString("N0")</option>
3063 }
3064 }
3065 </select>
3066 </div>
3067 <div class="col-6 pl-sm-0 pl-2">
3068 <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"] : "")' />
3069 <select class="form-control js-subsidymax-frontpage-select js-count">
3070 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MaxDKK", "Max. DKK")</option>
3071 @for (var i = 0; i <= 25000; i += 1250)
3072 {
3073 if (i == 25000)
3074 {
3075 <option value="@Converter.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")+</option>
3076 }
3077 else
3078 {
3079 <option value="@Converter.ToInt32(i)">@Convert.ToInt32(i).ToString("N0")</option>
3080 }
3081 }
3082 </select>
3083 </div>
3084 </div>
3085 </div>
3086 <div class="col-12 col-sm-6 col-lg-4 offset-lg-5 mt-3 mt-sm-0">
3087 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search"></i> @Translate("Smartpage:Search.AnvendFiltre", "Anvend filtre")</button>
3088 </div>
3089 </div>
3090 </div>
3091 </div>
3092 </div>
3093 <div class="row d-block d-md-none form-wrapper no-gutters">
3094 <div class="col-xs-12 col-md-2">
3095 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search"></i> @Translate("Smartpage:Search.Søg", "Søg")</button>
3096 </div>
3097 </div>
3098
3099
3100 </form>
3101 </div>
3102 }
3103 else
3104 {
3105 <div class="main-search-form center">
3106 <i class="fal fa-times float-right fa-2x js-close-search"></i>
3107 <div class="row mb-3 align-items-center">
3108 <div class="col-xs-12 col-md-5 border-right">
3109 <h3>@Translate("Smartpage:Search.Søg bolig", "Søg bolig")</h3>
3110 </div>
3111 <div class="col-xs-12 col-md-7 home-count d-none d-md-block">
3112 <span class="search-count" id="searchCounterMain">0</span> <span>@Translate("Smartpage:Search.BoligerTilSalg", "Boliger til salg")</span>
3113 </div>
3114 </div>
3115
3116 <form id="main-search" class="searchbar-wrapper" action="/Default.aspx" method="GET">
3117 <input type="hidden" name="ID" value='@searchPageId' id="searchPageId" disabled="disabled" />
3118 <div class="row form-wrapper no-gutters">
3119
3120 <div class="col-12 mb-10">
3121 <div class="searchbar">
3122 <input type="text" name="@querySearchNameAttr" id="searchfield" class="search-input" placeholder="Postnummer, by, vej eller sagsnummer" tabindex="1" value='@querySearch' />
3123 <input type="hidden" id="zipcodefrom" name="zipcodefrom" value='@queryZipCodeFrom' />
3124 <input type="hidden" id="zipcodeto" name="zipcodeto" value='@queryZipCodeTo' />
3125 </div>
3126 </div>
3127 <div class="col-xs-12 col-md-8">
3128 <div class="row no-gutters">
3129 <div class="col-xs-12 col-md-6 input-col">
3130 <div class="dropdown">
3131 <button class="btn btn-dropdown dropdown-toggle reverse js-count" type="button" id="Boligtype" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
3132 @Translate("Smartpage:Search.Boligtype", "Boligtype")
3133 </button>
3134 <div class="dropdown-menu box-shadow bolig-dropdown-container" aria-labelledby="Boligtype">
3135 <ul class="bolig-dropdown list-unstyled">
3136 @{
3137 RenderBoligtypeCheckboxesDropdown();
3138 }
3139 </ul>
3140 <span class="border-fat"></span>
3141 <button class="btn btn-primary js-close-dropdown">@Translate("Smartpage:Search.Anvend", "Anvend")</button>
3142 </div>
3143
3144 </div>
3145
3146 </div>
3147 <div class="col-xs-12 col-md-6 input-col">
3148 <div class="dropdown">
3149 <button class="btn btn-dropdown dropdown-toggle reverse" type="button" id="Pris" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
3150 @Translate("Smartpage:Search.Pris", "Pris")
3151 </button>
3152 <div class="dropdown-menu box-shadow dropdown-price" aria-labelledby="Pris">
3153 <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")' />
3154 <select class="form-control js-pricemin-frontpage-select js-input-min-select mb-10">
3155 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MinPris", "Min. pris")</option>
3156 @for (var i = 0; i <= 10000000; i += 100000)
3157 {
3158 if (i == 10000000)
3159 {
3160 <option value="@i" data-value='@Converter.ToInt32(i).ToString("N0")+'>@Converter.ToInt32(i).ToString("N0")+</option>
3161 }
3162 else
3163 {
3164 <option value="@i" data-value='@Converter.ToInt32(i).ToString("N0")'>@Converter.ToInt32(i).ToString("N0")</option>
3165 }
3166 }
3167 </select>
3168
3169 <input type="text" name="pricemax" class="form-control js-auto-thousand js-pricemax-frontpage-input" placeholder='@Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris")' />
3170 <select class="form-control js-pricemax-frontpage-select js-input-max-select">
3171 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MaxPris", "Max. pris")</option>
3172 @for (var i = 0; i <= 10000000; i += 100000)
3173 {
3174 if (i == 10000000)
3175 {
3176 <option value="@i" data-value='@Converter.ToInt32(i).ToString("N0")+'>@Converter.ToInt32(i).ToString("N0")+</option>
3177 }
3178 else
3179 {
3180 <option value="@i" data-value='@Converter.ToInt32(i).ToString("N0")'>@Converter.ToInt32(i).ToString("N0")</option>
3181 }
3182 }
3183 </select>
3184 </div>
3185 </div>
3186 </div>
3187 </div>
3188 </div>
3189 <div class="col-xs-12 col-md-4 d-none d-md-block">
3190 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search"></i> @Translate("Smartpage:Search.Søg", "Søg")</button>
3191 </div>
3192 </div>
3193
3194 <div class="row moresearch-btn no-gutters">
3195 <div class="col-sm-12">
3196 <div class="row align-items-center no-gutters">
3197 <div class="col-12 col-md-5">
3198 <button class="btn-blank js-search-collapse" type="button" data-toggle="collapse" data-target="#moreSearch-master" aria-expanded="false" aria-controls="moreSearch-master">
3199 <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>
3200 </button>
3201 </div>
3202 <div class="col-6 col-md-3 mb-xs-4">
3203 <a class="js-reset reset-btn white">@Translate("Smartpage:Search.NulstilValg", "Nulstil valg")</a>
3204 </div>
3205 <div class="col-6 col-md-4 mb-xs-4">
3206 <div class="parent-purchases">
3207 <label class="checkbox-container white">
3208 @Translate("Smartpage:Search.Forældrekøbegnet", "Forældrekøbegnet")
3209 <input type="checkbox" name="foraeldrekoebegnet" value="true" class="js-input-check">
3210 <span class="checkmark grey"></span>
3211 </label>
3212 </div>
3213 </div>
3214 </div>
3215
3216 <div class="collapse" id="moreSearch-master">
3217
3218 <h4 class="mt-20"><b>@Translate("Smartpage:Search.Bolig", "Bolig")</b></h4>
3219 <div class="row align-items-end mb-30">
3220 <div class="col-12 col-sm-6 col-lg-6 mb-3 mb-lg-0">
3221 <div class="filter-container row">
3222 <label class="d-block col-12">@Translate("Smartpage:Search.Boligareal", "Boligareal")</label>
3223 <div class="col-6 pr-sm-0 pr-2">
3224 <input type="text" name="boligarealmin" id="boligarealmin" class="form-control js-boligarealmin-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")' />
3225 <select class="form-control js-boligarealmin-frontpage-select js-count">
3226 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")</option>
3227 @for (var i = 0; i <= 300; i += 10)
3228 {
3229 if (i == 300)
3230 {
3231 <option>@i+</option>
3232 }
3233 else
3234 {
3235 <option>@i</option>
3236 }
3237 }
3238 </select>
3239 </div>
3240 <div class="col-6 pl-sm-0 pl-2">
3241 <input type="text" name="boligarealmax" id="boligarealmax" class="form-control js-boligarealmax-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")' />
3242 <select class="form-control js-boligarealmax-frontpage-select js-count">
3243 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")</option>
3244 @for (var i = 0; i <= 300; i += 10)
3245 {
3246 if (i == 300)
3247 {
3248 <option>@i+</option>
3249 }
3250 else
3251 {
3252 <option>@i</option>
3253 }
3254 }
3255 </select>
3256 </div>
3257 </div>
3258 </div>
3259 <div class="col-12 col-sm-6 col-lg-6 mb-3 mb-lg-0">
3260 <div class="filter-container row">
3261 <label class="d-block col-12">@Translate("Smartpage:Search.Grundareal", "Grundareal")</label>
3262 <div class="col-6 pr-sm-0 pr-2">
3263 <input type="text" name="grundarealmin" id="grundarealmin" class="form-control js-grundarealmin-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")' />
3264 <select class="form-control js-grundarealmin-frontpage-select js-count">
3265 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Minm2", "Min. m2")</option>
3266 @for (var i = 0; i <= 10000; i += 100)
3267 {
3268 if (i == 10000)
3269 {
3270 <option value="@Converter.ToInt32(i)">@Converter.ToInt32(i).ToString("N0")+</option>
3271 }
3272 else
3273 {
3274 <option value="@Converter.ToInt32(i)">@Converter.ToInt32(i).ToString("N0")</option>
3275 }
3276 }
3277 </select>
3278 </div>
3279 <div class="col-6 pl-sm-0 pl-2">
3280 <input type="text" name="grundarealmax" id="grundarealmax" class="form-control js-grundarealmax-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")' />
3281 <select class="form-control js-grundarealmax-frontpage-select">
3282 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Maxm2", "Max. m2")</option>
3283 @for (var i = 0; i <= 10000; i += 100)
3284 {
3285 if (i == 10000)
3286 {
3287 <option value="@Converter.ToInt32(i)">@Converter.ToInt32(i).ToString("N0")+</option>
3288 }
3289 else
3290 {
3291 <option value="@Converter.ToInt32(i)">@Converter.ToInt32(i).ToString("N0")</option>
3292 }
3293 }
3294 </select>
3295 </div>
3296 </div>
3297 </div>
3298 <div class="col-12 col-sm-6 col-lg-6 mb-3 mb-lg-0">
3299 <div class="filter-container row">
3300 <label class="d-block col-12">Antal rum</label>
3301
3302 <div class="col-6 pr-sm-0 pr-2">
3303 <select name="roomsmin" id="roomsmin" class="form-control reverse js-roomsmin-select js-count">
3304 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Min", "Min")</option>
3305 <option value="1">1</option>
3306 <option value="2">2</option>
3307 <option value="3">3</option>
3308 <option value="4">4</option>
3309 <option value="5">5+</option>
3310 </select>
3311 </div>
3312 <div class="col-6 pl-sm-0 pl-2">
3313 <select name="roomsmax" id="roomsmax" class="form-control reverse js-roomsmax-select js-count">
3314 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Placeholder.Max", "Max")</option>
3315 <option value="1">1</option>
3316 <option value="2">2</option>
3317 <option value="3">3</option>
3318 <option value="4">4</option>
3319 <option value="5">5+</option>
3320 </select>
3321 </div>
3322 </div>
3323 </div>
3324 <div class="col-12 col-sm-6 col-lg-6 mb-3 mb-lg-0">
3325 <div class="row">
3326 <div class="col-12 pr-2">
3327 <div class="filter-container">
3328 <label class="d-block">Energimærke</label>
3329 <select name="energylabel" id="energylabel" class="form-control reverse js-energylabel-select js-count">
3330 <option disabled selected="selected">@Translate("Smartpage:Search.Vælg", "Vælg")</option>
3331 <option value="01">G</option>
3332 <option value="02">F</option>
3333 <option value="03">E</option>
3334 <option value="04">D</option>
3335 <option value="05">C</option>
3336 <option value="06">B</option>
3337 <option value="07">A</option>
3338 <option value="08">A2010</option>
3339 <option value="09">A2015</option>
3340 <option value="10">A2020+</option>
3341 </select>
3342 </div>
3343 </div>
3344 </div>
3345 </div>
3346 <div class="col-12 col-sm-6 col-lg-6 mt-3">
3347 <h4 class=""><b>@Translate("Smartpage:Search.Økonomi", "Økonomi")</b></h4>
3348 <div class="filter-container row">
3349 <label class="d-block col-12">@Translate("Smartpage:Search.Ejerudgift/boligydelse pr. måned", "Ejerudgift/boligydelse pr. måned")</label>
3350 <div class="col-6 pr-sm-0 pr-2">
3351 <input type="text" name="subsidymin" id="subsidymin" class="form-control js-subsidymin-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Min", "Min")' />
3352 <select class="form-control js-subsidymin-frontpage-select js-count">
3353 <option selected="selected" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MinDKK", "Min. DKK")</option>
3354 @for (var i = 0; i <= 25000; i += 1250)
3355 {
3356 if (i == 25000)
3357 {
3358 <option value="@Converter.ToInt32(i)">@Converter.ToInt32(i).ToString("N0")+</option>
3359 }
3360 else
3361 {
3362 <option value="@Converter.ToInt32(i)">@Converter.ToInt32(i).ToString("N0")</option>
3363 }
3364 }
3365 </select>
3366 </div>
3367 <div class="col-6 pl-sm-0 pl-2">
3368 <input type="text" name="subsidymax" id="subsidymax" class="form-control js-subsidymax-frontpage-input js-count" placeholder='@Translate("Smartpage:Search.Placeholder.Max", "Max")' />
3369 <select class="form-control js-subsidymax-frontpage-select js-count">
3370 <option selected="true" disabled="disabled">@Translate("Smartpage:Search.Placeholder.MaxDKK", "Max. DKK")</option>
3371 @for (var i = 0; i <= 25000; i += 1250)
3372 {
3373 if (i == 25000)
3374 {
3375 <option value="@Converter.ToInt32(i)">@Converter.ToInt32(i).ToString("N0")+</option>
3376 }
3377 else
3378 {
3379 <option value="@Converter.ToInt32(i)">@Converter.ToInt32(i).ToString("N0")</option>
3380 }
3381 }
3382 </select>
3383 </div>
3384 </div>
3385 </div>
3386 <div class="col-12 col-sm-6 col-lg-6 mt-3 mt-sm-0">
3387 <button type="submit" class="btn btn-block btn-search"><i class="fa fa-search"></i> @Translate("Smartpage:Search.AnvendFiltre", "Anvend filtre")</button>
3388 </div>
3389 </div>
3390 </div>
3391 </div>
3392 </div>
3393 <div class="row d-block d-md-none form-wrapper no-gutters">
3394 <div class="col-xs-12 col-md-2">
3395 <button type="submit" class="btn btn-block btn-search dark-red"><i class="fa fa-search"></i> @Translate("Smartpage:Search.Søg", "Søg")</button>
3396 </div>
3397 </div>
3398
3399
3400 </form>
3401 </div>
3402 }
3403 </div>
3404
3405 @{
3406 RenderSlideMenu(false, Convert.ToString(settings_Maeglersogning));
3407 }
3408
3409 @if (isBrokerPage)
3410 {
3411 <section class="maegler-navbar">
3412 @RenderNavigation(new
3413 {
3414 id = "navbar-main",
3415 cssclass = "dwnavigation",
3416 template = "ul_li.xslt",
3417 StartLevel = 1,
3418 EndLevel = 1
3419 })
3420 </section>
3421 }
3422
3423 <div class="visual-editor">
3424 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
3425
3426
3427 @using Dynamicweb.Extensibility
3428 @using Dynamicweb.Core
3429 @using Dynamicweb.Rapido.Blocks.Components
3430 @using Dynamicweb.Rapido.Blocks.Components.Articles
3431 @using Dynamicweb.Rapido.Blocks.Components.General
3432 @using Dynamicweb.Rapido.Blocks
3433 @using Dynamicweb.Content.Items
3434
3435 @functions {
3436 BlocksPage articlePage = BlocksPage.GetBlockPage("DynamicArticle");
3437
3438 public string GetParentSettingsItem(string systemName)
3439 {
3440 string item = null;
3441
3442 Dynamicweb.Content.Page current = Dynamicweb.Services.Pages.GetPage(Model.ID);
3443 while (current != null && current.Parent != current)
3444 {
3445 var temp = current.Item != null ? current.Item[systemName] : "";
3446
3447 if (temp != null)
3448 {
3449 item = temp.ToString();
3450
3451 if (!String.IsNullOrEmpty(item) && !String.Equals("default", item, StringComparison.OrdinalIgnoreCase))
3452 {
3453 break;
3454 }
3455 }
3456
3457 current = current.Parent;
3458 }
3459
3460 return item;
3461 }
3462
3463 public string GetArticleCategory(int pageId)
3464 {
3465 string categoryName = null;
3466
3467 //Secure that the article is not in the root folder = Actual has a category
3468 if (Dynamicweb.Services.Pages.GetPage(pageId).Parent != null)
3469 {
3470 if (Dynamicweb.Services.Pages.GetPage(pageId).Parent.Parent != null)
3471 {
3472 if (!String.IsNullOrEmpty(Dynamicweb.Services.Pages.GetPage(pageId).Parent.Parent.ItemType))
3473 {
3474 categoryName = Dynamicweb.Services.Pages.GetPage(pageId).Parent.GetDisplayName();
3475 }
3476 }
3477 }
3478
3479 return categoryName;
3480 }
3481
3482 public string GetArticleCategoryColor(int pageId)
3483 {
3484 string categoryColor = "";
3485
3486 //Secure that the article is not in the root folder = Actual has a category
3487 if (Dynamicweb.Services.Pages.GetPage(pageId).Parent != null)
3488 {
3489 if (Dynamicweb.Services.Pages.GetPage(pageId).Parent.Parent != null)
3490 {
3491 if (!String.IsNullOrEmpty(Dynamicweb.Services.Pages.GetPage(pageId).Parent.Parent.ItemType))
3492 {
3493 if (Dynamicweb.Services.Pages.GetPage(pageId).Parent.Item["CategoryColor"] != null)
3494 {
3495 var service = new ColorSwatchService();
3496 categoryColor = Dynamicweb.Services.Pages.GetPage(pageId).Parent.Item["CategoryColor"].ToString();
3497
3498 if (!categoryColor.Contains("#"))
3499 {
3500 categoryColor = service.GetHexColor(Converter.ToInt32(Model.Area.ID), categoryColor);
3501 }
3502 }
3503 }
3504 }
3505 }
3506
3507 return categoryColor;
3508 }
3509 }
3510
3511 @{
3512 string listPageId = Converter.ToString(GetPageIdByNavigationTag("DynamicListFeed"));
3513 string parentPageId = Dynamicweb.Services.Pages.GetPage(Model.ID).Parent.ID.ToString();
3514 string topLayout = Model.Item.GetList("TopLayout") != null ? Model.Item.GetList("TopLayout").SelectedValue : "default";
3515 topLayout = topLayout == "default" && GetParentSettingsItem("ArticleTopLayout") != null ? GetParentSettingsItem("ArticleTopLayout").ToString().ToLower() : topLayout;
3516 string textLayout = Model.Item.GetList("TextLayout") != null ? Model.Item.GetList("TextLayout").SelectedValue : "default";
3517 textLayout = textLayout == "default" && GetParentSettingsItem("ArticleTextLayout") != null ? GetParentSettingsItem("ArticleTextLayout").ToString().ToLower() : textLayout;
3518 string imageLayout = Model.Item.GetList("ImageLayout") != null ? Model.Item.GetList("ImageLayout").SelectedValue : "default";
3519 imageLayout = imageLayout == "default" && GetParentSettingsItem("ArticleImageLayout") != null ? GetParentSettingsItem("ArticleImageLayout").ToString().ToLower() : imageLayout;
3520
3521 //string imageColumns = imageLayout == "straight" && textLayout != "full" ? "8" : "12";
3522 //string contentColumns = textLayout != "full" ? "8" : "12";
3523 string imageColumns = "12";
3524 string contentColumns = "12";
3525
3526 int externalParagraphId = Model.Item.GetItem("CTAParagraphLink") != null ? Model.Item.GetItem("CTAParagraphLink").ParagraphID : 0;
3527
3528 ArticleHeaderLayout headerLayout;
3529
3530 switch (topLayout)
3531 {
3532 case "default":
3533 headerLayout = ArticleHeaderLayout.Clean;
3534 break;
3535 case "split":
3536 headerLayout = ArticleHeaderLayout.Split;
3537 break;
3538 case "banner":
3539 headerLayout = ArticleHeaderLayout.Banner;
3540 break;
3541 case "overlay":
3542 headerLayout = ArticleHeaderLayout.Overlay;
3543 break;
3544 default:
3545 headerLayout = ArticleHeaderLayout.Clean;
3546 break;
3547 }
3548
3549
3550 Block articleContainer = new Block
3551 {
3552 Id = "ArticleContainer",
3553 SortId = 10,
3554 Design = new Design
3555 {
3556 RenderType = RenderType.Row
3557 },
3558 BlocksList = new List<Block> {
3559 new Block {
3560 Id = "ArticleBody",
3561 SortId = 30,
3562 Design = new Design {
3563 RenderType = RenderType.Column,
3564 Size = "12",
3565 HidePadding = true,
3566 CssClass = "margin-top-large"
3567 }
3568 }
3569 }
3570 };
3571 articlePage.Add(articleContainer);
3572
3573 ButtonLayout topBannerButtonLayout = ButtonLayout.Primary;
3574
3575 switch (Model.Item.GetString("ButtonDesign"))
3576 {
3577 case "primary":
3578 topBannerButtonLayout = ButtonLayout.Primary;
3579 break;
3580 case "secondary":
3581 topBannerButtonLayout = ButtonLayout.Secondary;
3582 break;
3583 case "teritary":
3584 topBannerButtonLayout = ButtonLayout.Tertiary;
3585 break;
3586 case "link":
3587 topBannerButtonLayout = ButtonLayout.Link;
3588 break;
3589 }
3590
3591 ArticleHeader topBanner = new ArticleHeader
3592 {
3593 Layout = headerLayout,
3594 Image = new Image { Path = Model.Item.GetFile("Image"), ImageDefault = new ImageSettings { Width = 1920, Height = 640 } },
3595 Heading = Model.Item.GetString("Title"),
3596 Subheading = Model.Item.GetString("Summary"),
3597 TextColor = "#fff",
3598 Author = Model.Item.GetString("Author"),
3599 Date = Model.Item.GetString("Date"),
3600 Category = GetArticleCategory(Model.ID),
3601 CategoryColor = GetArticleCategoryColor(Model.ID),
3602 Link = Model.Item.GetString("Link"),
3603 LinkText = Model.Item.GetString("LinkText"),
3604 ButtonLayout = topBannerButtonLayout,
3605 RatingScore = Model.Item.GetString("Rating") != null ? Converter.ToInt32(Model.Item.GetList("Rating").SelectedValue) : 0,
3606 RatingOutOf = Model.Item.GetString("Rating") != null ? Model.Item.GetList("Rating").Options.Count : 0,
3607 ExternalParagraphId = externalParagraphId
3608 };
3609
3610 Block articleTop = new Block
3611 {
3612 Id = "ArticleHead",
3613 SortId = 20,
3614 Component = topBanner,
3615 Design = new Design
3616 {
3617 RenderType = RenderType.Column,
3618 Size = "12",
3619 HidePadding = true,
3620 CssClass = "article-head"
3621 }
3622 };
3623 //articlePage.Add("ArticleContainer", articleTop);
3624
3625
3626 Block articleBodyRow = new Block
3627 {
3628 Id = "ArticleBodyRow",
3629 SortId = 10,
3630 SkipRenderBlocksList = true
3631 };
3632 articlePage.Add("ArticleBody", articleBodyRow);
3633
3634
3635 if (Model.Item.GetString("Paragraphs") != null)
3636 {
3637 int count = 0;
3638 foreach (var paragraph in Model.Item.GetItems("Paragraphs"))
3639 {
3640 if (!paragraph.GetBoolean("RenderAsQuote"))
3641 {
3642 string enableDropCap = Model.Item.GetString("EnableDropCap") != null ? Model.Item.GetList("EnableDropCap").SelectedValue.ToLower() : "default";
3643 enableDropCap = enableDropCap == "default" && GetParentSettingsItem("EnableDropCap") != null ? GetParentSettingsItem("EnableDropCap").ToString().ToLower() : enableDropCap;
3644 string text = paragraph.GetString("Text") != null ? paragraph.GetString("Text") : "";
3645
3646 if (!String.IsNullOrEmpty(text) && enableDropCap == "true" && count == 0 && paragraph.GetString("Text").Substring(0, 3) == "<p>")
3647 {
3648 string firstLetter = paragraph.GetString("Text").Substring(3, 1);
3649 text = paragraph.GetString("Text").Remove(3, 1);
3650 text = text.Insert(3, "<span class=\"article__drop-cap\">" + firstLetter + "</span>");
3651 }
3652
3653 if (!String.IsNullOrEmpty(paragraph.GetString("Heading")))
3654 {
3655 Block articleParagraphHeader = new Block
3656 {
3657 Id = "ArticleParagraph" + count + "Heading",
3658 SortId = (count * 10) ,
3659 Component = new ArticleSubHeader { Title = paragraph.GetString("Heading") },
3660 Design = new Design
3661 {
3662 RenderType = RenderType.Column,
3663 Size = contentColumns,
3664 CssClass = "u-color-light--bg u-padding--lg"
3665 }
3666 };
3667 articlePage.Add("ArticleBodyRow", articleParagraphHeader);
3668 }
3669
3670 if (paragraph.GetFile("Image") != null)
3671 {
3672 string imageTitle = !string.IsNullOrEmpty(paragraph.GetString("Heading")) ? paragraph.GetString("Heading") : "";
3673
3674 Block articleParagraphImage = new Block
3675 {
3676 Id = "ArticleParagraph" + count + "Image",
3677 SortId = (count * 10) + 2,
3678 Design = new Design
3679 {
3680 RenderType = RenderType.Column,
3681 Size = imageColumns,
3682 CssClass = "u-color-light--bg u-padding--lg"
3683 }
3684 };
3685
3686 if (imageLayout == "banner")
3687 {
3688 ArticleBanner banner = new ArticleBanner
3689 {
3690 Image = new Image { Path = paragraph.GetFile("Image"), ImageDefault = new ImageSettings { Height = 650, Width = 1300 }, Caption = paragraph.GetString("ImageCaption") },
3691 Heading = imageTitle,
3692 UseFilters = false
3693 };
3694 articleParagraphImage.Component = banner;
3695 }
3696 else
3697 {
3698 ArticleImage image = new ArticleImage
3699 {
3700 Image = new Image
3701 {
3702 Path = paragraph.GetFile("Image"),
3703 Title = imageTitle,
3704 ImageDefault = new ImageSettings { Height = 650, Width = 1300 },
3705 Caption = paragraph.GetString("ImageCaption"),
3706 CssClass = "u-full-width"
3707 }
3708 };
3709 articleParagraphImage.Component = image;
3710 }
3711
3712 articlePage.Add("ArticleBodyRow", articleParagraphImage);
3713 }
3714
3715 if (!String.IsNullOrEmpty(paragraph.GetString("VideoURL")))
3716 {
3717 Block articleParagraphVideo = new Block
3718 {
3719 Id = "ArticleParagraph" + count + "Video",
3720 SortId = (count * 10) + 3,
3721 Component = new ArticleVideo { Url = paragraph.GetString("VideoURL"), AutoPlay = "false" },
3722 Design = new Design
3723 {
3724 RenderType = RenderType.Column,
3725 Size = imageColumns,
3726 CssClass = "u-color-light--bg u-padding--lg"
3727 }
3728 };
3729 articlePage.Add("ArticleBodyRow", articleParagraphVideo);
3730 }
3731
3732 if (!String.IsNullOrEmpty(text))
3733 {
3734 Block articleParagraphText = new Block
3735 {
3736 Id = "ArticleParagraph" + count + "Text",
3737 SortId = (count * 10) + 3,
3738 Component = new ArticleText { Text = text },
3739 Design = new Design
3740 {
3741 RenderType = RenderType.Column,
3742 Size = contentColumns,
3743 CssClass = "u-color-light--bg u-padding--lg"
3744 }
3745 };
3746
3747 articlePage.Add("ArticleBodyRow", articleParagraphText);
3748 }
3749 }
3750 else
3751 {
3752 if (!String.IsNullOrEmpty(paragraph.GetString("Text")))
3753 {
3754 string quoteText = paragraph.GetString("Text") != null ? paragraph.GetString("Text") : "";
3755 string quoteAuthor = paragraph.GetString("Heading") != null ? paragraph.GetString("Heading") : "";
3756
3757 Block articleParagraphQuote = new Block
3758 {
3759 Id = "ArticleParagraph" + count + "Quote",
3760 SortId = (count * 10) + 3,
3761 Component = new ArticleQuote { Image = new Image { Path = paragraph.GetFile("Image") }, Text = quoteText, Author = quoteAuthor },
3762 Design = new Design
3763 {
3764 RenderType = RenderType.Column,
3765 Size = contentColumns,
3766 CssClass = "u-color-light--bg u-padding--lg"
3767 }
3768 };
3769 articlePage.Add("ArticleBodyRow", articleParagraphQuote);
3770 }
3771 }
3772
3773 count++;
3774 }
3775 }
3776
3777 articleBodyRow.Component = new ArticleBodyRow { SubBlocks = articleBodyRow.BlocksList, TopLayout = topLayout, TextLayout = textLayout };
3778
3779
3780 //Related
3781 string showRelatedArtices = Model.Item.GetString("ShowRelatedArticles") != null ? Model.Item.GetList("ShowRelatedArticles").SelectedValue.ToLower() : "default";
3782 showRelatedArtices = showRelatedArtices == "default" && GetParentSettingsItem("ShowRelatedArticles") != null ? GetParentSettingsItem("ShowRelatedArticles").ToString().ToLower() : showRelatedArtices;
3783
3784 if (showRelatedArtices == "true")
3785 {
3786 Block articleRelated = new Block
3787 {
3788 Id = "ArticleRelated",
3789 SortId = 30,
3790 Component = new ArticleRelated { Title = Translate("Related articles"), FeedPageId = listPageId, Query = "sourceType=Page&sourcePage=" + parentPageId, PageSize = 4, CurrentPageId = Model.ID.ToString() },
3791 Design = new Design
3792 {
3793 RenderType = RenderType.Column,
3794 Size = "12"
3795 }
3796 };
3797 articlePage.Add("ArticleContainer", articleRelated);
3798 }
3799 }
3800
3801
3802 @* The @RenderBlockList base helper is included in Components/GridBuilder.cshtml *@
3803 <section class="center-container content-container dw-mod">
3804 @RenderBlockList(articlePage.BlocksRoot.BlocksList)
3805 </section>
3806 </div>
3807
3808 @if (MyBroker != null && MyBroker.Broker != null && MyBroker.Employee != null && Model.Item.GetBoolean("HideMyBroker") != true)
3809 {
3810 string bName = MyBroker.Broker.Name;
3811 string bClass = "na";
3812 string bImage = "/Files/Templates/Designs/rm/assets/images/na-real.png";
3813
3814 if (!string.IsNullOrEmpty(MyBroker.Broker.CompanyName))
3815 {
3816 bName = MyBroker.Broker.CompanyName;
3817 }
3818 try
3819 {
3820 var imgUrl = MyBroker.Employee.Item().GetString("BilledeUrl");
3821 if (!string.IsNullOrEmpty(imgUrl))
3822 {
3823 bImage = imgUrl;
3824 bClass = "";
3825 }
3826 }
3827 catch
3828 {
3829 // Ignore
3830 }
3831
3832 string bAreaID = MyBroker.Broker.Item().GetString("WebsiteId");
3833 string medlemsnummer = MyBroker.Broker.Item().GetString("CBMedlemsnummer");
3834
3835 <section class="din-maegler">
3836 <div class="img-wrapper @bClass" style="background-image:url('@bImage')"></div>
3837 <div class="container">
3838 <div class="col-12 col-sm-12 col-md-6 offset-md-6">
3839 <h2>Din personlige mægler</h2>
3840 <div class="row">
3841 <div class="col-12 col-sm-6">
3842 <p>
3843 <b class="my-broker-name">@MyBroker.Employee.Name</b><br>
3844 @if (!string.IsNullOrEmpty(MyBroker.Employee.Email))
3845 {
3846 <text>Mail: <a href="mailto:@(ExtractMaskedEmail(MyBroker.Employee.Email))" class="my-broker-email">@ExtractMaskedEmail(MyBroker.Employee.Email)</a><br></text>
3847 }
3848 @if (!string.IsNullOrEmpty(MyBroker.Employee.PhoneMobile))
3849 {
3850 <text>Tlf.: <a href="tel:@(MyBroker.Employee.PhoneMobile)" class="my-broker-phone">@FormatPhoneNumber(MyBroker.Employee.PhoneMobile)</a></text>
3851 }
3852 else if (!string.IsNullOrEmpty(MyBroker.Broker.Telephone))
3853 {
3854 <text>Tlf.: <a href="tel:@(MyBroker.Broker.Telephone)" class="my-broker-phone">@FormatPhoneNumber(MyBroker.Broker.Telephone)</a></text>
3855 }
3856 </p>
3857 </div>
3858 <div class="col-12 col-sm-6">
3859 <p>
3860 <b class="my-broker-company-name">@bName</b><br>
3861 <span class="my-broker-company-address">@MyBroker.Broker.Address</span><br>
3862 <span class="my-broker-company-zip">@MyBroker.Broker.ZipCode</span> <span class="my-broker-company-city">@MyBroker.Broker.City</span><br>
3863 @if (!string.IsNullOrEmpty(bEmail))
3864 {
3865 <text>Mail: <a href="mailto:@(bEmail)" class="my-broker-broker-email">@bEmail</a><br></text>
3866 }
3867 @if (!string.IsNullOrEmpty(MyBroker.Broker.Telephone))
3868 {
3869 <text>Tlf.: <a href="tel:@(MyBroker.Broker.Telephone)" class="my-broker-broker-phone">@FormatPhoneNumber(MyBroker.Broker.Telephone)</a></text>
3870 }
3871 </p>
3872 </div>
3873 </div>
3874 <div class="row">
3875 <br />
3876 <div class="col-12 col-sm-6">
3877 <a href="/@medlemsnummer.Substring(1)" class="btn btn-primary btn-block my-broker-company-url">Til mæglerens side</a>
3878 </div>
3879
3880 </div>
3881 </div>
3882 </div>
3883 </section>
3884 }
3885 <footer>
3886 <div class="container">
3887 <div class="row">
3888 @{
3889 var navigationSettings = new NavigationSettings();
3890 navigationSettings.StartLevel = 1;
3891 navigationSettings.StopLevel = 3;
3892 navigationSettings.ExpandMode = ExpandMode.All;
3893 navigationSettings.RootAreaId = 1;
3894 navigationSettings.RootNavigationTag = "footer-nav";
3895
3896 }
3897 @Navigation.RenderNavigation("Navigation/footerNav.cshtml", navigationSettings)
3898 </div>
3899 </div>
3900 </footer>
3901
3902 @if (Model.CurrentUser?.ID <= 0)
3903 {
3904 <div id="panel-login" class="panel panel-form">
3905 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close">
3906 <b></b>
3907 </button>
3908 <div class="loginform login">
3909 @if (loginParagraphId > 0)
3910 {
3911 <text>
3912 @RenderParagraphContent(loginParagraphId)
3913 </text>
3914 }
3915 </div>
3916 <div class="loginform register js-register-form-wrapper" style="display: none;">
3917 @if (createUserParagraphId > 0)
3918 {
3919 <text>
3920 @RenderParagraphContent(createUserParagraphId)
3921 </text>
3922 }
3923 </div>
3924 <div class="loginform forgotpw" style="display: none;">
3925 <h2 class="forgotpw-reg">@Translate("forgot-pw-reg-title", "Glemt adgangskode")</h2>
3926 <h2 class="forgotpw-broker">@Translate("forgot-pw-broker-title", "Tilmeldt via. mægler")</h2>
3927 <form id="forgotPwForm" class="form-body" method="post" action="">
3928 <input type="hidden" id="AccessUserShopID" name="AccessUserShopID" value="SHOP6" />
3929 <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>
3930 <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>
3931 <div class="form-group">
3932 <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 />
3933 </div>
3934 <button class="btn btn-primary btn-block" type="submit">@Translate("forgot-pw-cta", "Nulstil adgangskode")</button>
3935 <br />
3936 <div id="submitMessage"></div>
3937 </form>
3938 </div>
3939 </div>
3940 }
3941
3942 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel>
3943 @using Dynamicweb.Security.UserManagement
3944
3945 @{
3946 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");
3947 }
3948
3949 <div id="panel-kontakt-koeberraadgivning" class="panel panel-form">
3950 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close">
3951 <b></b>
3952 </button>
3953 <h2>@Translate("Smarptage:Guldkøber.KontaktMægler", "Kontakt Mægler")</h2>
3954 <form id="form-koeberraadgivning" method="POST" action="/InboxHandler">
3955 <div class="form-group">
3956 <label><strong>@Translate("form-navn", "Navn")*</strong></label>
3957 <input class="form-control" type="text" name="navn" tabindex="1" placeholder='@Translate("Smartpage:Kontakt.Placeholder.Navn", "Indtast dit navn")' value='@UserContext.Current.User?.Name' required />
3958 </div>
3959 <div class="form-group">
3960 <label><strong>@Translate("form-email", "E-mail")*</strong></label>
3961 <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='@UserContext.Current.User?.Email' required />
3962 </div>
3963 <div class="form-group row mb-4">
3964 <div class="col-6">
3965 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label>
3966 <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='@UserContext.Current.User?.Phone' required />
3967 </div>
3968 <div class="col-6">
3969 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label>
3970 <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='@UserContext.Current?.User?.Phone' />
3971 </div>
3972 </div>
3973 <h3>@Translate("Smartpage:Salgsvurdering.DinBolig", "Din bolig")</h3>
3974 <div class="form-group row">
3975 <div class="col-4">
3976 <label><strong>@Translate("form-zip", "Post nr")*</strong></label>
3977 <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 />
3978 <input type="hidden" class="js-postnummer-validation" />
3979 </div>
3980 <div class="col-8">
3981 <label><strong>@Translate("form-city", "By")*</strong></label>
3982 <input class="form-control js-city" type="text" readonly />
3983 </div>
3984 </div>
3985 <div class="form-group overflow-unset">
3986 <label><strong>@Translate("form-adresse", "Adresse")*</strong></label>
3987 <input class="form-control js-validate-address" type="text" name="adresse" tabindex="6" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse")' required />
3988
3989 <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>
3990 </div>
3991 <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">
3992 <strong class="f-12"><i class="fas fa-plus"></i> @Translate("Smartpage:Salgsvurdering.Skrivenkommentar", "Skriv en kommentar")</strong>
3993 </button>
3994 <div class="collapse" id="kontaktkoeberrradgiver-collapse">
3995 <div class="form-group">
3996 <textarea class="form-control" name="besked" placeholder='@Translate("form-besked-max", "Skriv en besked på max 150 tegn")' maxlength="150"></textarea>
3997 </div>
3998 </div>
3999
4000 <div class="form-group">
4001 <div class="row">
4002 <div class="col-12">
4003 <button type="submit" class="btn btn-green btn-block">@Translate("KontaktMægler", "Kontakt Mægler")</button>
4004 </div>
4005 </div>
4006 </div>
4007 <div class="form-group mt-3">
4008 <div class="checkbox">
4009 <label>
4010 <input type="checkbox" name="kontaktmigok" required />
4011
4012 <span>@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span>
4013
4014 </label>
4015 </div>
4016 </div>
4017 <div class="form-group form-group-terms">
4018 @privacyPolicyText <a href="mailto:@termsMail">@termsMail</a>.
4019 Læs mere på <a href="@settings_Persondatapolitik">privatlivspolitikkerne</a>.
4020 </div>
4021
4022 <input type="hidden" name="fn" value="krk" />
4023 <input type="hidden" name="origin" value="" />
4024 <input type="hidden" name="brugerId" value="" />
4025 <input type="hidden" name="areaid" value="@Pageview.AreaID" />
4026 <input type="hidden" name="butikId" value="@butikId" />
4027 <input type="hidden" name="ejendomstype" value="" />
4028 <input type="hidden" name="salgspris" value="" />
4029 <input type="hidden" name="modtager" value="" />
4030 </form>
4031 <div id="tak-kontakt-advisor" style="display:none;">
4032 <h2>@Translate("TakForDinInteresse", "Tak for din interesse")</h2>
4033 <div class="row">
4034 <div class="col-6">
4035 <img src="" class="img-fluid js-maegler-img" />
4036 </div>
4037 <div class="col-6">
4038 <p class="js-maegler-name"></p>
4039 <p class="js-maegler-address"></p>
4040 <p class="js-maegler-phone"></p>
4041 <p class="js-maegler-mail"></p>
4042 </div>
4043 </div>
4044 <p>@Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt")</p>
4045 </div>
4046 </div>
4047
4048 <!--ÅBENT HUS-->
4049 <div id="panel-aabenthus" class="panel panel-form">
4050 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close">
4051 <b></b>
4052 </button>
4053
4054
4055 <form id="form-aabenthus" method="POST" action="/InboxHandler">
4056 <h2>@Translate("Smarptage:Aabenthus.TilmeldTilÅbenthus", "Tilmeld til åbent hus")</h2>
4057 <div class="d-block">
4058 <strong>@Translate("Smarptage:Adresse", "Adresse:")</strong> <label class="js-aabenthus-address mb-0"></label>
4059 </div>
4060 <div class="d-block">
4061 <strong>@Translate("Smarptage:Date", "Dato:")</strong> <label class="js-aabenthus-date mb-0"></label>
4062 </div>
4063 <div class="d-block mb-4">
4064 <strong>@Translate("Smarptage:Time", "Tidspunkt:")</strong> <label class="js-aabenthus-time mb-0"></label>
4065 </div>
4066 <h3>@Translate("Smartpage:Aabenthus.DineKontaktoplysning", "Dine kontaktoplysninger")</h3>
4067 <div class="form-group">
4068 <label for="aabenthus-name"><strong>@Translate("form-navn", "Navn")*</strong></label>
4069 <input class="form-control" type="text" name="navn" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Navn", "Indtast dit navn")' value='@UserContext.Current?.User?.Name' required />
4070 </div>
4071 <div class="form-group">
4072 <label><strong>@Translate("form-email", "E-mail")*</strong></label>
4073 <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='@UserContext.Current.User?.Email' required />
4074 </div>
4075 <div class="form-group row">
4076 <div class="col-6">
4077 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label>
4078 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="mobile" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Mobile", "Indtast mobil nr.")' value='@UserContext.Current.User?.Phone' required />
4079 </div>
4080 <div class="col-6">
4081 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label>
4082 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="telefonnummer" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Telefon", "Indtast tlf nr.")' value='@UserContext.Current.User?.Phone' />
4083 </div>
4084 </div>
4085 <div class="form-group">
4086 <div class="row">
4087 <div class="col-12">
4088 <button type="submit" class="btn btn-block btn-green">@Translate("Smartpage:Aabenthus.TilmeldKnap", "Tilmeld åbent hus")</button>
4089 </div>
4090 </div>
4091 </div>
4092 <div class="form-group">
4093 <div class="checkbox">
4094 <label>
4095 <input type="checkbox" name="kontaktmigok" required />
4096
4097 <span class="base-color">@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span>
4098
4099 </label>
4100 </div>
4101 </div>
4102 <div class="form-group">
4103 @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>")
4104
4105 </div>
4106 <input type="hidden" name="fn" value="ah" />
4107 <input type="hidden" name="origin" value="" />
4108 <input type="hidden" name="brugerId" value="@userID" />
4109 <input type="hidden" name="areaid" value="@Pageview.AreaID" />
4110 <input type="hidden" name="butikId" value="@butikId" />
4111 <input type="hidden" name="sagsaddresse" value="" class="js-aabenthus-address-input" />
4112 <input type="hidden" name="ejendomstype" value="" />
4113 <input type="hidden" name="salgspris" value="" />
4114 <input type="hidden" name="modtager" value="" />
4115 <input type="hidden" name="employee" value="" />
4116 <input type="hidden" name="sagsnr" value="" class="js-sagsnr" />
4117 <input type="hidden" name="productId" value="@Dynamicweb.Context.Current.Request["ProductId"]" />
4118 <input type="hidden" name="aftaleid" value="" class="js-aftaleid" />
4119
4120 <input type="hidden" name="dateMail" class="js-aabenthus-date-input" />
4121 <input type="hidden" name="timeMail" class="js-aabenthus-time-input" />
4122 <input type="hidden" name="brokerImageMail" class="property-broker-image-input" />
4123 <input type="hidden" name="employeeNameMail" class="js-maegler-employee-name-input" />
4124 <input type="hidden" name="employeeTitleMail" class="js-maegler-employee-title-input" />
4125 <input type="hidden" name="employeeMailMail" class="js-maegler-mail-input" />
4126 <input type="hidden" name="employeeMobileMail" class="js-maegler-mobile-input" />
4127 <input type="hidden" name="employeePhoneMail" class="js-maegler-phone-input" />
4128
4129 <input type="hidden" name="brokerNameMail" class="js-broker-name-input" />
4130 <input type="hidden" name="brokerAddressMail" class="js-broker-address-input" />
4131 <input type="hidden" name="brokerPhoneMail" class="js-broker-phone-input" />
4132 </form>
4133 <div id="tak-aabenthus" style="display:none;">
4134 <h2>@Translate("Smarptage:Aabenthus.TakForTilmelding", "Tak for din tilmelding til åbent hus!")</h2>
4135 <div class="d-block">
4136 <strong>@Translate("Smarptage:Adresse", "Adresse:")</strong> <label class="js-aabenthus-address mb-0"></label>
4137 </div>
4138 <div class="d-block">
4139 <strong>@Translate("Smarptage:Date", "Dato:")</strong> <label class="js-aabenthus-date mb-0"></label>
4140
4141 </div>
4142 <div class="d-block mb-4">
4143 <strong>@Translate("Smarptage:Time", "Tidspunkt:")</strong> <label class="js-aabenthus-time mb-0"></label>
4144
4145 </div>
4146
4147 <div class="js-employee">
4148 <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>
4149 </div>
4150 <div class="js-not-employee">
4151 <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>
4152 </div>
4153
4154 <div class="row">
4155 <div class="js-employee">
4156 <div class="col-12 js-maegler-img aabenthus-image">
4157 <div class="property-broker-image" style=""></div>
4158
4159 </div>
4160 </div>
4161 <div class="col-12">
4162 <div class="bg-base">
4163
4164 <div class="js-employee">
4165 <h4 class="js-maegler-employee-name"></h4>
4166 <div class="icon-container">
4167 <i class="fas fa-envelope"></i> <span class="js-maegler-mail"></span>
4168 </div>
4169 <div class="icon-container">
4170 <i class="fas fa-phone"></i> <span class="js-maegler-mobile"></span>
4171 </div>
4172 </div>
4173
4174
4175 <h4 class="js-maegler-name"></h4>
4176 <div class="icon-container">
4177 <i class="fas fa-map-marker-alt"></i> <span class="js-maegler-address"></span>
4178 </div>
4179 <div class="icon-container">
4180 <i class="fas fa-phone"></i> <span class="js-maegler-phone"></span>
4181
4182 </div>
4183 <a class="btn btn-border" onclick="panelKontaktmaeglerGuldkoeber()">KONTAKT MÆGLER</a>
4184 </div>
4185 </div>
4186 </div>
4187 </div>
4188 </div>
4189
4190 <!-- KONTAKT GULDKØBER -->
4191 <div id="panel-kontakt-guldkoeber" class="panel panel-form">
4192 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close">
4193 <b></b>
4194 </button>
4195 <h2>@Translate("Smarptage:Guldkøber.KontaktMægler", "Kontakt Mægler")</h2>
4196 <form id="form-kontaktmaegler" method="POST" action="/InboxHandler">
4197 <div class="form-group">
4198 <label><strong>@Translate("form-navn", "Navn")*</strong></label>
4199 <input class="form-control" type="text" name="navn" placeholder='@Translate("form-navn", "Navn")' value='@UserContext.Current.User?.Name' required />
4200 </div>
4201 <div class="form-group">
4202 <label><strong>@Translate("form-email", "E-mail")*</strong></label>
4203 <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='@UserContext.Current.User?.Email' required />
4204 </div>
4205 <div class="form-group row mb-4">
4206 <div class="col-6">
4207 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label>
4208 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="mobile" placeholder='@Translate("Smartpage:Kontakt.Placeholder.Mobile", "Indtast mobil nr.")' value='@UserContext.Current.User?.Phone' required />
4209 </div>
4210 <div class="col-6">
4211 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label>
4212 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="telefonnummer" placeholder='@Translate("Smartpage:Kontakt.Placeholder.Telefon", "Indtast tlf nr.")' value='@UserContext.Current.User?.Phone' />
4213 </div>
4214 </div>
4215 <div class="form-group row">
4216 <div class="col-4">
4217 <label><strong>@Translate("form-zip", "Post nr")*</strong></label>
4218 <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 />
4219 <input type="hidden" class="js-postnummer-validation" />
4220 </div>
4221 <div class="col-8">
4222 <label><strong>@Translate("form-city", "By")*</strong></label>
4223 <input class="form-control js-city" type="text" readonly />
4224 </div>
4225 </div>
4226
4227 <div class="form-group overflow-unset">
4228 <label><strong>@Translate("form-adresse", "Adresse")*</strong></label>
4229 <input class="form-control js-validate-address" type="text" name="adresse" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse")' value="@userAddress" required />
4230 <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>
4231 </div>
4232 <div class="form-group">
4233 <textarea class="form-control" name="besked" placeholder='@Translate("form-besked-max", "Skriv en besked på max 150 tegn")' maxlength="150"></textarea>
4234 </div>
4235 <div class="form-group">
4236 <div class="checkbox">
4237 <label>
4238 <input type="checkbox" name="kontaktmigok" required />
4239
4240 <span>@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span>
4241
4242 </label>
4243 </div>
4244 </div>
4245 <div class="form-group">
4246 <div class="row">
4247 <div class="col-12">
4248 <button type="submit" class="btn btn-green btn-block">@Translate("KontaktMægler", "Kontakt Mægler")</button>
4249 </div>
4250 </div>
4251 </div>
4252 <div class="form-group form-group-terms">
4253 @privacyPolicyText <a href="mailto:@termsMail">@termsMail</a>.
4254 Læs mere på <a href="@settings_Persondatapolitik">privatlivspolitikkerne</a>.
4255 </div>
4256 <input type="hidden" name="fn" value="gk" />
4257 <input type="hidden" name="origin" value="" />
4258 <input type="hidden" name="brugerId" value="@userID" />
4259 <input type="hidden" name="areaid" value="@Pageview.AreaID" />
4260 <input type="hidden" name="butikId" value="@butikId" />
4261 <input type="hidden" name="ejendomstype" value="" />
4262 <input type="hidden" name="salgspris" value="" />
4263 <input type="hidden" name="modtager" value="" />
4264 <input type="hidden" name="employee" value="" />
4265 </form>
4266 <div id="tak-kontakt-maegler-guldkoeber" style="display:none;">
4267 <h2>@Translate("TakForDinInteresse", "Tak for din interesse")</h2>
4268 <p>@Translate("Smartpage:FormKontaktGuld.Subheader", "Vi har sendt din forespørgsel om guldkøbere til:")</p>
4269 <div class="row">
4270 <div class="col-6">
4271 <img src="" class="img-fluid js-maegler-img" />
4272 </div>
4273 <div class="col-6">
4274 <p class="js-maegler-name"></p>
4275 <p class="js-maegler-address"></p>
4276 <p class="js-maegler-phone"></p>
4277 <p class="js-maegler-mail"></p>
4278 </div>
4279 </div>
4280 <p>@Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt")</p>
4281 </div>
4282 </div>
4283
4284 <!-- BESTIL SALGSVURDERING -->
4285 <div id="panel-salgsvurdering" class="panel panel-form">
4286 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close">
4287 <b></b>
4288 </button>
4289
4290 <form id="bestil-salgsvurdering" class="buyer-advisor-form js-buyer-advisor-form" method="POST" action="/InboxHandler">
4291 <h2 class="js-buyer-advisor-header">@Translate("form-salgsvurdering-titel", "Bestil gratis salgsvurdering")</h2>
4292 <p>@Translate("form-salgsvurdering-beskrivelse", "")</p>
4293 <div class="form-group">
4294 <label><strong>@Translate("form-navn", "Navn")*</strong></label>
4295 <input class="form-control" type="text" name="navn" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Navn", "Indtast dit navn")' value='@UserContext.Current.User?.Name' required />
4296 </div>
4297 <div class="form-group">
4298 <label><strong>@Translate("form-email", "E-mail")*</strong></label>
4299 <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='@UserContext.Current.User?.Email' required />
4300 </div>
4301 <div class="form-group row mb-4">
4302 <div class="col-6">
4303 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label>
4304 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="mobile" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Mobile", "Indtast mobil nr.")' value='@UserContext.Current.User?.Phone' required />
4305 </div>
4306 <div class="col-6">
4307 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label>
4308 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="telefonnummer" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Telefon", "Indtast tlf nr.")' value='@UserContext.Current.User?.Phone' />
4309 </div>
4310
4311 </div>
4312
4313 <h3>@Translate("Smartpage:Salgsvurdering.DinBolig", "Din bolig")</h3>
4314 <div class="form-group row">
4315 <div class="col-4">
4316 <label><strong>@Translate("form-zip", "Post nr")*</strong></label>
4317 <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 />
4318 <input type="hidden" class="js-postnummer-validation" />
4319 </div>
4320 <div class="col-8">
4321 <label><strong>@Translate("form-city", "By")*</strong></label>
4322 <input class="form-control js-city" type="text" readonly />
4323 </div>
4324 </div>
4325 <div class="form-group overflow-unset">
4326 <label><strong>@Translate("form-adresse", "Adresse")*</strong></label>
4327 <input class="form-control js-validate-address" type="text" name="adresse" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse")' value="@userAddress" required />
4328 <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>
4329 </div>
4330
4331 <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">
4332 <strong class="f-12"><i class="fas fa-plus"></i> @Translate("Smartpage:Salgsvurdering.Skrivenkommentar", "Skriv en kommentar")</strong>
4333 </button>
4334 <div class="collapse" id="salgsvurdering-collapse">
4335 <div class="form-group">
4336 <textarea class="form-control" name="besked" placeholder='@Translate("form-besked-max", "Skriv en besked på max 150 tegn")' maxlength="150"></textarea>
4337 </div>
4338 </div>
4339
4340
4341 <div class="salgsvurdering-precheck">
4342 <h3>@Translate("Smartpage:Salgsvurdering.SendSalgsvurderingTil", "Send salgsvurdering til:")</h3>
4343 <div class="col-12">
4344 <div class="choose-broker row align-items-center active">
4345 <div class="col-2">
4346 <input class="js-broker-radio" type="radio" id="" name="choose-broker" value="" checked>
4347 <label class="js-broker-label" for=""></label><div class="check">
4348 <div class="inside">
4349 </div>
4350 </div>
4351 </div>
4352 <div class="col-4">
4353 <img src="" class="img-fluid js-broker-image">
4354 </div>
4355 <div class="col-6">
4356 <span class="d-block">
4357 <strong class="js-choose-broker-name"></strong>
4358 </span>
4359 <span class="js-choose-broker-address"></span>
4360 <input type="hidden" class="js-choose-broker-phone" value="" />
4361 <input type="hidden" class="js-choose-broker-email" value="" />
4362 </div>
4363 </div>
4364 </div>
4365 </div>
4366 <div class="salgsvurdering-broker">
4367 <h3 class="js-brokerh3">@Translate("Smartpage:Salgsvurdering.VælgMægler", "Vælg mægler")</h3>
4368 <div class="js-choose-broker col-12">
4369 </div>
4370
4371 </div>
4372
4373 <div class="form-group mt-4">
4374 <div class="checkbox">
4375 <label>
4376 <input type="checkbox" name="kontaktmigok" required />
4377
4378 <span class="consent-checkbox">@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span>
4379
4380 </label>
4381 </div>
4382 </div>
4383 <div class="form-group">
4384 <div class="row">
4385 <div class="col-12">
4386 <button type="submit" class="btn btn-green btn-block js-buyer-advisor-button">@Translate("form-salgsvurdering-submitbtn", "Bestil gratis salgsvurdering")</button>
4387 </div>
4388 </div>
4389 </div>
4390 <div class="form-group form-group-terms">
4391 @privacyPolicyText <a href="mailto:@termsMail">@termsMail</a>.
4392 Læs mere på <a href="@settings_Persondatapolitik">privatlivspolitikkerne</a>.
4393 </div>
4394 <input type="hidden" name="fn" value="bsv" />
4395 <input type="hidden" name="origin" class="js-salgsvurdering-origin" value="" />
4396 <input type="hidden" name="brugerId" value="@userID" />
4397 <input type="hidden" name="areaid" value="@Pageview.AreaID" />
4398 <input type="hidden" id="boligvisning" name="boligvisning" value="" />
4399 <input type="hidden" id="panel-salgsvurdering-butikid" name="butikId" value="" />
4400 <input type="hidden" id="panel-salgsvurdering-sagsnr" name="sagsnr" value="" />
4401 <input type="hidden" name="productId" value="@Dynamicweb.Context.Current.Request["ProductId"]" />
4402 <input type="hidden" name="ejendomstype" value="" />
4403 <input type="hidden" name="salgspris" value="" />
4404 <input type="hidden" name="employee" value="" />
4405 <input type="hidden" name="modtager" value="" />
4406 <input class="js-value-check" type="hidden" name="valueCheck" value="" />
4407 <input class="js-green-appraisal" type="hidden" name="greenAppraisal" value="" />
4408 </form>
4409 <div id="tak-salgsvurdering" style="display:none;">
4410 <h2>@Translate("TakForDinInteresse", "Tak for din interesse")</h2>
4411 <p>@Translate("Smartpage:FormSalgsvurdering.Subheader", "Vi har sendt din bestilling af gratis salgsvurdering til:")</p>
4412 <div class="row">
4413 <div class="col-6">
4414 <img src="" class="img-fluid js-maegler-img" />
4415 </div>
4416 <div class="col-6">
4417 <p class="js-maegler-name"></p>
4418 <p class="js-maegler-address"></p>
4419 <p class="js-maegler-phone"></p>
4420 <p class="js-maegler-mail"></p>
4421 </div>
4422 </div>
4423 <p>@Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt")</p>
4424 </div>
4425 </div>
4426
4427 <!-- BESTIL SALGSVURDERING GULDKØBER -->
4428 <div id="panel-salgsvurdering-guldkoeber" class="panel panel-form">
4429 <button type="button" class="close" data-dismiss="panel-form" aria-label="Close">
4430 <b></b>
4431 </button>
4432
4433 <form id="bestil-salgsvurdering-guldkoeber" method="POST" action="/InboxHandler">
4434 <h2>@Translate("form-salgsvurdering-titel", "Bestil gratis salgsvurdering")</h2>
4435 <p>@Translate("form-salgsvurdering-beskrivelse", "")</p>
4436 <div class="form-group">
4437 <label><strong>@Translate("form-navn", "Navn")*</strong></label>
4438 <input class="form-control" type="text" name="navn" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Navn", "Indtast dit navn")' value='@UserContext.Current.User?.Name' required />
4439 </div>
4440 <div class="form-group">
4441 <label><strong>@Translate("form-email", "E-mail")*</strong></label>
4442 <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='@UserContext.Current.User?.Email' required />
4443 </div>
4444 <div class="form-group row mb-4">
4445 <div class="col-6">
4446 <label><strong>@Translate("form-telephone", "Telefon nr.")</strong></label>
4447 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="telefonnummer" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Telefon", "Indtast tlf nr.")' value='@UserContext.Current.User?.Phone' />
4448 </div>
4449 <div class="col-6">
4450 <label><strong>@Translate("form-mobile", "Mobil nr.")*</strong></label>
4451 <input class="form-control" type="tel" pattern="^[0-9]*$" maxlength="20" name="mobile" placeholder='@Translate("Smartpage:Salgsvurdering.Placeholder.Mobile", "Indtast mobil nr.")' value='@UserContext.Current.User?.Phone' required />
4452 </div>
4453 </div>
4454
4455 <h3>@Translate("Smartpage:Salgsvurdering.DinBolig", "Din bolig")</h3>
4456
4457 <div class="form-group row">
4458 <div class="col-4">
4459 <label><strong>@Translate("form-zip", "Post nr")*</strong></label>
4460 <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 />
4461 <input type="hidden" class="js-postnummer-validation" />
4462 </div>
4463 <div class="col-8">
4464 <label><strong>@Translate("form-city", "By")*</strong></label>
4465 <input class="form-control js-city" type="text" readonly />
4466 </div>
4467 </div>
4468 <div class="form-group overflow-unset">
4469 <label><strong>@Translate("form-adresse", "Adresse")*</strong></label>
4470 <input class="form-control js-validate-address" type="text" name="adresse" placeholder='@Translate("Smartpage:Aabenthus.Placeholder.Zip", "Udfyld din egen adresse")' value="@userAddress" required />
4471 <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>
4472 </div>
4473
4474 <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">
4475 <strong class="f-12"><i class="fas fa-plus"></i> @Translate("Smartpage:Salgsvurdering.Skrivenkommentar", "Skriv en kommentar")</strong>
4476 </button>
4477 <div class="collapse" id="salgsvurdering-collapse">
4478 <div class="form-group">
4479 <textarea class="form-control" name="besked" placeholder='@Translate("form-besked-max", "Skriv en besked på max 150 tegn")' maxlength="150"></textarea>
4480 </div>
4481 </div>
4482
4483 <div class="salgsvurdering-precheck">
4484 <h3>@Translate("Smartpage:Salgsvurdering.SendSalgsvurderingTil", "Send salgsvurdering til:")</h3>
4485 <div class="col-12">
4486 <div class="choose-broker row align-items-center active">
4487 <div class="col-2">
4488 <input class="js-broker-radio" type="radio" id="" name="choose-broker-gk" value="" checked>
4489 <label class="js-broker-label" for=""></label><div class="check">
4490 <div class="inside">
4491 </div>
4492 </div>
4493 </div>
4494 <div class="col-4">
4495 <img src="" class="img-fluid js-broker-image">
4496 </div>
4497 <div class="col-6">
4498 <span class="d-block">
4499 <strong class="js-choose-broker-name"></strong>
4500 </span>
4501 <span class="js-choose-broker-address"></span>
4502 <input type="hidden" class="js-choose-broker-phone" value="" />
4503 <input type="hidden" class="js-choose-broker-email" value="" />
4504 </div>
4505 </div>
4506 </div>
4507 </div>
4508 <div class="salgsvurdering-broker">
4509 <h3 class="js-brokerh3">@Translate("Smartpage:Salgsvurdering.VælgMægler", "Vælg mægler")</h3>
4510 <div class="js-choose-broker col-12">
4511 </div>
4512
4513 </div>
4514
4515
4516 <div class="form-group">
4517 <div class="row">
4518 <div class="col-12">
4519 <button type="submit" class="btn btn-green btn-block">@Translate("form-salgsvurdering-submitbtn", "Bestil gratis salgsvurdering")</button>
4520 </div>
4521 </div>
4522 </div>
4523 <div class="form-group">
4524 <div class="checkbox">
4525 <label>
4526 <input type="checkbox" name="kontaktmigok" required />
4527
4528 <span>@Translate("form-contactpermission-real", "Ja tak, RealMæglerne må gerne kontakte mig. *")</span>
4529
4530 </label>
4531 </div>
4532 </div>
4533 <div class="form-group form-group-terms">
4534 @privacyPolicyText <a href="mailto:@termsMail">@termsMail</a>.
4535 Læs mere på <a href="@settings_Persondatapolitik">privatlivspolitikkerne</a>.
4536 </div>
4537 <input type="hidden" name="fn" value="bsg" />
4538 <input type="hidden" name="origin" class="js-salgsvurdering-origin" value="" />
4539 <input type="hidden" name="brugerId" value="@userID" />
4540 <input type="hidden" name="areaid" value="@Pageview.AreaID" />
4541 <input type="hidden" id="boligvisning-gk" name="boligvisning" value="" />
4542 <input type="hidden" id="panel-salgsvurdering-gk-butikid" name="butikId" value="" />
4543 <input type="hidden" id="panel-salgsvurdering-gk-sagsnr" name="sagsnr" value="" />
4544 <input type="hidden" name="productId" value="@Dynamicweb.Context.Current.Request["ProductId"]" />
4545 <input type="hidden" name="ejendomstype" value="" />
4546 <input type="hidden" name="salgspris" value="" />
4547 <input type="hidden" name="employee" value="" />
4548 <input type="hidden" name="modtager" value="" />
4549 </form>
4550 <div id="tak-salgsvurdering" style="display:none;">
4551 <h2>@Translate("TakForDinInteresse", "Tak for din interesse")</h2>
4552 <p>@Translate("Smartpage:FormSalgsvurdering.Subheader", "Vi har sendt din bestilling af gratis salgsvurdering til:")</p>
4553 <div class="row">
4554 <div class="col-6">
4555 <img src="" class="img-fluid js-maegler-img" />
4556 </div>
4557 <div class="col-6">
4558 <p class="js-maegler-name"></p>
4559 <p class="js-maegler-address"></p>
4560 <p class="js-maegler-phone"></p>
4561 <p class="js-maegler-mail"></p>
4562 </div>
4563 </div>
4564 <p>@Translate("Smartpage:FormKontaktGuld.Bottom", "Mægleren vil kontakte dig hurtigst muligt")</p>
4565 </div>
4566 </div>
4567
4568
4569 <div class="overlay-wrapper"></div>
4570 <div class="dropdown-overlay"></div>
4571 <div class="loader-inner ball-pulse"></div>
4572
4573 @{
4574 var viamapstrapFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/webpack/js/3rdparty/viamapstrap.js"));
4575 <script type="text/javascript" src='@(TemplateUrl)assets/webpack/js/3rdparty/viamapstrap.js?@(viamapstrapFileInfo.LastWriteTime.Ticks)' async></script>
4576
4577 var bundleFileInfo = new System.IO.FileInfo(Dynamicweb.Core.SystemInformation.MapPath(TemplateUrl + "assets/dist/bundle.app.min.js"));
4578 <script type="text/javascript" src='@(TemplateUrl)assets/dist/bundle.app.min.js?@(bundleFileInfo.LastWriteTime.Ticks)' async></script>
4579 }
4580
4581 @RenderSnippet("JavaScriptBottom")
4582
4583 @if (Context.Current.Request.QueryString["ShowLogin"] == "true")
4584 {
4585 <input class="js-showLogin" value="true" />
4586 }
4587
4588 @if (!string.IsNullOrEmpty(settings_ConduzeId))
4589 {
4590 <script type="text/javascript" id="conduze-sdk" src="https://cdn.conduze.com/@settings_ConduzeId/tracking.js" async></script>
4591 }
4592
4593 @if (!string.IsNullOrEmpty(settings_Weply))
4594 {
4595 <script src="https://app.weply.chat/widget/@settings_Weply" async></script>
4596 }
4597
4598 </body>
4599 </html>
4600
4601