Error executing template "Designs/Rapido/Forms/Form/SignUpForEventForm.cshtml"
System.ArgumentException: The requested block ID can not be found
Parameter name: Form3150
   at Dynamicweb.Rapido.Blocks.BlocksPage.GetBlockListById(String childId)
   at Dynamicweb.Rapido.Blocks.BlocksPage.Add(String id, Block block)
   at CompiledRazorTemplates.Dynamic.RazorEngine_73324597c170482896e1ec46d59581d9.Execute() in C:\inetpub\wwwroot\eCommerce\DK-FUNKI\Solutions\Rapido3.0\Files\Templates\Designs\Rapido\Forms\Form\SignUpForEventForm.cshtml:line 331
   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.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

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

We use necessary third-party content (e.g. script libraries) to ensure the function of our site. If you do not want this, please do not visit our site. We use analyses methods (e.g. cookies or fingerprints) to measure how often our site is visited and how it is used. We use tracking technologies for marketing purposes and also use third-party providers for this purpose, which may use cookies, fingerprints, tracking pixels and IP addresses across devices. On our website, we embed third-party content from other providers (e.g. social plugins, map services, external fonts). We have no influence on the further data processing and any tracking by the third-party provider. With your settings in the consent banner you consent to the processes described above. You can withdraw your consent at any time with effect for the future. You can find more information in our privacy policy. Privacy politics

More information...