Maybelline New York Official Store

Followers
1.72K
Rating
3.5 Out of 5 (5.2k Rating)
Error executing template "Designs/Rapido/UserManagement/CreateProfile/CreateAccount.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_6ece7a750020458d812c98638ab6d74b.b__3_0(TextWriter __razor_helper_writer) in C:\inetpub\wwwroot\Website\LasanLIVE\Solution\rapidofull-20200702-files\Files\Templates\Designs\Rapido\UserManagement\CreateProfile\CreateAccount.cshtml:line 516
   at CompiledRazorTemplates.Dynamic.RazorEngine_6ece7a750020458d812c98638ab6d74b.b__1_0(TextWriter __razor_helper_writer) in C:\inetpub\wwwroot\Website\LasanLIVE\Solution\rapidofull-20200702-files\Files\Templates\Designs\Rapido\UserManagement\CreateProfile\CreateAccount.cshtml:line 47
   at RazorEngine.Templating.TemplateWriter.ToString()
   at System.Lazy`1.CreateValue()
   at System.Lazy`1.LazyInitValue()
   at CompiledRazorTemplates.Dynamic.RazorEngine_6ece7a750020458d812c98638ab6d74b.<>c__DisplayClass5_0.b__0(TextWriter __razor_helper_writer) in C:\inetpub\wwwroot\Website\LasanLIVE\Solution\rapidofull-20200702-files\Files\Templates\Designs\Rapido\UserManagement\CreateProfile\CreateAccount.cshtml:line 697
   at CompiledRazorTemplates.Dynamic.RazorEngine_6ece7a750020458d812c98638ab6d74b.<>c__DisplayClass4_0.b__0(TextWriter __razor_helper_writer) in C:\inetpub\wwwroot\Website\LasanLIVE\Solution\rapidofull-20200702-files\Files\Templates\Designs\Rapido\UserManagement\CreateProfile\CreateAccount.cshtml:line 607
   at CompiledRazorTemplates.Dynamic.RazorEngine_6ece7a750020458d812c98638ab6d74b.<>c__DisplayClass5_0.b__0(TextWriter __razor_helper_writer) in C:\inetpub\wwwroot\Website\LasanLIVE\Solution\rapidofull-20200702-files\Files\Templates\Designs\Rapido\UserManagement\CreateProfile\CreateAccount.cshtml:line 730
   at CompiledRazorTemplates.Dynamic.RazorEngine_6ece7a750020458d812c98638ab6d74b.<>c__DisplayClass4_0.b__0(TextWriter __razor_helper_writer) in C:\inetpub\wwwroot\Website\LasanLIVE\Solution\rapidofull-20200702-files\Files\Templates\Designs\Rapido\UserManagement\CreateProfile\CreateAccount.cshtml:line 607
   at CompiledRazorTemplates.Dynamic.RazorEngine_6ece7a750020458d812c98638ab6d74b.Execute() in C:\inetpub\wwwroot\Website\LasanLIVE\Solution\rapidofull-20200702-files\Files\Templates\Designs\Rapido\UserManagement\CreateProfile\CreateAccount.cshtml:line 2680
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2 @using System.Web; 3 @using System.IO; 4 @using Dynamicweb.Rapido.Blocks.Components.General 5 @using Dynamicweb.Rapido.Blocks; 6 7 <link rel="stylesheet" id="igniteCss" type="text/css" href="/Files/Templates/Designs/Rapido/css/ignite/jquery-min.css?v=1.0"> 8 <script src="/Files/Templates/Designs/Rapido/js/jquery.js" type="text/javascript"></script> 9 <script src="/Files/Templates/Designs/Rapido/js/jquery-ui.js" type="text/javascript"></script> 10 <script src="https://www.google.com/recaptcha/api.js" async defer></script> 11 12 @functions { 13 BlocksPage createAccountPage = BlocksPage.GetBlockPage("CreateAccount"); 14 } 15 16 @{ 17 Block createAccountContainer = new Block 18 { 19 Id = "CreateAccountContainer", 20 SortId = 10, 21 BlocksList = new List<Block> { 22 new Block { 23 Id = "CreateAccountForm", 24 Template = RenderCreateAccountForm(), 25 SortId = 20 26 } 27 } 28 }; 29 30 createAccountPage.Add(createAccountContainer); 31 } 32 33 @helper RenderCreateAccountForm() 34 { 35 string SendSMSPageId = GetPageIdByNavigationTag("CreateAccountSMS").ToString(); 36 string ProfileCompletedPageId = GetPageIdByNavigationTag("ProfileCompleted").ToString(); 37 string createAccountPageId = GetPageIdByNavigationTag("CreateAccount").ToString(); 38 <link rel="stylesheet" href="/Files/Templates/Designs/Rapido/css/bootstrap.min.css"> 39 <script src="/Files/Templates/Designs/Rapido/js/bootstrap.min.js"></script> 40 41 <div class="tab"> 42 <button class="tablinks" onclick="openForm(event, 'EmailForm')" id="defaultOpen">@Translate("Create Account with Email")</button> 43 <button class="tablinks" onclick="openForm(event, 'PhoneForm')">@Translate("Create Account with Phone")</button> 44 </div> 45 <input type ="hidden" value="" id="type"/> 46 <div id="EmailForm" class="tabcontent"> 47 @RenderCreateAccountWithEmail() 48 </div> 49 50 <div id="PhoneForm" class="tabcontent"> 51 @RenderCreateAccountWithPhone() 52 </div> 53 54 <text> 55 <script> 56 $(document).ready(function(){ 57 var str = "[a-z0-9._%+-]+@@[a-z0-9.-]+\.[a-z]{2,}$"; 58 $("#UserManagement_Form_Email").attr("pattern",str); 59 }); 60 function openForm(evt, formName) { 61 if(formName == "PhoneForm" ){ 62 $("#type").val("phone"); 63 $(".submitter").addClass("disabled"); 64 $(".submitter").attr("disabled","true"); 65 $("#pwdNotMatch").hide(); 66 } 67 else{ 68 $("#type").val("email"); 69 $("#pwdNotMatch").hide(); 70 $("#email-error").hide(); 71 $("#UserManagement_Form_Email").val(""); 72 $(".submitter").removeClass("disabled"); 73 $(".submitter").removeAttr("disabled"); 74 } 75 var i, tabcontent, tablinks; 76 tabcontent = document.getElementsByClassName("tabcontent"); 77 for (i = 0; i < tabcontent.length; i++) { 78 tabcontent[i].style.display = "none"; 79 } 80 tablinks = document.getElementsByClassName("tablinks"); 81 for (i = 0; i < tablinks.length; i++) { 82 tablinks[i].className = tablinks[i].className.replace(" active", ""); 83 } 84 document.getElementById(formName).style.display = "block"; 85 evt.currentTarget.className += " active"; 86 } 87 document.getElementById("defaultOpen").click(); 88 89 $( function() { 90 $("#DateofBirth").attr("autocomplete", "off"); 91 $("#DateofBirth").datepicker({ 92 dateFormat: 'dd M yy', 93 changeMonth: true, 94 yearRange: '1900:+10', 95 changeYear: true 96 }); 97 $("#DateofBirthMobile").attr("autocomplete", "off"); 98 $("#DateofBirthMobile").datepicker({ 99 dateFormat: 'dd M yy', 100 changeMonth: true, 101 yearRange: '1900:+10', 102 changeYear: true 103 }); 104 }); 105 106 function splitMonthMobileRegister() { 107 var input=document.getElementById("DateofBirthMobile").value; 108 var fields = input.split(' '); 109 var name = fields[1]; 110 document.getElementById("BirthMonthMobile").value= name; 111 } 112 function splitMonthEmailResigter(event) { 113 var email = document.getElementById("UserManagement_Form_Email").value; 114 var pattern = /^(([^<>()[\]\\.,;:\s@@\"]+(\.[^<>()[\]\\.,;:\s@@\"]+)*)|(\".+\"))@@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 115 116 var input=document.getElementById("DateofBirth").value; 117 var fields = input.split(' '); 118 var name = fields[1]; 119 document.getElementById("BirthMonth").value =name; 120 var emailRegex = /^(([^<>()[\]\\.,;:\s@@\"]+(\.[^<>()[\]\\.,;:\s@@\"]+)*)|(\".+\"))@@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 121 122 if (!email || typeof email !== "string" || !email.match(emailRegex)) { 123 document.body.scrollTop = 0; 124 document.documentElement.scrollTop = 0; 125 $("#email-error").show(); 126 return false; // STOP HERE 127 } 128 129 // --- CAPTCHA VALIDATION --- 130 var response = grecaptcha.getResponse(); 131 if (response.length == 0) { 132 document.getElementById("errorCaptcha").innerHTML = '@Translate("Please verify you are human!")'; 133 return false; // MUST STOP HERE TOO 134 } 135 136 // --- ALL VALID → PROCEED --- 137 Buttons.LockButton(event); 138 return true; 139 140 } 141 142 $('#SendCodeBtn').on('click', function(e) { 143 e.preventDefault(); 144 SendCode(); 145 var btn = $(this); 146 btn.button('loading'); 147 setTimeout(function() { 148 btn.button('reset'); 149 $("#ResendCodeBtn").show(); 150 $("#SendCodeBtn").hide(); 151 }, 1000); 152 153 return false; 154 }); 155 function SendCode(){ 156 var phone = $("#Phone").val(); 157 if(phone.length > 11){ 158 $("#phone-len-error").show(); 159 } 160 else 161 { 162 $("#phone-len-error").hide(); 163 $.ajax({ 164 url: "/lasan-myanmar/send-sms-for-create-account?" + "phonenumber=+95" + phone.substring(1) + "&action=sendCode", 165 success: function(data){ 166 console.log(data); 167 if(data.message == "Error") 168 { 169 $("#phone-error").show(); 170 } 171 else 172 { 173 $("#phone-error").hide(); 174 $("#verifyCode").removeAttr("disabled"); 175 $("#pinId").val(data.message); 176 } 177 } 178 }); 179 } 180 } 181 $('#ResendCodeBtn').on('click', function(e) { 182 e.preventDefault(); 183 ResendCode(); 184 var btn = $(this); 185 btn.button('loading'); 186 setTimeout(function() { 187 btn.button('reset'); 188 }, 1500); 189 return false; 190 }); 191 function ResendCode(){ 192 var pinId = $("#pinId").val(); 193 var phone = $("#Phone").val(); 194 $.ajax({ 195 url: "/lasan-myanmar/send-sms-for-create-account?" + "pinId=" + pinId + "&action=resendCode", 196 success: function(data){ 197 if(data.message == "Error") 198 { 199 $("#phone-error").show(); 200 } 201 else 202 { 203 $("#phone-error").hide(); 204 $("#pinId").val(data.message); 205 } 206 } 207 }); 208 } 209 $('#verifyCode').on('click', function(e) { 210 e.preventDefault(); 211 VerifyCode(); 212 var btn = $(this); 213 btn.button('loading'); 214 setTimeout(function() { 215 btn.button('reset'); 216 }, 1000); 217 218 return false; 219 }); 220 221 function VerifyCode(){ 222 var pinId = $("#pinId").val(); 223 var phone = $("#Phone").val(); 224 var pinCode = $("#Code").val(); 225 $.ajax({ 226 url: "/lasan-myanmar/send-sms-for-create-account?" + "pinCode=" + pinCode + "&pinId="+ pinId + "&action=verify" , 227 success: function(data){ 228 if(data.message == "True") 229 { 230 $("#phone-error").hide(); 231 $(".submitter").removeClass("disabled"); 232 $(".submitter").removeAttr("disabled"); 233 $("#otp-error").hide(); 234 } 235 else 236 { 237 if(data.message.includes("expired")) 238 { 239 $("#ResendCodeBtn").hide(); 240 $("#SendCodeBtn").show(); 241 } 242 $("#otp-error").html(data.message); 243 $("#otp-error").show(); 244 } 245 } 246 }); 247 } 248 function recaptchaCallback() { 249 $("#errorCaptcha").html(""); 250 } 251 function FormSubmit(event) 252 { 253 if($("#Country").val() == "" || $("#State").val() == "" || $("#City").val() == "" || $("#Address").val() == "" ) 254 { 255 if($("#Country").val() == "") 256 { 257 $("#error-country").show(); 258 return false; 259 } 260 if($("#State").val() == "") 261 { 262 $("#error-state").show(); 263 return false; 264 } 265 if($("#City").val() == "") 266 { 267 $("#error-city").show(); 268 return false; 269 } 270 if($("#Address").val() == "") 271 { 272 $("#error-address").show(); 273 return false; 274 } 275 } 276 // --- CAPTCHA VALIDATION --- 277 var response = grecaptcha.getResponse(); 278 if (response.length === 0) { 279 $("#errorCaptcha").html("@Translate("Please verify you are human!")"); 280 return false; // STOP submitting 281 } 282 283 if($("#Password").val() == $("#PasswordConfirm").val()) 284 { 285 var name = $("#Name").val(); 286 var phone = $("#Phone").val(); 287 var password = $("#Password").val(); 288 var birthday = $("#DateofBirthMobile").val(); 289 var birthMonth = $("#BirthMonthMobile").val(); 290 291 var country = $("#Country").val(); 292 var state = $("#State").val(); 293 var city = $("#City").val(); 294 var address = $("#Address").val(); 295 296 $.ajax({ 297 url: "/lasan-myanmar/create-user-with-phone-number?" + "name=" + name + "&phone="+ phone + "&password=" + password + "&birthday="+ birthday+ "&birthMonth="+ birthMonth + "&country="+ country + "&state="+ state + "&city="+ city+ "&address="+ address , 298 success: function(data){ 299 if(data.message == "success") 300 { 301 location.href= "/Default.aspx?ID=@ProfileCompletedPageId"; 302 } 303 else if(data.message == "invalid") 304 { 305 $("#user-error").show(); 306 } 307 else 308 { 309 $("#phone-error").show(); 310 } 311 } 312 }); 313 } 314 else 315 { 316 $("#pwdNotMatch").show(); 317 return false; 318 } 319 } 320 </script> 321 322 <script> 323 $(document).ready(function() { 324 $('#UserManagement_Form_Country').append(new Option("Myanmar", "MM")); 325 $('#Country').append(new Option("Myanmar", "MM")); 326 var region = []; 327 $.ajax({ 328 url: "/lasan-myanmar/delivery-control-json", 329 type: "GET", 330 dataType: 'json', 331 success: function(data){ 332 for(var j =0; j< data[0].DeliveryControls.length ; j++){ 333 region[j]= [data[0].DeliveryControls[j].ToRegion]; 334 } 335 var flags = [], output = [], l = region.length, i; 336 for( i=0; i<l; i++) { 337 if( flags[region[i]]) continue; 338 flags[region[i]] = true; 339 output.push(region[i]); 340 } 341 for(var index =0; index < output.length ; index++){var stateHidden = $('#stateHidden').val(); 342 if(stateHidden == output[index]){ 343 $('#UserManagement_Form_State').append(new Option(output[index], output[index])); 344 $("#UserManagement_Form_State option[value='"+stateHidden+"']").prop('selected' , true); 345 346 $('#State').append(new Option(output[index], output[index])); 347 $("#State option[value='"+stateHidden+"']").prop('selected' , true); 348 } 349 else{ 350 $('#UserManagement_Form_State').append(new Option(output[index], output[index])); 351 $('#State').append(new Option(output[index], output[index])); 352 } 353 } 354 } 355 }).done(function(){ 356 if($('#UserManagement_Form_State').val() == null){ 357 $("#UserManagement_Form_City").attr('disabled', true); 358 }else{ 359 var state = $('#UserManagement_Form_State').val(); 360 $.ajax({ 361 url: "/lasan-myanmar/delivery-control-json?ToRegion="+state, 362 type: "GET", 363 dataType: 'json', 364 success: function(data){ 365 var city = $('#UserManagement_Form_City').val(); 366 $('#UserManagement_Form_City').empty(); 367 for(var i =0; i< data[0].DeliveryControls.length ; i++){ 368 $('#UserManagement_Form_City').append(new Option(data[0].DeliveryControls[i].ToTownship, data[0].DeliveryControls[i].ToTownship)); 369 $("#UserManagement_Form_City option[value='"+city+"']").prop('selected' , true); 370 } 371 } 372 }); 373 } 374 375 if($('#State').val() == null){ 376 $("#City").attr('disabled', true); 377 }else{ 378 var state1 = $('#State').val(); 379 $.ajax({ 380 url: "/lasan-myanmar/delivery-control-json?ToRegion="+state1, 381 type: "GET", 382 dataType: 'json', 383 success: function(data){ 384 var city1 = $('#City').val(); 385 $('#City').empty(); 386 for(var i =0; i< data[0].DeliveryControls.length ; i++){ 387 $('#City').append(new Option(data[0].DeliveryControls[i].ToTownship, data[0].DeliveryControls[i].ToTownship)); 388 $("#City option[value='"+city1+"']").prop('selected' , true); 389 } 390 } 391 }); 392 } 393 }); 394 395 }); 396 397 $('#UserManagement_Form_State').on('change', function() { 398 var state = $('#UserManagement_Form_State').val(); 399 $("#UserManagement_Form_City").attr('disabled', false); 400 $("#UserManagement_Form_City").empty(); 401 $.ajax({ 402 url: "/lasan-myanmar/delivery-control-json?ToRegion="+state, 403 type: "GET", 404 dataType: 'json', 405 success: function(data){ 406 for(var i =0; i< data[0].DeliveryControls.length ; i++){ 407 $('#UserManagement_Form_City').append(new Option(data[0].DeliveryControls[i].ToTownship, data[0].DeliveryControls[i].ToTownship)); 408 } 409 } 410 }); 411 }); 412 $('#State').on('change', function() { 413 var state1 = $('#State').val(); 414 $("#City").attr('disabled', false); 415 $("#City").empty(); 416 $.ajax({ 417 url: "/lasan-myanmar/delivery-control-json?ToRegion="+state1, 418 type: "GET", 419 dataType: 'json', 420 success: function(data){ 421 for(var i =0; i< data[0].DeliveryControls.length ; i++){ 422 $('#City').append(new Option(data[0].DeliveryControls[i].ToTownship, data[0].DeliveryControls[i].ToTownship)); 423 } 424 } 425 }); 426 }); 427 </script> 428 </text> 429 } 430 431 @helper RenderCreateAccountWithPhone() 432 { 433 string googleRecaptcha = Dynamicweb.Frontend.PageView.Current().AreaSettings.GetItem("Custom").GetValue("GoogleRecaptcha").ToString(); 434 <form> 435 <div class="form__field-group u-full-width dw-mod"> 436 <div class="u-full-width"> 437 <label for="phone" class="u-pull--left">@Translate("Phone Number") <span class="required dw-mod">*</span></label> 438 </div> 439 <div class="u-inline"> 440 <input type="hidden" id="pinId" value=""/> 441 <span id="countrycode" name="countrycode" type="text" value="+95" class="dw-mod u-inline phoneprefix">+95</span> 442 <input id="Phone" name="phone" type="number" value="" placeholder="09*********" maxlength="11" pattern="0[0-9]{9}" class="dw-mod u-inline width_53" style="min-width: 59% !important;"> 443 <button class="btn btn--primary dw-mod width_30" id="SendCodeBtn" data-loading-text="<i class='fa fa-spinner fa-spin'></i>Loading... ">@Translate("Send Code")</button> 444 <span class="btn btn--primary dw-mod width_30" id="ResendCodeBtn" style="display:none;" data-loading-text="<i class='fa fa-spinner fa-spin'></i>Loading... ">@Translate("Resend Code")</span> 445 </div> 446 <div id="phone-len-error" class="notification-message-error notification-message-clean clean u-full-width dw-mod" style="display:none;">@Translate("Wrong phone number.")</div> 447 <div id="phone-error" class="notification-message-error notification-message-clean clean u-full-width dw-mod" style="display:none;">@Translate("You have requested too many time. Please try again after 24hours.")</div> 448 <div id="user-error" class="notification-message-error notification-message-clean clean u-full-width dw-mod" style="display:none;">@Translate("Your phone number is already registered.")</div> 449 450 </div> 451 <div class="form__field-group u-full-width dw-mod"> 452 <div class="u-full-width"> 453 <label for="Code" class="u-pull--left">@Translate("OTP Code") <span class="required dw-mod">*</span></label> 454 </div> 455 <div class="u-inline"> 456 <input id="Code" type="number" value="" class="dw-mod u-inline width_68" > 457 <button class="btn btn--primary dw-mod width_30" disabled="true" id="verifyCode" data-loading-text="<i class='fa fa-spinner fa-spin'></i>Loading... ">@Translate("Verify")</button> 458 459 <div id="otp-error" class="notification-message-error notification-message-clean clean u-full-width dw-mod" style="display:none;">@Translate("Wrong OTP.")</div> 460 </div> 461 </div> 462 @Render(new HiddenField { Name = "birthMonth", Id = "BirthMonthMobile" }) 463 @Render(new TextField { Id = "DateofBirthMobile", Label = Translate("Birthday"), Placeholder = Translate("Please Select Date"), Required = true}) 464 @Render(new TextField { Id = "Name", Type = TextFieldType.Text, Label = Translate("Name"), CssClass = "u-full-width u-padding", Required = true }) 465 @Render(new TextField { Id = "Password", Type = TextFieldType.Password, Label = Translate("Password"), CssClass = "u-full-width u-padding" }) 466 <div class="notification-message-error notification-message-clean clean u-full-width dw-mod" id="pwdNotMatch" style="display:none;"> @Translate("The passwords do not match")</div> 467 @Render(new TextField { Id = "PasswordConfirm", Type = TextFieldType.Password, Label = Translate("Confirm Password"), CssClass = "u-full-width u-padding"}) 468 469 @Render(new SelectField 470 { 471 Id = "Country", 472 Name = "Country", 473 Label = Translate("Country")+"<span class='required'> *</span>", 474 Required = true, 475 ErrorMessage = GetString("UserManagement:User.Country.Input.Error"), 476 Value = GetString("UserManagement:User.Country"), 477 CssClass = "js-profile-view" 478 }) 479 <div class="notification-message-error notification-message-clean clean u-full-width dw-mod" id="error-country" style="display:none;"> @Translate("Please fill the Country.")</div> 480 481 @Render(new HiddenField { Id = "countryHidden", Name = "CountryCode", Value = "MM" }) 482 @Render(new SelectField 483 { 484 Id = "State", 485 Name = "State", 486 Label = Translate("State/Region") + "<span class='required'> *</span>", 487 Required = true, 488 ErrorMessage = GetString("UserManagement:User.UserAddress.State.Input.Error"), 489 Value = GetString("UserManagement:User.State") 490 }) 491 <div class="notification-message-error notification-message-clean clean u-full-width dw-mod" id="error-state" style="display:none;"> @Translate("Please fill the State/Region.")</div> 492 493 @Render(new SelectField 494 { 495 Id = "City", 496 Name = "City", 497 Label = Translate("City") + "<span class='required'> *</span>", 498 Required = true, 499 ErrorMessage = GetString("UserManagement:User.UserAddress.City.Input.Error"), 500 Value = GetString("UserManagement:User.City") 501 }) 502 <div class="notification-message-error notification-message-clean clean u-full-width dw-mod" id="error-city" style="display:none;"> @Translate("Please fill the City.")</div> 503 504 @Render(new TextField { Id = "Address", Name = "Address", Type = TextFieldType.Text, Label = Translate("Address"), Value = GetString("UserManagement:User.Address"), ErrorMessage = GetString("UserManagement:User.Address.Input.Error"), Required = true }) 505 <div class="notification-message-error notification-message-clean clean u-full-width dw-mod" id="error-address" style="display:none;"> @Translate("Please fill the Address.")</div> 506 <div class="form-group mob-rightcol--label signup-google__recaptcha"> 507 <div class="g-recaptcha" data-sitekey='@googleRecaptcha' data-callback="recaptchaCallback"></div> 508 <span class="required" id="errorCaptcha"></span> 509 </div> 510 @Render(new Button { Id = "btnsubmit", Title = Translate("Sign up now"), OnClick = " splitMonthMobileRegister(); FormSubmit(event); ", Disabled = true, CssClass = "u-full-width u-margin-top submitter u-padding" }) 511 </form> 512 } 513 514 @helper RenderCreateAccountWithEmail() 515 { 516 string googleRecaptcha = Dynamicweb.Frontend.PageView.Current().AreaSettings.GetItem("Custom").GetValue("GoogleRecaptcha").ToString(); 517 string forgotPasswordPageId = GetPageIdByNavigationTag("SignInPage").ToString() + "&LoginAction=Recovery"; 518 bool isEmailExist = GetString("UserManagement:User.Email.Input.Error") == "User with specified email exists."; 519 520 @GetString("UserManagement:User.FormStart") 521 @Render(new HiddenField { Name = "UserManagementForm", Value = "1" }); 522 @Render(new TextField { Id = "UserManagement_Form_Email", Name = "UserManagement_Form_Email", Type = TextFieldType.Email, Label = Translate("Email"), Value = GetString("UserManagement:User.Email"), Required = true, ErrorMessage = isEmailExist ? "You already exist in our system click below to reset your password" : GetString("UserManagement:User.Email.Input.Error") }); 523 <div id="email-error" class="notification-message-error notification-message-clean clean u-full-width dw-mod" style="display:none;">@Translate("Invalid Email Format.")</div> 524 if (isEmailExist) 525 { 526 @Render(new Link { Href = "/default.aspx?ID=" + forgotPasswordPageId, Title = Translate("Reset password"), ButtonLayout = ButtonLayout.Secondary }); 527 } 528 529 @Render(new TextField { Id = "DateofBirth", Name = "CustomField.AccessUser_AccessUser_Birthday", Label = Translate("Birthday"), Placeholder = Translate("Please Select Date"), Required = true}) 530 @Render(new HiddenField { Name = "birthMonth", Id = "BirthMonth" }) 531 @Render(new TextField { Id = "UserManagement_Form_Name", Name = "UserManagement_Form_Name", Type = TextFieldType.Text, Label = Translate("Name"), Value = GetString("UserManagement:User.Name"), Required = true, ErrorMessage = GetString("UserManagement:User.Name.Input.Error") }); 532 @Render(new TextField { Id = "UserManagement_Form_Phone", Name = "UserManagement_Form_Phone", Label = Translate("Phone"), Placeholder="09*********" , Value = GetString("UserManagement:User.Phone"), Required = true}); 533 534 @Render(new TextField { Id = "UserManagement_Form_NewPassword", Name = "UserManagement_Form_NewPassword", Type = TextFieldType.Password, Label = Translate("Password"), CssClass = "u-full-width", ErrorMessage = GetString("UserManagement:User.NewPassword.Input.Error") }); 535 <div class="notification-message-error notification-message-clean clean u-full-width dw-mod" id="pwdNotMatch" style="display:none;"> @Translate("The passwords do not match")</div> 536 537 @Render(new TextField { Id = "UserManagement_Form_NewPasswordConfirm", Name = "UserManagement_Form_NewPasswordConfirm", Type = TextFieldType.Password, Label = Translate("Confirm Password"), CssClass = "u-full-width u-padding", ErrorMessage = GetString("UserManagement:User.NewPasswordConfirm.Input.Error") }) 538 539 @Render(new SelectField 540 { 541 Id = "UserManagement_Form_Country", 542 Name = "UserManagement_Form_Country", 543 Label = Translate("Country")+"<span class='required'> *</span>", 544 Required = true, 545 ErrorMessage = GetString("UserManagement:User.Country.Input.Error"), 546 Value = GetString("UserManagement:User.Country"), 547 CssClass = "js-profile-view" 548 }); 549 550 @Render(new HiddenField { Id = "countryHidden", Name = "UserManagement_Form_CountryCode", Value = "MM" }); 551 @Render(new SelectField 552 { 553 Id = "UserManagement_Form_State", 554 Name = "UserManagement_Form_State", 555 Label = Translate("State/Region") + "<span class='required'> *</span>", 556 Required = true, 557 ErrorMessage = GetString("UserManagement:User.UserAddress.State.Input.Error"), 558 Value = GetString("UserManagement:User.State") 559 }); 560 @Render(new SelectField 561 { 562 Id = "UserManagement_Form_City", 563 Name = "UserManagement_Form_City", 564 Label = Translate("City") + "<span class='required'> *</span>", 565 Required = true, 566 ErrorMessage = GetString("UserManagement:User.UserAddress.City.Input.Error"), 567 Value = GetString("UserManagement:User.City") 568 }); 569 @Render(new TextField { Id = "UserManagement_Form_Address", Name = "UserManagement_Form_Address", Type = TextFieldType.Text, Label = Translate("Address"), Value = GetString("UserManagement:User.Address"), ErrorMessage = GetString("UserManagement:User.Address.Input.Error"), Required = true }); 570 <div class="form-group mob-rightcol--label signup-google__recaptcha"> 571 <div class="g-recaptcha" data-sitekey='@googleRecaptcha' data-callback="recaptchaCallback"></div> 572 <span class="required" id="errorCaptcha"></span> 573 </div> 574 @Render(new Button { Id = "submitter", ButtonType = ButtonType.Submit, Title = Translate("Sign up now"), OnClick = "return splitMonthEmailResigter(event); ", CssClass = "u-full-width u-margin-top submitter u-padding" }) 575 @GetString("UserManagement:User.FormEnd") 576 577 578 579 } 580 581 @using System.Text.RegularExpressions 582 @using System.Collections.Generic 583 @using System.Reflection 584 @using System.Web 585 @using System.Web.UI.HtmlControls 586 @using Dynamicweb.Rapido.Blocks.Components 587 @using Dynamicweb.Rapido.Blocks.Components.Articles 588 @using Dynamicweb.Rapido.Blocks.Components.Documentation 589 @using Dynamicweb.Rapido.Blocks 590 591 592 @*--- START: Base block renderers ---*@ 593 594 @helper RenderBlockList(List<Block> blocks) 595 { 596 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 597 blocks = blocks.OrderBy(item => item.SortId).ToList(); 598 599 foreach (Block item in blocks) 600 { 601 if (debug) { 602 <!-- Block START: @item.Id --> 603 } 604 605 if (item.Design == null) 606 { 607 @RenderBlock(item) 608 } 609 else if (item.Design.RenderType == RenderType.None) { 610 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 611 612 <div class="@cssClass dw-mod"> 613 @RenderBlock(item) 614 </div> 615 } 616 else if (item.Design.RenderType != RenderType.Hide) 617 { 618 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 619 620 if (!item.SkipRenderBlocksList) { 621 if (item.Design.RenderType == RenderType.Row) 622 { 623 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id"> 624 @RenderBlock(item) 625 </div> 626 } 627 628 if (item.Design.RenderType == RenderType.Column) 629 { 630 string hidePadding = item.Design.HidePadding ? "u-no-padding" : ""; 631 string size = item.Design.Size ?? "12"; 632 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size; 633 634 <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"> 635 @RenderBlock(item) 636 </div> 637 } 638 639 if (item.Design.RenderType == RenderType.Table) 640 { 641 <table class="table @cssClass dw-mod" id="Block__@item.Id"> 642 @RenderBlock(item) 643 </table> 644 } 645 646 if (item.Design.RenderType == RenderType.TableRow) 647 { 648 <tr class="@cssClass dw-mod" id="Block__@item.Id"> 649 @RenderBlock(item) 650 </tr> 651 } 652 653 if (item.Design.RenderType == RenderType.TableColumn) 654 { 655 <td class="@cssClass dw-mod" id="Block__@item.Id"> 656 @RenderBlock(item) 657 </td> 658 } 659 660 if (item.Design.RenderType == RenderType.CardHeader) 661 { 662 <div class="card-header @cssClass dw-mod"> 663 @RenderBlock(item) 664 </div> 665 } 666 667 if (item.Design.RenderType == RenderType.CardBody) 668 { 669 <div class="card @cssClass dw-mod"> 670 @RenderBlock(item) 671 </div> 672 } 673 674 if (item.Design.RenderType == RenderType.CardFooter) 675 { 676 <div class="card-footer @cssClass dw-mod"> 677 @RenderBlock(item) 678 </div> 679 } 680 } 681 else 682 { 683 @RenderBlock(item) 684 } 685 } 686 687 if (debug) { 688 <!-- Block END: @item.Id --> 689 } 690 } 691 } 692 693 @helper RenderBlock(Block item) 694 { 695 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 696 697 if (item.Template != null) 698 { 699 @BlocksPage.RenderTemplate(item.Template) 700 } 701 702 if (item.Component != null) 703 { 704 string customSufix = "Custom"; 705 string methodName = item.Component.HelperName; 706 707 ComponentBase[] methodParameters = new ComponentBase[1]; 708 methodParameters[0] = item.Component; 709 Type methodType = this.GetType(); 710 711 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix); 712 MethodInfo generalMethod = methodType.GetMethod(methodName); 713 714 try { 715 if (debug) { 716 <!-- Component: @methodName.Replace("Render", "") --> 717 } 718 @customMethod.Invoke(this, methodParameters).ToString(); 719 } catch { 720 try { 721 @generalMethod.Invoke(this, methodParameters).ToString(); 722 } catch(Exception ex) { 723 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex); 724 } 725 } 726 } 727 728 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList) 729 { 730 @RenderBlockList(item.BlocksList) 731 } 732 } 733 734 @*--- END: Base block renderers ---*@ 735 736 @using Dynamicweb.Rapido.Blocks.Components 737 @using Dynamicweb.Rapido.Blocks.Components.General 738 @using Dynamicweb.Rapido.Blocks 739 @using System.IO 740 741 @* Required *@ 742 @using Dynamicweb.Rapido.Blocks.Components 743 @using Dynamicweb.Rapido.Blocks.Components.General 744 @using Dynamicweb.Rapido.Blocks 745 746 747 @helper Render(ComponentBase component) 748 { 749 if (component != null) 750 { 751 @component.Render(this) 752 } 753 } 754 755 @* Components *@ 756 @using System.Reflection 757 @using Dynamicweb.Rapido.Blocks.Components.General 758 759 760 @* Component *@ 761 762 @helper RenderIcon(Icon settings) 763 { 764 if (settings != null) 765 { 766 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 767 768 if (settings.Name != null) 769 { 770 if (string.IsNullOrEmpty(settings.Label)) 771 { 772 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i> 773 } 774 else 775 { 776 if (settings.LabelPosition == IconLabelPosition.Before) 777 { 778 <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> 779 } 780 else 781 { 782 <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> 783 } 784 } 785 } 786 else if (!string.IsNullOrEmpty(settings.Label)) 787 { 788 @settings.Label 789 } 790 } 791 } 792 @using System.Reflection 793 @using Dynamicweb.Rapido.Blocks.Components.General 794 @using Dynamicweb.Rapido.Blocks.Components 795 @using Dynamicweb.Core 796 797 @* Component *@ 798 799 @helper RenderButton(Button settings) 800 { 801 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 802 { 803 Dictionary<string, string> attributes = new Dictionary<string, string>(); 804 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 805 if (settings.Disabled) { 806 attributes.Add("disabled", "true"); 807 classList.Add("disabled"); 808 } 809 810 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle)) 811 { 812 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 813 @RenderConfirmDialog(settings); 814 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true"; 815 } 816 817 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 818 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 819 if (!string.IsNullOrEmpty(settings.AltText)) 820 { 821 attributes.Add("title", settings.AltText); 822 } 823 else if (!string.IsNullOrEmpty(settings.Title)) 824 { 825 attributes.Add("title", settings.Title); 826 } 827 828 var onClickEvents = new List<string>(); 829 if (!string.IsNullOrEmpty(settings.OnClick)) 830 { 831 onClickEvents.Add(settings.OnClick); 832 } 833 if (!string.IsNullOrEmpty(settings.Href)) 834 { 835 onClickEvents.Add("location.href='" + settings.Href + "'"); 836 } 837 if (onClickEvents.Count > 0) 838 { 839 attributes.Add("onClick", string.Join(";", onClickEvents)); 840 } 841 842 if (settings.ButtonLayout != ButtonLayout.None) 843 { 844 classList.Add("btn"); 845 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 846 if (btnLayout == "linkclean") 847 { 848 btnLayout = "link-clean"; //fix 849 } 850 classList.Add("btn--" + btnLayout); 851 } 852 853 if (settings.Icon == null) 854 { 855 settings.Icon = new Icon(); 856 } 857 858 settings.Icon.CssClass += Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower() != "linkclean" ? " u-flex--align-center" : ""; 859 settings.Icon.Label = settings.Title; 860 861 attributes.Add("type", Enum.GetName(typeof(ButtonType), settings.ButtonType).ToLower()); 862 863 <button class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</button> 864 } 865 } 866 867 @helper RenderConfirmDialog(Button settings) 868 { 869 Modal confirmDialog = new Modal { 870 Id = settings.Id, 871 Width = ModalWidth.Sm, 872 Heading = new Heading 873 { 874 Level = 2, 875 Title = settings.ConfirmTitle 876 }, 877 BodyText = settings.ConfirmText 878 }; 879 880 confirmDialog.AddAction(new Button { Title = Translate("Cancel"), ButtonLayout = ButtonLayout.Secondary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false"}); 881 confirmDialog.AddAction(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false;" + settings.OnClick }); 882 883 @Render(confirmDialog) 884 } 885 @using Dynamicweb.Rapido.Blocks.Components.General 886 @using Dynamicweb.Rapido.Blocks.Components 887 @using Dynamicweb.Core 888 889 @helper RenderDashboard(Dashboard settings) 890 { 891 var widgets = settings.GetWidgets(); 892 893 if (!string.IsNullOrEmpty(settings.WidgetsBaseBackgroundColor)) 894 { 895 //set bg color for them 896 897 System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(settings.WidgetsBaseBackgroundColor); 898 int r = Convert.ToInt16(color.R); 899 int g = Convert.ToInt16(color.G); 900 int b = Convert.ToInt16(color.B); 901 902 var count = widgets.Length; 903 var max = Math.Max(r, Math.Max(g, b)); 904 double step = 255.0 / (max * count); 905 var i = 0; 906 foreach (var widget in widgets) 907 { 908 i++; 909 910 var shade = "rgb(" + Converter.ToString(r * step * i).Replace(",", ".") + ", " + Converter.ToString(g * step * i).Replace(",", ".") + ", " + Converter.ToString(b * step * i).Replace(",", ".") + ")"; 911 widget.BackgroundColor = shade; 912 } 913 } 914 915 <div class="dashboard @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 916 @foreach (var widget in widgets) 917 { 918 <div class="dashboard__widget"> 919 @Render(widget) 920 </div> 921 } 922 </div> 923 } 924 @using Dynamicweb.Rapido.Blocks.Components.General 925 @using Dynamicweb.Rapido.Blocks.Components 926 927 @helper RenderDashboardWidgetLink(DashboardWidgetLink settings) 928 { 929 if (!string.IsNullOrEmpty(settings.Link)) 930 { 931 var backgroundStyles = ""; 932 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 933 { 934 backgroundStyles = "style=\"background-color:" + settings.BackgroundColor + "\""; 935 } 936 937 <a href="@settings.Link" class="widget widget--link @settings.CssClass dw-mod" @backgroundStyles title="@settings.Title" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 938 <div class="u-center-middle u-color-light"> 939 @if (settings.Icon != null) 940 { 941 settings.Icon.CssClass += "widget__icon"; 942 @Render(settings.Icon) 943 } 944 <div class="widget__title">@settings.Title</div> 945 </div> 946 </a> 947 } 948 } 949 @using Dynamicweb.Rapido.Blocks.Components.General 950 @using Dynamicweb.Rapido.Blocks.Components 951 952 @helper RenderDashboardWidgetCounter(DashboardWidgetCounter settings) 953 { 954 var backgroundStyles = ""; 955 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 956 { 957 backgroundStyles = "style='background-color:" + settings.BackgroundColor + "'"; 958 } 959 960 <div class="widget @settings.CssClass dw-mod" @backgroundStyles @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 961 <div class="u-center-middle u-color-light"> 962 @if (settings.Icon != null) 963 { 964 settings.Icon.CssClass += "widget__icon"; 965 @Render(settings.Icon) 966 } 967 <div class="widget__counter">@settings.Count</div> 968 <div class="widget__title">@settings.Title</div> 969 </div> 970 </div> 971 } 972 @using System.Reflection 973 @using Dynamicweb.Rapido.Blocks.Components.General 974 @using Dynamicweb.Rapido.Blocks.Components 975 @using Dynamicweb.Core 976 977 @* Component *@ 978 979 @helper RenderLink(Link settings) 980 { 981 if (settings != null && !string.IsNullOrEmpty(settings.Href) && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 982 { 983 Dictionary<string, string> attributes = new Dictionary<string, string>(); 984 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 985 if (settings.Disabled) 986 { 987 attributes.Add("disabled", "true"); 988 classList.Add("disabled"); 989 } 990 991 if (!string.IsNullOrEmpty(settings.AltText)) 992 { 993 attributes.Add("title", settings.AltText); 994 } 995 else if (!string.IsNullOrEmpty(settings.Title)) 996 { 997 attributes.Add("title", settings.Title); 998 } 999 1000 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1001 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1002 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onClick", settings.OnClick); } 1003 attributes.Add("href", settings.Href); 1004 1005 if (settings.ButtonLayout != ButtonLayout.None) 1006 { 1007 classList.Add("btn"); 1008 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 1009 if (btnLayout == "linkclean") 1010 { 1011 btnLayout = "link-clean"; //fix 1012 } 1013 classList.Add("btn--" + btnLayout); 1014 } 1015 1016 if (settings.Icon == null) 1017 { 1018 settings.Icon = new Icon(); 1019 } 1020 settings.Icon.Label = settings.Title; 1021 1022 if (settings.Target == LinkTargetType.Blank && settings.Rel == LinkRelType.None) 1023 { 1024 settings.Rel = LinkRelType.Noopener; 1025 } 1026 if (settings.Target != LinkTargetType.None) 1027 { 1028 attributes.Add("target", "_" + Enum.GetName(typeof(LinkTargetType), settings.Target).ToLower()); 1029 } 1030 if (settings.Download) 1031 { 1032 attributes.Add("download", "true"); 1033 } 1034 if (settings.Rel != LinkRelType.None) 1035 { 1036 attributes.Add("rel", Enum.GetName(typeof(LinkRelType), settings.Rel).ToLower()); 1037 } 1038 1039 <a class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</a> 1040 } 1041 } 1042 @using System.Reflection 1043 @using Dynamicweb.Rapido.Blocks.Components 1044 @using Dynamicweb.Rapido.Blocks.Components.General 1045 @using Dynamicweb.Rapido.Blocks 1046 1047 1048 @* Component *@ 1049 1050 @helper RenderRating(Rating settings) 1051 { 1052 if (settings.Score > 0) 1053 { 1054 int rating = settings.Score; 1055 string iconType = "fa-star"; 1056 1057 switch (settings.Type.ToString()) { 1058 case "Stars": 1059 iconType = "fa-star"; 1060 break; 1061 case "Hearts": 1062 iconType = "fa-heart"; 1063 break; 1064 case "Lemons": 1065 iconType = "fa-lemon"; 1066 break; 1067 case "Bombs": 1068 iconType = "fa-bomb"; 1069 break; 1070 } 1071 1072 <div class="u-ta-right"> 1073 @for (int i = 0; i < settings.OutOf; i++) 1074 { 1075 <i class="@(rating > i ? "fas" : "far") @iconType"></i> 1076 } 1077 </div> 1078 } 1079 } 1080 @using System.Reflection 1081 @using Dynamicweb.Rapido.Blocks.Components.General 1082 @using Dynamicweb.Rapido.Blocks.Components 1083 1084 1085 @* Component *@ 1086 1087 @helper RenderSelectFieldOption(SelectFieldOption settings) 1088 { 1089 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1090 if (settings.Checked) { attributes.Add("selected", "true"); } 1091 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1092 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1093 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1094 1095 <option @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Label</option> 1096 } 1097 @using System.Reflection 1098 @using Dynamicweb.Rapido.Blocks.Components.General 1099 @using Dynamicweb.Rapido.Blocks.Components 1100 1101 1102 @* Component *@ 1103 1104 @helper RenderNavigation(Navigation settings) { 1105 @RenderNavigation(new 1106 { 1107 id = settings.Id, 1108 cssclass = settings.CssClass, 1109 startLevel = settings.StartLevel, 1110 endlevel = settings.EndLevel, 1111 expandmode = settings.Expandmode, 1112 sitemapmode = settings.SitemapMode, 1113 template = settings.Template 1114 }) 1115 } 1116 @using Dynamicweb.Rapido.Blocks.Components.General 1117 @using Dynamicweb.Rapido.Blocks.Components 1118 1119 1120 @* Component *@ 1121 1122 @helper RenderBreadcrumbNavigation(BreadcrumbNavigation settings) { 1123 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 1124 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 1125 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 1126 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 1127 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 1128 settings.SitemapMode = false; 1129 1130 @RenderNavigation(settings) 1131 } 1132 @using Dynamicweb.Rapido.Blocks.Components.General 1133 @using Dynamicweb.Rapido.Blocks.Components 1134 1135 1136 @* Component *@ 1137 1138 @helper RenderLeftNavigation(LeftNavigation settings) { 1139 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 1140 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 1141 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 1142 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 1143 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 1144 1145 <div class="grid__cell"> 1146 @RenderNavigation(settings) 1147 </div> 1148 } 1149 @using System.Reflection 1150 @using Dynamicweb.Rapido.Blocks.Components.General 1151 @using Dynamicweb.Core 1152 1153 @* Component *@ 1154 1155 @helper RenderHeading(Heading settings) 1156 { 1157 if (settings != null && !string.IsNullOrEmpty(settings.Title)) 1158 { 1159 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 1160 string tagName = settings.Level != 0 ? "h" + settings.Level.ToString() : "div"; 1161 1162 @("<" + tagName + " class=\"" + settings.CssClass + " dw-mod\" " + color + ">") 1163 if (!string.IsNullOrEmpty(settings.Link)) 1164 { 1165 @Render(new Link { Href = settings.Link, Icon = settings.Icon, Title = settings.Title, ButtonLayout = ButtonLayout.None }) 1166 } 1167 else 1168 { 1169 if (settings.Icon == null) 1170 { 1171 settings.Icon = new Icon(); 1172 } 1173 settings.Icon.Label = settings.Title; 1174 @Render(settings.Icon) 1175 } 1176 @("</" + tagName + ">"); 1177 } 1178 } 1179 @using Dynamicweb.Rapido.Blocks.Components 1180 @using Dynamicweb.Rapido.Blocks.Components.General 1181 @using Dynamicweb.Rapido.Blocks 1182 1183 1184 @* Component *@ 1185 1186 @helper RenderImage(Image settings) 1187 { 1188 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 1189 { 1190 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 1191 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 1192 1193 if (settings.Caption != null) 1194 { 1195 @:<div> 1196 } 1197 1198 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 1199 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 1200 1201 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 1202 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 1203 @if (settings.Link != null) 1204 { 1205 <a href="@settings.Link"> 1206 @RenderTheImage(settings) 1207 </a> 1208 } 1209 else 1210 { 1211 @RenderTheImage(settings) 1212 } 1213 </div> 1214 </div> 1215 1216 if (settings.Caption != null) 1217 { 1218 <span class="image-caption dw-mod">@settings.Caption</span> 1219 @:</div> 1220 } 1221 } 1222 else 1223 { 1224 if (settings.Caption != null) 1225 { 1226 @:<div> 1227 } 1228 if (!string.IsNullOrEmpty(settings.Link)) 1229 { 1230 <a href="@settings.Link"> 1231 @RenderTheImage(settings) 1232 </a> 1233 } 1234 else 1235 { 1236 @RenderTheImage(settings) 1237 } 1238 1239 if (settings.Caption != null) 1240 { 1241 <span class="image-caption dw-mod">@settings.Caption</span> 1242 @:</div> 1243 } 1244 } 1245 } 1246 1247 @helper RenderTheImage(Image settings) 1248 { 1249 if (settings != null) 1250 { 1251 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 1252 string placeholderImage = "/Files/Images/placeholder.gif"; 1253 string imageEngine = "/Admin/Public/GetImage.ashx?"; 1254 1255 string imageStyle = ""; 1256 1257 switch (settings.Style) 1258 { 1259 case ImageStyle.Ball: 1260 imageStyle = "grid__cell-img--ball"; 1261 break; 1262 1263 case ImageStyle.Triangle: 1264 imageStyle = "grid__cell-img--triangle"; 1265 break; 1266 } 1267 1268 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 1269 { 1270 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 1271 1272 if (settings.ImageDefault != null) 1273 { 1274 settings.ImageDefault.Height = settings.ImageDefault.Width; 1275 } 1276 if (settings.ImageMedium != null) 1277 { 1278 settings.ImageMedium.Height = settings.ImageMedium.Width; 1279 } 1280 if (settings.ImageSmall != null) 1281 { 1282 settings.ImageSmall.Height = settings.ImageSmall.Width; 1283 } 1284 } 1285 1286 string defaultImage = imageEngine; 1287 string imageSmall = ""; 1288 string imageMedium = ""; 1289 1290 if (settings.DisableImageEngine) 1291 { 1292 defaultImage = settings.Path; 1293 } 1294 else 1295 { 1296 if (settings.ImageDefault != null) 1297 { 1298 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 1299 1300 if (settings.Path.GetType() != typeof(string)) 1301 { 1302 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 1303 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 1304 } 1305 else 1306 { 1307 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 1308 } 1309 1310 defaultImage += "&AlternativeImage=" + alternativeImage; 1311 } 1312 1313 if (settings.ImageSmall != null) 1314 { 1315 imageSmall = "data-src-small=\"" + imageEngine; 1316 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 1317 1318 if (settings.Path.GetType() != typeof(string)) 1319 { 1320 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 1321 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 1322 } 1323 else 1324 { 1325 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 1326 } 1327 1328 imageSmall += "&alternativeImage=" + alternativeImage; 1329 1330 imageSmall += "\""; 1331 } 1332 1333 if (settings.ImageMedium != null) 1334 { 1335 imageMedium = "data-src-medium=\"" + imageEngine; 1336 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 1337 1338 if (settings.Path.GetType() != typeof(string)) 1339 { 1340 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 1341 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 1342 } 1343 else 1344 { 1345 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 1346 } 1347 1348 imageMedium += "&alternativeImage=" + alternativeImage; 1349 1350 imageMedium += "\""; 1351 } 1352 } 1353 1354 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 1355 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 1356 if (!string.IsNullOrEmpty(settings.Title)) 1357 { 1358 optionalAttributes.Add("alt", settings.Title); 1359 optionalAttributes.Add("title", settings.Title); 1360 } 1361 1362 if (settings.DisableLazyLoad) 1363 { 1364 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 1365 } 1366 else 1367 { 1368 <img id="@settings.Id" class="b-lazy @imageStyle @settings.CssClass dw-mod" src="@placeholderImage" data-src="@defaultImage" @imageSmall @imageMedium @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 1369 } 1370 } 1371 } 1372 @using System.Reflection 1373 @using Dynamicweb.Rapido.Blocks.Components.General 1374 @using Dynamicweb.Rapido.Blocks.Components 1375 1376 @* Component *@ 1377 1378 @helper RenderFileField(FileField settings) 1379 { 1380 var attributes = new Dictionary<string, string>(); 1381 if (string.IsNullOrEmpty(settings.Id)) 1382 { 1383 settings.Id = Guid.NewGuid().ToString("N"); 1384 } 1385 1386 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1387 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1388 if (settings.Required) { attributes.Add("required", "true"); } 1389 if (settings.Multiple) { attributes.Add("multiple", "true"); } 1390 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1391 if (string.IsNullOrEmpty(settings.ChooseFileText)) 1392 { 1393 settings.ChooseFileText = Translate("Choose file"); 1394 } 1395 if (string.IsNullOrEmpty(settings.NoFilesChosenText)) 1396 { 1397 settings.NoFilesChosenText = Translate("No files chosen..."); 1398 } 1399 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1400 1401 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1402 1403 string setValueToFakeInput = "FileUpload.setValueToFakeInput(this)"; 1404 attributes.Add("onchange", setValueToFakeInput + (!string.IsNullOrEmpty(settings.OnChange) ? settings.OnChange : "")); 1405 1406 attributes.Add("type", "file"); 1407 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1408 settings.CssClass = "u-full-width " + settings.CssClass; 1409 1410 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1411 1412 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1413 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1414 { 1415 <div class="u-full-width"> 1416 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1417 @if (settings.Link != null) { 1418 <div class="u-pull--right"> 1419 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1420 @Render(settings.Link) 1421 </div> 1422 } 1423 </div> 1424 1425 } 1426 1427 @if (!string.IsNullOrEmpty(settings.HelpText)) 1428 { 1429 <small class="form__help-text">@settings.HelpText</small> 1430 } 1431 1432 <div class="form__field-combi file-input u-no-margin dw-mod"> 1433 <input @ComponentMethods.AddAttributes(resultAttributes) class="file-input__real-input" data-no-files-text="@settings.NoFilesChosenText" data-many-files-text="@Translate("files")" /> 1434 <label for="@settings.Id" class="file-input__btn btn--secondary btn dw-mod">@settings.ChooseFileText</label> 1435 <label for="@settings.Id" class="@settings.CssClass file-input__fake-input js-fake-input dw-mod">@settings.NoFilesChosenText</label> 1436 @if (settings.UploadButton != null) 1437 { 1438 settings.UploadButton.CssClass += " btn--condensed u-no-margin"; 1439 @Render(settings.UploadButton) 1440 } 1441 </div> 1442 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1443 </div> 1444 } 1445 @using System.Reflection 1446 @using Dynamicweb.Rapido.Blocks.Components.General 1447 @using Dynamicweb.Rapido.Blocks.Components 1448 @using Dynamicweb.Core 1449 @using System.Linq 1450 1451 @* Component *@ 1452 1453 @helper RenderDateTimeField(DateTimeField settings) 1454 { 1455 if (string.IsNullOrEmpty(settings.Id)) 1456 { 1457 settings.Id = Guid.NewGuid().ToString("N"); 1458 } 1459 1460 var textField = new TextField { 1461 Name = settings.Name, 1462 Id = settings.Id, 1463 Label = settings.Label, 1464 HelpText = settings.HelpText, 1465 Value = settings.Value, 1466 Disabled = settings.Disabled, 1467 Required = settings.Required, 1468 ErrorMessage = settings.ErrorMessage, 1469 CssClass = settings.CssClass, 1470 WrapperCssClass = settings.WrapperCssClass, 1471 OnChange = settings.OnChange, 1472 OnClick = settings.OnClick, 1473 Link = settings.Link, 1474 ExtraAttributes = settings.ExtraAttributes, 1475 // 1476 Placeholder = settings.Placeholder 1477 }; 1478 1479 @Render(textField) 1480 1481 List<string> jsAttributes = new List<string>(); 1482 1483 jsAttributes.Add("mode: '" + Enum.GetName(typeof(DateTimeFieldMode), settings.Mode).ToLower() + "'"); 1484 1485 if (!string.IsNullOrEmpty(settings.DateFormat)) 1486 { 1487 jsAttributes.Add("dateFormat: '" + settings.DateFormat + "'"); 1488 } 1489 if (!string.IsNullOrEmpty(settings.MinDate)) 1490 { 1491 jsAttributes.Add("minDate: '" + settings.MinDate + "'"); 1492 } 1493 if (!string.IsNullOrEmpty(settings.MaxDate)) 1494 { 1495 jsAttributes.Add("maxDate: '" + settings.MaxDate + "'"); 1496 } 1497 if (settings.IsInline) 1498 { 1499 jsAttributes.Add("inline: " + Converter.ToString(settings.IsInline).ToLower()); 1500 } 1501 if (settings.EnableTime) 1502 { 1503 jsAttributes.Add("enableTime: " + Converter.ToString(settings.EnableTime).ToLower()); 1504 } 1505 if (settings.EnableWeekNumbers) 1506 { 1507 jsAttributes.Add("weekNumbers: " + Converter.ToString(settings.EnableWeekNumbers).ToLower()); 1508 } 1509 1510 jsAttributes.AddRange(settings.GetFlatPickrOptions().Select(x => x.Key + ": " + x.Value)); 1511 1512 <script> 1513 document.addEventListener("DOMContentLoaded", function () { 1514 flatpickr("#@textField.Id", { 1515 @string.Join(",", jsAttributes) 1516 }); 1517 }); 1518 </script> 1519 } 1520 @using System.Reflection 1521 @using Dynamicweb.Rapido.Blocks.Components.General 1522 @using Dynamicweb.Rapido.Blocks.Components 1523 1524 @* Component *@ 1525 1526 @helper RenderTextField(TextField settings) 1527 { 1528 var attributes = new Dictionary<string, string>(); 1529 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1530 { 1531 settings.Id = Guid.NewGuid().ToString("N"); 1532 } 1533 1534 /*base settings*/ 1535 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1536 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1537 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1538 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1539 if (settings.Required) { attributes.Add("required", "true"); } 1540 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1541 /*end*/ 1542 1543 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1544 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1545 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1546 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1547 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1548 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1549 attributes.Add("type", Enum.GetName(typeof(TextFieldType), settings.Type).ToLower()); 1550 if (settings.Type == TextFieldType.Password) { attributes.Add("autocomplete", "off"); }; 1551 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1552 1553 settings.CssClass = "u-full-width " + settings.CssClass; 1554 1555 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1556 1557 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1558 1559 string noMargin = "u-no-margin"; 1560 if (!settings.ReadOnly) { 1561 noMargin = ""; 1562 } 1563 1564 <div class="form__field-group u-full-width @noMargin @settings.WrapperCssClass dw-mod"> 1565 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1566 { 1567 <div class="u-full-width"> 1568 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1569 @if (settings.Link != null) { 1570 settings.Link.ButtonLayout = ButtonLayout.LinkClean; 1571 1572 <div class="u-pull--right"> 1573 @Render(settings.Link) 1574 </div> 1575 } 1576 </div> 1577 1578 } 1579 1580 @if (!string.IsNullOrEmpty(settings.HelpText)) 1581 { 1582 <small class="form__help-text">@settings.HelpText</small> 1583 } 1584 1585 @if (settings.ActionButton != null) 1586 { 1587 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1588 <div class="form__field-combi u-no-margin dw-mod"> 1589 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1590 @Render(settings.ActionButton) 1591 </div> 1592 } 1593 else 1594 { 1595 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1596 } 1597 1598 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1599 </div> 1600 } 1601 @using System.Reflection 1602 @using Dynamicweb.Rapido.Blocks.Components.General 1603 @using Dynamicweb.Rapido.Blocks.Components 1604 1605 @* Component *@ 1606 1607 @helper RenderNumberField(NumberField settings) 1608 { 1609 var attributes = new Dictionary<string, string>(); 1610 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1611 { 1612 settings.Id = Guid.NewGuid().ToString("N"); 1613 } 1614 1615 /*base settings*/ 1616 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1617 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1618 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1619 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1620 if (settings.Required) { attributes.Add("required", "true"); } 1621 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1622 /*end*/ 1623 1624 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1625 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1626 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1627 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1628 if (settings.Max != null) { attributes.Add("max", settings.Max.ToString()); } 1629 if (settings.Min != null) { attributes.Add("min", settings.Min.ToString()); } 1630 if (settings.Step != 0) { attributes.Add("step", settings.Step.ToString()); } 1631 if (settings.Value != null && !string.IsNullOrEmpty(settings.Value.ToString())) { attributes.Add("value", settings.Value.ToString()); } 1632 attributes.Add("type", "number"); 1633 1634 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1635 1636 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1637 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1638 { 1639 <div class="u-full-width"> 1640 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1641 @if (settings.Link != null) { 1642 <div class="u-pull--right"> 1643 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1644 @Render(settings.Link) 1645 </div> 1646 } 1647 </div> 1648 1649 } 1650 1651 @if (!string.IsNullOrEmpty(settings.HelpText)) 1652 { 1653 <small class="form__help-text">@settings.HelpText</small> 1654 } 1655 1656 @if (settings.ActionButton != null) 1657 { 1658 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1659 <div class="form__field-combi u-no-margin dw-mod"> 1660 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1661 @Render(settings.ActionButton) 1662 </div> 1663 } 1664 else 1665 { 1666 <div class="form__field-combi u-no-margin dw-mod"> 1667 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1668 </div> 1669 } 1670 1671 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1672 </div> 1673 } 1674 @using System.Reflection 1675 @using Dynamicweb.Rapido.Blocks.Components.General 1676 @using Dynamicweb.Rapido.Blocks.Components 1677 1678 1679 @* Component *@ 1680 1681 @helper RenderTextareaField(TextareaField settings) 1682 { 1683 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1684 string id = settings.Id; 1685 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(id)) 1686 { 1687 id = Guid.NewGuid().ToString("N"); 1688 } 1689 1690 if (!string.IsNullOrEmpty(id)) { attributes.Add("id", id); } 1691 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1692 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1693 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1694 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1695 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1696 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1697 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1698 if (settings.Required) { attributes.Add("required", "true"); } 1699 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1700 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1701 if (settings.Rows != 0) { attributes.Add("rows", settings.Rows.ToString()); } 1702 attributes.Add("name", settings.Name); 1703 1704 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1705 1706 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1707 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1708 { 1709 <div class="u-full-width"> 1710 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1711 @if (settings.Link != null) { 1712 <div class="u-pull--right"> 1713 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1714 @Render(settings.Link) 1715 </div> 1716 } 1717 </div> 1718 } 1719 1720 @if (!string.IsNullOrEmpty(settings.HelpText)) 1721 { 1722 <small class="form__help-text">@settings.HelpText</small> 1723 } 1724 1725 <textarea class="u-full-width @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Value</textarea> 1726 1727 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1728 </div> 1729 } 1730 @using System.Reflection 1731 @using Dynamicweb.Rapido.Blocks.Components.General 1732 @using Dynamicweb.Rapido.Blocks.Components 1733 1734 1735 @* Component *@ 1736 1737 @helper RenderHiddenField(HiddenField settings) { 1738 var attributes = new Dictionary<string, string>(); 1739 attributes.Add("type", "hidden"); 1740 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1741 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1742 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1743 1744 <input @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)/> 1745 } 1746 @using System.Reflection 1747 @using Dynamicweb.Rapido.Blocks.Components.General 1748 @using Dynamicweb.Rapido.Blocks.Components 1749 1750 @* Component *@ 1751 1752 @helper RenderCheckboxField(CheckboxField settings) 1753 { 1754 var attributes = new Dictionary<string, string>(); 1755 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1756 { 1757 settings.Id = Guid.NewGuid().ToString("N"); 1758 } 1759 1760 /*base settings*/ 1761 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1762 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1763 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1764 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1765 if (settings.Required) { attributes.Add("required", "true"); } 1766 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1767 /*end*/ 1768 1769 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1770 1771 attributes.Add("type", "checkbox"); 1772 if (settings.Checked) { attributes.Add("checked", "true"); } 1773 settings.CssClass = "form__control " + settings.CssClass; 1774 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1775 1776 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1777 1778 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1779 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1780 @if (!string.IsNullOrEmpty(settings.Label)) 1781 { 1782 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1783 } 1784 1785 @if (settings.Link != null) { 1786 <span> 1787 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1788 @Render(settings.Link) 1789 </span> 1790 } 1791 1792 @if (!string.IsNullOrEmpty(settings.HelpText)) 1793 { 1794 <small class="form__help-text checkbox-help dw-mod">@settings.HelpText</small> 1795 } 1796 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1797 </div> 1798 } 1799 @using System.Reflection 1800 @using Dynamicweb.Rapido.Blocks.Components.General 1801 @using Dynamicweb.Rapido.Blocks.Components 1802 1803 1804 @* Component *@ 1805 1806 @helper RenderCheckboxListField(CheckboxListField settings) 1807 { 1808 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1809 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1810 { 1811 <div class="u-full-width"> 1812 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1813 @if (settings.Link != null) { 1814 <div class="u-pull--right"> 1815 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1816 @Render(settings.Link) 1817 </div> 1818 } 1819 </div> 1820 1821 } 1822 1823 <div class="u-pull--left"> 1824 @if (!string.IsNullOrEmpty(settings.HelpText)) 1825 { 1826 <small class="form__help-text">@settings.HelpText</small> 1827 } 1828 1829 @foreach (var item in settings.Options) 1830 { 1831 if (settings.Required) 1832 { 1833 item.Required = true; 1834 } 1835 if (settings.Disabled) 1836 { 1837 item.Disabled = true; 1838 } 1839 if (!string.IsNullOrEmpty(settings.Name)) 1840 { 1841 item.Name = settings.Name; 1842 } 1843 if (!string.IsNullOrEmpty(settings.CssClass)) 1844 { 1845 item.CssClass += settings.CssClass; 1846 } 1847 1848 /* value is not supported */ 1849 1850 if (!string.IsNullOrEmpty(settings.OnClick)) 1851 { 1852 item.OnClick += settings.OnClick; 1853 } 1854 if (!string.IsNullOrEmpty(settings.OnChange)) 1855 { 1856 item.OnChange += settings.OnChange; 1857 } 1858 @Render(item) 1859 } 1860 1861 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1862 </div> 1863 1864 </div> 1865 } 1866 @using Dynamicweb.Rapido.Blocks.Components.General 1867 1868 @* Component *@ 1869 1870 @helper RenderSearch(Search settings) 1871 { 1872 var searchValue = HttpContext.Current.Request.QueryString.Get(settings.SearchParameter) ?? ""; 1873 var groupValue = HttpContext.Current.Request.QueryString.Get(settings.GroupsParameter) ?? ""; 1874 1875 if (string.IsNullOrEmpty(settings.Id)) 1876 { 1877 settings.Id = Guid.NewGuid().ToString("N"); 1878 } 1879 1880 var resultAttributes = new Dictionary<string, string>(); 1881 1882 if (settings.PageSize != 0) 1883 { 1884 resultAttributes.Add("data-page-size", settings.PageSize.ToString()); 1885 } 1886 if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1887 { 1888 resultAttributes.Add("data-groups-feed-url", settings.GroupItemsFeedUrl); 1889 if (!string.IsNullOrEmpty(groupValue)) 1890 { 1891 resultAttributes.Add("data-selected-group", groupValue); 1892 } 1893 if (!string.IsNullOrEmpty(settings.GroupsParameter)) 1894 { 1895 resultAttributes.Add("data-groups-parameter", settings.GroupsParameter); 1896 } 1897 } 1898 resultAttributes.Add("data-force-init", "true"); 1899 if (settings.GoToFirstSearchResultOnEnter) 1900 { 1901 resultAttributes.Add("data-go-to-first-search-result-on-enter", settings.GoToFirstSearchResultOnEnter.ToString().ToLower()); 1902 } 1903 if (!string.IsNullOrEmpty(settings.SearchParameter)) 1904 { 1905 resultAttributes.Add("data-search-parameter", settings.SearchParameter); 1906 } 1907 resultAttributes.Add("data-search-feed-url", settings.SearchData.SearchFeedUrl); 1908 resultAttributes.Add("data-results-template-id", settings.SearchData.ResultsTemplateId); 1909 1910 if (settings.SecondSearchData != null) 1911 { 1912 resultAttributes.Add("data-second-search-feed-url", settings.SecondSearchData.SearchFeedUrl); 1913 resultAttributes.Add("data-second-results-template-id", settings.SecondSearchData.ResultsTemplateId); 1914 } 1915 if (!string.IsNullOrEmpty(settings.ResultsPageUrl)) 1916 { 1917 resultAttributes.Add("data-results-page-url", settings.ResultsPageUrl); 1918 } 1919 1920 resultAttributes = resultAttributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1921 1922 string searchFieldCss = (settings.SearchButton == null) ? "search--with-icon" : ""; 1923 1924 <div class="search @settings.CssClass @searchFieldCss js-search-data-source dw-mod" id="@settings.Id" @ComponentMethods.AddAttributes(resultAttributes)> 1925 @if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1926 { 1927 <button type="button" class="search__groups-btn dw-mod js-search-groups-btn">@Translate("All")</button> 1928 <ul class="dropdown dropdown--absolute-position dw-mod search__groups-results js-search-groups-list"></ul> 1929 } 1930 1931 <input type="text" class="search__field dw-mod js-search-field" placeholder="@settings.Placeholder" value="@searchValue"> 1932 1933 <div class="dropdown dropdown--absolute-position search__results dw-mod js-search-results @(settings.SecondSearchData != null ? "search__results--combined" : "")"> 1934 @if (settings.SecondSearchData != null) 1935 { 1936 <div class="search__column search__column--products dw-mod"> 1937 <div class="search__column-header dw-mod">@Translate("Products")</div> 1938 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1939 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1940 { 1941 @Render(new Link { 1942 Title = Translate("View all"), 1943 CssClass = "js-view-all-button u-margin", 1944 Href = settings.SearchData.ResultsPageUrl 1945 }); 1946 } 1947 </div> 1948 <div class="search__column search__column--pages dw-mod"> 1949 <div class="search__column-header">@Translate("Pages")</div> 1950 <ul class="search__results-list dw-mod js-search-results-second-list" id="@(settings.Id)_SecondResultsList"></ul> 1951 @if (!string.IsNullOrEmpty(settings.SecondSearchData.ResultsPageUrl)) 1952 { 1953 @Render(new Link 1954 { 1955 Title = Translate("View all"), 1956 CssClass = "js-view-all-button u-margin", 1957 Href = settings.SecondSearchData.ResultsPageUrl 1958 }); 1959 } 1960 </div> 1961 } 1962 else 1963 { 1964 <div class="search__column search__column--only dw-mod"> 1965 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1966 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1967 { 1968 @Render(new Link { 1969 Title = Translate("View all"), 1970 CssClass = "js-view-all-button u-margin", 1971 Href = settings.SearchData.ResultsPageUrl 1972 }); 1973 } 1974 </div> 1975 } 1976 </div> 1977 1978 @if (settings.SearchButton != null) 1979 { 1980 settings.SearchButton.CssClass += " search__btn js-search-btn"; 1981 if (settings.RenderDefaultSearchIcon) 1982 { 1983 settings.SearchButton.Icon = new Icon { Name = Pageview.AreaSettings.GetItem("Layout").GetItem("Icons").GetList("SearchIcon").SelectedValue }; 1984 } 1985 @Render(settings.SearchButton); 1986 } 1987 </div> 1988 } 1989 @using System.Reflection 1990 @using Dynamicweb.Rapido.Blocks.Components.General 1991 @using Dynamicweb.Rapido.Blocks.Components 1992 1993 1994 @* Component *@ 1995 1996 @helper RenderSelectField(SelectField settings) 1997 { 1998 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1999 { 2000 settings.Id = Guid.NewGuid().ToString("N"); 2001 } 2002 2003 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 2004 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 2005 { 2006 <div class="u-full-width"> 2007 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 2008 @if (settings.Link != null) { 2009 <div class="u-pull--right"> 2010 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 2011 @Render(settings.Link) 2012 </div> 2013 } 2014 </div> 2015 } 2016 2017 @if (!string.IsNullOrEmpty(settings.HelpText)) 2018 { 2019 <small class="form__help-text">@settings.HelpText</small> 2020 } 2021 2022 @if (settings.ActionButton != null) 2023 { 2024 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 2025 <div class="form__field-combi u-no-margin dw-mod"> 2026 @RenderSelectBase(settings) 2027 @Render(settings.ActionButton) 2028 </div> 2029 } 2030 else 2031 { 2032 @RenderSelectBase(settings) 2033 } 2034 2035 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 2036 </div> 2037 } 2038 2039 @helper RenderSelectBase(SelectField settings) 2040 { 2041 var attributes = new Dictionary<string, string>(); 2042 2043 /*base settings*/ 2044 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2045 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 2046 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 2047 if (settings.Disabled) { attributes.Add("disabled", "true"); } 2048 if (settings.Required) { attributes.Add("required", "true"); } 2049 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 2050 /*end*/ 2051 2052 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 2053 2054 <select @ComponentMethods.AddAttributes(resultAttributes) class="u-full-width @settings.CssClass dw-mod"> 2055 @if (settings.Default != null) 2056 { 2057 @Render(settings.Default) 2058 } 2059 2060 @foreach (var item in settings.Options) 2061 { 2062 if (settings.Value != null) { 2063 item.Checked = item.Value == settings.Value; 2064 } 2065 @Render(item) 2066 } 2067 </select> 2068 } 2069 @using System.Reflection 2070 @using Dynamicweb.Rapido.Blocks.Components.General 2071 @using Dynamicweb.Rapido.Blocks.Components 2072 2073 @* Component *@ 2074 2075 @helper RenderRadioButtonField(RadioButtonField settings) 2076 { 2077 var attributes = new Dictionary<string, string>(); 2078 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 2079 { 2080 settings.Id = Guid.NewGuid().ToString("N"); 2081 } 2082 2083 /*base settings*/ 2084 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2085 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 2086 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 2087 if (settings.Disabled) { attributes.Add("disabled", "true"); } 2088 if (settings.Required) { attributes.Add("required", "true"); } 2089 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 2090 /*end*/ 2091 2092 attributes.Add("type", "radio"); 2093 if (settings.Checked) { attributes.Add("checked", "true"); } 2094 settings.CssClass = "form__control " + settings.CssClass; 2095 if (settings.Value != null) { attributes.Add("value", settings.Value); } 2096 2097 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 2098 2099 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 2100 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 2101 @if (!string.IsNullOrEmpty(settings.Label)) 2102 { 2103 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 2104 } 2105 @if (!string.IsNullOrEmpty(settings.HelpText)) 2106 { 2107 <small class="form__help-text">@settings.HelpText</small> 2108 } 2109 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 2110 </div> 2111 } 2112 @using System.Reflection 2113 @using Dynamicweb.Rapido.Blocks.Components.General 2114 @using Dynamicweb.Rapido.Blocks.Components 2115 2116 2117 @* Component *@ 2118 2119 @helper RenderRadioButtonListField(RadioButtonListField settings) 2120 { 2121 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 2122 2123 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 2124 @if (!string.IsNullOrEmpty(settings.Label)) 2125 { 2126 <label>@settings.Label</label> 2127 } 2128 @if (!string.IsNullOrEmpty(settings.HelpText)) 2129 { 2130 <small class="form__help-text">@settings.HelpText</small> 2131 } 2132 2133 @foreach (var item in settings.Options) 2134 { 2135 if (settings.Required) 2136 { 2137 item.Required = true; 2138 } 2139 if (settings.Disabled) 2140 { 2141 item.Disabled = true; 2142 } 2143 if (!string.IsNullOrEmpty(settings.Name)) 2144 { 2145 item.Name = settings.Name; 2146 } 2147 if (settings.Value != null && settings.Value == item.Value) 2148 { 2149 item.Checked = true; 2150 } 2151 if (!string.IsNullOrEmpty(settings.OnClick)) 2152 { 2153 item.OnClick += settings.OnClick; 2154 } 2155 if (!string.IsNullOrEmpty(settings.OnChange)) 2156 { 2157 item.OnChange += settings.OnChange; 2158 } 2159 if (!string.IsNullOrEmpty(settings.CssClass)) 2160 { 2161 item.CssClass += settings.CssClass; 2162 } 2163 @Render(item) 2164 } 2165 2166 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 2167 </div> 2168 } 2169 @using System.Reflection 2170 @using Dynamicweb.Rapido.Blocks.Components.General 2171 @using Dynamicweb.Rapido.Blocks.Components 2172 2173 2174 @* Component *@ 2175 2176 @helper RenderNotificationMessage(NotificationMessage settings) 2177 { 2178 if (!string.IsNullOrEmpty(settings.Message)) 2179 { 2180 var attributes = new Dictionary<string, string>(); 2181 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2182 2183 string messageTypeClass = Enum.GetName(typeof(NotificationMessageType), settings.MessageType).ToLower(); 2184 string messageLayoutClass = Enum.GetName(typeof(NotificationMessageLayout), settings.MessageLayout).ToLower(); 2185 string minHeightClass = settings.Icon != null ? "u-min-h70px" : ""; 2186 2187 <div class="notification-message-@messageTypeClass notification-message-@messageLayoutClass @messageLayoutClass @minHeightClass @settings.CssClass u-full-width dw-mod" @ComponentMethods.AddAttributes(attributes)> 2188 @if (settings.Icon != null) { 2189 settings.Icon.Label = !string.IsNullOrEmpty(settings.Icon.Label) ? settings.Message + settings.Icon.Label : settings.Message; 2190 @Render(settings.Icon) 2191 } else { 2192 @settings.Message 2193 } 2194 </div> 2195 } 2196 } 2197 @using Dynamicweb.Rapido.Blocks.Components.General 2198 2199 2200 @* Component *@ 2201 2202 @helper RenderHandlebarsRoot(HandlebarsRoot settings) { 2203 string preRender = !String.IsNullOrEmpty(settings.PreRenderScriptTemplate) ? "data-pre-render-template=\"" + settings.PreRenderScriptTemplate + "\"" : ""; 2204 2205 <div class="@settings.CssClass dw-mod js-handlebars-root" id="@settings.Id" data-template="@settings.ScriptTemplate" data-json-feed="@settings.FeedUrl" data-init-onload="@settings.InitOnLoad.ToString()" data-preloader="@settings.Preloader" @preRender> 2206 @if (settings.SubBlocks != null) { 2207 @RenderBlockList(settings.SubBlocks) 2208 } 2209 </div> 2210 } 2211 @using System.Reflection 2212 @using Dynamicweb.Rapido.Blocks.Components.General 2213 @using Dynamicweb.Rapido.Blocks.Components 2214 @using System.Text.RegularExpressions 2215 2216 2217 @* Component *@ 2218 2219 @helper RenderSticker(Sticker settings) { 2220 if (!String.IsNullOrEmpty(settings.Title)) { 2221 string size = settings.Size.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Size.ToString().ToLower() : ""; 2222 string style = settings.Style.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Style.ToString().ToLower() : ""; 2223 2224 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 2225 if (!String.IsNullOrEmpty(settings.Color) || !String.IsNullOrEmpty(settings.BackgroundColor)) { 2226 string styleTag = !String.IsNullOrEmpty(settings.Color) ? "color: " + settings.Color + "; " : ""; 2227 styleTag += !String.IsNullOrEmpty(settings.BackgroundColor) ? "background-color: " + settings.BackgroundColor + "; " : ""; 2228 optionalAttributes.Add("style", styleTag); 2229 } 2230 2231 <div class="stickers-container__tag @size @style @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Title</div> 2232 } 2233 } 2234 2235 @using System.Reflection 2236 @using Dynamicweb.Rapido.Blocks.Components.General 2237 @using Dynamicweb.Rapido.Blocks.Components 2238 2239 2240 @* Component *@ 2241 2242 @helper RenderStickersCollection(StickersCollection settings) 2243 { 2244 if (settings.Stickers.Count > 0) 2245 { 2246 string position = "stickers-container--" + Regex.Replace(settings.Position.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower(); 2247 2248 <div class="stickers-container @position @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 2249 @foreach (Sticker sticker in settings.Stickers) 2250 { 2251 @Render(sticker) 2252 } 2253 </div> 2254 } 2255 } 2256 2257 @using Dynamicweb.Rapido.Blocks.Components.General 2258 2259 2260 @* Component *@ 2261 2262 @helper RenderForm(Form settings) { 2263 if (settings != null) 2264 { 2265 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 2266 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); }; 2267 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); }; 2268 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); }; 2269 var enctypes = new Dictionary<string, string> 2270 { 2271 { "multipart", "multipart/form-data" }, 2272 { "text", "text/plain" }, 2273 { "application", "application/x-www-form-urlencoded" } 2274 }; 2275 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); }; 2276 optionalAttributes.Add("method", settings.Method.ToString()); 2277 2278 if (!string.IsNullOrEmpty(settings.FormStartMarkup)) 2279 { 2280 @settings.FormStartMarkup 2281 } 2282 else 2283 { 2284 @:<form class="@settings.CssClass u-no-margin dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 2285 } 2286 2287 foreach (var field in settings.GetFields()) 2288 { 2289 @Render(field) 2290 } 2291 2292 @:</form> 2293 } 2294 } 2295 @using System.Reflection 2296 @using Dynamicweb.Rapido.Blocks.Components.General 2297 @using Dynamicweb.Rapido.Blocks.Components 2298 2299 2300 @* Component *@ 2301 2302 @helper RenderText(Text settings) 2303 { 2304 @settings.Content 2305 } 2306 @using System.Reflection 2307 @using Dynamicweb.Rapido.Blocks.Components.General 2308 @using Dynamicweb.Rapido.Blocks.Components 2309 2310 2311 @* Component *@ 2312 2313 @helper RenderContentModule(ContentModule settings) { 2314 if (!string.IsNullOrEmpty(settings.Content)) 2315 { 2316 @settings.Content 2317 } 2318 } 2319 @using System.Reflection 2320 @using Dynamicweb.Rapido.Blocks.Components.General 2321 @using Dynamicweb.Rapido.Blocks.Components 2322 2323 2324 @* Component *@ 2325 2326 @helper RenderModal(Modal settings) { 2327 if (settings != null) 2328 { 2329 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 2330 2331 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : ""; 2332 2333 <input type="checkbox" id="@(modalId)ModalTrigger" class="modal-trigger" @onchange /> 2334 2335 <div class="modal-container"> 2336 @if (!settings.DisableDarkOverlay) 2337 { 2338 <label for="@(modalId)ModalTrigger" id="@(modalId)ModalOverlay" class="modal-overlay"></label> 2339 } 2340 <div class="modal modal--@settings.Width.ToString().ToLower() modal-height--@settings.Height.ToString().ToLower()" id="@(modalId)Modal"> 2341 @if (settings.Heading != null) 2342 { 2343 if (!string.IsNullOrEmpty(settings.Heading.Title)) 2344 { 2345 <div class="modal__header"> 2346 @Render(settings.Heading) 2347 </div> 2348 } 2349 } 2350 <div class="modal__body @(settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "")"> 2351 @if (!string.IsNullOrEmpty(settings.BodyText)) 2352 { 2353 @settings.BodyText 2354 } 2355 @if (settings.BodyTemplate != null) 2356 { 2357 @settings.BodyTemplate 2358 } 2359 @{ 2360 var actions = settings.GetActions(); 2361 } 2362 </div> 2363 @if (actions.Length > 0) 2364 { 2365 <div class="modal__footer"> 2366 @foreach (var action in actions) 2367 { 2368 if (Pageview.Device.ToString() != "Mobile") { 2369 action.CssClass += " u-no-margin"; 2370 } else { 2371 action.CssClass += " u-full-width u-margin-bottom"; 2372 } 2373 2374 @Render(action) 2375 } 2376 </div> 2377 } 2378 <label class="modal__close-btn" for="@(modalId)ModalTrigger"></label> 2379 </div> 2380 </div> 2381 } 2382 } 2383 @using Dynamicweb.Rapido.Blocks.Components.General 2384 2385 @* Component *@ 2386 2387 @helper RenderMediaListItem(MediaListItem settings) 2388 { 2389 <div class="media-list-item @settings.CssClass dw-mod" @(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "")> 2390 @if (!string.IsNullOrEmpty(settings.Label)) 2391 { 2392 if (!string.IsNullOrEmpty(settings.Link)) 2393 { 2394 @Render(new Link 2395 { 2396 Href = settings.Link, 2397 CssClass = "media-list-item__sticker dw-mod", 2398 ButtonLayout = ButtonLayout.None, 2399 Title = settings.Label, 2400 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2401 }) 2402 } 2403 else if (!string.IsNullOrEmpty(settings.OnClick)) 2404 { 2405 <span class="media-list-item__sticker dw-mod" onclick="@(settings.OnClick)"> 2406 <span class="u-uppercase">@settings.Label</span> 2407 </span> 2408 } 2409 else 2410 { 2411 <span class="media-list-item__sticker media-list-item__sticker--no-link dw-mod"> 2412 <span class="u-uppercase">@settings.Label</span> 2413 </span> 2414 } 2415 } 2416 <div class="media-list-item__wrap"> 2417 <div class="media-list-item__info dw-mod"> 2418 <div class="media-list-item__header dw-mod"> 2419 @if (!string.IsNullOrEmpty(settings.Title)) 2420 { 2421 if (!string.IsNullOrEmpty(settings.Link)) 2422 { 2423 @Render(new Link 2424 { 2425 Href = settings.Link, 2426 CssClass = "media-list-item__name dw-mod", 2427 ButtonLayout = ButtonLayout.None, 2428 Title = settings.Title, 2429 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2430 }) 2431 } 2432 else if (!string.IsNullOrEmpty(settings.OnClick)) 2433 { 2434 <span class="media-list-item__name dw-mod" onclick="@(settings.OnClick)">@settings.Title</span> 2435 } 2436 else 2437 { 2438 <span class="media-list-item__name media-list-item__name--no-link dw-mod">@settings.Title</span> 2439 } 2440 } 2441 2442 @if (!string.IsNullOrEmpty(settings.Status)) 2443 { 2444 <div class="media-list-item__state dw-mod">@settings.Status</div> 2445 } 2446 </div> 2447 @{ 2448 settings.InfoTable.CssClass += " media-list-item__parameters-table"; 2449 } 2450 2451 @Render(settings.InfoTable) 2452 </div> 2453 <div class="media-list-item__actions dw-mod"> 2454 <div class="media-list-item__actions-list dw-mod"> 2455 @{ 2456 var actions = settings.GetActions(); 2457 2458 foreach (ButtonBase action in actions) 2459 { 2460 action.ButtonLayout = ButtonLayout.None; 2461 action.CssClass += " media-list-item__action link"; 2462 2463 @Render(action) 2464 } 2465 } 2466 </div> 2467 2468 @if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title)) 2469 { 2470 settings.SelectButton.CssClass += " u-no-margin"; 2471 2472 <div class="media-list-item__action-button"> 2473 @Render(settings.SelectButton) 2474 </div> 2475 } 2476 </div> 2477 </div> 2478 </div> 2479 } 2480 @using Dynamicweb.Rapido.Blocks.Components.General 2481 @using Dynamicweb.Rapido.Blocks.Components 2482 2483 @helper RenderTable(Table settings) 2484 { 2485 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2486 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2487 2488 var enumToClasses = new Dictionary<TableDesign, string> 2489 { 2490 { TableDesign.Clean, "table--clean" }, 2491 { TableDesign.Bordered, "table--bordered" }, 2492 { TableDesign.Striped, "table--striped" }, 2493 { TableDesign.Hover, "table--hover" }, 2494 { TableDesign.Compact, "table--compact" }, 2495 { TableDesign.Condensed, "table--condensed" }, 2496 { TableDesign.NoTopBorder, "table--no-top-border" } 2497 }; 2498 string tableDesignClass = ""; 2499 if (settings.Design != TableDesign.None) 2500 { 2501 tableDesignClass = enumToClasses[settings.Design]; 2502 } 2503 2504 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); } 2505 2506 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2507 2508 <table @ComponentMethods.AddAttributes(resultAttributes)> 2509 @if (settings.Header != null) 2510 { 2511 <thead> 2512 @Render(settings.Header) 2513 </thead> 2514 } 2515 <tbody> 2516 @foreach (var row in settings.Rows) 2517 { 2518 @Render(row) 2519 } 2520 </tbody> 2521 @if (settings.Footer != null) 2522 { 2523 <tfoot> 2524 @Render(settings.Footer) 2525 </tfoot> 2526 } 2527 </table> 2528 } 2529 @using Dynamicweb.Rapido.Blocks.Components.General 2530 @using Dynamicweb.Rapido.Blocks.Components 2531 2532 @helper RenderTableRow(TableRow settings) 2533 { 2534 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2535 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2536 2537 var enumToClasses = new Dictionary<TableRowDesign, string> 2538 { 2539 { TableRowDesign.NoBorder, "table__row--no-border" }, 2540 { TableRowDesign.Border, "table__row--border" }, 2541 { TableRowDesign.TopBorder, "table__row--top-line" }, 2542 { TableRowDesign.BottomBorder, "table__row--bottom-line" }, 2543 { TableRowDesign.Solid, "table__row--solid" } 2544 }; 2545 2546 string tableRowDesignClass = ""; 2547 if (settings.Design != TableRowDesign.None) 2548 { 2549 tableRowDesignClass = enumToClasses[settings.Design]; 2550 } 2551 2552 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); } 2553 2554 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2555 2556 <tr @ComponentMethods.AddAttributes(resultAttributes)> 2557 @foreach (var cell in settings.Cells) 2558 { 2559 if (settings.IsHeaderRow) 2560 { 2561 cell.IsHeader = true; 2562 } 2563 @Render(cell) 2564 } 2565 </tr> 2566 } 2567 @using Dynamicweb.Rapido.Blocks.Components.General 2568 @using Dynamicweb.Rapido.Blocks.Components 2569 @using Dynamicweb.Core 2570 2571 @helper RenderTableCell(TableCell settings) 2572 { 2573 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2574 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2575 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); } 2576 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); } 2577 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); } 2578 2579 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2580 2581 string tagName = settings.IsHeader ? "th" : "td"; 2582 2583 @("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">") 2584 @settings.Content 2585 @("</" + tagName + ">"); 2586 } 2587 @using System.Linq 2588 @using Dynamicweb.Rapido.Blocks.Components.General 2589 2590 @* Component *@ 2591 2592 @helper RenderPagination(Dynamicweb.Rapido.Blocks.Components.General.Pagination settings) 2593 { 2594 var pageNumberQueryStringName = Dynamicweb.Rapido.Services.Pagination.GetPageNumberQueryStringName(settings); // Get the proper 'page number' query string parameter 2595 var queryParameters = Dynamicweb.Rapido.Services.Url.GetQueryParameters(pageNumberQueryStringName); // Get the NameValueCollection from the querystring 2596 2597 if (settings.NumberOfPages > 1) 2598 { 2599 string url = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/Default.aspx"; 2600 string ariaLabel = !string.IsNullOrWhiteSpace(settings.AriaLabel) ? settings.AriaLabel : Translate("Page navigation"); 2601 Dictionary<string, int> startAndEndPageNumber = Dynamicweb.Rapido.Services.Pagination.GetStartAndEndPageNumber(settings); 2602 2603 <div class="pager u-margin-top dw-mod @settings.CssClass" aria-label="@ariaLabel"> 2604 @if (settings.ShowPagingInfo) 2605 { 2606 <div class="pager__info dw-mod"> 2607 @Translate("Page") @settings.CurrentPageNumber @Translate("of") @settings.NumberOfPages 2608 </div> 2609 } 2610 <ul class="pager__list dw-mod"> 2611 @if (!string.IsNullOrWhiteSpace(settings.FirstPageUrl) && settings.ShowFirstAndLastControls) 2612 { 2613 @Render(new PaginationItem { Link = settings.FirstPageUrl, Icon = settings.FirstIcon }) 2614 } 2615 @if (!string.IsNullOrWhiteSpace(settings.PreviousPageUrl) && settings.ShowNextAndPrevControls) 2616 { 2617 @Render(new PaginationItem { Link = settings.PreviousPageUrl, Icon = settings.PrevIcon }) 2618 } 2619 @if (settings.GetPages().Any()) 2620 { 2621 foreach (var page in settings.GetPages()) 2622 { 2623 @Render(page) 2624 } 2625 } 2626 else 2627 { 2628 for (var page = startAndEndPageNumber["StartPage"]; page <= startAndEndPageNumber["EndPage"]; page++) 2629 { 2630 queryParameters = Dynamicweb.Rapido.Services.Url.UpdateQueryStringParameter(queryParameters, pageNumberQueryStringName, page.ToString()); 2631 @Render(new PaginationItem { Label = page.ToString(), Link = Dynamicweb.Rapido.Services.Url.BuildUri(url, queryParameters).PathAndQuery, IsActive = (settings.CurrentPageNumber == page) }); 2632 } 2633 } 2634 @if (!string.IsNullOrWhiteSpace(settings.NextPageUrl) && settings.ShowNextAndPrevControls) 2635 { 2636 @Render(new PaginationItem { Link = settings.NextPageUrl, Icon = settings.NextIcon }) 2637 } 2638 @if (!string.IsNullOrWhiteSpace(settings.LastPageUrl) && settings.ShowFirstAndLastControls) 2639 { 2640 @Render(new PaginationItem { Link = settings.LastPageUrl, Icon = settings.LastIcon }) 2641 } 2642 </ul> 2643 </div> 2644 } 2645 } 2646 2647 @helper RenderPaginationItem(PaginationItem settings) 2648 { 2649 if (settings.Icon == null) 2650 { 2651 settings.Icon = new Icon(); 2652 } 2653 2654 settings.Icon.Label = settings.Label; 2655 <li class="pager__btn dw-mod"> 2656 @if (settings.IsActive) 2657 { 2658 <span class="pager__num pager__num--current dw-mod"> 2659 @Render(settings.Icon) 2660 </span> 2661 } 2662 else 2663 { 2664 <a href="@settings.Link" class="pager__num dw-mod"> 2665 @Render(settings.Icon) 2666 </a> 2667 } 2668 </li> 2669 } 2670 2671 2672 @using Dynamicweb.Rapido.Blocks.Components.General 2673 @using Dynamicweb.Rapido.Blocks.Components.Ecommerce 2674 2675 2676 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2677 @using System.Web; 2678 @using Dynamicweb.Rapido.Blocks; 2679 2680 @RenderBlockList(createAccountPage.BlocksRoot.BlocksList) 2681 2682
Rocket

Install LA SOURCE

Install this application on your home screen for quick and easy access when you’re on the go.

Just tap Share then “Add to Home Screen”