Kontakt os
hvis du har brug for hjælp
Brug kontakt formularen og vi prøver at svare inden for 24 timer.
Du er også velkommen til at ringe til os på +45 70252090
Error compiling template "Designs/Swift/Navigation/Navigation.cshtml" Line 209: 'User.GetCurrentSecondaryUser()' is obsolete: 'Use UserContext.Current.ImpersonatingUser instead.' Line 552: 'Order' does not contain a definition for 'GetParentOrderLineCount' and no accessible extension method 'GetParentOrderLineCount' accepting a first argument of type 'Order' 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; 8 using System.Collections.Generic; 9 using System.Linq; 10 using Dynamicweb; 11 using System.IO; 12 using System.Text.RegularExpressions; 13 internal class RazorEngine_9bf5b27b63b24c508513bad623951314 : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.Navigation.NavigationTreeViewModel> 14 { 15 #pragma warning disable 1998 16 public async override global::System.Threading.Tasks.Task ExecuteAsync() 17 { 18 WriteLiteral("\n"); 19 string navOrientation = Model.Parameters["navOrientation"].ToString(); string navAlignment = Model.Parameters["navAlignment"].ToString(); string theme = !string.IsNullOrEmpty(Model.Parameters["theme"].ToString()) ? Model.Parameters["theme"].ToString() : ""; WriteLiteral("\n<nav"); 20 BeginWriteAttribute("class", " class=\"", 450, "\"", 517, 6); 21 WriteAttributeValue("", 458, "d-none", 458, 6, true); 22 WriteAttributeValue(" ", 464, "d-lg-flex", 465, 10, true); 23 WriteAttributeValue(" ", 474, "py-0", 475, 5, true); 24 WriteAttributeValue(" ", 479, navOrientation, 480, 15, false); 25 WriteAttributeValue(" ", 495, navAlignment, 496, 13, false); 26 WriteAttributeValue(" ", 509, "desktop", 510, 8, true); 27 EndWriteAttribute(); 28 WriteLiteral(">\n"); 29 RenderFirstLevelNodes(Model.Nodes, theme, navOrientation);WriteLiteral("</nav>\n\n<nav"); 30 BeginWriteAttribute("class", " class=\"", 611, "\"", 677, 6); 31 WriteAttributeValue("", 619, "d-flex", 619, 6, true); 32 WriteAttributeValue(" ", 625, "d-lg-none", 626, 10, true); 33 WriteAttributeValue(" ", 635, "py-0", 636, 5, true); 34 WriteAttributeValue(" ", 640, navOrientation, 641, 15, false); 35 WriteAttributeValue(" ", 656, navAlignment, 657, 13, false); 36 WriteAttributeValue(" ", 670, "mobile", 671, 7, true); 37 EndWriteAttribute(); 38 WriteLiteral(">\n"); 39 RenderFirstLevelNodesMobile(Model.Nodes, navOrientation);WriteLiteral("</nav>\n\n"); 40 WriteLiteral("\n"); 41 WriteLiteral("\n"); 42 WriteLiteral("\n"); 43 WriteLiteral("\n"); 44 } 45 #pragma warning restore 1998 46 47 void RenderFirstLevelNodes(IEnumerable<Dynamicweb.Frontend.Navigation.NavigationTreeNodeViewModel> nodes, string theme, string navOrientation) { string linkFontSize = Model.Parameters["LinkFontSize"].ToString(); string linkFontWeight = Model.Parameters["LinkFontWeight"].ToString(); string linkCasing = Model.Parameters["LinkCasing"].ToString(); bool showOnlyFirstNavLevel = Model.Parameters.ContainsKey("ShowOnlyFirstNavLevel") ? Convert.ToBoolean(Model.Parameters["ShowOnlyFirstNavLevel"].ToString()) : false; string menuId = Model.Parameters.ContainsKey("menu-id") ? $"menu_{Model.Parameters["menu-id"].ToString().ToLower()}" : string.Empty; WriteLiteral("\t<ul"); 48 BeginWriteAttribute("class", " class=\"", 1437, "\"", 1525, 3); 49 WriteAttributeValue("", 1445, "nav", 1445, 3, true); 50 WriteAttributeValue(" ", 1448, "flex-nowrap", 1449, 12, true); 51 WriteAttributeValue(" ", 1460, navOrientation == "vertical" ? "flex-column" : navOrientation, 1461, 64, false); 52 EndWriteAttribute(); 53 WriteLiteral(">\n\n"); 54 foreach (var node in nodes) { var page = Dynamicweb.Content.Services.Pages.GetPage(node.PageId); string pageType = page.ItemType; string preferencesLayout = page.Item?["PreferencesLayout"] != null ? page.Item["PreferencesLayout"].ToString() : ""; string preferencesType = "language"; bool countrySelector = page.Item?["CountrySelector"] != null ? Convert.ToBoolean(page.Item["CountrySelector"].ToString()) : false; bool languageSelector = page.Item?["LanguageSelector"] != null ? Convert.ToBoolean(page.Item["LanguageSelector"].ToString()) : false; bool currencySelector = page.Item?["CurrencySelector"] != null ? Convert.ToBoolean(page.Item["CurrencySelector"].ToString()) : false; string dropdownAttributes = string.Empty; string dropdownClasses = string.Empty; var hasChildren = node.Nodes.Count() > 0 || pageType == "Swift_SignIn"; if(hasChildren && !showOnlyFirstNavLevel) { dropdownAttributes = hasChildren ? " role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\" data-bs-toggle=\"dropdown\" data-bs-offset=\"0,0\"" : ""; } string nodeId = !string.IsNullOrEmpty(node.GroupId) ? "Navigation_" + node.GroupId + "_" + Pageview.CurrentParagraph.ID : "Navigation_Page_Desktop_" + node.PageId.ToString() + "_" + Pageview.CurrentParagraph.ID; if (pageType != "Swift_Preferences") { WriteLiteral("\t\t\t\t<li"); 55 BeginWriteAttribute("class", " class=\"", 2890, "\"", 2939, 2); 56 WriteAttributeValue("", 2898, "nav-item", 2898, 8, true); 57 WriteAttributeValue("", 2906, hasChildren ? " dropdown" : "", 2906, 33, false); 58 EndWriteAttribute(); 59 WriteLiteral(">\n"); 60 if (node.IsClickable) { WriteLiteral("\t\t\t\t\t\t<a"); 61 BeginWriteAttribute("href", " href=\"", 2985, "\"", 3002, 1); 62 WriteAttributeValue("", 2992, node.Link, 2992, 10, false); 63 EndWriteAttribute(); 64 BeginWriteAttribute("class", " class=\"", 3003, "\"", 3182, 9); 65 WriteAttributeValue("", 3011, "p-2", 3011, 3, true); 66 WriteAttributeValue(" ", 3014, "nav-link", 3015, 9, true); 67 WriteAttributeValue(" ", 3023, "text-nowrap", 3024, 12, true); 68 WriteAttributeValue(" ", 3035, "text-decoration-underline-hover", 3036, 32, true); 69 WriteAttributeValue(" ", 3067, linkFontSize, 3068, 13, false); 70 WriteAttributeValue(" ", 3081, linkFontWeight, 3082, 15, false); 71 WriteAttributeValue(" ", 3097, linkCasing, 3098, 11, false); 72 WriteAttributeValue("", 3109, node.IsActive ? " active" : "", 3109, 33, false); 73 WriteAttributeValue("", 3142, hasChildren ? " dropdown-toggle" : "", 3142, 40, false); 74 EndWriteAttribute(); 75 WriteLiteral(" "); 76 Write(dropdownAttributes); 77 WriteLiteral(" "); 78 Write(node.IsActive ? " aria-current='page'" : ""); 79 WriteLiteral(" id=\""); 80 Write(nodeId); 81 WriteLiteral("\">\n"); 82 RenderNavigationItem(node);WriteLiteral("\t\t\t\t\t\t</a>\n"); 83 } else { WriteLiteral("\t\t\t\t\t\t<span"); 84 BeginWriteAttribute("class", " class=\"", 3366, "\"", 3481, 7); 85 WriteAttributeValue("", 3374, "p-2", 3374, 3, true); 86 WriteAttributeValue(" ", 3377, "nav-link", 3378, 9, true); 87 WriteAttributeValue(" ", 3386, "text-nowrap", 3387, 12, true); 88 WriteAttributeValue(" ", 3398, linkFontSize, 3399, 13, false); 89 WriteAttributeValue(" ", 3412, linkFontWeight, 3413, 15, false); 90 WriteAttributeValue(" ", 3428, linkCasing, 3429, 11, false); 91 WriteAttributeValue("", 3440, hasChildren ? " dropdown-toggle " : "", 3440, 41, false); 92 EndWriteAttribute(); 93 WriteLiteral(" "); 94 Write(dropdownAttributes); 95 WriteLiteral(" id=\""); 96 Write(nodeId); 97 WriteLiteral("\">\n"); 98 RenderNavigationItem(node);WriteLiteral("\t\t\t\t\t\t</span>\n"); 99 } WriteLiteral("\n"); 100 if (hasChildren) { if (!showOnlyFirstNavLevel) { WriteLiteral("\t\t\t\t\t\t\t<ul"); 101 BeginWriteAttribute("class", " class=\"", 3675, "\"", 3705, 2); 102 WriteAttributeValue("", 3683, "dropdown-menu", 3683, 13, true); 103 WriteAttributeValue(" ", 3696, theme, 3697, 8, false); 104 EndWriteAttribute(); 105 BeginWriteAttribute("aria-labelledby", " aria-labelledby=\"", 3706, "\"", 3731, 1); 106 WriteAttributeValue("", 3724, nodeId, 3724, 7, false); 107 EndWriteAttribute(); 108 WriteLiteral(">\n"); 109 foreach (var subnode in node.Nodes)//Standard pages { nodeId = !string.IsNullOrEmpty(subnode.GroupId) ? "Navigation_" + subnode.GroupId + "_" + Pageview.CurrentParagraph.ID : "Navigation_Page_" + subnode.PageId.ToString() + "_" + Pageview.CurrentParagraph.ID; WriteLiteral("\t\t\t\t\t\t\t\t\t<li>\n"); 110 if (subnode.IsClickable) { WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t<a"); 111 BeginWriteAttribute("href", " href=\"", 4096, "\"", 4116, 1); 112 WriteAttributeValue("", 4103, subnode.Link, 4103, 13, false); 113 EndWriteAttribute(); 114 BeginWriteAttribute("class", " class=\"", 4117, "\"", 4217, 6); 115 WriteAttributeValue("", 4125, "dropdown-item", 4125, 13, true); 116 WriteAttributeValue(" ", 4138, "py-2", 4139, 5, true); 117 WriteAttributeValue(" ", 4143, "text-decoration-underline-hover", 4144, 32, true); 118 WriteAttributeValue(" ", 4175, linkFontSize, 4176, 13, false); 119 WriteAttributeValue(" ", 4189, linkFontWeight, 4190, 15, false); 120 WriteAttributeValue(" ", 4205, linkCasing, 4206, 11, false); 121 EndWriteAttribute(); 122 WriteLiteral(" "); 123 Write(subnode.IsActive ? " aria-current='page'" : ""); 124 WriteLiteral(" id=\""); 125 Write(nodeId); 126 WriteLiteral("\">"); 127 Write(subnode.Name); 128 WriteLiteral("</a>\n"); 129 } else { WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t<span"); 130 BeginWriteAttribute("class", " class=\"", 4355, "\"", 4423, 5); 131 WriteAttributeValue("", 4363, "dropdown-item", 4363, 13, true); 132 WriteAttributeValue(" ", 4376, "py-2", 4377, 5, true); 133 WriteAttributeValue(" ", 4381, linkFontSize, 4382, 13, false); 134 WriteAttributeValue(" ", 4395, linkFontWeight, 4396, 15, false); 135 WriteAttributeValue(" ", 4411, linkCasing, 4412, 11, false); 136 EndWriteAttribute(); 137 WriteLiteral(" "); 138 Write(subnode.IsActive ? " aria-current='page'" : ""); 139 WriteLiteral(" id=\""); 140 Write(nodeId); 141 WriteLiteral("\">"); 142 Write(subnode.Name); 143 WriteLiteral("</span>\n"); 144 } WriteLiteral("\t\t\t\t\t\t\t\t\t</li>\n"); 145 } if (pageType == "Swift_SignIn") //Sign out link { if (Pageview.User != null) { string link = "/Admin/Public/ExtranetLogoff.aspx?redirect=no"; WriteLiteral("\t\t\t\t\t\t\t\t\t\t<li><hr class=\"dropdown-divider\"></li>\n"); 146 if (Dynamicweb.Security.UserManagement.User.GetCurrentSecondaryUser() != null) { WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t\t<a"); 147 BeginWriteAttribute("href", " href=\"", 4914, "\"", 4983, 3); 148 WriteAttributeValue("", 4921, "Default.aspx?ID=", 4921, 16, true); 149 WriteAttributeValue("", 4937, Pageview.ID, 4937, 14, false); 150 WriteAttributeValue("", 4951, "&DwExtranetRemoveSecondaryUser=1", 4951, 32, true); 151 EndWriteAttribute(); 152 BeginWriteAttribute("class", " class=\"", 4984, "\"", 5116, 7); 153 WriteAttributeValue("", 4992, "dropdown-item", 4992, 13, true); 154 WriteAttributeValue(" ", 5005, "py-2", 5006, 5, true); 155 WriteAttributeValue(" ", 5010, "text-decoration-underline-hover", 5011, 32, true); 156 WriteAttributeValue(" ", 5042, "swift_sign-out-as-customer-link", 5043, 32, true); 157 WriteAttributeValue(" ", 5074, linkFontSize, 5075, 13, false); 158 WriteAttributeValue(" ", 5088, linkFontWeight, 5089, 15, false); 159 WriteAttributeValue(" ", 5104, linkCasing, 5105, 11, false); 160 EndWriteAttribute(); 161 BeginWriteAttribute("id", " id=\"", 5117, "\"", 5164, 2); 162 WriteAttributeValue("", 5122, "SignInButton_", 5122, 13, true); 163 WriteAttributeValue("", 5135, Pageview.CurrentParagraph.ID, 5135, 29, false); 164 EndWriteAttribute(); 165 WriteLiteral(">"); 166 Write(Translate("Sign out as a customer")); 167 WriteLiteral("</a>\n\t\t\t\t\t\t\t\t\t\t\t</li>\n"); 168 } WriteLiteral("\t\t\t\t\t\t\t\t\t\t<li>\n\t\t\t\t\t\t\t\t\t\t\t<a"); 169 BeginWriteAttribute("href", " href=\"", 5264, "\"", 5276, 1); 170 WriteAttributeValue("", 5271, link, 5271, 5, false); 171 EndWriteAttribute(); 172 BeginWriteAttribute("class", " class=\"", 5277, "\"", 5397, 7); 173 WriteAttributeValue("", 5285, "dropdown-item", 5285, 13, true); 174 WriteAttributeValue(" ", 5298, "py-2", 5299, 5, true); 175 WriteAttributeValue(" ", 5303, "text-decoration-underline-hover", 5304, 32, true); 176 WriteAttributeValue(" ", 5335, "swift_sign-out-link", 5336, 20, true); 177 WriteAttributeValue(" ", 5355, linkFontSize, 5356, 13, false); 178 WriteAttributeValue(" ", 5369, linkFontWeight, 5370, 15, false); 179 WriteAttributeValue(" ", 5385, linkCasing, 5386, 11, false); 180 EndWriteAttribute(); 181 WriteLiteral(">"); 182 Write(Translate("Sign out")); 183 WriteLiteral("</a>\n\t\t\t\t\t\t\t\t\t\t</li>\n"); 184 } } WriteLiteral("\t\t\t\t\t\t\t</ul>\n"); 185 } } WriteLiteral("\t\t\t\t</li>\n"); 186 } else { if (preferencesLayout == "modal") { string groupId = Dynamicweb.Context.Current.Request["GroupID"] != null ? Dynamicweb.Context.Current.Request["GroupID"].ToString() : ""; string productId = Dynamicweb.Context.Current.Request["ProductID"] != null ? Dynamicweb.Context.Current.Request["ProductID"].ToString() : ""; string variantId = Dynamicweb.Context.Current.Request["VariantID"] != null ? Dynamicweb.Context.Current.Request["VariantID"].ToString() : ""; WriteLiteral("\t\t\t\t\t<li"); 187 BeginWriteAttribute("class", " class=\"", 6008, "\"", 6057, 2); 188 WriteAttributeValue("", 6016, "nav-item", 6016, 8, true); 189 WriteAttributeValue("", 6024, hasChildren ? " dropdown" : "", 6024, 33, false); 190 EndWriteAttribute(); 191 WriteLiteral(">\n\t\t\t\t\t\t<form"); 192 BeginWriteAttribute("action", " action=\"", 6071, "\"", 6109, 2); 193 WriteAttributeValue("", 6080, "/Default.aspx?ID=", 6080, 17, true); 194 WriteAttributeValue("", 6097, node.PageId, 6097, 12, false); 195 EndWriteAttribute(); 196 WriteLiteral(" data-response-target-element=\"PreferencesModalContent\" data-layout-template=\"Swift_Preferences.cshtml\" data-preloader=\"inline\">\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"CurrentPageID\""); 197 BeginWriteAttribute("value", " value=\"", 6287, "\"", 6307, 1); 198 WriteAttributeValue("", 6295, Pageview.ID, 6295, 12, false); 199 EndWriteAttribute(); 200 WriteLiteral(">\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"GroupID\""); 201 BeginWriteAttribute("value", " value=\"", 6352, "\"", 6368, 1); 202 WriteAttributeValue("", 6360, groupId, 6360, 8, false); 203 EndWriteAttribute(); 204 WriteLiteral(">\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"ProductID\""); 205 BeginWriteAttribute("value", " value=\"", 6415, "\"", 6433, 1); 206 WriteAttributeValue("", 6423, productId, 6423, 10, false); 207 EndWriteAttribute(); 208 WriteLiteral(">\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"VariantID\""); 209 BeginWriteAttribute("value", " value=\"", 6480, "\"", 6498, 1); 210 WriteAttributeValue("", 6488, variantId, 6488, 10, false); 211 EndWriteAttribute(); 212 WriteLiteral(">\n\t\t\t\t\t\t\t<button type=\"button\" onmouseover=\"swift.PageUpdater.Update(event)\" onclick=\"swift.PageUpdater.Update(event)\""); 213 BeginWriteAttribute("class", " class=\"", 6617, "\"", 6733, 9); 214 WriteAttributeValue("", 6625, "btn", 6625, 3, true); 215 WriteAttributeValue(" ", 6628, "nav-link", 6629, 9, true); 216 WriteAttributeValue(" ", 6637, "p-2", 6638, 4, true); 217 WriteAttributeValue(" ", 6641, "text-nowrap", 6642, 12, true); 218 WriteAttributeValue(" ", 6653, "border-0", 6654, 9, true); 219 WriteAttributeValue(" ", 6662, "swift_open-preferences-modal", 6663, 29, true); 220 WriteAttributeValue(" ", 6691, linkFontSize, 6692, 13, false); 221 WriteAttributeValue(" ", 6705, linkFontWeight, 6706, 15, false); 222 WriteAttributeValue(" ", 6721, linkCasing, 6722, 11, false); 223 EndWriteAttribute(); 224 WriteLiteral(" data-bs-toggle=\"modal\" data-bs-target=\"#PreferencesModal\""); 225 BeginWriteAttribute("id", " id=\"", 6792, "\"", 6842, 2); 226 WriteAttributeValue("", 6797, "OpenPreferences_", 6797, 16, true); 227 WriteAttributeValue("", 6813, Pageview.CurrentParagraph.ID, 6813, 29, false); 228 EndWriteAttribute(); 229 WriteLiteral(">\n"); 230 if (languageSelector) { { RenderNavigationItem(node, "language"); } } else { { RenderNavigationItem(node); } } WriteLiteral("\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</form>\n\t\t\t\t\t</li>\n"); 231 } else { var ecomCountries = Dynamicweb.Ecommerce.Services.Countries.GetCountries(); var currencies = Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies(); if (languageSelector) { List<Dynamicweb.Content.Page> languages = new List<Dynamicweb.Content.Page>(); if (Pageview.Page.Area.IsMaster) { languages.Add(Pageview.Page); if (Pageview.Page.Languages != null) { foreach (var language in Pageview.Page.Languages) { if (language.Area.Active == true) { languages.Add(language); } } } } else { languages.Add(Pageview.Page.MasterPage); if (Pageview.Page.MasterPage != null) { if (Pageview.Page.MasterPage.Languages != null) { foreach (var language in Pageview.Page.MasterPage.Languages) { if (language.Area.Active == true) { languages.Add(language); } } } } } if (languages.Count > 1) { preferencesType = "language"; { RenderPreferencesDropdown(node, preferencesType, linkFontSize, linkFontWeight, linkCasing, theme); } } } if (countrySelector && ecomCountries.Count > 1) { preferencesType = "country"; { RenderPreferencesDropdown(node, preferencesType, linkFontSize, linkFontWeight, linkCasing, theme); } } if (currencySelector && currencies.Count() > 1) { preferencesType = "currency"; { RenderPreferencesDropdown(node, preferencesType, linkFontSize, linkFontWeight, linkCasing, theme); } } } } } WriteLiteral("\t</ul>\n"); 232 } 233 234 void RenderFirstLevelNodesMobile(IEnumerable<Dynamicweb.Frontend.Navigation.NavigationTreeNodeViewModel> nodes, string navOrientation) { string linkFontSize = Model.Parameters["LinkFontSize"].ToString(); string linkFontWeight = Model.Parameters["LinkFontWeight"].ToString(); string linkCasing = Model.Parameters["LinkCasing"].ToString(); WriteLiteral("\t<div"); 235 BeginWriteAttribute("class", " class=\"", 9200, "\"", 9283, 2); 236 WriteAttributeValue("", 9208, "navbar-nav", 9208, 10, true); 237 WriteAttributeValue(" ", 9218, navOrientation == "vertical" ? "flex-column" : navOrientation, 9219, 64, false); 238 EndWriteAttribute(); 239 WriteLiteral(">\n"); 240 foreach (var node in nodes) { string nodeId = !string.IsNullOrEmpty(node.GroupId) ? "Navigation_" + node.GroupId + "_" + Pageview.CurrentParagraph.ID : "Navigation_Page_Mobile_" + node.PageId.ToString() + "_" + Pageview.CurrentParagraph.ID; var hasChildren = node.Nodes.Count() > 0; var page = Dynamicweb.Content.Services.Pages.GetPage(node.PageId); string pageType = page.ItemType; if (pageType != "Swift_Preferences") { if (node.IsClickable) { WriteLiteral("\t\t\t\t\t<a"); 241 BeginWriteAttribute("id", " id=\"", 9771, "\"", 9783, 1); 242 WriteAttributeValue("", 9776, nodeId, 9776, 7, false); 243 EndWriteAttribute(); 244 BeginWriteAttribute("class", " class=\"", 9784, "\"", 9892, 7); 245 WriteAttributeValue("", 9792, "nav-link", 9792, 8, true); 246 WriteAttributeValue(" ", 9800, "p-2", 9801, 4, true); 247 WriteAttributeValue(" ", 9804, "text-nowrap", 9805, 12, true); 248 WriteAttributeValue(" ", 9816, linkFontWeight, 9817, 15, false); 249 WriteAttributeValue(" ", 9832, linkCasing, 9833, 11, false); 250 WriteAttributeValue(" ", 9844, linkFontSize, 9845, 13, false); 251 WriteAttributeValue(" ", 9858, node.IsActive ? " active" : "", 9859, 33, false); 252 EndWriteAttribute(); 253 BeginWriteAttribute("href", " href=\"", 9893, "\"", 9910, 1); 254 WriteAttributeValue("", 9900, node.Link, 9900, 10, false); 255 EndWriteAttribute(); 256 BeginWriteAttribute("title", " title=\"", 9911, "\"", 9929, 1); 257 WriteAttributeValue("", 9919, node.Name, 9919, 10, false); 258 EndWriteAttribute(); 259 WriteLiteral(">\n"); 260 RenderNavigationItem(node);WriteLiteral("\t\t\t\t\t</a>\n"); 261 } else { WriteLiteral("\t\t\t\t\t<span"); 262 BeginWriteAttribute("class", " class=\"", 10026, "\"", 10100, 6); 263 WriteAttributeValue("", 10034, "nav-link", 10034, 8, true); 264 WriteAttributeValue(" ", 10042, "p-2", 10043, 4, true); 265 WriteAttributeValue(" ", 10046, "text-nowrap", 10047, 12, true); 266 WriteAttributeValue(" ", 10058, linkFontWeight, 10059, 15, false); 267 WriteAttributeValue(" ", 10074, linkCasing, 10075, 11, false); 268 WriteAttributeValue(" ", 10086, linkFontSize, 10087, 13, false); 269 EndWriteAttribute(); 270 BeginWriteAttribute("title", " title=\"", 10101, "\"", 10119, 1); 271 WriteAttributeValue("", 10109, node.Name, 10109, 10, false); 272 EndWriteAttribute(); 273 WriteLiteral(">\n"); 274 RenderNavigationItem(node);WriteLiteral("\t\t\t\t\t</span>\n"); 275 } } else { bool languageSelector = page.Item?["LanguageSelector"] != null ? Convert.ToBoolean(page.Item["LanguageSelector"].ToString()) : false; string groupId = Dynamicweb.Context.Current.Request["GroupID"] != null ? Dynamicweb.Context.Current.Request["GroupID"].ToString() : ""; string productId = Dynamicweb.Context.Current.Request["ProductID"] != null ? Dynamicweb.Context.Current.Request["ProductID"].ToString() : ""; string variantId = Dynamicweb.Context.Current.Request["VariantID"] != null ? Dynamicweb.Context.Current.Request["VariantID"].ToString() : ""; WriteLiteral("\t\t\t\t<div class=\"nav-item\">\n\t\t\t\t\t<form"); 276 BeginWriteAttribute("action", " action=\"", 10820, "\"", 10858, 2); 277 WriteAttributeValue("", 10829, "/Default.aspx?ID=", 10829, 17, true); 278 WriteAttributeValue("", 10846, node.PageId, 10846, 12, false); 279 EndWriteAttribute(); 280 WriteLiteral(" data-response-target-element=\"PreferencesModalContent\" data-layout-template=\"Swift_Preferences.cshtml\" data-preloader=\"inline\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"Layout\" value=\"modal\">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"CurrentPageID\""); 281 BeginWriteAttribute("value", " value=\"", 11091, "\"", 11111, 1); 282 WriteAttributeValue("", 11099, Pageview.ID, 11099, 12, false); 283 EndWriteAttribute(); 284 WriteLiteral(">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"GroupID\""); 285 BeginWriteAttribute("value", " value=\"", 11155, "\"", 11171, 1); 286 WriteAttributeValue("", 11163, groupId, 11163, 8, false); 287 EndWriteAttribute(); 288 WriteLiteral(">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"ProductID\""); 289 BeginWriteAttribute("value", " value=\"", 11217, "\"", 11235, 1); 290 WriteAttributeValue("", 11225, productId, 11225, 10, false); 291 EndWriteAttribute(); 292 WriteLiteral(">\n\t\t\t\t\t\t<input type=\"hidden\" name=\"VariantID\""); 293 BeginWriteAttribute("value", " value=\"", 11281, "\"", 11299, 1); 294 WriteAttributeValue("", 11289, variantId, 11289, 10, false); 295 EndWriteAttribute(); 296 WriteLiteral(">\n\t\t\t\t\t\t<button type=\"button\" onmouseover=\"swift.PageUpdater.Update(event)\" onclick=\"swift.PageUpdater.Update(event)\""); 297 BeginWriteAttribute("class", " class=\"", 11417, "\"", 11533, 9); 298 WriteAttributeValue("", 11425, "btn", 11425, 3, true); 299 WriteAttributeValue(" ", 11428, "nav-link", 11429, 9, true); 300 WriteAttributeValue(" ", 11437, "p-2", 11438, 4, true); 301 WriteAttributeValue(" ", 11441, "text-nowrap", 11442, 12, true); 302 WriteAttributeValue(" ", 11453, "border-0", 11454, 9, true); 303 WriteAttributeValue(" ", 11462, "swift_open-preferences-modal", 11463, 29, true); 304 WriteAttributeValue(" ", 11491, linkFontSize, 11492, 13, false); 305 WriteAttributeValue(" ", 11505, linkFontWeight, 11506, 15, false); 306 WriteAttributeValue(" ", 11521, linkCasing, 11522, 11, false); 307 EndWriteAttribute(); 308 WriteLiteral(" data-bs-toggle=\"modal\" data-bs-target=\"#PreferencesModal\">\n"); 309 if (languageSelector) { { RenderNavigationItem(node, "language"); } } else { { RenderNavigationItem(node); } } WriteLiteral("\t\t\t\t\t\t</button>\n\t\t\t\t\t</form>\n\t\t\t\t</div>\n"); 310 } } WriteLiteral("\t</div>\n"); 311 } 312 313 void RenderNavigationItem(Dynamicweb.Frontend.Navigation.NavigationTreeNodeViewModel node, string preferencesType = "") { var page = Dynamicweb.Content.Services.Pages.GetPage(node.PageId); string pageType = page.ItemType; string linkFontSize = Model.Parameters["LinkFontSize"].ToString(); string layout = Model?.Parameters["Layout"].ToString(); string icon = page.Item?["Icon"] != null ? page.Item["Icon"].ToString() : ""; string iconSize = "icon-3"; if (linkFontSize == "fs-7") { iconSize = "icon-2"; } if (linkFontSize == "fs-5") { iconSize = "icon-4"; } if (page.PropertyItem != null) { icon = page.PropertyItem["Icon"] != null ? page.PropertyItem["Icon"].ToString() : ""; } if (pageType == "Swift_Cart") //Mini cart { string cartId = ""; if (page.Item["ContextCart"] != null) { cartId = !string.IsNullOrEmpty(page.Item["ContextCart"].ToString()) ? "ID=\"Cart_" + page.Item["ContextCart"].ToString() + "\"" : ""; } string jsCartClass = string.IsNullOrEmpty(cartId) ? "js-cart-qty" : ""; double totalProducts = 0; Dynamicweb.Ecommerce.Common.Context.CartContext = null; if (page.Item["ContextCart"] != null) { var orderContext = Dynamicweb.Ecommerce.Services.OrderContexts.GetOrderContextById(page.Item["ContextCart"].ToString()); Dynamicweb.Ecommerce.Common.Context.CartContext = orderContext; } if (Dynamicweb.Ecommerce.Common.Context.Cart != null) { bool renderOrderlineCountInsteadOfProductCount = page.Item["RenderOrderlineCountInsteadOfProductCount"] != null ? Convert.ToBoolean(page.Item["RenderOrderlineCountInsteadOfProductCount"]) : false; if (!renderOrderlineCountInsteadOfProductCount) { totalProducts = Dynamicweb.Ecommerce.Common.Context.Cart.GetParentProductLineQuantityCount(Dynamicweb.Ecommerce.Common.Context.Cart.OrderLines); } else { totalProducts = Dynamicweb.Ecommerce.Common.Context.Cart.GetParentOrderLineCount(Dynamicweb.Ecommerce.Common.Context.Cart.OrderLines); } } switch (layout) { case "linksOnly": WriteLiteral("\t\t\t\t<span class=\"align-middle\">"); 314 Write(node.Name); 315 WriteLiteral("</span>\n\t\t\t\t<span"); 316 BeginWriteAttribute("class", " class=\"", 13977, "\"", 14029, 3); 317 WriteAttributeValue("", 13985, jsCartClass, 13985, 12, false); 318 WriteAttributeValue(" ", 13997, "mini-cart-quantity", 13998, 19, true); 319 WriteAttributeValue(" ", 14016, "align-middle", 14017, 13, true); 320 EndWriteAttribute(); 321 WriteLiteral(" "); 322 Write(cartId); 323 WriteLiteral(">("); 324 Write(totalProducts); 325 WriteLiteral(")</span>\n"); 326 break; case "iconsOnly": { RenderIcon(icon, iconSize); } WriteLiteral("\t\t\t\t<span"); 327 BeginWriteAttribute("class", " class=\"", 14155, "\"", 14207, 3); 328 WriteAttributeValue("", 14163, jsCartClass, 14163, 12, false); 329 WriteAttributeValue(" ", 14175, "mini-cart-quantity", 14176, 19, true); 330 WriteAttributeValue(" ", 14194, "align-middle", 14195, 13, true); 331 EndWriteAttribute(); 332 WriteLiteral(" "); 333 Write(cartId); 334 WriteLiteral(">("); 335 Write(totalProducts); 336 WriteLiteral(")</span>\n"); 337 break; case "iconsAndLinks": { RenderIcon(icon, iconSize); } WriteLiteral("\t\t\t\t<span"); 338 BeginWriteAttribute("class", " class=\"", 14336, "\"", 14388, 3); 339 WriteAttributeValue("", 14344, jsCartClass, 14344, 12, false); 340 WriteAttributeValue(" ", 14356, "mini-cart-quantity", 14357, 19, true); 341 WriteAttributeValue(" ", 14375, "align-middle", 14376, 13, true); 342 EndWriteAttribute(); 343 WriteLiteral(" "); 344 Write(cartId); 345 WriteLiteral(">("); 346 Write(totalProducts); 347 WriteLiteral(")</span>\n\t\t\t\t<span class=\"align-middle\">"); 348 Write(node.Name); 349 WriteLiteral("</span>\n"); 350 break; case "linksAndIcons": WriteLiteral("\t\t\t\t<span class=\"align-middle\">"); 351 Write(node.Name); 352 WriteLiteral("</span>\n\t\t\t\t<span"); 353 BeginWriteAttribute("class", " class=\"", 14565, "\"", 14617, 3); 354 WriteAttributeValue("", 14573, jsCartClass, 14573, 12, false); 355 WriteAttributeValue(" ", 14585, "mini-cart-quantity", 14586, 19, true); 356 WriteAttributeValue(" ", 14604, "align-middle", 14605, 13, true); 357 EndWriteAttribute(); 358 WriteLiteral(" "); 359 Write(cartId); 360 WriteLiteral(">("); 361 Write(totalProducts); 362 WriteLiteral(")</span>\n"); 363 { RenderIcon(icon, iconSize); } break; } } else { string name = node.Name; if (preferencesType == "country") { //Country name = Translate("Deliver to") + ": " + Dynamicweb.Ecommerce.Common.Context.Country.GetName(Dynamicweb.Ecommerce.Common.Context.LanguageID); } if (preferencesType == "language") { //Languange string iconFolder = "/Files/FlagIcons/"; icon = iconFolder + Pageview.Area.CultureInfo.Name.ToLower() + ".svg"; Regex reg = new Regex(@"\(([^\)]+)\)"); name = reg.Replace(Pageview.Area.CultureInfo.DisplayName, ""); layout = layout == "linksOnly" ? "iconsAndLinks" : layout; bool hideIcon = page.Item?["HideIcon"] != null ? Convert.ToBoolean(page.Item["HideIcon"].ToString()) : false; bool hideName = page.Item?["HideName"] != null ? Convert.ToBoolean(page.Item["HideName"].ToString()) : false; layout = hideIcon ? "linksOnly" : layout; layout = hideName ? "iconsOnly" : layout; } if (preferencesType == "currency") { //Country name = Dynamicweb.Ecommerce.Common.Context.Currency.Code; } switch (layout) { case "linksOnly": WriteLiteral("\t\t\t\t<span class=\"align-middle\">"); 364 Write(name); 365 WriteLiteral("</span>\n"); 366 break; case "iconsOnly": WriteLiteral("\t\t\t\t<span class=\"visually-hidden\">"); 367 Write(name); 368 WriteLiteral("</span>\n"); 369 { RenderIcon(icon, iconSize); } break; case "iconsAndLinks": { RenderIcon(icon, iconSize); } WriteLiteral("\t\t\t\t<span class=\"align-middle\">"); 370 Write(name); 371 WriteLiteral("</span>\n"); 372 break; case "linksAndIcons": WriteLiteral("\t\t\t\t<span class=\"align-middle\">"); 373 Write(name); 374 WriteLiteral("</span>\n"); 375 { RenderIcon(icon, iconSize); } break; } } } 376 377 void RenderPreferencesDropdown(Dynamicweb.Frontend.Navigation.NavigationTreeNodeViewModel node, string preferencesType, string linkFontSize, string linkFontWeight, string linkCasing, string theme) { string groupId = Dynamicweb.Context.Current.Request["GroupID"] != null ? Dynamicweb.Context.Current.Request["GroupID"].ToString() : ""; string productId = Dynamicweb.Context.Current.Request["ProductID"] != null ? Dynamicweb.Context.Current.Request["ProductID"].ToString() : ""; string variantId = Dynamicweb.Context.Current.Request["VariantID"] != null ? Dynamicweb.Context.Current.Request["VariantID"].ToString() : ""; string nodeId = !string.IsNullOrEmpty(node.GroupId) ? "PreferencesLink_" + node.GroupId + "_" + Pageview.CurrentParagraph.ID : "PreferencesLink_" + node.PageId.ToString() + "_" + Pageview.CurrentParagraph.ID; WriteLiteral("\t<li class=\"nav-item dropdown\">\n\t\t<form class=\"d-none d-lg-block\""); 378 BeginWriteAttribute("action", " action=\"", 17152, "\"", 17190, 2); 379 WriteAttributeValue("", 17161, "/Default.aspx?ID=", 17161, 17, true); 380 WriteAttributeValue("", 17178, node.PageId, 17178, 12, false); 381 EndWriteAttribute(); 382 WriteLiteral(" data-response-target-element=\""); 383 Write(preferencesType); 384 WriteLiteral("Dropdown_"); 385 Write(Pageview.CurrentParagraph.ID); 386 WriteLiteral("\" data-layout-template=\"Swift_Preferences.cshtml\" data-preloader=\"inline\">\n\t\t\t<input type=\"hidden\" name=\"Type\""); 387 BeginWriteAttribute("value", " value=\"", 17388, "\"", 17412, 1); 388 WriteAttributeValue("", 17396, preferencesType, 17396, 16, false); 389 EndWriteAttribute(); 390 WriteLiteral(">\n\t\t\t<input type=\"hidden\" name=\"CurrentPageID\""); 391 BeginWriteAttribute("value", " value=\"", 17459, "\"", 17479, 1); 392 WriteAttributeValue("", 17467, Pageview.ID, 17467, 12, false); 393 EndWriteAttribute(); 394 WriteLiteral(">\n\t\t\t<input type=\"hidden\" name=\"GroupID\""); 395 BeginWriteAttribute("value", " value=\"", 17520, "\"", 17536, 1); 396 WriteAttributeValue("", 17528, groupId, 17528, 8, false); 397 EndWriteAttribute(); 398 WriteLiteral(">\n\t\t\t<input type=\"hidden\" name=\"ProductID\""); 399 BeginWriteAttribute("value", " value=\"", 17579, "\"", 17597, 1); 400 WriteAttributeValue("", 17587, productId, 17587, 10, false); 401 EndWriteAttribute(); 402 WriteLiteral(">\n\t\t\t<input type=\"hidden\" name=\"VariantID\""); 403 BeginWriteAttribute("value", " value=\"", 17640, "\"", 17658, 1); 404 WriteAttributeValue("", 17648, variantId, 17648, 10, false); 405 EndWriteAttribute(); 406 WriteLiteral(">\n\t\t\t<input type=\"hidden\" name=\"FontSize\""); 407 BeginWriteAttribute("value", " value=\"", 17700, "\"", 17721, 1); 408 WriteAttributeValue("", 17708, linkFontSize, 17708, 13, false); 409 EndWriteAttribute(); 410 WriteLiteral(">\n\t\t\t<input type=\"hidden\" name=\"FontWeight\""); 411 BeginWriteAttribute("value", " value=\"", 17765, "\"", 17788, 1); 412 WriteAttributeValue("", 17773, linkFontWeight, 17773, 15, false); 413 EndWriteAttribute(); 414 WriteLiteral(">\n\t\t\t<input type=\"hidden\" name=\"Casing\""); 415 BeginWriteAttribute("value", " value=\"", 17828, "\"", 17847, 1); 416 WriteAttributeValue("", 17836, linkCasing, 17836, 11, false); 417 EndWriteAttribute(); 418 WriteLiteral(">\n\n\t\t\t<a"); 419 BeginWriteAttribute("id", " id=\"", 17856, "\"", 17868, 1); 420 WriteAttributeValue("", 17861, nodeId, 17861, 7, false); 421 EndWriteAttribute(); 422 WriteLiteral(" onmouseover=\"swift.PageUpdater.Update(event)\" onclick=\"swift.PageUpdater.Update(event)\""); 423 BeginWriteAttribute("class", " class=\"", 17957, "\"", 18112, 9); 424 WriteAttributeValue("", 17965, "nav-link", 17965, 8, true); 425 WriteAttributeValue(" ", 17973, "p-2", 17974, 4, true); 426 WriteAttributeValue(" ", 17977, "text-nowrap", 17978, 12, true); 427 WriteAttributeValue(" ", 17989, "text-decoration-underline-hover", 17990, 32, true); 428 WriteAttributeValue(" ", 18021, linkFontSize, 18022, 13, false); 429 WriteAttributeValue(" ", 18035, linkFontWeight, 18036, 15, false); 430 WriteAttributeValue(" ", 18051, linkCasing, 18052, 11, false); 431 WriteAttributeValue("", 18063, node.IsActive ? " active" : "", 18063, 33, false); 432 WriteAttributeValue(" ", 18096, "dropdown-toggle", 18097, 16, true); 433 EndWriteAttribute(); 434 WriteLiteral(" href=\"#\" role=\"button\" data-bs-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\" "); 435 Write(node.IsActive ? " aria-current='page'" : ""); 436 WriteLiteral(">\n"); 437 RenderNavigationItem(node, preferencesType);WriteLiteral("\t\t\t</a>\n\n\t\t\t<ul"); 438 BeginWriteAttribute("class", " class=\"", 18337, "\"", 18367, 2); 439 WriteAttributeValue("", 18345, "dropdown-menu", 18345, 13, true); 440 WriteAttributeValue(" ", 18358, theme, 18359, 8, false); 441 EndWriteAttribute(); 442 BeginWriteAttribute("id", " id=\"", 18368, "\"", 18429, 3); 443 WriteAttributeValue("", 18373, preferencesType, 18373, 18, false); 444 WriteAttributeValue("", 18391, "Dropdown_", 18391, 9, true); 445 WriteAttributeValue("", 18400, Pageview.CurrentParagraph.ID, 18400, 29, false); 446 EndWriteAttribute(); 447 WriteLiteral(">\n"); 448 WriteLiteral("\t\t\t</ul>\n\t\t</form>\n\n\t\t<form class=\"d-block d-lg-none\""); 449 BeginWriteAttribute("action", " action=\"", 18543, "\"", 18581, 2); 450 WriteAttributeValue("", 18552, "/Default.aspx?ID=", 18552, 17, true); 451 WriteAttributeValue("", 18569, node.PageId, 18569, 12, false); 452 EndWriteAttribute(); 453 WriteLiteral(" data-response-target-element=\"PreferencesModalContent\" data-layout-template=\"Swift_Preferences.cshtml\" data-preloader=\"inline\">\n\t\t\t<input type=\"hidden\" name=\"Layout\" value=\"modal\">\n\t\t\t<input type=\"hidden\" name=\"CurrentPageID\""); 454 BeginWriteAttribute("value", " value=\"", 18808, "\"", 18828, 1); 455 WriteAttributeValue("", 18816, Pageview.ID, 18816, 12, false); 456 EndWriteAttribute(); 457 WriteLiteral(">\n\t\t\t<input type=\"hidden\" name=\"GroupID\""); 458 BeginWriteAttribute("value", " value=\"", 18869, "\"", 18885, 1); 459 WriteAttributeValue("", 18877, groupId, 18877, 8, false); 460 EndWriteAttribute(); 461 WriteLiteral(">\n\t\t\t<input type=\"hidden\" name=\"ProductID\""); 462 BeginWriteAttribute("value", " value=\"", 18928, "\"", 18946, 1); 463 WriteAttributeValue("", 18936, productId, 18936, 10, false); 464 EndWriteAttribute(); 465 WriteLiteral(">\n\t\t\t<input type=\"hidden\" name=\"VariantID\""); 466 BeginWriteAttribute("value", " value=\"", 18989, "\"", 19007, 1); 467 WriteAttributeValue("", 18997, variantId, 18997, 10, false); 468 EndWriteAttribute(); 469 WriteLiteral(">\n\t\t\t<button type=\"button\" onmouseover=\"swift.PageUpdater.Update(event)\" onclick=\"swift.PageUpdater.Update(event)\""); 470 BeginWriteAttribute("class", " class=\"", 19122, "\"", 19238, 9); 471 WriteAttributeValue("", 19130, "btn", 19130, 3, true); 472 WriteAttributeValue(" ", 19133, "nav-link", 19134, 9, true); 473 WriteAttributeValue(" ", 19142, "p-2", 19143, 4, true); 474 WriteAttributeValue(" ", 19146, "text-nowrap", 19147, 12, true); 475 WriteAttributeValue(" ", 19158, "border-0", 19159, 9, true); 476 WriteAttributeValue(" ", 19167, "swift_open-preferences-modal", 19168, 29, true); 477 WriteAttributeValue(" ", 19196, linkFontSize, 19197, 13, false); 478 WriteAttributeValue(" ", 19210, linkFontWeight, 19211, 15, false); 479 WriteAttributeValue(" ", 19226, linkCasing, 19227, 11, false); 480 EndWriteAttribute(); 481 WriteLiteral(" data-bs-toggle=\"modal\" data-bs-target=\"#PreferencesModal\">\n"); 482 RenderNavigationItem(node, preferencesType);WriteLiteral("\t\t\t</button>\n\t\t</form>\n\t</li>\n"); 483 } 484 485 void RenderIcon(string icon, string iconSize) { if (Path.GetExtension(icon).ToLower() == ".svg" && !icon.ToLower().Contains("none")) { string iconPath = Dynamicweb.Context.Current.Server.MapPath(icon); WriteLiteral("\t\t<span"); 486 BeginWriteAttribute("class", " class=\"", 19633, "\"", 19650, 1); 487 WriteAttributeValue("", 19641, iconSize, 19641, 9, false); 488 EndWriteAttribute(); 489 WriteLiteral(">\n\t\t\t"); 490 Write(ReadFile(iconPath)); 491 WriteLiteral("\n\t\t</span>\n"); 492 } } 493 } 494 } 495 #pragma warning restore 1591 496
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.Navigation.NavigationTreeViewModel> @using Dynamicweb @using System.IO @using System.Text.RegularExpressions @{ string navOrientation = Model.Parameters["navOrientation"].ToString(); string navAlignment = Model.Parameters["navAlignment"].ToString(); string theme = !string.IsNullOrEmpty(Model.Parameters["theme"].ToString()) ? Model.Parameters["theme"].ToString() : ""; } <nav class="d-none d-lg-flex py-0 @navOrientation @navAlignment desktop"> @{<text>@{RenderFirstLevelNodes(Model.Nodes, theme, navOrientation);}</text>} </nav> <nav class="d-flex d-lg-none py-0 @navOrientation @navAlignment mobile"> @{<text>@{RenderFirstLevelNodesMobile(Model.Nodes, navOrientation);}</text>} </nav> @functions { 2 void RenderFirstLevelNodes(IEnumerable<Dynamicweb.Frontend.Navigation.NavigationTreeNodeViewModel> nodes, string theme, string navOrientation) { string linkFontSize = Model.Parameters["LinkFontSize"].ToString(); string linkFontWeight = Model.Parameters["LinkFontWeight"].ToString(); string linkCasing = Model.Parameters["LinkCasing"].ToString(); bool showOnlyFirstNavLevel = Model.Parameters.ContainsKey("ShowOnlyFirstNavLevel") ? Convert.ToBoolean(Model.Parameters["ShowOnlyFirstNavLevel"].ToString()) : false; string menuId = Model.Parameters.ContainsKey("menu-id") ? $"menu_{Model.Parameters["menu-id"].ToString().ToLower()}" : string.Empty; <ul class="nav flex-nowrap @(navOrientation == "vertical" ? "flex-column" : navOrientation)"> @foreach (var node in nodes) { var page = Dynamicweb.Content.Services.Pages.GetPage(node.PageId); string pageType = page.ItemType; string preferencesLayout = page.Item?["PreferencesLayout"] != null ? page.Item["PreferencesLayout"].ToString() : ""; string preferencesType = "language"; bool countrySelector = page.Item?["CountrySelector"] != null ? Convert.ToBoolean(page.Item["CountrySelector"].ToString()) : false; bool languageSelector = page.Item?["LanguageSelector"] != null ? Convert.ToBoolean(page.Item["LanguageSelector"].ToString()) : false; bool currencySelector = page.Item?["CurrencySelector"] != null ? Convert.ToBoolean(page.Item["CurrencySelector"].ToString()) : false; string dropdownAttributes = string.Empty; string dropdownClasses = string.Empty; var hasChildren = node.Nodes.Count() > 0 || pageType == "Swift_SignIn"; if(hasChildren && !showOnlyFirstNavLevel) { dropdownAttributes = hasChildren ? " role=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\" data-bs-toggle=\"dropdown\" data-bs-offset=\"0,0\"" : ""; } string nodeId = !string.IsNullOrEmpty(node.GroupId) ? "Navigation_" + node.GroupId + "_" + Pageview.CurrentParagraph.ID : "Navigation_Page_Desktop_" + node.PageId.ToString() + "_" + Pageview.CurrentParagraph.ID; if (pageType != "Swift_Preferences") { <li class="nav-item@(hasChildren ? " dropdown" : "")"> @if (node.IsClickable) { <a href="@node.Link" class="p-2 nav-link text-nowrap text-decoration-underline-hover @linkFontSize @linkFontWeight @linkCasing@(node.IsActive ? " active" : "")@(hasChildren ? " dropdown-toggle" : "")" @dropdownAttributes @(node.IsActive ? " aria-current='page'" : "") id="@nodeId"> @{<text>@{RenderNavigationItem(node);}</text>} </a> } else { <span class="p-2 nav-link text-nowrap @linkFontSize @linkFontWeight @linkCasing@(hasChildren ? " dropdown-toggle " : "")" @dropdownAttributes id="@nodeId"> @{<text>@{RenderNavigationItem(node);}</text>} </span> } @if (hasChildren) { if (!showOnlyFirstNavLevel) { <ul class="dropdown-menu @(theme)" aria-labelledby="@nodeId"> @foreach (var subnode in node.Nodes)//Standard pages { nodeId = !string.IsNullOrEmpty(subnode.GroupId) ? "Navigation_" + subnode.GroupId + "_" + Pageview.CurrentParagraph.ID : "Navigation_Page_" + subnode.PageId.ToString() + "_" + Pageview.CurrentParagraph.ID; <li> @if (subnode.IsClickable) { <a href="@subnode.Link" class="dropdown-item py-2 text-decoration-underline-hover @linkFontSize @linkFontWeight @linkCasing" @(subnode.IsActive ? " aria-current='page'" : "") id="@nodeId">@subnode.Name</a> } else { <span class="dropdown-item py-2 @linkFontSize @linkFontWeight @linkCasing" @(subnode.IsActive ? " aria-current='page'" : "") id="@nodeId">@subnode.Name</span> } </li> } @if (pageType == "Swift_SignIn") //Sign out link { if (Pageview.User != null) { string link = "/Admin/Public/ExtranetLogoff.aspx?redirect=no"; <li><hr class="dropdown-divider"></li> if (Dynamicweb.Security.UserManagement.User.GetCurrentSecondaryUser() != null) { <li> <a href="Default.aspx?ID=@(Pageview.ID)&DwExtranetRemoveSecondaryUser=1" class="dropdown-item py-2 text-decoration-underline-hover swift_sign-out-as-customer-link @linkFontSize @linkFontWeight @linkCasing" id="SignInButton_@Pageview.CurrentParagraph.ID">@Translate("Sign out as a customer")</a> </li> } <li> <a href="@link" class="dropdown-item py-2 text-decoration-underline-hover swift_sign-out-link @linkFontSize @linkFontWeight @linkCasing">@Translate("Sign out")</a> </li> } } </ul> } } </li> } else { if (preferencesLayout == "modal") { string groupId = Dynamicweb.Context.Current.Request["GroupID"] != null ? Dynamicweb.Context.Current.Request["GroupID"].ToString() : ""; string productId = Dynamicweb.Context.Current.Request["ProductID"] != null ? Dynamicweb.Context.Current.Request["ProductID"].ToString() : ""; string variantId = Dynamicweb.Context.Current.Request["VariantID"] != null ? Dynamicweb.Context.Current.Request["VariantID"].ToString() : ""; <li class="nav-item@(hasChildren ? " dropdown" : "")"> <form action="/Default.aspx?ID=@node.PageId" data-response-target-element="PreferencesModalContent" data-layout-template="Swift_Preferences.cshtml" data-preloader="inline"> <input type="hidden" name="CurrentPageID" value="@Pageview.ID"> <input type="hidden" name="GroupID" value="@groupId"> <input type="hidden" name="ProductID" value="@productId"> <input type="hidden" name="VariantID" value="@variantId"> <button type="button" onmouseover="swift.PageUpdater.Update(event)" onclick="swift.PageUpdater.Update(event)" class="btn nav-link p-2 text-nowrap border-0 swift_open-preferences-modal @linkFontSize @linkFontWeight @linkCasing" data-bs-toggle="modal" data-bs-target="#PreferencesModal" id="OpenPreferences_@Pageview.CurrentParagraph.ID"> @if (languageSelector) { {<text>@{RenderNavigationItem(node, "language");}</text>} } else { {<text>@{RenderNavigationItem(node);}</text>} } </button> </form> </li> } else { var ecomCountries = Dynamicweb.Ecommerce.Services.Countries.GetCountries(); var currencies = Dynamicweb.Ecommerce.Services.Currencies.GetAllCurrencies(); if (languageSelector) { List<Dynamicweb.Content.Page> languages = new List<Dynamicweb.Content.Page>(); if (Pageview.Page.Area.IsMaster) { languages.Add(Pageview.Page); if (Pageview.Page.Languages != null) { foreach (var language in Pageview.Page.Languages) { if (language.Area.Active == true) { languages.Add(language); } } } } else { languages.Add(Pageview.Page.MasterPage); if (Pageview.Page.MasterPage != null) { if (Pageview.Page.MasterPage.Languages != null) { foreach (var language in Pageview.Page.MasterPage.Languages) { if (language.Area.Active == true) { languages.Add(language); } } } } } if (languages.Count > 1) { preferencesType = "language"; {<text>@{RenderPreferencesDropdown(node, preferencesType, linkFontSize, linkFontWeight, linkCasing, theme);}</text>} } } if (countrySelector && ecomCountries.Count > 1) { preferencesType = "country"; {<text>@{RenderPreferencesDropdown(node, preferencesType, linkFontSize, linkFontWeight, linkCasing, theme);}</text>} } if (currencySelector && currencies.Count() > 1) { preferencesType = "currency"; {<text>@{RenderPreferencesDropdown(node, preferencesType, linkFontSize, linkFontWeight, linkCasing, theme);}</text>} } } } } </ul> } 3 } @functions { 4 void RenderFirstLevelNodesMobile(IEnumerable<Dynamicweb.Frontend.Navigation.NavigationTreeNodeViewModel> nodes, string navOrientation) { string linkFontSize = Model.Parameters["LinkFontSize"].ToString(); string linkFontWeight = Model.Parameters["LinkFontWeight"].ToString(); string linkCasing = Model.Parameters["LinkCasing"].ToString(); <div class="navbar-nav @(navOrientation == "vertical" ? "flex-column" : navOrientation)"> @foreach (var node in nodes) { string nodeId = !string.IsNullOrEmpty(node.GroupId) ? "Navigation_" + node.GroupId + "_" + Pageview.CurrentParagraph.ID : "Navigation_Page_Mobile_" + node.PageId.ToString() + "_" + Pageview.CurrentParagraph.ID; var hasChildren = node.Nodes.Count() > 0; var page = Dynamicweb.Content.Services.Pages.GetPage(node.PageId); string pageType = page.ItemType; if (pageType != "Swift_Preferences") { if (node.IsClickable) { <a id="@nodeId" class="nav-link p-2 text-nowrap @linkFontWeight @linkCasing @linkFontSize @(node.IsActive ? " active" : "")" href="@node.Link" title="@node.Name"> @{<text>@{RenderNavigationItem(node);}</text>} </a> } else { <span class="nav-link p-2 text-nowrap @linkFontWeight @linkCasing @linkFontSize" title="@node.Name"> @{<text>@{RenderNavigationItem(node);}</text>} </span> } } else { bool languageSelector = page.Item?["LanguageSelector"] != null ? Convert.ToBoolean(page.Item["LanguageSelector"].ToString()) : false; string groupId = Dynamicweb.Context.Current.Request["GroupID"] != null ? Dynamicweb.Context.Current.Request["GroupID"].ToString() : ""; string productId = Dynamicweb.Context.Current.Request["ProductID"] != null ? Dynamicweb.Context.Current.Request["ProductID"].ToString() : ""; string variantId = Dynamicweb.Context.Current.Request["VariantID"] != null ? Dynamicweb.Context.Current.Request["VariantID"].ToString() : ""; <div class="nav-item"> <form action="/Default.aspx?ID=@node.PageId" data-response-target-element="PreferencesModalContent" data-layout-template="Swift_Preferences.cshtml" data-preloader="inline"> <input type="hidden" name="Layout" value="modal"> <input type="hidden" name="CurrentPageID" value="@Pageview.ID"> <input type="hidden" name="GroupID" value="@groupId"> <input type="hidden" name="ProductID" value="@productId"> <input type="hidden" name="VariantID" value="@variantId"> <button type="button" onmouseover="swift.PageUpdater.Update(event)" onclick="swift.PageUpdater.Update(event)" class="btn nav-link p-2 text-nowrap border-0 swift_open-preferences-modal @linkFontSize @linkFontWeight @linkCasing" data-bs-toggle="modal" data-bs-target="#PreferencesModal"> @if (languageSelector) { {<text>@{RenderNavigationItem(node, "language");}</text>} } else { {<text>@{RenderNavigationItem(node);}</text>} } </button> </form> </div> } } </div> } 5 } @functions { 6 void RenderNavigationItem(Dynamicweb.Frontend.Navigation.NavigationTreeNodeViewModel node, string preferencesType = "") { var page = Dynamicweb.Content.Services.Pages.GetPage(node.PageId); string pageType = page.ItemType; string linkFontSize = Model.Parameters["LinkFontSize"].ToString(); string layout = Model?.Parameters["Layout"].ToString(); string icon = page.Item?["Icon"] != null ? page.Item["Icon"].ToString() : ""; string iconSize = "icon-3"; if (linkFontSize == "fs-7") { iconSize = "icon-2"; } if (linkFontSize == "fs-5") { iconSize = "icon-4"; } if (page.PropertyItem != null) { icon = page.PropertyItem["Icon"] != null ? page.PropertyItem["Icon"].ToString() : ""; } if (pageType == "Swift_Cart") //Mini cart { string cartId = ""; if (page.Item["ContextCart"] != null) { cartId = !string.IsNullOrEmpty(page.Item["ContextCart"].ToString()) ? "ID=\"Cart_" + page.Item["ContextCart"].ToString() + "\"" : ""; } string jsCartClass = string.IsNullOrEmpty(cartId) ? "js-cart-qty" : ""; double totalProducts = 0; Dynamicweb.Ecommerce.Common.Context.CartContext = null; if (page.Item["ContextCart"] != null) { var orderContext = Dynamicweb.Ecommerce.Services.OrderContexts.GetOrderContextById(page.Item["ContextCart"].ToString()); Dynamicweb.Ecommerce.Common.Context.CartContext = orderContext; } if (Dynamicweb.Ecommerce.Common.Context.Cart != null) { bool renderOrderlineCountInsteadOfProductCount = page.Item["RenderOrderlineCountInsteadOfProductCount"] != null ? Convert.ToBoolean(page.Item["RenderOrderlineCountInsteadOfProductCount"]) : false; if (!renderOrderlineCountInsteadOfProductCount) { totalProducts = Dynamicweb.Ecommerce.Common.Context.Cart.GetParentProductLineQuantityCount(Dynamicweb.Ecommerce.Common.Context.Cart.OrderLines); } else { totalProducts = Dynamicweb.Ecommerce.Common.Context.Cart.GetParentOrderLineCount(Dynamicweb.Ecommerce.Common.Context.Cart.OrderLines); } } switch (layout) { case "linksOnly": <span class="align-middle">@node.Name</span> <span class="@jsCartClass mini-cart-quantity align-middle" @cartId>(@totalProducts)</span> break; case "iconsOnly": {<text>@{RenderIcon(icon, iconSize);}</text>} <span class="@jsCartClass mini-cart-quantity align-middle" @cartId>(@totalProducts)</span> break; case "iconsAndLinks": {<text>@{RenderIcon(icon, iconSize);}</text>} <span class="@jsCartClass mini-cart-quantity align-middle" @cartId>(@totalProducts)</span> <span class="align-middle">@node.Name</span> break; case "linksAndIcons": <span class="align-middle">@node.Name</span> <span class="@jsCartClass mini-cart-quantity align-middle" @cartId>(@totalProducts)</span> {<text>@{RenderIcon(icon, iconSize);}</text>} break; } } else { string name = node.Name; if (preferencesType == "country") { //Country name = Translate("Deliver to") + ": " + Dynamicweb.Ecommerce.Common.Context.Country.GetName(Dynamicweb.Ecommerce.Common.Context.LanguageID); } if (preferencesType == "language") { //Languange string iconFolder = "/Files/FlagIcons/"; icon = iconFolder + Pageview.Area.CultureInfo.Name.ToLower() + ".svg"; Regex reg = new Regex(@"\(([^\)]+)\)"); name = reg.Replace(Pageview.Area.CultureInfo.DisplayName, ""); layout = layout == "linksOnly" ? "iconsAndLinks" : layout; bool hideIcon = page.Item?["HideIcon"] != null ? Convert.ToBoolean(page.Item["HideIcon"].ToString()) : false; bool hideName = page.Item?["HideName"] != null ? Convert.ToBoolean(page.Item["HideName"].ToString()) : false; layout = hideIcon ? "linksOnly" : layout; layout = hideName ? "iconsOnly" : layout; } if (preferencesType == "currency") { //Country name = Dynamicweb.Ecommerce.Common.Context.Currency.Code; } switch (layout) { case "linksOnly": <span class="align-middle">@name</span> break; case "iconsOnly": <span class="visually-hidden">@name</span> {<text>@{RenderIcon(icon, iconSize);}</text>} break; case "iconsAndLinks": {<text>@{RenderIcon(icon, iconSize);}</text>} <span class="align-middle">@name</span> break; case "linksAndIcons": <span class="align-middle">@name</span> {<text>@{RenderIcon(icon, iconSize);}</text>} break; } } } 7 } @functions { 8 void RenderPreferencesDropdown(Dynamicweb.Frontend.Navigation.NavigationTreeNodeViewModel node, string preferencesType, string linkFontSize, string linkFontWeight, string linkCasing, string theme) { string groupId = Dynamicweb.Context.Current.Request["GroupID"] != null ? Dynamicweb.Context.Current.Request["GroupID"].ToString() : ""; string productId = Dynamicweb.Context.Current.Request["ProductID"] != null ? Dynamicweb.Context.Current.Request["ProductID"].ToString() : ""; string variantId = Dynamicweb.Context.Current.Request["VariantID"] != null ? Dynamicweb.Context.Current.Request["VariantID"].ToString() : ""; string nodeId = !string.IsNullOrEmpty(node.GroupId) ? "PreferencesLink_" + node.GroupId + "_" + Pageview.CurrentParagraph.ID : "PreferencesLink_" + node.PageId.ToString() + "_" + Pageview.CurrentParagraph.ID; <li class="nav-item dropdown"> <form class="d-none d-lg-block" action="/Default.aspx?ID=@node.PageId" data-response-target-element="@(preferencesType)Dropdown_@Pageview.CurrentParagraph.ID" data-layout-template="Swift_Preferences.cshtml" data-preloader="inline"> <input type="hidden" name="Type" value="@preferencesType"> <input type="hidden" name="CurrentPageID" value="@Pageview.ID"> <input type="hidden" name="GroupID" value="@groupId"> <input type="hidden" name="ProductID" value="@productId"> <input type="hidden" name="VariantID" value="@variantId"> <input type="hidden" name="FontSize" value="@linkFontSize"> <input type="hidden" name="FontWeight" value="@linkFontWeight"> <input type="hidden" name="Casing" value="@linkCasing"> <a id="@nodeId" onmouseover="swift.PageUpdater.Update(event)" onclick="swift.PageUpdater.Update(event)" class="nav-link p-2 text-nowrap text-decoration-underline-hover @linkFontSize @linkFontWeight @linkCasing@(node.IsActive ? " active" : "") dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" @(node.IsActive ? " aria-current='page'" : "")> @{<text>@{RenderNavigationItem(node, preferencesType);}</text>} </a> <ul class="dropdown-menu @(theme)" id="@(preferencesType)Dropdown_@Pageview.CurrentParagraph.ID"> @* The content here comes from an external request *@ </ul> </form> <form class="d-block d-lg-none" action="/Default.aspx?ID=@node.PageId" data-response-target-element="PreferencesModalContent" data-layout-template="Swift_Preferences.cshtml" data-preloader="inline"> <input type="hidden" name="Layout" value="modal"> <input type="hidden" name="CurrentPageID" value="@Pageview.ID"> <input type="hidden" name="GroupID" value="@groupId"> <input type="hidden" name="ProductID" value="@productId"> <input type="hidden" name="VariantID" value="@variantId"> <button type="button" onmouseover="swift.PageUpdater.Update(event)" onclick="swift.PageUpdater.Update(event)" class="btn nav-link p-2 text-nowrap border-0 swift_open-preferences-modal @linkFontSize @linkFontWeight @linkCasing" data-bs-toggle="modal" data-bs-target="#PreferencesModal"> @{<text>@{RenderNavigationItem(node, preferencesType);}</text>} </button> </form> </li> } 9 } @functions { 10 void RenderIcon(string icon, string iconSize) { if (Path.GetExtension(icon).ToLower() == ".svg" && !icon.ToLower().Contains("none")) { string iconPath = Dynamicweb.Context.Current.Server.MapPath(icon); <span class="@iconSize"> @ReadFile(iconPath) </span> } } 11 }
Brug kontakt formularen og vi prøver at svare inden for 24 timer.
Du er også velkommen til at ringe til os på +45 70252090
Vi og vores partnere bruger teknologier, inklusiv cookies, til at indsamle information om dig til forskellige formål, inkluderet:
Ved at klikke 'Acceptér Alle' giver su samtykke til disse formål. Du kan også vælge at bestemme hvilke formål du vil give samtykke til med valgmulighederne her under, og klikke 'Acceptér valgte'.
Du kan læse mere om vores brug af cookies og andre teknologier, samt vores indsamling og processering af personlig data, ved at klikke her:
Læs mere om Cookies Vores fortrolighedspolitik