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