Designerbasseng

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

Mosaikk blå

Mosaikk Grå

Mosaikk Sand

Mosaikk Sort

Marmorert

Carrara

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