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