Error compiling template "Designs/Swift/Swift_Preferences.cshtml"
Line 66: 'Country' does not contain a definition for 'Name' and no accessible extension method 'Name' accepting a first argument of type 'Country' could be found (are you missing a using directive or 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.Collections.Generic;
8 using System.Linq;
9 using System;
10 using System.Text.RegularExpressions;
11 using System.IO;
12 internal class RazorEngine_fa1aef501aca4be5a98110cc08117951 : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
13 {
14 #pragma warning disable 1998
15 public async override global::System.Threading.Tasks.Task ExecuteAsync()
16 {
17 WriteLiteral("\r\n\r\n\r\n");
18
19 string layout = Model.Item.GetRawValueString("PreferencesLayout", "modal");
20 layout = Dynamicweb.Context.Current.Request["Layout"] != null ? Dynamicweb.Context.Current.Request["Layout"] : layout;
21 layout = layout == "" ? "modal" : layout;
22 string type = Dynamicweb.Context.Current.Request["Type"] != null ? Dynamicweb.Context.Current.Request["Type"] : "language";
23
24 string groupId = Dynamicweb.Context.Current.Request["GroupID"] != null ? Dynamicweb.Context.Current.Request["GroupID"].ToString() : "";
25 string productId = Dynamicweb.Context.Current.Request["ProductID"] != null ? Dynamicweb.Context.Current.Request["ProductID"].ToString() : "";
26 string variantId = Dynamicweb.Context.Current.Request["VariantID"] != null ? Dynamicweb.Context.Current.Request["VariantID"].ToString() : "";
27
28 string linkFontSize = Dynamicweb.Context.Current.Request["FontSize"] != null ? Dynamicweb.Context.Current.Request["FontSize"].ToString() : "";
29 string linkFontWeight = Dynamicweb.Context.Current.Request["FontWeight"] != null ? Dynamicweb.Context.Current.Request["FontWeight"].ToString() : "";
30 string linkCasing = Dynamicweb.Context.Current.Request["Casing"] != null ? Dynamicweb.Context.Current.Request["Casing"].ToString() : "";
31
32 Regex reg = new Regex(@"\(([^\)]+)\)");
33 List<Dynamicweb.Content.Page> languages = new List<Dynamicweb.Content.Page>();
34
35 int pageId = Dynamicweb.Context.Current.Request["CurrentPageID"] != null ? Convert.ToInt32(Dynamicweb.Context.Current.Request["CurrentPageID"]) : Pageview.ID;
36 var currentPage = Dynamicweb.Content.Services.Pages.GetPage(pageId); //Get the correct page instance
37
38 if (currentPage.Area.IsMaster) {
39 languages.Add(currentPage);
40 if (currentPage.Languages != null) {
41 foreach (var language in currentPage.Languages) {
42 if (language.Area.Active == true) {
43 languages.Add(language);
44 }
45 }
46 }
47 } else {
48 languages.Add(currentPage.MasterPage);
49 if (currentPage.MasterPage != null) {
50 if (currentPage.MasterPage.Languages != null) {
51 foreach (var language in currentPage.MasterPage.Languages) {
52 if (language.Area.Active == true) {
53 languages.Add(language);
54 }
55 }
56 }
57 }
58 }
59
60 languages = languages.Count > 1 ? languages.OrderBy(language => language.Area.CultureInfo.DisplayName).ToList() : languages;
61
62 string siteLanguage = Pageview.Area.CultureInfo.Name;
63 Uri url = Dynamicweb.Context.Current.Request.Url;
64 string hostName = url.Host; // domain.com/da-dk or domain.com/en-us
65
66 var ecomCountries = Dynamicweb.Ecommerce.Services.Countries.GetCountries() != null ? Dynamicweb.Ecommerce.Services.Countries.GetCountries().OrderBy(country => country.Name) : null;
67 var currencies = Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies() != null ? Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies().OrderBy(currency => currency.Code) : null;
68
69 string modalTheme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("ModalTheme")) ? " theme " + Model.Item.GetRawValueString("ModalTheme").Replace(" ", "").Trim().ToLower() : "";
70 WriteLiteral("\r\n");
71 WriteLiteral("\r\n");
72 if (layout == "modal")
73 {
74 int updatePageId = pageId;
75
76 WriteLiteral("\t<div");
77 BeginWriteAttribute("class", " class=\"", 3325, "\"", 3396, 4);
78 WriteAttributeValue("", 3333, "modal-content", 3333, 13, true);
79 WriteAttributeValue(" ", 3346, modalTheme, 3347, 11, false);
80 WriteAttributeValue(" ", 3358, "item_", 3359, 6, true);
81 WriteAttributeValue("", 3364, Model.Item.SystemName.ToLower(), 3364, 32, false);
82 EndWriteAttribute();
83 WriteLiteral(">\r\n\t\t<div class=\"modal-header\">\r\n\t\t\t<h5 class=\"modal-title\" id=\"PreferencesModalLabel\">");
84 Write(Translate("Preferences"));
85 WriteLiteral("</h5>\r\n\t\t\t<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n\t\t</div>\r\n\t\t<div class=\"modal-body d-grid gap-3\" id=\"PreferencesModalBody\">\r\n\t\t\t<input type=\"hidden\" name=\"CurrentPageID\"");
86 BeginWriteAttribute("value", " value=\"", 3734, "\"", 3749, 1);
87 WriteAttributeValue("", 3742, pageId, 3742, 7, false);
88 EndWriteAttribute();
89 WriteLiteral(">\r\n");
90 if (groupId != "") {
91 WriteLiteral("\t\t\t\t<input type=\"hidden\" name=\"GroupID\"");
92 BeginWriteAttribute("value", " value=\"", 3818, "\"", 3834, 1);
93 WriteAttributeValue("", 3826, groupId, 3826, 8, false);
94 EndWriteAttribute();
95 WriteLiteral(">\r\n");
96 }
97 WriteLiteral("\r\n");
98 if (productId != "") {
99 WriteLiteral("\t\t\t\t<input type=\"hidden\" name=\"ProductID\"");
100 BeginWriteAttribute("value", " value=\"", 3915, "\"", 3933, 1);
101 WriteAttributeValue("", 3923, productId, 3923, 10, false);
102 EndWriteAttribute();
103 WriteLiteral(">\r\n");
104 }
105 WriteLiteral("\r\n");
106 if (variantId != "") {
107 WriteLiteral("\t\t\t\t<input type=\"hidden\" name=\"VariantID\"");
108 BeginWriteAttribute("value", " value=\"", 4014, "\"", 4032, 1);
109 WriteAttributeValue("", 4022, variantId, 4022, 10, false);
110 EndWriteAttribute();
111 WriteLiteral(">\r\n");
112 }
113 WriteLiteral("\r\n\t\t\r\n");
114 if (languages.Count() > 1 && Model.Item.GetBoolean("LanguageSelector"))
115 {
116 WriteLiteral(@" <form action=""/Default.aspx"" data-response-target-element=""PreferencesModalContent"" data-layout-template=""Swift_Preferences.cshtml"" data-preloader=""inline"">
117 <input type=""hidden"" name=""Layout"" value=""modal"">
118 <input type=""hidden"" name=""CurrentPageID""");
119 BeginWriteAttribute("value", " value=\"", 4395, "\"", 4410, 1);
120 WriteAttributeValue("", 4403, pageId, 4403, 7, false);
121 EndWriteAttribute();
122 WriteLiteral(">\r\n\t\t\t\t\t<input type=\"hidden\" name=\"GroupID\"");
123 BeginWriteAttribute("value", " value=\"", 4454, "\"", 4470, 1);
124 WriteAttributeValue("", 4462, groupId, 4462, 8, false);
125 EndWriteAttribute();
126 WriteLiteral(">\r\n\t\t\t\t\t<input type=\"hidden\" name=\"ProductID\"");
127 BeginWriteAttribute("value", " value=\"", 4516, "\"", 4534, 1);
128 WriteAttributeValue("", 4524, productId, 4524, 10, false);
129 EndWriteAttribute();
130 WriteLiteral(">\r\n\t\t\t\t\t<input type=\"hidden\" name=\"VariantID\"");
131 BeginWriteAttribute("value", " value=\"", 4580, "\"", 4598, 1);
132 WriteAttributeValue("", 4588, variantId, 4588, 10, false);
133 EndWriteAttribute();
134 WriteLiteral(">\r\n\r\n\t\t\t\t\t<div class=\"form-floating\">\r\n\t\t\t\t\t\t<select id=\"LanguageSelect\" name=\"ID\" class=\"form-select d-col-12\"");
135 BeginWriteAttribute("aria-label", " aria-label=\"", 4710, "\"", 4752, 1);
136 WriteAttributeValue("", 4723, Translate("Select language"), 4723, 29, false);
137 EndWriteAttribute();
138 WriteLiteral(" onchange=\"swift.PageUpdater.Update(event)\">\r\n");
139 foreach (var language in languages)
140 {
141 if (language != null && language.Published && language.Area.Active && language.Area.Published) {
142 string selectedLanguage = language.Area.ID == Pageview.Area.ID ? "selected" : "";
143 updatePageId = language.Area.ID == Pageview.Area.ID ? language.ID : updatePageId;
144
145 var masterPageId = Pageview.Page?.MasterPageId != null && Pageview.Page.MasterPageId != 0 ? Pageview.Page.MasterPageId : Pageview.ID;
146 var preferencePageId = Dynamicweb.Content.Services.Pages.GetPageIDByMasterID(masterPageId, language.AreaId);
147 preferencePageId = preferencePageId == 0 ? Pageview.Page.MasterPageId : preferencePageId;
148 preferencePageId = preferencePageId == 0 ? Pageview.Page.ID : preferencePageId;
149
150 WriteLiteral("\t\t\t\t\t\t\t\t\t<option");
151 BeginWriteAttribute("hreflang", " hreflang=\"", 5617, "\"", 5679, 1);
152 WriteAttributeValue("", 5628, language.Area.CultureInfo.TwoLetterISOLanguageName, 5628, 51, false);
153 EndWriteAttribute();
154 BeginWriteAttribute("value", " value=\"", 5680, "\"", 5705, 1);
155 WriteAttributeValue("", 5688, preferencePageId, 5688, 17, false);
156 EndWriteAttribute();
157 WriteLiteral(" ");
158 Write(selectedLanguage);
159 WriteLiteral(">");
160 Write(language.Area.DisplayName);
161 WriteLiteral("</option>\r\n");
162 }
163 }
164 WriteLiteral("\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t<label for=\"LanguageSelect\">");
165 Write(Translate("Language"));
166 WriteLiteral("</label>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</form>\r\n");
167 }
168 WriteLiteral("\r\n");
169 if (ecomCountries.Count() > 1 && Model.Item.GetBoolean("CountrySelector"))
170 {
171 WriteLiteral("\t\t\t\t<form action=\"/Default.aspx\" data-response-target-element=\"PreferencesModalContent\" data-layout-template=\"Swift_Preferences.cshtml\" data-preloader=\"inline\">\r\n\t\t\t\t\t<input type=\"hidden\" name=\"ID\"");
172 BeginWriteAttribute("value", " value=\"", 6183, "\"", 6203, 1);
173 WriteAttributeValue("", 6191, Pageview.ID, 6191, 12, false);
174 EndWriteAttribute();
175 WriteLiteral(">\r\n\t\t\t\t\t<input type=\"hidden\" name=\"CurrentPageID\"");
176 BeginWriteAttribute("value", " value=\"", 6253, "\"", 6268, 1);
177 WriteAttributeValue("", 6261, pageId, 6261, 7, false);
178 EndWriteAttribute();
179 WriteLiteral(">\r\n\t\t\t\t\t<input type=\"hidden\" name=\"GroupID\"");
180 BeginWriteAttribute("value", " value=\"", 6312, "\"", 6328, 1);
181 WriteAttributeValue("", 6320, groupId, 6320, 8, false);
182 EndWriteAttribute();
183 WriteLiteral(">\r\n\t\t\t\t\t<input type=\"hidden\" name=\"ProductID\"");
184 BeginWriteAttribute("value", " value=\"", 6374, "\"", 6392, 1);
185 WriteAttributeValue("", 6382, productId, 6382, 10, false);
186 EndWriteAttribute();
187 WriteLiteral(">\r\n\t\t\t\t\t<input type=\"hidden\" name=\"VariantID\"");
188 BeginWriteAttribute("value", " value=\"", 6438, "\"", 6456, 1);
189 WriteAttributeValue("", 6446, variantId, 6446, 10, false);
190 EndWriteAttribute();
191 WriteLiteral(">\r\n\r\n\t\t\t\t\t<div class=\"form-floating\">\r\n\t\t\t\t\t\t<select name=\"CountryCode\" id=\"CountryCodeSelect\" class=\"form-select d-col-12\"");
192 BeginWriteAttribute("aria-label", " aria-label=\"", 6580, "\"", 6621, 1);
193 WriteAttributeValue("", 6593, Translate("Select country"), 6593, 28, false);
194 EndWriteAttribute();
195 WriteLiteral(" onchange=\"swift.PageUpdater.Update(event)\">\r\n");
196 foreach (var country in ecomCountries)
197 {
198 var selectedCountry = country.Code2 == Dynamicweb.Ecommerce.Common.Context.Country.Code2 ? "selected" : "";
199
200 if (!string.IsNullOrEmpty(country.Name)) {
201 WriteLiteral("\t\t\t\t\t\t\t\t\t<option");
202 BeginWriteAttribute("value", " value=\"", 6914, "\"", 6936, 1);
203 WriteAttributeValue("", 6922, country.Code2, 6922, 14, false);
204 EndWriteAttribute();
205 WriteLiteral(" ");
206 Write(selectedCountry);
207 WriteLiteral(">");
208 Write(country.Name);
209 WriteLiteral("</option>\r\n");
210 }
211 }
212 WriteLiteral("\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t<label for=\"CountryCodeSelect\">");
213 Write(Translate("Delivery country"));
214 WriteLiteral("</label>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</form>\r\n");
215 }
216 WriteLiteral("\r\n");
217 if (currencies.Count() > 1 && Model.Item.GetBoolean("CurrencySelector"))
218 {
219 WriteLiteral("\t\t\t\t<form action=\"/Default.aspx\" data-response-target-element=\"PreferencesModalContent\" data-layout-template=\"Swift_Preferences.cshtml\" data-preloader=\"inline\">\r\n\t\t\t\t\t<input type=\"hidden\" name=\"ID\"");
220 BeginWriteAttribute("value", " value=\"", 7409, "\"", 7429, 1);
221 WriteAttributeValue("", 7417, Pageview.ID, 7417, 12, false);
222 EndWriteAttribute();
223 WriteLiteral(">\r\n\t\t\t\t\t<input type=\"hidden\" name=\"CurrentPageID\"");
224 BeginWriteAttribute("value", " value=\"", 7479, "\"", 7494, 1);
225 WriteAttributeValue("", 7487, pageId, 7487, 7, false);
226 EndWriteAttribute();
227 WriteLiteral(">\r\n\t\t\t\t\t<input type=\"hidden\" name=\"GroupID\"");
228 BeginWriteAttribute("value", " value=\"", 7538, "\"", 7554, 1);
229 WriteAttributeValue("", 7546, groupId, 7546, 8, false);
230 EndWriteAttribute();
231 WriteLiteral(">\r\n\t\t\t\t\t<input type=\"hidden\" name=\"ProductID\"");
232 BeginWriteAttribute("value", " value=\"", 7600, "\"", 7618, 1);
233 WriteAttributeValue("", 7608, productId, 7608, 10, false);
234 EndWriteAttribute();
235 WriteLiteral(">\r\n\t\t\t\t\t<input type=\"hidden\" name=\"VariantID\"");
236 BeginWriteAttribute("value", " value=\"", 7664, "\"", 7682, 1);
237 WriteAttributeValue("", 7672, variantId, 7672, 10, false);
238 EndWriteAttribute();
239 WriteLiteral(">\r\n\r\n\t\t\t\t\t<div class=\"form-floating\">\r\n\t\t\t\t\t\t<select name=\"CurrencyCode\" id=\"CurrencySelect\" class=\"form-select d-col-12\"");
240 BeginWriteAttribute("aria-label", " aria-label=\"", 7804, "\"", 7846, 1);
241 WriteAttributeValue("", 7817, Translate("Select currency"), 7817, 29, false);
242 EndWriteAttribute();
243 WriteLiteral(" onchange=\"swift.PageUpdater.Update(event)\">\r\n");
244 foreach (var currency in currencies)
245 {
246 string selectedCurrency = currency.Code == Dynamicweb.Ecommerce.Common.Context.Currency.Code ? "selected" : "";
247
248 if (!string.IsNullOrEmpty(currency.Code)) {
249 WriteLiteral("\t\t\t\t\t\t\t\t\t<option");
250 BeginWriteAttribute("value", " value=\"", 8142, "\"", 8164, 1);
251 WriteAttributeValue("", 8150, currency.Code, 8150, 14, false);
252 EndWriteAttribute();
253 WriteLiteral(" ");
254 Write(selectedCurrency);
255 WriteLiteral(">");
256 Write(currency.Code);
257 WriteLiteral("</option>\r\n");
258 }
259 }
260 WriteLiteral("\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t<label for=\"CurrencySelect\">");
261 Write(Translate("Currency"));
262 WriteLiteral("</label>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</form>\r\n");
263 }
264 WriteLiteral("\t\t</div>\r\n\t\t<div class=\"modal-footer\">\r\n");
265
266 hostName = !string.IsNullOrEmpty(Pageview.Area.DomainLock) ? Pageview.Area.DomainLock : url.Host;
267 string link = $"Default.aspx?ID={updatePageId}";
268 link += groupId != "" ? $"&GroupID={groupId}" : "";
269 link += productId != "" ? $"&ProductID={productId}" : "";
270 link += variantId != "" ? $"&VariantID={variantId}" : "";
271 var friendlyUrl = $"{url.Scheme}://{hostName}{Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(link)}";
272 WriteLiteral("\r\n\t\t\t<a");
273 BeginWriteAttribute("href", " href=\"", 8866, "\"", 8885, 1);
274 WriteAttributeValue("", 8873, friendlyUrl, 8873, 12, false);
275 EndWriteAttribute();
276 WriteLiteral(" class=\"btn btn-primary w-100\">");
277 Write(Translate("Update preferences"));
278 WriteLiteral("</a>\r\n\t\t</div>\r\n\t</div>\r\n");
279 }
280
281 WriteLiteral("\r\n");
282 if (layout == "dropdown" && type == "country") {
283 foreach (var country in ecomCountries)
284 {
285 var link = $"{url.Scheme}://{hostName}?ID={currentPage.ID}&AreaID={Pageview.Area.ID}&CountryCode={country.Code2}";
286 link += groupId != "" ? $"&GroupID={groupId}" : "";
287 link += productId != "" ? $"&ProductID={productId}" : "";
288 link += variantId != "" ? $"&VariantID={variantId}" : "";
289
290 if (!string.IsNullOrEmpty(country.Name)) {
291 WriteLiteral("\t\t\t<li>\r\n\t\t\t\t<a");
292 BeginWriteAttribute("href", " href=\"", 9452, "\"", 9464, 1);
293 WriteAttributeValue("", 9459, link, 9459, 5, false);
294 EndWriteAttribute();
295 BeginWriteAttribute("class", " class=\"", 9465, "\"", 9547, 5);
296 WriteAttributeValue("", 9473, "dropdown-item", 9473, 13, true);
297 WriteAttributeValue(" ", 9486, "nav-link-underline", 9487, 19, true);
298 WriteAttributeValue(" ", 9505, linkFontSize, 9506, 13, false);
299 WriteAttributeValue(" ", 9519, linkFontWeight, 9520, 15, false);
300 WriteAttributeValue(" ", 9535, linkCasing, 9536, 11, false);
301 EndWriteAttribute();
302 WriteLiteral(">");
303 Write(country.Name);
304 WriteLiteral("</a>\r\n\t\t\t</li>\r\n");
305 }
306 }
307 }
308 WriteLiteral("\r\n");
309 if (layout == "dropdown" && type == "language") {
310 string iconFolder = "/Files/FlagIcons/";
311 int languagesCount = 0;
312
313 foreach (var language in languages)
314 {
315 if (language.Area != null) {
316 if (language != null && language.Published && language.Area.Active && language.Area.Published && language.Area.ID != Dynamicweb.Frontend.PageView.Current().AreaID) {
317 hostName = !string.IsNullOrEmpty(language.Area.DomainLock) ? language.Area.DomainLock : url.Host;
318 string link = $"Default.aspx?ID={language.ID}";
319 link += groupId != "" ? $"&GroupID={groupId}" : "";
320 link += productId != "" ? $"&ProductID={productId}" : "";
321 link += variantId != "" ? $"&VariantID={variantId}" : "";
322
323 var friendlyUrl = $"{url.Scheme}://{hostName}{Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(link)}";
324
325 string icon = iconFolder + language.Area.CultureInfo.Name.ToLower() + ".svg";
326 WriteLiteral("\t\t\t\t<li>\r\n\t\t\t\t\t<a");
327 BeginWriteAttribute("hreflang", " hreflang=\"", 10522, "\"", 10584, 1);
328 WriteAttributeValue("", 10533, language.Area.CultureInfo.TwoLetterISOLanguageName, 10533, 51, false);
329 EndWriteAttribute();
330 BeginWriteAttribute("href", " href=\"", 10585, "\"", 10604, 1);
331 WriteAttributeValue("", 10592, friendlyUrl, 10592, 12, false);
332 EndWriteAttribute();
333 BeginWriteAttribute("class", " class=\"", 10605, "\"", 10687, 5);
334 WriteAttributeValue("", 10613, "dropdown-item", 10613, 13, true);
335 WriteAttributeValue(" ", 10626, "nav-link-underline", 10627, 19, true);
336 WriteAttributeValue(" ", 10645, linkFontSize, 10646, 13, false);
337 WriteAttributeValue(" ", 10659, linkFontWeight, 10660, 15, false);
338 WriteAttributeValue(" ", 10675, linkCasing, 10676, 11, false);
339 EndWriteAttribute();
340 WriteLiteral("><text>");
341 RenderIcon(icon, "icon-2");WriteLiteral("</text> <span class=\"align-middle\">");
342 Write(language.Area.DisplayName);
343 WriteLiteral("</span></a>\r\n\t\t\t\t</li>\r\n");
344
345 languagesCount++;
346 }
347 }
348 }
349
350 if (languagesCount == 0) {
351 WriteLiteral("\t\t<li>\r\n\t\t\t<span class=\"dropdown-item fs-7 fw-normal\">\r\n\t\t\t\t");
352 Write(Translate("Page is not translated"));
353 WriteLiteral("\r\n\t\t\t</span>\r\n\t\t</li>\r\n");
354 }
355 }
356 WriteLiteral("\r\n");
357 if (layout == "dropdown" && type == "currency") {
358 foreach (var currency in currencies)
359 {
360 var link = $"{url.Scheme}://{hostName}?ID={currentPage.ID}&AreaID={Pageview.Area.ID}&CurrencyCode={currency.Code}";
361 link += groupId != "" ? $"&GroupID={groupId}" : "";
362 link += productId != "" ? $"&ProductID={productId}" : "";
363 link += variantId != "" ? $"&VariantID={variantId}" : "";
364
365 WriteLiteral("\t\t<li>\r\n\t\t\t<a");
366 BeginWriteAttribute("href", " href=\"", 11416, "\"", 11428, 1);
367 WriteAttributeValue("", 11423, link, 11423, 5, false);
368 EndWriteAttribute();
369 BeginWriteAttribute("class", " class=\"", 11429, "\"", 11511, 5);
370 WriteAttributeValue("", 11437, "dropdown-item", 11437, 13, true);
371 WriteAttributeValue(" ", 11450, "nav-link-underline", 11451, 19, true);
372 WriteAttributeValue(" ", 11469, linkFontSize, 11470, 13, false);
373 WriteAttributeValue(" ", 11483, linkFontWeight, 11484, 15, false);
374 WriteAttributeValue(" ", 11499, linkCasing, 11500, 11, false);
375 EndWriteAttribute();
376 WriteLiteral(">");
377 Write(currency.Code);
378 WriteLiteral("</a>\r\n\t\t</li>\r\n");
379 }
380 }
381 WriteLiteral("\r\n");
382 WriteLiteral("\r\n");
383 }
384 #pragma warning restore 1998
385
386 void RenderIcon(string icon, string iconSize)
387 {
388 if (Path.GetExtension(icon).ToLower() == ".svg" && !icon.ToLower().Contains("none"))
389 {
390 string iconPath = Dynamicweb.Context.Current.Server.MapPath(icon);
391
392 WriteLiteral("\t\t<span");
393 BeginWriteAttribute("class", " class=\"", 11787, "\"", 11804, 1);
394 WriteAttributeValue("", 11795, iconSize, 11795, 9, false);
395 EndWriteAttribute();
396 WriteLiteral(">\r\n\t\t\t");
397 Write(ReadFile(iconPath));
398 WriteLiteral("\r\n\t\t</span>\r\n");
399 }
400 }
401 }
402 }
403 #pragma warning restore 1591
404
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
2 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.PageViewModel>
3 @using System
4 @using System.Text.RegularExpressions
5 @using System.IO
6
7
8
9 @{
10 string layout = Model.Item.GetRawValueString("PreferencesLayout", "modal");
11 layout = Dynamicweb.Context.Current.Request["Layout"] != null ? Dynamicweb.Context.Current.Request["Layout"] : layout;
12 layout = layout == "" ? "modal" : layout;
13 string type = Dynamicweb.Context.Current.Request["Type"] != null ? Dynamicweb.Context.Current.Request["Type"] : "language";
14
15 string groupId = Dynamicweb.Context.Current.Request["GroupID"] != null ? Dynamicweb.Context.Current.Request["GroupID"].ToString() : "";
16 string productId = Dynamicweb.Context.Current.Request["ProductID"] != null ? Dynamicweb.Context.Current.Request["ProductID"].ToString() : "";
17 string variantId = Dynamicweb.Context.Current.Request["VariantID"] != null ? Dynamicweb.Context.Current.Request["VariantID"].ToString() : "";
18
19 string linkFontSize = Dynamicweb.Context.Current.Request["FontSize"] != null ? Dynamicweb.Context.Current.Request["FontSize"].ToString() : "";
20 string linkFontWeight = Dynamicweb.Context.Current.Request["FontWeight"] != null ? Dynamicweb.Context.Current.Request["FontWeight"].ToString() : "";
21 string linkCasing = Dynamicweb.Context.Current.Request["Casing"] != null ? Dynamicweb.Context.Current.Request["Casing"].ToString() : "";
22
23 Regex reg = new Regex(@"\(([^\)]+)\)");
24 List<Dynamicweb.Content.Page> languages = new List<Dynamicweb.Content.Page>();
25
26 int pageId = Dynamicweb.Context.Current.Request["CurrentPageID"] != null ? Convert.ToInt32(Dynamicweb.Context.Current.Request["CurrentPageID"]) : Pageview.ID;
27 var currentPage = Dynamicweb.Content.Services.Pages.GetPage(pageId); //Get the correct page instance
28
29 if (currentPage.Area.IsMaster) {
30 languages.Add(currentPage);
31 if (currentPage.Languages != null) {
32 foreach (var language in currentPage.Languages) {
33 if (language.Area.Active == true) {
34 languages.Add(language);
35 }
36 }
37 }
38 } else {
39 languages.Add(currentPage.MasterPage);
40 if (currentPage.MasterPage != null) {
41 if (currentPage.MasterPage.Languages != null) {
42 foreach (var language in currentPage.MasterPage.Languages) {
43 if (language.Area.Active == true) {
44 languages.Add(language);
45 }
46 }
47 }
48 }
49 }
50
51 languages = languages.Count > 1 ? languages.OrderBy(language => language.Area.CultureInfo.DisplayName).ToList() : languages;
52
53 string siteLanguage = Pageview.Area.CultureInfo.Name;
54 Uri url = Dynamicweb.Context.Current.Request.Url;
55 string hostName = url.Host; // domain.com/da-dk or domain.com/en-us
56
57 var ecomCountries = Dynamicweb.Ecommerce.Services.Countries.GetCountries() != null ? Dynamicweb.Ecommerce.Services.Countries.GetCountries().OrderBy(country => country.Name) : null;
58 var currencies = Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies() != null ? Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies().OrderBy(currency => currency.Code) : null;
59
60 string modalTheme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("ModalTheme")) ? " theme " + Model.Item.GetRawValueString("ModalTheme").Replace(" ", "").Trim().ToLower() : "";
61 }
62
63 @* Modal *@
64
65 @if (layout == "modal")
66 {
67 int updatePageId = pageId;
68
69 <div class="modal-content @modalTheme item_@Model.Item.SystemName.ToLower()">
70 <div class="modal-header">
71 <h5 class="modal-title" id="PreferencesModalLabel">@Translate("Preferences")</h5>
72 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
73 </div>
74 <div class="modal-body d-grid gap-3" id="PreferencesModalBody">
75 <input type="hidden" name="CurrentPageID" value="@pageId">
76 @if (groupId != "") {
77 <input type="hidden" name="GroupID" value="@groupId">
78 }
79
80 @if (productId != "") {
81 <input type="hidden" name="ProductID" value="@productId">
82 }
83
84 @if (variantId != "") {
85 <input type="hidden" name="VariantID" value="@variantId">
86 }
87
88
89 @if (languages.Count() > 1 && Model.Item.GetBoolean("LanguageSelector"))
90 {
91 <form action="/Default.aspx" data-response-target-element="PreferencesModalContent" data-layout-template="Swift_Preferences.cshtml" data-preloader="inline">
92 <input type="hidden" name="Layout" value="modal">
93 <input type="hidden" name="CurrentPageID" value="@pageId">
94 <input type="hidden" name="GroupID" value="@groupId">
95 <input type="hidden" name="ProductID" value="@productId">
96 <input type="hidden" name="VariantID" value="@variantId">
97
98 <div class="form-floating">
99 <select id="LanguageSelect" name="ID" class="form-select d-col-12" aria-label="@Translate("Select language")" onchange="swift.PageUpdater.Update(event)">
100 @foreach (var language in languages)
101 {
102 if (language != null && language.Published && language.Area.Active && language.Area.Published) {
103 string selectedLanguage = language.Area.ID == Pageview.Area.ID ? "selected" : "";
104 updatePageId = language.Area.ID == Pageview.Area.ID ? language.ID : updatePageId;
105
106 var masterPageId = Pageview.Page?.MasterPageId != null && Pageview.Page.MasterPageId != 0 ? Pageview.Page.MasterPageId : Pageview.ID;
107 var preferencePageId = Dynamicweb.Content.Services.Pages.GetPageIDByMasterID(masterPageId, language.AreaId);
108 preferencePageId = preferencePageId == 0 ? Pageview.Page.MasterPageId : preferencePageId;
109 preferencePageId = preferencePageId == 0 ? Pageview.Page.ID : preferencePageId;
110
111 <option hreflang="@language.Area.CultureInfo.TwoLetterISOLanguageName" value="@preferencePageId" @selectedLanguage>@language.Area.DisplayName</option>
112 }
113 }
114 </select>
115 <label for="LanguageSelect">@Translate("Language")</label>
116 </div>
117 </form>
118 }
119
120 @if (ecomCountries.Count() > 1 && Model.Item.GetBoolean("CountrySelector"))
121 {
122 <form action="/Default.aspx" data-response-target-element="PreferencesModalContent" data-layout-template="Swift_Preferences.cshtml" data-preloader="inline">
123 <input type="hidden" name="ID" value="@Pageview.ID">
124 <input type="hidden" name="CurrentPageID" value="@pageId">
125 <input type="hidden" name="GroupID" value="@groupId">
126 <input type="hidden" name="ProductID" value="@productId">
127 <input type="hidden" name="VariantID" value="@variantId">
128
129 <div class="form-floating">
130 <select name="CountryCode" id="CountryCodeSelect" class="form-select d-col-12" aria-label="@Translate("Select country")" onchange="swift.PageUpdater.Update(event)">
131 @foreach (var country in ecomCountries)
132 {
133 var selectedCountry = country.Code2 == Dynamicweb.Ecommerce.Common.Context.Country.Code2 ? "selected" : "";
134
135 if (!string.IsNullOrEmpty(country.Name)) {
136 <option value="@country.Code2" @selectedCountry>@country.Name</option>
137 }
138 }
139 </select>
140 <label for="CountryCodeSelect">@Translate("Delivery country")</label>
141 </div>
142 </form>
143 }
144
145 @if (currencies.Count() > 1 && Model.Item.GetBoolean("CurrencySelector"))
146 {
147 <form action="/Default.aspx" data-response-target-element="PreferencesModalContent" data-layout-template="Swift_Preferences.cshtml" data-preloader="inline">
148 <input type="hidden" name="ID" value="@Pageview.ID">
149 <input type="hidden" name="CurrentPageID" value="@pageId">
150 <input type="hidden" name="GroupID" value="@groupId">
151 <input type="hidden" name="ProductID" value="@productId">
152 <input type="hidden" name="VariantID" value="@variantId">
153
154 <div class="form-floating">
155 <select name="CurrencyCode" id="CurrencySelect" class="form-select d-col-12" aria-label="@Translate("Select currency")" onchange="swift.PageUpdater.Update(event)">
156 @foreach (var currency in currencies)
157 {
158 string selectedCurrency = currency.Code == Dynamicweb.Ecommerce.Common.Context.Currency.Code ? "selected" : "";
159
160 if (!string.IsNullOrEmpty(currency.Code)) {
161 <option value="@currency.Code" @selectedCurrency>@currency.Code</option>
162 }
163 }
164 </select>
165 <label for="CurrencySelect">@Translate("Currency")</label>
166 </div>
167 </form>
168 }
169 </div>
170 <div class="modal-footer">
171 @{
172 hostName = !string.IsNullOrEmpty(Pageview.Area.DomainLock) ? Pageview.Area.DomainLock : url.Host;
173 string link = $"Default.aspx?ID={updatePageId}";
174 link += groupId != "" ? $"&GroupID={groupId}" : "";
175 link += productId != "" ? $"&ProductID={productId}" : "";
176 link += variantId != "" ? $"&VariantID={variantId}" : "";
177 var friendlyUrl = $"{url.Scheme}://{hostName}{Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(link)}";
178 }
179
180 <a href="@friendlyUrl" class="btn btn-primary w-100">@Translate("Update preferences")</a>
181 </div>
182 </div>
183 }
184
185 @* Dropdowns *@
186
187 @if (layout == "dropdown" && type == "country") {
188 foreach (var country in ecomCountries)
189 {
190 var link = $"{url.Scheme}://{hostName}?ID={currentPage.ID}&AreaID={Pageview.Area.ID}&CountryCode={country.Code2}";
191 link += groupId != "" ? $"&GroupID={groupId}" : "";
192 link += productId != "" ? $"&ProductID={productId}" : "";
193 link += variantId != "" ? $"&VariantID={variantId}" : "";
194
195 if (!string.IsNullOrEmpty(country.Name)) {
196 <li>
197 <a href="@link" class="dropdown-item nav-link-underline @linkFontSize @linkFontWeight @linkCasing">@country.Name</a>
198 </li>
199 }
200 }
201 }
202
203 @if (layout == "dropdown" && type == "language") {
204 string iconFolder = "/Files/FlagIcons/";
205 int languagesCount = 0;
206
207 foreach (var language in languages)
208 {
209 if (language.Area != null) {
210 if (language != null && language.Published && language.Area.Active && language.Area.Published && language.Area.ID != Dynamicweb.Frontend.PageView.Current().AreaID) {
211 hostName = !string.IsNullOrEmpty(language.Area.DomainLock) ? language.Area.DomainLock : url.Host;
212 string link = $"Default.aspx?ID={language.ID}";
213 link += groupId != "" ? $"&GroupID={groupId}" : "";
214 link += productId != "" ? $"&ProductID={productId}" : "";
215 link += variantId != "" ? $"&VariantID={variantId}" : "";
216
217 var friendlyUrl = $"{url.Scheme}://{hostName}{Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(link)}";
218
219 string icon = iconFolder + language.Area.CultureInfo.Name.ToLower() + ".svg";
220 <li>
221 <a hreflang="@language.Area.CultureInfo.TwoLetterISOLanguageName" href="@friendlyUrl" class="dropdown-item nav-link-underline @linkFontSize @linkFontWeight @linkCasing"><text>@{RenderIcon(icon, "icon-2");}</text> <span class="align-middle">@language.Area.DisplayName</span></a>
222 </li>
223
224 languagesCount++;
225 }
226 }
227 }
228
229 if (languagesCount == 0) {
230 <li>
231 <span class="dropdown-item fs-7 fw-normal">
232 @Translate("Page is not translated")
233 </span>
234 </li>
235 }
236 }
237
238 @if (layout == "dropdown" && type == "currency") {
239 foreach (var currency in currencies)
240 {
241 var link = $"{url.Scheme}://{hostName}?ID={currentPage.ID}&AreaID={Pageview.Area.ID}&CurrencyCode={currency.Code}";
242 link += groupId != "" ? $"&GroupID={groupId}" : "";
243 link += productId != "" ? $"&ProductID={productId}" : "";
244 link += variantId != "" ? $"&VariantID={variantId}" : "";
245
246 <li>
247 <a href="@link" class="dropdown-item nav-link-underline @linkFontSize @linkFontWeight @linkCasing">@currency.Code</a>
248 </li>
249 }
250 }
251
252 @functions {
253 void RenderIcon(string icon, string iconSize)
254 {
255 if (Path.GetExtension(icon).ToLower() == ".svg" && !icon.ToLower().Contains("none"))
256 {
257 string iconPath = Dynamicweb.Context.Current.Server.MapPath(icon);
258
259 <span class="@iconSize">
260 @ReadFile(iconPath)
261 </span>
262 }
263 }
264 }
265
266