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

Dansk fremstillede reoler, borde og stole 
med vægt på funktion og høj kvalitet.

 


Uendelige muligheder med Hammel

Error executing template "Designs/Rapido/ContentPage/Paragraph/StandardParagraphThree.cshtml"
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference
   at CallSite.Target(Closure , CallSite , Object )
   at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<>c__DisplayClass19_0.<RenderTheImage>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 924
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<>c__DisplayClass18_0.<RenderWithAltAndTitle>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 860
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<RenderTheContent>b__48_0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2402
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.Execute() in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2347
   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> 2 @using Dynamicweb.Frontend 3 @using Dynamicweb.Rapido.Blocks.Components 4 @using Dynamicweb.Rapido.Blocks.Components.General 5 6 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 7 @using Dynamicweb.Frontend 8 9 @* Include the components *@ 10 @using System.Text.RegularExpressions 11 @using System.Collections.Generic 12 @using System.Reflection 13 @using System.Web 14 @using System.Web.UI.HtmlControls 15 @using Dynamicweb.Rapido.Blocks.Components 16 @using Dynamicweb.Rapido.Blocks.Components.Articles 17 @using Dynamicweb.Rapido.Blocks.Components.Documentation 18 @using Dynamicweb.Rapido.Blocks 19 20 21 @*--- START: Base block renderers ---*@ 22 23 @helper RenderBlockList(List<Block> blocks) 24 { 25 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 26 blocks = blocks.OrderBy(item => item.SortId).ToList(); 27 28 foreach (Block item in blocks) 29 { 30 if (debug) { 31 <!-- Block START: @item.Id --> 32 } 33 34 if (item.Design == null) 35 { 36 @RenderBlock(item) 37 } 38 else if (item.Design.RenderType == RenderType.None) { 39 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 40 41 <div class="@cssClass dw-mod"> 42 @RenderBlock(item) 43 </div> 44 } 45 else if (item.Design.RenderType != RenderType.Hide) 46 { 47 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 48 49 if (!item.SkipRenderBlocksList) { 50 if (item.Design.RenderType == RenderType.Row) 51 { 52 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id"> 53 @RenderBlock(item) 54 </div> 55 } 56 57 if (item.Design.RenderType == RenderType.Column) 58 { 59 string hidePadding = item.Design.HidePadding ? "u-no-padding" : ""; 60 string size = item.Design.Size ?? "12"; 61 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size; 62 63 <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"> 64 @RenderBlock(item) 65 </div> 66 } 67 68 if (item.Design.RenderType == RenderType.Table) 69 { 70 <table class="table @cssClass dw-mod" id="Block__@item.Id"> 71 @RenderBlock(item) 72 </table> 73 } 74 75 if (item.Design.RenderType == RenderType.TableRow) 76 { 77 <tr class="@cssClass dw-mod" id="Block__@item.Id"> 78 @RenderBlock(item) 79 </tr> 80 } 81 82 if (item.Design.RenderType == RenderType.TableColumn) 83 { 84 <td class="@cssClass dw-mod" id="Block__@item.Id"> 85 @RenderBlock(item) 86 </td> 87 } 88 89 if (item.Design.RenderType == RenderType.CardHeader) 90 { 91 <div class="card-header @cssClass dw-mod"> 92 @RenderBlock(item) 93 </div> 94 } 95 96 if (item.Design.RenderType == RenderType.CardBody) 97 { 98 <div class="card @cssClass dw-mod"> 99 @RenderBlock(item) 100 </div> 101 } 102 103 if (item.Design.RenderType == RenderType.CardFooter) 104 { 105 <div class="card-footer @cssClass dw-mod"> 106 @RenderBlock(item) 107 </div> 108 } 109 } 110 else 111 { 112 @RenderBlock(item) 113 } 114 } 115 116 if (debug) { 117 <!-- Block END: @item.Id --> 118 } 119 } 120 } 121 122 @helper RenderBlock(Block item) 123 { 124 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 125 126 if (item.Template != null) 127 { 128 @BlocksPage.RenderTemplate(item.Template) 129 } 130 131 if (item.Component != null) 132 { 133 string customSufix = "Custom"; 134 string methodName = item.Component.HelperName; 135 136 ComponentBase[] methodParameters = new ComponentBase[1]; 137 methodParameters[0] = item.Component; 138 Type methodType = this.GetType(); 139 140 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix); 141 MethodInfo generalMethod = methodType.GetMethod(methodName); 142 143 try { 144 if (debug) { 145 <!-- Component: @methodName.Replace("Render", "") --> 146 } 147 @customMethod.Invoke(this, methodParameters).ToString(); 148 } catch { 149 try { 150 @generalMethod.Invoke(this, methodParameters).ToString(); 151 } catch(Exception ex) { 152 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex); 153 } 154 } 155 } 156 157 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList) 158 { 159 @RenderBlockList(item.BlocksList) 160 } 161 } 162 163 @*--- END: Base block renderers ---*@ 164 165 @using Dynamicweb.Rapido.Blocks.Components 166 @using Dynamicweb.Rapido.Blocks.Components.General 167 @using Dynamicweb.Rapido.Blocks 168 @using System.IO 169 170 @* Required *@ 171 @using Dynamicweb.Rapido.Blocks.Components 172 @using Dynamicweb.Rapido.Blocks.Components.General 173 @using Dynamicweb.Rapido.Blocks 174 175 176 @helper Render(ComponentBase component) 177 { 178 if (component != null) 179 { 180 @component.Render(this) 181 } 182 } 183 184 @* Components *@ 185 @using System.Reflection 186 @using Dynamicweb.Rapido.Blocks.Components.General 187 188 189 @* Component *@ 190 191 @helper RenderIcon(Icon settings) 192 { 193 if (settings != null) 194 { 195 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 196 197 if (settings.Name != null) 198 { 199 if (string.IsNullOrEmpty(settings.Label)) 200 { 201 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i> 202 } 203 else 204 { 205 if (settings.LabelPosition == IconLabelPosition.Before) 206 { 207 <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> 208 } 209 else 210 { 211 <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> 212 } 213 } 214 } 215 else if (!string.IsNullOrEmpty(settings.Label)) 216 { 217 @settings.Label 218 } 219 } 220 } 221 @using System.Reflection 222 @using Dynamicweb.Rapido.Blocks.Components.General 223 @using Dynamicweb.Rapido.Blocks.Components 224 @using Dynamicweb.Core 225 226 @* Component *@ 227 228 @helper RenderButton(Button settings) 229 { 230 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 231 { 232 Dictionary<string, string> attributes = new Dictionary<string, string>(); 233 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 234 if (settings.Disabled) { 235 attributes.Add("disabled", "true"); 236 classList.Add("disabled"); 237 } 238 239 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle)) 240 { 241 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 242 @RenderConfirmDialog(settings); 243 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true"; 244 } 245 246 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 247 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 248 if (!string.IsNullOrEmpty(settings.AltText)) 249 { 250 attributes.Add("title", settings.AltText); 251 } 252 else if (!string.IsNullOrEmpty(settings.Title)) 253 { 254 string cleanTitle = Regex.Replace(settings.Title, "<.*?>", String.Empty); 255 cleanTitle = cleanTitle.Replace("&nbsp;", " "); 256 attributes.Add("title", cleanTitle); 257 } 258 259 var onClickEvents = new List<string>(); 260 if (!string.IsNullOrEmpty(settings.OnClick)) 261 { 262 onClickEvents.Add(settings.OnClick); 263 } 264 if (!string.IsNullOrEmpty(settings.Href)) 265 { 266 onClickEvents.Add("location.href='" + settings.Href + "'"); 267 } 268 if (onClickEvents.Count > 0) 269 { 270 attributes.Add("onClick", string.Join(";", onClickEvents)); 271 } 272 273 if (settings.ButtonLayout != ButtonLayout.None) 274 { 275 classList.Add("btn"); 276 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 277 if (btnLayout == "linkclean") 278 { 279 btnLayout = "link-clean"; //fix 280 } 281 classList.Add("btn--" + btnLayout); 282 } 283 284 if (settings.Icon == null) 285 { 286 settings.Icon = new Icon(); 287 } 288 289 settings.Icon.CssClass += Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower() != "linkclean" ? " u-flex--align-center" : ""; 290 settings.Icon.Label = settings.Title; 291 292 attributes.Add("type", Enum.GetName(typeof(ButtonType), settings.ButtonType).ToLower()); 293 294 <button class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</button> 295 } 296 } 297 298 @helper RenderConfirmDialog(Button settings) 299 { 300 Modal confirmDialog = new Modal { 301 Id = settings.Id, 302 Width = ModalWidth.Sm, 303 Heading = new Heading 304 { 305 Level = 2, 306 Title = settings.ConfirmTitle 307 }, 308 BodyText = settings.ConfirmText 309 }; 310 311 confirmDialog.AddAction(new Button { Title = Translate("Cancel"), ButtonLayout = ButtonLayout.Secondary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false"}); 312 confirmDialog.AddAction(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false;" + settings.OnClick }); 313 314 @Render(confirmDialog) 315 } 316 @using Dynamicweb.Rapido.Blocks.Components.General 317 @using Dynamicweb.Rapido.Blocks.Components 318 @using Dynamicweb.Core 319 320 @helper RenderDashboard(Dashboard settings) 321 { 322 var widgets = settings.GetWidgets(); 323 324 if (!string.IsNullOrEmpty(settings.WidgetsBaseBackgroundColor)) 325 { 326 //set bg color for them 327 328 System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(settings.WidgetsBaseBackgroundColor); 329 int r = Convert.ToInt16(color.R); 330 int g = Convert.ToInt16(color.G); 331 int b = Convert.ToInt16(color.B); 332 333 var count = widgets.Length; 334 var max = Math.Max(r, Math.Max(g, b)); 335 double step = 255.0 / (max * count); 336 var i = 0; 337 foreach (var widget in widgets) 338 { 339 i++; 340 341 var shade = "rgb(" + Converter.ToString(r * step * i).Replace(",", ".") + ", " + Converter.ToString(g * step * i).Replace(",", ".") + ", " + Converter.ToString(b * step * i).Replace(",", ".") + ")"; 342 widget.BackgroundColor = shade; 343 } 344 } 345 346 <div class="dashboard @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 347 @foreach (var widget in widgets) 348 { 349 <div class="dashboard__widget"> 350 @Render(widget) 351 </div> 352 } 353 </div> 354 } 355 @using Dynamicweb.Rapido.Blocks.Components.General 356 @using Dynamicweb.Rapido.Blocks.Components 357 358 @helper RenderDashboardWidgetLink(DashboardWidgetLink settings) 359 { 360 if (!string.IsNullOrEmpty(settings.Link)) 361 { 362 var backgroundStyles = ""; 363 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 364 { 365 backgroundStyles = "style=\"background-color:" + settings.BackgroundColor + "\""; 366 } 367 368 <a href="@settings.Link" class="widget widget--link @settings.CssClass dw-mod" @backgroundStyles title="@settings.Title" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 369 <div class="u-center-middle u-color-light"> 370 @if (settings.Icon != null) 371 { 372 settings.Icon.CssClass += "widget__icon"; 373 @Render(settings.Icon) 374 } 375 <div class="widget__title">@settings.Title</div> 376 </div> 377 </a> 378 } 379 } 380 @using Dynamicweb.Rapido.Blocks.Components.General 381 @using Dynamicweb.Rapido.Blocks.Components 382 383 @helper RenderDashboardWidgetCounter(DashboardWidgetCounter settings) 384 { 385 var backgroundStyles = ""; 386 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 387 { 388 backgroundStyles = "style='background-color:" + settings.BackgroundColor + "'"; 389 } 390 391 <div class="widget @settings.CssClass dw-mod" @backgroundStyles @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 392 <div class="u-center-middle u-color-light"> 393 @if (settings.Icon != null) 394 { 395 settings.Icon.CssClass += "widget__icon"; 396 @Render(settings.Icon) 397 } 398 <div class="widget__counter">@settings.Count</div> 399 <div class="widget__title">@settings.Title</div> 400 </div> 401 </div> 402 } 403 @using System.Reflection 404 @using Dynamicweb.Rapido.Blocks.Components.General 405 @using Dynamicweb.Rapido.Blocks.Components 406 @using Dynamicweb.Core 407 408 @* Component *@ 409 410 @helper RenderLink(Link settings) 411 { 412 if (settings != null && !string.IsNullOrEmpty(settings.Href) && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 413 { 414 Dictionary<string, string> attributes = new Dictionary<string, string>(); 415 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 416 if (settings.Disabled) 417 { 418 attributes.Add("disabled", "true"); 419 classList.Add("disabled"); 420 } 421 422 if (!string.IsNullOrEmpty(settings.AltText)) 423 { 424 attributes.Add("title", settings.AltText); 425 } 426 else if (!string.IsNullOrEmpty(settings.Title)) 427 { 428 attributes.Add("title", settings.Title); 429 } 430 431 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 432 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 433 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onClick", settings.OnClick); } 434 attributes.Add("href", settings.Href); 435 436 if (settings.ButtonLayout != ButtonLayout.None) 437 { 438 classList.Add("btn"); 439 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 440 if (btnLayout == "linkclean") 441 { 442 btnLayout = "link-clean"; //fix 443 } 444 classList.Add("btn--" + btnLayout); 445 } 446 447 if (settings.Icon == null) 448 { 449 settings.Icon = new Icon(); 450 } 451 settings.Icon.Label = settings.Title; 452 453 if (settings.Target == LinkTargetType.Blank && settings.Rel == LinkRelType.None) 454 { 455 settings.Rel = LinkRelType.Noopener; 456 } 457 if (settings.Target != LinkTargetType.None) 458 { 459 attributes.Add("target", "_" + Enum.GetName(typeof(LinkTargetType), settings.Target).ToLower()); 460 } 461 if (settings.Download) 462 { 463 attributes.Add("download", "true"); 464 } 465 if (settings.Rel != LinkRelType.None) 466 { 467 attributes.Add("rel", Enum.GetName(typeof(LinkRelType), settings.Rel).ToLower()); 468 } 469 470 <a class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</a> 471 } 472 } 473 @using System.Reflection 474 @using Dynamicweb.Rapido.Blocks.Components 475 @using Dynamicweb.Rapido.Blocks.Components.General 476 @using Dynamicweb.Rapido.Blocks 477 478 479 @* Component *@ 480 481 @helper RenderRating(Rating settings) 482 { 483 if (settings.Score > 0) 484 { 485 int rating = settings.Score; 486 string iconType = "fa-star"; 487 488 switch (settings.Type.ToString()) { 489 case "Stars": 490 iconType = "fa-star"; 491 break; 492 case "Hearts": 493 iconType = "fa-heart"; 494 break; 495 case "Lemons": 496 iconType = "fa-lemon"; 497 break; 498 case "Bombs": 499 iconType = "fa-bomb"; 500 break; 501 } 502 503 <div class="u-ta-right"> 504 @for (int i = 0; i < settings.OutOf; i++) 505 { 506 <i class="@(rating > i ? "fas" : "far") @iconType"></i> 507 } 508 </div> 509 } 510 } 511 @using System.Reflection 512 @using Dynamicweb.Rapido.Blocks.Components.General 513 @using Dynamicweb.Rapido.Blocks.Components 514 515 516 @* Component *@ 517 518 @helper RenderSelectFieldOption(SelectFieldOption settings) 519 { 520 Dictionary<string, string> attributes = new Dictionary<string, string>(); 521 if (settings.Checked) { attributes.Add("selected", "true"); } 522 if (settings.Disabled) { attributes.Add("disabled", "true"); } 523 if (settings.Value != null) { attributes.Add("value", settings.Value); } 524 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 525 526 <option @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Label</option> 527 } 528 @using System.Reflection 529 @using Dynamicweb.Rapido.Blocks.Components.General 530 @using Dynamicweb.Rapido.Blocks.Components 531 532 533 @* Component *@ 534 535 @helper RenderNavigation(Navigation settings) { 536 @RenderNavigation(new 537 { 538 id = settings.Id, 539 cssclass = settings.CssClass, 540 startLevel = settings.StartLevel, 541 endlevel = settings.EndLevel, 542 expandmode = settings.Expandmode, 543 sitemapmode = settings.SitemapMode, 544 template = settings.Template 545 }) 546 } 547 @using Dynamicweb.Rapido.Blocks.Components.General 548 @using Dynamicweb.Rapido.Blocks.Components 549 550 551 @* Component *@ 552 553 @helper RenderBreadcrumbNavigation(BreadcrumbNavigation settings) { 554 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 555 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 556 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 557 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 558 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 559 settings.SitemapMode = false; 560 561 @RenderNavigation(settings) 562 } 563 @using Dynamicweb.Rapido.Blocks.Components.General 564 @using Dynamicweb.Rapido.Blocks.Components 565 566 567 @* Component *@ 568 569 @helper RenderLeftNavigation(LeftNavigation settings) { 570 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 571 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 572 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 573 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 574 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 575 576 <div class="grid__cell"> 577 @RenderNavigation(settings) 578 </div> 579 } 580 @using System.Reflection 581 @using Dynamicweb.Rapido.Blocks.Components.General 582 @using Dynamicweb.Core 583 584 @* Component *@ 585 586 @helper RenderHeading(Heading settings) 587 { 588 if (settings != null && !string.IsNullOrEmpty(settings.Title)) 589 { 590 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 591 string tagName = settings.Level != 0 ? "h" + settings.Level.ToString() : "div"; 592 593 @("<" + tagName + " class=\"" + settings.CssClass + " dw-mod\" " + color + ">") 594 if (!string.IsNullOrEmpty(settings.Link)) 595 { 596 @Render(new Link { Href = settings.Link, Icon = settings.Icon, Title = settings.Title, ButtonLayout = ButtonLayout.None }) 597 } 598 else 599 { 600 if (settings.Icon == null) 601 { 602 settings.Icon = new Icon(); 603 } 604 settings.Icon.Label = settings.Title; 605 @Render(settings.Icon) 606 } 607 @("</" + tagName + ">"); 608 } 609 } 610 @using Dynamicweb.Rapido.Blocks.Components 611 @using Dynamicweb.Rapido.Blocks.Components.General 612 @using Dynamicweb.Rapido.Blocks 613 614 615 @* Component *@ 616 617 @helper RenderImage(Image settings) 618 { 619 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 620 { 621 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 622 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 623 624 if (settings.Caption != null) 625 { 626 @:<div> 627 } 628 629 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 630 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 631 632 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 633 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 634 @if (settings.Link != null) 635 { 636 <a href="@settings.Link"> 637 @RenderTheImage(settings) 638 </a> 639 } 640 else 641 { 642 @RenderTheImage(settings) 643 } 644 </div> 645 </div> 646 647 if (settings.Caption != null) 648 { 649 <span class="image-caption dw-mod">@settings.Caption</span> 650 @:</div> 651 } 652 } 653 else 654 { 655 if (settings.Caption != null) 656 { 657 @:<div> 658 } 659 if (!string.IsNullOrEmpty(settings.Link)) 660 { 661 <a href="@settings.Link"> 662 @RenderTheImage(settings) 663 </a> 664 } 665 else 666 { 667 @RenderTheImage(settings) 668 } 669 670 if (settings.Caption != null) 671 { 672 <span class="image-caption dw-mod">@settings.Caption</span> 673 @:</div> 674 } 675 } 676 } 677 678 @helper RenderTheImage(Image settings) 679 { 680 if (settings != null) 681 { 682 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 683 string placeholderImage = "/Files/Images/placeholder.gif"; 684 string imageEngine = "/Admin/Public/GetImage.ashx?"; 685 686 string imageStyle = ""; 687 688 switch (settings.Style) 689 { 690 case ImageStyle.Ball: 691 imageStyle = "grid__cell-img--ball"; 692 break; 693 694 case ImageStyle.Triangle: 695 imageStyle = "grid__cell-img--triangle"; 696 break; 697 } 698 699 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 700 { 701 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 702 703 if (settings.ImageDefault != null) 704 { 705 settings.ImageDefault.Height = settings.ImageDefault.Width; 706 } 707 if (settings.ImageMedium != null) 708 { 709 settings.ImageMedium.Height = settings.ImageMedium.Width; 710 } 711 if (settings.ImageSmall != null) 712 { 713 settings.ImageSmall.Height = settings.ImageSmall.Width; 714 } 715 } 716 717 string defaultImage = imageEngine; 718 string imageSmall = ""; 719 string imageMedium = ""; 720 721 if (settings.DisableImageEngine) 722 { 723 defaultImage = settings.Path; 724 } 725 else 726 { 727 if (settings.ImageDefault != null) 728 { 729 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 730 731 if (settings.Path.GetType() != typeof(string)) 732 { 733 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 734 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 735 } 736 else 737 { 738 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 739 } 740 741 defaultImage += "&AlternativeImage=" + alternativeImage; 742 } 743 744 if (settings.ImageSmall != null) 745 { 746 imageSmall = "data-src-small=\"" + imageEngine; 747 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 748 749 if (settings.Path.GetType() != typeof(string)) 750 { 751 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 752 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 753 } 754 else 755 { 756 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 757 } 758 759 imageSmall += "&alternativeImage=" + alternativeImage; 760 761 imageSmall += "\""; 762 } 763 764 if (settings.ImageMedium != null) 765 { 766 imageMedium = "data-src-medium=\"" + imageEngine; 767 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 768 769 if (settings.Path.GetType() != typeof(string)) 770 { 771 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 772 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 773 } 774 else 775 { 776 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 777 } 778 779 imageMedium += "&alternativeImage=" + alternativeImage; 780 781 imageMedium += "\""; 782 } 783 } 784 785 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 786 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 787 if (!string.IsNullOrEmpty(settings.Title)) 788 { 789 optionalAttributes.Add("alt", settings.Title); 790 optionalAttributes.Add("title", settings.Title); 791 } 792 793 if (settings.DisableLazyLoad) 794 { 795 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 796 } 797 else 798 { 799 <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) /> 800 } 801 } 802 } 803 @using Dynamicweb.Rapido.Blocks.Components 804 @using Dynamicweb.Rapido.Blocks.Components.General 805 @using Dynamicweb.Rapido.Blocks 806 807 808 @* Component *@ 809 810 @helper RenderWithAltAndTitle(Image settings, string alText = "", string titleText = "") 811 { 812 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 813 { 814 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 815 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 816 817 if (settings.Caption != null) 818 { 819 @:<div> 820 } 821 822 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 823 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 824 825 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 826 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 827 @if (settings.Link != null) 828 { 829 <a href="@settings.Link"> 830 @RenderTheImage(settings, alText, titleText) 831 </a> 832 } 833 else 834 { 835 @RenderTheImage(settings, alText, titleText) 836 } 837 </div> 838 </div> 839 840 if (settings.Caption != null) 841 { 842 <span class="image-caption dw-mod">@settings.Caption</span> 843 @:</div> 844 } 845 } 846 else 847 { 848 if (settings.Caption != null) 849 { 850 @:<div> 851 } 852 if (!string.IsNullOrEmpty(settings.Link)) 853 { 854 <a href="@settings.Link"> 855 @RenderTheImage(settings, alText, titleText) 856 </a> 857 } 858 else 859 { 860 @RenderTheImage(settings, alText, titleText) 861 } 862 863 if (settings.Caption != null) 864 { 865 <span class="image-caption dw-mod">@settings.Caption</span> 866 @:</div> 867 } 868 } 869 } 870 871 @helper RenderTheImage(Image settings, string alText = "", string titleText = "") 872 { 873 if (settings != null) 874 { 875 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 876 string placeholderImage = "/Files/Images/placeholder.gif"; 877 string imageEngine = "/Admin/Public/GetImage.ashx?"; 878 879 string imageStyle = ""; 880 881 switch (settings.Style) 882 { 883 case ImageStyle.Ball: 884 imageStyle = "grid__cell-img--ball"; 885 break; 886 887 case ImageStyle.Triangle: 888 imageStyle = "grid__cell-img--triangle"; 889 break; 890 } 891 892 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 893 { 894 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 895 896 if (settings.ImageDefault != null) 897 { 898 settings.ImageDefault.Height = settings.ImageDefault.Width; 899 } 900 if (settings.ImageMedium != null) 901 { 902 settings.ImageMedium.Height = settings.ImageMedium.Width; 903 } 904 if (settings.ImageSmall != null) 905 { 906 settings.ImageSmall.Height = settings.ImageSmall.Width; 907 } 908 } 909 910 string defaultImage = imageEngine; 911 string imageSmall = ""; 912 string imageMedium = ""; 913 914 if (settings.DisableImageEngine) 915 { 916 defaultImage = settings.Path; 917 } 918 else 919 { 920 if (settings.ImageDefault != null) 921 { 922 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 923 924 if (settings.Path.GetType() != typeof(string)) 925 { 926 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 927 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 928 } 929 else 930 { 931 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 932 } 933 934 defaultImage += "&AlternativeImage=" + alternativeImage; 935 } 936 937 if (settings.ImageSmall != null) 938 { 939 imageSmall = "data-src-small=\"" + imageEngine; 940 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 941 942 if (settings.Path.GetType() != typeof(string)) 943 { 944 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 945 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 946 } 947 else 948 { 949 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 950 } 951 952 imageSmall += "&alternativeImage=" + alternativeImage; 953 954 imageSmall += "\""; 955 } 956 957 if (settings.ImageMedium != null) 958 { 959 imageMedium = "data-src-medium=\"" + imageEngine; 960 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 961 962 if (settings.Path.GetType() != typeof(string)) 963 { 964 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 965 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 966 } 967 else 968 { 969 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 970 971 972 } 973 974 imageMedium += "&alternativeImage=" + alternativeImage; 975 976 imageMedium += "\""; 977 } 978 } 979 980 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 981 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 982 if (!string.IsNullOrEmpty(settings.Title)) 983 { 984 optionalAttributes.Add("alt", settings.Title); 985 optionalAttributes.Add("title", settings.Title); 986 } 987 988 989 990 string imgAlt = ""; 991 string imgTitle = ""; 992 993 if (!string.IsNullOrWhiteSpace(alText)) 994 { 995 imgAlt = "alt=" + '"' + alText + '"'; 996 } 997 998 if (!string.IsNullOrWhiteSpace(titleText)) 999 { 1000 imgTitle = "title=" + '"' + titleText + '"'; 1001 1002 } 1003 1004 1005 if (settings.DisableLazyLoad) 1006 { 1007 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1008 } 1009 else 1010 { 1011 <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) @imgAlt @imgTitle /> 1012 } 1013 } 1014 } 1015 @using System.Reflection 1016 @using Dynamicweb.Rapido.Blocks.Components.General 1017 @using Dynamicweb.Rapido.Blocks.Components 1018 1019 @* Component *@ 1020 1021 @helper RenderFileField(FileField settings) 1022 { 1023 var attributes = new Dictionary<string, string>(); 1024 if (string.IsNullOrEmpty(settings.Id)) 1025 { 1026 settings.Id = Guid.NewGuid().ToString("N"); 1027 } 1028 1029 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1030 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1031 if (settings.Required) { attributes.Add("required", "true"); } 1032 if (settings.Multiple) { attributes.Add("multiple", "true"); } 1033 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1034 if (string.IsNullOrEmpty(settings.ChooseFileText)) 1035 { 1036 settings.ChooseFileText = Translate("Choose file"); 1037 } 1038 if (string.IsNullOrEmpty(settings.NoFilesChosenText)) 1039 { 1040 settings.NoFilesChosenText = Translate("No files chosen..."); 1041 } 1042 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1043 1044 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1045 1046 string setValueToFakeInput = "FileUpload.setValueToFakeInput(this)"; 1047 attributes.Add("onchange", setValueToFakeInput + (!string.IsNullOrEmpty(settings.OnChange) ? settings.OnChange : "")); 1048 1049 attributes.Add("type", "file"); 1050 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1051 settings.CssClass = "u-full-width " + settings.CssClass; 1052 1053 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1054 1055 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1056 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1057 { 1058 <div class="u-full-width"> 1059 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1060 @if (settings.Link != null) { 1061 <div class="u-pull--right"> 1062 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1063 @Render(settings.Link) 1064 </div> 1065 } 1066 </div> 1067 1068 } 1069 1070 @if (!string.IsNullOrEmpty(settings.HelpText)) 1071 { 1072 <small class="form__help-text">@settings.HelpText</small> 1073 } 1074 1075 <div class="form__field-combi file-input u-no-margin dw-mod"> 1076 <input @ComponentMethods.AddAttributes(resultAttributes) class="file-input__real-input" data-no-files-text="@settings.NoFilesChosenText" data-many-files-text="@Translate("files")" /> 1077 <label for="@settings.Id" class="file-input__btn btn--secondary btn dw-mod">@settings.ChooseFileText</label> 1078 <label for="@settings.Id" class="@settings.CssClass file-input__fake-input js-fake-input dw-mod">@settings.NoFilesChosenText</label> 1079 @if (settings.UploadButton != null) 1080 { 1081 settings.UploadButton.CssClass += " btn--condensed u-no-margin"; 1082 @Render(settings.UploadButton) 1083 } 1084 </div> 1085 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1086 </div> 1087 } 1088 @using System.Reflection 1089 @using Dynamicweb.Rapido.Blocks.Components.General 1090 @using Dynamicweb.Rapido.Blocks.Components 1091 @using Dynamicweb.Core 1092 @using System.Linq 1093 1094 @* Component *@ 1095 1096 @helper RenderDateTimeField(DateTimeField settings) 1097 { 1098 if (string.IsNullOrEmpty(settings.Id)) 1099 { 1100 settings.Id = Guid.NewGuid().ToString("N"); 1101 } 1102 1103 var textField = new TextField { 1104 Name = settings.Name, 1105 Id = settings.Id, 1106 Label = settings.Label, 1107 HelpText = settings.HelpText, 1108 Value = settings.Value, 1109 Disabled = settings.Disabled, 1110 Required = settings.Required, 1111 ErrorMessage = settings.ErrorMessage, 1112 CssClass = settings.CssClass, 1113 WrapperCssClass = settings.WrapperCssClass, 1114 OnChange = settings.OnChange, 1115 OnClick = settings.OnClick, 1116 Link = settings.Link, 1117 ExtraAttributes = settings.ExtraAttributes, 1118 // 1119 Placeholder = settings.Placeholder 1120 }; 1121 1122 @Render(textField) 1123 1124 List<string> jsAttributes = new List<string>(); 1125 1126 jsAttributes.Add("mode: '" + Enum.GetName(typeof(DateTimeFieldMode), settings.Mode).ToLower() + "'"); 1127 1128 if (!string.IsNullOrEmpty(settings.DateFormat)) 1129 { 1130 jsAttributes.Add("dateFormat: '" + settings.DateFormat + "'"); 1131 } 1132 if (!string.IsNullOrEmpty(settings.MinDate)) 1133 { 1134 jsAttributes.Add("minDate: '" + settings.MinDate + "'"); 1135 } 1136 if (!string.IsNullOrEmpty(settings.MaxDate)) 1137 { 1138 jsAttributes.Add("maxDate: '" + settings.MaxDate + "'"); 1139 } 1140 if (settings.IsInline) 1141 { 1142 jsAttributes.Add("inline: " + Converter.ToString(settings.IsInline).ToLower()); 1143 } 1144 if (settings.EnableTime) 1145 { 1146 jsAttributes.Add("enableTime: " + Converter.ToString(settings.EnableTime).ToLower()); 1147 } 1148 if (settings.EnableWeekNumbers) 1149 { 1150 jsAttributes.Add("weekNumbers: " + Converter.ToString(settings.EnableWeekNumbers).ToLower()); 1151 } 1152 1153 jsAttributes.AddRange(settings.GetFlatPickrOptions().Select(x => x.Key + ": " + x.Value)); 1154 1155 <script> 1156 document.addEventListener("DOMContentLoaded", function () { 1157 flatpickr("#@textField.Id", { 1158 @string.Join(",", jsAttributes) 1159 }); 1160 }); 1161 </script> 1162 } 1163 @using System.Reflection 1164 @using Dynamicweb.Rapido.Blocks.Components.General 1165 @using Dynamicweb.Rapido.Blocks.Components 1166 1167 @* Component *@ 1168 1169 @helper RenderTextField(TextField settings) 1170 { 1171 var attributes = new Dictionary<string, string>(); 1172 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1173 { 1174 settings.Id = Guid.NewGuid().ToString("N"); 1175 } 1176 1177 /*base settings*/ 1178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1179 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1180 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1181 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1182 if (settings.Required) { attributes.Add("required", "true"); } 1183 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1184 /*end*/ 1185 1186 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1187 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1188 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1189 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1190 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1191 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1192 attributes.Add("type", Enum.GetName(typeof(TextFieldType), settings.Type).ToLower()); 1193 if (settings.Type == TextFieldType.Password) { attributes.Add("autocomplete", "off"); }; 1194 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1195 1196 settings.CssClass = "u-full-width " + settings.CssClass; 1197 1198 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1199 1200 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1201 1202 string noMargin = "u-no-margin"; 1203 if (!settings.ReadOnly) { 1204 noMargin = ""; 1205 } 1206 1207 <div class="form__field-group u-full-width @noMargin @settings.WrapperCssClass dw-mod"> 1208 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1209 { 1210 <div class="u-full-width"> 1211 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1212 @if (settings.Link != null) { 1213 settings.Link.ButtonLayout = ButtonLayout.LinkClean; 1214 1215 <div class="u-pull--right"> 1216 @Render(settings.Link) 1217 </div> 1218 } 1219 </div> 1220 1221 } 1222 1223 @if (!string.IsNullOrEmpty(settings.HelpText)) 1224 { 1225 <small class="form__help-text">@settings.HelpText</small> 1226 } 1227 1228 @if (settings.ActionButton != null) 1229 { 1230 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1231 <div class="form__field-combi u-no-margin dw-mod"> 1232 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1233 @Render(settings.ActionButton) 1234 </div> 1235 } 1236 else 1237 { 1238 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1239 } 1240 1241 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1242 </div> 1243 } 1244 @using System.Reflection 1245 @using Dynamicweb.Rapido.Blocks.Components.General 1246 @using Dynamicweb.Rapido.Blocks.Components 1247 1248 @* Component *@ 1249 1250 @helper RenderNumberField(NumberField settings) 1251 { 1252 var attributes = new Dictionary<string, string>(); 1253 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1254 { 1255 settings.Id = Guid.NewGuid().ToString("N"); 1256 } 1257 1258 /*base settings*/ 1259 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1260 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1261 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1262 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1263 if (settings.Required) { attributes.Add("required", "true"); } 1264 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1265 /*end*/ 1266 1267 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1268 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1269 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1270 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1271 if (settings.Max != null) { attributes.Add("max", settings.Max.ToString()); } 1272 if (settings.Min != null) { attributes.Add("min", settings.Min.ToString()); } 1273 if (settings.Step != 0) { attributes.Add("step", settings.Step.ToString()); } 1274 if (settings.Value != null && !string.IsNullOrEmpty(settings.Value.ToString())) { attributes.Add("value", settings.Value.ToString()); } 1275 attributes.Add("type", "number"); 1276 1277 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1278 1279 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1280 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1281 { 1282 <div class="u-full-width"> 1283 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1284 @if (settings.Link != null) { 1285 <div class="u-pull--right"> 1286 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1287 @Render(settings.Link) 1288 </div> 1289 } 1290 </div> 1291 1292 } 1293 1294 @if (!string.IsNullOrEmpty(settings.HelpText)) 1295 { 1296 <small class="form__help-text">@settings.HelpText</small> 1297 } 1298 1299 @if (settings.ActionButton != null) 1300 { 1301 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1302 <div class="form__field-combi u-no-margin dw-mod"> 1303 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1304 @Render(settings.ActionButton) 1305 </div> 1306 } 1307 else 1308 { 1309 <div class="form__field-combi u-no-margin dw-mod"> 1310 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1311 </div> 1312 } 1313 1314 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1315 </div> 1316 } 1317 @using System.Reflection 1318 @using Dynamicweb.Rapido.Blocks.Components.General 1319 @using Dynamicweb.Rapido.Blocks.Components 1320 1321 1322 @* Component *@ 1323 1324 @helper RenderTextareaField(TextareaField settings) 1325 { 1326 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1327 string id = settings.Id; 1328 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(id)) 1329 { 1330 id = Guid.NewGuid().ToString("N"); 1331 } 1332 1333 if (!string.IsNullOrEmpty(id)) { attributes.Add("id", id); } 1334 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1335 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1336 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1337 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1338 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1339 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1340 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1341 if (settings.Required) { attributes.Add("required", "true"); } 1342 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1343 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1344 if (settings.Rows != 0) { attributes.Add("rows", settings.Rows.ToString()); } 1345 attributes.Add("name", settings.Name); 1346 1347 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1348 1349 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1350 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1351 { 1352 <div class="u-full-width"> 1353 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1354 @if (settings.Link != null) { 1355 <div class="u-pull--right"> 1356 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1357 @Render(settings.Link) 1358 </div> 1359 } 1360 </div> 1361 } 1362 1363 @if (!string.IsNullOrEmpty(settings.HelpText)) 1364 { 1365 <small class="form__help-text">@settings.HelpText</small> 1366 } 1367 1368 <textarea class="u-full-width @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Value</textarea> 1369 1370 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1371 </div> 1372 } 1373 @using System.Reflection 1374 @using Dynamicweb.Rapido.Blocks.Components.General 1375 @using Dynamicweb.Rapido.Blocks.Components 1376 1377 1378 @* Component *@ 1379 1380 @helper RenderHiddenField(HiddenField settings) { 1381 var attributes = new Dictionary<string, string>(); 1382 attributes.Add("type", "hidden"); 1383 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1384 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1385 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1386 1387 <input @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)/> 1388 } 1389 @using System.Reflection 1390 @using Dynamicweb.Rapido.Blocks.Components.General 1391 @using Dynamicweb.Rapido.Blocks.Components 1392 1393 @* Component *@ 1394 1395 @helper RenderCheckboxField(CheckboxField settings) 1396 { 1397 var attributes = new Dictionary<string, string>(); 1398 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1399 { 1400 settings.Id = Guid.NewGuid().ToString("N"); 1401 } 1402 1403 /*base settings*/ 1404 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1405 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1406 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1407 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1408 if (settings.Required) { attributes.Add("required", "true"); } 1409 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1410 /*end*/ 1411 1412 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1413 1414 attributes.Add("type", "checkbox"); 1415 if (settings.Checked) { attributes.Add("checked", "true"); } 1416 settings.CssClass = "form__control " + settings.CssClass; 1417 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1418 1419 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1420 1421 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1422 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1423 @if (!string.IsNullOrEmpty(settings.Label)) 1424 { 1425 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1426 } 1427 1428 @if (settings.Link != null) { 1429 <span> 1430 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1431 @Render(settings.Link) 1432 </span> 1433 } 1434 1435 @if (!string.IsNullOrEmpty(settings.HelpText)) 1436 { 1437 <small class="form__help-text checkbox-help dw-mod">@settings.HelpText</small> 1438 } 1439 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1440 </div> 1441 } 1442 @using System.Reflection 1443 @using Dynamicweb.Rapido.Blocks.Components.General 1444 @using Dynamicweb.Rapido.Blocks.Components 1445 1446 1447 @* Component *@ 1448 1449 @helper RenderCheckboxListField(CheckboxListField settings) 1450 { 1451 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1452 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1453 { 1454 <div class="u-full-width"> 1455 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1456 @if (settings.Link != null) { 1457 <div class="u-pull--right"> 1458 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1459 @Render(settings.Link) 1460 </div> 1461 } 1462 </div> 1463 1464 } 1465 1466 <div class="u-pull--left"> 1467 @if (!string.IsNullOrEmpty(settings.HelpText)) 1468 { 1469 <small class="form__help-text">@settings.HelpText</small> 1470 } 1471 1472 @foreach (var item in settings.Options) 1473 { 1474 if (settings.Required) 1475 { 1476 item.Required = true; 1477 } 1478 if (settings.Disabled) 1479 { 1480 item.Disabled = true; 1481 } 1482 if (!string.IsNullOrEmpty(settings.Name)) 1483 { 1484 item.Name = settings.Name; 1485 } 1486 if (!string.IsNullOrEmpty(settings.CssClass)) 1487 { 1488 item.CssClass += settings.CssClass; 1489 } 1490 1491 /* value is not supported */ 1492 1493 if (!string.IsNullOrEmpty(settings.OnClick)) 1494 { 1495 item.OnClick += settings.OnClick; 1496 } 1497 if (!string.IsNullOrEmpty(settings.OnChange)) 1498 { 1499 item.OnChange += settings.OnChange; 1500 } 1501 @Render(item) 1502 } 1503 1504 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1505 </div> 1506 1507 </div> 1508 } 1509 @using Dynamicweb.Rapido.Blocks.Components.General 1510 1511 @* Component *@ 1512 1513 @helper RenderSearch(Search settings) 1514 { 1515 var searchValue = HttpContext.Current.Request.QueryString.Get(settings.SearchParameter) ?? ""; 1516 var groupValue = HttpContext.Current.Request.QueryString.Get(settings.GroupsParameter) ?? ""; 1517 1518 if (string.IsNullOrEmpty(settings.Id)) 1519 { 1520 settings.Id = Guid.NewGuid().ToString("N"); 1521 } 1522 1523 var resultAttributes = new Dictionary<string, string>(); 1524 1525 if (settings.PageSize != 0) 1526 { 1527 resultAttributes.Add("data-page-size", settings.PageSize.ToString()); 1528 } 1529 if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1530 { 1531 resultAttributes.Add("data-groups-feed-url", settings.GroupItemsFeedUrl); 1532 if (!string.IsNullOrEmpty(groupValue)) 1533 { 1534 resultAttributes.Add("data-selected-group", groupValue); 1535 } 1536 if (!string.IsNullOrEmpty(settings.GroupsParameter)) 1537 { 1538 resultAttributes.Add("data-groups-parameter", settings.GroupsParameter); 1539 } 1540 } 1541 resultAttributes.Add("data-force-init", "true"); 1542 if (settings.GoToFirstSearchResultOnEnter) 1543 { 1544 resultAttributes.Add("data-go-to-first-search-result-on-enter", settings.GoToFirstSearchResultOnEnter.ToString().ToLower()); 1545 } 1546 if (!string.IsNullOrEmpty(settings.SearchParameter)) 1547 { 1548 resultAttributes.Add("data-search-parameter", settings.SearchParameter); 1549 } 1550 resultAttributes.Add("data-search-feed-url", settings.SearchData.SearchFeedUrl); 1551 resultAttributes.Add("data-results-template-id", settings.SearchData.ResultsTemplateId); 1552 1553 if (settings.SecondSearchData != null) 1554 { 1555 resultAttributes.Add("data-second-search-feed-url", settings.SecondSearchData.SearchFeedUrl); 1556 resultAttributes.Add("data-second-results-template-id", settings.SecondSearchData.ResultsTemplateId); 1557 } 1558 if (!string.IsNullOrEmpty(settings.ResultsPageUrl)) 1559 { 1560 resultAttributes.Add("data-results-page-url", settings.ResultsPageUrl); 1561 } 1562 1563 resultAttributes = resultAttributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1564 1565 string searchFieldCss = (settings.SearchButton == null) ? "search--with-icon" : ""; 1566 1567 <div class="search @settings.CssClass @searchFieldCss js-search-data-source dw-mod" id="@settings.Id" @ComponentMethods.AddAttributes(resultAttributes)> 1568 @if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1569 { 1570 <button type="button" class="search__groups-btn dw-mod js-search-groups-btn">@Translate("All")</button> 1571 <ul class="dropdown dropdown--absolute-position dw-mod search__groups-results js-search-groups-list"></ul> 1572 } 1573 1574 <input type="text" class="search__field dw-mod js-search-field" placeholder="@settings.Placeholder" value="@searchValue"> 1575 1576 <div class="dropdown dropdown--absolute-position search__results dw-mod js-search-results @(settings.SecondSearchData != null ? "search__results--combined" : "")"> 1577 @if (settings.SecondSearchData != null) 1578 { 1579 <div class="search__column search__column--products dw-mod"> 1580 <div class="search__column-header dw-mod">@Translate("Products")</div> 1581 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1582 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1583 { 1584 @Render(new Link { 1585 Title = Translate("View all"), 1586 CssClass = "js-view-all-button u-margin", 1587 Href = settings.SearchData.ResultsPageUrl 1588 }); 1589 } 1590 </div> 1591 <div class="search__column search__column--pages dw-mod"> 1592 <div class="search__column-header">@Translate("Pages")</div> 1593 <ul class="search__results-list dw-mod js-search-results-second-list" id="@(settings.Id)_SecondResultsList"></ul> 1594 @if (!string.IsNullOrEmpty(settings.SecondSearchData.ResultsPageUrl)) 1595 { 1596 @Render(new Link 1597 { 1598 Title = Translate("View all"), 1599 CssClass = "js-view-all-button u-margin", 1600 Href = settings.SecondSearchData.ResultsPageUrl 1601 }); 1602 } 1603 </div> 1604 } 1605 else 1606 { 1607 <div class="search__column search__column--only dw-mod"> 1608 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1609 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1610 { 1611 @Render(new Link { 1612 Title = Translate("View all"), 1613 CssClass = "js-view-all-button u-margin", 1614 Href = settings.SearchData.ResultsPageUrl 1615 }); 1616 } 1617 </div> 1618 } 1619 </div> 1620 1621 @if (settings.SearchButton != null) 1622 { 1623 settings.SearchButton.CssClass += " search__btn js-search-btn"; 1624 if (settings.RenderDefaultSearchIcon) 1625 { 1626 settings.SearchButton.Icon = new Icon { Name = Pageview.AreaSettings.GetItem("Layout").GetItem("Icons").GetList("SearchIcon").SelectedValue }; 1627 } 1628 @Render(settings.SearchButton); 1629 } 1630 </div> 1631 } 1632 @using System.Reflection 1633 @using Dynamicweb.Rapido.Blocks.Components.General 1634 @using Dynamicweb.Rapido.Blocks.Components 1635 1636 1637 @* Component *@ 1638 1639 @helper RenderSelectField(SelectField settings) 1640 { 1641 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1642 { 1643 settings.Id = Guid.NewGuid().ToString("N"); 1644 } 1645 1646 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1647 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1648 { 1649 <div class="u-full-width"> 1650 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1651 @if (settings.Link != null) { 1652 <div class="u-pull--right"> 1653 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1654 @Render(settings.Link) 1655 </div> 1656 } 1657 </div> 1658 } 1659 1660 @if (!string.IsNullOrEmpty(settings.HelpText)) 1661 { 1662 <small class="form__help-text">@settings.HelpText</small> 1663 } 1664 1665 @if (settings.ActionButton != null) 1666 { 1667 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1668 <div class="form__field-combi u-no-margin dw-mod"> 1669 @RenderSelectBase(settings) 1670 @Render(settings.ActionButton) 1671 </div> 1672 } 1673 else 1674 { 1675 @RenderSelectBase(settings) 1676 } 1677 1678 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1679 </div> 1680 } 1681 1682 @helper RenderSelectBase(SelectField settings) 1683 { 1684 var attributes = new Dictionary<string, string>(); 1685 1686 /*base settings*/ 1687 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1688 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1689 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1690 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1691 if (settings.Required) { attributes.Add("required", "true"); } 1692 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1693 /*end*/ 1694 1695 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1696 1697 <select @ComponentMethods.AddAttributes(resultAttributes) class="u-full-width @settings.CssClass dw-mod"> 1698 @if (settings.Default != null) 1699 { 1700 @Render(settings.Default) 1701 } 1702 1703 @foreach (var item in settings.Options) 1704 { 1705 if (settings.Value != null) { 1706 item.Checked = item.Value == settings.Value; 1707 } 1708 @Render(item) 1709 } 1710 </select> 1711 } 1712 @using System.Reflection 1713 @using Dynamicweb.Rapido.Blocks.Components.General 1714 @using Dynamicweb.Rapido.Blocks.Components 1715 1716 @* Component *@ 1717 1718 @helper RenderRadioButtonField(RadioButtonField settings) 1719 { 1720 var attributes = new Dictionary<string, string>(); 1721 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1722 { 1723 settings.Id = Guid.NewGuid().ToString("N"); 1724 } 1725 1726 /*base settings*/ 1727 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1728 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1729 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1730 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1731 if (settings.Required) { attributes.Add("required", "true"); } 1732 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1733 /*end*/ 1734 1735 attributes.Add("type", "radio"); 1736 if (settings.Checked) { attributes.Add("checked", "true"); } 1737 settings.CssClass = "form__control " + settings.CssClass; 1738 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1739 1740 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1741 1742 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1743 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1744 @if (!string.IsNullOrEmpty(settings.Label)) 1745 { 1746 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1747 } 1748 @if (!string.IsNullOrEmpty(settings.HelpText)) 1749 { 1750 <small class="form__help-text">@settings.HelpText</small> 1751 } 1752 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1753 </div> 1754 } 1755 @using System.Reflection 1756 @using Dynamicweb.Rapido.Blocks.Components.General 1757 @using Dynamicweb.Rapido.Blocks.Components 1758 1759 1760 @* Component *@ 1761 1762 @helper RenderRadioButtonListField(RadioButtonListField settings) 1763 { 1764 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1765 1766 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1767 @if (!string.IsNullOrEmpty(settings.Label)) 1768 { 1769 <label>@settings.Label</label> 1770 } 1771 @if (!string.IsNullOrEmpty(settings.HelpText)) 1772 { 1773 <small class="form__help-text">@settings.HelpText</small> 1774 } 1775 1776 @foreach (var item in settings.Options) 1777 { 1778 if (settings.Required) 1779 { 1780 item.Required = true; 1781 } 1782 if (settings.Disabled) 1783 { 1784 item.Disabled = true; 1785 } 1786 if (!string.IsNullOrEmpty(settings.Name)) 1787 { 1788 item.Name = settings.Name; 1789 } 1790 if (settings.Value != null && settings.Value == item.Value) 1791 { 1792 item.Checked = true; 1793 } 1794 if (!string.IsNullOrEmpty(settings.OnClick)) 1795 { 1796 item.OnClick += settings.OnClick; 1797 } 1798 if (!string.IsNullOrEmpty(settings.OnChange)) 1799 { 1800 item.OnChange += settings.OnChange; 1801 } 1802 if (!string.IsNullOrEmpty(settings.CssClass)) 1803 { 1804 item.CssClass += settings.CssClass; 1805 } 1806 @Render(item) 1807 } 1808 1809 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1810 </div> 1811 } 1812 @using System.Reflection 1813 @using Dynamicweb.Rapido.Blocks.Components.General 1814 @using Dynamicweb.Rapido.Blocks.Components 1815 1816 1817 @* Component *@ 1818 1819 @helper RenderNotificationMessage(NotificationMessage settings) 1820 { 1821 if (!string.IsNullOrEmpty(settings.Message)) 1822 { 1823 var attributes = new Dictionary<string, string>(); 1824 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1825 1826 string messageTypeClass = Enum.GetName(typeof(NotificationMessageType), settings.MessageType).ToLower(); 1827 string messageLayoutClass = Enum.GetName(typeof(NotificationMessageLayout), settings.MessageLayout).ToLower(); 1828 string minHeightClass = settings.Icon != null ? "u-min-h70px" : ""; 1829 1830 <div class="notification-message-@messageTypeClass notification-message-@messageLayoutClass @messageLayoutClass @minHeightClass @settings.CssClass u-full-width dw-mod" @ComponentMethods.AddAttributes(attributes)> 1831 @if (settings.Icon != null) { 1832 settings.Icon.Label = !string.IsNullOrEmpty(settings.Icon.Label) ? settings.Message + settings.Icon.Label : settings.Message; 1833 @Render(settings.Icon) 1834 } else { 1835 @settings.Message 1836 } 1837 </div> 1838 } 1839 } 1840 @using Dynamicweb.Rapido.Blocks.Components.General 1841 1842 1843 @* Component *@ 1844 1845 @helper RenderHandlebarsRoot(HandlebarsRoot settings) { 1846 string preRender = !String.IsNullOrEmpty(settings.PreRenderScriptTemplate) ? "data-pre-render-template=\"" + settings.PreRenderScriptTemplate + "\"" : ""; 1847 1848 <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> 1849 @if (settings.SubBlocks != null) { 1850 @RenderBlockList(settings.SubBlocks) 1851 } 1852 </div> 1853 } 1854 @using System.Reflection 1855 @using Dynamicweb.Rapido.Blocks.Components.General 1856 @using Dynamicweb.Rapido.Blocks.Components 1857 @using System.Text.RegularExpressions 1858 1859 1860 @* Component *@ 1861 1862 @helper RenderSticker(Sticker settings) { 1863 if (!String.IsNullOrEmpty(settings.Title)) { 1864 string size = settings.Size.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Size.ToString().ToLower() : ""; 1865 string style = settings.Style.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Style.ToString().ToLower() : ""; 1866 1867 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 1868 if (!String.IsNullOrEmpty(settings.Color) || !String.IsNullOrEmpty(settings.BackgroundColor)) { 1869 string styleTag = !String.IsNullOrEmpty(settings.Color) ? "color: " + settings.Color + "; " : ""; 1870 styleTag += !String.IsNullOrEmpty(settings.BackgroundColor) ? "background-color: " + settings.BackgroundColor + "; " : ""; 1871 optionalAttributes.Add("style", styleTag); 1872 } 1873 1874 <div class="stickers-container__tag @size @style @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Title</div> 1875 } 1876 } 1877 1878 @using System.Reflection 1879 @using Dynamicweb.Rapido.Blocks.Components.General 1880 @using Dynamicweb.Rapido.Blocks.Components 1881 1882 1883 @* Component *@ 1884 1885 @helper RenderStickersCollection(StickersCollection settings) 1886 { 1887 if (settings.Stickers.Count > 0) 1888 { 1889 string position = "stickers-container--" + Regex.Replace(settings.Position.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower(); 1890 1891 <div class="stickers-container @position @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1892 @foreach (Sticker sticker in settings.Stickers) 1893 { 1894 @Render(sticker) 1895 } 1896 </div> 1897 } 1898 } 1899 1900 @using Dynamicweb.Rapido.Blocks.Components.General 1901 1902 1903 @* Component *@ 1904 1905 @helper RenderForm(Form settings) { 1906 if (settings != null) 1907 { 1908 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 1909 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); }; 1910 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); }; 1911 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); }; 1912 var enctypes = new Dictionary<string, string> 1913 { 1914 { "multipart", "multipart/form-data" }, 1915 { "text", "text/plain" }, 1916 { "application", "application/x-www-form-urlencoded" } 1917 }; 1918 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); }; 1919 optionalAttributes.Add("method", settings.Method.ToString()); 1920 1921 if (!string.IsNullOrEmpty(settings.FormStartMarkup)) 1922 { 1923 @settings.FormStartMarkup 1924 } 1925 else 1926 { 1927 @:<form class="@settings.CssClass u-no-margin dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1928 } 1929 1930 foreach (var field in settings.GetFields()) 1931 { 1932 @Render(field) 1933 } 1934 1935 @:</form> 1936 } 1937 } 1938 @using System.Reflection 1939 @using Dynamicweb.Rapido.Blocks.Components.General 1940 @using Dynamicweb.Rapido.Blocks.Components 1941 1942 1943 @* Component *@ 1944 1945 @helper RenderText(Text settings) 1946 { 1947 @settings.Content 1948 } 1949 @using System.Reflection 1950 @using Dynamicweb.Rapido.Blocks.Components.General 1951 @using Dynamicweb.Rapido.Blocks.Components 1952 1953 1954 @* Component *@ 1955 1956 @helper RenderContentModule(ContentModule settings) { 1957 if (!string.IsNullOrEmpty(settings.Content)) 1958 { 1959 @settings.Content 1960 } 1961 } 1962 @using System.Reflection 1963 @using Dynamicweb.Rapido.Blocks.Components.General 1964 @using Dynamicweb.Rapido.Blocks.Components 1965 1966 1967 @* Component *@ 1968 1969 @helper RenderModal(Modal settings) { 1970 if (settings != null) 1971 { 1972 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 1973 1974 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : ""; 1975 1976 <input type="checkbox" id="@(modalId)ModalTrigger" class="modal-trigger" @onchange /> 1977 1978 <div class="modal-container"> 1979 @if (!settings.DisableDarkOverlay) 1980 { 1981 <label for="@(modalId)ModalTrigger" id="@(modalId)ModalOverlay" class="modal-overlay"></label> 1982 } 1983 <div class="modal modal--@settings.Width.ToString().ToLower() modal-height--@settings.Height.ToString().ToLower()" id="@(modalId)Modal"> 1984 @if (settings.Heading != null) 1985 { 1986 if (!string.IsNullOrEmpty(settings.Heading.Title)) 1987 { 1988 <div class="modal__header"> 1989 @Render(settings.Heading) 1990 </div> 1991 } 1992 } 1993 <div class="modal__body @(settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "")"> 1994 @if (!string.IsNullOrEmpty(settings.BodyText)) 1995 { 1996 @settings.BodyText 1997 } 1998 @if (settings.BodyTemplate != null) 1999 { 2000 @settings.BodyTemplate 2001 } 2002 @{ 2003 var actions = settings.GetActions(); 2004 } 2005 </div> 2006 @if (actions.Length > 0) 2007 { 2008 <div class="modal__footer"> 2009 @foreach (var action in actions) 2010 { 2011 if (Pageview.Device.ToString() != "Mobile") { 2012 action.CssClass += " u-no-margin"; 2013 } else { 2014 action.CssClass += " u-full-width u-margin-bottom"; 2015 } 2016 2017 @Render(action) 2018 } 2019 </div> 2020 } 2021 <label class="modal__close-btn" for="@(modalId)ModalTrigger"></label> 2022 </div> 2023 </div> 2024 } 2025 } 2026 @using Dynamicweb.Rapido.Blocks.Components.General 2027 2028 @* Component *@ 2029 2030 @helper RenderMediaListItem(MediaListItem settings) 2031 { 2032 <div class="media-list-item @settings.CssClass dw-mod" @(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "")> 2033 @if (!string.IsNullOrEmpty(settings.Label)) 2034 { 2035 if (!string.IsNullOrEmpty(settings.Link)) 2036 { 2037 @Render(new Link 2038 { 2039 Href = settings.Link, 2040 CssClass = "media-list-item__sticker dw-mod", 2041 ButtonLayout = ButtonLayout.None, 2042 Title = settings.Label, 2043 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2044 }) 2045 } 2046 else if (!string.IsNullOrEmpty(settings.OnClick)) 2047 { 2048 <span class="media-list-item__sticker dw-mod" onclick="@(settings.OnClick)"> 2049 <span class="u-uppercase">@settings.Label</span> 2050 </span> 2051 } 2052 else 2053 { 2054 <span class="media-list-item__sticker media-list-item__sticker--no-link dw-mod"> 2055 <span class="u-uppercase">@settings.Label</span> 2056 </span> 2057 } 2058 } 2059 <div class="media-list-item__wrap"> 2060 <div class="media-list-item__info dw-mod"> 2061 <div class="media-list-item__header dw-mod"> 2062 @if (!string.IsNullOrEmpty(settings.Title)) 2063 { 2064 if (!string.IsNullOrEmpty(settings.Link)) 2065 { 2066 @Render(new Link 2067 { 2068 Href = settings.Link, 2069 CssClass = "media-list-item__name dw-mod", 2070 ButtonLayout = ButtonLayout.None, 2071 Title = settings.Title, 2072 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2073 }) 2074 } 2075 else if (!string.IsNullOrEmpty(settings.OnClick)) 2076 { 2077 <span class="media-list-item__name dw-mod" onclick="@(settings.OnClick)">@settings.Title</span> 2078 } 2079 else 2080 { 2081 <span class="media-list-item__name media-list-item__name--no-link dw-mod">@settings.Title</span> 2082 } 2083 } 2084 2085 @if (!string.IsNullOrEmpty(settings.Status)) 2086 { 2087 <div class="media-list-item__state dw-mod">@settings.Status</div> 2088 } 2089 </div> 2090 @{ 2091 settings.InfoTable.CssClass += " media-list-item__parameters-table"; 2092 } 2093 2094 @Render(settings.InfoTable) 2095 </div> 2096 <div class="media-list-item__actions dw-mod"> 2097 <div class="media-list-item__actions-list dw-mod"> 2098 @{ 2099 var actions = settings.GetActions(); 2100 2101 foreach (ButtonBase action in actions) 2102 { 2103 action.ButtonLayout = ButtonLayout.None; 2104 action.CssClass += " media-list-item__action link"; 2105 2106 @Render(action) 2107 } 2108 } 2109 </div> 2110 2111 @if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title)) 2112 { 2113 settings.SelectButton.CssClass += " u-no-margin"; 2114 2115 <div class="media-list-item__action-button"> 2116 @Render(settings.SelectButton) 2117 </div> 2118 } 2119 </div> 2120 </div> 2121 </div> 2122 } 2123 @using Dynamicweb.Rapido.Blocks.Components.General 2124 @using Dynamicweb.Rapido.Blocks.Components 2125 2126 @helper RenderTable(Table settings) 2127 { 2128 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2129 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2130 2131 var enumToClasses = new Dictionary<TableDesign, string> 2132 { 2133 { TableDesign.Clean, "table--clean" }, 2134 { TableDesign.Bordered, "table--bordered" }, 2135 { TableDesign.Striped, "table--striped" }, 2136 { TableDesign.Hover, "table--hover" }, 2137 { TableDesign.Compact, "table--compact" }, 2138 { TableDesign.Condensed, "table--condensed" }, 2139 { TableDesign.NoTopBorder, "table--no-top-border" } 2140 }; 2141 string tableDesignClass = ""; 2142 if (settings.Design != TableDesign.None) 2143 { 2144 tableDesignClass = enumToClasses[settings.Design]; 2145 } 2146 2147 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); } 2148 2149 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2150 2151 <table @ComponentMethods.AddAttributes(resultAttributes)> 2152 @if (settings.Header != null) 2153 { 2154 <thead> 2155 @Render(settings.Header) 2156 </thead> 2157 } 2158 <tbody> 2159 @foreach (var row in settings.Rows) 2160 { 2161 @Render(row) 2162 } 2163 </tbody> 2164 @if (settings.Footer != null) 2165 { 2166 <tfoot> 2167 @Render(settings.Footer) 2168 </tfoot> 2169 } 2170 </table> 2171 } 2172 @using Dynamicweb.Rapido.Blocks.Components.General 2173 @using Dynamicweb.Rapido.Blocks.Components 2174 2175 @helper RenderTableRow(TableRow settings) 2176 { 2177 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2179 2180 var enumToClasses = new Dictionary<TableRowDesign, string> 2181 { 2182 { TableRowDesign.NoBorder, "table__row--no-border" }, 2183 { TableRowDesign.Border, "table__row--border" }, 2184 { TableRowDesign.TopBorder, "table__row--top-line" }, 2185 { TableRowDesign.BottomBorder, "table__row--bottom-line" }, 2186 { TableRowDesign.Solid, "table__row--solid" } 2187 }; 2188 2189 string tableRowDesignClass = ""; 2190 if (settings.Design != TableRowDesign.None) 2191 { 2192 tableRowDesignClass = enumToClasses[settings.Design]; 2193 } 2194 2195 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); } 2196 2197 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2198 2199 <tr @ComponentMethods.AddAttributes(resultAttributes)> 2200 @foreach (var cell in settings.Cells) 2201 { 2202 if (settings.IsHeaderRow) 2203 { 2204 cell.IsHeader = true; 2205 } 2206 @Render(cell) 2207 } 2208 </tr> 2209 } 2210 @using Dynamicweb.Rapido.Blocks.Components.General 2211 @using Dynamicweb.Rapido.Blocks.Components 2212 @using Dynamicweb.Core 2213 2214 @helper RenderTableCell(TableCell settings) 2215 { 2216 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2217 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2218 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); } 2219 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); } 2220 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); } 2221 2222 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2223 2224 string tagName = settings.IsHeader ? "th" : "td"; 2225 2226 @("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">") 2227 @settings.Content 2228 @("</" + tagName + ">"); 2229 } 2230 @using System.Linq 2231 @using Dynamicweb.Rapido.Blocks.Components.General 2232 2233 @* Component *@ 2234 2235 @helper RenderPagination(Dynamicweb.Rapido.Blocks.Components.General.Pagination settings) 2236 { 2237 var pageNumberQueryStringName = Dynamicweb.Rapido.Services.Pagination.GetPageNumberQueryStringName(settings); // Get the proper 'page number' query string parameter 2238 var queryParameters = Dynamicweb.Rapido.Services.Url.GetQueryParameters(pageNumberQueryStringName); // Get the NameValueCollection from the querystring 2239 2240 if (settings.NumberOfPages > 1) 2241 { 2242 string url = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/Default.aspx"; 2243 string ariaLabel = !string.IsNullOrWhiteSpace(settings.AriaLabel) ? settings.AriaLabel : Translate("Page navigation"); 2244 Dictionary<string, int> startAndEndPageNumber = Dynamicweb.Rapido.Services.Pagination.GetStartAndEndPageNumber(settings); 2245 2246 <div class="pager u-margin-top dw-mod @settings.CssClass" aria-label="@ariaLabel"> 2247 @if (settings.ShowPagingInfo) 2248 { 2249 <div class="pager__info dw-mod"> 2250 @Translate("Page") @settings.CurrentPageNumber @Translate("of") @settings.NumberOfPages 2251 </div> 2252 } 2253 <ul class="pager__list dw-mod"> 2254 @if (!string.IsNullOrWhiteSpace(settings.FirstPageUrl) && settings.ShowFirstAndLastControls) 2255 { 2256 @Render(new PaginationItem { Link = settings.FirstPageUrl, Icon = settings.FirstIcon }) 2257 } 2258 @if (!string.IsNullOrWhiteSpace(settings.PreviousPageUrl) && settings.ShowNextAndPrevControls) 2259 { 2260 @Render(new PaginationItem { Link = settings.PreviousPageUrl, Icon = settings.PrevIcon }) 2261 } 2262 @if (settings.GetPages().Any()) 2263 { 2264 foreach (var page in settings.GetPages()) 2265 { 2266 @Render(page) 2267 } 2268 } 2269 else 2270 { 2271 for (var page = startAndEndPageNumber["StartPage"]; page <= startAndEndPageNumber["EndPage"]; page++) 2272 { 2273 queryParameters = Dynamicweb.Rapido.Services.Url.UpdateQueryStringParameter(queryParameters, pageNumberQueryStringName, page.ToString()); 2274 @Render(new PaginationItem { Label = page.ToString(), Link = Dynamicweb.Rapido.Services.Url.BuildUri(url, queryParameters).PathAndQuery, IsActive = (settings.CurrentPageNumber == page) }); 2275 } 2276 } 2277 @if (!string.IsNullOrWhiteSpace(settings.NextPageUrl) && settings.ShowNextAndPrevControls) 2278 { 2279 @Render(new PaginationItem { Link = settings.NextPageUrl, Icon = settings.NextIcon }) 2280 } 2281 @if (!string.IsNullOrWhiteSpace(settings.LastPageUrl) && settings.ShowFirstAndLastControls) 2282 { 2283 @Render(new PaginationItem { Link = settings.LastPageUrl, Icon = settings.LastIcon }) 2284 } 2285 </ul> 2286 </div> 2287 } 2288 } 2289 2290 @helper RenderPaginationItem(PaginationItem settings) 2291 { 2292 if (settings.Icon == null) 2293 { 2294 settings.Icon = new Icon(); 2295 } 2296 2297 settings.Icon.Label = settings.Label; 2298 <li class="pager__btn dw-mod"> 2299 @if (settings.IsActive) 2300 { 2301 <span class="pager__num pager__num--current dw-mod"> 2302 @Render(settings.Icon) 2303 </span> 2304 } 2305 else 2306 { 2307 <a href="@settings.Link" class="pager__num dw-mod"> 2308 @Render(settings.Icon) 2309 </a> 2310 } 2311 </li> 2312 } 2313 2314 2315 @using Dynamicweb.Rapido.Blocks.Components.General 2316 @using Dynamicweb.Rapido.Blocks.Components.Ecommerce 2317 2318 2319 2320 2321 2322 @functions { 2323 public string GenerateRgba(string color, string opacity) 2324 { 2325 color = color.Replace("#", ""); 2326 if (color.Length == 6) 2327 { 2328 return "rgba(" + Convert.ToInt32(color.Substring(0, 2), 16) + ", " + Convert.ToInt32(color.Substring(2, 2), 16) + ", " + Convert.ToInt32(color.Substring(4, 2), 16) + ", " + opacity + ");"; 2329 } 2330 else 2331 { 2332 return Convert.ToInt16(color).ToString(); 2333 } 2334 } 2335 } 2336 2337 @{ 2338 string link = !string.IsNullOrEmpty(Model.Item.GetString("Link")) ? Model.Item.GetString("Link") : ""; 2339 string linkTarget = link.Contains("http") || link.Contains(".pdf") ? "_blank" : "_self"; 2340 } 2341 2342 @if (!string.IsNullOrEmpty(link)) 2343 { 2344 @*<a href="@link" target="@linkTarget" class="u-overlay">*@ 2345 <div class="paragraph-image-link-wrapper"> 2346 <a href="@link" target="@linkTarget"> 2347 @RenderTheContent() 2348 </a> 2349 </div> 2350 } 2351 else 2352 { 2353 @RenderTheContent() 2354 } 2355 2356 2357 @helper RenderTheContent() 2358 { 2359 string innerPadding = Model.Item.GetList("Padding") != null ? " padding-size-" + Model.Item.GetList("Padding").SelectedValue.ToLower() : ""; 2360 innerPadding += Model.Item.GetList("PaddingPosition") != null ? " padding-position-" + Model.Item.GetList("PaddingPosition").SelectedValue.ToLower() : ""; 2361 2362 if (!string.IsNullOrEmpty(Model.Item.GetString("Image"))) 2363 { 2364 int width = Model.Item.GetString("ImageWidth") != null ? Model.Item.GetInt32("ImageWidth") : 100; 2365 string styleSetting = Model.Item.GetString("ImageStyle") != null ? Model.Item.GetList("ImageStyle").SelectedValue : ""; 2366 ImageStyle style = ImageStyle.None; 2367 style = styleSetting == "ball" ? style = ImageStyle.Ball : style; 2368 style = styleSetting == "triangle" ? style = ImageStyle.Triangle : style; 2369 var file = Model.Item.GetFile("Image"); 2370 2371 Image image = new Image 2372 { 2373 Path = file, 2374 Style = style, 2375 CssClass = "background-image__cover", 2376 ImageDefault = new ImageSettings 2377 { 2378 Crop = 5, 2379 Width = width 2380 } 2381 }; 2382 2383 if (styleSetting == "square") 2384 { 2385 image.ImageDefault.Crop = 0; 2386 image.ImageDefault.Height = image.ImageDefault.Width; 2387 } 2388 2389 string imageAltText = ""; 2390 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageAltText"))) 2391 { 2392 imageAltText = Model.Item.GetString("ImageAltText"); 2393 } 2394 2395 string imageTitleText = ""; 2396 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageTitleText"))) 2397 { 2398 imageTitleText = Model.Item.GetString("ImageTitleText"); 2399 } 2400 2401 <div class="paragraph-image"> 2402 @RenderWithAltAndTitle(image, imageAltText, imageTitleText) 2403 </div> 2404 } 2405 2406 <div class="u-full-width u-padding-top dw-mod"> 2407 @if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) || !string.IsNullOrEmpty(Model.Item.GetString("Text"))) 2408 { 2409 <div class="u-margin-bottom--lg"> 2410 @if (!Model.Item.GetBoolean("HideTitle")) 2411 { 2412 @Render(new Heading { Title = Model.Item.GetString("Title"), Level = 2, CssClass = "u-no-margin" }) 2413 } 2414 @Render(new Text { Content = Model.Item.GetString("Text") }) 2415 </div> 2416 } 2417 </div> 2418 2419 if (!string.IsNullOrEmpty(Model.Item.GetItem("ButtonOne").GetString("Title"))) 2420 { 2421 <div class="buttons-collection u-block dw-mod"> 2422 @ParagraphButton(Model.Item.GetItem("ButtonOne")) 2423 </div> 2424 } 2425 } 2426 2427 2428 @helper ParagraphButton(ItemViewModel item) 2429 { 2430 if (item != null) 2431 { 2432 if (!string.IsNullOrEmpty(item.GetString("Title"))) 2433 { 2434 Button button = new Button 2435 { 2436 Title = item.GetString("Title"), 2437 Href = item.GetString("Link"), 2438 ButtonLayout = (ButtonLayout)System.Enum.Parse(typeof(ButtonLayout), char.ToUpper(item.GetList("Layout").SelectedValue[0]) + item.GetList("Layout").SelectedValue.Substring(1)) 2439 }; 2440 2441 if (!string.IsNullOrEmpty(item.GetString("Icon"))) 2442 { 2443 button.Icon = new Icon 2444 { 2445 CssClass = item.GetString("Icon") 2446 }; 2447 } 2448 2449 @Render(button) 2450 } 2451 } 2452 } 2453 2454 2455 2456 2457 2458
Error executing template "Designs/Rapido/ContentPage/Paragraph/StandardParagraphThree.cshtml"
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference
   at CallSite.Target(Closure , CallSite , Object )
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<>c__DisplayClass19_0.<RenderTheImage>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 924
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<>c__DisplayClass18_0.<RenderWithAltAndTitle>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 860
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<RenderTheContent>b__48_0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2402
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.Execute() in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2347
   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> 2 @using Dynamicweb.Frontend 3 @using Dynamicweb.Rapido.Blocks.Components 4 @using Dynamicweb.Rapido.Blocks.Components.General 5 6 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 7 @using Dynamicweb.Frontend 8 9 @* Include the components *@ 10 @using System.Text.RegularExpressions 11 @using System.Collections.Generic 12 @using System.Reflection 13 @using System.Web 14 @using System.Web.UI.HtmlControls 15 @using Dynamicweb.Rapido.Blocks.Components 16 @using Dynamicweb.Rapido.Blocks.Components.Articles 17 @using Dynamicweb.Rapido.Blocks.Components.Documentation 18 @using Dynamicweb.Rapido.Blocks 19 20 21 @*--- START: Base block renderers ---*@ 22 23 @helper RenderBlockList(List<Block> blocks) 24 { 25 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 26 blocks = blocks.OrderBy(item => item.SortId).ToList(); 27 28 foreach (Block item in blocks) 29 { 30 if (debug) { 31 <!-- Block START: @item.Id --> 32 } 33 34 if (item.Design == null) 35 { 36 @RenderBlock(item) 37 } 38 else if (item.Design.RenderType == RenderType.None) { 39 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 40 41 <div class="@cssClass dw-mod"> 42 @RenderBlock(item) 43 </div> 44 } 45 else if (item.Design.RenderType != RenderType.Hide) 46 { 47 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 48 49 if (!item.SkipRenderBlocksList) { 50 if (item.Design.RenderType == RenderType.Row) 51 { 52 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id"> 53 @RenderBlock(item) 54 </div> 55 } 56 57 if (item.Design.RenderType == RenderType.Column) 58 { 59 string hidePadding = item.Design.HidePadding ? "u-no-padding" : ""; 60 string size = item.Design.Size ?? "12"; 61 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size; 62 63 <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"> 64 @RenderBlock(item) 65 </div> 66 } 67 68 if (item.Design.RenderType == RenderType.Table) 69 { 70 <table class="table @cssClass dw-mod" id="Block__@item.Id"> 71 @RenderBlock(item) 72 </table> 73 } 74 75 if (item.Design.RenderType == RenderType.TableRow) 76 { 77 <tr class="@cssClass dw-mod" id="Block__@item.Id"> 78 @RenderBlock(item) 79 </tr> 80 } 81 82 if (item.Design.RenderType == RenderType.TableColumn) 83 { 84 <td class="@cssClass dw-mod" id="Block__@item.Id"> 85 @RenderBlock(item) 86 </td> 87 } 88 89 if (item.Design.RenderType == RenderType.CardHeader) 90 { 91 <div class="card-header @cssClass dw-mod"> 92 @RenderBlock(item) 93 </div> 94 } 95 96 if (item.Design.RenderType == RenderType.CardBody) 97 { 98 <div class="card @cssClass dw-mod"> 99 @RenderBlock(item) 100 </div> 101 } 102 103 if (item.Design.RenderType == RenderType.CardFooter) 104 { 105 <div class="card-footer @cssClass dw-mod"> 106 @RenderBlock(item) 107 </div> 108 } 109 } 110 else 111 { 112 @RenderBlock(item) 113 } 114 } 115 116 if (debug) { 117 <!-- Block END: @item.Id --> 118 } 119 } 120 } 121 122 @helper RenderBlock(Block item) 123 { 124 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 125 126 if (item.Template != null) 127 { 128 @BlocksPage.RenderTemplate(item.Template) 129 } 130 131 if (item.Component != null) 132 { 133 string customSufix = "Custom"; 134 string methodName = item.Component.HelperName; 135 136 ComponentBase[] methodParameters = new ComponentBase[1]; 137 methodParameters[0] = item.Component; 138 Type methodType = this.GetType(); 139 140 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix); 141 MethodInfo generalMethod = methodType.GetMethod(methodName); 142 143 try { 144 if (debug) { 145 <!-- Component: @methodName.Replace("Render", "") --> 146 } 147 @customMethod.Invoke(this, methodParameters).ToString(); 148 } catch { 149 try { 150 @generalMethod.Invoke(this, methodParameters).ToString(); 151 } catch(Exception ex) { 152 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex); 153 } 154 } 155 } 156 157 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList) 158 { 159 @RenderBlockList(item.BlocksList) 160 } 161 } 162 163 @*--- END: Base block renderers ---*@ 164 165 @using Dynamicweb.Rapido.Blocks.Components 166 @using Dynamicweb.Rapido.Blocks.Components.General 167 @using Dynamicweb.Rapido.Blocks 168 @using System.IO 169 170 @* Required *@ 171 @using Dynamicweb.Rapido.Blocks.Components 172 @using Dynamicweb.Rapido.Blocks.Components.General 173 @using Dynamicweb.Rapido.Blocks 174 175 176 @helper Render(ComponentBase component) 177 { 178 if (component != null) 179 { 180 @component.Render(this) 181 } 182 } 183 184 @* Components *@ 185 @using System.Reflection 186 @using Dynamicweb.Rapido.Blocks.Components.General 187 188 189 @* Component *@ 190 191 @helper RenderIcon(Icon settings) 192 { 193 if (settings != null) 194 { 195 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 196 197 if (settings.Name != null) 198 { 199 if (string.IsNullOrEmpty(settings.Label)) 200 { 201 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i> 202 } 203 else 204 { 205 if (settings.LabelPosition == IconLabelPosition.Before) 206 { 207 <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> 208 } 209 else 210 { 211 <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> 212 } 213 } 214 } 215 else if (!string.IsNullOrEmpty(settings.Label)) 216 { 217 @settings.Label 218 } 219 } 220 } 221 @using System.Reflection 222 @using Dynamicweb.Rapido.Blocks.Components.General 223 @using Dynamicweb.Rapido.Blocks.Components 224 @using Dynamicweb.Core 225 226 @* Component *@ 227 228 @helper RenderButton(Button settings) 229 { 230 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 231 { 232 Dictionary<string, string> attributes = new Dictionary<string, string>(); 233 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 234 if (settings.Disabled) { 235 attributes.Add("disabled", "true"); 236 classList.Add("disabled"); 237 } 238 239 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle)) 240 { 241 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 242 @RenderConfirmDialog(settings); 243 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true"; 244 } 245 246 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 247 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 248 if (!string.IsNullOrEmpty(settings.AltText)) 249 { 250 attributes.Add("title", settings.AltText); 251 } 252 else if (!string.IsNullOrEmpty(settings.Title)) 253 { 254 string cleanTitle = Regex.Replace(settings.Title, "<.*?>", String.Empty); 255 cleanTitle = cleanTitle.Replace("&nbsp;", " "); 256 attributes.Add("title", cleanTitle); 257 } 258 259 var onClickEvents = new List<string>(); 260 if (!string.IsNullOrEmpty(settings.OnClick)) 261 { 262 onClickEvents.Add(settings.OnClick); 263 } 264 if (!string.IsNullOrEmpty(settings.Href)) 265 { 266 onClickEvents.Add("location.href='" + settings.Href + "'"); 267 } 268 if (onClickEvents.Count > 0) 269 { 270 attributes.Add("onClick", string.Join(";", onClickEvents)); 271 } 272 273 if (settings.ButtonLayout != ButtonLayout.None) 274 { 275 classList.Add("btn"); 276 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 277 if (btnLayout == "linkclean") 278 { 279 btnLayout = "link-clean"; //fix 280 } 281 classList.Add("btn--" + btnLayout); 282 } 283 284 if (settings.Icon == null) 285 { 286 settings.Icon = new Icon(); 287 } 288 289 settings.Icon.CssClass += Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower() != "linkclean" ? " u-flex--align-center" : ""; 290 settings.Icon.Label = settings.Title; 291 292 attributes.Add("type", Enum.GetName(typeof(ButtonType), settings.ButtonType).ToLower()); 293 294 <button class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</button> 295 } 296 } 297 298 @helper RenderConfirmDialog(Button settings) 299 { 300 Modal confirmDialog = new Modal { 301 Id = settings.Id, 302 Width = ModalWidth.Sm, 303 Heading = new Heading 304 { 305 Level = 2, 306 Title = settings.ConfirmTitle 307 }, 308 BodyText = settings.ConfirmText 309 }; 310 311 confirmDialog.AddAction(new Button { Title = Translate("Cancel"), ButtonLayout = ButtonLayout.Secondary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false"}); 312 confirmDialog.AddAction(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false;" + settings.OnClick }); 313 314 @Render(confirmDialog) 315 } 316 @using Dynamicweb.Rapido.Blocks.Components.General 317 @using Dynamicweb.Rapido.Blocks.Components 318 @using Dynamicweb.Core 319 320 @helper RenderDashboard(Dashboard settings) 321 { 322 var widgets = settings.GetWidgets(); 323 324 if (!string.IsNullOrEmpty(settings.WidgetsBaseBackgroundColor)) 325 { 326 //set bg color for them 327 328 System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(settings.WidgetsBaseBackgroundColor); 329 int r = Convert.ToInt16(color.R); 330 int g = Convert.ToInt16(color.G); 331 int b = Convert.ToInt16(color.B); 332 333 var count = widgets.Length; 334 var max = Math.Max(r, Math.Max(g, b)); 335 double step = 255.0 / (max * count); 336 var i = 0; 337 foreach (var widget in widgets) 338 { 339 i++; 340 341 var shade = "rgb(" + Converter.ToString(r * step * i).Replace(",", ".") + ", " + Converter.ToString(g * step * i).Replace(",", ".") + ", " + Converter.ToString(b * step * i).Replace(",", ".") + ")"; 342 widget.BackgroundColor = shade; 343 } 344 } 345 346 <div class="dashboard @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 347 @foreach (var widget in widgets) 348 { 349 <div class="dashboard__widget"> 350 @Render(widget) 351 </div> 352 } 353 </div> 354 } 355 @using Dynamicweb.Rapido.Blocks.Components.General 356 @using Dynamicweb.Rapido.Blocks.Components 357 358 @helper RenderDashboardWidgetLink(DashboardWidgetLink settings) 359 { 360 if (!string.IsNullOrEmpty(settings.Link)) 361 { 362 var backgroundStyles = ""; 363 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 364 { 365 backgroundStyles = "style=\"background-color:" + settings.BackgroundColor + "\""; 366 } 367 368 <a href="@settings.Link" class="widget widget--link @settings.CssClass dw-mod" @backgroundStyles title="@settings.Title" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 369 <div class="u-center-middle u-color-light"> 370 @if (settings.Icon != null) 371 { 372 settings.Icon.CssClass += "widget__icon"; 373 @Render(settings.Icon) 374 } 375 <div class="widget__title">@settings.Title</div> 376 </div> 377 </a> 378 } 379 } 380 @using Dynamicweb.Rapido.Blocks.Components.General 381 @using Dynamicweb.Rapido.Blocks.Components 382 383 @helper RenderDashboardWidgetCounter(DashboardWidgetCounter settings) 384 { 385 var backgroundStyles = ""; 386 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 387 { 388 backgroundStyles = "style='background-color:" + settings.BackgroundColor + "'"; 389 } 390 391 <div class="widget @settings.CssClass dw-mod" @backgroundStyles @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 392 <div class="u-center-middle u-color-light"> 393 @if (settings.Icon != null) 394 { 395 settings.Icon.CssClass += "widget__icon"; 396 @Render(settings.Icon) 397 } 398 <div class="widget__counter">@settings.Count</div> 399 <div class="widget__title">@settings.Title</div> 400 </div> 401 </div> 402 } 403 @using System.Reflection 404 @using Dynamicweb.Rapido.Blocks.Components.General 405 @using Dynamicweb.Rapido.Blocks.Components 406 @using Dynamicweb.Core 407 408 @* Component *@ 409 410 @helper RenderLink(Link settings) 411 { 412 if (settings != null && !string.IsNullOrEmpty(settings.Href) && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 413 { 414 Dictionary<string, string> attributes = new Dictionary<string, string>(); 415 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 416 if (settings.Disabled) 417 { 418 attributes.Add("disabled", "true"); 419 classList.Add("disabled"); 420 } 421 422 if (!string.IsNullOrEmpty(settings.AltText)) 423 { 424 attributes.Add("title", settings.AltText); 425 } 426 else if (!string.IsNullOrEmpty(settings.Title)) 427 { 428 attributes.Add("title", settings.Title); 429 } 430 431 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 432 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 433 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onClick", settings.OnClick); } 434 attributes.Add("href", settings.Href); 435 436 if (settings.ButtonLayout != ButtonLayout.None) 437 { 438 classList.Add("btn"); 439 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 440 if (btnLayout == "linkclean") 441 { 442 btnLayout = "link-clean"; //fix 443 } 444 classList.Add("btn--" + btnLayout); 445 } 446 447 if (settings.Icon == null) 448 { 449 settings.Icon = new Icon(); 450 } 451 settings.Icon.Label = settings.Title; 452 453 if (settings.Target == LinkTargetType.Blank && settings.Rel == LinkRelType.None) 454 { 455 settings.Rel = LinkRelType.Noopener; 456 } 457 if (settings.Target != LinkTargetType.None) 458 { 459 attributes.Add("target", "_" + Enum.GetName(typeof(LinkTargetType), settings.Target).ToLower()); 460 } 461 if (settings.Download) 462 { 463 attributes.Add("download", "true"); 464 } 465 if (settings.Rel != LinkRelType.None) 466 { 467 attributes.Add("rel", Enum.GetName(typeof(LinkRelType), settings.Rel).ToLower()); 468 } 469 470 <a class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</a> 471 } 472 } 473 @using System.Reflection 474 @using Dynamicweb.Rapido.Blocks.Components 475 @using Dynamicweb.Rapido.Blocks.Components.General 476 @using Dynamicweb.Rapido.Blocks 477 478 479 @* Component *@ 480 481 @helper RenderRating(Rating settings) 482 { 483 if (settings.Score > 0) 484 { 485 int rating = settings.Score; 486 string iconType = "fa-star"; 487 488 switch (settings.Type.ToString()) { 489 case "Stars": 490 iconType = "fa-star"; 491 break; 492 case "Hearts": 493 iconType = "fa-heart"; 494 break; 495 case "Lemons": 496 iconType = "fa-lemon"; 497 break; 498 case "Bombs": 499 iconType = "fa-bomb"; 500 break; 501 } 502 503 <div class="u-ta-right"> 504 @for (int i = 0; i < settings.OutOf; i++) 505 { 506 <i class="@(rating > i ? "fas" : "far") @iconType"></i> 507 } 508 </div> 509 } 510 } 511 @using System.Reflection 512 @using Dynamicweb.Rapido.Blocks.Components.General 513 @using Dynamicweb.Rapido.Blocks.Components 514 515 516 @* Component *@ 517 518 @helper RenderSelectFieldOption(SelectFieldOption settings) 519 { 520 Dictionary<string, string> attributes = new Dictionary<string, string>(); 521 if (settings.Checked) { attributes.Add("selected", "true"); } 522 if (settings.Disabled) { attributes.Add("disabled", "true"); } 523 if (settings.Value != null) { attributes.Add("value", settings.Value); } 524 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 525 526 <option @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Label</option> 527 } 528 @using System.Reflection 529 @using Dynamicweb.Rapido.Blocks.Components.General 530 @using Dynamicweb.Rapido.Blocks.Components 531 532 533 @* Component *@ 534 535 @helper RenderNavigation(Navigation settings) { 536 @RenderNavigation(new 537 { 538 id = settings.Id, 539 cssclass = settings.CssClass, 540 startLevel = settings.StartLevel, 541 endlevel = settings.EndLevel, 542 expandmode = settings.Expandmode, 543 sitemapmode = settings.SitemapMode, 544 template = settings.Template 545 }) 546 } 547 @using Dynamicweb.Rapido.Blocks.Components.General 548 @using Dynamicweb.Rapido.Blocks.Components 549 550 551 @* Component *@ 552 553 @helper RenderBreadcrumbNavigation(BreadcrumbNavigation settings) { 554 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 555 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 556 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 557 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 558 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 559 settings.SitemapMode = false; 560 561 @RenderNavigation(settings) 562 } 563 @using Dynamicweb.Rapido.Blocks.Components.General 564 @using Dynamicweb.Rapido.Blocks.Components 565 566 567 @* Component *@ 568 569 @helper RenderLeftNavigation(LeftNavigation settings) { 570 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 571 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 572 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 573 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 574 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 575 576 <div class="grid__cell"> 577 @RenderNavigation(settings) 578 </div> 579 } 580 @using System.Reflection 581 @using Dynamicweb.Rapido.Blocks.Components.General 582 @using Dynamicweb.Core 583 584 @* Component *@ 585 586 @helper RenderHeading(Heading settings) 587 { 588 if (settings != null && !string.IsNullOrEmpty(settings.Title)) 589 { 590 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 591 string tagName = settings.Level != 0 ? "h" + settings.Level.ToString() : "div"; 592 593 @("<" + tagName + " class=\"" + settings.CssClass + " dw-mod\" " + color + ">") 594 if (!string.IsNullOrEmpty(settings.Link)) 595 { 596 @Render(new Link { Href = settings.Link, Icon = settings.Icon, Title = settings.Title, ButtonLayout = ButtonLayout.None }) 597 } 598 else 599 { 600 if (settings.Icon == null) 601 { 602 settings.Icon = new Icon(); 603 } 604 settings.Icon.Label = settings.Title; 605 @Render(settings.Icon) 606 } 607 @("</" + tagName + ">"); 608 } 609 } 610 @using Dynamicweb.Rapido.Blocks.Components 611 @using Dynamicweb.Rapido.Blocks.Components.General 612 @using Dynamicweb.Rapido.Blocks 613 614 615 @* Component *@ 616 617 @helper RenderImage(Image settings) 618 { 619 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 620 { 621 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 622 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 623 624 if (settings.Caption != null) 625 { 626 @:<div> 627 } 628 629 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 630 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 631 632 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 633 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 634 @if (settings.Link != null) 635 { 636 <a href="@settings.Link"> 637 @RenderTheImage(settings) 638 </a> 639 } 640 else 641 { 642 @RenderTheImage(settings) 643 } 644 </div> 645 </div> 646 647 if (settings.Caption != null) 648 { 649 <span class="image-caption dw-mod">@settings.Caption</span> 650 @:</div> 651 } 652 } 653 else 654 { 655 if (settings.Caption != null) 656 { 657 @:<div> 658 } 659 if (!string.IsNullOrEmpty(settings.Link)) 660 { 661 <a href="@settings.Link"> 662 @RenderTheImage(settings) 663 </a> 664 } 665 else 666 { 667 @RenderTheImage(settings) 668 } 669 670 if (settings.Caption != null) 671 { 672 <span class="image-caption dw-mod">@settings.Caption</span> 673 @:</div> 674 } 675 } 676 } 677 678 @helper RenderTheImage(Image settings) 679 { 680 if (settings != null) 681 { 682 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 683 string placeholderImage = "/Files/Images/placeholder.gif"; 684 string imageEngine = "/Admin/Public/GetImage.ashx?"; 685 686 string imageStyle = ""; 687 688 switch (settings.Style) 689 { 690 case ImageStyle.Ball: 691 imageStyle = "grid__cell-img--ball"; 692 break; 693 694 case ImageStyle.Triangle: 695 imageStyle = "grid__cell-img--triangle"; 696 break; 697 } 698 699 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 700 { 701 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 702 703 if (settings.ImageDefault != null) 704 { 705 settings.ImageDefault.Height = settings.ImageDefault.Width; 706 } 707 if (settings.ImageMedium != null) 708 { 709 settings.ImageMedium.Height = settings.ImageMedium.Width; 710 } 711 if (settings.ImageSmall != null) 712 { 713 settings.ImageSmall.Height = settings.ImageSmall.Width; 714 } 715 } 716 717 string defaultImage = imageEngine; 718 string imageSmall = ""; 719 string imageMedium = ""; 720 721 if (settings.DisableImageEngine) 722 { 723 defaultImage = settings.Path; 724 } 725 else 726 { 727 if (settings.ImageDefault != null) 728 { 729 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 730 731 if (settings.Path.GetType() != typeof(string)) 732 { 733 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 734 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 735 } 736 else 737 { 738 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 739 } 740 741 defaultImage += "&AlternativeImage=" + alternativeImage; 742 } 743 744 if (settings.ImageSmall != null) 745 { 746 imageSmall = "data-src-small=\"" + imageEngine; 747 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 748 749 if (settings.Path.GetType() != typeof(string)) 750 { 751 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 752 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 753 } 754 else 755 { 756 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 757 } 758 759 imageSmall += "&alternativeImage=" + alternativeImage; 760 761 imageSmall += "\""; 762 } 763 764 if (settings.ImageMedium != null) 765 { 766 imageMedium = "data-src-medium=\"" + imageEngine; 767 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 768 769 if (settings.Path.GetType() != typeof(string)) 770 { 771 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 772 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 773 } 774 else 775 { 776 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 777 } 778 779 imageMedium += "&alternativeImage=" + alternativeImage; 780 781 imageMedium += "\""; 782 } 783 } 784 785 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 786 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 787 if (!string.IsNullOrEmpty(settings.Title)) 788 { 789 optionalAttributes.Add("alt", settings.Title); 790 optionalAttributes.Add("title", settings.Title); 791 } 792 793 if (settings.DisableLazyLoad) 794 { 795 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 796 } 797 else 798 { 799 <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) /> 800 } 801 } 802 } 803 @using Dynamicweb.Rapido.Blocks.Components 804 @using Dynamicweb.Rapido.Blocks.Components.General 805 @using Dynamicweb.Rapido.Blocks 806 807 808 @* Component *@ 809 810 @helper RenderWithAltAndTitle(Image settings, string alText = "", string titleText = "") 811 { 812 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 813 { 814 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 815 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 816 817 if (settings.Caption != null) 818 { 819 @:<div> 820 } 821 822 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 823 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 824 825 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 826 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 827 @if (settings.Link != null) 828 { 829 <a href="@settings.Link"> 830 @RenderTheImage(settings, alText, titleText) 831 </a> 832 } 833 else 834 { 835 @RenderTheImage(settings, alText, titleText) 836 } 837 </div> 838 </div> 839 840 if (settings.Caption != null) 841 { 842 <span class="image-caption dw-mod">@settings.Caption</span> 843 @:</div> 844 } 845 } 846 else 847 { 848 if (settings.Caption != null) 849 { 850 @:<div> 851 } 852 if (!string.IsNullOrEmpty(settings.Link)) 853 { 854 <a href="@settings.Link"> 855 @RenderTheImage(settings, alText, titleText) 856 </a> 857 } 858 else 859 { 860 @RenderTheImage(settings, alText, titleText) 861 } 862 863 if (settings.Caption != null) 864 { 865 <span class="image-caption dw-mod">@settings.Caption</span> 866 @:</div> 867 } 868 } 869 } 870 871 @helper RenderTheImage(Image settings, string alText = "", string titleText = "") 872 { 873 if (settings != null) 874 { 875 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 876 string placeholderImage = "/Files/Images/placeholder.gif"; 877 string imageEngine = "/Admin/Public/GetImage.ashx?"; 878 879 string imageStyle = ""; 880 881 switch (settings.Style) 882 { 883 case ImageStyle.Ball: 884 imageStyle = "grid__cell-img--ball"; 885 break; 886 887 case ImageStyle.Triangle: 888 imageStyle = "grid__cell-img--triangle"; 889 break; 890 } 891 892 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 893 { 894 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 895 896 if (settings.ImageDefault != null) 897 { 898 settings.ImageDefault.Height = settings.ImageDefault.Width; 899 } 900 if (settings.ImageMedium != null) 901 { 902 settings.ImageMedium.Height = settings.ImageMedium.Width; 903 } 904 if (settings.ImageSmall != null) 905 { 906 settings.ImageSmall.Height = settings.ImageSmall.Width; 907 } 908 } 909 910 string defaultImage = imageEngine; 911 string imageSmall = ""; 912 string imageMedium = ""; 913 914 if (settings.DisableImageEngine) 915 { 916 defaultImage = settings.Path; 917 } 918 else 919 { 920 if (settings.ImageDefault != null) 921 { 922 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 923 924 if (settings.Path.GetType() != typeof(string)) 925 { 926 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 927 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 928 } 929 else 930 { 931 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 932 } 933 934 defaultImage += "&AlternativeImage=" + alternativeImage; 935 } 936 937 if (settings.ImageSmall != null) 938 { 939 imageSmall = "data-src-small=\"" + imageEngine; 940 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 941 942 if (settings.Path.GetType() != typeof(string)) 943 { 944 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 945 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 946 } 947 else 948 { 949 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 950 } 951 952 imageSmall += "&alternativeImage=" + alternativeImage; 953 954 imageSmall += "\""; 955 } 956 957 if (settings.ImageMedium != null) 958 { 959 imageMedium = "data-src-medium=\"" + imageEngine; 960 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 961 962 if (settings.Path.GetType() != typeof(string)) 963 { 964 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 965 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 966 } 967 else 968 { 969 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 970 971 972 } 973 974 imageMedium += "&alternativeImage=" + alternativeImage; 975 976 imageMedium += "\""; 977 } 978 } 979 980 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 981 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 982 if (!string.IsNullOrEmpty(settings.Title)) 983 { 984 optionalAttributes.Add("alt", settings.Title); 985 optionalAttributes.Add("title", settings.Title); 986 } 987 988 989 990 string imgAlt = ""; 991 string imgTitle = ""; 992 993 if (!string.IsNullOrWhiteSpace(alText)) 994 { 995 imgAlt = "alt=" + '"' + alText + '"'; 996 } 997 998 if (!string.IsNullOrWhiteSpace(titleText)) 999 { 1000 imgTitle = "title=" + '"' + titleText + '"'; 1001 1002 } 1003 1004 1005 if (settings.DisableLazyLoad) 1006 { 1007 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1008 } 1009 else 1010 { 1011 <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) @imgAlt @imgTitle /> 1012 } 1013 } 1014 } 1015 @using System.Reflection 1016 @using Dynamicweb.Rapido.Blocks.Components.General 1017 @using Dynamicweb.Rapido.Blocks.Components 1018 1019 @* Component *@ 1020 1021 @helper RenderFileField(FileField settings) 1022 { 1023 var attributes = new Dictionary<string, string>(); 1024 if (string.IsNullOrEmpty(settings.Id)) 1025 { 1026 settings.Id = Guid.NewGuid().ToString("N"); 1027 } 1028 1029 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1030 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1031 if (settings.Required) { attributes.Add("required", "true"); } 1032 if (settings.Multiple) { attributes.Add("multiple", "true"); } 1033 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1034 if (string.IsNullOrEmpty(settings.ChooseFileText)) 1035 { 1036 settings.ChooseFileText = Translate("Choose file"); 1037 } 1038 if (string.IsNullOrEmpty(settings.NoFilesChosenText)) 1039 { 1040 settings.NoFilesChosenText = Translate("No files chosen..."); 1041 } 1042 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1043 1044 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1045 1046 string setValueToFakeInput = "FileUpload.setValueToFakeInput(this)"; 1047 attributes.Add("onchange", setValueToFakeInput + (!string.IsNullOrEmpty(settings.OnChange) ? settings.OnChange : "")); 1048 1049 attributes.Add("type", "file"); 1050 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1051 settings.CssClass = "u-full-width " + settings.CssClass; 1052 1053 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1054 1055 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1056 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1057 { 1058 <div class="u-full-width"> 1059 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1060 @if (settings.Link != null) { 1061 <div class="u-pull--right"> 1062 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1063 @Render(settings.Link) 1064 </div> 1065 } 1066 </div> 1067 1068 } 1069 1070 @if (!string.IsNullOrEmpty(settings.HelpText)) 1071 { 1072 <small class="form__help-text">@settings.HelpText</small> 1073 } 1074 1075 <div class="form__field-combi file-input u-no-margin dw-mod"> 1076 <input @ComponentMethods.AddAttributes(resultAttributes) class="file-input__real-input" data-no-files-text="@settings.NoFilesChosenText" data-many-files-text="@Translate("files")" /> 1077 <label for="@settings.Id" class="file-input__btn btn--secondary btn dw-mod">@settings.ChooseFileText</label> 1078 <label for="@settings.Id" class="@settings.CssClass file-input__fake-input js-fake-input dw-mod">@settings.NoFilesChosenText</label> 1079 @if (settings.UploadButton != null) 1080 { 1081 settings.UploadButton.CssClass += " btn--condensed u-no-margin"; 1082 @Render(settings.UploadButton) 1083 } 1084 </div> 1085 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1086 </div> 1087 } 1088 @using System.Reflection 1089 @using Dynamicweb.Rapido.Blocks.Components.General 1090 @using Dynamicweb.Rapido.Blocks.Components 1091 @using Dynamicweb.Core 1092 @using System.Linq 1093 1094 @* Component *@ 1095 1096 @helper RenderDateTimeField(DateTimeField settings) 1097 { 1098 if (string.IsNullOrEmpty(settings.Id)) 1099 { 1100 settings.Id = Guid.NewGuid().ToString("N"); 1101 } 1102 1103 var textField = new TextField { 1104 Name = settings.Name, 1105 Id = settings.Id, 1106 Label = settings.Label, 1107 HelpText = settings.HelpText, 1108 Value = settings.Value, 1109 Disabled = settings.Disabled, 1110 Required = settings.Required, 1111 ErrorMessage = settings.ErrorMessage, 1112 CssClass = settings.CssClass, 1113 WrapperCssClass = settings.WrapperCssClass, 1114 OnChange = settings.OnChange, 1115 OnClick = settings.OnClick, 1116 Link = settings.Link, 1117 ExtraAttributes = settings.ExtraAttributes, 1118 // 1119 Placeholder = settings.Placeholder 1120 }; 1121 1122 @Render(textField) 1123 1124 List<string> jsAttributes = new List<string>(); 1125 1126 jsAttributes.Add("mode: '" + Enum.GetName(typeof(DateTimeFieldMode), settings.Mode).ToLower() + "'"); 1127 1128 if (!string.IsNullOrEmpty(settings.DateFormat)) 1129 { 1130 jsAttributes.Add("dateFormat: '" + settings.DateFormat + "'"); 1131 } 1132 if (!string.IsNullOrEmpty(settings.MinDate)) 1133 { 1134 jsAttributes.Add("minDate: '" + settings.MinDate + "'"); 1135 } 1136 if (!string.IsNullOrEmpty(settings.MaxDate)) 1137 { 1138 jsAttributes.Add("maxDate: '" + settings.MaxDate + "'"); 1139 } 1140 if (settings.IsInline) 1141 { 1142 jsAttributes.Add("inline: " + Converter.ToString(settings.IsInline).ToLower()); 1143 } 1144 if (settings.EnableTime) 1145 { 1146 jsAttributes.Add("enableTime: " + Converter.ToString(settings.EnableTime).ToLower()); 1147 } 1148 if (settings.EnableWeekNumbers) 1149 { 1150 jsAttributes.Add("weekNumbers: " + Converter.ToString(settings.EnableWeekNumbers).ToLower()); 1151 } 1152 1153 jsAttributes.AddRange(settings.GetFlatPickrOptions().Select(x => x.Key + ": " + x.Value)); 1154 1155 <script> 1156 document.addEventListener("DOMContentLoaded", function () { 1157 flatpickr("#@textField.Id", { 1158 @string.Join(",", jsAttributes) 1159 }); 1160 }); 1161 </script> 1162 } 1163 @using System.Reflection 1164 @using Dynamicweb.Rapido.Blocks.Components.General 1165 @using Dynamicweb.Rapido.Blocks.Components 1166 1167 @* Component *@ 1168 1169 @helper RenderTextField(TextField settings) 1170 { 1171 var attributes = new Dictionary<string, string>(); 1172 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1173 { 1174 settings.Id = Guid.NewGuid().ToString("N"); 1175 } 1176 1177 /*base settings*/ 1178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1179 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1180 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1181 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1182 if (settings.Required) { attributes.Add("required", "true"); } 1183 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1184 /*end*/ 1185 1186 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1187 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1188 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1189 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1190 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1191 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1192 attributes.Add("type", Enum.GetName(typeof(TextFieldType), settings.Type).ToLower()); 1193 if (settings.Type == TextFieldType.Password) { attributes.Add("autocomplete", "off"); }; 1194 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1195 1196 settings.CssClass = "u-full-width " + settings.CssClass; 1197 1198 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1199 1200 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1201 1202 string noMargin = "u-no-margin"; 1203 if (!settings.ReadOnly) { 1204 noMargin = ""; 1205 } 1206 1207 <div class="form__field-group u-full-width @noMargin @settings.WrapperCssClass dw-mod"> 1208 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1209 { 1210 <div class="u-full-width"> 1211 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1212 @if (settings.Link != null) { 1213 settings.Link.ButtonLayout = ButtonLayout.LinkClean; 1214 1215 <div class="u-pull--right"> 1216 @Render(settings.Link) 1217 </div> 1218 } 1219 </div> 1220 1221 } 1222 1223 @if (!string.IsNullOrEmpty(settings.HelpText)) 1224 { 1225 <small class="form__help-text">@settings.HelpText</small> 1226 } 1227 1228 @if (settings.ActionButton != null) 1229 { 1230 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1231 <div class="form__field-combi u-no-margin dw-mod"> 1232 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1233 @Render(settings.ActionButton) 1234 </div> 1235 } 1236 else 1237 { 1238 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1239 } 1240 1241 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1242 </div> 1243 } 1244 @using System.Reflection 1245 @using Dynamicweb.Rapido.Blocks.Components.General 1246 @using Dynamicweb.Rapido.Blocks.Components 1247 1248 @* Component *@ 1249 1250 @helper RenderNumberField(NumberField settings) 1251 { 1252 var attributes = new Dictionary<string, string>(); 1253 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1254 { 1255 settings.Id = Guid.NewGuid().ToString("N"); 1256 } 1257 1258 /*base settings*/ 1259 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1260 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1261 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1262 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1263 if (settings.Required) { attributes.Add("required", "true"); } 1264 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1265 /*end*/ 1266 1267 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1268 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1269 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1270 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1271 if (settings.Max != null) { attributes.Add("max", settings.Max.ToString()); } 1272 if (settings.Min != null) { attributes.Add("min", settings.Min.ToString()); } 1273 if (settings.Step != 0) { attributes.Add("step", settings.Step.ToString()); } 1274 if (settings.Value != null && !string.IsNullOrEmpty(settings.Value.ToString())) { attributes.Add("value", settings.Value.ToString()); } 1275 attributes.Add("type", "number"); 1276 1277 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1278 1279 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1280 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1281 { 1282 <div class="u-full-width"> 1283 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1284 @if (settings.Link != null) { 1285 <div class="u-pull--right"> 1286 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1287 @Render(settings.Link) 1288 </div> 1289 } 1290 </div> 1291 1292 } 1293 1294 @if (!string.IsNullOrEmpty(settings.HelpText)) 1295 { 1296 <small class="form__help-text">@settings.HelpText</small> 1297 } 1298 1299 @if (settings.ActionButton != null) 1300 { 1301 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1302 <div class="form__field-combi u-no-margin dw-mod"> 1303 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1304 @Render(settings.ActionButton) 1305 </div> 1306 } 1307 else 1308 { 1309 <div class="form__field-combi u-no-margin dw-mod"> 1310 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1311 </div> 1312 } 1313 1314 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1315 </div> 1316 } 1317 @using System.Reflection 1318 @using Dynamicweb.Rapido.Blocks.Components.General 1319 @using Dynamicweb.Rapido.Blocks.Components 1320 1321 1322 @* Component *@ 1323 1324 @helper RenderTextareaField(TextareaField settings) 1325 { 1326 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1327 string id = settings.Id; 1328 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(id)) 1329 { 1330 id = Guid.NewGuid().ToString("N"); 1331 } 1332 1333 if (!string.IsNullOrEmpty(id)) { attributes.Add("id", id); } 1334 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1335 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1336 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1337 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1338 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1339 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1340 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1341 if (settings.Required) { attributes.Add("required", "true"); } 1342 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1343 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1344 if (settings.Rows != 0) { attributes.Add("rows", settings.Rows.ToString()); } 1345 attributes.Add("name", settings.Name); 1346 1347 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1348 1349 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1350 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1351 { 1352 <div class="u-full-width"> 1353 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1354 @if (settings.Link != null) { 1355 <div class="u-pull--right"> 1356 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1357 @Render(settings.Link) 1358 </div> 1359 } 1360 </div> 1361 } 1362 1363 @if (!string.IsNullOrEmpty(settings.HelpText)) 1364 { 1365 <small class="form__help-text">@settings.HelpText</small> 1366 } 1367 1368 <textarea class="u-full-width @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Value</textarea> 1369 1370 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1371 </div> 1372 } 1373 @using System.Reflection 1374 @using Dynamicweb.Rapido.Blocks.Components.General 1375 @using Dynamicweb.Rapido.Blocks.Components 1376 1377 1378 @* Component *@ 1379 1380 @helper RenderHiddenField(HiddenField settings) { 1381 var attributes = new Dictionary<string, string>(); 1382 attributes.Add("type", "hidden"); 1383 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1384 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1385 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1386 1387 <input @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)/> 1388 } 1389 @using System.Reflection 1390 @using Dynamicweb.Rapido.Blocks.Components.General 1391 @using Dynamicweb.Rapido.Blocks.Components 1392 1393 @* Component *@ 1394 1395 @helper RenderCheckboxField(CheckboxField settings) 1396 { 1397 var attributes = new Dictionary<string, string>(); 1398 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1399 { 1400 settings.Id = Guid.NewGuid().ToString("N"); 1401 } 1402 1403 /*base settings*/ 1404 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1405 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1406 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1407 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1408 if (settings.Required) { attributes.Add("required", "true"); } 1409 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1410 /*end*/ 1411 1412 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1413 1414 attributes.Add("type", "checkbox"); 1415 if (settings.Checked) { attributes.Add("checked", "true"); } 1416 settings.CssClass = "form__control " + settings.CssClass; 1417 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1418 1419 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1420 1421 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1422 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1423 @if (!string.IsNullOrEmpty(settings.Label)) 1424 { 1425 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1426 } 1427 1428 @if (settings.Link != null) { 1429 <span> 1430 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1431 @Render(settings.Link) 1432 </span> 1433 } 1434 1435 @if (!string.IsNullOrEmpty(settings.HelpText)) 1436 { 1437 <small class="form__help-text checkbox-help dw-mod">@settings.HelpText</small> 1438 } 1439 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1440 </div> 1441 } 1442 @using System.Reflection 1443 @using Dynamicweb.Rapido.Blocks.Components.General 1444 @using Dynamicweb.Rapido.Blocks.Components 1445 1446 1447 @* Component *@ 1448 1449 @helper RenderCheckboxListField(CheckboxListField settings) 1450 { 1451 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1452 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1453 { 1454 <div class="u-full-width"> 1455 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1456 @if (settings.Link != null) { 1457 <div class="u-pull--right"> 1458 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1459 @Render(settings.Link) 1460 </div> 1461 } 1462 </div> 1463 1464 } 1465 1466 <div class="u-pull--left"> 1467 @if (!string.IsNullOrEmpty(settings.HelpText)) 1468 { 1469 <small class="form__help-text">@settings.HelpText</small> 1470 } 1471 1472 @foreach (var item in settings.Options) 1473 { 1474 if (settings.Required) 1475 { 1476 item.Required = true; 1477 } 1478 if (settings.Disabled) 1479 { 1480 item.Disabled = true; 1481 } 1482 if (!string.IsNullOrEmpty(settings.Name)) 1483 { 1484 item.Name = settings.Name; 1485 } 1486 if (!string.IsNullOrEmpty(settings.CssClass)) 1487 { 1488 item.CssClass += settings.CssClass; 1489 } 1490 1491 /* value is not supported */ 1492 1493 if (!string.IsNullOrEmpty(settings.OnClick)) 1494 { 1495 item.OnClick += settings.OnClick; 1496 } 1497 if (!string.IsNullOrEmpty(settings.OnChange)) 1498 { 1499 item.OnChange += settings.OnChange; 1500 } 1501 @Render(item) 1502 } 1503 1504 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1505 </div> 1506 1507 </div> 1508 } 1509 @using Dynamicweb.Rapido.Blocks.Components.General 1510 1511 @* Component *@ 1512 1513 @helper RenderSearch(Search settings) 1514 { 1515 var searchValue = HttpContext.Current.Request.QueryString.Get(settings.SearchParameter) ?? ""; 1516 var groupValue = HttpContext.Current.Request.QueryString.Get(settings.GroupsParameter) ?? ""; 1517 1518 if (string.IsNullOrEmpty(settings.Id)) 1519 { 1520 settings.Id = Guid.NewGuid().ToString("N"); 1521 } 1522 1523 var resultAttributes = new Dictionary<string, string>(); 1524 1525 if (settings.PageSize != 0) 1526 { 1527 resultAttributes.Add("data-page-size", settings.PageSize.ToString()); 1528 } 1529 if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1530 { 1531 resultAttributes.Add("data-groups-feed-url", settings.GroupItemsFeedUrl); 1532 if (!string.IsNullOrEmpty(groupValue)) 1533 { 1534 resultAttributes.Add("data-selected-group", groupValue); 1535 } 1536 if (!string.IsNullOrEmpty(settings.GroupsParameter)) 1537 { 1538 resultAttributes.Add("data-groups-parameter", settings.GroupsParameter); 1539 } 1540 } 1541 resultAttributes.Add("data-force-init", "true"); 1542 if (settings.GoToFirstSearchResultOnEnter) 1543 { 1544 resultAttributes.Add("data-go-to-first-search-result-on-enter", settings.GoToFirstSearchResultOnEnter.ToString().ToLower()); 1545 } 1546 if (!string.IsNullOrEmpty(settings.SearchParameter)) 1547 { 1548 resultAttributes.Add("data-search-parameter", settings.SearchParameter); 1549 } 1550 resultAttributes.Add("data-search-feed-url", settings.SearchData.SearchFeedUrl); 1551 resultAttributes.Add("data-results-template-id", settings.SearchData.ResultsTemplateId); 1552 1553 if (settings.SecondSearchData != null) 1554 { 1555 resultAttributes.Add("data-second-search-feed-url", settings.SecondSearchData.SearchFeedUrl); 1556 resultAttributes.Add("data-second-results-template-id", settings.SecondSearchData.ResultsTemplateId); 1557 } 1558 if (!string.IsNullOrEmpty(settings.ResultsPageUrl)) 1559 { 1560 resultAttributes.Add("data-results-page-url", settings.ResultsPageUrl); 1561 } 1562 1563 resultAttributes = resultAttributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1564 1565 string searchFieldCss = (settings.SearchButton == null) ? "search--with-icon" : ""; 1566 1567 <div class="search @settings.CssClass @searchFieldCss js-search-data-source dw-mod" id="@settings.Id" @ComponentMethods.AddAttributes(resultAttributes)> 1568 @if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1569 { 1570 <button type="button" class="search__groups-btn dw-mod js-search-groups-btn">@Translate("All")</button> 1571 <ul class="dropdown dropdown--absolute-position dw-mod search__groups-results js-search-groups-list"></ul> 1572 } 1573 1574 <input type="text" class="search__field dw-mod js-search-field" placeholder="@settings.Placeholder" value="@searchValue"> 1575 1576 <div class="dropdown dropdown--absolute-position search__results dw-mod js-search-results @(settings.SecondSearchData != null ? "search__results--combined" : "")"> 1577 @if (settings.SecondSearchData != null) 1578 { 1579 <div class="search__column search__column--products dw-mod"> 1580 <div class="search__column-header dw-mod">@Translate("Products")</div> 1581 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1582 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1583 { 1584 @Render(new Link { 1585 Title = Translate("View all"), 1586 CssClass = "js-view-all-button u-margin", 1587 Href = settings.SearchData.ResultsPageUrl 1588 }); 1589 } 1590 </div> 1591 <div class="search__column search__column--pages dw-mod"> 1592 <div class="search__column-header">@Translate("Pages")</div> 1593 <ul class="search__results-list dw-mod js-search-results-second-list" id="@(settings.Id)_SecondResultsList"></ul> 1594 @if (!string.IsNullOrEmpty(settings.SecondSearchData.ResultsPageUrl)) 1595 { 1596 @Render(new Link 1597 { 1598 Title = Translate("View all"), 1599 CssClass = "js-view-all-button u-margin", 1600 Href = settings.SecondSearchData.ResultsPageUrl 1601 }); 1602 } 1603 </div> 1604 } 1605 else 1606 { 1607 <div class="search__column search__column--only dw-mod"> 1608 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1609 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1610 { 1611 @Render(new Link { 1612 Title = Translate("View all"), 1613 CssClass = "js-view-all-button u-margin", 1614 Href = settings.SearchData.ResultsPageUrl 1615 }); 1616 } 1617 </div> 1618 } 1619 </div> 1620 1621 @if (settings.SearchButton != null) 1622 { 1623 settings.SearchButton.CssClass += " search__btn js-search-btn"; 1624 if (settings.RenderDefaultSearchIcon) 1625 { 1626 settings.SearchButton.Icon = new Icon { Name = Pageview.AreaSettings.GetItem("Layout").GetItem("Icons").GetList("SearchIcon").SelectedValue }; 1627 } 1628 @Render(settings.SearchButton); 1629 } 1630 </div> 1631 } 1632 @using System.Reflection 1633 @using Dynamicweb.Rapido.Blocks.Components.General 1634 @using Dynamicweb.Rapido.Blocks.Components 1635 1636 1637 @* Component *@ 1638 1639 @helper RenderSelectField(SelectField settings) 1640 { 1641 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1642 { 1643 settings.Id = Guid.NewGuid().ToString("N"); 1644 } 1645 1646 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1647 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1648 { 1649 <div class="u-full-width"> 1650 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1651 @if (settings.Link != null) { 1652 <div class="u-pull--right"> 1653 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1654 @Render(settings.Link) 1655 </div> 1656 } 1657 </div> 1658 } 1659 1660 @if (!string.IsNullOrEmpty(settings.HelpText)) 1661 { 1662 <small class="form__help-text">@settings.HelpText</small> 1663 } 1664 1665 @if (settings.ActionButton != null) 1666 { 1667 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1668 <div class="form__field-combi u-no-margin dw-mod"> 1669 @RenderSelectBase(settings) 1670 @Render(settings.ActionButton) 1671 </div> 1672 } 1673 else 1674 { 1675 @RenderSelectBase(settings) 1676 } 1677 1678 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1679 </div> 1680 } 1681 1682 @helper RenderSelectBase(SelectField settings) 1683 { 1684 var attributes = new Dictionary<string, string>(); 1685 1686 /*base settings*/ 1687 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1688 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1689 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1690 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1691 if (settings.Required) { attributes.Add("required", "true"); } 1692 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1693 /*end*/ 1694 1695 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1696 1697 <select @ComponentMethods.AddAttributes(resultAttributes) class="u-full-width @settings.CssClass dw-mod"> 1698 @if (settings.Default != null) 1699 { 1700 @Render(settings.Default) 1701 } 1702 1703 @foreach (var item in settings.Options) 1704 { 1705 if (settings.Value != null) { 1706 item.Checked = item.Value == settings.Value; 1707 } 1708 @Render(item) 1709 } 1710 </select> 1711 } 1712 @using System.Reflection 1713 @using Dynamicweb.Rapido.Blocks.Components.General 1714 @using Dynamicweb.Rapido.Blocks.Components 1715 1716 @* Component *@ 1717 1718 @helper RenderRadioButtonField(RadioButtonField settings) 1719 { 1720 var attributes = new Dictionary<string, string>(); 1721 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1722 { 1723 settings.Id = Guid.NewGuid().ToString("N"); 1724 } 1725 1726 /*base settings*/ 1727 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1728 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1729 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1730 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1731 if (settings.Required) { attributes.Add("required", "true"); } 1732 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1733 /*end*/ 1734 1735 attributes.Add("type", "radio"); 1736 if (settings.Checked) { attributes.Add("checked", "true"); } 1737 settings.CssClass = "form__control " + settings.CssClass; 1738 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1739 1740 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1741 1742 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1743 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1744 @if (!string.IsNullOrEmpty(settings.Label)) 1745 { 1746 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1747 } 1748 @if (!string.IsNullOrEmpty(settings.HelpText)) 1749 { 1750 <small class="form__help-text">@settings.HelpText</small> 1751 } 1752 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1753 </div> 1754 } 1755 @using System.Reflection 1756 @using Dynamicweb.Rapido.Blocks.Components.General 1757 @using Dynamicweb.Rapido.Blocks.Components 1758 1759 1760 @* Component *@ 1761 1762 @helper RenderRadioButtonListField(RadioButtonListField settings) 1763 { 1764 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1765 1766 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1767 @if (!string.IsNullOrEmpty(settings.Label)) 1768 { 1769 <label>@settings.Label</label> 1770 } 1771 @if (!string.IsNullOrEmpty(settings.HelpText)) 1772 { 1773 <small class="form__help-text">@settings.HelpText</small> 1774 } 1775 1776 @foreach (var item in settings.Options) 1777 { 1778 if (settings.Required) 1779 { 1780 item.Required = true; 1781 } 1782 if (settings.Disabled) 1783 { 1784 item.Disabled = true; 1785 } 1786 if (!string.IsNullOrEmpty(settings.Name)) 1787 { 1788 item.Name = settings.Name; 1789 } 1790 if (settings.Value != null && settings.Value == item.Value) 1791 { 1792 item.Checked = true; 1793 } 1794 if (!string.IsNullOrEmpty(settings.OnClick)) 1795 { 1796 item.OnClick += settings.OnClick; 1797 } 1798 if (!string.IsNullOrEmpty(settings.OnChange)) 1799 { 1800 item.OnChange += settings.OnChange; 1801 } 1802 if (!string.IsNullOrEmpty(settings.CssClass)) 1803 { 1804 item.CssClass += settings.CssClass; 1805 } 1806 @Render(item) 1807 } 1808 1809 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1810 </div> 1811 } 1812 @using System.Reflection 1813 @using Dynamicweb.Rapido.Blocks.Components.General 1814 @using Dynamicweb.Rapido.Blocks.Components 1815 1816 1817 @* Component *@ 1818 1819 @helper RenderNotificationMessage(NotificationMessage settings) 1820 { 1821 if (!string.IsNullOrEmpty(settings.Message)) 1822 { 1823 var attributes = new Dictionary<string, string>(); 1824 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1825 1826 string messageTypeClass = Enum.GetName(typeof(NotificationMessageType), settings.MessageType).ToLower(); 1827 string messageLayoutClass = Enum.GetName(typeof(NotificationMessageLayout), settings.MessageLayout).ToLower(); 1828 string minHeightClass = settings.Icon != null ? "u-min-h70px" : ""; 1829 1830 <div class="notification-message-@messageTypeClass notification-message-@messageLayoutClass @messageLayoutClass @minHeightClass @settings.CssClass u-full-width dw-mod" @ComponentMethods.AddAttributes(attributes)> 1831 @if (settings.Icon != null) { 1832 settings.Icon.Label = !string.IsNullOrEmpty(settings.Icon.Label) ? settings.Message + settings.Icon.Label : settings.Message; 1833 @Render(settings.Icon) 1834 } else { 1835 @settings.Message 1836 } 1837 </div> 1838 } 1839 } 1840 @using Dynamicweb.Rapido.Blocks.Components.General 1841 1842 1843 @* Component *@ 1844 1845 @helper RenderHandlebarsRoot(HandlebarsRoot settings) { 1846 string preRender = !String.IsNullOrEmpty(settings.PreRenderScriptTemplate) ? "data-pre-render-template=\"" + settings.PreRenderScriptTemplate + "\"" : ""; 1847 1848 <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> 1849 @if (settings.SubBlocks != null) { 1850 @RenderBlockList(settings.SubBlocks) 1851 } 1852 </div> 1853 } 1854 @using System.Reflection 1855 @using Dynamicweb.Rapido.Blocks.Components.General 1856 @using Dynamicweb.Rapido.Blocks.Components 1857 @using System.Text.RegularExpressions 1858 1859 1860 @* Component *@ 1861 1862 @helper RenderSticker(Sticker settings) { 1863 if (!String.IsNullOrEmpty(settings.Title)) { 1864 string size = settings.Size.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Size.ToString().ToLower() : ""; 1865 string style = settings.Style.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Style.ToString().ToLower() : ""; 1866 1867 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 1868 if (!String.IsNullOrEmpty(settings.Color) || !String.IsNullOrEmpty(settings.BackgroundColor)) { 1869 string styleTag = !String.IsNullOrEmpty(settings.Color) ? "color: " + settings.Color + "; " : ""; 1870 styleTag += !String.IsNullOrEmpty(settings.BackgroundColor) ? "background-color: " + settings.BackgroundColor + "; " : ""; 1871 optionalAttributes.Add("style", styleTag); 1872 } 1873 1874 <div class="stickers-container__tag @size @style @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Title</div> 1875 } 1876 } 1877 1878 @using System.Reflection 1879 @using Dynamicweb.Rapido.Blocks.Components.General 1880 @using Dynamicweb.Rapido.Blocks.Components 1881 1882 1883 @* Component *@ 1884 1885 @helper RenderStickersCollection(StickersCollection settings) 1886 { 1887 if (settings.Stickers.Count > 0) 1888 { 1889 string position = "stickers-container--" + Regex.Replace(settings.Position.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower(); 1890 1891 <div class="stickers-container @position @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1892 @foreach (Sticker sticker in settings.Stickers) 1893 { 1894 @Render(sticker) 1895 } 1896 </div> 1897 } 1898 } 1899 1900 @using Dynamicweb.Rapido.Blocks.Components.General 1901 1902 1903 @* Component *@ 1904 1905 @helper RenderForm(Form settings) { 1906 if (settings != null) 1907 { 1908 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 1909 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); }; 1910 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); }; 1911 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); }; 1912 var enctypes = new Dictionary<string, string> 1913 { 1914 { "multipart", "multipart/form-data" }, 1915 { "text", "text/plain" }, 1916 { "application", "application/x-www-form-urlencoded" } 1917 }; 1918 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); }; 1919 optionalAttributes.Add("method", settings.Method.ToString()); 1920 1921 if (!string.IsNullOrEmpty(settings.FormStartMarkup)) 1922 { 1923 @settings.FormStartMarkup 1924 } 1925 else 1926 { 1927 @:<form class="@settings.CssClass u-no-margin dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1928 } 1929 1930 foreach (var field in settings.GetFields()) 1931 { 1932 @Render(field) 1933 } 1934 1935 @:</form> 1936 } 1937 } 1938 @using System.Reflection 1939 @using Dynamicweb.Rapido.Blocks.Components.General 1940 @using Dynamicweb.Rapido.Blocks.Components 1941 1942 1943 @* Component *@ 1944 1945 @helper RenderText(Text settings) 1946 { 1947 @settings.Content 1948 } 1949 @using System.Reflection 1950 @using Dynamicweb.Rapido.Blocks.Components.General 1951 @using Dynamicweb.Rapido.Blocks.Components 1952 1953 1954 @* Component *@ 1955 1956 @helper RenderContentModule(ContentModule settings) { 1957 if (!string.IsNullOrEmpty(settings.Content)) 1958 { 1959 @settings.Content 1960 } 1961 } 1962 @using System.Reflection 1963 @using Dynamicweb.Rapido.Blocks.Components.General 1964 @using Dynamicweb.Rapido.Blocks.Components 1965 1966 1967 @* Component *@ 1968 1969 @helper RenderModal(Modal settings) { 1970 if (settings != null) 1971 { 1972 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 1973 1974 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : ""; 1975 1976 <input type="checkbox" id="@(modalId)ModalTrigger" class="modal-trigger" @onchange /> 1977 1978 <div class="modal-container"> 1979 @if (!settings.DisableDarkOverlay) 1980 { 1981 <label for="@(modalId)ModalTrigger" id="@(modalId)ModalOverlay" class="modal-overlay"></label> 1982 } 1983 <div class="modal modal--@settings.Width.ToString().ToLower() modal-height--@settings.Height.ToString().ToLower()" id="@(modalId)Modal"> 1984 @if (settings.Heading != null) 1985 { 1986 if (!string.IsNullOrEmpty(settings.Heading.Title)) 1987 { 1988 <div class="modal__header"> 1989 @Render(settings.Heading) 1990 </div> 1991 } 1992 } 1993 <div class="modal__body @(settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "")"> 1994 @if (!string.IsNullOrEmpty(settings.BodyText)) 1995 { 1996 @settings.BodyText 1997 } 1998 @if (settings.BodyTemplate != null) 1999 { 2000 @settings.BodyTemplate 2001 } 2002 @{ 2003 var actions = settings.GetActions(); 2004 } 2005 </div> 2006 @if (actions.Length > 0) 2007 { 2008 <div class="modal__footer"> 2009 @foreach (var action in actions) 2010 { 2011 if (Pageview.Device.ToString() != "Mobile") { 2012 action.CssClass += " u-no-margin"; 2013 } else { 2014 action.CssClass += " u-full-width u-margin-bottom"; 2015 } 2016 2017 @Render(action) 2018 } 2019 </div> 2020 } 2021 <label class="modal__close-btn" for="@(modalId)ModalTrigger"></label> 2022 </div> 2023 </div> 2024 } 2025 } 2026 @using Dynamicweb.Rapido.Blocks.Components.General 2027 2028 @* Component *@ 2029 2030 @helper RenderMediaListItem(MediaListItem settings) 2031 { 2032 <div class="media-list-item @settings.CssClass dw-mod" @(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "")> 2033 @if (!string.IsNullOrEmpty(settings.Label)) 2034 { 2035 if (!string.IsNullOrEmpty(settings.Link)) 2036 { 2037 @Render(new Link 2038 { 2039 Href = settings.Link, 2040 CssClass = "media-list-item__sticker dw-mod", 2041 ButtonLayout = ButtonLayout.None, 2042 Title = settings.Label, 2043 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2044 }) 2045 } 2046 else if (!string.IsNullOrEmpty(settings.OnClick)) 2047 { 2048 <span class="media-list-item__sticker dw-mod" onclick="@(settings.OnClick)"> 2049 <span class="u-uppercase">@settings.Label</span> 2050 </span> 2051 } 2052 else 2053 { 2054 <span class="media-list-item__sticker media-list-item__sticker--no-link dw-mod"> 2055 <span class="u-uppercase">@settings.Label</span> 2056 </span> 2057 } 2058 } 2059 <div class="media-list-item__wrap"> 2060 <div class="media-list-item__info dw-mod"> 2061 <div class="media-list-item__header dw-mod"> 2062 @if (!string.IsNullOrEmpty(settings.Title)) 2063 { 2064 if (!string.IsNullOrEmpty(settings.Link)) 2065 { 2066 @Render(new Link 2067 { 2068 Href = settings.Link, 2069 CssClass = "media-list-item__name dw-mod", 2070 ButtonLayout = ButtonLayout.None, 2071 Title = settings.Title, 2072 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2073 }) 2074 } 2075 else if (!string.IsNullOrEmpty(settings.OnClick)) 2076 { 2077 <span class="media-list-item__name dw-mod" onclick="@(settings.OnClick)">@settings.Title</span> 2078 } 2079 else 2080 { 2081 <span class="media-list-item__name media-list-item__name--no-link dw-mod">@settings.Title</span> 2082 } 2083 } 2084 2085 @if (!string.IsNullOrEmpty(settings.Status)) 2086 { 2087 <div class="media-list-item__state dw-mod">@settings.Status</div> 2088 } 2089 </div> 2090 @{ 2091 settings.InfoTable.CssClass += " media-list-item__parameters-table"; 2092 } 2093 2094 @Render(settings.InfoTable) 2095 </div> 2096 <div class="media-list-item__actions dw-mod"> 2097 <div class="media-list-item__actions-list dw-mod"> 2098 @{ 2099 var actions = settings.GetActions(); 2100 2101 foreach (ButtonBase action in actions) 2102 { 2103 action.ButtonLayout = ButtonLayout.None; 2104 action.CssClass += " media-list-item__action link"; 2105 2106 @Render(action) 2107 } 2108 } 2109 </div> 2110 2111 @if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title)) 2112 { 2113 settings.SelectButton.CssClass += " u-no-margin"; 2114 2115 <div class="media-list-item__action-button"> 2116 @Render(settings.SelectButton) 2117 </div> 2118 } 2119 </div> 2120 </div> 2121 </div> 2122 } 2123 @using Dynamicweb.Rapido.Blocks.Components.General 2124 @using Dynamicweb.Rapido.Blocks.Components 2125 2126 @helper RenderTable(Table settings) 2127 { 2128 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2129 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2130 2131 var enumToClasses = new Dictionary<TableDesign, string> 2132 { 2133 { TableDesign.Clean, "table--clean" }, 2134 { TableDesign.Bordered, "table--bordered" }, 2135 { TableDesign.Striped, "table--striped" }, 2136 { TableDesign.Hover, "table--hover" }, 2137 { TableDesign.Compact, "table--compact" }, 2138 { TableDesign.Condensed, "table--condensed" }, 2139 { TableDesign.NoTopBorder, "table--no-top-border" } 2140 }; 2141 string tableDesignClass = ""; 2142 if (settings.Design != TableDesign.None) 2143 { 2144 tableDesignClass = enumToClasses[settings.Design]; 2145 } 2146 2147 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); } 2148 2149 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2150 2151 <table @ComponentMethods.AddAttributes(resultAttributes)> 2152 @if (settings.Header != null) 2153 { 2154 <thead> 2155 @Render(settings.Header) 2156 </thead> 2157 } 2158 <tbody> 2159 @foreach (var row in settings.Rows) 2160 { 2161 @Render(row) 2162 } 2163 </tbody> 2164 @if (settings.Footer != null) 2165 { 2166 <tfoot> 2167 @Render(settings.Footer) 2168 </tfoot> 2169 } 2170 </table> 2171 } 2172 @using Dynamicweb.Rapido.Blocks.Components.General 2173 @using Dynamicweb.Rapido.Blocks.Components 2174 2175 @helper RenderTableRow(TableRow settings) 2176 { 2177 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2179 2180 var enumToClasses = new Dictionary<TableRowDesign, string> 2181 { 2182 { TableRowDesign.NoBorder, "table__row--no-border" }, 2183 { TableRowDesign.Border, "table__row--border" }, 2184 { TableRowDesign.TopBorder, "table__row--top-line" }, 2185 { TableRowDesign.BottomBorder, "table__row--bottom-line" }, 2186 { TableRowDesign.Solid, "table__row--solid" } 2187 }; 2188 2189 string tableRowDesignClass = ""; 2190 if (settings.Design != TableRowDesign.None) 2191 { 2192 tableRowDesignClass = enumToClasses[settings.Design]; 2193 } 2194 2195 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); } 2196 2197 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2198 2199 <tr @ComponentMethods.AddAttributes(resultAttributes)> 2200 @foreach (var cell in settings.Cells) 2201 { 2202 if (settings.IsHeaderRow) 2203 { 2204 cell.IsHeader = true; 2205 } 2206 @Render(cell) 2207 } 2208 </tr> 2209 } 2210 @using Dynamicweb.Rapido.Blocks.Components.General 2211 @using Dynamicweb.Rapido.Blocks.Components 2212 @using Dynamicweb.Core 2213 2214 @helper RenderTableCell(TableCell settings) 2215 { 2216 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2217 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2218 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); } 2219 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); } 2220 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); } 2221 2222 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2223 2224 string tagName = settings.IsHeader ? "th" : "td"; 2225 2226 @("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">") 2227 @settings.Content 2228 @("</" + tagName + ">"); 2229 } 2230 @using System.Linq 2231 @using Dynamicweb.Rapido.Blocks.Components.General 2232 2233 @* Component *@ 2234 2235 @helper RenderPagination(Dynamicweb.Rapido.Blocks.Components.General.Pagination settings) 2236 { 2237 var pageNumberQueryStringName = Dynamicweb.Rapido.Services.Pagination.GetPageNumberQueryStringName(settings); // Get the proper 'page number' query string parameter 2238 var queryParameters = Dynamicweb.Rapido.Services.Url.GetQueryParameters(pageNumberQueryStringName); // Get the NameValueCollection from the querystring 2239 2240 if (settings.NumberOfPages > 1) 2241 { 2242 string url = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/Default.aspx"; 2243 string ariaLabel = !string.IsNullOrWhiteSpace(settings.AriaLabel) ? settings.AriaLabel : Translate("Page navigation"); 2244 Dictionary<string, int> startAndEndPageNumber = Dynamicweb.Rapido.Services.Pagination.GetStartAndEndPageNumber(settings); 2245 2246 <div class="pager u-margin-top dw-mod @settings.CssClass" aria-label="@ariaLabel"> 2247 @if (settings.ShowPagingInfo) 2248 { 2249 <div class="pager__info dw-mod"> 2250 @Translate("Page") @settings.CurrentPageNumber @Translate("of") @settings.NumberOfPages 2251 </div> 2252 } 2253 <ul class="pager__list dw-mod"> 2254 @if (!string.IsNullOrWhiteSpace(settings.FirstPageUrl) && settings.ShowFirstAndLastControls) 2255 { 2256 @Render(new PaginationItem { Link = settings.FirstPageUrl, Icon = settings.FirstIcon }) 2257 } 2258 @if (!string.IsNullOrWhiteSpace(settings.PreviousPageUrl) && settings.ShowNextAndPrevControls) 2259 { 2260 @Render(new PaginationItem { Link = settings.PreviousPageUrl, Icon = settings.PrevIcon }) 2261 } 2262 @if (settings.GetPages().Any()) 2263 { 2264 foreach (var page in settings.GetPages()) 2265 { 2266 @Render(page) 2267 } 2268 } 2269 else 2270 { 2271 for (var page = startAndEndPageNumber["StartPage"]; page <= startAndEndPageNumber["EndPage"]; page++) 2272 { 2273 queryParameters = Dynamicweb.Rapido.Services.Url.UpdateQueryStringParameter(queryParameters, pageNumberQueryStringName, page.ToString()); 2274 @Render(new PaginationItem { Label = page.ToString(), Link = Dynamicweb.Rapido.Services.Url.BuildUri(url, queryParameters).PathAndQuery, IsActive = (settings.CurrentPageNumber == page) }); 2275 } 2276 } 2277 @if (!string.IsNullOrWhiteSpace(settings.NextPageUrl) && settings.ShowNextAndPrevControls) 2278 { 2279 @Render(new PaginationItem { Link = settings.NextPageUrl, Icon = settings.NextIcon }) 2280 } 2281 @if (!string.IsNullOrWhiteSpace(settings.LastPageUrl) && settings.ShowFirstAndLastControls) 2282 { 2283 @Render(new PaginationItem { Link = settings.LastPageUrl, Icon = settings.LastIcon }) 2284 } 2285 </ul> 2286 </div> 2287 } 2288 } 2289 2290 @helper RenderPaginationItem(PaginationItem settings) 2291 { 2292 if (settings.Icon == null) 2293 { 2294 settings.Icon = new Icon(); 2295 } 2296 2297 settings.Icon.Label = settings.Label; 2298 <li class="pager__btn dw-mod"> 2299 @if (settings.IsActive) 2300 { 2301 <span class="pager__num pager__num--current dw-mod"> 2302 @Render(settings.Icon) 2303 </span> 2304 } 2305 else 2306 { 2307 <a href="@settings.Link" class="pager__num dw-mod"> 2308 @Render(settings.Icon) 2309 </a> 2310 } 2311 </li> 2312 } 2313 2314 2315 @using Dynamicweb.Rapido.Blocks.Components.General 2316 @using Dynamicweb.Rapido.Blocks.Components.Ecommerce 2317 2318 2319 2320 2321 2322 @functions { 2323 public string GenerateRgba(string color, string opacity) 2324 { 2325 color = color.Replace("#", ""); 2326 if (color.Length == 6) 2327 { 2328 return "rgba(" + Convert.ToInt32(color.Substring(0, 2), 16) + ", " + Convert.ToInt32(color.Substring(2, 2), 16) + ", " + Convert.ToInt32(color.Substring(4, 2), 16) + ", " + opacity + ");"; 2329 } 2330 else 2331 { 2332 return Convert.ToInt16(color).ToString(); 2333 } 2334 } 2335 } 2336 2337 @{ 2338 string link = !string.IsNullOrEmpty(Model.Item.GetString("Link")) ? Model.Item.GetString("Link") : ""; 2339 string linkTarget = link.Contains("http") || link.Contains(".pdf") ? "_blank" : "_self"; 2340 } 2341 2342 @if (!string.IsNullOrEmpty(link)) 2343 { 2344 @*<a href="@link" target="@linkTarget" class="u-overlay">*@ 2345 <div class="paragraph-image-link-wrapper"> 2346 <a href="@link" target="@linkTarget"> 2347 @RenderTheContent() 2348 </a> 2349 </div> 2350 } 2351 else 2352 { 2353 @RenderTheContent() 2354 } 2355 2356 2357 @helper RenderTheContent() 2358 { 2359 string innerPadding = Model.Item.GetList("Padding") != null ? " padding-size-" + Model.Item.GetList("Padding").SelectedValue.ToLower() : ""; 2360 innerPadding += Model.Item.GetList("PaddingPosition") != null ? " padding-position-" + Model.Item.GetList("PaddingPosition").SelectedValue.ToLower() : ""; 2361 2362 if (!string.IsNullOrEmpty(Model.Item.GetString("Image"))) 2363 { 2364 int width = Model.Item.GetString("ImageWidth") != null ? Model.Item.GetInt32("ImageWidth") : 100; 2365 string styleSetting = Model.Item.GetString("ImageStyle") != null ? Model.Item.GetList("ImageStyle").SelectedValue : ""; 2366 ImageStyle style = ImageStyle.None; 2367 style = styleSetting == "ball" ? style = ImageStyle.Ball : style; 2368 style = styleSetting == "triangle" ? style = ImageStyle.Triangle : style; 2369 var file = Model.Item.GetFile("Image"); 2370 2371 Image image = new Image 2372 { 2373 Path = file, 2374 Style = style, 2375 CssClass = "background-image__cover", 2376 ImageDefault = new ImageSettings 2377 { 2378 Crop = 5, 2379 Width = width 2380 } 2381 }; 2382 2383 if (styleSetting == "square") 2384 { 2385 image.ImageDefault.Crop = 0; 2386 image.ImageDefault.Height = image.ImageDefault.Width; 2387 } 2388 2389 string imageAltText = ""; 2390 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageAltText"))) 2391 { 2392 imageAltText = Model.Item.GetString("ImageAltText"); 2393 } 2394 2395 string imageTitleText = ""; 2396 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageTitleText"))) 2397 { 2398 imageTitleText = Model.Item.GetString("ImageTitleText"); 2399 } 2400 2401 <div class="paragraph-image"> 2402 @RenderWithAltAndTitle(image, imageAltText, imageTitleText) 2403 </div> 2404 } 2405 2406 <div class="u-full-width u-padding-top dw-mod"> 2407 @if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) || !string.IsNullOrEmpty(Model.Item.GetString("Text"))) 2408 { 2409 <div class="u-margin-bottom--lg"> 2410 @if (!Model.Item.GetBoolean("HideTitle")) 2411 { 2412 @Render(new Heading { Title = Model.Item.GetString("Title"), Level = 2, CssClass = "u-no-margin" }) 2413 } 2414 @Render(new Text { Content = Model.Item.GetString("Text") }) 2415 </div> 2416 } 2417 </div> 2418 2419 if (!string.IsNullOrEmpty(Model.Item.GetItem("ButtonOne").GetString("Title"))) 2420 { 2421 <div class="buttons-collection u-block dw-mod"> 2422 @ParagraphButton(Model.Item.GetItem("ButtonOne")) 2423 </div> 2424 } 2425 } 2426 2427 2428 @helper ParagraphButton(ItemViewModel item) 2429 { 2430 if (item != null) 2431 { 2432 if (!string.IsNullOrEmpty(item.GetString("Title"))) 2433 { 2434 Button button = new Button 2435 { 2436 Title = item.GetString("Title"), 2437 Href = item.GetString("Link"), 2438 ButtonLayout = (ButtonLayout)System.Enum.Parse(typeof(ButtonLayout), char.ToUpper(item.GetList("Layout").SelectedValue[0]) + item.GetList("Layout").SelectedValue.Substring(1)) 2439 }; 2440 2441 if (!string.IsNullOrEmpty(item.GetString("Icon"))) 2442 { 2443 button.Icon = new Icon 2444 { 2445 CssClass = item.GetString("Icon") 2446 }; 2447 } 2448 2449 @Render(button) 2450 } 2451 } 2452 } 2453 2454 2455 2456 2457 2458
Error executing template "Designs/Rapido/ContentPage/Paragraph/StandardParagraphThree.cshtml"
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference
   at CallSite.Target(Closure , CallSite , Object )
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<>c__DisplayClass19_0.<RenderTheImage>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 924
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<>c__DisplayClass18_0.<RenderWithAltAndTitle>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 860
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<RenderTheContent>b__48_0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2402
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.Execute() in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2347
   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> 2 @using Dynamicweb.Frontend 3 @using Dynamicweb.Rapido.Blocks.Components 4 @using Dynamicweb.Rapido.Blocks.Components.General 5 6 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 7 @using Dynamicweb.Frontend 8 9 @* Include the components *@ 10 @using System.Text.RegularExpressions 11 @using System.Collections.Generic 12 @using System.Reflection 13 @using System.Web 14 @using System.Web.UI.HtmlControls 15 @using Dynamicweb.Rapido.Blocks.Components 16 @using Dynamicweb.Rapido.Blocks.Components.Articles 17 @using Dynamicweb.Rapido.Blocks.Components.Documentation 18 @using Dynamicweb.Rapido.Blocks 19 20 21 @*--- START: Base block renderers ---*@ 22 23 @helper RenderBlockList(List<Block> blocks) 24 { 25 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 26 blocks = blocks.OrderBy(item => item.SortId).ToList(); 27 28 foreach (Block item in blocks) 29 { 30 if (debug) { 31 <!-- Block START: @item.Id --> 32 } 33 34 if (item.Design == null) 35 { 36 @RenderBlock(item) 37 } 38 else if (item.Design.RenderType == RenderType.None) { 39 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 40 41 <div class="@cssClass dw-mod"> 42 @RenderBlock(item) 43 </div> 44 } 45 else if (item.Design.RenderType != RenderType.Hide) 46 { 47 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 48 49 if (!item.SkipRenderBlocksList) { 50 if (item.Design.RenderType == RenderType.Row) 51 { 52 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id"> 53 @RenderBlock(item) 54 </div> 55 } 56 57 if (item.Design.RenderType == RenderType.Column) 58 { 59 string hidePadding = item.Design.HidePadding ? "u-no-padding" : ""; 60 string size = item.Design.Size ?? "12"; 61 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size; 62 63 <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"> 64 @RenderBlock(item) 65 </div> 66 } 67 68 if (item.Design.RenderType == RenderType.Table) 69 { 70 <table class="table @cssClass dw-mod" id="Block__@item.Id"> 71 @RenderBlock(item) 72 </table> 73 } 74 75 if (item.Design.RenderType == RenderType.TableRow) 76 { 77 <tr class="@cssClass dw-mod" id="Block__@item.Id"> 78 @RenderBlock(item) 79 </tr> 80 } 81 82 if (item.Design.RenderType == RenderType.TableColumn) 83 { 84 <td class="@cssClass dw-mod" id="Block__@item.Id"> 85 @RenderBlock(item) 86 </td> 87 } 88 89 if (item.Design.RenderType == RenderType.CardHeader) 90 { 91 <div class="card-header @cssClass dw-mod"> 92 @RenderBlock(item) 93 </div> 94 } 95 96 if (item.Design.RenderType == RenderType.CardBody) 97 { 98 <div class="card @cssClass dw-mod"> 99 @RenderBlock(item) 100 </div> 101 } 102 103 if (item.Design.RenderType == RenderType.CardFooter) 104 { 105 <div class="card-footer @cssClass dw-mod"> 106 @RenderBlock(item) 107 </div> 108 } 109 } 110 else 111 { 112 @RenderBlock(item) 113 } 114 } 115 116 if (debug) { 117 <!-- Block END: @item.Id --> 118 } 119 } 120 } 121 122 @helper RenderBlock(Block item) 123 { 124 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 125 126 if (item.Template != null) 127 { 128 @BlocksPage.RenderTemplate(item.Template) 129 } 130 131 if (item.Component != null) 132 { 133 string customSufix = "Custom"; 134 string methodName = item.Component.HelperName; 135 136 ComponentBase[] methodParameters = new ComponentBase[1]; 137 methodParameters[0] = item.Component; 138 Type methodType = this.GetType(); 139 140 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix); 141 MethodInfo generalMethod = methodType.GetMethod(methodName); 142 143 try { 144 if (debug) { 145 <!-- Component: @methodName.Replace("Render", "") --> 146 } 147 @customMethod.Invoke(this, methodParameters).ToString(); 148 } catch { 149 try { 150 @generalMethod.Invoke(this, methodParameters).ToString(); 151 } catch(Exception ex) { 152 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex); 153 } 154 } 155 } 156 157 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList) 158 { 159 @RenderBlockList(item.BlocksList) 160 } 161 } 162 163 @*--- END: Base block renderers ---*@ 164 165 @using Dynamicweb.Rapido.Blocks.Components 166 @using Dynamicweb.Rapido.Blocks.Components.General 167 @using Dynamicweb.Rapido.Blocks 168 @using System.IO 169 170 @* Required *@ 171 @using Dynamicweb.Rapido.Blocks.Components 172 @using Dynamicweb.Rapido.Blocks.Components.General 173 @using Dynamicweb.Rapido.Blocks 174 175 176 @helper Render(ComponentBase component) 177 { 178 if (component != null) 179 { 180 @component.Render(this) 181 } 182 } 183 184 @* Components *@ 185 @using System.Reflection 186 @using Dynamicweb.Rapido.Blocks.Components.General 187 188 189 @* Component *@ 190 191 @helper RenderIcon(Icon settings) 192 { 193 if (settings != null) 194 { 195 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 196 197 if (settings.Name != null) 198 { 199 if (string.IsNullOrEmpty(settings.Label)) 200 { 201 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i> 202 } 203 else 204 { 205 if (settings.LabelPosition == IconLabelPosition.Before) 206 { 207 <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> 208 } 209 else 210 { 211 <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> 212 } 213 } 214 } 215 else if (!string.IsNullOrEmpty(settings.Label)) 216 { 217 @settings.Label 218 } 219 } 220 } 221 @using System.Reflection 222 @using Dynamicweb.Rapido.Blocks.Components.General 223 @using Dynamicweb.Rapido.Blocks.Components 224 @using Dynamicweb.Core 225 226 @* Component *@ 227 228 @helper RenderButton(Button settings) 229 { 230 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 231 { 232 Dictionary<string, string> attributes = new Dictionary<string, string>(); 233 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 234 if (settings.Disabled) { 235 attributes.Add("disabled", "true"); 236 classList.Add("disabled"); 237 } 238 239 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle)) 240 { 241 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 242 @RenderConfirmDialog(settings); 243 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true"; 244 } 245 246 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 247 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 248 if (!string.IsNullOrEmpty(settings.AltText)) 249 { 250 attributes.Add("title", settings.AltText); 251 } 252 else if (!string.IsNullOrEmpty(settings.Title)) 253 { 254 string cleanTitle = Regex.Replace(settings.Title, "<.*?>", String.Empty); 255 cleanTitle = cleanTitle.Replace("&nbsp;", " "); 256 attributes.Add("title", cleanTitle); 257 } 258 259 var onClickEvents = new List<string>(); 260 if (!string.IsNullOrEmpty(settings.OnClick)) 261 { 262 onClickEvents.Add(settings.OnClick); 263 } 264 if (!string.IsNullOrEmpty(settings.Href)) 265 { 266 onClickEvents.Add("location.href='" + settings.Href + "'"); 267 } 268 if (onClickEvents.Count > 0) 269 { 270 attributes.Add("onClick", string.Join(";", onClickEvents)); 271 } 272 273 if (settings.ButtonLayout != ButtonLayout.None) 274 { 275 classList.Add("btn"); 276 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 277 if (btnLayout == "linkclean") 278 { 279 btnLayout = "link-clean"; //fix 280 } 281 classList.Add("btn--" + btnLayout); 282 } 283 284 if (settings.Icon == null) 285 { 286 settings.Icon = new Icon(); 287 } 288 289 settings.Icon.CssClass += Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower() != "linkclean" ? " u-flex--align-center" : ""; 290 settings.Icon.Label = settings.Title; 291 292 attributes.Add("type", Enum.GetName(typeof(ButtonType), settings.ButtonType).ToLower()); 293 294 <button class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</button> 295 } 296 } 297 298 @helper RenderConfirmDialog(Button settings) 299 { 300 Modal confirmDialog = new Modal { 301 Id = settings.Id, 302 Width = ModalWidth.Sm, 303 Heading = new Heading 304 { 305 Level = 2, 306 Title = settings.ConfirmTitle 307 }, 308 BodyText = settings.ConfirmText 309 }; 310 311 confirmDialog.AddAction(new Button { Title = Translate("Cancel"), ButtonLayout = ButtonLayout.Secondary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false"}); 312 confirmDialog.AddAction(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false;" + settings.OnClick }); 313 314 @Render(confirmDialog) 315 } 316 @using Dynamicweb.Rapido.Blocks.Components.General 317 @using Dynamicweb.Rapido.Blocks.Components 318 @using Dynamicweb.Core 319 320 @helper RenderDashboard(Dashboard settings) 321 { 322 var widgets = settings.GetWidgets(); 323 324 if (!string.IsNullOrEmpty(settings.WidgetsBaseBackgroundColor)) 325 { 326 //set bg color for them 327 328 System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(settings.WidgetsBaseBackgroundColor); 329 int r = Convert.ToInt16(color.R); 330 int g = Convert.ToInt16(color.G); 331 int b = Convert.ToInt16(color.B); 332 333 var count = widgets.Length; 334 var max = Math.Max(r, Math.Max(g, b)); 335 double step = 255.0 / (max * count); 336 var i = 0; 337 foreach (var widget in widgets) 338 { 339 i++; 340 341 var shade = "rgb(" + Converter.ToString(r * step * i).Replace(",", ".") + ", " + Converter.ToString(g * step * i).Replace(",", ".") + ", " + Converter.ToString(b * step * i).Replace(",", ".") + ")"; 342 widget.BackgroundColor = shade; 343 } 344 } 345 346 <div class="dashboard @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 347 @foreach (var widget in widgets) 348 { 349 <div class="dashboard__widget"> 350 @Render(widget) 351 </div> 352 } 353 </div> 354 } 355 @using Dynamicweb.Rapido.Blocks.Components.General 356 @using Dynamicweb.Rapido.Blocks.Components 357 358 @helper RenderDashboardWidgetLink(DashboardWidgetLink settings) 359 { 360 if (!string.IsNullOrEmpty(settings.Link)) 361 { 362 var backgroundStyles = ""; 363 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 364 { 365 backgroundStyles = "style=\"background-color:" + settings.BackgroundColor + "\""; 366 } 367 368 <a href="@settings.Link" class="widget widget--link @settings.CssClass dw-mod" @backgroundStyles title="@settings.Title" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 369 <div class="u-center-middle u-color-light"> 370 @if (settings.Icon != null) 371 { 372 settings.Icon.CssClass += "widget__icon"; 373 @Render(settings.Icon) 374 } 375 <div class="widget__title">@settings.Title</div> 376 </div> 377 </a> 378 } 379 } 380 @using Dynamicweb.Rapido.Blocks.Components.General 381 @using Dynamicweb.Rapido.Blocks.Components 382 383 @helper RenderDashboardWidgetCounter(DashboardWidgetCounter settings) 384 { 385 var backgroundStyles = ""; 386 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 387 { 388 backgroundStyles = "style='background-color:" + settings.BackgroundColor + "'"; 389 } 390 391 <div class="widget @settings.CssClass dw-mod" @backgroundStyles @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 392 <div class="u-center-middle u-color-light"> 393 @if (settings.Icon != null) 394 { 395 settings.Icon.CssClass += "widget__icon"; 396 @Render(settings.Icon) 397 } 398 <div class="widget__counter">@settings.Count</div> 399 <div class="widget__title">@settings.Title</div> 400 </div> 401 </div> 402 } 403 @using System.Reflection 404 @using Dynamicweb.Rapido.Blocks.Components.General 405 @using Dynamicweb.Rapido.Blocks.Components 406 @using Dynamicweb.Core 407 408 @* Component *@ 409 410 @helper RenderLink(Link settings) 411 { 412 if (settings != null && !string.IsNullOrEmpty(settings.Href) && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 413 { 414 Dictionary<string, string> attributes = new Dictionary<string, string>(); 415 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 416 if (settings.Disabled) 417 { 418 attributes.Add("disabled", "true"); 419 classList.Add("disabled"); 420 } 421 422 if (!string.IsNullOrEmpty(settings.AltText)) 423 { 424 attributes.Add("title", settings.AltText); 425 } 426 else if (!string.IsNullOrEmpty(settings.Title)) 427 { 428 attributes.Add("title", settings.Title); 429 } 430 431 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 432 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 433 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onClick", settings.OnClick); } 434 attributes.Add("href", settings.Href); 435 436 if (settings.ButtonLayout != ButtonLayout.None) 437 { 438 classList.Add("btn"); 439 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 440 if (btnLayout == "linkclean") 441 { 442 btnLayout = "link-clean"; //fix 443 } 444 classList.Add("btn--" + btnLayout); 445 } 446 447 if (settings.Icon == null) 448 { 449 settings.Icon = new Icon(); 450 } 451 settings.Icon.Label = settings.Title; 452 453 if (settings.Target == LinkTargetType.Blank && settings.Rel == LinkRelType.None) 454 { 455 settings.Rel = LinkRelType.Noopener; 456 } 457 if (settings.Target != LinkTargetType.None) 458 { 459 attributes.Add("target", "_" + Enum.GetName(typeof(LinkTargetType), settings.Target).ToLower()); 460 } 461 if (settings.Download) 462 { 463 attributes.Add("download", "true"); 464 } 465 if (settings.Rel != LinkRelType.None) 466 { 467 attributes.Add("rel", Enum.GetName(typeof(LinkRelType), settings.Rel).ToLower()); 468 } 469 470 <a class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</a> 471 } 472 } 473 @using System.Reflection 474 @using Dynamicweb.Rapido.Blocks.Components 475 @using Dynamicweb.Rapido.Blocks.Components.General 476 @using Dynamicweb.Rapido.Blocks 477 478 479 @* Component *@ 480 481 @helper RenderRating(Rating settings) 482 { 483 if (settings.Score > 0) 484 { 485 int rating = settings.Score; 486 string iconType = "fa-star"; 487 488 switch (settings.Type.ToString()) { 489 case "Stars": 490 iconType = "fa-star"; 491 break; 492 case "Hearts": 493 iconType = "fa-heart"; 494 break; 495 case "Lemons": 496 iconType = "fa-lemon"; 497 break; 498 case "Bombs": 499 iconType = "fa-bomb"; 500 break; 501 } 502 503 <div class="u-ta-right"> 504 @for (int i = 0; i < settings.OutOf; i++) 505 { 506 <i class="@(rating > i ? "fas" : "far") @iconType"></i> 507 } 508 </div> 509 } 510 } 511 @using System.Reflection 512 @using Dynamicweb.Rapido.Blocks.Components.General 513 @using Dynamicweb.Rapido.Blocks.Components 514 515 516 @* Component *@ 517 518 @helper RenderSelectFieldOption(SelectFieldOption settings) 519 { 520 Dictionary<string, string> attributes = new Dictionary<string, string>(); 521 if (settings.Checked) { attributes.Add("selected", "true"); } 522 if (settings.Disabled) { attributes.Add("disabled", "true"); } 523 if (settings.Value != null) { attributes.Add("value", settings.Value); } 524 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 525 526 <option @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Label</option> 527 } 528 @using System.Reflection 529 @using Dynamicweb.Rapido.Blocks.Components.General 530 @using Dynamicweb.Rapido.Blocks.Components 531 532 533 @* Component *@ 534 535 @helper RenderNavigation(Navigation settings) { 536 @RenderNavigation(new 537 { 538 id = settings.Id, 539 cssclass = settings.CssClass, 540 startLevel = settings.StartLevel, 541 endlevel = settings.EndLevel, 542 expandmode = settings.Expandmode, 543 sitemapmode = settings.SitemapMode, 544 template = settings.Template 545 }) 546 } 547 @using Dynamicweb.Rapido.Blocks.Components.General 548 @using Dynamicweb.Rapido.Blocks.Components 549 550 551 @* Component *@ 552 553 @helper RenderBreadcrumbNavigation(BreadcrumbNavigation settings) { 554 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 555 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 556 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 557 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 558 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 559 settings.SitemapMode = false; 560 561 @RenderNavigation(settings) 562 } 563 @using Dynamicweb.Rapido.Blocks.Components.General 564 @using Dynamicweb.Rapido.Blocks.Components 565 566 567 @* Component *@ 568 569 @helper RenderLeftNavigation(LeftNavigation settings) { 570 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 571 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 572 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 573 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 574 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 575 576 <div class="grid__cell"> 577 @RenderNavigation(settings) 578 </div> 579 } 580 @using System.Reflection 581 @using Dynamicweb.Rapido.Blocks.Components.General 582 @using Dynamicweb.Core 583 584 @* Component *@ 585 586 @helper RenderHeading(Heading settings) 587 { 588 if (settings != null && !string.IsNullOrEmpty(settings.Title)) 589 { 590 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 591 string tagName = settings.Level != 0 ? "h" + settings.Level.ToString() : "div"; 592 593 @("<" + tagName + " class=\"" + settings.CssClass + " dw-mod\" " + color + ">") 594 if (!string.IsNullOrEmpty(settings.Link)) 595 { 596 @Render(new Link { Href = settings.Link, Icon = settings.Icon, Title = settings.Title, ButtonLayout = ButtonLayout.None }) 597 } 598 else 599 { 600 if (settings.Icon == null) 601 { 602 settings.Icon = new Icon(); 603 } 604 settings.Icon.Label = settings.Title; 605 @Render(settings.Icon) 606 } 607 @("</" + tagName + ">"); 608 } 609 } 610 @using Dynamicweb.Rapido.Blocks.Components 611 @using Dynamicweb.Rapido.Blocks.Components.General 612 @using Dynamicweb.Rapido.Blocks 613 614 615 @* Component *@ 616 617 @helper RenderImage(Image settings) 618 { 619 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 620 { 621 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 622 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 623 624 if (settings.Caption != null) 625 { 626 @:<div> 627 } 628 629 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 630 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 631 632 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 633 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 634 @if (settings.Link != null) 635 { 636 <a href="@settings.Link"> 637 @RenderTheImage(settings) 638 </a> 639 } 640 else 641 { 642 @RenderTheImage(settings) 643 } 644 </div> 645 </div> 646 647 if (settings.Caption != null) 648 { 649 <span class="image-caption dw-mod">@settings.Caption</span> 650 @:</div> 651 } 652 } 653 else 654 { 655 if (settings.Caption != null) 656 { 657 @:<div> 658 } 659 if (!string.IsNullOrEmpty(settings.Link)) 660 { 661 <a href="@settings.Link"> 662 @RenderTheImage(settings) 663 </a> 664 } 665 else 666 { 667 @RenderTheImage(settings) 668 } 669 670 if (settings.Caption != null) 671 { 672 <span class="image-caption dw-mod">@settings.Caption</span> 673 @:</div> 674 } 675 } 676 } 677 678 @helper RenderTheImage(Image settings) 679 { 680 if (settings != null) 681 { 682 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 683 string placeholderImage = "/Files/Images/placeholder.gif"; 684 string imageEngine = "/Admin/Public/GetImage.ashx?"; 685 686 string imageStyle = ""; 687 688 switch (settings.Style) 689 { 690 case ImageStyle.Ball: 691 imageStyle = "grid__cell-img--ball"; 692 break; 693 694 case ImageStyle.Triangle: 695 imageStyle = "grid__cell-img--triangle"; 696 break; 697 } 698 699 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 700 { 701 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 702 703 if (settings.ImageDefault != null) 704 { 705 settings.ImageDefault.Height = settings.ImageDefault.Width; 706 } 707 if (settings.ImageMedium != null) 708 { 709 settings.ImageMedium.Height = settings.ImageMedium.Width; 710 } 711 if (settings.ImageSmall != null) 712 { 713 settings.ImageSmall.Height = settings.ImageSmall.Width; 714 } 715 } 716 717 string defaultImage = imageEngine; 718 string imageSmall = ""; 719 string imageMedium = ""; 720 721 if (settings.DisableImageEngine) 722 { 723 defaultImage = settings.Path; 724 } 725 else 726 { 727 if (settings.ImageDefault != null) 728 { 729 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 730 731 if (settings.Path.GetType() != typeof(string)) 732 { 733 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 734 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 735 } 736 else 737 { 738 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 739 } 740 741 defaultImage += "&AlternativeImage=" + alternativeImage; 742 } 743 744 if (settings.ImageSmall != null) 745 { 746 imageSmall = "data-src-small=\"" + imageEngine; 747 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 748 749 if (settings.Path.GetType() != typeof(string)) 750 { 751 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 752 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 753 } 754 else 755 { 756 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 757 } 758 759 imageSmall += "&alternativeImage=" + alternativeImage; 760 761 imageSmall += "\""; 762 } 763 764 if (settings.ImageMedium != null) 765 { 766 imageMedium = "data-src-medium=\"" + imageEngine; 767 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 768 769 if (settings.Path.GetType() != typeof(string)) 770 { 771 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 772 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 773 } 774 else 775 { 776 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 777 } 778 779 imageMedium += "&alternativeImage=" + alternativeImage; 780 781 imageMedium += "\""; 782 } 783 } 784 785 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 786 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 787 if (!string.IsNullOrEmpty(settings.Title)) 788 { 789 optionalAttributes.Add("alt", settings.Title); 790 optionalAttributes.Add("title", settings.Title); 791 } 792 793 if (settings.DisableLazyLoad) 794 { 795 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 796 } 797 else 798 { 799 <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) /> 800 } 801 } 802 } 803 @using Dynamicweb.Rapido.Blocks.Components 804 @using Dynamicweb.Rapido.Blocks.Components.General 805 @using Dynamicweb.Rapido.Blocks 806 807 808 @* Component *@ 809 810 @helper RenderWithAltAndTitle(Image settings, string alText = "", string titleText = "") 811 { 812 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 813 { 814 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 815 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 816 817 if (settings.Caption != null) 818 { 819 @:<div> 820 } 821 822 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 823 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 824 825 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 826 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 827 @if (settings.Link != null) 828 { 829 <a href="@settings.Link"> 830 @RenderTheImage(settings, alText, titleText) 831 </a> 832 } 833 else 834 { 835 @RenderTheImage(settings, alText, titleText) 836 } 837 </div> 838 </div> 839 840 if (settings.Caption != null) 841 { 842 <span class="image-caption dw-mod">@settings.Caption</span> 843 @:</div> 844 } 845 } 846 else 847 { 848 if (settings.Caption != null) 849 { 850 @:<div> 851 } 852 if (!string.IsNullOrEmpty(settings.Link)) 853 { 854 <a href="@settings.Link"> 855 @RenderTheImage(settings, alText, titleText) 856 </a> 857 } 858 else 859 { 860 @RenderTheImage(settings, alText, titleText) 861 } 862 863 if (settings.Caption != null) 864 { 865 <span class="image-caption dw-mod">@settings.Caption</span> 866 @:</div> 867 } 868 } 869 } 870 871 @helper RenderTheImage(Image settings, string alText = "", string titleText = "") 872 { 873 if (settings != null) 874 { 875 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 876 string placeholderImage = "/Files/Images/placeholder.gif"; 877 string imageEngine = "/Admin/Public/GetImage.ashx?"; 878 879 string imageStyle = ""; 880 881 switch (settings.Style) 882 { 883 case ImageStyle.Ball: 884 imageStyle = "grid__cell-img--ball"; 885 break; 886 887 case ImageStyle.Triangle: 888 imageStyle = "grid__cell-img--triangle"; 889 break; 890 } 891 892 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 893 { 894 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 895 896 if (settings.ImageDefault != null) 897 { 898 settings.ImageDefault.Height = settings.ImageDefault.Width; 899 } 900 if (settings.ImageMedium != null) 901 { 902 settings.ImageMedium.Height = settings.ImageMedium.Width; 903 } 904 if (settings.ImageSmall != null) 905 { 906 settings.ImageSmall.Height = settings.ImageSmall.Width; 907 } 908 } 909 910 string defaultImage = imageEngine; 911 string imageSmall = ""; 912 string imageMedium = ""; 913 914 if (settings.DisableImageEngine) 915 { 916 defaultImage = settings.Path; 917 } 918 else 919 { 920 if (settings.ImageDefault != null) 921 { 922 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 923 924 if (settings.Path.GetType() != typeof(string)) 925 { 926 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 927 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 928 } 929 else 930 { 931 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 932 } 933 934 defaultImage += "&AlternativeImage=" + alternativeImage; 935 } 936 937 if (settings.ImageSmall != null) 938 { 939 imageSmall = "data-src-small=\"" + imageEngine; 940 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 941 942 if (settings.Path.GetType() != typeof(string)) 943 { 944 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 945 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 946 } 947 else 948 { 949 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 950 } 951 952 imageSmall += "&alternativeImage=" + alternativeImage; 953 954 imageSmall += "\""; 955 } 956 957 if (settings.ImageMedium != null) 958 { 959 imageMedium = "data-src-medium=\"" + imageEngine; 960 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 961 962 if (settings.Path.GetType() != typeof(string)) 963 { 964 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 965 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 966 } 967 else 968 { 969 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 970 971 972 } 973 974 imageMedium += "&alternativeImage=" + alternativeImage; 975 976 imageMedium += "\""; 977 } 978 } 979 980 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 981 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 982 if (!string.IsNullOrEmpty(settings.Title)) 983 { 984 optionalAttributes.Add("alt", settings.Title); 985 optionalAttributes.Add("title", settings.Title); 986 } 987 988 989 990 string imgAlt = ""; 991 string imgTitle = ""; 992 993 if (!string.IsNullOrWhiteSpace(alText)) 994 { 995 imgAlt = "alt=" + '"' + alText + '"'; 996 } 997 998 if (!string.IsNullOrWhiteSpace(titleText)) 999 { 1000 imgTitle = "title=" + '"' + titleText + '"'; 1001 1002 } 1003 1004 1005 if (settings.DisableLazyLoad) 1006 { 1007 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1008 } 1009 else 1010 { 1011 <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) @imgAlt @imgTitle /> 1012 } 1013 } 1014 } 1015 @using System.Reflection 1016 @using Dynamicweb.Rapido.Blocks.Components.General 1017 @using Dynamicweb.Rapido.Blocks.Components 1018 1019 @* Component *@ 1020 1021 @helper RenderFileField(FileField settings) 1022 { 1023 var attributes = new Dictionary<string, string>(); 1024 if (string.IsNullOrEmpty(settings.Id)) 1025 { 1026 settings.Id = Guid.NewGuid().ToString("N"); 1027 } 1028 1029 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1030 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1031 if (settings.Required) { attributes.Add("required", "true"); } 1032 if (settings.Multiple) { attributes.Add("multiple", "true"); } 1033 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1034 if (string.IsNullOrEmpty(settings.ChooseFileText)) 1035 { 1036 settings.ChooseFileText = Translate("Choose file"); 1037 } 1038 if (string.IsNullOrEmpty(settings.NoFilesChosenText)) 1039 { 1040 settings.NoFilesChosenText = Translate("No files chosen..."); 1041 } 1042 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1043 1044 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1045 1046 string setValueToFakeInput = "FileUpload.setValueToFakeInput(this)"; 1047 attributes.Add("onchange", setValueToFakeInput + (!string.IsNullOrEmpty(settings.OnChange) ? settings.OnChange : "")); 1048 1049 attributes.Add("type", "file"); 1050 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1051 settings.CssClass = "u-full-width " + settings.CssClass; 1052 1053 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1054 1055 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1056 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1057 { 1058 <div class="u-full-width"> 1059 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1060 @if (settings.Link != null) { 1061 <div class="u-pull--right"> 1062 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1063 @Render(settings.Link) 1064 </div> 1065 } 1066 </div> 1067 1068 } 1069 1070 @if (!string.IsNullOrEmpty(settings.HelpText)) 1071 { 1072 <small class="form__help-text">@settings.HelpText</small> 1073 } 1074 1075 <div class="form__field-combi file-input u-no-margin dw-mod"> 1076 <input @ComponentMethods.AddAttributes(resultAttributes) class="file-input__real-input" data-no-files-text="@settings.NoFilesChosenText" data-many-files-text="@Translate("files")" /> 1077 <label for="@settings.Id" class="file-input__btn btn--secondary btn dw-mod">@settings.ChooseFileText</label> 1078 <label for="@settings.Id" class="@settings.CssClass file-input__fake-input js-fake-input dw-mod">@settings.NoFilesChosenText</label> 1079 @if (settings.UploadButton != null) 1080 { 1081 settings.UploadButton.CssClass += " btn--condensed u-no-margin"; 1082 @Render(settings.UploadButton) 1083 } 1084 </div> 1085 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1086 </div> 1087 } 1088 @using System.Reflection 1089 @using Dynamicweb.Rapido.Blocks.Components.General 1090 @using Dynamicweb.Rapido.Blocks.Components 1091 @using Dynamicweb.Core 1092 @using System.Linq 1093 1094 @* Component *@ 1095 1096 @helper RenderDateTimeField(DateTimeField settings) 1097 { 1098 if (string.IsNullOrEmpty(settings.Id)) 1099 { 1100 settings.Id = Guid.NewGuid().ToString("N"); 1101 } 1102 1103 var textField = new TextField { 1104 Name = settings.Name, 1105 Id = settings.Id, 1106 Label = settings.Label, 1107 HelpText = settings.HelpText, 1108 Value = settings.Value, 1109 Disabled = settings.Disabled, 1110 Required = settings.Required, 1111 ErrorMessage = settings.ErrorMessage, 1112 CssClass = settings.CssClass, 1113 WrapperCssClass = settings.WrapperCssClass, 1114 OnChange = settings.OnChange, 1115 OnClick = settings.OnClick, 1116 Link = settings.Link, 1117 ExtraAttributes = settings.ExtraAttributes, 1118 // 1119 Placeholder = settings.Placeholder 1120 }; 1121 1122 @Render(textField) 1123 1124 List<string> jsAttributes = new List<string>(); 1125 1126 jsAttributes.Add("mode: '" + Enum.GetName(typeof(DateTimeFieldMode), settings.Mode).ToLower() + "'"); 1127 1128 if (!string.IsNullOrEmpty(settings.DateFormat)) 1129 { 1130 jsAttributes.Add("dateFormat: '" + settings.DateFormat + "'"); 1131 } 1132 if (!string.IsNullOrEmpty(settings.MinDate)) 1133 { 1134 jsAttributes.Add("minDate: '" + settings.MinDate + "'"); 1135 } 1136 if (!string.IsNullOrEmpty(settings.MaxDate)) 1137 { 1138 jsAttributes.Add("maxDate: '" + settings.MaxDate + "'"); 1139 } 1140 if (settings.IsInline) 1141 { 1142 jsAttributes.Add("inline: " + Converter.ToString(settings.IsInline).ToLower()); 1143 } 1144 if (settings.EnableTime) 1145 { 1146 jsAttributes.Add("enableTime: " + Converter.ToString(settings.EnableTime).ToLower()); 1147 } 1148 if (settings.EnableWeekNumbers) 1149 { 1150 jsAttributes.Add("weekNumbers: " + Converter.ToString(settings.EnableWeekNumbers).ToLower()); 1151 } 1152 1153 jsAttributes.AddRange(settings.GetFlatPickrOptions().Select(x => x.Key + ": " + x.Value)); 1154 1155 <script> 1156 document.addEventListener("DOMContentLoaded", function () { 1157 flatpickr("#@textField.Id", { 1158 @string.Join(",", jsAttributes) 1159 }); 1160 }); 1161 </script> 1162 } 1163 @using System.Reflection 1164 @using Dynamicweb.Rapido.Blocks.Components.General 1165 @using Dynamicweb.Rapido.Blocks.Components 1166 1167 @* Component *@ 1168 1169 @helper RenderTextField(TextField settings) 1170 { 1171 var attributes = new Dictionary<string, string>(); 1172 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1173 { 1174 settings.Id = Guid.NewGuid().ToString("N"); 1175 } 1176 1177 /*base settings*/ 1178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1179 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1180 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1181 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1182 if (settings.Required) { attributes.Add("required", "true"); } 1183 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1184 /*end*/ 1185 1186 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1187 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1188 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1189 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1190 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1191 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1192 attributes.Add("type", Enum.GetName(typeof(TextFieldType), settings.Type).ToLower()); 1193 if (settings.Type == TextFieldType.Password) { attributes.Add("autocomplete", "off"); }; 1194 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1195 1196 settings.CssClass = "u-full-width " + settings.CssClass; 1197 1198 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1199 1200 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1201 1202 string noMargin = "u-no-margin"; 1203 if (!settings.ReadOnly) { 1204 noMargin = ""; 1205 } 1206 1207 <div class="form__field-group u-full-width @noMargin @settings.WrapperCssClass dw-mod"> 1208 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1209 { 1210 <div class="u-full-width"> 1211 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1212 @if (settings.Link != null) { 1213 settings.Link.ButtonLayout = ButtonLayout.LinkClean; 1214 1215 <div class="u-pull--right"> 1216 @Render(settings.Link) 1217 </div> 1218 } 1219 </div> 1220 1221 } 1222 1223 @if (!string.IsNullOrEmpty(settings.HelpText)) 1224 { 1225 <small class="form__help-text">@settings.HelpText</small> 1226 } 1227 1228 @if (settings.ActionButton != null) 1229 { 1230 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1231 <div class="form__field-combi u-no-margin dw-mod"> 1232 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1233 @Render(settings.ActionButton) 1234 </div> 1235 } 1236 else 1237 { 1238 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1239 } 1240 1241 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1242 </div> 1243 } 1244 @using System.Reflection 1245 @using Dynamicweb.Rapido.Blocks.Components.General 1246 @using Dynamicweb.Rapido.Blocks.Components 1247 1248 @* Component *@ 1249 1250 @helper RenderNumberField(NumberField settings) 1251 { 1252 var attributes = new Dictionary<string, string>(); 1253 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1254 { 1255 settings.Id = Guid.NewGuid().ToString("N"); 1256 } 1257 1258 /*base settings*/ 1259 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1260 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1261 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1262 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1263 if (settings.Required) { attributes.Add("required", "true"); } 1264 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1265 /*end*/ 1266 1267 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1268 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1269 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1270 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1271 if (settings.Max != null) { attributes.Add("max", settings.Max.ToString()); } 1272 if (settings.Min != null) { attributes.Add("min", settings.Min.ToString()); } 1273 if (settings.Step != 0) { attributes.Add("step", settings.Step.ToString()); } 1274 if (settings.Value != null && !string.IsNullOrEmpty(settings.Value.ToString())) { attributes.Add("value", settings.Value.ToString()); } 1275 attributes.Add("type", "number"); 1276 1277 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1278 1279 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1280 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1281 { 1282 <div class="u-full-width"> 1283 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1284 @if (settings.Link != null) { 1285 <div class="u-pull--right"> 1286 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1287 @Render(settings.Link) 1288 </div> 1289 } 1290 </div> 1291 1292 } 1293 1294 @if (!string.IsNullOrEmpty(settings.HelpText)) 1295 { 1296 <small class="form__help-text">@settings.HelpText</small> 1297 } 1298 1299 @if (settings.ActionButton != null) 1300 { 1301 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1302 <div class="form__field-combi u-no-margin dw-mod"> 1303 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1304 @Render(settings.ActionButton) 1305 </div> 1306 } 1307 else 1308 { 1309 <div class="form__field-combi u-no-margin dw-mod"> 1310 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1311 </div> 1312 } 1313 1314 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1315 </div> 1316 } 1317 @using System.Reflection 1318 @using Dynamicweb.Rapido.Blocks.Components.General 1319 @using Dynamicweb.Rapido.Blocks.Components 1320 1321 1322 @* Component *@ 1323 1324 @helper RenderTextareaField(TextareaField settings) 1325 { 1326 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1327 string id = settings.Id; 1328 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(id)) 1329 { 1330 id = Guid.NewGuid().ToString("N"); 1331 } 1332 1333 if (!string.IsNullOrEmpty(id)) { attributes.Add("id", id); } 1334 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1335 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1336 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1337 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1338 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1339 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1340 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1341 if (settings.Required) { attributes.Add("required", "true"); } 1342 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1343 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1344 if (settings.Rows != 0) { attributes.Add("rows", settings.Rows.ToString()); } 1345 attributes.Add("name", settings.Name); 1346 1347 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1348 1349 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1350 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1351 { 1352 <div class="u-full-width"> 1353 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1354 @if (settings.Link != null) { 1355 <div class="u-pull--right"> 1356 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1357 @Render(settings.Link) 1358 </div> 1359 } 1360 </div> 1361 } 1362 1363 @if (!string.IsNullOrEmpty(settings.HelpText)) 1364 { 1365 <small class="form__help-text">@settings.HelpText</small> 1366 } 1367 1368 <textarea class="u-full-width @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Value</textarea> 1369 1370 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1371 </div> 1372 } 1373 @using System.Reflection 1374 @using Dynamicweb.Rapido.Blocks.Components.General 1375 @using Dynamicweb.Rapido.Blocks.Components 1376 1377 1378 @* Component *@ 1379 1380 @helper RenderHiddenField(HiddenField settings) { 1381 var attributes = new Dictionary<string, string>(); 1382 attributes.Add("type", "hidden"); 1383 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1384 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1385 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1386 1387 <input @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)/> 1388 } 1389 @using System.Reflection 1390 @using Dynamicweb.Rapido.Blocks.Components.General 1391 @using Dynamicweb.Rapido.Blocks.Components 1392 1393 @* Component *@ 1394 1395 @helper RenderCheckboxField(CheckboxField settings) 1396 { 1397 var attributes = new Dictionary<string, string>(); 1398 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1399 { 1400 settings.Id = Guid.NewGuid().ToString("N"); 1401 } 1402 1403 /*base settings*/ 1404 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1405 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1406 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1407 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1408 if (settings.Required) { attributes.Add("required", "true"); } 1409 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1410 /*end*/ 1411 1412 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1413 1414 attributes.Add("type", "checkbox"); 1415 if (settings.Checked) { attributes.Add("checked", "true"); } 1416 settings.CssClass = "form__control " + settings.CssClass; 1417 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1418 1419 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1420 1421 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1422 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1423 @if (!string.IsNullOrEmpty(settings.Label)) 1424 { 1425 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1426 } 1427 1428 @if (settings.Link != null) { 1429 <span> 1430 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1431 @Render(settings.Link) 1432 </span> 1433 } 1434 1435 @if (!string.IsNullOrEmpty(settings.HelpText)) 1436 { 1437 <small class="form__help-text checkbox-help dw-mod">@settings.HelpText</small> 1438 } 1439 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1440 </div> 1441 } 1442 @using System.Reflection 1443 @using Dynamicweb.Rapido.Blocks.Components.General 1444 @using Dynamicweb.Rapido.Blocks.Components 1445 1446 1447 @* Component *@ 1448 1449 @helper RenderCheckboxListField(CheckboxListField settings) 1450 { 1451 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1452 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1453 { 1454 <div class="u-full-width"> 1455 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1456 @if (settings.Link != null) { 1457 <div class="u-pull--right"> 1458 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1459 @Render(settings.Link) 1460 </div> 1461 } 1462 </div> 1463 1464 } 1465 1466 <div class="u-pull--left"> 1467 @if (!string.IsNullOrEmpty(settings.HelpText)) 1468 { 1469 <small class="form__help-text">@settings.HelpText</small> 1470 } 1471 1472 @foreach (var item in settings.Options) 1473 { 1474 if (settings.Required) 1475 { 1476 item.Required = true; 1477 } 1478 if (settings.Disabled) 1479 { 1480 item.Disabled = true; 1481 } 1482 if (!string.IsNullOrEmpty(settings.Name)) 1483 { 1484 item.Name = settings.Name; 1485 } 1486 if (!string.IsNullOrEmpty(settings.CssClass)) 1487 { 1488 item.CssClass += settings.CssClass; 1489 } 1490 1491 /* value is not supported */ 1492 1493 if (!string.IsNullOrEmpty(settings.OnClick)) 1494 { 1495 item.OnClick += settings.OnClick; 1496 } 1497 if (!string.IsNullOrEmpty(settings.OnChange)) 1498 { 1499 item.OnChange += settings.OnChange; 1500 } 1501 @Render(item) 1502 } 1503 1504 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1505 </div> 1506 1507 </div> 1508 } 1509 @using Dynamicweb.Rapido.Blocks.Components.General 1510 1511 @* Component *@ 1512 1513 @helper RenderSearch(Search settings) 1514 { 1515 var searchValue = HttpContext.Current.Request.QueryString.Get(settings.SearchParameter) ?? ""; 1516 var groupValue = HttpContext.Current.Request.QueryString.Get(settings.GroupsParameter) ?? ""; 1517 1518 if (string.IsNullOrEmpty(settings.Id)) 1519 { 1520 settings.Id = Guid.NewGuid().ToString("N"); 1521 } 1522 1523 var resultAttributes = new Dictionary<string, string>(); 1524 1525 if (settings.PageSize != 0) 1526 { 1527 resultAttributes.Add("data-page-size", settings.PageSize.ToString()); 1528 } 1529 if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1530 { 1531 resultAttributes.Add("data-groups-feed-url", settings.GroupItemsFeedUrl); 1532 if (!string.IsNullOrEmpty(groupValue)) 1533 { 1534 resultAttributes.Add("data-selected-group", groupValue); 1535 } 1536 if (!string.IsNullOrEmpty(settings.GroupsParameter)) 1537 { 1538 resultAttributes.Add("data-groups-parameter", settings.GroupsParameter); 1539 } 1540 } 1541 resultAttributes.Add("data-force-init", "true"); 1542 if (settings.GoToFirstSearchResultOnEnter) 1543 { 1544 resultAttributes.Add("data-go-to-first-search-result-on-enter", settings.GoToFirstSearchResultOnEnter.ToString().ToLower()); 1545 } 1546 if (!string.IsNullOrEmpty(settings.SearchParameter)) 1547 { 1548 resultAttributes.Add("data-search-parameter", settings.SearchParameter); 1549 } 1550 resultAttributes.Add("data-search-feed-url", settings.SearchData.SearchFeedUrl); 1551 resultAttributes.Add("data-results-template-id", settings.SearchData.ResultsTemplateId); 1552 1553 if (settings.SecondSearchData != null) 1554 { 1555 resultAttributes.Add("data-second-search-feed-url", settings.SecondSearchData.SearchFeedUrl); 1556 resultAttributes.Add("data-second-results-template-id", settings.SecondSearchData.ResultsTemplateId); 1557 } 1558 if (!string.IsNullOrEmpty(settings.ResultsPageUrl)) 1559 { 1560 resultAttributes.Add("data-results-page-url", settings.ResultsPageUrl); 1561 } 1562 1563 resultAttributes = resultAttributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1564 1565 string searchFieldCss = (settings.SearchButton == null) ? "search--with-icon" : ""; 1566 1567 <div class="search @settings.CssClass @searchFieldCss js-search-data-source dw-mod" id="@settings.Id" @ComponentMethods.AddAttributes(resultAttributes)> 1568 @if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1569 { 1570 <button type="button" class="search__groups-btn dw-mod js-search-groups-btn">@Translate("All")</button> 1571 <ul class="dropdown dropdown--absolute-position dw-mod search__groups-results js-search-groups-list"></ul> 1572 } 1573 1574 <input type="text" class="search__field dw-mod js-search-field" placeholder="@settings.Placeholder" value="@searchValue"> 1575 1576 <div class="dropdown dropdown--absolute-position search__results dw-mod js-search-results @(settings.SecondSearchData != null ? "search__results--combined" : "")"> 1577 @if (settings.SecondSearchData != null) 1578 { 1579 <div class="search__column search__column--products dw-mod"> 1580 <div class="search__column-header dw-mod">@Translate("Products")</div> 1581 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1582 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1583 { 1584 @Render(new Link { 1585 Title = Translate("View all"), 1586 CssClass = "js-view-all-button u-margin", 1587 Href = settings.SearchData.ResultsPageUrl 1588 }); 1589 } 1590 </div> 1591 <div class="search__column search__column--pages dw-mod"> 1592 <div class="search__column-header">@Translate("Pages")</div> 1593 <ul class="search__results-list dw-mod js-search-results-second-list" id="@(settings.Id)_SecondResultsList"></ul> 1594 @if (!string.IsNullOrEmpty(settings.SecondSearchData.ResultsPageUrl)) 1595 { 1596 @Render(new Link 1597 { 1598 Title = Translate("View all"), 1599 CssClass = "js-view-all-button u-margin", 1600 Href = settings.SecondSearchData.ResultsPageUrl 1601 }); 1602 } 1603 </div> 1604 } 1605 else 1606 { 1607 <div class="search__column search__column--only dw-mod"> 1608 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1609 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1610 { 1611 @Render(new Link { 1612 Title = Translate("View all"), 1613 CssClass = "js-view-all-button u-margin", 1614 Href = settings.SearchData.ResultsPageUrl 1615 }); 1616 } 1617 </div> 1618 } 1619 </div> 1620 1621 @if (settings.SearchButton != null) 1622 { 1623 settings.SearchButton.CssClass += " search__btn js-search-btn"; 1624 if (settings.RenderDefaultSearchIcon) 1625 { 1626 settings.SearchButton.Icon = new Icon { Name = Pageview.AreaSettings.GetItem("Layout").GetItem("Icons").GetList("SearchIcon").SelectedValue }; 1627 } 1628 @Render(settings.SearchButton); 1629 } 1630 </div> 1631 } 1632 @using System.Reflection 1633 @using Dynamicweb.Rapido.Blocks.Components.General 1634 @using Dynamicweb.Rapido.Blocks.Components 1635 1636 1637 @* Component *@ 1638 1639 @helper RenderSelectField(SelectField settings) 1640 { 1641 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1642 { 1643 settings.Id = Guid.NewGuid().ToString("N"); 1644 } 1645 1646 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1647 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1648 { 1649 <div class="u-full-width"> 1650 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1651 @if (settings.Link != null) { 1652 <div class="u-pull--right"> 1653 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1654 @Render(settings.Link) 1655 </div> 1656 } 1657 </div> 1658 } 1659 1660 @if (!string.IsNullOrEmpty(settings.HelpText)) 1661 { 1662 <small class="form__help-text">@settings.HelpText</small> 1663 } 1664 1665 @if (settings.ActionButton != null) 1666 { 1667 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1668 <div class="form__field-combi u-no-margin dw-mod"> 1669 @RenderSelectBase(settings) 1670 @Render(settings.ActionButton) 1671 </div> 1672 } 1673 else 1674 { 1675 @RenderSelectBase(settings) 1676 } 1677 1678 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1679 </div> 1680 } 1681 1682 @helper RenderSelectBase(SelectField settings) 1683 { 1684 var attributes = new Dictionary<string, string>(); 1685 1686 /*base settings*/ 1687 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1688 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1689 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1690 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1691 if (settings.Required) { attributes.Add("required", "true"); } 1692 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1693 /*end*/ 1694 1695 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1696 1697 <select @ComponentMethods.AddAttributes(resultAttributes) class="u-full-width @settings.CssClass dw-mod"> 1698 @if (settings.Default != null) 1699 { 1700 @Render(settings.Default) 1701 } 1702 1703 @foreach (var item in settings.Options) 1704 { 1705 if (settings.Value != null) { 1706 item.Checked = item.Value == settings.Value; 1707 } 1708 @Render(item) 1709 } 1710 </select> 1711 } 1712 @using System.Reflection 1713 @using Dynamicweb.Rapido.Blocks.Components.General 1714 @using Dynamicweb.Rapido.Blocks.Components 1715 1716 @* Component *@ 1717 1718 @helper RenderRadioButtonField(RadioButtonField settings) 1719 { 1720 var attributes = new Dictionary<string, string>(); 1721 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1722 { 1723 settings.Id = Guid.NewGuid().ToString("N"); 1724 } 1725 1726 /*base settings*/ 1727 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1728 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1729 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1730 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1731 if (settings.Required) { attributes.Add("required", "true"); } 1732 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1733 /*end*/ 1734 1735 attributes.Add("type", "radio"); 1736 if (settings.Checked) { attributes.Add("checked", "true"); } 1737 settings.CssClass = "form__control " + settings.CssClass; 1738 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1739 1740 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1741 1742 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1743 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1744 @if (!string.IsNullOrEmpty(settings.Label)) 1745 { 1746 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1747 } 1748 @if (!string.IsNullOrEmpty(settings.HelpText)) 1749 { 1750 <small class="form__help-text">@settings.HelpText</small> 1751 } 1752 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1753 </div> 1754 } 1755 @using System.Reflection 1756 @using Dynamicweb.Rapido.Blocks.Components.General 1757 @using Dynamicweb.Rapido.Blocks.Components 1758 1759 1760 @* Component *@ 1761 1762 @helper RenderRadioButtonListField(RadioButtonListField settings) 1763 { 1764 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1765 1766 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1767 @if (!string.IsNullOrEmpty(settings.Label)) 1768 { 1769 <label>@settings.Label</label> 1770 } 1771 @if (!string.IsNullOrEmpty(settings.HelpText)) 1772 { 1773 <small class="form__help-text">@settings.HelpText</small> 1774 } 1775 1776 @foreach (var item in settings.Options) 1777 { 1778 if (settings.Required) 1779 { 1780 item.Required = true; 1781 } 1782 if (settings.Disabled) 1783 { 1784 item.Disabled = true; 1785 } 1786 if (!string.IsNullOrEmpty(settings.Name)) 1787 { 1788 item.Name = settings.Name; 1789 } 1790 if (settings.Value != null && settings.Value == item.Value) 1791 { 1792 item.Checked = true; 1793 } 1794 if (!string.IsNullOrEmpty(settings.OnClick)) 1795 { 1796 item.OnClick += settings.OnClick; 1797 } 1798 if (!string.IsNullOrEmpty(settings.OnChange)) 1799 { 1800 item.OnChange += settings.OnChange; 1801 } 1802 if (!string.IsNullOrEmpty(settings.CssClass)) 1803 { 1804 item.CssClass += settings.CssClass; 1805 } 1806 @Render(item) 1807 } 1808 1809 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1810 </div> 1811 } 1812 @using System.Reflection 1813 @using Dynamicweb.Rapido.Blocks.Components.General 1814 @using Dynamicweb.Rapido.Blocks.Components 1815 1816 1817 @* Component *@ 1818 1819 @helper RenderNotificationMessage(NotificationMessage settings) 1820 { 1821 if (!string.IsNullOrEmpty(settings.Message)) 1822 { 1823 var attributes = new Dictionary<string, string>(); 1824 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1825 1826 string messageTypeClass = Enum.GetName(typeof(NotificationMessageType), settings.MessageType).ToLower(); 1827 string messageLayoutClass = Enum.GetName(typeof(NotificationMessageLayout), settings.MessageLayout).ToLower(); 1828 string minHeightClass = settings.Icon != null ? "u-min-h70px" : ""; 1829 1830 <div class="notification-message-@messageTypeClass notification-message-@messageLayoutClass @messageLayoutClass @minHeightClass @settings.CssClass u-full-width dw-mod" @ComponentMethods.AddAttributes(attributes)> 1831 @if (settings.Icon != null) { 1832 settings.Icon.Label = !string.IsNullOrEmpty(settings.Icon.Label) ? settings.Message + settings.Icon.Label : settings.Message; 1833 @Render(settings.Icon) 1834 } else { 1835 @settings.Message 1836 } 1837 </div> 1838 } 1839 } 1840 @using Dynamicweb.Rapido.Blocks.Components.General 1841 1842 1843 @* Component *@ 1844 1845 @helper RenderHandlebarsRoot(HandlebarsRoot settings) { 1846 string preRender = !String.IsNullOrEmpty(settings.PreRenderScriptTemplate) ? "data-pre-render-template=\"" + settings.PreRenderScriptTemplate + "\"" : ""; 1847 1848 <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> 1849 @if (settings.SubBlocks != null) { 1850 @RenderBlockList(settings.SubBlocks) 1851 } 1852 </div> 1853 } 1854 @using System.Reflection 1855 @using Dynamicweb.Rapido.Blocks.Components.General 1856 @using Dynamicweb.Rapido.Blocks.Components 1857 @using System.Text.RegularExpressions 1858 1859 1860 @* Component *@ 1861 1862 @helper RenderSticker(Sticker settings) { 1863 if (!String.IsNullOrEmpty(settings.Title)) { 1864 string size = settings.Size.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Size.ToString().ToLower() : ""; 1865 string style = settings.Style.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Style.ToString().ToLower() : ""; 1866 1867 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 1868 if (!String.IsNullOrEmpty(settings.Color) || !String.IsNullOrEmpty(settings.BackgroundColor)) { 1869 string styleTag = !String.IsNullOrEmpty(settings.Color) ? "color: " + settings.Color + "; " : ""; 1870 styleTag += !String.IsNullOrEmpty(settings.BackgroundColor) ? "background-color: " + settings.BackgroundColor + "; " : ""; 1871 optionalAttributes.Add("style", styleTag); 1872 } 1873 1874 <div class="stickers-container__tag @size @style @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Title</div> 1875 } 1876 } 1877 1878 @using System.Reflection 1879 @using Dynamicweb.Rapido.Blocks.Components.General 1880 @using Dynamicweb.Rapido.Blocks.Components 1881 1882 1883 @* Component *@ 1884 1885 @helper RenderStickersCollection(StickersCollection settings) 1886 { 1887 if (settings.Stickers.Count > 0) 1888 { 1889 string position = "stickers-container--" + Regex.Replace(settings.Position.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower(); 1890 1891 <div class="stickers-container @position @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1892 @foreach (Sticker sticker in settings.Stickers) 1893 { 1894 @Render(sticker) 1895 } 1896 </div> 1897 } 1898 } 1899 1900 @using Dynamicweb.Rapido.Blocks.Components.General 1901 1902 1903 @* Component *@ 1904 1905 @helper RenderForm(Form settings) { 1906 if (settings != null) 1907 { 1908 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 1909 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); }; 1910 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); }; 1911 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); }; 1912 var enctypes = new Dictionary<string, string> 1913 { 1914 { "multipart", "multipart/form-data" }, 1915 { "text", "text/plain" }, 1916 { "application", "application/x-www-form-urlencoded" } 1917 }; 1918 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); }; 1919 optionalAttributes.Add("method", settings.Method.ToString()); 1920 1921 if (!string.IsNullOrEmpty(settings.FormStartMarkup)) 1922 { 1923 @settings.FormStartMarkup 1924 } 1925 else 1926 { 1927 @:<form class="@settings.CssClass u-no-margin dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1928 } 1929 1930 foreach (var field in settings.GetFields()) 1931 { 1932 @Render(field) 1933 } 1934 1935 @:</form> 1936 } 1937 } 1938 @using System.Reflection 1939 @using Dynamicweb.Rapido.Blocks.Components.General 1940 @using Dynamicweb.Rapido.Blocks.Components 1941 1942 1943 @* Component *@ 1944 1945 @helper RenderText(Text settings) 1946 { 1947 @settings.Content 1948 } 1949 @using System.Reflection 1950 @using Dynamicweb.Rapido.Blocks.Components.General 1951 @using Dynamicweb.Rapido.Blocks.Components 1952 1953 1954 @* Component *@ 1955 1956 @helper RenderContentModule(ContentModule settings) { 1957 if (!string.IsNullOrEmpty(settings.Content)) 1958 { 1959 @settings.Content 1960 } 1961 } 1962 @using System.Reflection 1963 @using Dynamicweb.Rapido.Blocks.Components.General 1964 @using Dynamicweb.Rapido.Blocks.Components 1965 1966 1967 @* Component *@ 1968 1969 @helper RenderModal(Modal settings) { 1970 if (settings != null) 1971 { 1972 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 1973 1974 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : ""; 1975 1976 <input type="checkbox" id="@(modalId)ModalTrigger" class="modal-trigger" @onchange /> 1977 1978 <div class="modal-container"> 1979 @if (!settings.DisableDarkOverlay) 1980 { 1981 <label for="@(modalId)ModalTrigger" id="@(modalId)ModalOverlay" class="modal-overlay"></label> 1982 } 1983 <div class="modal modal--@settings.Width.ToString().ToLower() modal-height--@settings.Height.ToString().ToLower()" id="@(modalId)Modal"> 1984 @if (settings.Heading != null) 1985 { 1986 if (!string.IsNullOrEmpty(settings.Heading.Title)) 1987 { 1988 <div class="modal__header"> 1989 @Render(settings.Heading) 1990 </div> 1991 } 1992 } 1993 <div class="modal__body @(settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "")"> 1994 @if (!string.IsNullOrEmpty(settings.BodyText)) 1995 { 1996 @settings.BodyText 1997 } 1998 @if (settings.BodyTemplate != null) 1999 { 2000 @settings.BodyTemplate 2001 } 2002 @{ 2003 var actions = settings.GetActions(); 2004 } 2005 </div> 2006 @if (actions.Length > 0) 2007 { 2008 <div class="modal__footer"> 2009 @foreach (var action in actions) 2010 { 2011 if (Pageview.Device.ToString() != "Mobile") { 2012 action.CssClass += " u-no-margin"; 2013 } else { 2014 action.CssClass += " u-full-width u-margin-bottom"; 2015 } 2016 2017 @Render(action) 2018 } 2019 </div> 2020 } 2021 <label class="modal__close-btn" for="@(modalId)ModalTrigger"></label> 2022 </div> 2023 </div> 2024 } 2025 } 2026 @using Dynamicweb.Rapido.Blocks.Components.General 2027 2028 @* Component *@ 2029 2030 @helper RenderMediaListItem(MediaListItem settings) 2031 { 2032 <div class="media-list-item @settings.CssClass dw-mod" @(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "")> 2033 @if (!string.IsNullOrEmpty(settings.Label)) 2034 { 2035 if (!string.IsNullOrEmpty(settings.Link)) 2036 { 2037 @Render(new Link 2038 { 2039 Href = settings.Link, 2040 CssClass = "media-list-item__sticker dw-mod", 2041 ButtonLayout = ButtonLayout.None, 2042 Title = settings.Label, 2043 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2044 }) 2045 } 2046 else if (!string.IsNullOrEmpty(settings.OnClick)) 2047 { 2048 <span class="media-list-item__sticker dw-mod" onclick="@(settings.OnClick)"> 2049 <span class="u-uppercase">@settings.Label</span> 2050 </span> 2051 } 2052 else 2053 { 2054 <span class="media-list-item__sticker media-list-item__sticker--no-link dw-mod"> 2055 <span class="u-uppercase">@settings.Label</span> 2056 </span> 2057 } 2058 } 2059 <div class="media-list-item__wrap"> 2060 <div class="media-list-item__info dw-mod"> 2061 <div class="media-list-item__header dw-mod"> 2062 @if (!string.IsNullOrEmpty(settings.Title)) 2063 { 2064 if (!string.IsNullOrEmpty(settings.Link)) 2065 { 2066 @Render(new Link 2067 { 2068 Href = settings.Link, 2069 CssClass = "media-list-item__name dw-mod", 2070 ButtonLayout = ButtonLayout.None, 2071 Title = settings.Title, 2072 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2073 }) 2074 } 2075 else if (!string.IsNullOrEmpty(settings.OnClick)) 2076 { 2077 <span class="media-list-item__name dw-mod" onclick="@(settings.OnClick)">@settings.Title</span> 2078 } 2079 else 2080 { 2081 <span class="media-list-item__name media-list-item__name--no-link dw-mod">@settings.Title</span> 2082 } 2083 } 2084 2085 @if (!string.IsNullOrEmpty(settings.Status)) 2086 { 2087 <div class="media-list-item__state dw-mod">@settings.Status</div> 2088 } 2089 </div> 2090 @{ 2091 settings.InfoTable.CssClass += " media-list-item__parameters-table"; 2092 } 2093 2094 @Render(settings.InfoTable) 2095 </div> 2096 <div class="media-list-item__actions dw-mod"> 2097 <div class="media-list-item__actions-list dw-mod"> 2098 @{ 2099 var actions = settings.GetActions(); 2100 2101 foreach (ButtonBase action in actions) 2102 { 2103 action.ButtonLayout = ButtonLayout.None; 2104 action.CssClass += " media-list-item__action link"; 2105 2106 @Render(action) 2107 } 2108 } 2109 </div> 2110 2111 @if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title)) 2112 { 2113 settings.SelectButton.CssClass += " u-no-margin"; 2114 2115 <div class="media-list-item__action-button"> 2116 @Render(settings.SelectButton) 2117 </div> 2118 } 2119 </div> 2120 </div> 2121 </div> 2122 } 2123 @using Dynamicweb.Rapido.Blocks.Components.General 2124 @using Dynamicweb.Rapido.Blocks.Components 2125 2126 @helper RenderTable(Table settings) 2127 { 2128 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2129 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2130 2131 var enumToClasses = new Dictionary<TableDesign, string> 2132 { 2133 { TableDesign.Clean, "table--clean" }, 2134 { TableDesign.Bordered, "table--bordered" }, 2135 { TableDesign.Striped, "table--striped" }, 2136 { TableDesign.Hover, "table--hover" }, 2137 { TableDesign.Compact, "table--compact" }, 2138 { TableDesign.Condensed, "table--condensed" }, 2139 { TableDesign.NoTopBorder, "table--no-top-border" } 2140 }; 2141 string tableDesignClass = ""; 2142 if (settings.Design != TableDesign.None) 2143 { 2144 tableDesignClass = enumToClasses[settings.Design]; 2145 } 2146 2147 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); } 2148 2149 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2150 2151 <table @ComponentMethods.AddAttributes(resultAttributes)> 2152 @if (settings.Header != null) 2153 { 2154 <thead> 2155 @Render(settings.Header) 2156 </thead> 2157 } 2158 <tbody> 2159 @foreach (var row in settings.Rows) 2160 { 2161 @Render(row) 2162 } 2163 </tbody> 2164 @if (settings.Footer != null) 2165 { 2166 <tfoot> 2167 @Render(settings.Footer) 2168 </tfoot> 2169 } 2170 </table> 2171 } 2172 @using Dynamicweb.Rapido.Blocks.Components.General 2173 @using Dynamicweb.Rapido.Blocks.Components 2174 2175 @helper RenderTableRow(TableRow settings) 2176 { 2177 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2179 2180 var enumToClasses = new Dictionary<TableRowDesign, string> 2181 { 2182 { TableRowDesign.NoBorder, "table__row--no-border" }, 2183 { TableRowDesign.Border, "table__row--border" }, 2184 { TableRowDesign.TopBorder, "table__row--top-line" }, 2185 { TableRowDesign.BottomBorder, "table__row--bottom-line" }, 2186 { TableRowDesign.Solid, "table__row--solid" } 2187 }; 2188 2189 string tableRowDesignClass = ""; 2190 if (settings.Design != TableRowDesign.None) 2191 { 2192 tableRowDesignClass = enumToClasses[settings.Design]; 2193 } 2194 2195 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); } 2196 2197 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2198 2199 <tr @ComponentMethods.AddAttributes(resultAttributes)> 2200 @foreach (var cell in settings.Cells) 2201 { 2202 if (settings.IsHeaderRow) 2203 { 2204 cell.IsHeader = true; 2205 } 2206 @Render(cell) 2207 } 2208 </tr> 2209 } 2210 @using Dynamicweb.Rapido.Blocks.Components.General 2211 @using Dynamicweb.Rapido.Blocks.Components 2212 @using Dynamicweb.Core 2213 2214 @helper RenderTableCell(TableCell settings) 2215 { 2216 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2217 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2218 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); } 2219 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); } 2220 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); } 2221 2222 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2223 2224 string tagName = settings.IsHeader ? "th" : "td"; 2225 2226 @("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">") 2227 @settings.Content 2228 @("</" + tagName + ">"); 2229 } 2230 @using System.Linq 2231 @using Dynamicweb.Rapido.Blocks.Components.General 2232 2233 @* Component *@ 2234 2235 @helper RenderPagination(Dynamicweb.Rapido.Blocks.Components.General.Pagination settings) 2236 { 2237 var pageNumberQueryStringName = Dynamicweb.Rapido.Services.Pagination.GetPageNumberQueryStringName(settings); // Get the proper 'page number' query string parameter 2238 var queryParameters = Dynamicweb.Rapido.Services.Url.GetQueryParameters(pageNumberQueryStringName); // Get the NameValueCollection from the querystring 2239 2240 if (settings.NumberOfPages > 1) 2241 { 2242 string url = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/Default.aspx"; 2243 string ariaLabel = !string.IsNullOrWhiteSpace(settings.AriaLabel) ? settings.AriaLabel : Translate("Page navigation"); 2244 Dictionary<string, int> startAndEndPageNumber = Dynamicweb.Rapido.Services.Pagination.GetStartAndEndPageNumber(settings); 2245 2246 <div class="pager u-margin-top dw-mod @settings.CssClass" aria-label="@ariaLabel"> 2247 @if (settings.ShowPagingInfo) 2248 { 2249 <div class="pager__info dw-mod"> 2250 @Translate("Page") @settings.CurrentPageNumber @Translate("of") @settings.NumberOfPages 2251 </div> 2252 } 2253 <ul class="pager__list dw-mod"> 2254 @if (!string.IsNullOrWhiteSpace(settings.FirstPageUrl) && settings.ShowFirstAndLastControls) 2255 { 2256 @Render(new PaginationItem { Link = settings.FirstPageUrl, Icon = settings.FirstIcon }) 2257 } 2258 @if (!string.IsNullOrWhiteSpace(settings.PreviousPageUrl) && settings.ShowNextAndPrevControls) 2259 { 2260 @Render(new PaginationItem { Link = settings.PreviousPageUrl, Icon = settings.PrevIcon }) 2261 } 2262 @if (settings.GetPages().Any()) 2263 { 2264 foreach (var page in settings.GetPages()) 2265 { 2266 @Render(page) 2267 } 2268 } 2269 else 2270 { 2271 for (var page = startAndEndPageNumber["StartPage"]; page <= startAndEndPageNumber["EndPage"]; page++) 2272 { 2273 queryParameters = Dynamicweb.Rapido.Services.Url.UpdateQueryStringParameter(queryParameters, pageNumberQueryStringName, page.ToString()); 2274 @Render(new PaginationItem { Label = page.ToString(), Link = Dynamicweb.Rapido.Services.Url.BuildUri(url, queryParameters).PathAndQuery, IsActive = (settings.CurrentPageNumber == page) }); 2275 } 2276 } 2277 @if (!string.IsNullOrWhiteSpace(settings.NextPageUrl) && settings.ShowNextAndPrevControls) 2278 { 2279 @Render(new PaginationItem { Link = settings.NextPageUrl, Icon = settings.NextIcon }) 2280 } 2281 @if (!string.IsNullOrWhiteSpace(settings.LastPageUrl) && settings.ShowFirstAndLastControls) 2282 { 2283 @Render(new PaginationItem { Link = settings.LastPageUrl, Icon = settings.LastIcon }) 2284 } 2285 </ul> 2286 </div> 2287 } 2288 } 2289 2290 @helper RenderPaginationItem(PaginationItem settings) 2291 { 2292 if (settings.Icon == null) 2293 { 2294 settings.Icon = new Icon(); 2295 } 2296 2297 settings.Icon.Label = settings.Label; 2298 <li class="pager__btn dw-mod"> 2299 @if (settings.IsActive) 2300 { 2301 <span class="pager__num pager__num--current dw-mod"> 2302 @Render(settings.Icon) 2303 </span> 2304 } 2305 else 2306 { 2307 <a href="@settings.Link" class="pager__num dw-mod"> 2308 @Render(settings.Icon) 2309 </a> 2310 } 2311 </li> 2312 } 2313 2314 2315 @using Dynamicweb.Rapido.Blocks.Components.General 2316 @using Dynamicweb.Rapido.Blocks.Components.Ecommerce 2317 2318 2319 2320 2321 2322 @functions { 2323 public string GenerateRgba(string color, string opacity) 2324 { 2325 color = color.Replace("#", ""); 2326 if (color.Length == 6) 2327 { 2328 return "rgba(" + Convert.ToInt32(color.Substring(0, 2), 16) + ", " + Convert.ToInt32(color.Substring(2, 2), 16) + ", " + Convert.ToInt32(color.Substring(4, 2), 16) + ", " + opacity + ");"; 2329 } 2330 else 2331 { 2332 return Convert.ToInt16(color).ToString(); 2333 } 2334 } 2335 } 2336 2337 @{ 2338 string link = !string.IsNullOrEmpty(Model.Item.GetString("Link")) ? Model.Item.GetString("Link") : ""; 2339 string linkTarget = link.Contains("http") || link.Contains(".pdf") ? "_blank" : "_self"; 2340 } 2341 2342 @if (!string.IsNullOrEmpty(link)) 2343 { 2344 @*<a href="@link" target="@linkTarget" class="u-overlay">*@ 2345 <div class="paragraph-image-link-wrapper"> 2346 <a href="@link" target="@linkTarget"> 2347 @RenderTheContent() 2348 </a> 2349 </div> 2350 } 2351 else 2352 { 2353 @RenderTheContent() 2354 } 2355 2356 2357 @helper RenderTheContent() 2358 { 2359 string innerPadding = Model.Item.GetList("Padding") != null ? " padding-size-" + Model.Item.GetList("Padding").SelectedValue.ToLower() : ""; 2360 innerPadding += Model.Item.GetList("PaddingPosition") != null ? " padding-position-" + Model.Item.GetList("PaddingPosition").SelectedValue.ToLower() : ""; 2361 2362 if (!string.IsNullOrEmpty(Model.Item.GetString("Image"))) 2363 { 2364 int width = Model.Item.GetString("ImageWidth") != null ? Model.Item.GetInt32("ImageWidth") : 100; 2365 string styleSetting = Model.Item.GetString("ImageStyle") != null ? Model.Item.GetList("ImageStyle").SelectedValue : ""; 2366 ImageStyle style = ImageStyle.None; 2367 style = styleSetting == "ball" ? style = ImageStyle.Ball : style; 2368 style = styleSetting == "triangle" ? style = ImageStyle.Triangle : style; 2369 var file = Model.Item.GetFile("Image"); 2370 2371 Image image = new Image 2372 { 2373 Path = file, 2374 Style = style, 2375 CssClass = "background-image__cover", 2376 ImageDefault = new ImageSettings 2377 { 2378 Crop = 5, 2379 Width = width 2380 } 2381 }; 2382 2383 if (styleSetting == "square") 2384 { 2385 image.ImageDefault.Crop = 0; 2386 image.ImageDefault.Height = image.ImageDefault.Width; 2387 } 2388 2389 string imageAltText = ""; 2390 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageAltText"))) 2391 { 2392 imageAltText = Model.Item.GetString("ImageAltText"); 2393 } 2394 2395 string imageTitleText = ""; 2396 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageTitleText"))) 2397 { 2398 imageTitleText = Model.Item.GetString("ImageTitleText"); 2399 } 2400 2401 <div class="paragraph-image"> 2402 @RenderWithAltAndTitle(image, imageAltText, imageTitleText) 2403 </div> 2404 } 2405 2406 <div class="u-full-width u-padding-top dw-mod"> 2407 @if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) || !string.IsNullOrEmpty(Model.Item.GetString("Text"))) 2408 { 2409 <div class="u-margin-bottom--lg"> 2410 @if (!Model.Item.GetBoolean("HideTitle")) 2411 { 2412 @Render(new Heading { Title = Model.Item.GetString("Title"), Level = 2, CssClass = "u-no-margin" }) 2413 } 2414 @Render(new Text { Content = Model.Item.GetString("Text") }) 2415 </div> 2416 } 2417 </div> 2418 2419 if (!string.IsNullOrEmpty(Model.Item.GetItem("ButtonOne").GetString("Title"))) 2420 { 2421 <div class="buttons-collection u-block dw-mod"> 2422 @ParagraphButton(Model.Item.GetItem("ButtonOne")) 2423 </div> 2424 } 2425 } 2426 2427 2428 @helper ParagraphButton(ItemViewModel item) 2429 { 2430 if (item != null) 2431 { 2432 if (!string.IsNullOrEmpty(item.GetString("Title"))) 2433 { 2434 Button button = new Button 2435 { 2436 Title = item.GetString("Title"), 2437 Href = item.GetString("Link"), 2438 ButtonLayout = (ButtonLayout)System.Enum.Parse(typeof(ButtonLayout), char.ToUpper(item.GetList("Layout").SelectedValue[0]) + item.GetList("Layout").SelectedValue.Substring(1)) 2439 }; 2440 2441 if (!string.IsNullOrEmpty(item.GetString("Icon"))) 2442 { 2443 button.Icon = new Icon 2444 { 2445 CssClass = item.GetString("Icon") 2446 }; 2447 } 2448 2449 @Render(button) 2450 } 2451 } 2452 } 2453 2454 2455 2456 2457 2458
Error executing template "Designs/Rapido/ContentPage/Paragraph/StandardParagraphThree.cshtml"
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference
   at CallSite.Target(Closure , CallSite , Object )
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<>c__DisplayClass19_0.<RenderTheImage>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 924
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<>c__DisplayClass18_0.<RenderWithAltAndTitle>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 860
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<RenderTheContent>b__48_0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2402
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.Execute() in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2347
   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> 2 @using Dynamicweb.Frontend 3 @using Dynamicweb.Rapido.Blocks.Components 4 @using Dynamicweb.Rapido.Blocks.Components.General 5 6 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 7 @using Dynamicweb.Frontend 8 9 @* Include the components *@ 10 @using System.Text.RegularExpressions 11 @using System.Collections.Generic 12 @using System.Reflection 13 @using System.Web 14 @using System.Web.UI.HtmlControls 15 @using Dynamicweb.Rapido.Blocks.Components 16 @using Dynamicweb.Rapido.Blocks.Components.Articles 17 @using Dynamicweb.Rapido.Blocks.Components.Documentation 18 @using Dynamicweb.Rapido.Blocks 19 20 21 @*--- START: Base block renderers ---*@ 22 23 @helper RenderBlockList(List<Block> blocks) 24 { 25 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 26 blocks = blocks.OrderBy(item => item.SortId).ToList(); 27 28 foreach (Block item in blocks) 29 { 30 if (debug) { 31 <!-- Block START: @item.Id --> 32 } 33 34 if (item.Design == null) 35 { 36 @RenderBlock(item) 37 } 38 else if (item.Design.RenderType == RenderType.None) { 39 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 40 41 <div class="@cssClass dw-mod"> 42 @RenderBlock(item) 43 </div> 44 } 45 else if (item.Design.RenderType != RenderType.Hide) 46 { 47 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 48 49 if (!item.SkipRenderBlocksList) { 50 if (item.Design.RenderType == RenderType.Row) 51 { 52 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id"> 53 @RenderBlock(item) 54 </div> 55 } 56 57 if (item.Design.RenderType == RenderType.Column) 58 { 59 string hidePadding = item.Design.HidePadding ? "u-no-padding" : ""; 60 string size = item.Design.Size ?? "12"; 61 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size; 62 63 <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"> 64 @RenderBlock(item) 65 </div> 66 } 67 68 if (item.Design.RenderType == RenderType.Table) 69 { 70 <table class="table @cssClass dw-mod" id="Block__@item.Id"> 71 @RenderBlock(item) 72 </table> 73 } 74 75 if (item.Design.RenderType == RenderType.TableRow) 76 { 77 <tr class="@cssClass dw-mod" id="Block__@item.Id"> 78 @RenderBlock(item) 79 </tr> 80 } 81 82 if (item.Design.RenderType == RenderType.TableColumn) 83 { 84 <td class="@cssClass dw-mod" id="Block__@item.Id"> 85 @RenderBlock(item) 86 </td> 87 } 88 89 if (item.Design.RenderType == RenderType.CardHeader) 90 { 91 <div class="card-header @cssClass dw-mod"> 92 @RenderBlock(item) 93 </div> 94 } 95 96 if (item.Design.RenderType == RenderType.CardBody) 97 { 98 <div class="card @cssClass dw-mod"> 99 @RenderBlock(item) 100 </div> 101 } 102 103 if (item.Design.RenderType == RenderType.CardFooter) 104 { 105 <div class="card-footer @cssClass dw-mod"> 106 @RenderBlock(item) 107 </div> 108 } 109 } 110 else 111 { 112 @RenderBlock(item) 113 } 114 } 115 116 if (debug) { 117 <!-- Block END: @item.Id --> 118 } 119 } 120 } 121 122 @helper RenderBlock(Block item) 123 { 124 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 125 126 if (item.Template != null) 127 { 128 @BlocksPage.RenderTemplate(item.Template) 129 } 130 131 if (item.Component != null) 132 { 133 string customSufix = "Custom"; 134 string methodName = item.Component.HelperName; 135 136 ComponentBase[] methodParameters = new ComponentBase[1]; 137 methodParameters[0] = item.Component; 138 Type methodType = this.GetType(); 139 140 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix); 141 MethodInfo generalMethod = methodType.GetMethod(methodName); 142 143 try { 144 if (debug) { 145 <!-- Component: @methodName.Replace("Render", "") --> 146 } 147 @customMethod.Invoke(this, methodParameters).ToString(); 148 } catch { 149 try { 150 @generalMethod.Invoke(this, methodParameters).ToString(); 151 } catch(Exception ex) { 152 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex); 153 } 154 } 155 } 156 157 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList) 158 { 159 @RenderBlockList(item.BlocksList) 160 } 161 } 162 163 @*--- END: Base block renderers ---*@ 164 165 @using Dynamicweb.Rapido.Blocks.Components 166 @using Dynamicweb.Rapido.Blocks.Components.General 167 @using Dynamicweb.Rapido.Blocks 168 @using System.IO 169 170 @* Required *@ 171 @using Dynamicweb.Rapido.Blocks.Components 172 @using Dynamicweb.Rapido.Blocks.Components.General 173 @using Dynamicweb.Rapido.Blocks 174 175 176 @helper Render(ComponentBase component) 177 { 178 if (component != null) 179 { 180 @component.Render(this) 181 } 182 } 183 184 @* Components *@ 185 @using System.Reflection 186 @using Dynamicweb.Rapido.Blocks.Components.General 187 188 189 @* Component *@ 190 191 @helper RenderIcon(Icon settings) 192 { 193 if (settings != null) 194 { 195 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 196 197 if (settings.Name != null) 198 { 199 if (string.IsNullOrEmpty(settings.Label)) 200 { 201 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i> 202 } 203 else 204 { 205 if (settings.LabelPosition == IconLabelPosition.Before) 206 { 207 <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> 208 } 209 else 210 { 211 <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> 212 } 213 } 214 } 215 else if (!string.IsNullOrEmpty(settings.Label)) 216 { 217 @settings.Label 218 } 219 } 220 } 221 @using System.Reflection 222 @using Dynamicweb.Rapido.Blocks.Components.General 223 @using Dynamicweb.Rapido.Blocks.Components 224 @using Dynamicweb.Core 225 226 @* Component *@ 227 228 @helper RenderButton(Button settings) 229 { 230 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 231 { 232 Dictionary<string, string> attributes = new Dictionary<string, string>(); 233 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 234 if (settings.Disabled) { 235 attributes.Add("disabled", "true"); 236 classList.Add("disabled"); 237 } 238 239 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle)) 240 { 241 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 242 @RenderConfirmDialog(settings); 243 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true"; 244 } 245 246 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 247 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 248 if (!string.IsNullOrEmpty(settings.AltText)) 249 { 250 attributes.Add("title", settings.AltText); 251 } 252 else if (!string.IsNullOrEmpty(settings.Title)) 253 { 254 string cleanTitle = Regex.Replace(settings.Title, "<.*?>", String.Empty); 255 cleanTitle = cleanTitle.Replace("&nbsp;", " "); 256 attributes.Add("title", cleanTitle); 257 } 258 259 var onClickEvents = new List<string>(); 260 if (!string.IsNullOrEmpty(settings.OnClick)) 261 { 262 onClickEvents.Add(settings.OnClick); 263 } 264 if (!string.IsNullOrEmpty(settings.Href)) 265 { 266 onClickEvents.Add("location.href='" + settings.Href + "'"); 267 } 268 if (onClickEvents.Count > 0) 269 { 270 attributes.Add("onClick", string.Join(";", onClickEvents)); 271 } 272 273 if (settings.ButtonLayout != ButtonLayout.None) 274 { 275 classList.Add("btn"); 276 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 277 if (btnLayout == "linkclean") 278 { 279 btnLayout = "link-clean"; //fix 280 } 281 classList.Add("btn--" + btnLayout); 282 } 283 284 if (settings.Icon == null) 285 { 286 settings.Icon = new Icon(); 287 } 288 289 settings.Icon.CssClass += Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower() != "linkclean" ? " u-flex--align-center" : ""; 290 settings.Icon.Label = settings.Title; 291 292 attributes.Add("type", Enum.GetName(typeof(ButtonType), settings.ButtonType).ToLower()); 293 294 <button class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</button> 295 } 296 } 297 298 @helper RenderConfirmDialog(Button settings) 299 { 300 Modal confirmDialog = new Modal { 301 Id = settings.Id, 302 Width = ModalWidth.Sm, 303 Heading = new Heading 304 { 305 Level = 2, 306 Title = settings.ConfirmTitle 307 }, 308 BodyText = settings.ConfirmText 309 }; 310 311 confirmDialog.AddAction(new Button { Title = Translate("Cancel"), ButtonLayout = ButtonLayout.Secondary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false"}); 312 confirmDialog.AddAction(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false;" + settings.OnClick }); 313 314 @Render(confirmDialog) 315 } 316 @using Dynamicweb.Rapido.Blocks.Components.General 317 @using Dynamicweb.Rapido.Blocks.Components 318 @using Dynamicweb.Core 319 320 @helper RenderDashboard(Dashboard settings) 321 { 322 var widgets = settings.GetWidgets(); 323 324 if (!string.IsNullOrEmpty(settings.WidgetsBaseBackgroundColor)) 325 { 326 //set bg color for them 327 328 System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(settings.WidgetsBaseBackgroundColor); 329 int r = Convert.ToInt16(color.R); 330 int g = Convert.ToInt16(color.G); 331 int b = Convert.ToInt16(color.B); 332 333 var count = widgets.Length; 334 var max = Math.Max(r, Math.Max(g, b)); 335 double step = 255.0 / (max * count); 336 var i = 0; 337 foreach (var widget in widgets) 338 { 339 i++; 340 341 var shade = "rgb(" + Converter.ToString(r * step * i).Replace(",", ".") + ", " + Converter.ToString(g * step * i).Replace(",", ".") + ", " + Converter.ToString(b * step * i).Replace(",", ".") + ")"; 342 widget.BackgroundColor = shade; 343 } 344 } 345 346 <div class="dashboard @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 347 @foreach (var widget in widgets) 348 { 349 <div class="dashboard__widget"> 350 @Render(widget) 351 </div> 352 } 353 </div> 354 } 355 @using Dynamicweb.Rapido.Blocks.Components.General 356 @using Dynamicweb.Rapido.Blocks.Components 357 358 @helper RenderDashboardWidgetLink(DashboardWidgetLink settings) 359 { 360 if (!string.IsNullOrEmpty(settings.Link)) 361 { 362 var backgroundStyles = ""; 363 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 364 { 365 backgroundStyles = "style=\"background-color:" + settings.BackgroundColor + "\""; 366 } 367 368 <a href="@settings.Link" class="widget widget--link @settings.CssClass dw-mod" @backgroundStyles title="@settings.Title" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 369 <div class="u-center-middle u-color-light"> 370 @if (settings.Icon != null) 371 { 372 settings.Icon.CssClass += "widget__icon"; 373 @Render(settings.Icon) 374 } 375 <div class="widget__title">@settings.Title</div> 376 </div> 377 </a> 378 } 379 } 380 @using Dynamicweb.Rapido.Blocks.Components.General 381 @using Dynamicweb.Rapido.Blocks.Components 382 383 @helper RenderDashboardWidgetCounter(DashboardWidgetCounter settings) 384 { 385 var backgroundStyles = ""; 386 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 387 { 388 backgroundStyles = "style='background-color:" + settings.BackgroundColor + "'"; 389 } 390 391 <div class="widget @settings.CssClass dw-mod" @backgroundStyles @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 392 <div class="u-center-middle u-color-light"> 393 @if (settings.Icon != null) 394 { 395 settings.Icon.CssClass += "widget__icon"; 396 @Render(settings.Icon) 397 } 398 <div class="widget__counter">@settings.Count</div> 399 <div class="widget__title">@settings.Title</div> 400 </div> 401 </div> 402 } 403 @using System.Reflection 404 @using Dynamicweb.Rapido.Blocks.Components.General 405 @using Dynamicweb.Rapido.Blocks.Components 406 @using Dynamicweb.Core 407 408 @* Component *@ 409 410 @helper RenderLink(Link settings) 411 { 412 if (settings != null && !string.IsNullOrEmpty(settings.Href) && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 413 { 414 Dictionary<string, string> attributes = new Dictionary<string, string>(); 415 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 416 if (settings.Disabled) 417 { 418 attributes.Add("disabled", "true"); 419 classList.Add("disabled"); 420 } 421 422 if (!string.IsNullOrEmpty(settings.AltText)) 423 { 424 attributes.Add("title", settings.AltText); 425 } 426 else if (!string.IsNullOrEmpty(settings.Title)) 427 { 428 attributes.Add("title", settings.Title); 429 } 430 431 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 432 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 433 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onClick", settings.OnClick); } 434 attributes.Add("href", settings.Href); 435 436 if (settings.ButtonLayout != ButtonLayout.None) 437 { 438 classList.Add("btn"); 439 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 440 if (btnLayout == "linkclean") 441 { 442 btnLayout = "link-clean"; //fix 443 } 444 classList.Add("btn--" + btnLayout); 445 } 446 447 if (settings.Icon == null) 448 { 449 settings.Icon = new Icon(); 450 } 451 settings.Icon.Label = settings.Title; 452 453 if (settings.Target == LinkTargetType.Blank && settings.Rel == LinkRelType.None) 454 { 455 settings.Rel = LinkRelType.Noopener; 456 } 457 if (settings.Target != LinkTargetType.None) 458 { 459 attributes.Add("target", "_" + Enum.GetName(typeof(LinkTargetType), settings.Target).ToLower()); 460 } 461 if (settings.Download) 462 { 463 attributes.Add("download", "true"); 464 } 465 if (settings.Rel != LinkRelType.None) 466 { 467 attributes.Add("rel", Enum.GetName(typeof(LinkRelType), settings.Rel).ToLower()); 468 } 469 470 <a class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</a> 471 } 472 } 473 @using System.Reflection 474 @using Dynamicweb.Rapido.Blocks.Components 475 @using Dynamicweb.Rapido.Blocks.Components.General 476 @using Dynamicweb.Rapido.Blocks 477 478 479 @* Component *@ 480 481 @helper RenderRating(Rating settings) 482 { 483 if (settings.Score > 0) 484 { 485 int rating = settings.Score; 486 string iconType = "fa-star"; 487 488 switch (settings.Type.ToString()) { 489 case "Stars": 490 iconType = "fa-star"; 491 break; 492 case "Hearts": 493 iconType = "fa-heart"; 494 break; 495 case "Lemons": 496 iconType = "fa-lemon"; 497 break; 498 case "Bombs": 499 iconType = "fa-bomb"; 500 break; 501 } 502 503 <div class="u-ta-right"> 504 @for (int i = 0; i < settings.OutOf; i++) 505 { 506 <i class="@(rating > i ? "fas" : "far") @iconType"></i> 507 } 508 </div> 509 } 510 } 511 @using System.Reflection 512 @using Dynamicweb.Rapido.Blocks.Components.General 513 @using Dynamicweb.Rapido.Blocks.Components 514 515 516 @* Component *@ 517 518 @helper RenderSelectFieldOption(SelectFieldOption settings) 519 { 520 Dictionary<string, string> attributes = new Dictionary<string, string>(); 521 if (settings.Checked) { attributes.Add("selected", "true"); } 522 if (settings.Disabled) { attributes.Add("disabled", "true"); } 523 if (settings.Value != null) { attributes.Add("value", settings.Value); } 524 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 525 526 <option @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Label</option> 527 } 528 @using System.Reflection 529 @using Dynamicweb.Rapido.Blocks.Components.General 530 @using Dynamicweb.Rapido.Blocks.Components 531 532 533 @* Component *@ 534 535 @helper RenderNavigation(Navigation settings) { 536 @RenderNavigation(new 537 { 538 id = settings.Id, 539 cssclass = settings.CssClass, 540 startLevel = settings.StartLevel, 541 endlevel = settings.EndLevel, 542 expandmode = settings.Expandmode, 543 sitemapmode = settings.SitemapMode, 544 template = settings.Template 545 }) 546 } 547 @using Dynamicweb.Rapido.Blocks.Components.General 548 @using Dynamicweb.Rapido.Blocks.Components 549 550 551 @* Component *@ 552 553 @helper RenderBreadcrumbNavigation(BreadcrumbNavigation settings) { 554 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 555 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 556 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 557 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 558 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 559 settings.SitemapMode = false; 560 561 @RenderNavigation(settings) 562 } 563 @using Dynamicweb.Rapido.Blocks.Components.General 564 @using Dynamicweb.Rapido.Blocks.Components 565 566 567 @* Component *@ 568 569 @helper RenderLeftNavigation(LeftNavigation settings) { 570 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 571 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 572 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 573 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 574 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 575 576 <div class="grid__cell"> 577 @RenderNavigation(settings) 578 </div> 579 } 580 @using System.Reflection 581 @using Dynamicweb.Rapido.Blocks.Components.General 582 @using Dynamicweb.Core 583 584 @* Component *@ 585 586 @helper RenderHeading(Heading settings) 587 { 588 if (settings != null && !string.IsNullOrEmpty(settings.Title)) 589 { 590 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 591 string tagName = settings.Level != 0 ? "h" + settings.Level.ToString() : "div"; 592 593 @("<" + tagName + " class=\"" + settings.CssClass + " dw-mod\" " + color + ">") 594 if (!string.IsNullOrEmpty(settings.Link)) 595 { 596 @Render(new Link { Href = settings.Link, Icon = settings.Icon, Title = settings.Title, ButtonLayout = ButtonLayout.None }) 597 } 598 else 599 { 600 if (settings.Icon == null) 601 { 602 settings.Icon = new Icon(); 603 } 604 settings.Icon.Label = settings.Title; 605 @Render(settings.Icon) 606 } 607 @("</" + tagName + ">"); 608 } 609 } 610 @using Dynamicweb.Rapido.Blocks.Components 611 @using Dynamicweb.Rapido.Blocks.Components.General 612 @using Dynamicweb.Rapido.Blocks 613 614 615 @* Component *@ 616 617 @helper RenderImage(Image settings) 618 { 619 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 620 { 621 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 622 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 623 624 if (settings.Caption != null) 625 { 626 @:<div> 627 } 628 629 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 630 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 631 632 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 633 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 634 @if (settings.Link != null) 635 { 636 <a href="@settings.Link"> 637 @RenderTheImage(settings) 638 </a> 639 } 640 else 641 { 642 @RenderTheImage(settings) 643 } 644 </div> 645 </div> 646 647 if (settings.Caption != null) 648 { 649 <span class="image-caption dw-mod">@settings.Caption</span> 650 @:</div> 651 } 652 } 653 else 654 { 655 if (settings.Caption != null) 656 { 657 @:<div> 658 } 659 if (!string.IsNullOrEmpty(settings.Link)) 660 { 661 <a href="@settings.Link"> 662 @RenderTheImage(settings) 663 </a> 664 } 665 else 666 { 667 @RenderTheImage(settings) 668 } 669 670 if (settings.Caption != null) 671 { 672 <span class="image-caption dw-mod">@settings.Caption</span> 673 @:</div> 674 } 675 } 676 } 677 678 @helper RenderTheImage(Image settings) 679 { 680 if (settings != null) 681 { 682 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 683 string placeholderImage = "/Files/Images/placeholder.gif"; 684 string imageEngine = "/Admin/Public/GetImage.ashx?"; 685 686 string imageStyle = ""; 687 688 switch (settings.Style) 689 { 690 case ImageStyle.Ball: 691 imageStyle = "grid__cell-img--ball"; 692 break; 693 694 case ImageStyle.Triangle: 695 imageStyle = "grid__cell-img--triangle"; 696 break; 697 } 698 699 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 700 { 701 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 702 703 if (settings.ImageDefault != null) 704 { 705 settings.ImageDefault.Height = settings.ImageDefault.Width; 706 } 707 if (settings.ImageMedium != null) 708 { 709 settings.ImageMedium.Height = settings.ImageMedium.Width; 710 } 711 if (settings.ImageSmall != null) 712 { 713 settings.ImageSmall.Height = settings.ImageSmall.Width; 714 } 715 } 716 717 string defaultImage = imageEngine; 718 string imageSmall = ""; 719 string imageMedium = ""; 720 721 if (settings.DisableImageEngine) 722 { 723 defaultImage = settings.Path; 724 } 725 else 726 { 727 if (settings.ImageDefault != null) 728 { 729 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 730 731 if (settings.Path.GetType() != typeof(string)) 732 { 733 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 734 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 735 } 736 else 737 { 738 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 739 } 740 741 defaultImage += "&AlternativeImage=" + alternativeImage; 742 } 743 744 if (settings.ImageSmall != null) 745 { 746 imageSmall = "data-src-small=\"" + imageEngine; 747 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 748 749 if (settings.Path.GetType() != typeof(string)) 750 { 751 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 752 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 753 } 754 else 755 { 756 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 757 } 758 759 imageSmall += "&alternativeImage=" + alternativeImage; 760 761 imageSmall += "\""; 762 } 763 764 if (settings.ImageMedium != null) 765 { 766 imageMedium = "data-src-medium=\"" + imageEngine; 767 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 768 769 if (settings.Path.GetType() != typeof(string)) 770 { 771 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 772 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 773 } 774 else 775 { 776 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 777 } 778 779 imageMedium += "&alternativeImage=" + alternativeImage; 780 781 imageMedium += "\""; 782 } 783 } 784 785 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 786 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 787 if (!string.IsNullOrEmpty(settings.Title)) 788 { 789 optionalAttributes.Add("alt", settings.Title); 790 optionalAttributes.Add("title", settings.Title); 791 } 792 793 if (settings.DisableLazyLoad) 794 { 795 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 796 } 797 else 798 { 799 <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) /> 800 } 801 } 802 } 803 @using Dynamicweb.Rapido.Blocks.Components 804 @using Dynamicweb.Rapido.Blocks.Components.General 805 @using Dynamicweb.Rapido.Blocks 806 807 808 @* Component *@ 809 810 @helper RenderWithAltAndTitle(Image settings, string alText = "", string titleText = "") 811 { 812 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 813 { 814 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 815 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 816 817 if (settings.Caption != null) 818 { 819 @:<div> 820 } 821 822 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 823 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 824 825 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 826 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 827 @if (settings.Link != null) 828 { 829 <a href="@settings.Link"> 830 @RenderTheImage(settings, alText, titleText) 831 </a> 832 } 833 else 834 { 835 @RenderTheImage(settings, alText, titleText) 836 } 837 </div> 838 </div> 839 840 if (settings.Caption != null) 841 { 842 <span class="image-caption dw-mod">@settings.Caption</span> 843 @:</div> 844 } 845 } 846 else 847 { 848 if (settings.Caption != null) 849 { 850 @:<div> 851 } 852 if (!string.IsNullOrEmpty(settings.Link)) 853 { 854 <a href="@settings.Link"> 855 @RenderTheImage(settings, alText, titleText) 856 </a> 857 } 858 else 859 { 860 @RenderTheImage(settings, alText, titleText) 861 } 862 863 if (settings.Caption != null) 864 { 865 <span class="image-caption dw-mod">@settings.Caption</span> 866 @:</div> 867 } 868 } 869 } 870 871 @helper RenderTheImage(Image settings, string alText = "", string titleText = "") 872 { 873 if (settings != null) 874 { 875 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 876 string placeholderImage = "/Files/Images/placeholder.gif"; 877 string imageEngine = "/Admin/Public/GetImage.ashx?"; 878 879 string imageStyle = ""; 880 881 switch (settings.Style) 882 { 883 case ImageStyle.Ball: 884 imageStyle = "grid__cell-img--ball"; 885 break; 886 887 case ImageStyle.Triangle: 888 imageStyle = "grid__cell-img--triangle"; 889 break; 890 } 891 892 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 893 { 894 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 895 896 if (settings.ImageDefault != null) 897 { 898 settings.ImageDefault.Height = settings.ImageDefault.Width; 899 } 900 if (settings.ImageMedium != null) 901 { 902 settings.ImageMedium.Height = settings.ImageMedium.Width; 903 } 904 if (settings.ImageSmall != null) 905 { 906 settings.ImageSmall.Height = settings.ImageSmall.Width; 907 } 908 } 909 910 string defaultImage = imageEngine; 911 string imageSmall = ""; 912 string imageMedium = ""; 913 914 if (settings.DisableImageEngine) 915 { 916 defaultImage = settings.Path; 917 } 918 else 919 { 920 if (settings.ImageDefault != null) 921 { 922 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 923 924 if (settings.Path.GetType() != typeof(string)) 925 { 926 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 927 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 928 } 929 else 930 { 931 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 932 } 933 934 defaultImage += "&AlternativeImage=" + alternativeImage; 935 } 936 937 if (settings.ImageSmall != null) 938 { 939 imageSmall = "data-src-small=\"" + imageEngine; 940 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 941 942 if (settings.Path.GetType() != typeof(string)) 943 { 944 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 945 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 946 } 947 else 948 { 949 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 950 } 951 952 imageSmall += "&alternativeImage=" + alternativeImage; 953 954 imageSmall += "\""; 955 } 956 957 if (settings.ImageMedium != null) 958 { 959 imageMedium = "data-src-medium=\"" + imageEngine; 960 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 961 962 if (settings.Path.GetType() != typeof(string)) 963 { 964 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 965 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 966 } 967 else 968 { 969 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 970 971 972 } 973 974 imageMedium += "&alternativeImage=" + alternativeImage; 975 976 imageMedium += "\""; 977 } 978 } 979 980 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 981 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 982 if (!string.IsNullOrEmpty(settings.Title)) 983 { 984 optionalAttributes.Add("alt", settings.Title); 985 optionalAttributes.Add("title", settings.Title); 986 } 987 988 989 990 string imgAlt = ""; 991 string imgTitle = ""; 992 993 if (!string.IsNullOrWhiteSpace(alText)) 994 { 995 imgAlt = "alt=" + '"' + alText + '"'; 996 } 997 998 if (!string.IsNullOrWhiteSpace(titleText)) 999 { 1000 imgTitle = "title=" + '"' + titleText + '"'; 1001 1002 } 1003 1004 1005 if (settings.DisableLazyLoad) 1006 { 1007 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1008 } 1009 else 1010 { 1011 <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) @imgAlt @imgTitle /> 1012 } 1013 } 1014 } 1015 @using System.Reflection 1016 @using Dynamicweb.Rapido.Blocks.Components.General 1017 @using Dynamicweb.Rapido.Blocks.Components 1018 1019 @* Component *@ 1020 1021 @helper RenderFileField(FileField settings) 1022 { 1023 var attributes = new Dictionary<string, string>(); 1024 if (string.IsNullOrEmpty(settings.Id)) 1025 { 1026 settings.Id = Guid.NewGuid().ToString("N"); 1027 } 1028 1029 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1030 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1031 if (settings.Required) { attributes.Add("required", "true"); } 1032 if (settings.Multiple) { attributes.Add("multiple", "true"); } 1033 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1034 if (string.IsNullOrEmpty(settings.ChooseFileText)) 1035 { 1036 settings.ChooseFileText = Translate("Choose file"); 1037 } 1038 if (string.IsNullOrEmpty(settings.NoFilesChosenText)) 1039 { 1040 settings.NoFilesChosenText = Translate("No files chosen..."); 1041 } 1042 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1043 1044 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1045 1046 string setValueToFakeInput = "FileUpload.setValueToFakeInput(this)"; 1047 attributes.Add("onchange", setValueToFakeInput + (!string.IsNullOrEmpty(settings.OnChange) ? settings.OnChange : "")); 1048 1049 attributes.Add("type", "file"); 1050 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1051 settings.CssClass = "u-full-width " + settings.CssClass; 1052 1053 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1054 1055 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1056 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1057 { 1058 <div class="u-full-width"> 1059 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1060 @if (settings.Link != null) { 1061 <div class="u-pull--right"> 1062 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1063 @Render(settings.Link) 1064 </div> 1065 } 1066 </div> 1067 1068 } 1069 1070 @if (!string.IsNullOrEmpty(settings.HelpText)) 1071 { 1072 <small class="form__help-text">@settings.HelpText</small> 1073 } 1074 1075 <div class="form__field-combi file-input u-no-margin dw-mod"> 1076 <input @ComponentMethods.AddAttributes(resultAttributes) class="file-input__real-input" data-no-files-text="@settings.NoFilesChosenText" data-many-files-text="@Translate("files")" /> 1077 <label for="@settings.Id" class="file-input__btn btn--secondary btn dw-mod">@settings.ChooseFileText</label> 1078 <label for="@settings.Id" class="@settings.CssClass file-input__fake-input js-fake-input dw-mod">@settings.NoFilesChosenText</label> 1079 @if (settings.UploadButton != null) 1080 { 1081 settings.UploadButton.CssClass += " btn--condensed u-no-margin"; 1082 @Render(settings.UploadButton) 1083 } 1084 </div> 1085 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1086 </div> 1087 } 1088 @using System.Reflection 1089 @using Dynamicweb.Rapido.Blocks.Components.General 1090 @using Dynamicweb.Rapido.Blocks.Components 1091 @using Dynamicweb.Core 1092 @using System.Linq 1093 1094 @* Component *@ 1095 1096 @helper RenderDateTimeField(DateTimeField settings) 1097 { 1098 if (string.IsNullOrEmpty(settings.Id)) 1099 { 1100 settings.Id = Guid.NewGuid().ToString("N"); 1101 } 1102 1103 var textField = new TextField { 1104 Name = settings.Name, 1105 Id = settings.Id, 1106 Label = settings.Label, 1107 HelpText = settings.HelpText, 1108 Value = settings.Value, 1109 Disabled = settings.Disabled, 1110 Required = settings.Required, 1111 ErrorMessage = settings.ErrorMessage, 1112 CssClass = settings.CssClass, 1113 WrapperCssClass = settings.WrapperCssClass, 1114 OnChange = settings.OnChange, 1115 OnClick = settings.OnClick, 1116 Link = settings.Link, 1117 ExtraAttributes = settings.ExtraAttributes, 1118 // 1119 Placeholder = settings.Placeholder 1120 }; 1121 1122 @Render(textField) 1123 1124 List<string> jsAttributes = new List<string>(); 1125 1126 jsAttributes.Add("mode: '" + Enum.GetName(typeof(DateTimeFieldMode), settings.Mode).ToLower() + "'"); 1127 1128 if (!string.IsNullOrEmpty(settings.DateFormat)) 1129 { 1130 jsAttributes.Add("dateFormat: '" + settings.DateFormat + "'"); 1131 } 1132 if (!string.IsNullOrEmpty(settings.MinDate)) 1133 { 1134 jsAttributes.Add("minDate: '" + settings.MinDate + "'"); 1135 } 1136 if (!string.IsNullOrEmpty(settings.MaxDate)) 1137 { 1138 jsAttributes.Add("maxDate: '" + settings.MaxDate + "'"); 1139 } 1140 if (settings.IsInline) 1141 { 1142 jsAttributes.Add("inline: " + Converter.ToString(settings.IsInline).ToLower()); 1143 } 1144 if (settings.EnableTime) 1145 { 1146 jsAttributes.Add("enableTime: " + Converter.ToString(settings.EnableTime).ToLower()); 1147 } 1148 if (settings.EnableWeekNumbers) 1149 { 1150 jsAttributes.Add("weekNumbers: " + Converter.ToString(settings.EnableWeekNumbers).ToLower()); 1151 } 1152 1153 jsAttributes.AddRange(settings.GetFlatPickrOptions().Select(x => x.Key + ": " + x.Value)); 1154 1155 <script> 1156 document.addEventListener("DOMContentLoaded", function () { 1157 flatpickr("#@textField.Id", { 1158 @string.Join(",", jsAttributes) 1159 }); 1160 }); 1161 </script> 1162 } 1163 @using System.Reflection 1164 @using Dynamicweb.Rapido.Blocks.Components.General 1165 @using Dynamicweb.Rapido.Blocks.Components 1166 1167 @* Component *@ 1168 1169 @helper RenderTextField(TextField settings) 1170 { 1171 var attributes = new Dictionary<string, string>(); 1172 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1173 { 1174 settings.Id = Guid.NewGuid().ToString("N"); 1175 } 1176 1177 /*base settings*/ 1178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1179 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1180 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1181 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1182 if (settings.Required) { attributes.Add("required", "true"); } 1183 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1184 /*end*/ 1185 1186 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1187 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1188 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1189 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1190 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1191 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1192 attributes.Add("type", Enum.GetName(typeof(TextFieldType), settings.Type).ToLower()); 1193 if (settings.Type == TextFieldType.Password) { attributes.Add("autocomplete", "off"); }; 1194 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1195 1196 settings.CssClass = "u-full-width " + settings.CssClass; 1197 1198 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1199 1200 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1201 1202 string noMargin = "u-no-margin"; 1203 if (!settings.ReadOnly) { 1204 noMargin = ""; 1205 } 1206 1207 <div class="form__field-group u-full-width @noMargin @settings.WrapperCssClass dw-mod"> 1208 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1209 { 1210 <div class="u-full-width"> 1211 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1212 @if (settings.Link != null) { 1213 settings.Link.ButtonLayout = ButtonLayout.LinkClean; 1214 1215 <div class="u-pull--right"> 1216 @Render(settings.Link) 1217 </div> 1218 } 1219 </div> 1220 1221 } 1222 1223 @if (!string.IsNullOrEmpty(settings.HelpText)) 1224 { 1225 <small class="form__help-text">@settings.HelpText</small> 1226 } 1227 1228 @if (settings.ActionButton != null) 1229 { 1230 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1231 <div class="form__field-combi u-no-margin dw-mod"> 1232 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1233 @Render(settings.ActionButton) 1234 </div> 1235 } 1236 else 1237 { 1238 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1239 } 1240 1241 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1242 </div> 1243 } 1244 @using System.Reflection 1245 @using Dynamicweb.Rapido.Blocks.Components.General 1246 @using Dynamicweb.Rapido.Blocks.Components 1247 1248 @* Component *@ 1249 1250 @helper RenderNumberField(NumberField settings) 1251 { 1252 var attributes = new Dictionary<string, string>(); 1253 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1254 { 1255 settings.Id = Guid.NewGuid().ToString("N"); 1256 } 1257 1258 /*base settings*/ 1259 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1260 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1261 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1262 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1263 if (settings.Required) { attributes.Add("required", "true"); } 1264 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1265 /*end*/ 1266 1267 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1268 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1269 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1270 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1271 if (settings.Max != null) { attributes.Add("max", settings.Max.ToString()); } 1272 if (settings.Min != null) { attributes.Add("min", settings.Min.ToString()); } 1273 if (settings.Step != 0) { attributes.Add("step", settings.Step.ToString()); } 1274 if (settings.Value != null && !string.IsNullOrEmpty(settings.Value.ToString())) { attributes.Add("value", settings.Value.ToString()); } 1275 attributes.Add("type", "number"); 1276 1277 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1278 1279 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1280 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1281 { 1282 <div class="u-full-width"> 1283 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1284 @if (settings.Link != null) { 1285 <div class="u-pull--right"> 1286 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1287 @Render(settings.Link) 1288 </div> 1289 } 1290 </div> 1291 1292 } 1293 1294 @if (!string.IsNullOrEmpty(settings.HelpText)) 1295 { 1296 <small class="form__help-text">@settings.HelpText</small> 1297 } 1298 1299 @if (settings.ActionButton != null) 1300 { 1301 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1302 <div class="form__field-combi u-no-margin dw-mod"> 1303 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1304 @Render(settings.ActionButton) 1305 </div> 1306 } 1307 else 1308 { 1309 <div class="form__field-combi u-no-margin dw-mod"> 1310 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1311 </div> 1312 } 1313 1314 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1315 </div> 1316 } 1317 @using System.Reflection 1318 @using Dynamicweb.Rapido.Blocks.Components.General 1319 @using Dynamicweb.Rapido.Blocks.Components 1320 1321 1322 @* Component *@ 1323 1324 @helper RenderTextareaField(TextareaField settings) 1325 { 1326 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1327 string id = settings.Id; 1328 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(id)) 1329 { 1330 id = Guid.NewGuid().ToString("N"); 1331 } 1332 1333 if (!string.IsNullOrEmpty(id)) { attributes.Add("id", id); } 1334 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1335 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1336 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1337 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1338 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1339 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1340 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1341 if (settings.Required) { attributes.Add("required", "true"); } 1342 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1343 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1344 if (settings.Rows != 0) { attributes.Add("rows", settings.Rows.ToString()); } 1345 attributes.Add("name", settings.Name); 1346 1347 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1348 1349 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1350 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1351 { 1352 <div class="u-full-width"> 1353 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1354 @if (settings.Link != null) { 1355 <div class="u-pull--right"> 1356 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1357 @Render(settings.Link) 1358 </div> 1359 } 1360 </div> 1361 } 1362 1363 @if (!string.IsNullOrEmpty(settings.HelpText)) 1364 { 1365 <small class="form__help-text">@settings.HelpText</small> 1366 } 1367 1368 <textarea class="u-full-width @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Value</textarea> 1369 1370 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1371 </div> 1372 } 1373 @using System.Reflection 1374 @using Dynamicweb.Rapido.Blocks.Components.General 1375 @using Dynamicweb.Rapido.Blocks.Components 1376 1377 1378 @* Component *@ 1379 1380 @helper RenderHiddenField(HiddenField settings) { 1381 var attributes = new Dictionary<string, string>(); 1382 attributes.Add("type", "hidden"); 1383 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1384 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1385 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1386 1387 <input @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)/> 1388 } 1389 @using System.Reflection 1390 @using Dynamicweb.Rapido.Blocks.Components.General 1391 @using Dynamicweb.Rapido.Blocks.Components 1392 1393 @* Component *@ 1394 1395 @helper RenderCheckboxField(CheckboxField settings) 1396 { 1397 var attributes = new Dictionary<string, string>(); 1398 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1399 { 1400 settings.Id = Guid.NewGuid().ToString("N"); 1401 } 1402 1403 /*base settings*/ 1404 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1405 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1406 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1407 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1408 if (settings.Required) { attributes.Add("required", "true"); } 1409 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1410 /*end*/ 1411 1412 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1413 1414 attributes.Add("type", "checkbox"); 1415 if (settings.Checked) { attributes.Add("checked", "true"); } 1416 settings.CssClass = "form__control " + settings.CssClass; 1417 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1418 1419 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1420 1421 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1422 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1423 @if (!string.IsNullOrEmpty(settings.Label)) 1424 { 1425 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1426 } 1427 1428 @if (settings.Link != null) { 1429 <span> 1430 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1431 @Render(settings.Link) 1432 </span> 1433 } 1434 1435 @if (!string.IsNullOrEmpty(settings.HelpText)) 1436 { 1437 <small class="form__help-text checkbox-help dw-mod">@settings.HelpText</small> 1438 } 1439 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1440 </div> 1441 } 1442 @using System.Reflection 1443 @using Dynamicweb.Rapido.Blocks.Components.General 1444 @using Dynamicweb.Rapido.Blocks.Components 1445 1446 1447 @* Component *@ 1448 1449 @helper RenderCheckboxListField(CheckboxListField settings) 1450 { 1451 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1452 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1453 { 1454 <div class="u-full-width"> 1455 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1456 @if (settings.Link != null) { 1457 <div class="u-pull--right"> 1458 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1459 @Render(settings.Link) 1460 </div> 1461 } 1462 </div> 1463 1464 } 1465 1466 <div class="u-pull--left"> 1467 @if (!string.IsNullOrEmpty(settings.HelpText)) 1468 { 1469 <small class="form__help-text">@settings.HelpText</small> 1470 } 1471 1472 @foreach (var item in settings.Options) 1473 { 1474 if (settings.Required) 1475 { 1476 item.Required = true; 1477 } 1478 if (settings.Disabled) 1479 { 1480 item.Disabled = true; 1481 } 1482 if (!string.IsNullOrEmpty(settings.Name)) 1483 { 1484 item.Name = settings.Name; 1485 } 1486 if (!string.IsNullOrEmpty(settings.CssClass)) 1487 { 1488 item.CssClass += settings.CssClass; 1489 } 1490 1491 /* value is not supported */ 1492 1493 if (!string.IsNullOrEmpty(settings.OnClick)) 1494 { 1495 item.OnClick += settings.OnClick; 1496 } 1497 if (!string.IsNullOrEmpty(settings.OnChange)) 1498 { 1499 item.OnChange += settings.OnChange; 1500 } 1501 @Render(item) 1502 } 1503 1504 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1505 </div> 1506 1507 </div> 1508 } 1509 @using Dynamicweb.Rapido.Blocks.Components.General 1510 1511 @* Component *@ 1512 1513 @helper RenderSearch(Search settings) 1514 { 1515 var searchValue = HttpContext.Current.Request.QueryString.Get(settings.SearchParameter) ?? ""; 1516 var groupValue = HttpContext.Current.Request.QueryString.Get(settings.GroupsParameter) ?? ""; 1517 1518 if (string.IsNullOrEmpty(settings.Id)) 1519 { 1520 settings.Id = Guid.NewGuid().ToString("N"); 1521 } 1522 1523 var resultAttributes = new Dictionary<string, string>(); 1524 1525 if (settings.PageSize != 0) 1526 { 1527 resultAttributes.Add("data-page-size", settings.PageSize.ToString()); 1528 } 1529 if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1530 { 1531 resultAttributes.Add("data-groups-feed-url", settings.GroupItemsFeedUrl); 1532 if (!string.IsNullOrEmpty(groupValue)) 1533 { 1534 resultAttributes.Add("data-selected-group", groupValue); 1535 } 1536 if (!string.IsNullOrEmpty(settings.GroupsParameter)) 1537 { 1538 resultAttributes.Add("data-groups-parameter", settings.GroupsParameter); 1539 } 1540 } 1541 resultAttributes.Add("data-force-init", "true"); 1542 if (settings.GoToFirstSearchResultOnEnter) 1543 { 1544 resultAttributes.Add("data-go-to-first-search-result-on-enter", settings.GoToFirstSearchResultOnEnter.ToString().ToLower()); 1545 } 1546 if (!string.IsNullOrEmpty(settings.SearchParameter)) 1547 { 1548 resultAttributes.Add("data-search-parameter", settings.SearchParameter); 1549 } 1550 resultAttributes.Add("data-search-feed-url", settings.SearchData.SearchFeedUrl); 1551 resultAttributes.Add("data-results-template-id", settings.SearchData.ResultsTemplateId); 1552 1553 if (settings.SecondSearchData != null) 1554 { 1555 resultAttributes.Add("data-second-search-feed-url", settings.SecondSearchData.SearchFeedUrl); 1556 resultAttributes.Add("data-second-results-template-id", settings.SecondSearchData.ResultsTemplateId); 1557 } 1558 if (!string.IsNullOrEmpty(settings.ResultsPageUrl)) 1559 { 1560 resultAttributes.Add("data-results-page-url", settings.ResultsPageUrl); 1561 } 1562 1563 resultAttributes = resultAttributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1564 1565 string searchFieldCss = (settings.SearchButton == null) ? "search--with-icon" : ""; 1566 1567 <div class="search @settings.CssClass @searchFieldCss js-search-data-source dw-mod" id="@settings.Id" @ComponentMethods.AddAttributes(resultAttributes)> 1568 @if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1569 { 1570 <button type="button" class="search__groups-btn dw-mod js-search-groups-btn">@Translate("All")</button> 1571 <ul class="dropdown dropdown--absolute-position dw-mod search__groups-results js-search-groups-list"></ul> 1572 } 1573 1574 <input type="text" class="search__field dw-mod js-search-field" placeholder="@settings.Placeholder" value="@searchValue"> 1575 1576 <div class="dropdown dropdown--absolute-position search__results dw-mod js-search-results @(settings.SecondSearchData != null ? "search__results--combined" : "")"> 1577 @if (settings.SecondSearchData != null) 1578 { 1579 <div class="search__column search__column--products dw-mod"> 1580 <div class="search__column-header dw-mod">@Translate("Products")</div> 1581 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1582 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1583 { 1584 @Render(new Link { 1585 Title = Translate("View all"), 1586 CssClass = "js-view-all-button u-margin", 1587 Href = settings.SearchData.ResultsPageUrl 1588 }); 1589 } 1590 </div> 1591 <div class="search__column search__column--pages dw-mod"> 1592 <div class="search__column-header">@Translate("Pages")</div> 1593 <ul class="search__results-list dw-mod js-search-results-second-list" id="@(settings.Id)_SecondResultsList"></ul> 1594 @if (!string.IsNullOrEmpty(settings.SecondSearchData.ResultsPageUrl)) 1595 { 1596 @Render(new Link 1597 { 1598 Title = Translate("View all"), 1599 CssClass = "js-view-all-button u-margin", 1600 Href = settings.SecondSearchData.ResultsPageUrl 1601 }); 1602 } 1603 </div> 1604 } 1605 else 1606 { 1607 <div class="search__column search__column--only dw-mod"> 1608 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1609 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1610 { 1611 @Render(new Link { 1612 Title = Translate("View all"), 1613 CssClass = "js-view-all-button u-margin", 1614 Href = settings.SearchData.ResultsPageUrl 1615 }); 1616 } 1617 </div> 1618 } 1619 </div> 1620 1621 @if (settings.SearchButton != null) 1622 { 1623 settings.SearchButton.CssClass += " search__btn js-search-btn"; 1624 if (settings.RenderDefaultSearchIcon) 1625 { 1626 settings.SearchButton.Icon = new Icon { Name = Pageview.AreaSettings.GetItem("Layout").GetItem("Icons").GetList("SearchIcon").SelectedValue }; 1627 } 1628 @Render(settings.SearchButton); 1629 } 1630 </div> 1631 } 1632 @using System.Reflection 1633 @using Dynamicweb.Rapido.Blocks.Components.General 1634 @using Dynamicweb.Rapido.Blocks.Components 1635 1636 1637 @* Component *@ 1638 1639 @helper RenderSelectField(SelectField settings) 1640 { 1641 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1642 { 1643 settings.Id = Guid.NewGuid().ToString("N"); 1644 } 1645 1646 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1647 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1648 { 1649 <div class="u-full-width"> 1650 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1651 @if (settings.Link != null) { 1652 <div class="u-pull--right"> 1653 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1654 @Render(settings.Link) 1655 </div> 1656 } 1657 </div> 1658 } 1659 1660 @if (!string.IsNullOrEmpty(settings.HelpText)) 1661 { 1662 <small class="form__help-text">@settings.HelpText</small> 1663 } 1664 1665 @if (settings.ActionButton != null) 1666 { 1667 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1668 <div class="form__field-combi u-no-margin dw-mod"> 1669 @RenderSelectBase(settings) 1670 @Render(settings.ActionButton) 1671 </div> 1672 } 1673 else 1674 { 1675 @RenderSelectBase(settings) 1676 } 1677 1678 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1679 </div> 1680 } 1681 1682 @helper RenderSelectBase(SelectField settings) 1683 { 1684 var attributes = new Dictionary<string, string>(); 1685 1686 /*base settings*/ 1687 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1688 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1689 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1690 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1691 if (settings.Required) { attributes.Add("required", "true"); } 1692 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1693 /*end*/ 1694 1695 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1696 1697 <select @ComponentMethods.AddAttributes(resultAttributes) class="u-full-width @settings.CssClass dw-mod"> 1698 @if (settings.Default != null) 1699 { 1700 @Render(settings.Default) 1701 } 1702 1703 @foreach (var item in settings.Options) 1704 { 1705 if (settings.Value != null) { 1706 item.Checked = item.Value == settings.Value; 1707 } 1708 @Render(item) 1709 } 1710 </select> 1711 } 1712 @using System.Reflection 1713 @using Dynamicweb.Rapido.Blocks.Components.General 1714 @using Dynamicweb.Rapido.Blocks.Components 1715 1716 @* Component *@ 1717 1718 @helper RenderRadioButtonField(RadioButtonField settings) 1719 { 1720 var attributes = new Dictionary<string, string>(); 1721 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1722 { 1723 settings.Id = Guid.NewGuid().ToString("N"); 1724 } 1725 1726 /*base settings*/ 1727 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1728 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1729 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1730 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1731 if (settings.Required) { attributes.Add("required", "true"); } 1732 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1733 /*end*/ 1734 1735 attributes.Add("type", "radio"); 1736 if (settings.Checked) { attributes.Add("checked", "true"); } 1737 settings.CssClass = "form__control " + settings.CssClass; 1738 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1739 1740 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1741 1742 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1743 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1744 @if (!string.IsNullOrEmpty(settings.Label)) 1745 { 1746 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1747 } 1748 @if (!string.IsNullOrEmpty(settings.HelpText)) 1749 { 1750 <small class="form__help-text">@settings.HelpText</small> 1751 } 1752 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1753 </div> 1754 } 1755 @using System.Reflection 1756 @using Dynamicweb.Rapido.Blocks.Components.General 1757 @using Dynamicweb.Rapido.Blocks.Components 1758 1759 1760 @* Component *@ 1761 1762 @helper RenderRadioButtonListField(RadioButtonListField settings) 1763 { 1764 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1765 1766 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1767 @if (!string.IsNullOrEmpty(settings.Label)) 1768 { 1769 <label>@settings.Label</label> 1770 } 1771 @if (!string.IsNullOrEmpty(settings.HelpText)) 1772 { 1773 <small class="form__help-text">@settings.HelpText</small> 1774 } 1775 1776 @foreach (var item in settings.Options) 1777 { 1778 if (settings.Required) 1779 { 1780 item.Required = true; 1781 } 1782 if (settings.Disabled) 1783 { 1784 item.Disabled = true; 1785 } 1786 if (!string.IsNullOrEmpty(settings.Name)) 1787 { 1788 item.Name = settings.Name; 1789 } 1790 if (settings.Value != null && settings.Value == item.Value) 1791 { 1792 item.Checked = true; 1793 } 1794 if (!string.IsNullOrEmpty(settings.OnClick)) 1795 { 1796 item.OnClick += settings.OnClick; 1797 } 1798 if (!string.IsNullOrEmpty(settings.OnChange)) 1799 { 1800 item.OnChange += settings.OnChange; 1801 } 1802 if (!string.IsNullOrEmpty(settings.CssClass)) 1803 { 1804 item.CssClass += settings.CssClass; 1805 } 1806 @Render(item) 1807 } 1808 1809 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1810 </div> 1811 } 1812 @using System.Reflection 1813 @using Dynamicweb.Rapido.Blocks.Components.General 1814 @using Dynamicweb.Rapido.Blocks.Components 1815 1816 1817 @* Component *@ 1818 1819 @helper RenderNotificationMessage(NotificationMessage settings) 1820 { 1821 if (!string.IsNullOrEmpty(settings.Message)) 1822 { 1823 var attributes = new Dictionary<string, string>(); 1824 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1825 1826 string messageTypeClass = Enum.GetName(typeof(NotificationMessageType), settings.MessageType).ToLower(); 1827 string messageLayoutClass = Enum.GetName(typeof(NotificationMessageLayout), settings.MessageLayout).ToLower(); 1828 string minHeightClass = settings.Icon != null ? "u-min-h70px" : ""; 1829 1830 <div class="notification-message-@messageTypeClass notification-message-@messageLayoutClass @messageLayoutClass @minHeightClass @settings.CssClass u-full-width dw-mod" @ComponentMethods.AddAttributes(attributes)> 1831 @if (settings.Icon != null) { 1832 settings.Icon.Label = !string.IsNullOrEmpty(settings.Icon.Label) ? settings.Message + settings.Icon.Label : settings.Message; 1833 @Render(settings.Icon) 1834 } else { 1835 @settings.Message 1836 } 1837 </div> 1838 } 1839 } 1840 @using Dynamicweb.Rapido.Blocks.Components.General 1841 1842 1843 @* Component *@ 1844 1845 @helper RenderHandlebarsRoot(HandlebarsRoot settings) { 1846 string preRender = !String.IsNullOrEmpty(settings.PreRenderScriptTemplate) ? "data-pre-render-template=\"" + settings.PreRenderScriptTemplate + "\"" : ""; 1847 1848 <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> 1849 @if (settings.SubBlocks != null) { 1850 @RenderBlockList(settings.SubBlocks) 1851 } 1852 </div> 1853 } 1854 @using System.Reflection 1855 @using Dynamicweb.Rapido.Blocks.Components.General 1856 @using Dynamicweb.Rapido.Blocks.Components 1857 @using System.Text.RegularExpressions 1858 1859 1860 @* Component *@ 1861 1862 @helper RenderSticker(Sticker settings) { 1863 if (!String.IsNullOrEmpty(settings.Title)) { 1864 string size = settings.Size.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Size.ToString().ToLower() : ""; 1865 string style = settings.Style.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Style.ToString().ToLower() : ""; 1866 1867 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 1868 if (!String.IsNullOrEmpty(settings.Color) || !String.IsNullOrEmpty(settings.BackgroundColor)) { 1869 string styleTag = !String.IsNullOrEmpty(settings.Color) ? "color: " + settings.Color + "; " : ""; 1870 styleTag += !String.IsNullOrEmpty(settings.BackgroundColor) ? "background-color: " + settings.BackgroundColor + "; " : ""; 1871 optionalAttributes.Add("style", styleTag); 1872 } 1873 1874 <div class="stickers-container__tag @size @style @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Title</div> 1875 } 1876 } 1877 1878 @using System.Reflection 1879 @using Dynamicweb.Rapido.Blocks.Components.General 1880 @using Dynamicweb.Rapido.Blocks.Components 1881 1882 1883 @* Component *@ 1884 1885 @helper RenderStickersCollection(StickersCollection settings) 1886 { 1887 if (settings.Stickers.Count > 0) 1888 { 1889 string position = "stickers-container--" + Regex.Replace(settings.Position.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower(); 1890 1891 <div class="stickers-container @position @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1892 @foreach (Sticker sticker in settings.Stickers) 1893 { 1894 @Render(sticker) 1895 } 1896 </div> 1897 } 1898 } 1899 1900 @using Dynamicweb.Rapido.Blocks.Components.General 1901 1902 1903 @* Component *@ 1904 1905 @helper RenderForm(Form settings) { 1906 if (settings != null) 1907 { 1908 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 1909 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); }; 1910 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); }; 1911 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); }; 1912 var enctypes = new Dictionary<string, string> 1913 { 1914 { "multipart", "multipart/form-data" }, 1915 { "text", "text/plain" }, 1916 { "application", "application/x-www-form-urlencoded" } 1917 }; 1918 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); }; 1919 optionalAttributes.Add("method", settings.Method.ToString()); 1920 1921 if (!string.IsNullOrEmpty(settings.FormStartMarkup)) 1922 { 1923 @settings.FormStartMarkup 1924 } 1925 else 1926 { 1927 @:<form class="@settings.CssClass u-no-margin dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1928 } 1929 1930 foreach (var field in settings.GetFields()) 1931 { 1932 @Render(field) 1933 } 1934 1935 @:</form> 1936 } 1937 } 1938 @using System.Reflection 1939 @using Dynamicweb.Rapido.Blocks.Components.General 1940 @using Dynamicweb.Rapido.Blocks.Components 1941 1942 1943 @* Component *@ 1944 1945 @helper RenderText(Text settings) 1946 { 1947 @settings.Content 1948 } 1949 @using System.Reflection 1950 @using Dynamicweb.Rapido.Blocks.Components.General 1951 @using Dynamicweb.Rapido.Blocks.Components 1952 1953 1954 @* Component *@ 1955 1956 @helper RenderContentModule(ContentModule settings) { 1957 if (!string.IsNullOrEmpty(settings.Content)) 1958 { 1959 @settings.Content 1960 } 1961 } 1962 @using System.Reflection 1963 @using Dynamicweb.Rapido.Blocks.Components.General 1964 @using Dynamicweb.Rapido.Blocks.Components 1965 1966 1967 @* Component *@ 1968 1969 @helper RenderModal(Modal settings) { 1970 if (settings != null) 1971 { 1972 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 1973 1974 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : ""; 1975 1976 <input type="checkbox" id="@(modalId)ModalTrigger" class="modal-trigger" @onchange /> 1977 1978 <div class="modal-container"> 1979 @if (!settings.DisableDarkOverlay) 1980 { 1981 <label for="@(modalId)ModalTrigger" id="@(modalId)ModalOverlay" class="modal-overlay"></label> 1982 } 1983 <div class="modal modal--@settings.Width.ToString().ToLower() modal-height--@settings.Height.ToString().ToLower()" id="@(modalId)Modal"> 1984 @if (settings.Heading != null) 1985 { 1986 if (!string.IsNullOrEmpty(settings.Heading.Title)) 1987 { 1988 <div class="modal__header"> 1989 @Render(settings.Heading) 1990 </div> 1991 } 1992 } 1993 <div class="modal__body @(settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "")"> 1994 @if (!string.IsNullOrEmpty(settings.BodyText)) 1995 { 1996 @settings.BodyText 1997 } 1998 @if (settings.BodyTemplate != null) 1999 { 2000 @settings.BodyTemplate 2001 } 2002 @{ 2003 var actions = settings.GetActions(); 2004 } 2005 </div> 2006 @if (actions.Length > 0) 2007 { 2008 <div class="modal__footer"> 2009 @foreach (var action in actions) 2010 { 2011 if (Pageview.Device.ToString() != "Mobile") { 2012 action.CssClass += " u-no-margin"; 2013 } else { 2014 action.CssClass += " u-full-width u-margin-bottom"; 2015 } 2016 2017 @Render(action) 2018 } 2019 </div> 2020 } 2021 <label class="modal__close-btn" for="@(modalId)ModalTrigger"></label> 2022 </div> 2023 </div> 2024 } 2025 } 2026 @using Dynamicweb.Rapido.Blocks.Components.General 2027 2028 @* Component *@ 2029 2030 @helper RenderMediaListItem(MediaListItem settings) 2031 { 2032 <div class="media-list-item @settings.CssClass dw-mod" @(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "")> 2033 @if (!string.IsNullOrEmpty(settings.Label)) 2034 { 2035 if (!string.IsNullOrEmpty(settings.Link)) 2036 { 2037 @Render(new Link 2038 { 2039 Href = settings.Link, 2040 CssClass = "media-list-item__sticker dw-mod", 2041 ButtonLayout = ButtonLayout.None, 2042 Title = settings.Label, 2043 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2044 }) 2045 } 2046 else if (!string.IsNullOrEmpty(settings.OnClick)) 2047 { 2048 <span class="media-list-item__sticker dw-mod" onclick="@(settings.OnClick)"> 2049 <span class="u-uppercase">@settings.Label</span> 2050 </span> 2051 } 2052 else 2053 { 2054 <span class="media-list-item__sticker media-list-item__sticker--no-link dw-mod"> 2055 <span class="u-uppercase">@settings.Label</span> 2056 </span> 2057 } 2058 } 2059 <div class="media-list-item__wrap"> 2060 <div class="media-list-item__info dw-mod"> 2061 <div class="media-list-item__header dw-mod"> 2062 @if (!string.IsNullOrEmpty(settings.Title)) 2063 { 2064 if (!string.IsNullOrEmpty(settings.Link)) 2065 { 2066 @Render(new Link 2067 { 2068 Href = settings.Link, 2069 CssClass = "media-list-item__name dw-mod", 2070 ButtonLayout = ButtonLayout.None, 2071 Title = settings.Title, 2072 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2073 }) 2074 } 2075 else if (!string.IsNullOrEmpty(settings.OnClick)) 2076 { 2077 <span class="media-list-item__name dw-mod" onclick="@(settings.OnClick)">@settings.Title</span> 2078 } 2079 else 2080 { 2081 <span class="media-list-item__name media-list-item__name--no-link dw-mod">@settings.Title</span> 2082 } 2083 } 2084 2085 @if (!string.IsNullOrEmpty(settings.Status)) 2086 { 2087 <div class="media-list-item__state dw-mod">@settings.Status</div> 2088 } 2089 </div> 2090 @{ 2091 settings.InfoTable.CssClass += " media-list-item__parameters-table"; 2092 } 2093 2094 @Render(settings.InfoTable) 2095 </div> 2096 <div class="media-list-item__actions dw-mod"> 2097 <div class="media-list-item__actions-list dw-mod"> 2098 @{ 2099 var actions = settings.GetActions(); 2100 2101 foreach (ButtonBase action in actions) 2102 { 2103 action.ButtonLayout = ButtonLayout.None; 2104 action.CssClass += " media-list-item__action link"; 2105 2106 @Render(action) 2107 } 2108 } 2109 </div> 2110 2111 @if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title)) 2112 { 2113 settings.SelectButton.CssClass += " u-no-margin"; 2114 2115 <div class="media-list-item__action-button"> 2116 @Render(settings.SelectButton) 2117 </div> 2118 } 2119 </div> 2120 </div> 2121 </div> 2122 } 2123 @using Dynamicweb.Rapido.Blocks.Components.General 2124 @using Dynamicweb.Rapido.Blocks.Components 2125 2126 @helper RenderTable(Table settings) 2127 { 2128 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2129 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2130 2131 var enumToClasses = new Dictionary<TableDesign, string> 2132 { 2133 { TableDesign.Clean, "table--clean" }, 2134 { TableDesign.Bordered, "table--bordered" }, 2135 { TableDesign.Striped, "table--striped" }, 2136 { TableDesign.Hover, "table--hover" }, 2137 { TableDesign.Compact, "table--compact" }, 2138 { TableDesign.Condensed, "table--condensed" }, 2139 { TableDesign.NoTopBorder, "table--no-top-border" } 2140 }; 2141 string tableDesignClass = ""; 2142 if (settings.Design != TableDesign.None) 2143 { 2144 tableDesignClass = enumToClasses[settings.Design]; 2145 } 2146 2147 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); } 2148 2149 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2150 2151 <table @ComponentMethods.AddAttributes(resultAttributes)> 2152 @if (settings.Header != null) 2153 { 2154 <thead> 2155 @Render(settings.Header) 2156 </thead> 2157 } 2158 <tbody> 2159 @foreach (var row in settings.Rows) 2160 { 2161 @Render(row) 2162 } 2163 </tbody> 2164 @if (settings.Footer != null) 2165 { 2166 <tfoot> 2167 @Render(settings.Footer) 2168 </tfoot> 2169 } 2170 </table> 2171 } 2172 @using Dynamicweb.Rapido.Blocks.Components.General 2173 @using Dynamicweb.Rapido.Blocks.Components 2174 2175 @helper RenderTableRow(TableRow settings) 2176 { 2177 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2179 2180 var enumToClasses = new Dictionary<TableRowDesign, string> 2181 { 2182 { TableRowDesign.NoBorder, "table__row--no-border" }, 2183 { TableRowDesign.Border, "table__row--border" }, 2184 { TableRowDesign.TopBorder, "table__row--top-line" }, 2185 { TableRowDesign.BottomBorder, "table__row--bottom-line" }, 2186 { TableRowDesign.Solid, "table__row--solid" } 2187 }; 2188 2189 string tableRowDesignClass = ""; 2190 if (settings.Design != TableRowDesign.None) 2191 { 2192 tableRowDesignClass = enumToClasses[settings.Design]; 2193 } 2194 2195 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); } 2196 2197 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2198 2199 <tr @ComponentMethods.AddAttributes(resultAttributes)> 2200 @foreach (var cell in settings.Cells) 2201 { 2202 if (settings.IsHeaderRow) 2203 { 2204 cell.IsHeader = true; 2205 } 2206 @Render(cell) 2207 } 2208 </tr> 2209 } 2210 @using Dynamicweb.Rapido.Blocks.Components.General 2211 @using Dynamicweb.Rapido.Blocks.Components 2212 @using Dynamicweb.Core 2213 2214 @helper RenderTableCell(TableCell settings) 2215 { 2216 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2217 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2218 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); } 2219 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); } 2220 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); } 2221 2222 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2223 2224 string tagName = settings.IsHeader ? "th" : "td"; 2225 2226 @("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">") 2227 @settings.Content 2228 @("</" + tagName + ">"); 2229 } 2230 @using System.Linq 2231 @using Dynamicweb.Rapido.Blocks.Components.General 2232 2233 @* Component *@ 2234 2235 @helper RenderPagination(Dynamicweb.Rapido.Blocks.Components.General.Pagination settings) 2236 { 2237 var pageNumberQueryStringName = Dynamicweb.Rapido.Services.Pagination.GetPageNumberQueryStringName(settings); // Get the proper 'page number' query string parameter 2238 var queryParameters = Dynamicweb.Rapido.Services.Url.GetQueryParameters(pageNumberQueryStringName); // Get the NameValueCollection from the querystring 2239 2240 if (settings.NumberOfPages > 1) 2241 { 2242 string url = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/Default.aspx"; 2243 string ariaLabel = !string.IsNullOrWhiteSpace(settings.AriaLabel) ? settings.AriaLabel : Translate("Page navigation"); 2244 Dictionary<string, int> startAndEndPageNumber = Dynamicweb.Rapido.Services.Pagination.GetStartAndEndPageNumber(settings); 2245 2246 <div class="pager u-margin-top dw-mod @settings.CssClass" aria-label="@ariaLabel"> 2247 @if (settings.ShowPagingInfo) 2248 { 2249 <div class="pager__info dw-mod"> 2250 @Translate("Page") @settings.CurrentPageNumber @Translate("of") @settings.NumberOfPages 2251 </div> 2252 } 2253 <ul class="pager__list dw-mod"> 2254 @if (!string.IsNullOrWhiteSpace(settings.FirstPageUrl) && settings.ShowFirstAndLastControls) 2255 { 2256 @Render(new PaginationItem { Link = settings.FirstPageUrl, Icon = settings.FirstIcon }) 2257 } 2258 @if (!string.IsNullOrWhiteSpace(settings.PreviousPageUrl) && settings.ShowNextAndPrevControls) 2259 { 2260 @Render(new PaginationItem { Link = settings.PreviousPageUrl, Icon = settings.PrevIcon }) 2261 } 2262 @if (settings.GetPages().Any()) 2263 { 2264 foreach (var page in settings.GetPages()) 2265 { 2266 @Render(page) 2267 } 2268 } 2269 else 2270 { 2271 for (var page = startAndEndPageNumber["StartPage"]; page <= startAndEndPageNumber["EndPage"]; page++) 2272 { 2273 queryParameters = Dynamicweb.Rapido.Services.Url.UpdateQueryStringParameter(queryParameters, pageNumberQueryStringName, page.ToString()); 2274 @Render(new PaginationItem { Label = page.ToString(), Link = Dynamicweb.Rapido.Services.Url.BuildUri(url, queryParameters).PathAndQuery, IsActive = (settings.CurrentPageNumber == page) }); 2275 } 2276 } 2277 @if (!string.IsNullOrWhiteSpace(settings.NextPageUrl) && settings.ShowNextAndPrevControls) 2278 { 2279 @Render(new PaginationItem { Link = settings.NextPageUrl, Icon = settings.NextIcon }) 2280 } 2281 @if (!string.IsNullOrWhiteSpace(settings.LastPageUrl) && settings.ShowFirstAndLastControls) 2282 { 2283 @Render(new PaginationItem { Link = settings.LastPageUrl, Icon = settings.LastIcon }) 2284 } 2285 </ul> 2286 </div> 2287 } 2288 } 2289 2290 @helper RenderPaginationItem(PaginationItem settings) 2291 { 2292 if (settings.Icon == null) 2293 { 2294 settings.Icon = new Icon(); 2295 } 2296 2297 settings.Icon.Label = settings.Label; 2298 <li class="pager__btn dw-mod"> 2299 @if (settings.IsActive) 2300 { 2301 <span class="pager__num pager__num--current dw-mod"> 2302 @Render(settings.Icon) 2303 </span> 2304 } 2305 else 2306 { 2307 <a href="@settings.Link" class="pager__num dw-mod"> 2308 @Render(settings.Icon) 2309 </a> 2310 } 2311 </li> 2312 } 2313 2314 2315 @using Dynamicweb.Rapido.Blocks.Components.General 2316 @using Dynamicweb.Rapido.Blocks.Components.Ecommerce 2317 2318 2319 2320 2321 2322 @functions { 2323 public string GenerateRgba(string color, string opacity) 2324 { 2325 color = color.Replace("#", ""); 2326 if (color.Length == 6) 2327 { 2328 return "rgba(" + Convert.ToInt32(color.Substring(0, 2), 16) + ", " + Convert.ToInt32(color.Substring(2, 2), 16) + ", " + Convert.ToInt32(color.Substring(4, 2), 16) + ", " + opacity + ");"; 2329 } 2330 else 2331 { 2332 return Convert.ToInt16(color).ToString(); 2333 } 2334 } 2335 } 2336 2337 @{ 2338 string link = !string.IsNullOrEmpty(Model.Item.GetString("Link")) ? Model.Item.GetString("Link") : ""; 2339 string linkTarget = link.Contains("http") || link.Contains(".pdf") ? "_blank" : "_self"; 2340 } 2341 2342 @if (!string.IsNullOrEmpty(link)) 2343 { 2344 @*<a href="@link" target="@linkTarget" class="u-overlay">*@ 2345 <div class="paragraph-image-link-wrapper"> 2346 <a href="@link" target="@linkTarget"> 2347 @RenderTheContent() 2348 </a> 2349 </div> 2350 } 2351 else 2352 { 2353 @RenderTheContent() 2354 } 2355 2356 2357 @helper RenderTheContent() 2358 { 2359 string innerPadding = Model.Item.GetList("Padding") != null ? " padding-size-" + Model.Item.GetList("Padding").SelectedValue.ToLower() : ""; 2360 innerPadding += Model.Item.GetList("PaddingPosition") != null ? " padding-position-" + Model.Item.GetList("PaddingPosition").SelectedValue.ToLower() : ""; 2361 2362 if (!string.IsNullOrEmpty(Model.Item.GetString("Image"))) 2363 { 2364 int width = Model.Item.GetString("ImageWidth") != null ? Model.Item.GetInt32("ImageWidth") : 100; 2365 string styleSetting = Model.Item.GetString("ImageStyle") != null ? Model.Item.GetList("ImageStyle").SelectedValue : ""; 2366 ImageStyle style = ImageStyle.None; 2367 style = styleSetting == "ball" ? style = ImageStyle.Ball : style; 2368 style = styleSetting == "triangle" ? style = ImageStyle.Triangle : style; 2369 var file = Model.Item.GetFile("Image"); 2370 2371 Image image = new Image 2372 { 2373 Path = file, 2374 Style = style, 2375 CssClass = "background-image__cover", 2376 ImageDefault = new ImageSettings 2377 { 2378 Crop = 5, 2379 Width = width 2380 } 2381 }; 2382 2383 if (styleSetting == "square") 2384 { 2385 image.ImageDefault.Crop = 0; 2386 image.ImageDefault.Height = image.ImageDefault.Width; 2387 } 2388 2389 string imageAltText = ""; 2390 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageAltText"))) 2391 { 2392 imageAltText = Model.Item.GetString("ImageAltText"); 2393 } 2394 2395 string imageTitleText = ""; 2396 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageTitleText"))) 2397 { 2398 imageTitleText = Model.Item.GetString("ImageTitleText"); 2399 } 2400 2401 <div class="paragraph-image"> 2402 @RenderWithAltAndTitle(image, imageAltText, imageTitleText) 2403 </div> 2404 } 2405 2406 <div class="u-full-width u-padding-top dw-mod"> 2407 @if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) || !string.IsNullOrEmpty(Model.Item.GetString("Text"))) 2408 { 2409 <div class="u-margin-bottom--lg"> 2410 @if (!Model.Item.GetBoolean("HideTitle")) 2411 { 2412 @Render(new Heading { Title = Model.Item.GetString("Title"), Level = 2, CssClass = "u-no-margin" }) 2413 } 2414 @Render(new Text { Content = Model.Item.GetString("Text") }) 2415 </div> 2416 } 2417 </div> 2418 2419 if (!string.IsNullOrEmpty(Model.Item.GetItem("ButtonOne").GetString("Title"))) 2420 { 2421 <div class="buttons-collection u-block dw-mod"> 2422 @ParagraphButton(Model.Item.GetItem("ButtonOne")) 2423 </div> 2424 } 2425 } 2426 2427 2428 @helper ParagraphButton(ItemViewModel item) 2429 { 2430 if (item != null) 2431 { 2432 if (!string.IsNullOrEmpty(item.GetString("Title"))) 2433 { 2434 Button button = new Button 2435 { 2436 Title = item.GetString("Title"), 2437 Href = item.GetString("Link"), 2438 ButtonLayout = (ButtonLayout)System.Enum.Parse(typeof(ButtonLayout), char.ToUpper(item.GetList("Layout").SelectedValue[0]) + item.GetList("Layout").SelectedValue.Substring(1)) 2439 }; 2440 2441 if (!string.IsNullOrEmpty(item.GetString("Icon"))) 2442 { 2443 button.Icon = new Icon 2444 { 2445 CssClass = item.GetString("Icon") 2446 }; 2447 } 2448 2449 @Render(button) 2450 } 2451 } 2452 } 2453 2454 2455 2456 2457 2458
Error executing template "Designs/Rapido/ContentPage/Paragraph/StandardParagraphThree.cshtml"
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference
   at CallSite.Target(Closure , CallSite , Object )
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<>c__DisplayClass19_0.<RenderTheImage>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 924
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<>c__DisplayClass18_0.<RenderWithAltAndTitle>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 860
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<RenderTheContent>b__48_0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2402
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.Execute() in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2347
   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> 2 @using Dynamicweb.Frontend 3 @using Dynamicweb.Rapido.Blocks.Components 4 @using Dynamicweb.Rapido.Blocks.Components.General 5 6 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 7 @using Dynamicweb.Frontend 8 9 @* Include the components *@ 10 @using System.Text.RegularExpressions 11 @using System.Collections.Generic 12 @using System.Reflection 13 @using System.Web 14 @using System.Web.UI.HtmlControls 15 @using Dynamicweb.Rapido.Blocks.Components 16 @using Dynamicweb.Rapido.Blocks.Components.Articles 17 @using Dynamicweb.Rapido.Blocks.Components.Documentation 18 @using Dynamicweb.Rapido.Blocks 19 20 21 @*--- START: Base block renderers ---*@ 22 23 @helper RenderBlockList(List<Block> blocks) 24 { 25 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 26 blocks = blocks.OrderBy(item => item.SortId).ToList(); 27 28 foreach (Block item in blocks) 29 { 30 if (debug) { 31 <!-- Block START: @item.Id --> 32 } 33 34 if (item.Design == null) 35 { 36 @RenderBlock(item) 37 } 38 else if (item.Design.RenderType == RenderType.None) { 39 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 40 41 <div class="@cssClass dw-mod"> 42 @RenderBlock(item) 43 </div> 44 } 45 else if (item.Design.RenderType != RenderType.Hide) 46 { 47 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 48 49 if (!item.SkipRenderBlocksList) { 50 if (item.Design.RenderType == RenderType.Row) 51 { 52 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id"> 53 @RenderBlock(item) 54 </div> 55 } 56 57 if (item.Design.RenderType == RenderType.Column) 58 { 59 string hidePadding = item.Design.HidePadding ? "u-no-padding" : ""; 60 string size = item.Design.Size ?? "12"; 61 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size; 62 63 <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"> 64 @RenderBlock(item) 65 </div> 66 } 67 68 if (item.Design.RenderType == RenderType.Table) 69 { 70 <table class="table @cssClass dw-mod" id="Block__@item.Id"> 71 @RenderBlock(item) 72 </table> 73 } 74 75 if (item.Design.RenderType == RenderType.TableRow) 76 { 77 <tr class="@cssClass dw-mod" id="Block__@item.Id"> 78 @RenderBlock(item) 79 </tr> 80 } 81 82 if (item.Design.RenderType == RenderType.TableColumn) 83 { 84 <td class="@cssClass dw-mod" id="Block__@item.Id"> 85 @RenderBlock(item) 86 </td> 87 } 88 89 if (item.Design.RenderType == RenderType.CardHeader) 90 { 91 <div class="card-header @cssClass dw-mod"> 92 @RenderBlock(item) 93 </div> 94 } 95 96 if (item.Design.RenderType == RenderType.CardBody) 97 { 98 <div class="card @cssClass dw-mod"> 99 @RenderBlock(item) 100 </div> 101 } 102 103 if (item.Design.RenderType == RenderType.CardFooter) 104 { 105 <div class="card-footer @cssClass dw-mod"> 106 @RenderBlock(item) 107 </div> 108 } 109 } 110 else 111 { 112 @RenderBlock(item) 113 } 114 } 115 116 if (debug) { 117 <!-- Block END: @item.Id --> 118 } 119 } 120 } 121 122 @helper RenderBlock(Block item) 123 { 124 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 125 126 if (item.Template != null) 127 { 128 @BlocksPage.RenderTemplate(item.Template) 129 } 130 131 if (item.Component != null) 132 { 133 string customSufix = "Custom"; 134 string methodName = item.Component.HelperName; 135 136 ComponentBase[] methodParameters = new ComponentBase[1]; 137 methodParameters[0] = item.Component; 138 Type methodType = this.GetType(); 139 140 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix); 141 MethodInfo generalMethod = methodType.GetMethod(methodName); 142 143 try { 144 if (debug) { 145 <!-- Component: @methodName.Replace("Render", "") --> 146 } 147 @customMethod.Invoke(this, methodParameters).ToString(); 148 } catch { 149 try { 150 @generalMethod.Invoke(this, methodParameters).ToString(); 151 } catch(Exception ex) { 152 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex); 153 } 154 } 155 } 156 157 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList) 158 { 159 @RenderBlockList(item.BlocksList) 160 } 161 } 162 163 @*--- END: Base block renderers ---*@ 164 165 @using Dynamicweb.Rapido.Blocks.Components 166 @using Dynamicweb.Rapido.Blocks.Components.General 167 @using Dynamicweb.Rapido.Blocks 168 @using System.IO 169 170 @* Required *@ 171 @using Dynamicweb.Rapido.Blocks.Components 172 @using Dynamicweb.Rapido.Blocks.Components.General 173 @using Dynamicweb.Rapido.Blocks 174 175 176 @helper Render(ComponentBase component) 177 { 178 if (component != null) 179 { 180 @component.Render(this) 181 } 182 } 183 184 @* Components *@ 185 @using System.Reflection 186 @using Dynamicweb.Rapido.Blocks.Components.General 187 188 189 @* Component *@ 190 191 @helper RenderIcon(Icon settings) 192 { 193 if (settings != null) 194 { 195 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 196 197 if (settings.Name != null) 198 { 199 if (string.IsNullOrEmpty(settings.Label)) 200 { 201 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i> 202 } 203 else 204 { 205 if (settings.LabelPosition == IconLabelPosition.Before) 206 { 207 <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> 208 } 209 else 210 { 211 <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> 212 } 213 } 214 } 215 else if (!string.IsNullOrEmpty(settings.Label)) 216 { 217 @settings.Label 218 } 219 } 220 } 221 @using System.Reflection 222 @using Dynamicweb.Rapido.Blocks.Components.General 223 @using Dynamicweb.Rapido.Blocks.Components 224 @using Dynamicweb.Core 225 226 @* Component *@ 227 228 @helper RenderButton(Button settings) 229 { 230 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 231 { 232 Dictionary<string, string> attributes = new Dictionary<string, string>(); 233 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 234 if (settings.Disabled) { 235 attributes.Add("disabled", "true"); 236 classList.Add("disabled"); 237 } 238 239 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle)) 240 { 241 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 242 @RenderConfirmDialog(settings); 243 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true"; 244 } 245 246 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 247 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 248 if (!string.IsNullOrEmpty(settings.AltText)) 249 { 250 attributes.Add("title", settings.AltText); 251 } 252 else if (!string.IsNullOrEmpty(settings.Title)) 253 { 254 string cleanTitle = Regex.Replace(settings.Title, "<.*?>", String.Empty); 255 cleanTitle = cleanTitle.Replace("&nbsp;", " "); 256 attributes.Add("title", cleanTitle); 257 } 258 259 var onClickEvents = new List<string>(); 260 if (!string.IsNullOrEmpty(settings.OnClick)) 261 { 262 onClickEvents.Add(settings.OnClick); 263 } 264 if (!string.IsNullOrEmpty(settings.Href)) 265 { 266 onClickEvents.Add("location.href='" + settings.Href + "'"); 267 } 268 if (onClickEvents.Count > 0) 269 { 270 attributes.Add("onClick", string.Join(";", onClickEvents)); 271 } 272 273 if (settings.ButtonLayout != ButtonLayout.None) 274 { 275 classList.Add("btn"); 276 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 277 if (btnLayout == "linkclean") 278 { 279 btnLayout = "link-clean"; //fix 280 } 281 classList.Add("btn--" + btnLayout); 282 } 283 284 if (settings.Icon == null) 285 { 286 settings.Icon = new Icon(); 287 } 288 289 settings.Icon.CssClass += Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower() != "linkclean" ? " u-flex--align-center" : ""; 290 settings.Icon.Label = settings.Title; 291 292 attributes.Add("type", Enum.GetName(typeof(ButtonType), settings.ButtonType).ToLower()); 293 294 <button class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</button> 295 } 296 } 297 298 @helper RenderConfirmDialog(Button settings) 299 { 300 Modal confirmDialog = new Modal { 301 Id = settings.Id, 302 Width = ModalWidth.Sm, 303 Heading = new Heading 304 { 305 Level = 2, 306 Title = settings.ConfirmTitle 307 }, 308 BodyText = settings.ConfirmText 309 }; 310 311 confirmDialog.AddAction(new Button { Title = Translate("Cancel"), ButtonLayout = ButtonLayout.Secondary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false"}); 312 confirmDialog.AddAction(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false;" + settings.OnClick }); 313 314 @Render(confirmDialog) 315 } 316 @using Dynamicweb.Rapido.Blocks.Components.General 317 @using Dynamicweb.Rapido.Blocks.Components 318 @using Dynamicweb.Core 319 320 @helper RenderDashboard(Dashboard settings) 321 { 322 var widgets = settings.GetWidgets(); 323 324 if (!string.IsNullOrEmpty(settings.WidgetsBaseBackgroundColor)) 325 { 326 //set bg color for them 327 328 System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(settings.WidgetsBaseBackgroundColor); 329 int r = Convert.ToInt16(color.R); 330 int g = Convert.ToInt16(color.G); 331 int b = Convert.ToInt16(color.B); 332 333 var count = widgets.Length; 334 var max = Math.Max(r, Math.Max(g, b)); 335 double step = 255.0 / (max * count); 336 var i = 0; 337 foreach (var widget in widgets) 338 { 339 i++; 340 341 var shade = "rgb(" + Converter.ToString(r * step * i).Replace(",", ".") + ", " + Converter.ToString(g * step * i).Replace(",", ".") + ", " + Converter.ToString(b * step * i).Replace(",", ".") + ")"; 342 widget.BackgroundColor = shade; 343 } 344 } 345 346 <div class="dashboard @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 347 @foreach (var widget in widgets) 348 { 349 <div class="dashboard__widget"> 350 @Render(widget) 351 </div> 352 } 353 </div> 354 } 355 @using Dynamicweb.Rapido.Blocks.Components.General 356 @using Dynamicweb.Rapido.Blocks.Components 357 358 @helper RenderDashboardWidgetLink(DashboardWidgetLink settings) 359 { 360 if (!string.IsNullOrEmpty(settings.Link)) 361 { 362 var backgroundStyles = ""; 363 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 364 { 365 backgroundStyles = "style=\"background-color:" + settings.BackgroundColor + "\""; 366 } 367 368 <a href="@settings.Link" class="widget widget--link @settings.CssClass dw-mod" @backgroundStyles title="@settings.Title" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 369 <div class="u-center-middle u-color-light"> 370 @if (settings.Icon != null) 371 { 372 settings.Icon.CssClass += "widget__icon"; 373 @Render(settings.Icon) 374 } 375 <div class="widget__title">@settings.Title</div> 376 </div> 377 </a> 378 } 379 } 380 @using Dynamicweb.Rapido.Blocks.Components.General 381 @using Dynamicweb.Rapido.Blocks.Components 382 383 @helper RenderDashboardWidgetCounter(DashboardWidgetCounter settings) 384 { 385 var backgroundStyles = ""; 386 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 387 { 388 backgroundStyles = "style='background-color:" + settings.BackgroundColor + "'"; 389 } 390 391 <div class="widget @settings.CssClass dw-mod" @backgroundStyles @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 392 <div class="u-center-middle u-color-light"> 393 @if (settings.Icon != null) 394 { 395 settings.Icon.CssClass += "widget__icon"; 396 @Render(settings.Icon) 397 } 398 <div class="widget__counter">@settings.Count</div> 399 <div class="widget__title">@settings.Title</div> 400 </div> 401 </div> 402 } 403 @using System.Reflection 404 @using Dynamicweb.Rapido.Blocks.Components.General 405 @using Dynamicweb.Rapido.Blocks.Components 406 @using Dynamicweb.Core 407 408 @* Component *@ 409 410 @helper RenderLink(Link settings) 411 { 412 if (settings != null && !string.IsNullOrEmpty(settings.Href) && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 413 { 414 Dictionary<string, string> attributes = new Dictionary<string, string>(); 415 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 416 if (settings.Disabled) 417 { 418 attributes.Add("disabled", "true"); 419 classList.Add("disabled"); 420 } 421 422 if (!string.IsNullOrEmpty(settings.AltText)) 423 { 424 attributes.Add("title", settings.AltText); 425 } 426 else if (!string.IsNullOrEmpty(settings.Title)) 427 { 428 attributes.Add("title", settings.Title); 429 } 430 431 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 432 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 433 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onClick", settings.OnClick); } 434 attributes.Add("href", settings.Href); 435 436 if (settings.ButtonLayout != ButtonLayout.None) 437 { 438 classList.Add("btn"); 439 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 440 if (btnLayout == "linkclean") 441 { 442 btnLayout = "link-clean"; //fix 443 } 444 classList.Add("btn--" + btnLayout); 445 } 446 447 if (settings.Icon == null) 448 { 449 settings.Icon = new Icon(); 450 } 451 settings.Icon.Label = settings.Title; 452 453 if (settings.Target == LinkTargetType.Blank && settings.Rel == LinkRelType.None) 454 { 455 settings.Rel = LinkRelType.Noopener; 456 } 457 if (settings.Target != LinkTargetType.None) 458 { 459 attributes.Add("target", "_" + Enum.GetName(typeof(LinkTargetType), settings.Target).ToLower()); 460 } 461 if (settings.Download) 462 { 463 attributes.Add("download", "true"); 464 } 465 if (settings.Rel != LinkRelType.None) 466 { 467 attributes.Add("rel", Enum.GetName(typeof(LinkRelType), settings.Rel).ToLower()); 468 } 469 470 <a class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</a> 471 } 472 } 473 @using System.Reflection 474 @using Dynamicweb.Rapido.Blocks.Components 475 @using Dynamicweb.Rapido.Blocks.Components.General 476 @using Dynamicweb.Rapido.Blocks 477 478 479 @* Component *@ 480 481 @helper RenderRating(Rating settings) 482 { 483 if (settings.Score > 0) 484 { 485 int rating = settings.Score; 486 string iconType = "fa-star"; 487 488 switch (settings.Type.ToString()) { 489 case "Stars": 490 iconType = "fa-star"; 491 break; 492 case "Hearts": 493 iconType = "fa-heart"; 494 break; 495 case "Lemons": 496 iconType = "fa-lemon"; 497 break; 498 case "Bombs": 499 iconType = "fa-bomb"; 500 break; 501 } 502 503 <div class="u-ta-right"> 504 @for (int i = 0; i < settings.OutOf; i++) 505 { 506 <i class="@(rating > i ? "fas" : "far") @iconType"></i> 507 } 508 </div> 509 } 510 } 511 @using System.Reflection 512 @using Dynamicweb.Rapido.Blocks.Components.General 513 @using Dynamicweb.Rapido.Blocks.Components 514 515 516 @* Component *@ 517 518 @helper RenderSelectFieldOption(SelectFieldOption settings) 519 { 520 Dictionary<string, string> attributes = new Dictionary<string, string>(); 521 if (settings.Checked) { attributes.Add("selected", "true"); } 522 if (settings.Disabled) { attributes.Add("disabled", "true"); } 523 if (settings.Value != null) { attributes.Add("value", settings.Value); } 524 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 525 526 <option @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Label</option> 527 } 528 @using System.Reflection 529 @using Dynamicweb.Rapido.Blocks.Components.General 530 @using Dynamicweb.Rapido.Blocks.Components 531 532 533 @* Component *@ 534 535 @helper RenderNavigation(Navigation settings) { 536 @RenderNavigation(new 537 { 538 id = settings.Id, 539 cssclass = settings.CssClass, 540 startLevel = settings.StartLevel, 541 endlevel = settings.EndLevel, 542 expandmode = settings.Expandmode, 543 sitemapmode = settings.SitemapMode, 544 template = settings.Template 545 }) 546 } 547 @using Dynamicweb.Rapido.Blocks.Components.General 548 @using Dynamicweb.Rapido.Blocks.Components 549 550 551 @* Component *@ 552 553 @helper RenderBreadcrumbNavigation(BreadcrumbNavigation settings) { 554 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 555 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 556 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 557 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 558 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 559 settings.SitemapMode = false; 560 561 @RenderNavigation(settings) 562 } 563 @using Dynamicweb.Rapido.Blocks.Components.General 564 @using Dynamicweb.Rapido.Blocks.Components 565 566 567 @* Component *@ 568 569 @helper RenderLeftNavigation(LeftNavigation settings) { 570 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 571 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 572 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 573 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 574 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 575 576 <div class="grid__cell"> 577 @RenderNavigation(settings) 578 </div> 579 } 580 @using System.Reflection 581 @using Dynamicweb.Rapido.Blocks.Components.General 582 @using Dynamicweb.Core 583 584 @* Component *@ 585 586 @helper RenderHeading(Heading settings) 587 { 588 if (settings != null && !string.IsNullOrEmpty(settings.Title)) 589 { 590 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 591 string tagName = settings.Level != 0 ? "h" + settings.Level.ToString() : "div"; 592 593 @("<" + tagName + " class=\"" + settings.CssClass + " dw-mod\" " + color + ">") 594 if (!string.IsNullOrEmpty(settings.Link)) 595 { 596 @Render(new Link { Href = settings.Link, Icon = settings.Icon, Title = settings.Title, ButtonLayout = ButtonLayout.None }) 597 } 598 else 599 { 600 if (settings.Icon == null) 601 { 602 settings.Icon = new Icon(); 603 } 604 settings.Icon.Label = settings.Title; 605 @Render(settings.Icon) 606 } 607 @("</" + tagName + ">"); 608 } 609 } 610 @using Dynamicweb.Rapido.Blocks.Components 611 @using Dynamicweb.Rapido.Blocks.Components.General 612 @using Dynamicweb.Rapido.Blocks 613 614 615 @* Component *@ 616 617 @helper RenderImage(Image settings) 618 { 619 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 620 { 621 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 622 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 623 624 if (settings.Caption != null) 625 { 626 @:<div> 627 } 628 629 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 630 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 631 632 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 633 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 634 @if (settings.Link != null) 635 { 636 <a href="@settings.Link"> 637 @RenderTheImage(settings) 638 </a> 639 } 640 else 641 { 642 @RenderTheImage(settings) 643 } 644 </div> 645 </div> 646 647 if (settings.Caption != null) 648 { 649 <span class="image-caption dw-mod">@settings.Caption</span> 650 @:</div> 651 } 652 } 653 else 654 { 655 if (settings.Caption != null) 656 { 657 @:<div> 658 } 659 if (!string.IsNullOrEmpty(settings.Link)) 660 { 661 <a href="@settings.Link"> 662 @RenderTheImage(settings) 663 </a> 664 } 665 else 666 { 667 @RenderTheImage(settings) 668 } 669 670 if (settings.Caption != null) 671 { 672 <span class="image-caption dw-mod">@settings.Caption</span> 673 @:</div> 674 } 675 } 676 } 677 678 @helper RenderTheImage(Image settings) 679 { 680 if (settings != null) 681 { 682 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 683 string placeholderImage = "/Files/Images/placeholder.gif"; 684 string imageEngine = "/Admin/Public/GetImage.ashx?"; 685 686 string imageStyle = ""; 687 688 switch (settings.Style) 689 { 690 case ImageStyle.Ball: 691 imageStyle = "grid__cell-img--ball"; 692 break; 693 694 case ImageStyle.Triangle: 695 imageStyle = "grid__cell-img--triangle"; 696 break; 697 } 698 699 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 700 { 701 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 702 703 if (settings.ImageDefault != null) 704 { 705 settings.ImageDefault.Height = settings.ImageDefault.Width; 706 } 707 if (settings.ImageMedium != null) 708 { 709 settings.ImageMedium.Height = settings.ImageMedium.Width; 710 } 711 if (settings.ImageSmall != null) 712 { 713 settings.ImageSmall.Height = settings.ImageSmall.Width; 714 } 715 } 716 717 string defaultImage = imageEngine; 718 string imageSmall = ""; 719 string imageMedium = ""; 720 721 if (settings.DisableImageEngine) 722 { 723 defaultImage = settings.Path; 724 } 725 else 726 { 727 if (settings.ImageDefault != null) 728 { 729 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 730 731 if (settings.Path.GetType() != typeof(string)) 732 { 733 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 734 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 735 } 736 else 737 { 738 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 739 } 740 741 defaultImage += "&AlternativeImage=" + alternativeImage; 742 } 743 744 if (settings.ImageSmall != null) 745 { 746 imageSmall = "data-src-small=\"" + imageEngine; 747 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 748 749 if (settings.Path.GetType() != typeof(string)) 750 { 751 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 752 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 753 } 754 else 755 { 756 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 757 } 758 759 imageSmall += "&alternativeImage=" + alternativeImage; 760 761 imageSmall += "\""; 762 } 763 764 if (settings.ImageMedium != null) 765 { 766 imageMedium = "data-src-medium=\"" + imageEngine; 767 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 768 769 if (settings.Path.GetType() != typeof(string)) 770 { 771 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 772 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 773 } 774 else 775 { 776 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 777 } 778 779 imageMedium += "&alternativeImage=" + alternativeImage; 780 781 imageMedium += "\""; 782 } 783 } 784 785 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 786 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 787 if (!string.IsNullOrEmpty(settings.Title)) 788 { 789 optionalAttributes.Add("alt", settings.Title); 790 optionalAttributes.Add("title", settings.Title); 791 } 792 793 if (settings.DisableLazyLoad) 794 { 795 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 796 } 797 else 798 { 799 <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) /> 800 } 801 } 802 } 803 @using Dynamicweb.Rapido.Blocks.Components 804 @using Dynamicweb.Rapido.Blocks.Components.General 805 @using Dynamicweb.Rapido.Blocks 806 807 808 @* Component *@ 809 810 @helper RenderWithAltAndTitle(Image settings, string alText = "", string titleText = "") 811 { 812 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 813 { 814 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 815 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 816 817 if (settings.Caption != null) 818 { 819 @:<div> 820 } 821 822 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 823 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 824 825 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 826 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 827 @if (settings.Link != null) 828 { 829 <a href="@settings.Link"> 830 @RenderTheImage(settings, alText, titleText) 831 </a> 832 } 833 else 834 { 835 @RenderTheImage(settings, alText, titleText) 836 } 837 </div> 838 </div> 839 840 if (settings.Caption != null) 841 { 842 <span class="image-caption dw-mod">@settings.Caption</span> 843 @:</div> 844 } 845 } 846 else 847 { 848 if (settings.Caption != null) 849 { 850 @:<div> 851 } 852 if (!string.IsNullOrEmpty(settings.Link)) 853 { 854 <a href="@settings.Link"> 855 @RenderTheImage(settings, alText, titleText) 856 </a> 857 } 858 else 859 { 860 @RenderTheImage(settings, alText, titleText) 861 } 862 863 if (settings.Caption != null) 864 { 865 <span class="image-caption dw-mod">@settings.Caption</span> 866 @:</div> 867 } 868 } 869 } 870 871 @helper RenderTheImage(Image settings, string alText = "", string titleText = "") 872 { 873 if (settings != null) 874 { 875 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 876 string placeholderImage = "/Files/Images/placeholder.gif"; 877 string imageEngine = "/Admin/Public/GetImage.ashx?"; 878 879 string imageStyle = ""; 880 881 switch (settings.Style) 882 { 883 case ImageStyle.Ball: 884 imageStyle = "grid__cell-img--ball"; 885 break; 886 887 case ImageStyle.Triangle: 888 imageStyle = "grid__cell-img--triangle"; 889 break; 890 } 891 892 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 893 { 894 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 895 896 if (settings.ImageDefault != null) 897 { 898 settings.ImageDefault.Height = settings.ImageDefault.Width; 899 } 900 if (settings.ImageMedium != null) 901 { 902 settings.ImageMedium.Height = settings.ImageMedium.Width; 903 } 904 if (settings.ImageSmall != null) 905 { 906 settings.ImageSmall.Height = settings.ImageSmall.Width; 907 } 908 } 909 910 string defaultImage = imageEngine; 911 string imageSmall = ""; 912 string imageMedium = ""; 913 914 if (settings.DisableImageEngine) 915 { 916 defaultImage = settings.Path; 917 } 918 else 919 { 920 if (settings.ImageDefault != null) 921 { 922 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 923 924 if (settings.Path.GetType() != typeof(string)) 925 { 926 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 927 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 928 } 929 else 930 { 931 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 932 } 933 934 defaultImage += "&AlternativeImage=" + alternativeImage; 935 } 936 937 if (settings.ImageSmall != null) 938 { 939 imageSmall = "data-src-small=\"" + imageEngine; 940 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 941 942 if (settings.Path.GetType() != typeof(string)) 943 { 944 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 945 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 946 } 947 else 948 { 949 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 950 } 951 952 imageSmall += "&alternativeImage=" + alternativeImage; 953 954 imageSmall += "\""; 955 } 956 957 if (settings.ImageMedium != null) 958 { 959 imageMedium = "data-src-medium=\"" + imageEngine; 960 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 961 962 if (settings.Path.GetType() != typeof(string)) 963 { 964 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 965 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 966 } 967 else 968 { 969 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 970 971 972 } 973 974 imageMedium += "&alternativeImage=" + alternativeImage; 975 976 imageMedium += "\""; 977 } 978 } 979 980 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 981 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 982 if (!string.IsNullOrEmpty(settings.Title)) 983 { 984 optionalAttributes.Add("alt", settings.Title); 985 optionalAttributes.Add("title", settings.Title); 986 } 987 988 989 990 string imgAlt = ""; 991 string imgTitle = ""; 992 993 if (!string.IsNullOrWhiteSpace(alText)) 994 { 995 imgAlt = "alt=" + '"' + alText + '"'; 996 } 997 998 if (!string.IsNullOrWhiteSpace(titleText)) 999 { 1000 imgTitle = "title=" + '"' + titleText + '"'; 1001 1002 } 1003 1004 1005 if (settings.DisableLazyLoad) 1006 { 1007 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1008 } 1009 else 1010 { 1011 <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) @imgAlt @imgTitle /> 1012 } 1013 } 1014 } 1015 @using System.Reflection 1016 @using Dynamicweb.Rapido.Blocks.Components.General 1017 @using Dynamicweb.Rapido.Blocks.Components 1018 1019 @* Component *@ 1020 1021 @helper RenderFileField(FileField settings) 1022 { 1023 var attributes = new Dictionary<string, string>(); 1024 if (string.IsNullOrEmpty(settings.Id)) 1025 { 1026 settings.Id = Guid.NewGuid().ToString("N"); 1027 } 1028 1029 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1030 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1031 if (settings.Required) { attributes.Add("required", "true"); } 1032 if (settings.Multiple) { attributes.Add("multiple", "true"); } 1033 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1034 if (string.IsNullOrEmpty(settings.ChooseFileText)) 1035 { 1036 settings.ChooseFileText = Translate("Choose file"); 1037 } 1038 if (string.IsNullOrEmpty(settings.NoFilesChosenText)) 1039 { 1040 settings.NoFilesChosenText = Translate("No files chosen..."); 1041 } 1042 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1043 1044 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1045 1046 string setValueToFakeInput = "FileUpload.setValueToFakeInput(this)"; 1047 attributes.Add("onchange", setValueToFakeInput + (!string.IsNullOrEmpty(settings.OnChange) ? settings.OnChange : "")); 1048 1049 attributes.Add("type", "file"); 1050 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1051 settings.CssClass = "u-full-width " + settings.CssClass; 1052 1053 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1054 1055 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1056 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1057 { 1058 <div class="u-full-width"> 1059 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1060 @if (settings.Link != null) { 1061 <div class="u-pull--right"> 1062 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1063 @Render(settings.Link) 1064 </div> 1065 } 1066 </div> 1067 1068 } 1069 1070 @if (!string.IsNullOrEmpty(settings.HelpText)) 1071 { 1072 <small class="form__help-text">@settings.HelpText</small> 1073 } 1074 1075 <div class="form__field-combi file-input u-no-margin dw-mod"> 1076 <input @ComponentMethods.AddAttributes(resultAttributes) class="file-input__real-input" data-no-files-text="@settings.NoFilesChosenText" data-many-files-text="@Translate("files")" /> 1077 <label for="@settings.Id" class="file-input__btn btn--secondary btn dw-mod">@settings.ChooseFileText</label> 1078 <label for="@settings.Id" class="@settings.CssClass file-input__fake-input js-fake-input dw-mod">@settings.NoFilesChosenText</label> 1079 @if (settings.UploadButton != null) 1080 { 1081 settings.UploadButton.CssClass += " btn--condensed u-no-margin"; 1082 @Render(settings.UploadButton) 1083 } 1084 </div> 1085 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1086 </div> 1087 } 1088 @using System.Reflection 1089 @using Dynamicweb.Rapido.Blocks.Components.General 1090 @using Dynamicweb.Rapido.Blocks.Components 1091 @using Dynamicweb.Core 1092 @using System.Linq 1093 1094 @* Component *@ 1095 1096 @helper RenderDateTimeField(DateTimeField settings) 1097 { 1098 if (string.IsNullOrEmpty(settings.Id)) 1099 { 1100 settings.Id = Guid.NewGuid().ToString("N"); 1101 } 1102 1103 var textField = new TextField { 1104 Name = settings.Name, 1105 Id = settings.Id, 1106 Label = settings.Label, 1107 HelpText = settings.HelpText, 1108 Value = settings.Value, 1109 Disabled = settings.Disabled, 1110 Required = settings.Required, 1111 ErrorMessage = settings.ErrorMessage, 1112 CssClass = settings.CssClass, 1113 WrapperCssClass = settings.WrapperCssClass, 1114 OnChange = settings.OnChange, 1115 OnClick = settings.OnClick, 1116 Link = settings.Link, 1117 ExtraAttributes = settings.ExtraAttributes, 1118 // 1119 Placeholder = settings.Placeholder 1120 }; 1121 1122 @Render(textField) 1123 1124 List<string> jsAttributes = new List<string>(); 1125 1126 jsAttributes.Add("mode: '" + Enum.GetName(typeof(DateTimeFieldMode), settings.Mode).ToLower() + "'"); 1127 1128 if (!string.IsNullOrEmpty(settings.DateFormat)) 1129 { 1130 jsAttributes.Add("dateFormat: '" + settings.DateFormat + "'"); 1131 } 1132 if (!string.IsNullOrEmpty(settings.MinDate)) 1133 { 1134 jsAttributes.Add("minDate: '" + settings.MinDate + "'"); 1135 } 1136 if (!string.IsNullOrEmpty(settings.MaxDate)) 1137 { 1138 jsAttributes.Add("maxDate: '" + settings.MaxDate + "'"); 1139 } 1140 if (settings.IsInline) 1141 { 1142 jsAttributes.Add("inline: " + Converter.ToString(settings.IsInline).ToLower()); 1143 } 1144 if (settings.EnableTime) 1145 { 1146 jsAttributes.Add("enableTime: " + Converter.ToString(settings.EnableTime).ToLower()); 1147 } 1148 if (settings.EnableWeekNumbers) 1149 { 1150 jsAttributes.Add("weekNumbers: " + Converter.ToString(settings.EnableWeekNumbers).ToLower()); 1151 } 1152 1153 jsAttributes.AddRange(settings.GetFlatPickrOptions().Select(x => x.Key + ": " + x.Value)); 1154 1155 <script> 1156 document.addEventListener("DOMContentLoaded", function () { 1157 flatpickr("#@textField.Id", { 1158 @string.Join(",", jsAttributes) 1159 }); 1160 }); 1161 </script> 1162 } 1163 @using System.Reflection 1164 @using Dynamicweb.Rapido.Blocks.Components.General 1165 @using Dynamicweb.Rapido.Blocks.Components 1166 1167 @* Component *@ 1168 1169 @helper RenderTextField(TextField settings) 1170 { 1171 var attributes = new Dictionary<string, string>(); 1172 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1173 { 1174 settings.Id = Guid.NewGuid().ToString("N"); 1175 } 1176 1177 /*base settings*/ 1178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1179 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1180 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1181 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1182 if (settings.Required) { attributes.Add("required", "true"); } 1183 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1184 /*end*/ 1185 1186 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1187 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1188 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1189 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1190 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1191 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1192 attributes.Add("type", Enum.GetName(typeof(TextFieldType), settings.Type).ToLower()); 1193 if (settings.Type == TextFieldType.Password) { attributes.Add("autocomplete", "off"); }; 1194 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1195 1196 settings.CssClass = "u-full-width " + settings.CssClass; 1197 1198 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1199 1200 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1201 1202 string noMargin = "u-no-margin"; 1203 if (!settings.ReadOnly) { 1204 noMargin = ""; 1205 } 1206 1207 <div class="form__field-group u-full-width @noMargin @settings.WrapperCssClass dw-mod"> 1208 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1209 { 1210 <div class="u-full-width"> 1211 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1212 @if (settings.Link != null) { 1213 settings.Link.ButtonLayout = ButtonLayout.LinkClean; 1214 1215 <div class="u-pull--right"> 1216 @Render(settings.Link) 1217 </div> 1218 } 1219 </div> 1220 1221 } 1222 1223 @if (!string.IsNullOrEmpty(settings.HelpText)) 1224 { 1225 <small class="form__help-text">@settings.HelpText</small> 1226 } 1227 1228 @if (settings.ActionButton != null) 1229 { 1230 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1231 <div class="form__field-combi u-no-margin dw-mod"> 1232 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1233 @Render(settings.ActionButton) 1234 </div> 1235 } 1236 else 1237 { 1238 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1239 } 1240 1241 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1242 </div> 1243 } 1244 @using System.Reflection 1245 @using Dynamicweb.Rapido.Blocks.Components.General 1246 @using Dynamicweb.Rapido.Blocks.Components 1247 1248 @* Component *@ 1249 1250 @helper RenderNumberField(NumberField settings) 1251 { 1252 var attributes = new Dictionary<string, string>(); 1253 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1254 { 1255 settings.Id = Guid.NewGuid().ToString("N"); 1256 } 1257 1258 /*base settings*/ 1259 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1260 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1261 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1262 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1263 if (settings.Required) { attributes.Add("required", "true"); } 1264 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1265 /*end*/ 1266 1267 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1268 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1269 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1270 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1271 if (settings.Max != null) { attributes.Add("max", settings.Max.ToString()); } 1272 if (settings.Min != null) { attributes.Add("min", settings.Min.ToString()); } 1273 if (settings.Step != 0) { attributes.Add("step", settings.Step.ToString()); } 1274 if (settings.Value != null && !string.IsNullOrEmpty(settings.Value.ToString())) { attributes.Add("value", settings.Value.ToString()); } 1275 attributes.Add("type", "number"); 1276 1277 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1278 1279 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1280 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1281 { 1282 <div class="u-full-width"> 1283 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1284 @if (settings.Link != null) { 1285 <div class="u-pull--right"> 1286 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1287 @Render(settings.Link) 1288 </div> 1289 } 1290 </div> 1291 1292 } 1293 1294 @if (!string.IsNullOrEmpty(settings.HelpText)) 1295 { 1296 <small class="form__help-text">@settings.HelpText</small> 1297 } 1298 1299 @if (settings.ActionButton != null) 1300 { 1301 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1302 <div class="form__field-combi u-no-margin dw-mod"> 1303 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1304 @Render(settings.ActionButton) 1305 </div> 1306 } 1307 else 1308 { 1309 <div class="form__field-combi u-no-margin dw-mod"> 1310 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1311 </div> 1312 } 1313 1314 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1315 </div> 1316 } 1317 @using System.Reflection 1318 @using Dynamicweb.Rapido.Blocks.Components.General 1319 @using Dynamicweb.Rapido.Blocks.Components 1320 1321 1322 @* Component *@ 1323 1324 @helper RenderTextareaField(TextareaField settings) 1325 { 1326 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1327 string id = settings.Id; 1328 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(id)) 1329 { 1330 id = Guid.NewGuid().ToString("N"); 1331 } 1332 1333 if (!string.IsNullOrEmpty(id)) { attributes.Add("id", id); } 1334 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1335 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1336 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1337 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1338 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1339 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1340 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1341 if (settings.Required) { attributes.Add("required", "true"); } 1342 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1343 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1344 if (settings.Rows != 0) { attributes.Add("rows", settings.Rows.ToString()); } 1345 attributes.Add("name", settings.Name); 1346 1347 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1348 1349 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1350 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1351 { 1352 <div class="u-full-width"> 1353 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1354 @if (settings.Link != null) { 1355 <div class="u-pull--right"> 1356 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1357 @Render(settings.Link) 1358 </div> 1359 } 1360 </div> 1361 } 1362 1363 @if (!string.IsNullOrEmpty(settings.HelpText)) 1364 { 1365 <small class="form__help-text">@settings.HelpText</small> 1366 } 1367 1368 <textarea class="u-full-width @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Value</textarea> 1369 1370 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1371 </div> 1372 } 1373 @using System.Reflection 1374 @using Dynamicweb.Rapido.Blocks.Components.General 1375 @using Dynamicweb.Rapido.Blocks.Components 1376 1377 1378 @* Component *@ 1379 1380 @helper RenderHiddenField(HiddenField settings) { 1381 var attributes = new Dictionary<string, string>(); 1382 attributes.Add("type", "hidden"); 1383 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1384 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1385 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1386 1387 <input @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)/> 1388 } 1389 @using System.Reflection 1390 @using Dynamicweb.Rapido.Blocks.Components.General 1391 @using Dynamicweb.Rapido.Blocks.Components 1392 1393 @* Component *@ 1394 1395 @helper RenderCheckboxField(CheckboxField settings) 1396 { 1397 var attributes = new Dictionary<string, string>(); 1398 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1399 { 1400 settings.Id = Guid.NewGuid().ToString("N"); 1401 } 1402 1403 /*base settings*/ 1404 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1405 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1406 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1407 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1408 if (settings.Required) { attributes.Add("required", "true"); } 1409 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1410 /*end*/ 1411 1412 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1413 1414 attributes.Add("type", "checkbox"); 1415 if (settings.Checked) { attributes.Add("checked", "true"); } 1416 settings.CssClass = "form__control " + settings.CssClass; 1417 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1418 1419 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1420 1421 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1422 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1423 @if (!string.IsNullOrEmpty(settings.Label)) 1424 { 1425 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1426 } 1427 1428 @if (settings.Link != null) { 1429 <span> 1430 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1431 @Render(settings.Link) 1432 </span> 1433 } 1434 1435 @if (!string.IsNullOrEmpty(settings.HelpText)) 1436 { 1437 <small class="form__help-text checkbox-help dw-mod">@settings.HelpText</small> 1438 } 1439 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1440 </div> 1441 } 1442 @using System.Reflection 1443 @using Dynamicweb.Rapido.Blocks.Components.General 1444 @using Dynamicweb.Rapido.Blocks.Components 1445 1446 1447 @* Component *@ 1448 1449 @helper RenderCheckboxListField(CheckboxListField settings) 1450 { 1451 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1452 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1453 { 1454 <div class="u-full-width"> 1455 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1456 @if (settings.Link != null) { 1457 <div class="u-pull--right"> 1458 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1459 @Render(settings.Link) 1460 </div> 1461 } 1462 </div> 1463 1464 } 1465 1466 <div class="u-pull--left"> 1467 @if (!string.IsNullOrEmpty(settings.HelpText)) 1468 { 1469 <small class="form__help-text">@settings.HelpText</small> 1470 } 1471 1472 @foreach (var item in settings.Options) 1473 { 1474 if (settings.Required) 1475 { 1476 item.Required = true; 1477 } 1478 if (settings.Disabled) 1479 { 1480 item.Disabled = true; 1481 } 1482 if (!string.IsNullOrEmpty(settings.Name)) 1483 { 1484 item.Name = settings.Name; 1485 } 1486 if (!string.IsNullOrEmpty(settings.CssClass)) 1487 { 1488 item.CssClass += settings.CssClass; 1489 } 1490 1491 /* value is not supported */ 1492 1493 if (!string.IsNullOrEmpty(settings.OnClick)) 1494 { 1495 item.OnClick += settings.OnClick; 1496 } 1497 if (!string.IsNullOrEmpty(settings.OnChange)) 1498 { 1499 item.OnChange += settings.OnChange; 1500 } 1501 @Render(item) 1502 } 1503 1504 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1505 </div> 1506 1507 </div> 1508 } 1509 @using Dynamicweb.Rapido.Blocks.Components.General 1510 1511 @* Component *@ 1512 1513 @helper RenderSearch(Search settings) 1514 { 1515 var searchValue = HttpContext.Current.Request.QueryString.Get(settings.SearchParameter) ?? ""; 1516 var groupValue = HttpContext.Current.Request.QueryString.Get(settings.GroupsParameter) ?? ""; 1517 1518 if (string.IsNullOrEmpty(settings.Id)) 1519 { 1520 settings.Id = Guid.NewGuid().ToString("N"); 1521 } 1522 1523 var resultAttributes = new Dictionary<string, string>(); 1524 1525 if (settings.PageSize != 0) 1526 { 1527 resultAttributes.Add("data-page-size", settings.PageSize.ToString()); 1528 } 1529 if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1530 { 1531 resultAttributes.Add("data-groups-feed-url", settings.GroupItemsFeedUrl); 1532 if (!string.IsNullOrEmpty(groupValue)) 1533 { 1534 resultAttributes.Add("data-selected-group", groupValue); 1535 } 1536 if (!string.IsNullOrEmpty(settings.GroupsParameter)) 1537 { 1538 resultAttributes.Add("data-groups-parameter", settings.GroupsParameter); 1539 } 1540 } 1541 resultAttributes.Add("data-force-init", "true"); 1542 if (settings.GoToFirstSearchResultOnEnter) 1543 { 1544 resultAttributes.Add("data-go-to-first-search-result-on-enter", settings.GoToFirstSearchResultOnEnter.ToString().ToLower()); 1545 } 1546 if (!string.IsNullOrEmpty(settings.SearchParameter)) 1547 { 1548 resultAttributes.Add("data-search-parameter", settings.SearchParameter); 1549 } 1550 resultAttributes.Add("data-search-feed-url", settings.SearchData.SearchFeedUrl); 1551 resultAttributes.Add("data-results-template-id", settings.SearchData.ResultsTemplateId); 1552 1553 if (settings.SecondSearchData != null) 1554 { 1555 resultAttributes.Add("data-second-search-feed-url", settings.SecondSearchData.SearchFeedUrl); 1556 resultAttributes.Add("data-second-results-template-id", settings.SecondSearchData.ResultsTemplateId); 1557 } 1558 if (!string.IsNullOrEmpty(settings.ResultsPageUrl)) 1559 { 1560 resultAttributes.Add("data-results-page-url", settings.ResultsPageUrl); 1561 } 1562 1563 resultAttributes = resultAttributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1564 1565 string searchFieldCss = (settings.SearchButton == null) ? "search--with-icon" : ""; 1566 1567 <div class="search @settings.CssClass @searchFieldCss js-search-data-source dw-mod" id="@settings.Id" @ComponentMethods.AddAttributes(resultAttributes)> 1568 @if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1569 { 1570 <button type="button" class="search__groups-btn dw-mod js-search-groups-btn">@Translate("All")</button> 1571 <ul class="dropdown dropdown--absolute-position dw-mod search__groups-results js-search-groups-list"></ul> 1572 } 1573 1574 <input type="text" class="search__field dw-mod js-search-field" placeholder="@settings.Placeholder" value="@searchValue"> 1575 1576 <div class="dropdown dropdown--absolute-position search__results dw-mod js-search-results @(settings.SecondSearchData != null ? "search__results--combined" : "")"> 1577 @if (settings.SecondSearchData != null) 1578 { 1579 <div class="search__column search__column--products dw-mod"> 1580 <div class="search__column-header dw-mod">@Translate("Products")</div> 1581 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1582 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1583 { 1584 @Render(new Link { 1585 Title = Translate("View all"), 1586 CssClass = "js-view-all-button u-margin", 1587 Href = settings.SearchData.ResultsPageUrl 1588 }); 1589 } 1590 </div> 1591 <div class="search__column search__column--pages dw-mod"> 1592 <div class="search__column-header">@Translate("Pages")</div> 1593 <ul class="search__results-list dw-mod js-search-results-second-list" id="@(settings.Id)_SecondResultsList"></ul> 1594 @if (!string.IsNullOrEmpty(settings.SecondSearchData.ResultsPageUrl)) 1595 { 1596 @Render(new Link 1597 { 1598 Title = Translate("View all"), 1599 CssClass = "js-view-all-button u-margin", 1600 Href = settings.SecondSearchData.ResultsPageUrl 1601 }); 1602 } 1603 </div> 1604 } 1605 else 1606 { 1607 <div class="search__column search__column--only dw-mod"> 1608 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1609 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1610 { 1611 @Render(new Link { 1612 Title = Translate("View all"), 1613 CssClass = "js-view-all-button u-margin", 1614 Href = settings.SearchData.ResultsPageUrl 1615 }); 1616 } 1617 </div> 1618 } 1619 </div> 1620 1621 @if (settings.SearchButton != null) 1622 { 1623 settings.SearchButton.CssClass += " search__btn js-search-btn"; 1624 if (settings.RenderDefaultSearchIcon) 1625 { 1626 settings.SearchButton.Icon = new Icon { Name = Pageview.AreaSettings.GetItem("Layout").GetItem("Icons").GetList("SearchIcon").SelectedValue }; 1627 } 1628 @Render(settings.SearchButton); 1629 } 1630 </div> 1631 } 1632 @using System.Reflection 1633 @using Dynamicweb.Rapido.Blocks.Components.General 1634 @using Dynamicweb.Rapido.Blocks.Components 1635 1636 1637 @* Component *@ 1638 1639 @helper RenderSelectField(SelectField settings) 1640 { 1641 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1642 { 1643 settings.Id = Guid.NewGuid().ToString("N"); 1644 } 1645 1646 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1647 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1648 { 1649 <div class="u-full-width"> 1650 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1651 @if (settings.Link != null) { 1652 <div class="u-pull--right"> 1653 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1654 @Render(settings.Link) 1655 </div> 1656 } 1657 </div> 1658 } 1659 1660 @if (!string.IsNullOrEmpty(settings.HelpText)) 1661 { 1662 <small class="form__help-text">@settings.HelpText</small> 1663 } 1664 1665 @if (settings.ActionButton != null) 1666 { 1667 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1668 <div class="form__field-combi u-no-margin dw-mod"> 1669 @RenderSelectBase(settings) 1670 @Render(settings.ActionButton) 1671 </div> 1672 } 1673 else 1674 { 1675 @RenderSelectBase(settings) 1676 } 1677 1678 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1679 </div> 1680 } 1681 1682 @helper RenderSelectBase(SelectField settings) 1683 { 1684 var attributes = new Dictionary<string, string>(); 1685 1686 /*base settings*/ 1687 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1688 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1689 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1690 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1691 if (settings.Required) { attributes.Add("required", "true"); } 1692 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1693 /*end*/ 1694 1695 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1696 1697 <select @ComponentMethods.AddAttributes(resultAttributes) class="u-full-width @settings.CssClass dw-mod"> 1698 @if (settings.Default != null) 1699 { 1700 @Render(settings.Default) 1701 } 1702 1703 @foreach (var item in settings.Options) 1704 { 1705 if (settings.Value != null) { 1706 item.Checked = item.Value == settings.Value; 1707 } 1708 @Render(item) 1709 } 1710 </select> 1711 } 1712 @using System.Reflection 1713 @using Dynamicweb.Rapido.Blocks.Components.General 1714 @using Dynamicweb.Rapido.Blocks.Components 1715 1716 @* Component *@ 1717 1718 @helper RenderRadioButtonField(RadioButtonField settings) 1719 { 1720 var attributes = new Dictionary<string, string>(); 1721 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1722 { 1723 settings.Id = Guid.NewGuid().ToString("N"); 1724 } 1725 1726 /*base settings*/ 1727 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1728 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1729 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1730 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1731 if (settings.Required) { attributes.Add("required", "true"); } 1732 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1733 /*end*/ 1734 1735 attributes.Add("type", "radio"); 1736 if (settings.Checked) { attributes.Add("checked", "true"); } 1737 settings.CssClass = "form__control " + settings.CssClass; 1738 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1739 1740 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1741 1742 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1743 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1744 @if (!string.IsNullOrEmpty(settings.Label)) 1745 { 1746 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1747 } 1748 @if (!string.IsNullOrEmpty(settings.HelpText)) 1749 { 1750 <small class="form__help-text">@settings.HelpText</small> 1751 } 1752 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1753 </div> 1754 } 1755 @using System.Reflection 1756 @using Dynamicweb.Rapido.Blocks.Components.General 1757 @using Dynamicweb.Rapido.Blocks.Components 1758 1759 1760 @* Component *@ 1761 1762 @helper RenderRadioButtonListField(RadioButtonListField settings) 1763 { 1764 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1765 1766 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1767 @if (!string.IsNullOrEmpty(settings.Label)) 1768 { 1769 <label>@settings.Label</label> 1770 } 1771 @if (!string.IsNullOrEmpty(settings.HelpText)) 1772 { 1773 <small class="form__help-text">@settings.HelpText</small> 1774 } 1775 1776 @foreach (var item in settings.Options) 1777 { 1778 if (settings.Required) 1779 { 1780 item.Required = true; 1781 } 1782 if (settings.Disabled) 1783 { 1784 item.Disabled = true; 1785 } 1786 if (!string.IsNullOrEmpty(settings.Name)) 1787 { 1788 item.Name = settings.Name; 1789 } 1790 if (settings.Value != null && settings.Value == item.Value) 1791 { 1792 item.Checked = true; 1793 } 1794 if (!string.IsNullOrEmpty(settings.OnClick)) 1795 { 1796 item.OnClick += settings.OnClick; 1797 } 1798 if (!string.IsNullOrEmpty(settings.OnChange)) 1799 { 1800 item.OnChange += settings.OnChange; 1801 } 1802 if (!string.IsNullOrEmpty(settings.CssClass)) 1803 { 1804 item.CssClass += settings.CssClass; 1805 } 1806 @Render(item) 1807 } 1808 1809 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1810 </div> 1811 } 1812 @using System.Reflection 1813 @using Dynamicweb.Rapido.Blocks.Components.General 1814 @using Dynamicweb.Rapido.Blocks.Components 1815 1816 1817 @* Component *@ 1818 1819 @helper RenderNotificationMessage(NotificationMessage settings) 1820 { 1821 if (!string.IsNullOrEmpty(settings.Message)) 1822 { 1823 var attributes = new Dictionary<string, string>(); 1824 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1825 1826 string messageTypeClass = Enum.GetName(typeof(NotificationMessageType), settings.MessageType).ToLower(); 1827 string messageLayoutClass = Enum.GetName(typeof(NotificationMessageLayout), settings.MessageLayout).ToLower(); 1828 string minHeightClass = settings.Icon != null ? "u-min-h70px" : ""; 1829 1830 <div class="notification-message-@messageTypeClass notification-message-@messageLayoutClass @messageLayoutClass @minHeightClass @settings.CssClass u-full-width dw-mod" @ComponentMethods.AddAttributes(attributes)> 1831 @if (settings.Icon != null) { 1832 settings.Icon.Label = !string.IsNullOrEmpty(settings.Icon.Label) ? settings.Message + settings.Icon.Label : settings.Message; 1833 @Render(settings.Icon) 1834 } else { 1835 @settings.Message 1836 } 1837 </div> 1838 } 1839 } 1840 @using Dynamicweb.Rapido.Blocks.Components.General 1841 1842 1843 @* Component *@ 1844 1845 @helper RenderHandlebarsRoot(HandlebarsRoot settings) { 1846 string preRender = !String.IsNullOrEmpty(settings.PreRenderScriptTemplate) ? "data-pre-render-template=\"" + settings.PreRenderScriptTemplate + "\"" : ""; 1847 1848 <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> 1849 @if (settings.SubBlocks != null) { 1850 @RenderBlockList(settings.SubBlocks) 1851 } 1852 </div> 1853 } 1854 @using System.Reflection 1855 @using Dynamicweb.Rapido.Blocks.Components.General 1856 @using Dynamicweb.Rapido.Blocks.Components 1857 @using System.Text.RegularExpressions 1858 1859 1860 @* Component *@ 1861 1862 @helper RenderSticker(Sticker settings) { 1863 if (!String.IsNullOrEmpty(settings.Title)) { 1864 string size = settings.Size.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Size.ToString().ToLower() : ""; 1865 string style = settings.Style.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Style.ToString().ToLower() : ""; 1866 1867 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 1868 if (!String.IsNullOrEmpty(settings.Color) || !String.IsNullOrEmpty(settings.BackgroundColor)) { 1869 string styleTag = !String.IsNullOrEmpty(settings.Color) ? "color: " + settings.Color + "; " : ""; 1870 styleTag += !String.IsNullOrEmpty(settings.BackgroundColor) ? "background-color: " + settings.BackgroundColor + "; " : ""; 1871 optionalAttributes.Add("style", styleTag); 1872 } 1873 1874 <div class="stickers-container__tag @size @style @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Title</div> 1875 } 1876 } 1877 1878 @using System.Reflection 1879 @using Dynamicweb.Rapido.Blocks.Components.General 1880 @using Dynamicweb.Rapido.Blocks.Components 1881 1882 1883 @* Component *@ 1884 1885 @helper RenderStickersCollection(StickersCollection settings) 1886 { 1887 if (settings.Stickers.Count > 0) 1888 { 1889 string position = "stickers-container--" + Regex.Replace(settings.Position.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower(); 1890 1891 <div class="stickers-container @position @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1892 @foreach (Sticker sticker in settings.Stickers) 1893 { 1894 @Render(sticker) 1895 } 1896 </div> 1897 } 1898 } 1899 1900 @using Dynamicweb.Rapido.Blocks.Components.General 1901 1902 1903 @* Component *@ 1904 1905 @helper RenderForm(Form settings) { 1906 if (settings != null) 1907 { 1908 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 1909 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); }; 1910 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); }; 1911 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); }; 1912 var enctypes = new Dictionary<string, string> 1913 { 1914 { "multipart", "multipart/form-data" }, 1915 { "text", "text/plain" }, 1916 { "application", "application/x-www-form-urlencoded" } 1917 }; 1918 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); }; 1919 optionalAttributes.Add("method", settings.Method.ToString()); 1920 1921 if (!string.IsNullOrEmpty(settings.FormStartMarkup)) 1922 { 1923 @settings.FormStartMarkup 1924 } 1925 else 1926 { 1927 @:<form class="@settings.CssClass u-no-margin dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1928 } 1929 1930 foreach (var field in settings.GetFields()) 1931 { 1932 @Render(field) 1933 } 1934 1935 @:</form> 1936 } 1937 } 1938 @using System.Reflection 1939 @using Dynamicweb.Rapido.Blocks.Components.General 1940 @using Dynamicweb.Rapido.Blocks.Components 1941 1942 1943 @* Component *@ 1944 1945 @helper RenderText(Text settings) 1946 { 1947 @settings.Content 1948 } 1949 @using System.Reflection 1950 @using Dynamicweb.Rapido.Blocks.Components.General 1951 @using Dynamicweb.Rapido.Blocks.Components 1952 1953 1954 @* Component *@ 1955 1956 @helper RenderContentModule(ContentModule settings) { 1957 if (!string.IsNullOrEmpty(settings.Content)) 1958 { 1959 @settings.Content 1960 } 1961 } 1962 @using System.Reflection 1963 @using Dynamicweb.Rapido.Blocks.Components.General 1964 @using Dynamicweb.Rapido.Blocks.Components 1965 1966 1967 @* Component *@ 1968 1969 @helper RenderModal(Modal settings) { 1970 if (settings != null) 1971 { 1972 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 1973 1974 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : ""; 1975 1976 <input type="checkbox" id="@(modalId)ModalTrigger" class="modal-trigger" @onchange /> 1977 1978 <div class="modal-container"> 1979 @if (!settings.DisableDarkOverlay) 1980 { 1981 <label for="@(modalId)ModalTrigger" id="@(modalId)ModalOverlay" class="modal-overlay"></label> 1982 } 1983 <div class="modal modal--@settings.Width.ToString().ToLower() modal-height--@settings.Height.ToString().ToLower()" id="@(modalId)Modal"> 1984 @if (settings.Heading != null) 1985 { 1986 if (!string.IsNullOrEmpty(settings.Heading.Title)) 1987 { 1988 <div class="modal__header"> 1989 @Render(settings.Heading) 1990 </div> 1991 } 1992 } 1993 <div class="modal__body @(settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "")"> 1994 @if (!string.IsNullOrEmpty(settings.BodyText)) 1995 { 1996 @settings.BodyText 1997 } 1998 @if (settings.BodyTemplate != null) 1999 { 2000 @settings.BodyTemplate 2001 } 2002 @{ 2003 var actions = settings.GetActions(); 2004 } 2005 </div> 2006 @if (actions.Length > 0) 2007 { 2008 <div class="modal__footer"> 2009 @foreach (var action in actions) 2010 { 2011 if (Pageview.Device.ToString() != "Mobile") { 2012 action.CssClass += " u-no-margin"; 2013 } else { 2014 action.CssClass += " u-full-width u-margin-bottom"; 2015 } 2016 2017 @Render(action) 2018 } 2019 </div> 2020 } 2021 <label class="modal__close-btn" for="@(modalId)ModalTrigger"></label> 2022 </div> 2023 </div> 2024 } 2025 } 2026 @using Dynamicweb.Rapido.Blocks.Components.General 2027 2028 @* Component *@ 2029 2030 @helper RenderMediaListItem(MediaListItem settings) 2031 { 2032 <div class="media-list-item @settings.CssClass dw-mod" @(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "")> 2033 @if (!string.IsNullOrEmpty(settings.Label)) 2034 { 2035 if (!string.IsNullOrEmpty(settings.Link)) 2036 { 2037 @Render(new Link 2038 { 2039 Href = settings.Link, 2040 CssClass = "media-list-item__sticker dw-mod", 2041 ButtonLayout = ButtonLayout.None, 2042 Title = settings.Label, 2043 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2044 }) 2045 } 2046 else if (!string.IsNullOrEmpty(settings.OnClick)) 2047 { 2048 <span class="media-list-item__sticker dw-mod" onclick="@(settings.OnClick)"> 2049 <span class="u-uppercase">@settings.Label</span> 2050 </span> 2051 } 2052 else 2053 { 2054 <span class="media-list-item__sticker media-list-item__sticker--no-link dw-mod"> 2055 <span class="u-uppercase">@settings.Label</span> 2056 </span> 2057 } 2058 } 2059 <div class="media-list-item__wrap"> 2060 <div class="media-list-item__info dw-mod"> 2061 <div class="media-list-item__header dw-mod"> 2062 @if (!string.IsNullOrEmpty(settings.Title)) 2063 { 2064 if (!string.IsNullOrEmpty(settings.Link)) 2065 { 2066 @Render(new Link 2067 { 2068 Href = settings.Link, 2069 CssClass = "media-list-item__name dw-mod", 2070 ButtonLayout = ButtonLayout.None, 2071 Title = settings.Title, 2072 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2073 }) 2074 } 2075 else if (!string.IsNullOrEmpty(settings.OnClick)) 2076 { 2077 <span class="media-list-item__name dw-mod" onclick="@(settings.OnClick)">@settings.Title</span> 2078 } 2079 else 2080 { 2081 <span class="media-list-item__name media-list-item__name--no-link dw-mod">@settings.Title</span> 2082 } 2083 } 2084 2085 @if (!string.IsNullOrEmpty(settings.Status)) 2086 { 2087 <div class="media-list-item__state dw-mod">@settings.Status</div> 2088 } 2089 </div> 2090 @{ 2091 settings.InfoTable.CssClass += " media-list-item__parameters-table"; 2092 } 2093 2094 @Render(settings.InfoTable) 2095 </div> 2096 <div class="media-list-item__actions dw-mod"> 2097 <div class="media-list-item__actions-list dw-mod"> 2098 @{ 2099 var actions = settings.GetActions(); 2100 2101 foreach (ButtonBase action in actions) 2102 { 2103 action.ButtonLayout = ButtonLayout.None; 2104 action.CssClass += " media-list-item__action link"; 2105 2106 @Render(action) 2107 } 2108 } 2109 </div> 2110 2111 @if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title)) 2112 { 2113 settings.SelectButton.CssClass += " u-no-margin"; 2114 2115 <div class="media-list-item__action-button"> 2116 @Render(settings.SelectButton) 2117 </div> 2118 } 2119 </div> 2120 </div> 2121 </div> 2122 } 2123 @using Dynamicweb.Rapido.Blocks.Components.General 2124 @using Dynamicweb.Rapido.Blocks.Components 2125 2126 @helper RenderTable(Table settings) 2127 { 2128 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2129 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2130 2131 var enumToClasses = new Dictionary<TableDesign, string> 2132 { 2133 { TableDesign.Clean, "table--clean" }, 2134 { TableDesign.Bordered, "table--bordered" }, 2135 { TableDesign.Striped, "table--striped" }, 2136 { TableDesign.Hover, "table--hover" }, 2137 { TableDesign.Compact, "table--compact" }, 2138 { TableDesign.Condensed, "table--condensed" }, 2139 { TableDesign.NoTopBorder, "table--no-top-border" } 2140 }; 2141 string tableDesignClass = ""; 2142 if (settings.Design != TableDesign.None) 2143 { 2144 tableDesignClass = enumToClasses[settings.Design]; 2145 } 2146 2147 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); } 2148 2149 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2150 2151 <table @ComponentMethods.AddAttributes(resultAttributes)> 2152 @if (settings.Header != null) 2153 { 2154 <thead> 2155 @Render(settings.Header) 2156 </thead> 2157 } 2158 <tbody> 2159 @foreach (var row in settings.Rows) 2160 { 2161 @Render(row) 2162 } 2163 </tbody> 2164 @if (settings.Footer != null) 2165 { 2166 <tfoot> 2167 @Render(settings.Footer) 2168 </tfoot> 2169 } 2170 </table> 2171 } 2172 @using Dynamicweb.Rapido.Blocks.Components.General 2173 @using Dynamicweb.Rapido.Blocks.Components 2174 2175 @helper RenderTableRow(TableRow settings) 2176 { 2177 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2179 2180 var enumToClasses = new Dictionary<TableRowDesign, string> 2181 { 2182 { TableRowDesign.NoBorder, "table__row--no-border" }, 2183 { TableRowDesign.Border, "table__row--border" }, 2184 { TableRowDesign.TopBorder, "table__row--top-line" }, 2185 { TableRowDesign.BottomBorder, "table__row--bottom-line" }, 2186 { TableRowDesign.Solid, "table__row--solid" } 2187 }; 2188 2189 string tableRowDesignClass = ""; 2190 if (settings.Design != TableRowDesign.None) 2191 { 2192 tableRowDesignClass = enumToClasses[settings.Design]; 2193 } 2194 2195 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); } 2196 2197 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2198 2199 <tr @ComponentMethods.AddAttributes(resultAttributes)> 2200 @foreach (var cell in settings.Cells) 2201 { 2202 if (settings.IsHeaderRow) 2203 { 2204 cell.IsHeader = true; 2205 } 2206 @Render(cell) 2207 } 2208 </tr> 2209 } 2210 @using Dynamicweb.Rapido.Blocks.Components.General 2211 @using Dynamicweb.Rapido.Blocks.Components 2212 @using Dynamicweb.Core 2213 2214 @helper RenderTableCell(TableCell settings) 2215 { 2216 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2217 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2218 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); } 2219 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); } 2220 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); } 2221 2222 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2223 2224 string tagName = settings.IsHeader ? "th" : "td"; 2225 2226 @("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">") 2227 @settings.Content 2228 @("</" + tagName + ">"); 2229 } 2230 @using System.Linq 2231 @using Dynamicweb.Rapido.Blocks.Components.General 2232 2233 @* Component *@ 2234 2235 @helper RenderPagination(Dynamicweb.Rapido.Blocks.Components.General.Pagination settings) 2236 { 2237 var pageNumberQueryStringName = Dynamicweb.Rapido.Services.Pagination.GetPageNumberQueryStringName(settings); // Get the proper 'page number' query string parameter 2238 var queryParameters = Dynamicweb.Rapido.Services.Url.GetQueryParameters(pageNumberQueryStringName); // Get the NameValueCollection from the querystring 2239 2240 if (settings.NumberOfPages > 1) 2241 { 2242 string url = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/Default.aspx"; 2243 string ariaLabel = !string.IsNullOrWhiteSpace(settings.AriaLabel) ? settings.AriaLabel : Translate("Page navigation"); 2244 Dictionary<string, int> startAndEndPageNumber = Dynamicweb.Rapido.Services.Pagination.GetStartAndEndPageNumber(settings); 2245 2246 <div class="pager u-margin-top dw-mod @settings.CssClass" aria-label="@ariaLabel"> 2247 @if (settings.ShowPagingInfo) 2248 { 2249 <div class="pager__info dw-mod"> 2250 @Translate("Page") @settings.CurrentPageNumber @Translate("of") @settings.NumberOfPages 2251 </div> 2252 } 2253 <ul class="pager__list dw-mod"> 2254 @if (!string.IsNullOrWhiteSpace(settings.FirstPageUrl) && settings.ShowFirstAndLastControls) 2255 { 2256 @Render(new PaginationItem { Link = settings.FirstPageUrl, Icon = settings.FirstIcon }) 2257 } 2258 @if (!string.IsNullOrWhiteSpace(settings.PreviousPageUrl) && settings.ShowNextAndPrevControls) 2259 { 2260 @Render(new PaginationItem { Link = settings.PreviousPageUrl, Icon = settings.PrevIcon }) 2261 } 2262 @if (settings.GetPages().Any()) 2263 { 2264 foreach (var page in settings.GetPages()) 2265 { 2266 @Render(page) 2267 } 2268 } 2269 else 2270 { 2271 for (var page = startAndEndPageNumber["StartPage"]; page <= startAndEndPageNumber["EndPage"]; page++) 2272 { 2273 queryParameters = Dynamicweb.Rapido.Services.Url.UpdateQueryStringParameter(queryParameters, pageNumberQueryStringName, page.ToString()); 2274 @Render(new PaginationItem { Label = page.ToString(), Link = Dynamicweb.Rapido.Services.Url.BuildUri(url, queryParameters).PathAndQuery, IsActive = (settings.CurrentPageNumber == page) }); 2275 } 2276 } 2277 @if (!string.IsNullOrWhiteSpace(settings.NextPageUrl) && settings.ShowNextAndPrevControls) 2278 { 2279 @Render(new PaginationItem { Link = settings.NextPageUrl, Icon = settings.NextIcon }) 2280 } 2281 @if (!string.IsNullOrWhiteSpace(settings.LastPageUrl) && settings.ShowFirstAndLastControls) 2282 { 2283 @Render(new PaginationItem { Link = settings.LastPageUrl, Icon = settings.LastIcon }) 2284 } 2285 </ul> 2286 </div> 2287 } 2288 } 2289 2290 @helper RenderPaginationItem(PaginationItem settings) 2291 { 2292 if (settings.Icon == null) 2293 { 2294 settings.Icon = new Icon(); 2295 } 2296 2297 settings.Icon.Label = settings.Label; 2298 <li class="pager__btn dw-mod"> 2299 @if (settings.IsActive) 2300 { 2301 <span class="pager__num pager__num--current dw-mod"> 2302 @Render(settings.Icon) 2303 </span> 2304 } 2305 else 2306 { 2307 <a href="@settings.Link" class="pager__num dw-mod"> 2308 @Render(settings.Icon) 2309 </a> 2310 } 2311 </li> 2312 } 2313 2314 2315 @using Dynamicweb.Rapido.Blocks.Components.General 2316 @using Dynamicweb.Rapido.Blocks.Components.Ecommerce 2317 2318 2319 2320 2321 2322 @functions { 2323 public string GenerateRgba(string color, string opacity) 2324 { 2325 color = color.Replace("#", ""); 2326 if (color.Length == 6) 2327 { 2328 return "rgba(" + Convert.ToInt32(color.Substring(0, 2), 16) + ", " + Convert.ToInt32(color.Substring(2, 2), 16) + ", " + Convert.ToInt32(color.Substring(4, 2), 16) + ", " + opacity + ");"; 2329 } 2330 else 2331 { 2332 return Convert.ToInt16(color).ToString(); 2333 } 2334 } 2335 } 2336 2337 @{ 2338 string link = !string.IsNullOrEmpty(Model.Item.GetString("Link")) ? Model.Item.GetString("Link") : ""; 2339 string linkTarget = link.Contains("http") || link.Contains(".pdf") ? "_blank" : "_self"; 2340 } 2341 2342 @if (!string.IsNullOrEmpty(link)) 2343 { 2344 @*<a href="@link" target="@linkTarget" class="u-overlay">*@ 2345 <div class="paragraph-image-link-wrapper"> 2346 <a href="@link" target="@linkTarget"> 2347 @RenderTheContent() 2348 </a> 2349 </div> 2350 } 2351 else 2352 { 2353 @RenderTheContent() 2354 } 2355 2356 2357 @helper RenderTheContent() 2358 { 2359 string innerPadding = Model.Item.GetList("Padding") != null ? " padding-size-" + Model.Item.GetList("Padding").SelectedValue.ToLower() : ""; 2360 innerPadding += Model.Item.GetList("PaddingPosition") != null ? " padding-position-" + Model.Item.GetList("PaddingPosition").SelectedValue.ToLower() : ""; 2361 2362 if (!string.IsNullOrEmpty(Model.Item.GetString("Image"))) 2363 { 2364 int width = Model.Item.GetString("ImageWidth") != null ? Model.Item.GetInt32("ImageWidth") : 100; 2365 string styleSetting = Model.Item.GetString("ImageStyle") != null ? Model.Item.GetList("ImageStyle").SelectedValue : ""; 2366 ImageStyle style = ImageStyle.None; 2367 style = styleSetting == "ball" ? style = ImageStyle.Ball : style; 2368 style = styleSetting == "triangle" ? style = ImageStyle.Triangle : style; 2369 var file = Model.Item.GetFile("Image"); 2370 2371 Image image = new Image 2372 { 2373 Path = file, 2374 Style = style, 2375 CssClass = "background-image__cover", 2376 ImageDefault = new ImageSettings 2377 { 2378 Crop = 5, 2379 Width = width 2380 } 2381 }; 2382 2383 if (styleSetting == "square") 2384 { 2385 image.ImageDefault.Crop = 0; 2386 image.ImageDefault.Height = image.ImageDefault.Width; 2387 } 2388 2389 string imageAltText = ""; 2390 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageAltText"))) 2391 { 2392 imageAltText = Model.Item.GetString("ImageAltText"); 2393 } 2394 2395 string imageTitleText = ""; 2396 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageTitleText"))) 2397 { 2398 imageTitleText = Model.Item.GetString("ImageTitleText"); 2399 } 2400 2401 <div class="paragraph-image"> 2402 @RenderWithAltAndTitle(image, imageAltText, imageTitleText) 2403 </div> 2404 } 2405 2406 <div class="u-full-width u-padding-top dw-mod"> 2407 @if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) || !string.IsNullOrEmpty(Model.Item.GetString("Text"))) 2408 { 2409 <div class="u-margin-bottom--lg"> 2410 @if (!Model.Item.GetBoolean("HideTitle")) 2411 { 2412 @Render(new Heading { Title = Model.Item.GetString("Title"), Level = 2, CssClass = "u-no-margin" }) 2413 } 2414 @Render(new Text { Content = Model.Item.GetString("Text") }) 2415 </div> 2416 } 2417 </div> 2418 2419 if (!string.IsNullOrEmpty(Model.Item.GetItem("ButtonOne").GetString("Title"))) 2420 { 2421 <div class="buttons-collection u-block dw-mod"> 2422 @ParagraphButton(Model.Item.GetItem("ButtonOne")) 2423 </div> 2424 } 2425 } 2426 2427 2428 @helper ParagraphButton(ItemViewModel item) 2429 { 2430 if (item != null) 2431 { 2432 if (!string.IsNullOrEmpty(item.GetString("Title"))) 2433 { 2434 Button button = new Button 2435 { 2436 Title = item.GetString("Title"), 2437 Href = item.GetString("Link"), 2438 ButtonLayout = (ButtonLayout)System.Enum.Parse(typeof(ButtonLayout), char.ToUpper(item.GetList("Layout").SelectedValue[0]) + item.GetList("Layout").SelectedValue.Substring(1)) 2439 }; 2440 2441 if (!string.IsNullOrEmpty(item.GetString("Icon"))) 2442 { 2443 button.Icon = new Icon 2444 { 2445 CssClass = item.GetString("Icon") 2446 }; 2447 } 2448 2449 @Render(button) 2450 } 2451 } 2452 } 2453 2454 2455 2456 2457 2458
Error executing template "Designs/Rapido/ContentPage/Paragraph/StandardParagraphThree.cshtml"
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot perform runtime binding on a null reference
   at CallSite.Target(Closure , CallSite , Object )
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<>c__DisplayClass19_0.<RenderTheImage>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 924
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<>c__DisplayClass18_0.<RenderWithAltAndTitle>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 860
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.<RenderTheContent>b__48_0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2402
   at CompiledRazorTemplates.Dynamic.RazorEngine_8301d84882b547c1bc2df93198830e06.Execute() in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\StandardParagraphThree.cshtml:line 2347
   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> 2 @using Dynamicweb.Frontend 3 @using Dynamicweb.Rapido.Blocks.Components 4 @using Dynamicweb.Rapido.Blocks.Components.General 5 6 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 7 @using Dynamicweb.Frontend 8 9 @* Include the components *@ 10 @using System.Text.RegularExpressions 11 @using System.Collections.Generic 12 @using System.Reflection 13 @using System.Web 14 @using System.Web.UI.HtmlControls 15 @using Dynamicweb.Rapido.Blocks.Components 16 @using Dynamicweb.Rapido.Blocks.Components.Articles 17 @using Dynamicweb.Rapido.Blocks.Components.Documentation 18 @using Dynamicweb.Rapido.Blocks 19 20 21 @*--- START: Base block renderers ---*@ 22 23 @helper RenderBlockList(List<Block> blocks) 24 { 25 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 26 blocks = blocks.OrderBy(item => item.SortId).ToList(); 27 28 foreach (Block item in blocks) 29 { 30 if (debug) { 31 <!-- Block START: @item.Id --> 32 } 33 34 if (item.Design == null) 35 { 36 @RenderBlock(item) 37 } 38 else if (item.Design.RenderType == RenderType.None) { 39 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 40 41 <div class="@cssClass dw-mod"> 42 @RenderBlock(item) 43 </div> 44 } 45 else if (item.Design.RenderType != RenderType.Hide) 46 { 47 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 48 49 if (!item.SkipRenderBlocksList) { 50 if (item.Design.RenderType == RenderType.Row) 51 { 52 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id"> 53 @RenderBlock(item) 54 </div> 55 } 56 57 if (item.Design.RenderType == RenderType.Column) 58 { 59 string hidePadding = item.Design.HidePadding ? "u-no-padding" : ""; 60 string size = item.Design.Size ?? "12"; 61 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size; 62 63 <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"> 64 @RenderBlock(item) 65 </div> 66 } 67 68 if (item.Design.RenderType == RenderType.Table) 69 { 70 <table class="table @cssClass dw-mod" id="Block__@item.Id"> 71 @RenderBlock(item) 72 </table> 73 } 74 75 if (item.Design.RenderType == RenderType.TableRow) 76 { 77 <tr class="@cssClass dw-mod" id="Block__@item.Id"> 78 @RenderBlock(item) 79 </tr> 80 } 81 82 if (item.Design.RenderType == RenderType.TableColumn) 83 { 84 <td class="@cssClass dw-mod" id="Block__@item.Id"> 85 @RenderBlock(item) 86 </td> 87 } 88 89 if (item.Design.RenderType == RenderType.CardHeader) 90 { 91 <div class="card-header @cssClass dw-mod"> 92 @RenderBlock(item) 93 </div> 94 } 95 96 if (item.Design.RenderType == RenderType.CardBody) 97 { 98 <div class="card @cssClass dw-mod"> 99 @RenderBlock(item) 100 </div> 101 } 102 103 if (item.Design.RenderType == RenderType.CardFooter) 104 { 105 <div class="card-footer @cssClass dw-mod"> 106 @RenderBlock(item) 107 </div> 108 } 109 } 110 else 111 { 112 @RenderBlock(item) 113 } 114 } 115 116 if (debug) { 117 <!-- Block END: @item.Id --> 118 } 119 } 120 } 121 122 @helper RenderBlock(Block item) 123 { 124 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false; 125 126 if (item.Template != null) 127 { 128 @BlocksPage.RenderTemplate(item.Template) 129 } 130 131 if (item.Component != null) 132 { 133 string customSufix = "Custom"; 134 string methodName = item.Component.HelperName; 135 136 ComponentBase[] methodParameters = new ComponentBase[1]; 137 methodParameters[0] = item.Component; 138 Type methodType = this.GetType(); 139 140 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix); 141 MethodInfo generalMethod = methodType.GetMethod(methodName); 142 143 try { 144 if (debug) { 145 <!-- Component: @methodName.Replace("Render", "") --> 146 } 147 @customMethod.Invoke(this, methodParameters).ToString(); 148 } catch { 149 try { 150 @generalMethod.Invoke(this, methodParameters).ToString(); 151 } catch(Exception ex) { 152 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex); 153 } 154 } 155 } 156 157 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList) 158 { 159 @RenderBlockList(item.BlocksList) 160 } 161 } 162 163 @*--- END: Base block renderers ---*@ 164 165 @using Dynamicweb.Rapido.Blocks.Components 166 @using Dynamicweb.Rapido.Blocks.Components.General 167 @using Dynamicweb.Rapido.Blocks 168 @using System.IO 169 170 @* Required *@ 171 @using Dynamicweb.Rapido.Blocks.Components 172 @using Dynamicweb.Rapido.Blocks.Components.General 173 @using Dynamicweb.Rapido.Blocks 174 175 176 @helper Render(ComponentBase component) 177 { 178 if (component != null) 179 { 180 @component.Render(this) 181 } 182 } 183 184 @* Components *@ 185 @using System.Reflection 186 @using Dynamicweb.Rapido.Blocks.Components.General 187 188 189 @* Component *@ 190 191 @helper RenderIcon(Icon settings) 192 { 193 if (settings != null) 194 { 195 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 196 197 if (settings.Name != null) 198 { 199 if (string.IsNullOrEmpty(settings.Label)) 200 { 201 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i> 202 } 203 else 204 { 205 if (settings.LabelPosition == IconLabelPosition.Before) 206 { 207 <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> 208 } 209 else 210 { 211 <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> 212 } 213 } 214 } 215 else if (!string.IsNullOrEmpty(settings.Label)) 216 { 217 @settings.Label 218 } 219 } 220 } 221 @using System.Reflection 222 @using Dynamicweb.Rapido.Blocks.Components.General 223 @using Dynamicweb.Rapido.Blocks.Components 224 @using Dynamicweb.Core 225 226 @* Component *@ 227 228 @helper RenderButton(Button settings) 229 { 230 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 231 { 232 Dictionary<string, string> attributes = new Dictionary<string, string>(); 233 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 234 if (settings.Disabled) { 235 attributes.Add("disabled", "true"); 236 classList.Add("disabled"); 237 } 238 239 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle)) 240 { 241 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 242 @RenderConfirmDialog(settings); 243 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true"; 244 } 245 246 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 247 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 248 if (!string.IsNullOrEmpty(settings.AltText)) 249 { 250 attributes.Add("title", settings.AltText); 251 } 252 else if (!string.IsNullOrEmpty(settings.Title)) 253 { 254 string cleanTitle = Regex.Replace(settings.Title, "<.*?>", String.Empty); 255 cleanTitle = cleanTitle.Replace("&nbsp;", " "); 256 attributes.Add("title", cleanTitle); 257 } 258 259 var onClickEvents = new List<string>(); 260 if (!string.IsNullOrEmpty(settings.OnClick)) 261 { 262 onClickEvents.Add(settings.OnClick); 263 } 264 if (!string.IsNullOrEmpty(settings.Href)) 265 { 266 onClickEvents.Add("location.href='" + settings.Href + "'"); 267 } 268 if (onClickEvents.Count > 0) 269 { 270 attributes.Add("onClick", string.Join(";", onClickEvents)); 271 } 272 273 if (settings.ButtonLayout != ButtonLayout.None) 274 { 275 classList.Add("btn"); 276 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 277 if (btnLayout == "linkclean") 278 { 279 btnLayout = "link-clean"; //fix 280 } 281 classList.Add("btn--" + btnLayout); 282 } 283 284 if (settings.Icon == null) 285 { 286 settings.Icon = new Icon(); 287 } 288 289 settings.Icon.CssClass += Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower() != "linkclean" ? " u-flex--align-center" : ""; 290 settings.Icon.Label = settings.Title; 291 292 attributes.Add("type", Enum.GetName(typeof(ButtonType), settings.ButtonType).ToLower()); 293 294 <button class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</button> 295 } 296 } 297 298 @helper RenderConfirmDialog(Button settings) 299 { 300 Modal confirmDialog = new Modal { 301 Id = settings.Id, 302 Width = ModalWidth.Sm, 303 Heading = new Heading 304 { 305 Level = 2, 306 Title = settings.ConfirmTitle 307 }, 308 BodyText = settings.ConfirmText 309 }; 310 311 confirmDialog.AddAction(new Button { Title = Translate("Cancel"), ButtonLayout = ButtonLayout.Secondary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false"}); 312 confirmDialog.AddAction(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = false;" + settings.OnClick }); 313 314 @Render(confirmDialog) 315 } 316 @using Dynamicweb.Rapido.Blocks.Components.General 317 @using Dynamicweb.Rapido.Blocks.Components 318 @using Dynamicweb.Core 319 320 @helper RenderDashboard(Dashboard settings) 321 { 322 var widgets = settings.GetWidgets(); 323 324 if (!string.IsNullOrEmpty(settings.WidgetsBaseBackgroundColor)) 325 { 326 //set bg color for them 327 328 System.Drawing.Color color = System.Drawing.ColorTranslator.FromHtml(settings.WidgetsBaseBackgroundColor); 329 int r = Convert.ToInt16(color.R); 330 int g = Convert.ToInt16(color.G); 331 int b = Convert.ToInt16(color.B); 332 333 var count = widgets.Length; 334 var max = Math.Max(r, Math.Max(g, b)); 335 double step = 255.0 / (max * count); 336 var i = 0; 337 foreach (var widget in widgets) 338 { 339 i++; 340 341 var shade = "rgb(" + Converter.ToString(r * step * i).Replace(",", ".") + ", " + Converter.ToString(g * step * i).Replace(",", ".") + ", " + Converter.ToString(b * step * i).Replace(",", ".") + ")"; 342 widget.BackgroundColor = shade; 343 } 344 } 345 346 <div class="dashboard @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 347 @foreach (var widget in widgets) 348 { 349 <div class="dashboard__widget"> 350 @Render(widget) 351 </div> 352 } 353 </div> 354 } 355 @using Dynamicweb.Rapido.Blocks.Components.General 356 @using Dynamicweb.Rapido.Blocks.Components 357 358 @helper RenderDashboardWidgetLink(DashboardWidgetLink settings) 359 { 360 if (!string.IsNullOrEmpty(settings.Link)) 361 { 362 var backgroundStyles = ""; 363 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 364 { 365 backgroundStyles = "style=\"background-color:" + settings.BackgroundColor + "\""; 366 } 367 368 <a href="@settings.Link" class="widget widget--link @settings.CssClass dw-mod" @backgroundStyles title="@settings.Title" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 369 <div class="u-center-middle u-color-light"> 370 @if (settings.Icon != null) 371 { 372 settings.Icon.CssClass += "widget__icon"; 373 @Render(settings.Icon) 374 } 375 <div class="widget__title">@settings.Title</div> 376 </div> 377 </a> 378 } 379 } 380 @using Dynamicweb.Rapido.Blocks.Components.General 381 @using Dynamicweb.Rapido.Blocks.Components 382 383 @helper RenderDashboardWidgetCounter(DashboardWidgetCounter settings) 384 { 385 var backgroundStyles = ""; 386 if (!string.IsNullOrEmpty(settings.BackgroundColor)) 387 { 388 backgroundStyles = "style='background-color:" + settings.BackgroundColor + "'"; 389 } 390 391 <div class="widget @settings.CssClass dw-mod" @backgroundStyles @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 392 <div class="u-center-middle u-color-light"> 393 @if (settings.Icon != null) 394 { 395 settings.Icon.CssClass += "widget__icon"; 396 @Render(settings.Icon) 397 } 398 <div class="widget__counter">@settings.Count</div> 399 <div class="widget__title">@settings.Title</div> 400 </div> 401 </div> 402 } 403 @using System.Reflection 404 @using Dynamicweb.Rapido.Blocks.Components.General 405 @using Dynamicweb.Rapido.Blocks.Components 406 @using Dynamicweb.Core 407 408 @* Component *@ 409 410 @helper RenderLink(Link settings) 411 { 412 if (settings != null && !string.IsNullOrEmpty(settings.Href) && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null)) 413 { 414 Dictionary<string, string> attributes = new Dictionary<string, string>(); 415 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>(); 416 if (settings.Disabled) 417 { 418 attributes.Add("disabled", "true"); 419 classList.Add("disabled"); 420 } 421 422 if (!string.IsNullOrEmpty(settings.AltText)) 423 { 424 attributes.Add("title", settings.AltText); 425 } 426 else if (!string.IsNullOrEmpty(settings.Title)) 427 { 428 attributes.Add("title", settings.Title); 429 } 430 431 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 432 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 433 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onClick", settings.OnClick); } 434 attributes.Add("href", settings.Href); 435 436 if (settings.ButtonLayout != ButtonLayout.None) 437 { 438 classList.Add("btn"); 439 string btnLayout = Enum.GetName(typeof(ButtonLayout), settings.ButtonLayout).ToLower(); 440 if (btnLayout == "linkclean") 441 { 442 btnLayout = "link-clean"; //fix 443 } 444 classList.Add("btn--" + btnLayout); 445 } 446 447 if (settings.Icon == null) 448 { 449 settings.Icon = new Icon(); 450 } 451 settings.Icon.Label = settings.Title; 452 453 if (settings.Target == LinkTargetType.Blank && settings.Rel == LinkRelType.None) 454 { 455 settings.Rel = LinkRelType.Noopener; 456 } 457 if (settings.Target != LinkTargetType.None) 458 { 459 attributes.Add("target", "_" + Enum.GetName(typeof(LinkTargetType), settings.Target).ToLower()); 460 } 461 if (settings.Download) 462 { 463 attributes.Add("download", "true"); 464 } 465 if (settings.Rel != LinkRelType.None) 466 { 467 attributes.Add("rel", Enum.GetName(typeof(LinkRelType), settings.Rel).ToLower()); 468 } 469 470 <a class="@string.Join(" ", classList) dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@Render(settings.Icon)</a> 471 } 472 } 473 @using System.Reflection 474 @using Dynamicweb.Rapido.Blocks.Components 475 @using Dynamicweb.Rapido.Blocks.Components.General 476 @using Dynamicweb.Rapido.Blocks 477 478 479 @* Component *@ 480 481 @helper RenderRating(Rating settings) 482 { 483 if (settings.Score > 0) 484 { 485 int rating = settings.Score; 486 string iconType = "fa-star"; 487 488 switch (settings.Type.ToString()) { 489 case "Stars": 490 iconType = "fa-star"; 491 break; 492 case "Hearts": 493 iconType = "fa-heart"; 494 break; 495 case "Lemons": 496 iconType = "fa-lemon"; 497 break; 498 case "Bombs": 499 iconType = "fa-bomb"; 500 break; 501 } 502 503 <div class="u-ta-right"> 504 @for (int i = 0; i < settings.OutOf; i++) 505 { 506 <i class="@(rating > i ? "fas" : "far") @iconType"></i> 507 } 508 </div> 509 } 510 } 511 @using System.Reflection 512 @using Dynamicweb.Rapido.Blocks.Components.General 513 @using Dynamicweb.Rapido.Blocks.Components 514 515 516 @* Component *@ 517 518 @helper RenderSelectFieldOption(SelectFieldOption settings) 519 { 520 Dictionary<string, string> attributes = new Dictionary<string, string>(); 521 if (settings.Checked) { attributes.Add("selected", "true"); } 522 if (settings.Disabled) { attributes.Add("disabled", "true"); } 523 if (settings.Value != null) { attributes.Add("value", settings.Value); } 524 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 525 526 <option @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Label</option> 527 } 528 @using System.Reflection 529 @using Dynamicweb.Rapido.Blocks.Components.General 530 @using Dynamicweb.Rapido.Blocks.Components 531 532 533 @* Component *@ 534 535 @helper RenderNavigation(Navigation settings) { 536 @RenderNavigation(new 537 { 538 id = settings.Id, 539 cssclass = settings.CssClass, 540 startLevel = settings.StartLevel, 541 endlevel = settings.EndLevel, 542 expandmode = settings.Expandmode, 543 sitemapmode = settings.SitemapMode, 544 template = settings.Template 545 }) 546 } 547 @using Dynamicweb.Rapido.Blocks.Components.General 548 @using Dynamicweb.Rapido.Blocks.Components 549 550 551 @* Component *@ 552 553 @helper RenderBreadcrumbNavigation(BreadcrumbNavigation settings) { 554 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 555 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 556 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 557 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 558 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 559 settings.SitemapMode = false; 560 561 @RenderNavigation(settings) 562 } 563 @using Dynamicweb.Rapido.Blocks.Components.General 564 @using Dynamicweb.Rapido.Blocks.Components 565 566 567 @* Component *@ 568 569 @helper RenderLeftNavigation(LeftNavigation settings) { 570 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 571 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 572 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 573 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 574 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 575 576 <div class="grid__cell"> 577 @RenderNavigation(settings) 578 </div> 579 } 580 @using System.Reflection 581 @using Dynamicweb.Rapido.Blocks.Components.General 582 @using Dynamicweb.Core 583 584 @* Component *@ 585 586 @helper RenderHeading(Heading settings) 587 { 588 if (settings != null && !string.IsNullOrEmpty(settings.Title)) 589 { 590 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 591 string tagName = settings.Level != 0 ? "h" + settings.Level.ToString() : "div"; 592 593 @("<" + tagName + " class=\"" + settings.CssClass + " dw-mod\" " + color + ">") 594 if (!string.IsNullOrEmpty(settings.Link)) 595 { 596 @Render(new Link { Href = settings.Link, Icon = settings.Icon, Title = settings.Title, ButtonLayout = ButtonLayout.None }) 597 } 598 else 599 { 600 if (settings.Icon == null) 601 { 602 settings.Icon = new Icon(); 603 } 604 settings.Icon.Label = settings.Title; 605 @Render(settings.Icon) 606 } 607 @("</" + tagName + ">"); 608 } 609 } 610 @using Dynamicweb.Rapido.Blocks.Components 611 @using Dynamicweb.Rapido.Blocks.Components.General 612 @using Dynamicweb.Rapido.Blocks 613 614 615 @* Component *@ 616 617 @helper RenderImage(Image settings) 618 { 619 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 620 { 621 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 622 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 623 624 if (settings.Caption != null) 625 { 626 @:<div> 627 } 628 629 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 630 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 631 632 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 633 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 634 @if (settings.Link != null) 635 { 636 <a href="@settings.Link"> 637 @RenderTheImage(settings) 638 </a> 639 } 640 else 641 { 642 @RenderTheImage(settings) 643 } 644 </div> 645 </div> 646 647 if (settings.Caption != null) 648 { 649 <span class="image-caption dw-mod">@settings.Caption</span> 650 @:</div> 651 } 652 } 653 else 654 { 655 if (settings.Caption != null) 656 { 657 @:<div> 658 } 659 if (!string.IsNullOrEmpty(settings.Link)) 660 { 661 <a href="@settings.Link"> 662 @RenderTheImage(settings) 663 </a> 664 } 665 else 666 { 667 @RenderTheImage(settings) 668 } 669 670 if (settings.Caption != null) 671 { 672 <span class="image-caption dw-mod">@settings.Caption</span> 673 @:</div> 674 } 675 } 676 } 677 678 @helper RenderTheImage(Image settings) 679 { 680 if (settings != null) 681 { 682 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 683 string placeholderImage = "/Files/Images/placeholder.gif"; 684 string imageEngine = "/Admin/Public/GetImage.ashx?"; 685 686 string imageStyle = ""; 687 688 switch (settings.Style) 689 { 690 case ImageStyle.Ball: 691 imageStyle = "grid__cell-img--ball"; 692 break; 693 694 case ImageStyle.Triangle: 695 imageStyle = "grid__cell-img--triangle"; 696 break; 697 } 698 699 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 700 { 701 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 702 703 if (settings.ImageDefault != null) 704 { 705 settings.ImageDefault.Height = settings.ImageDefault.Width; 706 } 707 if (settings.ImageMedium != null) 708 { 709 settings.ImageMedium.Height = settings.ImageMedium.Width; 710 } 711 if (settings.ImageSmall != null) 712 { 713 settings.ImageSmall.Height = settings.ImageSmall.Width; 714 } 715 } 716 717 string defaultImage = imageEngine; 718 string imageSmall = ""; 719 string imageMedium = ""; 720 721 if (settings.DisableImageEngine) 722 { 723 defaultImage = settings.Path; 724 } 725 else 726 { 727 if (settings.ImageDefault != null) 728 { 729 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 730 731 if (settings.Path.GetType() != typeof(string)) 732 { 733 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 734 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 735 } 736 else 737 { 738 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 739 } 740 741 defaultImage += "&AlternativeImage=" + alternativeImage; 742 } 743 744 if (settings.ImageSmall != null) 745 { 746 imageSmall = "data-src-small=\"" + imageEngine; 747 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 748 749 if (settings.Path.GetType() != typeof(string)) 750 { 751 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 752 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 753 } 754 else 755 { 756 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 757 } 758 759 imageSmall += "&alternativeImage=" + alternativeImage; 760 761 imageSmall += "\""; 762 } 763 764 if (settings.ImageMedium != null) 765 { 766 imageMedium = "data-src-medium=\"" + imageEngine; 767 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 768 769 if (settings.Path.GetType() != typeof(string)) 770 { 771 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 772 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 773 } 774 else 775 { 776 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 777 } 778 779 imageMedium += "&alternativeImage=" + alternativeImage; 780 781 imageMedium += "\""; 782 } 783 } 784 785 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 786 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 787 if (!string.IsNullOrEmpty(settings.Title)) 788 { 789 optionalAttributes.Add("alt", settings.Title); 790 optionalAttributes.Add("title", settings.Title); 791 } 792 793 if (settings.DisableLazyLoad) 794 { 795 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 796 } 797 else 798 { 799 <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) /> 800 } 801 } 802 } 803 @using Dynamicweb.Rapido.Blocks.Components 804 @using Dynamicweb.Rapido.Blocks.Components.General 805 @using Dynamicweb.Rapido.Blocks 806 807 808 @* Component *@ 809 810 @helper RenderWithAltAndTitle(Image settings, string alText = "", string titleText = "") 811 { 812 if (settings.FilterPrimary != ImageFilter.None || settings.FilterSecondary != ImageFilter.None) 813 { 814 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 815 if (!string.IsNullOrEmpty(settings.FilterColor)) { optionalAttributes.Add("style", "background-color: " + settings.FilterColor); } 816 817 if (settings.Caption != null) 818 { 819 @:<div> 820 } 821 822 var primaryFilterClass = settings.FilterPrimary.ToString().ToLower(); 823 var secondaryFilterClass = settings.FilterSecondary.ToString().ToLower(); 824 825 <div class="image-filter image-filter--@primaryFilterClass u-position-relative dw-mod" @ComponentMethods.AddAttributes(optionalAttributes)> 826 <div class="image-filter image-filter--@secondaryFilterClass dw-mod"> 827 @if (settings.Link != null) 828 { 829 <a href="@settings.Link"> 830 @RenderTheImage(settings, alText, titleText) 831 </a> 832 } 833 else 834 { 835 @RenderTheImage(settings, alText, titleText) 836 } 837 </div> 838 </div> 839 840 if (settings.Caption != null) 841 { 842 <span class="image-caption dw-mod">@settings.Caption</span> 843 @:</div> 844 } 845 } 846 else 847 { 848 if (settings.Caption != null) 849 { 850 @:<div> 851 } 852 if (!string.IsNullOrEmpty(settings.Link)) 853 { 854 <a href="@settings.Link"> 855 @RenderTheImage(settings, alText, titleText) 856 </a> 857 } 858 else 859 { 860 @RenderTheImage(settings, alText, titleText) 861 } 862 863 if (settings.Caption != null) 864 { 865 <span class="image-caption dw-mod">@settings.Caption</span> 866 @:</div> 867 } 868 } 869 } 870 871 @helper RenderTheImage(Image settings, string alText = "", string titleText = "") 872 { 873 if (settings != null) 874 { 875 string alternativeImage = !string.IsNullOrEmpty(Pageview.AreaSettings.GetItem("Settings").GetString("AlternativeImage")) ? Pageview.AreaSettings.GetItem("Settings").GetFile("AlternativeImage").PathUrlEncoded : "/Images/missing_image.jpg"; 876 string placeholderImage = "/Files/Images/placeholder.gif"; 877 string imageEngine = "/Admin/Public/GetImage.ashx?"; 878 879 string imageStyle = ""; 880 881 switch (settings.Style) 882 { 883 case ImageStyle.Ball: 884 imageStyle = "grid__cell-img--ball"; 885 break; 886 887 case ImageStyle.Triangle: 888 imageStyle = "grid__cell-img--triangle"; 889 break; 890 } 891 892 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle || settings.Style == ImageStyle.Triangle) 893 { 894 settings.ImageDefault.Crop = settings.ImageDefault.Crop == 5 ? settings.ImageDefault.Crop = 0 : settings.ImageDefault.Crop; 895 896 if (settings.ImageDefault != null) 897 { 898 settings.ImageDefault.Height = settings.ImageDefault.Width; 899 } 900 if (settings.ImageMedium != null) 901 { 902 settings.ImageMedium.Height = settings.ImageMedium.Width; 903 } 904 if (settings.ImageSmall != null) 905 { 906 settings.ImageSmall.Height = settings.ImageSmall.Width; 907 } 908 } 909 910 string defaultImage = imageEngine; 911 string imageSmall = ""; 912 string imageMedium = ""; 913 914 if (settings.DisableImageEngine) 915 { 916 defaultImage = settings.Path; 917 } 918 else 919 { 920 if (settings.ImageDefault != null) 921 { 922 defaultImage += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageDefault); 923 924 if (settings.Path.GetType() != typeof(string)) 925 { 926 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 927 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 928 } 929 else 930 { 931 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 932 } 933 934 defaultImage += "&AlternativeImage=" + alternativeImage; 935 } 936 937 if (settings.ImageSmall != null) 938 { 939 imageSmall = "data-src-small=\"" + imageEngine; 940 imageSmall += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageSmall); 941 942 if (settings.Path.GetType() != typeof(string)) 943 { 944 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 945 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 946 } 947 else 948 { 949 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 950 } 951 952 imageSmall += "&alternativeImage=" + alternativeImage; 953 954 imageSmall += "\""; 955 } 956 957 if (settings.ImageMedium != null) 958 { 959 imageMedium = "data-src-medium=\"" + imageEngine; 960 imageMedium += Dynamicweb.Rapido.Services.Images.GetImagePathFromSettings(settings.ImageMedium); 961 962 if (settings.Path.GetType() != typeof(string)) 963 { 964 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 965 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 966 } 967 else 968 { 969 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 970 971 972 } 973 974 imageMedium += "&alternativeImage=" + alternativeImage; 975 976 imageMedium += "\""; 977 } 978 } 979 980 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 981 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 982 if (!string.IsNullOrEmpty(settings.Title)) 983 { 984 optionalAttributes.Add("alt", settings.Title); 985 optionalAttributes.Add("title", settings.Title); 986 } 987 988 989 990 string imgAlt = ""; 991 string imgTitle = ""; 992 993 if (!string.IsNullOrWhiteSpace(alText)) 994 { 995 imgAlt = "alt=" + '"' + alText + '"'; 996 } 997 998 if (!string.IsNullOrWhiteSpace(titleText)) 999 { 1000 imgTitle = "title=" + '"' + titleText + '"'; 1001 1002 } 1003 1004 1005 if (settings.DisableLazyLoad) 1006 { 1007 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1008 } 1009 else 1010 { 1011 <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) @imgAlt @imgTitle /> 1012 } 1013 } 1014 } 1015 @using System.Reflection 1016 @using Dynamicweb.Rapido.Blocks.Components.General 1017 @using Dynamicweb.Rapido.Blocks.Components 1018 1019 @* Component *@ 1020 1021 @helper RenderFileField(FileField settings) 1022 { 1023 var attributes = new Dictionary<string, string>(); 1024 if (string.IsNullOrEmpty(settings.Id)) 1025 { 1026 settings.Id = Guid.NewGuid().ToString("N"); 1027 } 1028 1029 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1030 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1031 if (settings.Required) { attributes.Add("required", "true"); } 1032 if (settings.Multiple) { attributes.Add("multiple", "true"); } 1033 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1034 if (string.IsNullOrEmpty(settings.ChooseFileText)) 1035 { 1036 settings.ChooseFileText = Translate("Choose file"); 1037 } 1038 if (string.IsNullOrEmpty(settings.NoFilesChosenText)) 1039 { 1040 settings.NoFilesChosenText = Translate("No files chosen..."); 1041 } 1042 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1043 1044 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1045 1046 string setValueToFakeInput = "FileUpload.setValueToFakeInput(this)"; 1047 attributes.Add("onchange", setValueToFakeInput + (!string.IsNullOrEmpty(settings.OnChange) ? settings.OnChange : "")); 1048 1049 attributes.Add("type", "file"); 1050 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1051 settings.CssClass = "u-full-width " + settings.CssClass; 1052 1053 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1054 1055 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1056 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1057 { 1058 <div class="u-full-width"> 1059 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1060 @if (settings.Link != null) { 1061 <div class="u-pull--right"> 1062 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1063 @Render(settings.Link) 1064 </div> 1065 } 1066 </div> 1067 1068 } 1069 1070 @if (!string.IsNullOrEmpty(settings.HelpText)) 1071 { 1072 <small class="form__help-text">@settings.HelpText</small> 1073 } 1074 1075 <div class="form__field-combi file-input u-no-margin dw-mod"> 1076 <input @ComponentMethods.AddAttributes(resultAttributes) class="file-input__real-input" data-no-files-text="@settings.NoFilesChosenText" data-many-files-text="@Translate("files")" /> 1077 <label for="@settings.Id" class="file-input__btn btn--secondary btn dw-mod">@settings.ChooseFileText</label> 1078 <label for="@settings.Id" class="@settings.CssClass file-input__fake-input js-fake-input dw-mod">@settings.NoFilesChosenText</label> 1079 @if (settings.UploadButton != null) 1080 { 1081 settings.UploadButton.CssClass += " btn--condensed u-no-margin"; 1082 @Render(settings.UploadButton) 1083 } 1084 </div> 1085 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1086 </div> 1087 } 1088 @using System.Reflection 1089 @using Dynamicweb.Rapido.Blocks.Components.General 1090 @using Dynamicweb.Rapido.Blocks.Components 1091 @using Dynamicweb.Core 1092 @using System.Linq 1093 1094 @* Component *@ 1095 1096 @helper RenderDateTimeField(DateTimeField settings) 1097 { 1098 if (string.IsNullOrEmpty(settings.Id)) 1099 { 1100 settings.Id = Guid.NewGuid().ToString("N"); 1101 } 1102 1103 var textField = new TextField { 1104 Name = settings.Name, 1105 Id = settings.Id, 1106 Label = settings.Label, 1107 HelpText = settings.HelpText, 1108 Value = settings.Value, 1109 Disabled = settings.Disabled, 1110 Required = settings.Required, 1111 ErrorMessage = settings.ErrorMessage, 1112 CssClass = settings.CssClass, 1113 WrapperCssClass = settings.WrapperCssClass, 1114 OnChange = settings.OnChange, 1115 OnClick = settings.OnClick, 1116 Link = settings.Link, 1117 ExtraAttributes = settings.ExtraAttributes, 1118 // 1119 Placeholder = settings.Placeholder 1120 }; 1121 1122 @Render(textField) 1123 1124 List<string> jsAttributes = new List<string>(); 1125 1126 jsAttributes.Add("mode: '" + Enum.GetName(typeof(DateTimeFieldMode), settings.Mode).ToLower() + "'"); 1127 1128 if (!string.IsNullOrEmpty(settings.DateFormat)) 1129 { 1130 jsAttributes.Add("dateFormat: '" + settings.DateFormat + "'"); 1131 } 1132 if (!string.IsNullOrEmpty(settings.MinDate)) 1133 { 1134 jsAttributes.Add("minDate: '" + settings.MinDate + "'"); 1135 } 1136 if (!string.IsNullOrEmpty(settings.MaxDate)) 1137 { 1138 jsAttributes.Add("maxDate: '" + settings.MaxDate + "'"); 1139 } 1140 if (settings.IsInline) 1141 { 1142 jsAttributes.Add("inline: " + Converter.ToString(settings.IsInline).ToLower()); 1143 } 1144 if (settings.EnableTime) 1145 { 1146 jsAttributes.Add("enableTime: " + Converter.ToString(settings.EnableTime).ToLower()); 1147 } 1148 if (settings.EnableWeekNumbers) 1149 { 1150 jsAttributes.Add("weekNumbers: " + Converter.ToString(settings.EnableWeekNumbers).ToLower()); 1151 } 1152 1153 jsAttributes.AddRange(settings.GetFlatPickrOptions().Select(x => x.Key + ": " + x.Value)); 1154 1155 <script> 1156 document.addEventListener("DOMContentLoaded", function () { 1157 flatpickr("#@textField.Id", { 1158 @string.Join(",", jsAttributes) 1159 }); 1160 }); 1161 </script> 1162 } 1163 @using System.Reflection 1164 @using Dynamicweb.Rapido.Blocks.Components.General 1165 @using Dynamicweb.Rapido.Blocks.Components 1166 1167 @* Component *@ 1168 1169 @helper RenderTextField(TextField settings) 1170 { 1171 var attributes = new Dictionary<string, string>(); 1172 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1173 { 1174 settings.Id = Guid.NewGuid().ToString("N"); 1175 } 1176 1177 /*base settings*/ 1178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1179 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1180 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1181 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1182 if (settings.Required) { attributes.Add("required", "true"); } 1183 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1184 /*end*/ 1185 1186 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1187 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1188 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1189 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1190 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1191 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1192 attributes.Add("type", Enum.GetName(typeof(TextFieldType), settings.Type).ToLower()); 1193 if (settings.Type == TextFieldType.Password) { attributes.Add("autocomplete", "off"); }; 1194 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1195 1196 settings.CssClass = "u-full-width " + settings.CssClass; 1197 1198 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1199 1200 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1201 1202 string noMargin = "u-no-margin"; 1203 if (!settings.ReadOnly) { 1204 noMargin = ""; 1205 } 1206 1207 <div class="form__field-group u-full-width @noMargin @settings.WrapperCssClass dw-mod"> 1208 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1209 { 1210 <div class="u-full-width"> 1211 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1212 @if (settings.Link != null) { 1213 settings.Link.ButtonLayout = ButtonLayout.LinkClean; 1214 1215 <div class="u-pull--right"> 1216 @Render(settings.Link) 1217 </div> 1218 } 1219 </div> 1220 1221 } 1222 1223 @if (!string.IsNullOrEmpty(settings.HelpText)) 1224 { 1225 <small class="form__help-text">@settings.HelpText</small> 1226 } 1227 1228 @if (settings.ActionButton != null) 1229 { 1230 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1231 <div class="form__field-combi u-no-margin dw-mod"> 1232 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1233 @Render(settings.ActionButton) 1234 </div> 1235 } 1236 else 1237 { 1238 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1239 } 1240 1241 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1242 </div> 1243 } 1244 @using System.Reflection 1245 @using Dynamicweb.Rapido.Blocks.Components.General 1246 @using Dynamicweb.Rapido.Blocks.Components 1247 1248 @* Component *@ 1249 1250 @helper RenderNumberField(NumberField settings) 1251 { 1252 var attributes = new Dictionary<string, string>(); 1253 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1254 { 1255 settings.Id = Guid.NewGuid().ToString("N"); 1256 } 1257 1258 /*base settings*/ 1259 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1260 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1261 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1262 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1263 if (settings.Required) { attributes.Add("required", "true"); } 1264 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1265 /*end*/ 1266 1267 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1268 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1269 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1270 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1271 if (settings.Max != null) { attributes.Add("max", settings.Max.ToString()); } 1272 if (settings.Min != null) { attributes.Add("min", settings.Min.ToString()); } 1273 if (settings.Step != 0) { attributes.Add("step", settings.Step.ToString()); } 1274 if (settings.Value != null && !string.IsNullOrEmpty(settings.Value.ToString())) { attributes.Add("value", settings.Value.ToString()); } 1275 attributes.Add("type", "number"); 1276 1277 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1278 1279 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1280 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1281 { 1282 <div class="u-full-width"> 1283 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1284 @if (settings.Link != null) { 1285 <div class="u-pull--right"> 1286 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1287 @Render(settings.Link) 1288 </div> 1289 } 1290 </div> 1291 1292 } 1293 1294 @if (!string.IsNullOrEmpty(settings.HelpText)) 1295 { 1296 <small class="form__help-text">@settings.HelpText</small> 1297 } 1298 1299 @if (settings.ActionButton != null) 1300 { 1301 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1302 <div class="form__field-combi u-no-margin dw-mod"> 1303 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1304 @Render(settings.ActionButton) 1305 </div> 1306 } 1307 else 1308 { 1309 <div class="form__field-combi u-no-margin dw-mod"> 1310 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1311 </div> 1312 } 1313 1314 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1315 </div> 1316 } 1317 @using System.Reflection 1318 @using Dynamicweb.Rapido.Blocks.Components.General 1319 @using Dynamicweb.Rapido.Blocks.Components 1320 1321 1322 @* Component *@ 1323 1324 @helper RenderTextareaField(TextareaField settings) 1325 { 1326 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1327 string id = settings.Id; 1328 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(id)) 1329 { 1330 id = Guid.NewGuid().ToString("N"); 1331 } 1332 1333 if (!string.IsNullOrEmpty(id)) { attributes.Add("id", id); } 1334 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1335 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1336 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1337 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1338 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1339 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1340 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1341 if (settings.Required) { attributes.Add("required", "true"); } 1342 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1343 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1344 if (settings.Rows != 0) { attributes.Add("rows", settings.Rows.ToString()); } 1345 attributes.Add("name", settings.Name); 1346 1347 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1348 1349 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1350 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1351 { 1352 <div class="u-full-width"> 1353 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1354 @if (settings.Link != null) { 1355 <div class="u-pull--right"> 1356 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1357 @Render(settings.Link) 1358 </div> 1359 } 1360 </div> 1361 } 1362 1363 @if (!string.IsNullOrEmpty(settings.HelpText)) 1364 { 1365 <small class="form__help-text">@settings.HelpText</small> 1366 } 1367 1368 <textarea class="u-full-width @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Value</textarea> 1369 1370 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1371 </div> 1372 } 1373 @using System.Reflection 1374 @using Dynamicweb.Rapido.Blocks.Components.General 1375 @using Dynamicweb.Rapido.Blocks.Components 1376 1377 1378 @* Component *@ 1379 1380 @helper RenderHiddenField(HiddenField settings) { 1381 var attributes = new Dictionary<string, string>(); 1382 attributes.Add("type", "hidden"); 1383 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1384 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1385 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1386 1387 <input @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)/> 1388 } 1389 @using System.Reflection 1390 @using Dynamicweb.Rapido.Blocks.Components.General 1391 @using Dynamicweb.Rapido.Blocks.Components 1392 1393 @* Component *@ 1394 1395 @helper RenderCheckboxField(CheckboxField settings) 1396 { 1397 var attributes = new Dictionary<string, string>(); 1398 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1399 { 1400 settings.Id = Guid.NewGuid().ToString("N"); 1401 } 1402 1403 /*base settings*/ 1404 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1405 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1406 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1407 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1408 if (settings.Required) { attributes.Add("required", "true"); } 1409 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1410 /*end*/ 1411 1412 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1413 1414 attributes.Add("type", "checkbox"); 1415 if (settings.Checked) { attributes.Add("checked", "true"); } 1416 settings.CssClass = "form__control " + settings.CssClass; 1417 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1418 1419 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1420 1421 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1422 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1423 @if (!string.IsNullOrEmpty(settings.Label)) 1424 { 1425 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1426 } 1427 1428 @if (settings.Link != null) { 1429 <span> 1430 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1431 @Render(settings.Link) 1432 </span> 1433 } 1434 1435 @if (!string.IsNullOrEmpty(settings.HelpText)) 1436 { 1437 <small class="form__help-text checkbox-help dw-mod">@settings.HelpText</small> 1438 } 1439 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1440 </div> 1441 } 1442 @using System.Reflection 1443 @using Dynamicweb.Rapido.Blocks.Components.General 1444 @using Dynamicweb.Rapido.Blocks.Components 1445 1446 1447 @* Component *@ 1448 1449 @helper RenderCheckboxListField(CheckboxListField settings) 1450 { 1451 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1452 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1453 { 1454 <div class="u-full-width"> 1455 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1456 @if (settings.Link != null) { 1457 <div class="u-pull--right"> 1458 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1459 @Render(settings.Link) 1460 </div> 1461 } 1462 </div> 1463 1464 } 1465 1466 <div class="u-pull--left"> 1467 @if (!string.IsNullOrEmpty(settings.HelpText)) 1468 { 1469 <small class="form__help-text">@settings.HelpText</small> 1470 } 1471 1472 @foreach (var item in settings.Options) 1473 { 1474 if (settings.Required) 1475 { 1476 item.Required = true; 1477 } 1478 if (settings.Disabled) 1479 { 1480 item.Disabled = true; 1481 } 1482 if (!string.IsNullOrEmpty(settings.Name)) 1483 { 1484 item.Name = settings.Name; 1485 } 1486 if (!string.IsNullOrEmpty(settings.CssClass)) 1487 { 1488 item.CssClass += settings.CssClass; 1489 } 1490 1491 /* value is not supported */ 1492 1493 if (!string.IsNullOrEmpty(settings.OnClick)) 1494 { 1495 item.OnClick += settings.OnClick; 1496 } 1497 if (!string.IsNullOrEmpty(settings.OnChange)) 1498 { 1499 item.OnChange += settings.OnChange; 1500 } 1501 @Render(item) 1502 } 1503 1504 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1505 </div> 1506 1507 </div> 1508 } 1509 @using Dynamicweb.Rapido.Blocks.Components.General 1510 1511 @* Component *@ 1512 1513 @helper RenderSearch(Search settings) 1514 { 1515 var searchValue = HttpContext.Current.Request.QueryString.Get(settings.SearchParameter) ?? ""; 1516 var groupValue = HttpContext.Current.Request.QueryString.Get(settings.GroupsParameter) ?? ""; 1517 1518 if (string.IsNullOrEmpty(settings.Id)) 1519 { 1520 settings.Id = Guid.NewGuid().ToString("N"); 1521 } 1522 1523 var resultAttributes = new Dictionary<string, string>(); 1524 1525 if (settings.PageSize != 0) 1526 { 1527 resultAttributes.Add("data-page-size", settings.PageSize.ToString()); 1528 } 1529 if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1530 { 1531 resultAttributes.Add("data-groups-feed-url", settings.GroupItemsFeedUrl); 1532 if (!string.IsNullOrEmpty(groupValue)) 1533 { 1534 resultAttributes.Add("data-selected-group", groupValue); 1535 } 1536 if (!string.IsNullOrEmpty(settings.GroupsParameter)) 1537 { 1538 resultAttributes.Add("data-groups-parameter", settings.GroupsParameter); 1539 } 1540 } 1541 resultAttributes.Add("data-force-init", "true"); 1542 if (settings.GoToFirstSearchResultOnEnter) 1543 { 1544 resultAttributes.Add("data-go-to-first-search-result-on-enter", settings.GoToFirstSearchResultOnEnter.ToString().ToLower()); 1545 } 1546 if (!string.IsNullOrEmpty(settings.SearchParameter)) 1547 { 1548 resultAttributes.Add("data-search-parameter", settings.SearchParameter); 1549 } 1550 resultAttributes.Add("data-search-feed-url", settings.SearchData.SearchFeedUrl); 1551 resultAttributes.Add("data-results-template-id", settings.SearchData.ResultsTemplateId); 1552 1553 if (settings.SecondSearchData != null) 1554 { 1555 resultAttributes.Add("data-second-search-feed-url", settings.SecondSearchData.SearchFeedUrl); 1556 resultAttributes.Add("data-second-results-template-id", settings.SecondSearchData.ResultsTemplateId); 1557 } 1558 if (!string.IsNullOrEmpty(settings.ResultsPageUrl)) 1559 { 1560 resultAttributes.Add("data-results-page-url", settings.ResultsPageUrl); 1561 } 1562 1563 resultAttributes = resultAttributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1564 1565 string searchFieldCss = (settings.SearchButton == null) ? "search--with-icon" : ""; 1566 1567 <div class="search @settings.CssClass @searchFieldCss js-search-data-source dw-mod" id="@settings.Id" @ComponentMethods.AddAttributes(resultAttributes)> 1568 @if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1569 { 1570 <button type="button" class="search__groups-btn dw-mod js-search-groups-btn">@Translate("All")</button> 1571 <ul class="dropdown dropdown--absolute-position dw-mod search__groups-results js-search-groups-list"></ul> 1572 } 1573 1574 <input type="text" class="search__field dw-mod js-search-field" placeholder="@settings.Placeholder" value="@searchValue"> 1575 1576 <div class="dropdown dropdown--absolute-position search__results dw-mod js-search-results @(settings.SecondSearchData != null ? "search__results--combined" : "")"> 1577 @if (settings.SecondSearchData != null) 1578 { 1579 <div class="search__column search__column--products dw-mod"> 1580 <div class="search__column-header dw-mod">@Translate("Products")</div> 1581 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1582 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1583 { 1584 @Render(new Link { 1585 Title = Translate("View all"), 1586 CssClass = "js-view-all-button u-margin", 1587 Href = settings.SearchData.ResultsPageUrl 1588 }); 1589 } 1590 </div> 1591 <div class="search__column search__column--pages dw-mod"> 1592 <div class="search__column-header">@Translate("Pages")</div> 1593 <ul class="search__results-list dw-mod js-search-results-second-list" id="@(settings.Id)_SecondResultsList"></ul> 1594 @if (!string.IsNullOrEmpty(settings.SecondSearchData.ResultsPageUrl)) 1595 { 1596 @Render(new Link 1597 { 1598 Title = Translate("View all"), 1599 CssClass = "js-view-all-button u-margin", 1600 Href = settings.SecondSearchData.ResultsPageUrl 1601 }); 1602 } 1603 </div> 1604 } 1605 else 1606 { 1607 <div class="search__column search__column--only dw-mod"> 1608 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1609 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1610 { 1611 @Render(new Link { 1612 Title = Translate("View all"), 1613 CssClass = "js-view-all-button u-margin", 1614 Href = settings.SearchData.ResultsPageUrl 1615 }); 1616 } 1617 </div> 1618 } 1619 </div> 1620 1621 @if (settings.SearchButton != null) 1622 { 1623 settings.SearchButton.CssClass += " search__btn js-search-btn"; 1624 if (settings.RenderDefaultSearchIcon) 1625 { 1626 settings.SearchButton.Icon = new Icon { Name = Pageview.AreaSettings.GetItem("Layout").GetItem("Icons").GetList("SearchIcon").SelectedValue }; 1627 } 1628 @Render(settings.SearchButton); 1629 } 1630 </div> 1631 } 1632 @using System.Reflection 1633 @using Dynamicweb.Rapido.Blocks.Components.General 1634 @using Dynamicweb.Rapido.Blocks.Components 1635 1636 1637 @* Component *@ 1638 1639 @helper RenderSelectField(SelectField settings) 1640 { 1641 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1642 { 1643 settings.Id = Guid.NewGuid().ToString("N"); 1644 } 1645 1646 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1647 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1648 { 1649 <div class="u-full-width"> 1650 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1651 @if (settings.Link != null) { 1652 <div class="u-pull--right"> 1653 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1654 @Render(settings.Link) 1655 </div> 1656 } 1657 </div> 1658 } 1659 1660 @if (!string.IsNullOrEmpty(settings.HelpText)) 1661 { 1662 <small class="form__help-text">@settings.HelpText</small> 1663 } 1664 1665 @if (settings.ActionButton != null) 1666 { 1667 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1668 <div class="form__field-combi u-no-margin dw-mod"> 1669 @RenderSelectBase(settings) 1670 @Render(settings.ActionButton) 1671 </div> 1672 } 1673 else 1674 { 1675 @RenderSelectBase(settings) 1676 } 1677 1678 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1679 </div> 1680 } 1681 1682 @helper RenderSelectBase(SelectField settings) 1683 { 1684 var attributes = new Dictionary<string, string>(); 1685 1686 /*base settings*/ 1687 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1688 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1689 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1690 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1691 if (settings.Required) { attributes.Add("required", "true"); } 1692 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1693 /*end*/ 1694 1695 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1696 1697 <select @ComponentMethods.AddAttributes(resultAttributes) class="u-full-width @settings.CssClass dw-mod"> 1698 @if (settings.Default != null) 1699 { 1700 @Render(settings.Default) 1701 } 1702 1703 @foreach (var item in settings.Options) 1704 { 1705 if (settings.Value != null) { 1706 item.Checked = item.Value == settings.Value; 1707 } 1708 @Render(item) 1709 } 1710 </select> 1711 } 1712 @using System.Reflection 1713 @using Dynamicweb.Rapido.Blocks.Components.General 1714 @using Dynamicweb.Rapido.Blocks.Components 1715 1716 @* Component *@ 1717 1718 @helper RenderRadioButtonField(RadioButtonField settings) 1719 { 1720 var attributes = new Dictionary<string, string>(); 1721 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1722 { 1723 settings.Id = Guid.NewGuid().ToString("N"); 1724 } 1725 1726 /*base settings*/ 1727 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1728 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1729 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1730 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1731 if (settings.Required) { attributes.Add("required", "true"); } 1732 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1733 /*end*/ 1734 1735 attributes.Add("type", "radio"); 1736 if (settings.Checked) { attributes.Add("checked", "true"); } 1737 settings.CssClass = "form__control " + settings.CssClass; 1738 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1739 1740 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1741 1742 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1743 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1744 @if (!string.IsNullOrEmpty(settings.Label)) 1745 { 1746 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1747 } 1748 @if (!string.IsNullOrEmpty(settings.HelpText)) 1749 { 1750 <small class="form__help-text">@settings.HelpText</small> 1751 } 1752 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1753 </div> 1754 } 1755 @using System.Reflection 1756 @using Dynamicweb.Rapido.Blocks.Components.General 1757 @using Dynamicweb.Rapido.Blocks.Components 1758 1759 1760 @* Component *@ 1761 1762 @helper RenderRadioButtonListField(RadioButtonListField settings) 1763 { 1764 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1765 1766 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1767 @if (!string.IsNullOrEmpty(settings.Label)) 1768 { 1769 <label>@settings.Label</label> 1770 } 1771 @if (!string.IsNullOrEmpty(settings.HelpText)) 1772 { 1773 <small class="form__help-text">@settings.HelpText</small> 1774 } 1775 1776 @foreach (var item in settings.Options) 1777 { 1778 if (settings.Required) 1779 { 1780 item.Required = true; 1781 } 1782 if (settings.Disabled) 1783 { 1784 item.Disabled = true; 1785 } 1786 if (!string.IsNullOrEmpty(settings.Name)) 1787 { 1788 item.Name = settings.Name; 1789 } 1790 if (settings.Value != null && settings.Value == item.Value) 1791 { 1792 item.Checked = true; 1793 } 1794 if (!string.IsNullOrEmpty(settings.OnClick)) 1795 { 1796 item.OnClick += settings.OnClick; 1797 } 1798 if (!string.IsNullOrEmpty(settings.OnChange)) 1799 { 1800 item.OnChange += settings.OnChange; 1801 } 1802 if (!string.IsNullOrEmpty(settings.CssClass)) 1803 { 1804 item.CssClass += settings.CssClass; 1805 } 1806 @Render(item) 1807 } 1808 1809 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1810 </div> 1811 } 1812 @using System.Reflection 1813 @using Dynamicweb.Rapido.Blocks.Components.General 1814 @using Dynamicweb.Rapido.Blocks.Components 1815 1816 1817 @* Component *@ 1818 1819 @helper RenderNotificationMessage(NotificationMessage settings) 1820 { 1821 if (!string.IsNullOrEmpty(settings.Message)) 1822 { 1823 var attributes = new Dictionary<string, string>(); 1824 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1825 1826 string messageTypeClass = Enum.GetName(typeof(NotificationMessageType), settings.MessageType).ToLower(); 1827 string messageLayoutClass = Enum.GetName(typeof(NotificationMessageLayout), settings.MessageLayout).ToLower(); 1828 string minHeightClass = settings.Icon != null ? "u-min-h70px" : ""; 1829 1830 <div class="notification-message-@messageTypeClass notification-message-@messageLayoutClass @messageLayoutClass @minHeightClass @settings.CssClass u-full-width dw-mod" @ComponentMethods.AddAttributes(attributes)> 1831 @if (settings.Icon != null) { 1832 settings.Icon.Label = !string.IsNullOrEmpty(settings.Icon.Label) ? settings.Message + settings.Icon.Label : settings.Message; 1833 @Render(settings.Icon) 1834 } else { 1835 @settings.Message 1836 } 1837 </div> 1838 } 1839 } 1840 @using Dynamicweb.Rapido.Blocks.Components.General 1841 1842 1843 @* Component *@ 1844 1845 @helper RenderHandlebarsRoot(HandlebarsRoot settings) { 1846 string preRender = !String.IsNullOrEmpty(settings.PreRenderScriptTemplate) ? "data-pre-render-template=\"" + settings.PreRenderScriptTemplate + "\"" : ""; 1847 1848 <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> 1849 @if (settings.SubBlocks != null) { 1850 @RenderBlockList(settings.SubBlocks) 1851 } 1852 </div> 1853 } 1854 @using System.Reflection 1855 @using Dynamicweb.Rapido.Blocks.Components.General 1856 @using Dynamicweb.Rapido.Blocks.Components 1857 @using System.Text.RegularExpressions 1858 1859 1860 @* Component *@ 1861 1862 @helper RenderSticker(Sticker settings) { 1863 if (!String.IsNullOrEmpty(settings.Title)) { 1864 string size = settings.Size.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Size.ToString().ToLower() : ""; 1865 string style = settings.Style.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Style.ToString().ToLower() : ""; 1866 1867 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 1868 if (!String.IsNullOrEmpty(settings.Color) || !String.IsNullOrEmpty(settings.BackgroundColor)) { 1869 string styleTag = !String.IsNullOrEmpty(settings.Color) ? "color: " + settings.Color + "; " : ""; 1870 styleTag += !String.IsNullOrEmpty(settings.BackgroundColor) ? "background-color: " + settings.BackgroundColor + "; " : ""; 1871 optionalAttributes.Add("style", styleTag); 1872 } 1873 1874 <div class="stickers-container__tag @size @style @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Title</div> 1875 } 1876 } 1877 1878 @using System.Reflection 1879 @using Dynamicweb.Rapido.Blocks.Components.General 1880 @using Dynamicweb.Rapido.Blocks.Components 1881 1882 1883 @* Component *@ 1884 1885 @helper RenderStickersCollection(StickersCollection settings) 1886 { 1887 if (settings.Stickers.Count > 0) 1888 { 1889 string position = "stickers-container--" + Regex.Replace(settings.Position.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower(); 1890 1891 <div class="stickers-container @position @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1892 @foreach (Sticker sticker in settings.Stickers) 1893 { 1894 @Render(sticker) 1895 } 1896 </div> 1897 } 1898 } 1899 1900 @using Dynamicweb.Rapido.Blocks.Components.General 1901 1902 1903 @* Component *@ 1904 1905 @helper RenderForm(Form settings) { 1906 if (settings != null) 1907 { 1908 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 1909 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); }; 1910 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); }; 1911 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); }; 1912 var enctypes = new Dictionary<string, string> 1913 { 1914 { "multipart", "multipart/form-data" }, 1915 { "text", "text/plain" }, 1916 { "application", "application/x-www-form-urlencoded" } 1917 }; 1918 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); }; 1919 optionalAttributes.Add("method", settings.Method.ToString()); 1920 1921 if (!string.IsNullOrEmpty(settings.FormStartMarkup)) 1922 { 1923 @settings.FormStartMarkup 1924 } 1925 else 1926 { 1927 @:<form class="@settings.CssClass u-no-margin dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1928 } 1929 1930 foreach (var field in settings.GetFields()) 1931 { 1932 @Render(field) 1933 } 1934 1935 @:</form> 1936 } 1937 } 1938 @using System.Reflection 1939 @using Dynamicweb.Rapido.Blocks.Components.General 1940 @using Dynamicweb.Rapido.Blocks.Components 1941 1942 1943 @* Component *@ 1944 1945 @helper RenderText(Text settings) 1946 { 1947 @settings.Content 1948 } 1949 @using System.Reflection 1950 @using Dynamicweb.Rapido.Blocks.Components.General 1951 @using Dynamicweb.Rapido.Blocks.Components 1952 1953 1954 @* Component *@ 1955 1956 @helper RenderContentModule(ContentModule settings) { 1957 if (!string.IsNullOrEmpty(settings.Content)) 1958 { 1959 @settings.Content 1960 } 1961 } 1962 @using System.Reflection 1963 @using Dynamicweb.Rapido.Blocks.Components.General 1964 @using Dynamicweb.Rapido.Blocks.Components 1965 1966 1967 @* Component *@ 1968 1969 @helper RenderModal(Modal settings) { 1970 if (settings != null) 1971 { 1972 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 1973 1974 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : ""; 1975 1976 <input type="checkbox" id="@(modalId)ModalTrigger" class="modal-trigger" @onchange /> 1977 1978 <div class="modal-container"> 1979 @if (!settings.DisableDarkOverlay) 1980 { 1981 <label for="@(modalId)ModalTrigger" id="@(modalId)ModalOverlay" class="modal-overlay"></label> 1982 } 1983 <div class="modal modal--@settings.Width.ToString().ToLower() modal-height--@settings.Height.ToString().ToLower()" id="@(modalId)Modal"> 1984 @if (settings.Heading != null) 1985 { 1986 if (!string.IsNullOrEmpty(settings.Heading.Title)) 1987 { 1988 <div class="modal__header"> 1989 @Render(settings.Heading) 1990 </div> 1991 } 1992 } 1993 <div class="modal__body @(settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "")"> 1994 @if (!string.IsNullOrEmpty(settings.BodyText)) 1995 { 1996 @settings.BodyText 1997 } 1998 @if (settings.BodyTemplate != null) 1999 { 2000 @settings.BodyTemplate 2001 } 2002 @{ 2003 var actions = settings.GetActions(); 2004 } 2005 </div> 2006 @if (actions.Length > 0) 2007 { 2008 <div class="modal__footer"> 2009 @foreach (var action in actions) 2010 { 2011 if (Pageview.Device.ToString() != "Mobile") { 2012 action.CssClass += " u-no-margin"; 2013 } else { 2014 action.CssClass += " u-full-width u-margin-bottom"; 2015 } 2016 2017 @Render(action) 2018 } 2019 </div> 2020 } 2021 <label class="modal__close-btn" for="@(modalId)ModalTrigger"></label> 2022 </div> 2023 </div> 2024 } 2025 } 2026 @using Dynamicweb.Rapido.Blocks.Components.General 2027 2028 @* Component *@ 2029 2030 @helper RenderMediaListItem(MediaListItem settings) 2031 { 2032 <div class="media-list-item @settings.CssClass dw-mod" @(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "")> 2033 @if (!string.IsNullOrEmpty(settings.Label)) 2034 { 2035 if (!string.IsNullOrEmpty(settings.Link)) 2036 { 2037 @Render(new Link 2038 { 2039 Href = settings.Link, 2040 CssClass = "media-list-item__sticker dw-mod", 2041 ButtonLayout = ButtonLayout.None, 2042 Title = settings.Label, 2043 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2044 }) 2045 } 2046 else if (!string.IsNullOrEmpty(settings.OnClick)) 2047 { 2048 <span class="media-list-item__sticker dw-mod" onclick="@(settings.OnClick)"> 2049 <span class="u-uppercase">@settings.Label</span> 2050 </span> 2051 } 2052 else 2053 { 2054 <span class="media-list-item__sticker media-list-item__sticker--no-link dw-mod"> 2055 <span class="u-uppercase">@settings.Label</span> 2056 </span> 2057 } 2058 } 2059 <div class="media-list-item__wrap"> 2060 <div class="media-list-item__info dw-mod"> 2061 <div class="media-list-item__header dw-mod"> 2062 @if (!string.IsNullOrEmpty(settings.Title)) 2063 { 2064 if (!string.IsNullOrEmpty(settings.Link)) 2065 { 2066 @Render(new Link 2067 { 2068 Href = settings.Link, 2069 CssClass = "media-list-item__name dw-mod", 2070 ButtonLayout = ButtonLayout.None, 2071 Title = settings.Title, 2072 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2073 }) 2074 } 2075 else if (!string.IsNullOrEmpty(settings.OnClick)) 2076 { 2077 <span class="media-list-item__name dw-mod" onclick="@(settings.OnClick)">@settings.Title</span> 2078 } 2079 else 2080 { 2081 <span class="media-list-item__name media-list-item__name--no-link dw-mod">@settings.Title</span> 2082 } 2083 } 2084 2085 @if (!string.IsNullOrEmpty(settings.Status)) 2086 { 2087 <div class="media-list-item__state dw-mod">@settings.Status</div> 2088 } 2089 </div> 2090 @{ 2091 settings.InfoTable.CssClass += " media-list-item__parameters-table"; 2092 } 2093 2094 @Render(settings.InfoTable) 2095 </div> 2096 <div class="media-list-item__actions dw-mod"> 2097 <div class="media-list-item__actions-list dw-mod"> 2098 @{ 2099 var actions = settings.GetActions(); 2100 2101 foreach (ButtonBase action in actions) 2102 { 2103 action.ButtonLayout = ButtonLayout.None; 2104 action.CssClass += " media-list-item__action link"; 2105 2106 @Render(action) 2107 } 2108 } 2109 </div> 2110 2111 @if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title)) 2112 { 2113 settings.SelectButton.CssClass += " u-no-margin"; 2114 2115 <div class="media-list-item__action-button"> 2116 @Render(settings.SelectButton) 2117 </div> 2118 } 2119 </div> 2120 </div> 2121 </div> 2122 } 2123 @using Dynamicweb.Rapido.Blocks.Components.General 2124 @using Dynamicweb.Rapido.Blocks.Components 2125 2126 @helper RenderTable(Table settings) 2127 { 2128 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2129 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2130 2131 var enumToClasses = new Dictionary<TableDesign, string> 2132 { 2133 { TableDesign.Clean, "table--clean" }, 2134 { TableDesign.Bordered, "table--bordered" }, 2135 { TableDesign.Striped, "table--striped" }, 2136 { TableDesign.Hover, "table--hover" }, 2137 { TableDesign.Compact, "table--compact" }, 2138 { TableDesign.Condensed, "table--condensed" }, 2139 { TableDesign.NoTopBorder, "table--no-top-border" } 2140 }; 2141 string tableDesignClass = ""; 2142 if (settings.Design != TableDesign.None) 2143 { 2144 tableDesignClass = enumToClasses[settings.Design]; 2145 } 2146 2147 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); } 2148 2149 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2150 2151 <table @ComponentMethods.AddAttributes(resultAttributes)> 2152 @if (settings.Header != null) 2153 { 2154 <thead> 2155 @Render(settings.Header) 2156 </thead> 2157 } 2158 <tbody> 2159 @foreach (var row in settings.Rows) 2160 { 2161 @Render(row) 2162 } 2163 </tbody> 2164 @if (settings.Footer != null) 2165 { 2166 <tfoot> 2167 @Render(settings.Footer) 2168 </tfoot> 2169 } 2170 </table> 2171 } 2172 @using Dynamicweb.Rapido.Blocks.Components.General 2173 @using Dynamicweb.Rapido.Blocks.Components 2174 2175 @helper RenderTableRow(TableRow settings) 2176 { 2177 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2178 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2179 2180 var enumToClasses = new Dictionary<TableRowDesign, string> 2181 { 2182 { TableRowDesign.NoBorder, "table__row--no-border" }, 2183 { TableRowDesign.Border, "table__row--border" }, 2184 { TableRowDesign.TopBorder, "table__row--top-line" }, 2185 { TableRowDesign.BottomBorder, "table__row--bottom-line" }, 2186 { TableRowDesign.Solid, "table__row--solid" } 2187 }; 2188 2189 string tableRowDesignClass = ""; 2190 if (settings.Design != TableRowDesign.None) 2191 { 2192 tableRowDesignClass = enumToClasses[settings.Design]; 2193 } 2194 2195 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); } 2196 2197 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2198 2199 <tr @ComponentMethods.AddAttributes(resultAttributes)> 2200 @foreach (var cell in settings.Cells) 2201 { 2202 if (settings.IsHeaderRow) 2203 { 2204 cell.IsHeader = true; 2205 } 2206 @Render(cell) 2207 } 2208 </tr> 2209 } 2210 @using Dynamicweb.Rapido.Blocks.Components.General 2211 @using Dynamicweb.Rapido.Blocks.Components 2212 @using Dynamicweb.Core 2213 2214 @helper RenderTableCell(TableCell settings) 2215 { 2216 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2217 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2218 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); } 2219 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); } 2220 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); } 2221 2222 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2223 2224 string tagName = settings.IsHeader ? "th" : "td"; 2225 2226 @("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">") 2227 @settings.Content 2228 @("</" + tagName + ">"); 2229 } 2230 @using System.Linq 2231 @using Dynamicweb.Rapido.Blocks.Components.General 2232 2233 @* Component *@ 2234 2235 @helper RenderPagination(Dynamicweb.Rapido.Blocks.Components.General.Pagination settings) 2236 { 2237 var pageNumberQueryStringName = Dynamicweb.Rapido.Services.Pagination.GetPageNumberQueryStringName(settings); // Get the proper 'page number' query string parameter 2238 var queryParameters = Dynamicweb.Rapido.Services.Url.GetQueryParameters(pageNumberQueryStringName); // Get the NameValueCollection from the querystring 2239 2240 if (settings.NumberOfPages > 1) 2241 { 2242 string url = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/Default.aspx"; 2243 string ariaLabel = !string.IsNullOrWhiteSpace(settings.AriaLabel) ? settings.AriaLabel : Translate("Page navigation"); 2244 Dictionary<string, int> startAndEndPageNumber = Dynamicweb.Rapido.Services.Pagination.GetStartAndEndPageNumber(settings); 2245 2246 <div class="pager u-margin-top dw-mod @settings.CssClass" aria-label="@ariaLabel"> 2247 @if (settings.ShowPagingInfo) 2248 { 2249 <div class="pager__info dw-mod"> 2250 @Translate("Page") @settings.CurrentPageNumber @Translate("of") @settings.NumberOfPages 2251 </div> 2252 } 2253 <ul class="pager__list dw-mod"> 2254 @if (!string.IsNullOrWhiteSpace(settings.FirstPageUrl) && settings.ShowFirstAndLastControls) 2255 { 2256 @Render(new PaginationItem { Link = settings.FirstPageUrl, Icon = settings.FirstIcon }) 2257 } 2258 @if (!string.IsNullOrWhiteSpace(settings.PreviousPageUrl) && settings.ShowNextAndPrevControls) 2259 { 2260 @Render(new PaginationItem { Link = settings.PreviousPageUrl, Icon = settings.PrevIcon }) 2261 } 2262 @if (settings.GetPages().Any()) 2263 { 2264 foreach (var page in settings.GetPages()) 2265 { 2266 @Render(page) 2267 } 2268 } 2269 else 2270 { 2271 for (var page = startAndEndPageNumber["StartPage"]; page <= startAndEndPageNumber["EndPage"]; page++) 2272 { 2273 queryParameters = Dynamicweb.Rapido.Services.Url.UpdateQueryStringParameter(queryParameters, pageNumberQueryStringName, page.ToString()); 2274 @Render(new PaginationItem { Label = page.ToString(), Link = Dynamicweb.Rapido.Services.Url.BuildUri(url, queryParameters).PathAndQuery, IsActive = (settings.CurrentPageNumber == page) }); 2275 } 2276 } 2277 @if (!string.IsNullOrWhiteSpace(settings.NextPageUrl) && settings.ShowNextAndPrevControls) 2278 { 2279 @Render(new PaginationItem { Link = settings.NextPageUrl, Icon = settings.NextIcon }) 2280 } 2281 @if (!string.IsNullOrWhiteSpace(settings.LastPageUrl) && settings.ShowFirstAndLastControls) 2282 { 2283 @Render(new PaginationItem { Link = settings.LastPageUrl, Icon = settings.LastIcon }) 2284 } 2285 </ul> 2286 </div> 2287 } 2288 } 2289 2290 @helper RenderPaginationItem(PaginationItem settings) 2291 { 2292 if (settings.Icon == null) 2293 { 2294 settings.Icon = new Icon(); 2295 } 2296 2297 settings.Icon.Label = settings.Label; 2298 <li class="pager__btn dw-mod"> 2299 @if (settings.IsActive) 2300 { 2301 <span class="pager__num pager__num--current dw-mod"> 2302 @Render(settings.Icon) 2303 </span> 2304 } 2305 else 2306 { 2307 <a href="@settings.Link" class="pager__num dw-mod"> 2308 @Render(settings.Icon) 2309 </a> 2310 } 2311 </li> 2312 } 2313 2314 2315 @using Dynamicweb.Rapido.Blocks.Components.General 2316 @using Dynamicweb.Rapido.Blocks.Components.Ecommerce 2317 2318 2319 2320 2321 2322 @functions { 2323 public string GenerateRgba(string color, string opacity) 2324 { 2325 color = color.Replace("#", ""); 2326 if (color.Length == 6) 2327 { 2328 return "rgba(" + Convert.ToInt32(color.Substring(0, 2), 16) + ", " + Convert.ToInt32(color.Substring(2, 2), 16) + ", " + Convert.ToInt32(color.Substring(4, 2), 16) + ", " + opacity + ");"; 2329 } 2330 else 2331 { 2332 return Convert.ToInt16(color).ToString(); 2333 } 2334 } 2335 } 2336 2337 @{ 2338 string link = !string.IsNullOrEmpty(Model.Item.GetString("Link")) ? Model.Item.GetString("Link") : ""; 2339 string linkTarget = link.Contains("http") || link.Contains(".pdf") ? "_blank" : "_self"; 2340 } 2341 2342 @if (!string.IsNullOrEmpty(link)) 2343 { 2344 @*<a href="@link" target="@linkTarget" class="u-overlay">*@ 2345 <div class="paragraph-image-link-wrapper"> 2346 <a href="@link" target="@linkTarget"> 2347 @RenderTheContent() 2348 </a> 2349 </div> 2350 } 2351 else 2352 { 2353 @RenderTheContent() 2354 } 2355 2356 2357 @helper RenderTheContent() 2358 { 2359 string innerPadding = Model.Item.GetList("Padding") != null ? " padding-size-" + Model.Item.GetList("Padding").SelectedValue.ToLower() : ""; 2360 innerPadding += Model.Item.GetList("PaddingPosition") != null ? " padding-position-" + Model.Item.GetList("PaddingPosition").SelectedValue.ToLower() : ""; 2361 2362 if (!string.IsNullOrEmpty(Model.Item.GetString("Image"))) 2363 { 2364 int width = Model.Item.GetString("ImageWidth") != null ? Model.Item.GetInt32("ImageWidth") : 100; 2365 string styleSetting = Model.Item.GetString("ImageStyle") != null ? Model.Item.GetList("ImageStyle").SelectedValue : ""; 2366 ImageStyle style = ImageStyle.None; 2367 style = styleSetting == "ball" ? style = ImageStyle.Ball : style; 2368 style = styleSetting == "triangle" ? style = ImageStyle.Triangle : style; 2369 var file = Model.Item.GetFile("Image"); 2370 2371 Image image = new Image 2372 { 2373 Path = file, 2374 Style = style, 2375 CssClass = "background-image__cover", 2376 ImageDefault = new ImageSettings 2377 { 2378 Crop = 5, 2379 Width = width 2380 } 2381 }; 2382 2383 if (styleSetting == "square") 2384 { 2385 image.ImageDefault.Crop = 0; 2386 image.ImageDefault.Height = image.ImageDefault.Width; 2387 } 2388 2389 string imageAltText = ""; 2390 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageAltText"))) 2391 { 2392 imageAltText = Model.Item.GetString("ImageAltText"); 2393 } 2394 2395 string imageTitleText = ""; 2396 if (!string.IsNullOrWhiteSpace(Model.Item.GetString("ImageTitleText"))) 2397 { 2398 imageTitleText = Model.Item.GetString("ImageTitleText"); 2399 } 2400 2401 <div class="paragraph-image"> 2402 @RenderWithAltAndTitle(image, imageAltText, imageTitleText) 2403 </div> 2404 } 2405 2406 <div class="u-full-width u-padding-top dw-mod"> 2407 @if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) || !string.IsNullOrEmpty(Model.Item.GetString("Text"))) 2408 { 2409 <div class="u-margin-bottom--lg"> 2410 @if (!Model.Item.GetBoolean("HideTitle")) 2411 { 2412 @Render(new Heading { Title = Model.Item.GetString("Title"), Level = 2, CssClass = "u-no-margin" }) 2413 } 2414 @Render(new Text { Content = Model.Item.GetString("Text") }) 2415 </div> 2416 } 2417 </div> 2418 2419 if (!string.IsNullOrEmpty(Model.Item.GetItem("ButtonOne").GetString("Title"))) 2420 { 2421 <div class="buttons-collection u-block dw-mod"> 2422 @ParagraphButton(Model.Item.GetItem("ButtonOne")) 2423 </div> 2424 } 2425 } 2426 2427 2428 @helper ParagraphButton(ItemViewModel item) 2429 { 2430 if (item != null) 2431 { 2432 if (!string.IsNullOrEmpty(item.GetString("Title"))) 2433 { 2434 Button button = new Button 2435 { 2436 Title = item.GetString("Title"), 2437 Href = item.GetString("Link"), 2438 ButtonLayout = (ButtonLayout)System.Enum.Parse(typeof(ButtonLayout), char.ToUpper(item.GetList("Layout").SelectedValue[0]) + item.GetList("Layout").SelectedValue.Substring(1)) 2439 }; 2440 2441 if (!string.IsNullOrEmpty(item.GetString("Icon"))) 2442 { 2443 button.Icon = new Icon 2444 { 2445 CssClass = item.GetString("Icon") 2446 }; 2447 } 2448 2449 @Render(button) 2450 } 2451 } 2452 } 2453 2454 2455 2456 2457 2458

Design dit
eget rum


Benyt vores tegneprogram til at designe din egen personlige reol. Programmet fungerer til både IOS, Android samt online.

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

Bliv inspireret
til din egen
indretning


I vores kataloger kan du se vores produkter i alle detaljer. Her kan du også finde af inspiration til at skabe din egen personlige stil i dit hjem.

Find forhandler


Hammel Furniture forhandles over hele landet.
Find din nærmeste møbelbutik hvor du kan se og købe produkterne.