100% electric version of the popular Park Ranger 2155 utility machine.
Park Ranger 2155
High flexibility and manoeuvrability
An all-round machine with tailor-made attachments for all kinds of outdoor maintenance jobs.
25 HP | 19 attachments
Park Ranger 2155e
100 % electric - 0 % emission
An all-round electric-driven machine with high comfort and tailor-made attachments for all kinds of outdoor maintenance jobs.
23,5 kWh | 19 attachments
City Ranger 2260
Power and versatility all year round
A user-friendly solution for intense outdoor maintenance jobs - with change of attachment in just 1 minute!
33 HP | 18 attachments
City Ranger 3070
Performance on a bigger scale
A high-end compact utility machine for all-day maintenance of large outdoor areas.
74 HP | 10 attachments
“ At Egholm we test - again and again. Because only through thorough tests can we ensure the high quality that we are proud of.... „
Error executing template "Designs/Rapido/Paragraph/DynamicArticleListParagraph.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_3c22da0faf1f443a8fd01dfcd7599451.Execute() in D:\dynamicweb.net\Solutions\Novicell\egholm2019.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\Paragraph\DynamicArticleListParagraph.cshtml:line 10 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 System.IO 3 @using System.Web 4 @using Dynamicweb.Rapido.Blocks.Components 5 @using Dynamicweb.Rapido.Blocks.Components.Articles 6 @using Dynamicweb.Rapido.Blocks.Components.General 7 @using Dynamicweb.Rapido.Blocks 8 9 @{ 10 string blocksPageName = "ArticleListParagraph" + Pageview.CurrentParagraph.ID.ToString(); 11 BlocksPage articleListParagraph = BlocksPage.GetBlockPage(blocksPageName); 12 13 14 int pageId = Model.PageID; 15 bool showTitle = Model.Item.GetBoolean("ShowTitle"); 16 string dynamicListWidth = "12"; 17 string itemType = Model.Item.GetString("ItemTypeName") != null ? Model.Item.GetString("ItemTypeName") : "DynamicArticle"; 18 19 Block listPageContainer = new Block 20 { 21 Id = "ArticleListParagraphContainer", 22 SortId = 10, 23 Design = new Design 24 { 25 RenderType = RenderType.Row 26 }, 27 BlocksList = new List<Block> { 28 new Block { 29 Id = "ArticleListParagraphHeader", 30 SortId = 20, 31 Design = new Design 32 { 33 RenderType = RenderType.Column, 34 Size = "12" 35 }, 36 BlocksList = new List<Block> { 37 new Block { 38 Id = "ArticleListParagraphHeaderRow", 39 SortId = 10, 40 Design = new Design 41 { 42 RenderType = RenderType.Row, 43 HidePadding = true 44 } 45 } 46 } 47 } 48 } 49 }; 50 articleListParagraph.Add(listPageContainer); 51 52 if (showTitle) { 53 Block titleBlock = new Block 54 { 55 Id = "ArticleListTitle", 56 SortId = 10, 57 Component = new Heading { Title = Model.Item.GetString("Title"), Level = 2, CssClass = "u-no-margin" }, 58 Design = new Design 59 { 60 RenderType = RenderType.Column, 61 Size = "12" 62 } 63 }; 64 articleListParagraph.Add("ArticleListParagraphHeaderRow", titleBlock); 65 } 66 67 Block listBody = new Block 68 { 69 Id = "ArticleListParagraphBody", 70 SortId = 30, 71 Design = new Design 72 { 73 RenderType = RenderType.Column, 74 Size = dynamicListWidth 75 } 76 }; 77 articleListParagraph.Add("ArticleListParagraphContainer", listBody); 78 79 Block listBodyRow = new Block 80 { 81 Id = "ArticleListParagraphBodyRow", 82 SortId = 10, 83 Design = new Design 84 { 85 RenderType = RenderType.Row 86 } 87 }; 88 articleListParagraph.Add("ArticleListParagraphBody", listBodyRow); 89 90 Block listMain = new Block 91 { 92 Id = "ArticleListMain", 93 SortId = 20, 94 Component = new ArticleList { Template = "../ItemPublisher/List/DynamicList.cshtml", PageSize = Model.Item.GetInt32("ArticlesListSize"), SourcePage = Model.Item.GetItem("GetArticlesFrom").PageID.ToString(), SourceType = "Page", ItemType = itemType }, 95 Design = new Design 96 { 97 RenderType = RenderType.Column, 98 Size = "12", 99 HidePadding = true 100 } 101 }; 102 articleListParagraph.Add("ArticleListParagraphBodyRow", listMain); 103 } 104 105 @* Include the required Grid builder (Contains the methods @RenderBlockList and @RenderBlock) *@ 106 @using System.Text.RegularExpressions 107 @using System.Collections.Generic 108 @using System.Reflection 109 @using System.Web.UI.HtmlControls 110 @using Dynamicweb.Rapido.Blocks.Components 111 @using Dynamicweb.Rapido.Blocks.Components.Articles 112 @using Dynamicweb.Rapido.Blocks.Components.Documentation 113 @using Dynamicweb.Rapido.Blocks 114 115 116 @*--- START: Base block renderers ---*@ 117 118 @helper RenderBlockList(List<Block> blocks) 119 { 120 blocks = blocks.OrderBy(item => item.SortId).ToList(); 121 122 foreach (Block item in blocks) 123 { 124 <!-- START: @item.Id --> 125 126 if (item.Design == null) 127 { 128 @RenderBlock(item) 129 } 130 else if (item.Design.RenderType == RenderType.None) { 131 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 132 133 <div class="@cssClass dw-mod"> 134 @RenderBlock(item) 135 </div> 136 } 137 else if (item.Design.RenderType != RenderType.Hide) 138 { 139 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : ""; 140 141 if (!item.SkipRenderBlocksList) { 142 if (item.Design.RenderType == RenderType.Row) 143 { 144 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id"> 145 @RenderBlock(item) 146 </div> 147 } 148 149 if (item.Design.RenderType == RenderType.Column) 150 { 151 string hidePadding = item.Design.HidePadding ? "u-no-padding" : ""; 152 string size = item.Design.Size ?? "12"; 153 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size; 154 155 <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"> 156 @RenderBlock(item) 157 </div> 158 } 159 160 if (item.Design.RenderType == RenderType.Table) 161 { 162 <table class="table @cssClass dw-mod" id="Block__@item.Id"> 163 @RenderBlock(item) 164 </table> 165 } 166 167 if (item.Design.RenderType == RenderType.TableRow) 168 { 169 <tr class="@cssClass dw-mod" id="Block__@item.Id"> 170 @RenderBlock(item) 171 </tr> 172 } 173 174 if (item.Design.RenderType == RenderType.TableColumn) 175 { 176 <td class="@cssClass dw-mod" id="Block__@item.Id"> 177 @RenderBlock(item) 178 </td> 179 } 180 181 if (item.Design.RenderType == RenderType.CardHeader) 182 { 183 <div class="card-header @cssClass dw-mod"> 184 @RenderBlock(item) 185 </div> 186 } 187 188 if (item.Design.RenderType == RenderType.CardBody) 189 { 190 <div class="card @cssClass dw-mod"> 191 @RenderBlock(item) 192 </div> 193 } 194 195 if (item.Design.RenderType == RenderType.CardFooter) 196 { 197 <div class="card-footer @cssClass dw-mod"> 198 @RenderBlock(item) 199 </div> 200 } 201 } 202 else 203 { 204 @RenderBlock(item) 205 } 206 } 207 208 <!-- END: @item.Id --> 209 } 210 } 211 212 @helper RenderBlock(Block item) 213 { 214 if (item.Template != null) 215 { 216 @BlocksPage.RenderTemplate(item.Template) 217 } 218 219 if (item.Component != null) 220 { 221 string methodName = item.Component.HelperName; 222 dynamic[] methodParameters = new dynamic[1]; 223 methodParameters[0] = item.Component; 224 Type methodType = this.GetType(); 225 MethodInfo generalMethod = methodType.GetMethod(methodName); 226 227 if (generalMethod != null) { 228 @generalMethod.Invoke(this, methodParameters).ToString(); 229 } else { 230 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked"); 231 } 232 } 233 234 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList) 235 { 236 @RenderBlockList(item.BlocksList) 237 } 238 } 239 240 @*--- END: Base block renderers ---*@ 241 242 243 @* Include the components *@ 244 @using Dynamicweb.Rapido.Blocks.Components 245 @using Dynamicweb.Rapido.Blocks.Components.General 246 @using Dynamicweb.Rapido.Blocks 247 248 249 @* Components *@ 250 @using System.Reflection 251 @using Dynamicweb.Rapido.Blocks.Components.General 252 253 254 @* Component *@ 255 256 @helper RenderIcon(Icon settings) { 257 if (settings != null) 258 { 259 dynamic[] methodParameters = new dynamic[1]; 260 methodParameters[0] = settings; 261 MethodInfo customMethod = this.GetType().GetMethod("RenderIconCustom"); 262 263 if (customMethod != null) 264 { 265 @customMethod.Invoke(this, methodParameters).ToString(); 266 } else { 267 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : ""; 268 269 if (settings.Name != null) 270 { 271 if (String.IsNullOrEmpty(settings.Label)) { 272 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i> 273 } else { 274 if (settings.LabelPosition == IconLabelPosition.Before) { 275 <span>@settings.Label <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i></span> 276 } else { 277 <span><i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i> @settings.Label</span> 278 } 279 } 280 } 281 } 282 } 283 } 284 @using System.Reflection 285 @using Dynamicweb.Rapido.Blocks.Components.General 286 @using Dynamicweb.Rapido.Blocks.Components 287 288 289 @* Component *@ 290 291 @helper RenderButton(Button settings) { 292 dynamic[] methodParameters = new dynamic[1]; 293 methodParameters[0] = settings; 294 MethodInfo customMethod = this.GetType().GetMethod("RenderButtonCustom"); 295 296 if (customMethod != null) 297 { 298 @customMethod.Invoke(this, methodParameters).ToString(); 299 } 300 else 301 { 302 string target; 303 string disabled = settings.Disabled ? "disabled" : ""; 304 string buttonType = settings.ButtonType == ButtonType.Submit ? "submit" : "button"; 305 buttonType = settings.ButtonType == ButtonType.Reset ? "reset" : buttonType; 306 string buttonLayout = settings.ButtonLayout.ToString().ToLower(); 307 308 switch (settings.Target) 309 { 310 case LinkTargetType.Blank: 311 target = "_blank"; 312 break; 313 case LinkTargetType.Parent: 314 target = "_parent"; 315 break; 316 case LinkTargetType.Self: 317 target = "_self"; 318 break; 319 case LinkTargetType.Top: 320 target = "_top"; 321 break; 322 default: 323 target = "_self"; 324 break; 325 } 326 327 string onClickAction = settings.OnClick != null ? settings.OnClick : ""; 328 string noOpener = target == "_blank" ? "rel=\"noopener\"" : ""; 329 330 if (!String.IsNullOrEmpty(settings.ConfirmText)) 331 { 332 string modalId = settings.Id; 333 @RenderConfirmDialog(settings); 334 onClickAction = "document.getElementById('" + modalId + "ModalTrigger').checked = true"; 335 } 336 337 if (settings.Icon != null) 338 { 339 if (settings.IconPosition == null) { 340 settings.Icon.LabelPosition = IconLabelPosition.After; 341 } else { 342 settings.Icon.LabelPosition = settings.IconPosition == IconPosition.Before ? IconLabelPosition.After : IconLabelPosition.Before; 343 } 344 if (settings.Icon.Label == null) { 345 settings.Icon.Label = settings.Title; 346 } 347 } 348 string content = settings.Icon == null ? settings.Title : Convert.ToString(RenderIcon(settings.Icon)); 349 350 if (!String.IsNullOrEmpty(settings.Link) && String.IsNullOrEmpty(settings.ConfirmText)) 351 { 352 <a href="@settings.Link" target="@target" @noOpener class="btn btn--@buttonLayout @settings.CssClass @disabled dw-mod" onclick="@onClickAction" @ComponentMethods.AddAttributes(settings.ExtraAttributes) @disabled>@content</a> 353 } 354 else 355 { 356 <button type="@buttonType" class="btn btn--@buttonLayout @settings.CssClass @disabled dw-mod" onclick="@onClickAction" @ComponentMethods.AddAttributes(settings.ExtraAttributes) @disabled>@content</button> 357 } 358 } 359 } 360 361 362 @helper RenderConfirmDialog(Button settings) { 363 dynamic[] methodParameters = new dynamic[1]; 364 methodParameters[0] = settings; 365 MethodInfo customMethod = this.GetType().GetMethod("RenderConfirmDialogCustom"); 366 367 if (customMethod != null) 368 { 369 @customMethod.Invoke(this, methodParameters).ToString(); 370 } else { 371 string modalTriggerId = settings.Id + "ModalTrigger"; 372 373 <!-- Trigger for the confirm modal --> 374 <input type="checkbox" id="@modalTriggerId" class="modal-trigger" /> 375 376 <!-- Login modal --> 377 <div class="modal-container"> 378 <label for="@modalTriggerId" class="modal-overlay"></label> 379 <div class="modal modal--xs"> 380 <div class="modal__header"> 381 <h2>@settings.ConfirmText</h2> 382 </div> 383 <div class="modal__body"> 384 @RenderButton(new Button { Title = Translate("OK"), ButtonLayout = ButtonLayout.Primary, OnClick = settings.OnClick, CssClass = "u-full-width", Link = settings.Link }) 385 </div> 386 </div> 387 </div> 388 } 389 } 390 @using System.Reflection 391 @using Dynamicweb.Rapido.Blocks.Components 392 @using Dynamicweb.Rapido.Blocks.Components.General 393 @using Dynamicweb.Rapido.Blocks 394 395 396 @* Component *@ 397 398 @helper RenderRating(Rating settings) 399 { 400 dynamic[] methodParameters = new dynamic[1]; 401 methodParameters[0] = settings; 402 MethodInfo customMethod = this.GetType().GetMethod("RenderRatingCustom"); 403 404 if (customMethod != null) 405 { 406 @customMethod.Invoke(this, methodParameters).ToString(); 407 } else { 408 if (settings.Score > 0) 409 { 410 int rating = settings.Score; 411 string iconType = "fa-star"; 412 413 switch (settings.Type.ToString()) { 414 case "Stars": 415 iconType = "fa-star"; 416 break; 417 case "Hearts": 418 iconType = "fa-heart"; 419 break; 420 case "Lemons": 421 iconType = "fa-lemon"; 422 break; 423 case "Bombs": 424 iconType = "fa-bomb"; 425 break; 426 } 427 428 <div class="u-ta-right"> 429 @for (int i = 0; i < settings.OutOf; i++) 430 { 431 <i class="@(rating > i ? "fas" : "far") @iconType"></i> 432 } 433 </div> 434 } 435 } 436 } 437 @using System.Reflection 438 @using Dynamicweb.Rapido.Blocks.Components.General 439 @using Dynamicweb.Rapido.Blocks.Components 440 441 442 @* Component *@ 443 444 @helper RenderFieldListOption(FieldListOption settings) { 445 dynamic[] methodParameters = new dynamic[1]; 446 methodParameters[0] = settings; 447 MethodInfo customMethod = this.GetType().GetMethod("RenderFieldListOptionCustom"); 448 449 if (customMethod != null) 450 { 451 @customMethod.Invoke(this, methodParameters).ToString(); 452 } else { 453 string disabled = settings.Disabled ? "disabled" : ""; 454 string selected = settings.Checked ? "checked" : ""; 455 456 if (settings.Type.ToString() == "RadioButton") 457 { 458 <input class="form__control @disabled dw-mod" onchange="@settings.OnChange" onclick="@settings.OnClick" type="radio" name="@settings.Name" id="@settings.Id" value="@settings.Value" @selected @disabled @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 459 <label for="@settings.Id" class="u-inline @disabled dw-mod">@settings.Label</label> 460 @RenderNotificationMessage(new NotificationMessage { Message = settings.ErrorMessage }) 461 } 462 463 if (settings.Type.ToString() == "Checkbox") 464 { 465 @RenderCheckboxField(settings) 466 } 467 468 if (settings.Type.ToString() == "SelectOption") 469 { 470 <option value="@settings.Value" id="@settings.Id" onclick="@settings.OnClick" class="@disabled" @disabled @selected @ComponentMethods.AddAttributes(settings.ExtraAttributes) >@settings.Name</option> 471 @RenderNotificationMessage(new NotificationMessage { Message = settings.ErrorMessage }) 472 } 473 } 474 } 475 476 @using System.Reflection 477 @using Dynamicweb.Rapido.Blocks.Components.General 478 @using Dynamicweb.Rapido.Blocks.Components 479 480 481 @* Component *@ 482 483 @helper RenderNavigation(Navigation settings) { 484 dynamic[] methodParameters = new dynamic[1]; 485 methodParameters[0] = settings; 486 MethodInfo customMethod = this.GetType().GetMethod("RenderNavigationCustom"); 487 488 if (customMethod != null) 489 { 490 @customMethod.Invoke(this, methodParameters).ToString(); 491 } else { 492 @RenderNavigation(new 493 { 494 id = settings.Id, 495 cssclass = settings.CssClass, 496 startLevel = settings.StartLevel, 497 endlevel = settings.EndLevel, 498 expandmode = settings.Expandmode, 499 template = settings.Template 500 }) 501 } 502 } 503 @using System.Reflection 504 @using Dynamicweb.Rapido.Blocks.Components.General 505 @using Dynamicweb.Rapido.Blocks.Components 506 507 508 @* Component *@ 509 510 @helper RenderBreadcrumbNavigation(BreadcrumbNavigation settings) { 511 dynamic[] methodParameters = new dynamic[1]; 512 methodParameters[0] = settings; 513 MethodInfo customMethod = this.GetType().GetMethod("RenderBreadcrumbNavigationCustom"); 514 515 if (customMethod != null) 516 { 517 @customMethod.Invoke(this, methodParameters).ToString(); 518 } else { 519 settings.Id = String.IsNullOrEmpty(settings.Id) ? "breadcrumb" : settings.Id; 520 settings.Template = String.IsNullOrEmpty(settings.Template) ? "Breadcrumb.xslt" : settings.Template; 521 settings.StartLevel = settings.StartLevel == 0 ? 1 : settings.StartLevel; 522 settings.EndLevel = settings.EndLevel == 10 ? 1 : settings.EndLevel; 523 settings.Expandmode = String.IsNullOrEmpty(settings.Expandmode) ? "all" : settings.Expandmode; 524 525 @RenderNavigation(settings) 526 } 527 } 528 @using System.Reflection 529 @using Dynamicweb.Rapido.Blocks.Components.General 530 531 532 @* Component *@ 533 534 @helper RenderHeading(Heading settings) { 535 dynamic[] methodParameters = new dynamic[1]; 536 methodParameters[0] = settings; 537 MethodInfo customMethod = this.GetType().GetMethod("RenderHeadingCustom"); 538 539 if (customMethod != null) 540 { 541 @customMethod.Invoke(this, methodParameters).ToString(); 542 } else { 543 string startTag = "<h" + settings.Level.ToString() + " class=\"" + settings.CssClass + "\">"; 544 string endTag = "</h" + settings.Level.ToString() + "\">"; 545 546 if (settings.Icon != null) 547 { 548 if (settings.IconPosition == null) { 549 settings.Icon.LabelPosition = IconLabelPosition.After; 550 } else { 551 settings.Icon.LabelPosition = settings.IconPosition == IconPosition.Before ? IconLabelPosition.After : IconLabelPosition.Before; 552 } 553 if (settings.Icon.Label == null) { 554 settings.Icon.Label = settings.Title; 555 } 556 557 @startTag@RenderIcon(settings.Icon)@endTag 558 } else { 559 @startTag@settings.Title@endTag 560 } 561 } 562 } 563 @using System.Reflection 564 @using Dynamicweb.Rapido.Blocks.Components 565 @using Dynamicweb.Rapido.Blocks.Components.General 566 @using Dynamicweb.Rapido.Blocks 567 568 569 @* Component *@ 570 571 @helper RenderImage(Image settings) 572 { 573 if (settings.Path != null) 574 { 575 dynamic[] methodParameters = new dynamic[1]; 576 methodParameters[0] = settings; 577 MethodInfo customMethod = this.GetType().GetMethod("RenderImageCustom"); 578 579 if (customMethod != null) 580 { 581 @customMethod.Invoke(this, methodParameters).ToString(); 582 } else { 583 <div> 584 @if (settings.Link != null) 585 { 586 <a href="@settings.Link"> 587 588 @RenderTheImage(settings); 589 </a> 590 } 591 else 592 { 593 @RenderTheImage(settings); 594 } 595 </div> 596 } 597 } 598 } 599 600 @functions { 601 string getImagePathFromSettings(ImageSettings settings) 602 { 603 string result = ""; 604 605 if (settings != null) 606 { 607 result += settings.Width != 0 ? "Width=" + settings.Width + "&" : ""; 608 result += settings.Height != 0 ? "Height=" + settings.Height + "&" : ""; 609 result += "Crop=" + settings.Crop + "&"; 610 result += "Compression=" + 99 + "&"; 611 result += "DoNotUpscale=" + settings.DoNotUpscale.ToString() + "&"; 612 result += "FillCanvas=" + settings.FillCanvas.ToString() + "&"; 613 } 614 615 return result; 616 } 617 } 618 619 @helper RenderTheImage(Image settings) 620 { 621 if (settings != null) 622 { 623 dynamic[] methodParameters = new dynamic[1]; 624 methodParameters[0] = settings; 625 MethodInfo customMethod = this.GetType().GetMethod("RenderTheImageCustom"); 626 627 if (customMethod != null) 628 { 629 @customMethod.Invoke(this, methodParameters).ToString(); 630 } else { 631 string placeholderImage = "/Files/Images/placeholder.gif"; 632 string imageEngine = "/Admin/Public/GetImage.ashx?"; 633 634 string imageStyle = ""; 635 636 switch (settings.Style) 637 { 638 case ImageStyle.Ball: 639 imageStyle = "grid__cell-img--ball"; 640 break; 641 } 642 643 if (settings.Style == ImageStyle.Ball || settings.Style == ImageStyle.Circle) 644 { 645 if (settings.ImageDefault != null) 646 { 647 settings.ImageDefault.Height = settings.ImageDefault.Width; 648 } 649 if (settings.ImageMedium != null) 650 { 651 settings.ImageMedium.Height = settings.ImageMedium.Width; 652 } 653 if (settings.ImageSmall != null) 654 { 655 settings.ImageSmall.Height = settings.ImageSmall.Width; 656 } 657 } 658 659 string defaultImage = imageEngine; 660 string imageSmall = ""; 661 string imageMedium = ""; 662 663 if (settings.DisableImageEngine) { 664 defaultImage = settings.Path; 665 } else { 666 if (settings.ImageDefault != null) 667 { 668 defaultImage += getImagePathFromSettings(settings.ImageDefault); 669 670 if (settings.Path.GetType() != typeof(string)) 671 { 672 defaultImage += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 673 defaultImage += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 674 } 675 else 676 { 677 defaultImage += settings.Path != null ? "Image=" + settings.Path : ""; 678 } 679 } 680 681 if (settings.ImageSmall != null) 682 { 683 imageSmall = "data-src-small=\"" + imageEngine; 684 imageSmall += getImagePathFromSettings(settings.ImageSmall); 685 686 if (settings.Path.GetType() != typeof(string)) 687 { 688 imageSmall += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 689 imageSmall += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 690 } 691 else 692 { 693 imageSmall += settings.Path != null ? "Image=" + settings.Path : ""; 694 } 695 696 imageSmall += "\""; 697 } 698 699 if (settings.ImageMedium != null) 700 { 701 imageMedium = "data-src-medium=\"" + imageEngine; 702 imageMedium += getImagePathFromSettings(settings.ImageMedium); 703 704 if (settings.Path.GetType() != typeof(string)) 705 { 706 imageMedium += settings.Path != null ? "Image=" + settings.Path.PathUrlEncoded : ""; 707 imageMedium += settings.Path != null ? "&" + settings.Path.GetFocalPointParameters() : ""; 708 } 709 else 710 { 711 imageMedium += settings.Path != null ? "Image=" + settings.Path : ""; 712 } 713 714 imageMedium += "\""; 715 } 716 } 717 718 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 719 if (!String.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 720 if (!String.IsNullOrEmpty(settings.Title)) { optionalAttributes.Add("alt", settings.Title); } 721 722 if (settings.DisableLazyLoad) { 723 <img class="grid__cell-img @imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 724 } else { 725 <img class="grid__cell-img b-lazy @imageStyle @settings.CssClass dw-mod" src="@placeholderImage" data-src="@defaultImage" @imageSmall @imageMedium @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 726 } 727 728 if (settings.Caption != null) 729 { 730 <span class="image-caption dw-mod">@settings.Caption</span> 731 } 732 } 733 } 734 } 735 @using System.Reflection 736 @using Dynamicweb.Rapido.Blocks.Components.General 737 @using Dynamicweb.Rapido.Blocks.Components 738 739 740 @* Component *@ 741 742 @helper RenderTextField(TextField settings) { 743 dynamic[] methodParameters = new dynamic[1]; 744 methodParameters[0] = settings; 745 MethodInfo customMethod = this.GetType().GetMethod("RenderTextFieldCustom"); 746 747 if (customMethod != null) 748 { 749 @customMethod.Invoke(this, methodParameters).ToString(); 750 } else { 751 int maxLength = settings.MaxLength != 0 ? settings.MaxLength : 524288; 752 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 753 if (settings.Type == TextFieldType.Password) { optionalAttributes.Add("autocomplete", "off"); }; 754 if (!String.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick.ToString()); } 755 if (!String.IsNullOrEmpty(settings.Placeholder)) { optionalAttributes.Add("placeholder", settings.Placeholder); } 756 if (settings.Disabled) { optionalAttributes.Add("disabled", settings.Disabled.ToString()); } 757 if (settings.Required) { optionalAttributes.Add("required", settings.Required.ToString()); } 758 if (settings.MaxLength != 0) { optionalAttributes.Add("maxlength", settings.MaxLength.ToString()); } 759 760 <div class="form__field-group dw-mod"> 761 @if (!String.IsNullOrEmpty(settings.Label)) 762 { 763 <label for="@settings.Id">@settings.Label</label> 764 } 765 766 <input type="@settings.Type" class="u-full-width @settings.CssClass dw-mod" name="@settings.Id" id="@(settings.Id)" value="@settings.Value" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 767 768 @RenderNotificationMessage(new NotificationMessage { Message = settings.ErrorMessage }) 769 </div> 770 } 771 } 772 @using System.Reflection 773 @using Dynamicweb.Rapido.Blocks.Components.General 774 @using Dynamicweb.Rapido.Blocks.Components 775 776 777 @* Component *@ 778 779 @helper RenderNumberField(NumberField settings) { 780 dynamic[] methodParameters = new dynamic[1]; 781 methodParameters[0] = settings; 782 MethodInfo customMethod = this.GetType().GetMethod("RenderNumberFieldCustom"); 783 784 if (customMethod != null) 785 { 786 @customMethod.Invoke(this, methodParameters).ToString(); 787 } else { 788 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 789 if (!String.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick.ToString()); } 790 if (settings.Disabled) { optionalAttributes.Add("disabled", settings.Disabled.ToString()); } 791 if (settings.Required) { optionalAttributes.Add("required", settings.Required.ToString()); } 792 if (settings.Max != 0) { optionalAttributes.Add("max", settings.Max.ToString()); } 793 if (settings.Min != 0) { optionalAttributes.Add("min", settings.Min.ToString()); } 794 if (settings.Step != 0) { optionalAttributes.Add("step", settings.Step.ToString()); } 795 796 <div class="form__field-group dw-mod"> 797 @if (!String.IsNullOrEmpty(settings.Label)) 798 { 799 <div> 800 <label for="@settings.Id">@settings.Label</label> 801 </div> 802 } 803 804 <input type="Number" class="u-w70px @settings.CssClass dw-mod" name="@settings.Id" id="@(settings.Id)" value="@settings.Value" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 805 806 @RenderNotificationMessage(new NotificationMessage { Message = settings.ErrorMessage }) 807 </div> 808 } 809 } 810 @using System.Reflection 811 @using Dynamicweb.Rapido.Blocks.Components.General 812 @using Dynamicweb.Rapido.Blocks.Components 813 814 815 @* Component *@ 816 817 @helper RenderTextareaField(TextareaField settings) { 818 dynamic[] methodParameters = new dynamic[1]; 819 methodParameters[0] = settings; 820 MethodInfo customMethod = this.GetType().GetMethod("RenderTextareaFieldCustom"); 821 822 if (customMethod != null) 823 { 824 @customMethod.Invoke(this, methodParameters).ToString(); 825 } else { 826 int maxLength = settings.MaxLength != 0 ? settings.MaxLength : 524288; 827 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 828 if (!String.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick.ToString()); } 829 if (!String.IsNullOrEmpty(settings.Placeholder)) { optionalAttributes.Add("placeholder", settings.Placeholder); } 830 if (settings.Disabled) { optionalAttributes.Add("disabled", settings.Disabled.ToString()); } 831 if (settings.Required) { optionalAttributes.Add("required", settings.Required.ToString()); } 832 if (settings.MaxLength != 0) { optionalAttributes.Add("maxlength", settings.MaxLength.ToString()); } 833 if (settings.Rows != 0) { optionalAttributes.Add("rows", settings.Rows.ToString()); } 834 835 <div class="form__field-group dw-mod"> 836 @if (!String.IsNullOrEmpty(@settings.Label)) 837 { 838 <label for="@settings.Id">@settings.Label</label> 839 } 840 841 <textarea class="u-full-width @settings.CssClass dw-mod" name="@settings.Id" id="@(settings.Id)" value="@settings.Value" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)></textarea> 842 843 @RenderNotificationMessage(new NotificationMessage { Message = settings.ErrorMessage }) 844 </div> 845 } 846 } 847 @using System.Reflection 848 @using Dynamicweb.Rapido.Blocks.Components.General 849 @using Dynamicweb.Rapido.Blocks.Components 850 851 852 @* Component *@ 853 854 @helper RenderHiddenField(HiddenField settings) { 855 dynamic[] methodParameters = new dynamic[1]; 856 methodParameters[0] = settings; 857 MethodInfo customMethod = this.GetType().GetMethod(settings.HelperName + "Custom"); 858 859 if (customMethod != null) 860 { 861 @customMethod.Invoke(this, methodParameters).ToString(); 862 } else { 863 <input type="hidden" name="@settings.Id" id="@(settings.Id)" value="@settings.Value" @ComponentMethods.AddAttributes(settings.ExtraAttributes)/> 864 } 865 } 866 @using System.Reflection 867 @using Dynamicweb.Rapido.Blocks.Components.General 868 @using Dynamicweb.Rapido.Blocks.Components 869 870 871 @* Component *@ 872 873 @helper RenderCheckboxField(dynamic settings) { 874 dynamic[] methodParameters = new dynamic[1]; 875 methodParameters[0] = settings; 876 MethodInfo customMethod = this.GetType().GetMethod("RenderCheckboxFieldCustom"); 877 878 if (customMethod != null) 879 { 880 @customMethod.Invoke(this, methodParameters).ToString(); 881 } else { 882 settings.Type = FieldListOptionType.Checkbox; 883 string disabled = settings.Disabled ? "disabled" : ""; 884 string required = settings.Required ? "required" : ""; 885 string checkedString = settings.Checked == true ? "checked" : ""; 886 string id = settings.Id != null ? settings.Id : settings.Label.Replace(" ", ""); 887 888 <div class="form__field-group dw-mod"> 889 <input type="checkbox" class="form__control @settings.CssClass @disabled dw-mod" name="@settings.Name" id="@id" value="@settings.Value" onclick="@settings.OnClick" @disabled @required @checkedString @ComponentMethods.AddAttributes(settings.ExtraAttributes) /> 890 891 @if (!String.IsNullOrEmpty(settings.Label)) 892 { 893 <label for="@id" class="@disabled dw-mod">@settings.Label</label> 894 } 895 896 @RenderNotificationMessage(new NotificationMessage { Message = settings.ErrorMessage }) 897 </div> 898 } 899 } 900 @using System.Reflection 901 @using Dynamicweb.Rapido.Blocks.Components.General 902 @using Dynamicweb.Rapido.Blocks.Components 903 904 905 @* Component *@ 906 907 @helper RenderCheckboxListField(CheckboxListField settings) { 908 dynamic[] methodParameters = new dynamic[1]; 909 methodParameters[0] = settings; 910 MethodInfo customMethod = this.GetType().GetMethod("RenderCheckboxListFieldCustom"); 911 912 if (customMethod != null) 913 { 914 @customMethod.Invoke(this, methodParameters).ToString(); 915 } else { 916 string disabled = settings.Disabled ? "disabled" : ""; 917 918 <div class="form__field-group @settings.CssClass u-margin-bottom @disabled dw-mod" @disabled @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 919 @if (!String.IsNullOrEmpty(settings.Label)) 920 { 921 <div class="u-bold u-margin-bottom">@settings.Label</div> 922 } 923 924 @foreach (var item in settings.Options) 925 { 926 item.Type = FieldListOptionType.Checkbox; 927 @RenderFieldListOption(item) 928 } 929 930 @RenderNotificationMessage(new NotificationMessage { Message = settings.ErrorMessage }) 931 </div> 932 } 933 } 934 935 @using System.Reflection 936 @using Dynamicweb.Rapido.Blocks.Components.General 937 @using Dynamicweb.Rapido.Blocks.Components 938 939 940 @* Component *@ 941 942 @helper RenderSelectField(SelectField settings) { 943 dynamic[] methodParameters = new dynamic[1]; 944 methodParameters[0] = settings; 945 MethodInfo customMethod = this.GetType().GetMethod("RenderSelectFieldCustom"); 946 947 if (customMethod != null) 948 { 949 @customMethod.Invoke(this, methodParameters).ToString(); 950 } else { 951 string disabled = settings.Disabled ? "disabled" : ""; 952 string required = settings.Required ? "required" : ""; 953 954 if (settings.Default != null) 955 { 956 settings.Default.Type = FieldListOptionType.SelectOption; 957 } 958 959 <div class="form__field-group u-full-width dw-mod"> 960 @if (!String.IsNullOrEmpty(settings.Label)) 961 { 962 <label for="@settings.Id">@settings.Label</label> 963 } 964 965 <div class="form__field-combi u-no-margin dw-mod"> 966 <select id="@settings.Id" class="u-full-width @settings.CssClass dw-mod" onchange="@settings.OnChange" @ComponentMethods.AddAttributes(settings.ExtraAttributes) > 967 @if (settings.Default.Value != null) 968 { 969 @RenderFieldListOption(settings.Default) 970 } 971 972 @foreach (var item in settings.Options) 973 { 974 item.Type = FieldListOptionType.SelectOption; 975 @RenderFieldListOption(item) 976 } 977 </select> 978 @if (settings.ActionButton.Link != null || settings.ActionButton.OnClick != null) { 979 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 980 @RenderButton(settings.ActionButton); 981 } 982 </div> 983 984 @RenderNotificationMessage(new NotificationMessage { Message = settings.ErrorMessage }) 985 </div> 986 } 987 } 988 @using System.Reflection 989 @using Dynamicweb.Rapido.Blocks.Components.General 990 @using Dynamicweb.Rapido.Blocks.Components 991 992 993 @* Component *@ 994 995 @helper RenderRadioButtonField(RadioButtonField settings) { 996 dynamic[] methodParameters = new dynamic[1]; 997 methodParameters[0] = settings; 998 MethodInfo customMethod = this.GetType().GetMethod("RenderRadioButtonFieldCustom"); 999 1000 if (customMethod != null) 1001 { 1002 @customMethod.Invoke(this, methodParameters).ToString(); 1003 } else { 1004 string disabled = settings.Disabled ? "disabled" : ""; 1005 1006 <div class="form__field-group @settings.CssClass u-margin-bottom @disabled" @disabled @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1007 @if (!String.IsNullOrEmpty(settings.Label)) 1008 { 1009 <div class="u-bold u-margin-bottom">@settings.Label</div> 1010 } 1011 1012 @foreach (var item in settings.Options) 1013 { 1014 item.Type = FieldListOptionType.RadioButton; 1015 1016 if (settings.Name != null) 1017 { 1018 item.Name = settings.Name; 1019 } 1020 1021 if (settings.RenderOptionsInline) 1022 { 1023 @RenderFieldListOption(item) 1024 } 1025 else 1026 { 1027 <div> 1028 @RenderFieldListOption(item) 1029 </div> 1030 } 1031 } 1032 1033 @RenderNotificationMessage(new NotificationMessage { Message = settings.ErrorMessage }) 1034 </div> 1035 } 1036 } 1037 @using System.Reflection 1038 @using Dynamicweb.Rapido.Blocks.Components.General 1039 @using Dynamicweb.Rapido.Blocks.Components 1040 1041 1042 @* Component *@ 1043 1044 @helper RenderNotificationMessage(NotificationMessage settings) { 1045 dynamic[] methodParameters = new dynamic[1]; 1046 methodParameters[0] = settings; 1047 MethodInfo customMethod = this.GetType().GetMethod("RenderNotificationMessageCustom"); 1048 1049 if (customMethod != null) 1050 { 1051 @customMethod.Invoke(this, methodParameters).ToString(); 1052 } else { 1053 if (!String.IsNullOrEmpty(settings.Message)) 1054 { 1055 string messageTypeClass = settings.MessageType.ToString().ToLower(); 1056 <div class="field-@messageTypeClass @settings.CssClass u-full-width dw-mod">@settings.Message</div> 1057 } 1058 } 1059 } 1060 @using System.Reflection 1061 @using Dynamicweb.Rapido.Blocks.Components.General 1062 1063 1064 @* Component *@ 1065 1066 @helper RenderHandlebarsRoot(HandlebarsRoot settings) { 1067 dynamic[] methodParameters = new dynamic[1]; 1068 methodParameters[0] = settings; 1069 MethodInfo customMethod = this.GetType().GetMethod("RenderHandlebarsRootCustom"); 1070 1071 if (customMethod != null) 1072 { 1073 @customMethod.Invoke(this, methodParameters).ToString(); 1074 } else { 1075 string preRender = !String.IsNullOrEmpty(settings.PreRenderScriptTemplate) ? "data-pre-render-template=\"" + settings.PreRenderScriptTemplate + "\"" : ""; 1076 1077 <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> 1078 @if (settings.SubBlocks != null) { 1079 @RenderBlockList(settings.SubBlocks) 1080 } 1081 </div> 1082 } 1083 } 1084 @using System.Reflection 1085 @using Dynamicweb.Rapido.Blocks.Components.General 1086 @using Dynamicweb.Rapido.Blocks.Components 1087 @using System.Text.RegularExpressions 1088 1089 1090 @* Component *@ 1091 1092 @helper RenderSticker(Sticker settings) { 1093 dynamic[] methodParameters = new dynamic[1]; 1094 methodParameters[0] = settings; 1095 MethodInfo customMethod = this.GetType().GetMethod("RenderStickerCustom"); 1096 1097 if (customMethod != null) 1098 { 1099 @customMethod.Invoke(this, methodParameters).ToString(); 1100 } 1101 else 1102 { 1103 if (!String.IsNullOrEmpty(settings.Title)) { 1104 string size = settings.Size.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Size.ToString().ToLower() : ""; 1105 string style = settings.Style.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Style.ToString().ToLower() : ""; 1106 1107 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 1108 if (!String.IsNullOrEmpty(settings.Color) || !String.IsNullOrEmpty(settings.BackgroundColor)) { 1109 string styleTag = !String.IsNullOrEmpty(settings.Color) ? "color: " + settings.Color + "; " : ""; 1110 styleTag += !String.IsNullOrEmpty(settings.BackgroundColor) ? "background-color: " + settings.BackgroundColor + "; " : ""; 1111 optionalAttributes.Add("style", styleTag); 1112 } 1113 1114 <div class="stickers-container__tag @size @style @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Title</div> 1115 } 1116 } 1117 } 1118 1119 @using System.Reflection 1120 @using Dynamicweb.Rapido.Blocks.Components.General 1121 @using Dynamicweb.Rapido.Blocks.Components 1122 1123 1124 @* Component *@ 1125 1126 @helper RenderStickersCollection(StickersCollection settings) { 1127 dynamic[] methodParameters = new dynamic[1]; 1128 methodParameters[0] = settings; 1129 MethodInfo customMethod = this.GetType().GetMethod("RenderStickersCollectionCustom"); 1130 1131 if (customMethod != null) 1132 { 1133 @customMethod.Invoke(this, methodParameters).ToString(); 1134 } 1135 else 1136 { 1137 if (settings.Stickers.Count > 0) { 1138 string position = settings.Position != null ? "" + "stickers-container--" + Regex.Replace(settings.Position.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower() : ""; 1139 1140 <div class="stickers-container @position @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1141 @foreach (Sticker sticker in settings.Stickers) 1142 { 1143 @RenderSticker(sticker) 1144 } 1145 </div> 1146 } 1147 } 1148 } 1149 1150 @using System.Reflection 1151 @using Dynamicweb.Rapido.Blocks.Components.General 1152 @using Dynamicweb.Rapido.Blocks.Components 1153 1154 1155 1156 @* Component *@ 1157 1158 @helper RenderField(Field settings) { 1159 dynamic[] methodParameters = new dynamic[1]; 1160 methodParameters[0] = settings; 1161 MethodInfo customMethod = this.GetType().GetMethod("RenderFieldCustom"); 1162 1163 if (customMethod != null) 1164 { 1165 @customMethod.Invoke(this, methodParameters).ToString(); 1166 } else { 1167 switch (settings.FieldType) 1168 { 1169 case FieldType.Checkbox: 1170 CheckboxField checkbox = new CheckboxField 1171 { 1172 Label = settings.Label, 1173 Id = settings.Id, 1174 Name = settings.Label.Replace(" ", ""), 1175 Value = settings.Value, 1176 Checked = Convert.ToBoolean(settings.Placeholder), 1177 OnClick = settings.OnClick, 1178 Disabled = settings.Disabled, 1179 Required = settings.Required, 1180 CssClass = settings.CssClass, 1181 ExtraAttributes = settings.ExtraAttributes, 1182 ErrorMessage = settings.ErrorMessage 1183 }; 1184 1185 @RenderCheckboxField(checkbox) 1186 break; 1187 case FieldType.Email: 1188 TextField emailField = new TextField 1189 { 1190 Label = settings.Label != null ? settings.Label : Translate("Email"), 1191 Id = settings.Id, 1192 Value = settings.Value, 1193 OnClick = settings.OnClick, 1194 Disabled = settings.Disabled, 1195 Required = settings.Required, 1196 CssClass = settings.CssClass, 1197 ExtraAttributes = settings.ExtraAttributes, 1198 ErrorMessage = settings.ErrorMessage, 1199 Placeholder = settings.Placeholder, 1200 Type = TextFieldType.Email 1201 }; 1202 1203 @RenderTextField(emailField) 1204 break; 1205 case FieldType.Hidden: 1206 HiddenField hiddenField = new HiddenField 1207 { 1208 Label = settings.Label, 1209 Id = settings.Id, 1210 Value = settings.Value, 1211 Disabled = settings.Disabled, 1212 Required = settings.Required, 1213 CssClass = settings.CssClass, 1214 ExtraAttributes = settings.ExtraAttributes, 1215 ErrorMessage = settings.ErrorMessage 1216 }; 1217 1218 @RenderHiddenField(hiddenField) 1219 break; 1220 case FieldType.Integer: 1221 NumberField numberField = new NumberField 1222 { 1223 Label = settings.Label, 1224 Id = settings.Id, 1225 Value = settings.Value.GetType() == typeof(int) ? Convert.ToInt32(settings.Value) : 1, 1226 OnClick = settings.OnClick, 1227 Disabled = settings.Disabled, 1228 Required = settings.Required, 1229 CssClass = settings.CssClass, 1230 ExtraAttributes = settings.ExtraAttributes, 1231 ErrorMessage = settings.ErrorMessage, 1232 Step = 1 1233 }; 1234 1235 @RenderNumberField(numberField) 1236 break; 1237 case FieldType.Password: 1238 TextField passwordField = new TextField 1239 { 1240 Label = settings.Label != null ? settings.Label : Translate("Password"), 1241 Id = settings.Id, 1242 Value = settings.Value, 1243 OnClick = settings.OnClick, 1244 Disabled = settings.Disabled, 1245 Required = settings.Required, 1246 CssClass = settings.CssClass, 1247 ExtraAttributes = settings.ExtraAttributes, 1248 ErrorMessage = settings.ErrorMessage, 1249 Placeholder = settings.Placeholder, 1250 Type = TextFieldType.Password 1251 }; 1252 1253 @RenderTextField(passwordField) 1254 break; 1255 case FieldType.Reset: 1256 Button resetField = new Button 1257 { 1258 Title = settings.Label != null ? settings.Label : Translate("Reset"), 1259 Id = settings.Id, 1260 OnClick = settings.OnClick, 1261 Disabled = settings.Disabled, 1262 CssClass = settings.CssClass, 1263 ExtraAttributes = settings.ExtraAttributes, 1264 ButtonLayout = ButtonLayout.Secondary, 1265 ButtonType = ButtonType.Reset 1266 }; 1267 1268 @RenderButton(resetField) 1269 break; 1270 case FieldType.Submit: 1271 Button submitField = new Button 1272 { 1273 Title = settings.Label != null ? settings.Label : Translate("Submit"), 1274 Id = settings.Id, 1275 OnClick = settings.OnClick, 1276 Disabled = settings.Disabled, 1277 CssClass = settings.CssClass, 1278 ExtraAttributes = settings.ExtraAttributes, 1279 ButtonLayout = ButtonLayout.Primary, 1280 ButtonType = ButtonType.Submit 1281 }; 1282 1283 @RenderButton(submitField) 1284 break; 1285 case FieldType.Tel: 1286 TextField telField = new TextField 1287 { 1288 Label = settings.Label != null ? settings.Label : Translate("Phone"), 1289 Id = settings.Id, 1290 Value = settings.Value, 1291 OnClick = settings.OnClick, 1292 Disabled = settings.Disabled, 1293 Required = settings.Required, 1294 CssClass = settings.CssClass, 1295 ExtraAttributes = settings.ExtraAttributes, 1296 ErrorMessage = settings.ErrorMessage, 1297 Placeholder = settings.Placeholder, 1298 Type = TextFieldType.Tel 1299 }; 1300 1301 @RenderTextField(telField) 1302 break; 1303 case FieldType.Text: 1304 TextField textField = new TextField 1305 { 1306 Label = settings.Label, 1307 Id = settings.Id, 1308 Value = settings.Value, 1309 OnClick = settings.OnClick, 1310 Disabled = settings.Disabled, 1311 Required = settings.Required, 1312 CssClass = settings.CssClass, 1313 ExtraAttributes = settings.ExtraAttributes, 1314 ErrorMessage = settings.ErrorMessage, 1315 Placeholder = settings.Placeholder, 1316 Type = TextFieldType.Text 1317 }; 1318 1319 @RenderTextField(textField) 1320 break; 1321 case FieldType.Textarea: 1322 TextareaField textareaField = new TextareaField 1323 { 1324 Label = settings.Label, 1325 Id = settings.Id, 1326 Value = settings.Value, 1327 OnClick = settings.OnClick, 1328 Disabled = settings.Disabled, 1329 Required = settings.Required, 1330 CssClass = settings.CssClass, 1331 ExtraAttributes = settings.ExtraAttributes, 1332 ErrorMessage = settings.ErrorMessage, 1333 Placeholder = settings.Placeholder 1334 }; 1335 1336 @RenderTextareaField(textareaField) 1337 break; 1338 default: 1339 TextField defaultField = new TextField 1340 { 1341 Label = settings.Label, 1342 Id = settings.Id, 1343 Value = settings.Value, 1344 OnClick = settings.OnClick, 1345 Disabled = settings.Disabled, 1346 Required = settings.Required, 1347 CssClass = settings.CssClass, 1348 ExtraAttributes = settings.ExtraAttributes, 1349 ErrorMessage = settings.ErrorMessage, 1350 Placeholder = settings.Placeholder, 1351 Type = TextFieldType.Text 1352 }; 1353 1354 @RenderTextField(defaultField) 1355 break; 1356 } 1357 } 1358 } 1359 1360 1361 @using Dynamicweb.Frontend 1362 @using System.Reflection 1363 @using Dynamicweb.Content.Items 1364 @using System.Web.UI.HtmlControls 1365 @using Dynamicweb.Rapido.Blocks.Components 1366 @using Dynamicweb.Rapido.Blocks 1367 1368 1369 @* Components for the articles *@ 1370 @using System.Reflection 1371 @using Dynamicweb.Rapido.Blocks.Components.Articles 1372 1373 1374 @* Component for the articles *@ 1375 1376 @helper RenderArticleBanner(dynamic settings) { 1377 dynamic[] methodParameters = new dynamic[1]; 1378 methodParameters[0] = settings; 1379 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleBannerCustom"); 1380 1381 if (customMethod != null) 1382 { 1383 @customMethod.Invoke(this, methodParameters).ToString(); 1384 } else { 1385 string filterClasses = "image-filter image-filter--darken"; 1386 settings.Layout = ArticleHeaderLayout.Banner; 1387 1388 if (settings.Image != null) 1389 { 1390 if (settings.Image.Path != null) 1391 { 1392 <section class="multiple-paragraphs-container u-color-light paragraph-container--full-width"> 1393 <div class="background-image @filterClasses dw-mod"> 1394 <div class="background-image__wrapper @filterClasses dw-mod"> 1395 @{ 1396 settings.Image.CssClass += "background-image__cover dw-mod"; 1397 } 1398 @RenderImage(settings.Image) 1399 </div> 1400 </div> 1401 <div class="center-container dw-mod"> 1402 <div class="grid"> 1403 <div class="grid__col-md-8 grid__col-xs-12 paragraph-container paragraph-container--height-lg"> 1404 <div class="u-left-middle"> 1405 <div> 1406 @if (!String.IsNullOrEmpty(settings.Heading)) 1407 { 1408 <h1 class="article__header article__header--giant dw-mod" style="color: @settings.TextColor">@settings.Heading</h1> 1409 } 1410 @if (!String.IsNullOrEmpty(settings.Subheading)) 1411 { 1412 <div class="article__leadtext dw-mod" style="color: @settings.TextColor">@settings.Subheading</div> 1413 } 1414 @if (!String.IsNullOrEmpty(settings.Author) || !String.IsNullOrEmpty(settings.Date)) 1415 { 1416 <small class="article__post-info u-margin-bottom--lg dw-mod" style="color: @settings.TextColor">@settings.Author @settings.Date</small> 1417 } 1418 @if (!String.IsNullOrEmpty(settings.Link)) { 1419 <div class="grid__cell"> 1420 @RenderButton(new Button { Link= settings.Link, Title= settings.LinkText, ButtonLayout= settings.ButtonLayout }) 1421 </div> 1422 } 1423 </div> 1424 </div> 1425 </div> 1426 @if (settings.ExternalParagraphId != 0) 1427 { 1428 <div class="grid__col-md-4 grid__col-sm-12 grid__col-xs-12 paragraph-container paragraph-container--height-auto dw-mod"> 1429 <div class="u-color-light-gray--bg u-color-dark dw-mod"> 1430 @RenderParagraphContent(settings.ExternalParagraphId) 1431 </div> 1432 </div> 1433 } 1434 </div> 1435 </div> 1436 </section> 1437 } 1438 else 1439 { 1440 settings.Layout = ArticleHeaderLayout.Clean; 1441 @RenderArticleCleanHeader(settings); 1442 } 1443 } 1444 else 1445 { 1446 settings.Layout = ArticleHeaderLayout.Clean; 1447 @RenderArticleCleanHeader(settings); 1448 } 1449 } 1450 } 1451 @using System.Reflection 1452 @using Dynamicweb.Rapido.Blocks.Components 1453 @using Dynamicweb.Rapido.Blocks.Components.General 1454 @using Dynamicweb.Rapido.Blocks.Components.Articles 1455 @using Dynamicweb.Rapido.Blocks 1456 1457 1458 @* Component for the articles *@ 1459 1460 @helper RenderArticleHeader(ArticleHeader settings) { 1461 dynamic[] methodParameters = new dynamic[1]; 1462 methodParameters[0] = settings; 1463 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleHeaderCustom"); 1464 1465 if (customMethod != null) 1466 { 1467 @customMethod.Invoke(this, methodParameters).ToString(); 1468 } else { 1469 switch (settings.Layout) 1470 { 1471 case ArticleHeaderLayout.Clean: 1472 @RenderArticleCleanHeader(settings); 1473 break; 1474 case ArticleHeaderLayout.Split: 1475 @RenderArticleSplitHeader(settings); 1476 break; 1477 case ArticleHeaderLayout.Banner: 1478 @RenderArticleBannerHeader(settings); 1479 break; 1480 case ArticleHeaderLayout.Overlay: 1481 @RenderArticleOverlayHeader(settings); 1482 break; 1483 default: 1484 @RenderArticleCleanHeader(settings); 1485 break; 1486 } 1487 } 1488 } 1489 1490 @helper RenderArticleCleanHeader(ArticleHeader settings) { 1491 dynamic[] methodParameters = new dynamic[1]; 1492 methodParameters[0] = settings; 1493 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleCleanHeaderCustom"); 1494 1495 if (customMethod != null) 1496 { 1497 @customMethod.Invoke(this, methodParameters).ToString(); 1498 } 1499 else 1500 { 1501 string contentColumns = settings.TextLayout != ArticleHeaderTextLayout.Full ? "8" : "12"; 1502 1503 <div class="grid grid--align-content-start grid--justify-start"> 1504 <div class="grid__col-md-@contentColumns grid__col-sm-12 u-padding--lg dw-mod"> 1505 @if (!String.IsNullOrEmpty(settings.Category) || !String.IsNullOrEmpty(settings.Author) || !String.IsNullOrEmpty(settings.Date) || settings.RatingOutOf != 0) 1506 { 1507 <div class="u-border-bottom u-padding-bottom"> 1508 @if (!String.IsNullOrEmpty(settings.Category)) 1509 { 1510 <div class="u-pull--left"> 1511 <div class="article__category dw-mod" style="color: @settings.CategoryColor">@settings.Category</div> 1512 </div> 1513 } 1514 <div class="u-pull--right"> 1515 @if (!String.IsNullOrEmpty(settings.Author) || !String.IsNullOrEmpty(settings.Date)) 1516 { 1517 <small class="article__post-info dw-mod">@settings.Author @settings.Date</small> 1518 } 1519 @if (settings.RatingOutOf != 0) 1520 { 1521 @RenderRating(new Rating { Score = settings.RatingScore, OutOf = settings.RatingOutOf }) 1522 } 1523 </div> 1524 </div> 1525 } 1526 1527 <div class="grid__cell"> 1528 @if (!String.IsNullOrEmpty(settings.Heading)) 1529 { 1530 <h1 class="article__header article__header--giant dw-mod">@settings.Heading</h1> 1531 } 1532 @if (settings.Image != null) 1533 { 1534 if (settings.Image.Path != null) 1535 { 1536 <div class="u-padding-bottom--lg"> 1537 @RenderImage(settings.Image) 1538 </div> 1539 } 1540 } 1541 @if (!String.IsNullOrEmpty(settings.Subheading)) 1542 { 1543 <div class="article__leadtext dw-mod">@settings.Subheading</div> 1544 } 1545 @if (!String.IsNullOrEmpty(settings.Link)) 1546 { 1547 <div class="grid__cell"> 1548 @RenderButton(new Button { Link = settings.Link, Title = settings.LinkText, ButtonLayout = settings.ButtonLayout }) 1549 </div> 1550 } 1551 </div> 1552 </div> 1553 @if (settings.ExternalParagraphId != 0) 1554 { 1555 <div class="grid__col-md-4 grid__col-sm-12 u-padding--lg u-color-light-gray--bg dw-mod"> 1556 @RenderParagraphContent(settings.ExternalParagraphId) 1557 </div> 1558 } 1559 </div> 1560 } 1561 } 1562 1563 @helper RenderArticleSplitHeader(ArticleHeader settings) { 1564 dynamic[] methodParameters = new dynamic[1]; 1565 methodParameters[0] = settings; 1566 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleSplitHeaderCustom"); 1567 1568 if (customMethod != null) 1569 { 1570 @customMethod.Invoke(this, methodParameters).ToString(); 1571 } 1572 else 1573 { 1574 string headerColumnWidth = settings.ExternalParagraphId != 0 ? "4" : "6"; 1575 1576 if (settings.Image != null) 1577 { 1578 if (settings.Image.Path != null) 1579 { 1580 <section class="multiple-paragraphs-container paragraph-container--full-width"> 1581 <div class="grid"> 1582 <div class="grid__col-md-@headerColumnWidth grid__col-sm-12 grid__col-xs-12 paragraph-container paragraph-container--height-xl dw-mod"> 1583 <div class="u-left-middle u-padding--lg"> 1584 <div> 1585 @if (!String.IsNullOrEmpty(settings.Category)) 1586 { 1587 <div class="article__category dw-mod" style="color: @settings.CategoryColor">@settings.Category</div> 1588 } 1589 @if (!String.IsNullOrEmpty(settings.Heading)) 1590 { 1591 <h1 class="article__header article__header--giant dw-mod">@settings.Heading</h1> 1592 } 1593 @if (!String.IsNullOrEmpty(settings.Subheading)) 1594 { 1595 <div class="article__leadtext dw-mod">@settings.Subheading</div> 1596 } 1597 @if (!String.IsNullOrEmpty(settings.Author) || !String.IsNullOrEmpty(settings.Date)) 1598 { 1599 <small class="article__post-info u-pull--left dw-mod">@settings.Author @settings.Date</small> 1600 } 1601 @if (settings.RatingOutOf != 0) 1602 { 1603 <div class="u-pull--right"> 1604 @RenderRating(new Rating { Score = settings.RatingScore, OutOf = settings.RatingOutOf }) 1605 </div> 1606 } 1607 @if (!String.IsNullOrEmpty(settings.Link)) { 1608 @RenderButton(new Button { Link = settings.Link, Title = settings.LinkText, ButtonLayout = settings.ButtonLayout }) 1609 } 1610 </div> 1611 </div> 1612 </div> 1613 <div class="grid__col-md-@headerColumnWidth grid__col-sm-12 grid__col-xs-12 paragraph-container paragraph-container--height-auto dw-mod" style="background-image:url(/Admin/Public/GetImage.ashx?width=1800&height=1100&crop=0&Compression=85&DoNotUpscale=true&image=@settings.Image.Path); background-position: center center; background-size: cover;"></div> 1614 @if (settings.ExternalParagraphId != 0) 1615 { 1616 <div class="grid__col-md-4 grid__col-sm-12 grid__col-xs-12 paragraph-container paragraph-container--height-auto u-color-light-gray--bg dw-mod"> 1617 @RenderParagraphContent(settings.ExternalParagraphId) 1618 </div> 1619 } 1620 </div> 1621 </section> 1622 } 1623 } 1624 else 1625 { 1626 @RenderArticleCleanHeader(settings); 1627 } 1628 } 1629 } 1630 1631 @helper RenderArticleOverlayHeader(ArticleHeader settings) { 1632 dynamic[] methodParameters = new dynamic[1]; 1633 methodParameters[0] = settings; 1634 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleOverlayHeaderCustom"); 1635 1636 if (customMethod != null) 1637 { 1638 @customMethod.Invoke(this, methodParameters).ToString(); 1639 } 1640 else 1641 { 1642 string contentColumns = settings.TextLayout != ArticleHeaderTextLayout.Full ? "8" : "12"; 1643 string contentAlignment = settings.TextLayout == ArticleHeaderTextLayout.Center ? "grid--justify-center" : ""; 1644 1645 if (settings.Image != null) 1646 { 1647 if (settings.Image.Path != null) 1648 { 1649 if (settings.ExternalParagraphId == 0) 1650 { 1651 <section class="multiple-paragraphs-container u-color-light paragraph-container--full-width"> 1652 <div class="background-image image-filter image-filter--darken dw-mod"> 1653 <div class="background-image__wrapper image-filter image-filter--darken dw-mod"> 1654 @{ 1655 settings.Image.CssClass += "background-image__cover dw-mod"; 1656 } 1657 @RenderImage(settings.Image) 1658 </div> 1659 </div> 1660 <div class="center-container dw-mod"> 1661 <div class="grid @contentAlignment"> 1662 <div class="grid__col-md-@contentColumns grid__col-xs-12 paragraph-container paragraph-container--height-xl dw-mod"> 1663 @if (!String.IsNullOrEmpty(settings.Heading)) 1664 { 1665 <h1 class="article__header article__header--giant u-padding-top--lg dw-mod" style="color: @settings.TextColor">@settings.Heading</h1> 1666 } 1667 @if (!String.IsNullOrEmpty(settings.Subheading)) 1668 { 1669 <div class="article__leadtext dw-mod" style="color: @settings.TextColor">@settings.Subheading</div> 1670 } 1671 <div class="u-margin-top"> 1672 @if (!String.IsNullOrEmpty(settings.Author) || !String.IsNullOrEmpty(settings.Date)) 1673 { 1674 <small class="article__post-info u-pull--left dw-mod" style="color: @settings.TextColor">@settings.Author @settings.Date</small> 1675 } 1676 @if (settings.RatingOutOf != 0) 1677 { 1678 <div class="u-pull--right"> 1679 @RenderRating(new Rating { Score = settings.RatingScore, OutOf = settings.RatingOutOf }) 1680 </div> 1681 } 1682 </div> 1683 @if (!String.IsNullOrEmpty(settings.Link)) 1684 { 1685 <div class="grid__cell"> 1686 @RenderButton(new Button { Link= settings.Link, Title= settings.LinkText, ButtonLayout= settings.ButtonLayout }) 1687 </div> 1688 } 1689 </div> 1690 </div> 1691 </div> 1692 </section> 1693 } 1694 else 1695 { 1696 @RenderArticleBanner(settings); 1697 } 1698 } 1699 } 1700 else 1701 { 1702 @RenderArticleCleanHeader(settings); 1703 } 1704 } 1705 } 1706 1707 @helper RenderArticleBannerHeader(dynamic settings) { 1708 dynamic[] methodParameters = new dynamic[1]; 1709 methodParameters[0] = settings; 1710 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleBannerHeaderCustom"); 1711 1712 if (customMethod != null) 1713 { 1714 @customMethod.Invoke(this, methodParameters).ToString(); 1715 } 1716 else 1717 { 1718 @RenderArticleBanner(settings); 1719 } 1720 } 1721 @using System.Reflection 1722 @using System.Text.RegularExpressions; 1723 @using Dynamicweb.Frontend 1724 @using Dynamicweb.Content.Items 1725 @using Dynamicweb.Rapido.Blocks.Components 1726 @using Dynamicweb.Rapido.Blocks.Components.Articles 1727 @using Dynamicweb.Rapido.Blocks 1728 1729 @* Component for the articles *@ 1730 1731 @helper RenderArticleBodyRow(ArticleBodyRow settings) 1732 { 1733 dynamic[] methodParameters = new dynamic[1]; 1734 methodParameters[0] = settings; 1735 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleBodyRowCustom"); 1736 1737 if (customMethod != null) 1738 { 1739 @customMethod.Invoke(this, methodParameters).ToString(); 1740 } else { 1741 string position = settings.TopLayout == "overlay" ? "article__overlay-offset" : ""; 1742 string contentAlignment = settings.TextLayout == "center" ? "grid--justify-center" : ""; 1743 1744 <div class="grid grid--align-content-start @contentAlignment @position dw-mod"> 1745 @RenderBlockList(settings.SubBlocks) 1746 </div> 1747 } 1748 } 1749 @using System.Reflection 1750 @using Dynamicweb.Rapido.Blocks.Components 1751 @using Dynamicweb.Rapido.Blocks.Components.General 1752 @using Dynamicweb.Rapido.Blocks.Components.Articles 1753 @using Dynamicweb.Rapido.Blocks 1754 1755 @* Component for the articles *@ 1756 1757 @helper RenderArticleImage(ArticleImage settings) 1758 { 1759 dynamic[] methodParameters = new dynamic[1]; 1760 methodParameters[0] = settings; 1761 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleImageCustom"); 1762 1763 if (customMethod != null) 1764 { 1765 @customMethod.Invoke(this, methodParameters).ToString(); 1766 } 1767 else 1768 { 1769 if (settings.Image != null) 1770 { 1771 if (settings.Image.Path != null) 1772 { 1773 <div class="u-margin-bottom--lg"> 1774 @RenderImage(settings.Image) 1775 </div> 1776 } 1777 } 1778 } 1779 } 1780 @using System.Reflection 1781 @using Dynamicweb.Rapido.Blocks.Components 1782 @using Dynamicweb.Rapido.Blocks.Components.Articles 1783 1784 1785 @* Component for the articles *@ 1786 1787 @helper RenderArticleSubHeader(ArticleSubHeader settings) 1788 { 1789 dynamic[] methodParameters = new dynamic[1]; 1790 methodParameters[0] = settings; 1791 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleSubHeaderCustom"); 1792 1793 if (customMethod != null) 1794 { 1795 @customMethod.Invoke(this, methodParameters).ToString(); 1796 } else { 1797 if (!String.IsNullOrEmpty(settings.Title)) 1798 { 1799 <h2 class="article__header">@settings.Title</h2> 1800 } 1801 } 1802 } 1803 @using System.Reflection 1804 @using Dynamicweb.Rapido.Blocks.Components 1805 @using Dynamicweb.Rapido.Blocks.Components.Articles 1806 @using Dynamicweb.Rapido.Blocks 1807 1808 1809 @* Component for the articles *@ 1810 1811 @helper RenderArticleText(ArticleText settings) 1812 { 1813 dynamic[] methodParameters = new dynamic[1]; 1814 methodParameters[0] = settings; 1815 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleTextCustom"); 1816 1817 if (customMethod != null) 1818 { 1819 @customMethod.Invoke(this, methodParameters).ToString(); 1820 } else { 1821 if (!String.IsNullOrEmpty(settings.Text)) 1822 { 1823 string greatTextClass = settings.EnableLargeText == true ? "article__paragraph--great-text" : ""; 1824 1825 <div class="article__paragraph @greatTextClass"> 1826 @settings.Text 1827 </div> 1828 } 1829 } 1830 } 1831 @using System.Reflection 1832 @using Dynamicweb.Rapido.Blocks.Components 1833 @using Dynamicweb.Rapido.Blocks.Components.Articles 1834 @using Dynamicweb.Rapido.Blocks 1835 1836 1837 @* Component for the articles *@ 1838 1839 @helper RenderArticleQuote(ArticleQuote settings) 1840 { 1841 dynamic[] methodParameters = new dynamic[1]; 1842 methodParameters[0] = settings; 1843 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleQuoteCustom"); 1844 1845 if (customMethod != null) 1846 { 1847 @customMethod.Invoke(this, methodParameters).ToString(); 1848 } else { 1849 string text = Regex.Replace(settings.Text, "<.*?>", String.Empty); 1850 1851 <div class="grid u-padding-bottom--lg"> 1852 @if (settings.Image != null) 1853 { 1854 if (settings.Image.Path != null) { 1855 <div class="grid__col-3"> 1856 <div class="grid__cell-img"> 1857 @{ 1858 settings.Image.Title = !String.IsNullOrEmpty(settings.Image.Title) ? settings.Image.Title : settings.Author; 1859 settings.Image.CssClass += " article__image article__image--ball"; 1860 settings.Image.ImageDefault.Width = 200; 1861 settings.Image.ImageDefault.Height = 200; 1862 } 1863 @RenderImage(settings.Image) 1864 </div> 1865 </div> 1866 } 1867 } 1868 <div class="grid__col-auto"> 1869 @if (!String.IsNullOrEmpty(settings.Text)) 1870 { 1871 <div class="article__quote dw-mod"> 1872 @settings.Text 1873 </div> 1874 } 1875 @if (!String.IsNullOrEmpty(settings.Author)) 1876 { 1877 <div class="article__quote-author dw-mod"> 1878 - @settings.Author 1879 </div> 1880 } 1881 </div> 1882 </div> 1883 } 1884 } 1885 @using System.Reflection 1886 @using Dynamicweb.Rapido.Blocks.Components 1887 @using Dynamicweb.Rapido.Blocks.Components.Articles 1888 @using Dynamicweb.Rapido.Blocks 1889 1890 @* Component for the articles *@ 1891 1892 @helper RenderArticleInfoTable(ArticleInfoTable settings) 1893 { 1894 dynamic[] methodParameters = new dynamic[1]; 1895 methodParameters[0] = settings; 1896 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleInfoTableCustom"); 1897 1898 if (customMethod != null) 1899 { 1900 @customMethod.Invoke(this, methodParameters).ToString(); 1901 } else { 1902 <table class="table table--clean"> 1903 @foreach (var row in settings.Rows) 1904 { 1905 string iconColor = row.IconColor != null ? row.IconColor : "u-brand-color-two"; 1906 1907 <tr> 1908 @if (!String.IsNullOrEmpty(row.Icon)) 1909 { 1910 <td class="u-w32px"><i class="@row.Icon fa-2x @row.IconColor"></i></td> 1911 } 1912 <td class="u-no-margin-on-p-elements"> 1913 <div class="u-bold">@row.Title</div> 1914 @if (!String.IsNullOrEmpty(row.SubTitle)) 1915 { 1916 if (row.Link == null) 1917 { 1918 <div>@row.SubTitle</div> 1919 } 1920 else 1921 { 1922 <a href="@row.Link" class="u-color-inherit">@row.SubTitle</a> 1923 } 1924 } 1925 </td> 1926 </tr> 1927 } 1928 </table> 1929 } 1930 } 1931 @using System.Reflection 1932 @using Dynamicweb.Rapido.Blocks.Components 1933 @using Dynamicweb.Rapido.Blocks.Components.Articles 1934 @using Dynamicweb.Rapido.Blocks 1935 1936 @* Component for the articles *@ 1937 1938 @helper RenderArticleGalleryModal(ArticleGalleryModal settings) 1939 { 1940 dynamic[] methodParameters = new dynamic[1]; 1941 methodParameters[0] = settings; 1942 MethodInfo customMethod = this.GetType().GetMethod(settings.HelperName + "Custom"); 1943 1944 if (customMethod != null) 1945 { 1946 @customMethod.Invoke(this, methodParameters).ToString(); 1947 } 1948 else 1949 { 1950 <input type="checkbox" id="ParagraphGalleryTrigger" class="modal-trigger" /> 1951 <div class="modal-container"> 1952 <label for="ParagraphGalleryTrigger" id="ParagraphGalleryOverlay" class="modal-overlay"></label> 1953 <div class="modal modal--full" id="ParagraphGallery"> 1954 <div class="modal__body modal__body--full"> 1955 <img src="/Files/Images/placeholder.gif" alt="" id="ParagraphGalleryModalImage" style="margin: 0 auto;" /> 1956 <div class="u-padding u-ta-center" id="ParagraphGalleryModalCaption"></div> 1957 <label class="modal__close-btn dw-mod" for="ParagraphGalleryTrigger"></label> 1958 </div> 1959 </div> 1960 </div> 1961 <script> 1962 function showImageInModal(image) { 1963 let imageNode = document.getElementById('ParagraphGalleryModalImage'); 1964 let captionNode = document.getElementById('ParagraphGalleryModalCaption'); 1965 let trigger = document.getElementById('ParagraphGalleryTrigger'); 1966 imageNode.src = image.src; 1967 if (image.alt != "") { 1968 captionNode.innerText = image.alt; 1969 imageNode.alt = image.alt; 1970 captionNode.style.display = "block"; 1971 } else { 1972 captionNode.style.display = "none"; 1973 } 1974 trigger.checked = true; 1975 } 1976 </script> 1977 } 1978 } 1979 @using System.Reflection 1980 @using Dynamicweb.Rapido.Blocks.Components 1981 @using Dynamicweb.Rapido.Blocks.Components.Articles 1982 @using Dynamicweb.Rapido.Blocks 1983 1984 1985 @* Component for the articles *@ 1986 1987 @helper RenderArticleRelated(ArticleRelated settings) 1988 { 1989 string cardClass = Pageview.Device.ToString() != "Tablet" ? "card u-color-light--bg u-full-height" : ""; 1990 string cardFooterClass = Pageview.Device.ToString() != "Tablet" ? "card-footer u-color-light--bg" : ""; 1991 1992 <section class="multiple-paragraphs-container u-color-light-gray--bg paragraph-container--full-width"> 1993 <div class="center-container dw-mod"> 1994 <div class="grid u-padding"> 1995 <div class="grid__col-md-12 grid__col-xs-12"> 1996 <h2 class="article__header u-no-margin u-margin-top">@settings.Title</h2> 1997 </div> 1998 </div> 1999 2000 <div class="js-handlebars-root u-padding" id="@settings.Title.Replace(" ", String.Empty)" data-template="RelatedSimpleTemplate" data-json-feed="/Default.aspx?ID=@settings.FeedPageId&@settings.Query&ExcludeItemID=@settings.CurrentPageId&PageSize=@settings.PageSize"></div> 2001 2002 <script id="RelatedSimpleTemplate" type="text/x-template"> 2003 {{#.}} 2004 <div class="grid u-padding-bottom--lg"> 2005 {{#Cases}} 2006 <div class="grid__col-md-3 grid__col-xs-12 image-hover--zoom dw-mod"> 2007 <a href="{{link}}" class="u-full-height u-color-light--bg"> 2008 {{#if image}} 2009 <div class="u-color-light--bg u-no-padding dw-mod"> 2010 <div class="flex-img image-hover__wrapper"> 2011 <img class="b-lazy" src="/Files/Images/placeholder.gif" data-src="/Admin/Public/GetImage.ashx?width=680&height=314&crop=1&DoNotUpscale=True&Compression=75&image={{image}}" alt="{{title}}" /> 2012 </div> 2013 </div> 2014 {{/if}} 2015 2016 <div class="card u-color-light--bg dw-mod"> 2017 <h3 class="article-list__item-header u-truncate-text dw-mod">{{title}}</h3> 2018 <p class="article__short-summary dw-mod">{{summary}}</p> 2019 </div> 2020 </a> 2021 </div> 2022 {{/Cases}} 2023 </div> 2024 {{/.}} 2025 </script> 2026 </div> 2027 </section> 2028 } 2029 @using System.Reflection 2030 @using Dynamicweb.Rapido.Blocks.Components 2031 @using Dynamicweb.Rapido.Blocks.Components.Articles 2032 @using Dynamicweb.Rapido.Blocks 2033 2034 2035 @* Component for the articles *@ 2036 2037 @helper RenderArticleMenu(ArticleMenu settings) 2038 { 2039 dynamic[] methodParameters = new dynamic[1]; 2040 methodParameters[0] = settings; 2041 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleMenuCustom"); 2042 2043 if (customMethod != null) 2044 { 2045 @customMethod.Invoke(this, methodParameters).ToString(); 2046 } else { 2047 if (!String.IsNullOrEmpty(settings.Title)) { 2048 <div class="u-margin u-border-bottom"> 2049 <h3 class="u-no-margin">@settings.Title</h3> 2050 </div> 2051 } 2052 2053 <ul class="menu-left u-margin-bottom dw-mod"> 2054 @foreach (var item in settings.Items) 2055 { 2056 @RenderArticleMenuItem(item) 2057 } 2058 </ul> 2059 } 2060 } 2061 2062 @helper RenderArticleMenuItem(ArticleMenuItem settings) 2063 { 2064 dynamic[] methodParameters = new dynamic[1]; 2065 methodParameters[0] = settings; 2066 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleMenuItemCustom"); 2067 2068 if (customMethod != null) 2069 { 2070 @customMethod.Invoke(this, methodParameters).ToString(); 2071 } else { 2072 string link = !String.IsNullOrEmpty(settings.Link) ? settings.Link : "#"; 2073 2074 if (!String.IsNullOrEmpty(settings.Title)) { 2075 <li class="menu-left__item dw-mod"> 2076 <a href="@link" onclick="@settings.OnClick" class="menu-left__link dw-mod">@settings.Title</a> 2077 </li> 2078 } 2079 } 2080 } 2081 @using System.Reflection 2082 @using Dynamicweb.Rapido.Blocks.Components 2083 @using Dynamicweb.Rapido.Blocks.Components.Articles 2084 @using Dynamicweb.Rapido.Blocks 2085 2086 @* Component for the articles *@ 2087 2088 @helper RenderArticleList(ArticleList settings) 2089 { 2090 dynamic[] methodParameters = new dynamic[1]; 2091 methodParameters[0] = settings; 2092 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleListCustom"); 2093 2094 if (customMethod != null) 2095 { 2096 @customMethod.Invoke(this, methodParameters).ToString(); 2097 } else { 2098 if (Pageview != null) 2099 { 2100 bool isParagraph = Pageview.CurrentParagraph != null ? true : false; 2101 string[] sortArticlesListBy = new string[2]; 2102 2103 if (isParagraph) { 2104 sortArticlesListBy = Pageview.CurrentParagraph.Item["SortArticlesListBy"] != null && !string.IsNullOrEmpty(Pageview.CurrentParagraph.Item["SortArticlesListBy"].ToString()) ? Pageview.CurrentParagraph.Item["SortArticlesListBy"].ToString().Split('+') : new string[] { "Date", "ASC" }; 2105 } 2106 else { 2107 sortArticlesListBy = Pageview.Item["SortArticlesListBy"] != null && !string.IsNullOrEmpty(Pageview.Item["SortArticlesListBy"].ToString()) ? Pageview.Item["SortArticlesListBy"].ToString().Split('+') : new string[] { "Date", "ASC" }; 2108 } 2109 2110 string sourcePage = settings.SourcePage != null ? settings.SourcePage : Pageview.ID.ToString(); 2111 2112 @RenderItemList(new 2113 { 2114 ItemType = !String.IsNullOrEmpty(settings.ItemType) ? settings.ItemType : "DynamicArticle", 2115 ListSourceType = settings.SourceType, 2116 ListSourcePage = sourcePage, 2117 ItemFieldsList = "*", 2118 Filter = settings.Filter, 2119 ListOrderBy = sortArticlesListBy[0], 2120 ListOrderByDirection = sortArticlesListBy[1], 2121 ListSecondOrderBy = sortArticlesListBy[0] == "Date" ? "InFocusSortId" : "Date", 2122 ListSecondOrderByDirection = "ASC", 2123 IncludeAllChildItems = true, 2124 ListTemplate = settings.Template, 2125 ListPageSize = settings.PageSize.ToString() 2126 }); 2127 } 2128 } 2129 } 2130 @using System.Reflection 2131 @using Dynamicweb.Rapido.Blocks.Components.Articles 2132 2133 2134 @* Component for the articles *@ 2135 2136 @helper RenderArticleSummary(ArticleSummary settings) 2137 { 2138 dynamic[] methodParameters = new dynamic[1]; 2139 methodParameters[0] = settings; 2140 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleSummaryCustom"); 2141 2142 if (customMethod != null) 2143 { 2144 @customMethod.Invoke(this, methodParameters).ToString(); 2145 } else { 2146 if (!String.IsNullOrEmpty(settings.Text)) 2147 { 2148 <div class="article__summary dw-mod">@settings.Text</div> 2149 } 2150 } 2151 } 2152 @using System.Reflection 2153 @using Dynamicweb.Rapido.Blocks.Components 2154 @using Dynamicweb.Rapido.Blocks.Components.Articles 2155 @using Dynamicweb.Rapido.Blocks 2156 2157 @* Component for the articles *@ 2158 2159 @helper RenderArticleListCategoryFilter(ArticleListCategoryFilter settings) 2160 { 2161 dynamic[] methodParameters = new dynamic[1]; 2162 methodParameters[0] = settings; 2163 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleListCategoryFilterCustom"); 2164 2165 if (customMethod != null) 2166 { 2167 @customMethod.Invoke(this, methodParameters).ToString(); 2168 } else { 2169 string pageId = Pageview.ID.ToString(); 2170 string selectedFilter = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("sourcePage")) ? HttpContext.Current.Request.QueryString.Get("sourcePage") : Translate("All"); 2171 var query = HttpUtility.ParseQueryString(HttpContext.Current.Request.QueryString.ToString()); 2172 2173 foreach (var option in settings.Categories) 2174 { 2175 selectedFilter = selectedFilter == option.Value ? option.Key : selectedFilter; 2176 } 2177 2178 if (selectedFilter == pageId) 2179 { 2180 selectedFilter = Translate("All"); 2181 } 2182 2183 if (Pageview.Device.ToString() != "Mobile" && Pageview.Device.ToString() != "Tablet") 2184 { 2185 <div class="u-pull--right u-margin-left"> 2186 <div class="collection u-no-margin"> 2187 <h5>@Translate("Category")</h5> 2188 <input type="checkbox" id="CategorySelector" class="dropdown-trigger" /> 2189 <div class="dropdown u-w180px dw-mod"> 2190 <label class="dropdown__header dropdown__btn dw-mod" for="CategorySelector">@Translate(selectedFilter)</label> 2191 <div class="dropdown__content dw-mod"> 2192 @foreach (var option in settings.Categories) 2193 { 2194 <div class="dropdown__item" onclick="QueryArray.setParametersInCurrentURL({ sourceType: 'Page', sourcePage: '@(option.Key.ToLower() == "all" ? pageId : option.Value)' })">@Translate(option.Key)</div> 2195 } 2196 </div> 2197 <label class="dropdown-trigger-off" for="CategorySelector"></label> 2198 </div> 2199 </div> 2200 </div> 2201 } 2202 else 2203 { 2204 <div class="u-full-width u-margin-bottom"> 2205 <h5 class="u-no-margin">@Translate("Category")</h5> 2206 <input type="checkbox" id="CategorySelector" class="dropdown-trigger" /> 2207 <div class="dropdown u-full-width dw-mod"> 2208 <label class="dropdown__header dropdown__btn dw-mod" for="CategorySelector">@Translate(selectedFilter)</label> 2209 <div class="dropdown__content dw-mod"> 2210 @foreach (var option in settings.Categories) 2211 { 2212 <div class="dropdown__item" onclick="QueryArray.setParametersInCurrentURL({ sourceType: 'Page', sourcePage: '@(option.Key.ToLower() == "all" ? pageId : option.Value)' })">@Translate(option.Key)</div> 2213 } 2214 </div> 2215 <label class="dropdown-trigger-off" for="CategorySelector"></label> 2216 </div> 2217 </div> 2218 } 2219 } 2220 } 2221 @using System.Reflection 2222 @using Dynamicweb.Rapido.Blocks.Components 2223 @using Dynamicweb.Rapido.Blocks.Components.Articles 2224 @using Dynamicweb.Rapido.Blocks 2225 2226 @* Component for the articles *@ 2227 2228 @helper RenderArticleListFilter(ArticleListFilter settings) 2229 { 2230 string selectedFilter = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get(settings.SystemName)) ? HttpContext.Current.Request.QueryString.Get(settings.SystemName) : Translate("All"); 2231 var query = HttpUtility.ParseQueryString(HttpContext.Current.Request.QueryString.ToString()); 2232 2233 if (settings.Options != null) 2234 { 2235 foreach (var option in settings.Options) 2236 { 2237 selectedFilter = selectedFilter == option.Value ? option.Name : selectedFilter; 2238 } 2239 2240 if (Pageview.Device.ToString() != "Mobile" && Pageview.Device.ToString() != "Tablet") 2241 { 2242 <div class="u-pull--right u-margin-left"> 2243 <div class="collection u-no-margin"> 2244 <h5>@settings.Label</h5> 2245 <input type="checkbox" id="@(settings.SystemName)Selector" class="dropdown-trigger" /> 2246 <div class="dropdown u-w180px dw-mod"> 2247 <label class="dropdown__header dropdown__btn dw-mod" for="@(settings.SystemName)Selector">@Translate(selectedFilter)</label> 2248 <div class="dropdown__content dw-mod"> 2249 <div class="dropdown__item" onclick="QueryArray.setParameterInCurrentURL('@settings.SystemName', '')">@Translate("All")</div> 2250 @foreach (var option in settings.Options) 2251 { 2252 <div class="dropdown__item" onclick="QueryArray.setParameterInCurrentURL('@settings.SystemName', '@option.Value')">@Translate(option.Name)</div> 2253 } 2254 </div> 2255 <label class="dropdown-trigger-off" for="@(settings.SystemName)Selector"></label> 2256 </div> 2257 </div> 2258 </div> 2259 } 2260 else 2261 { 2262 <div class="u-full-width u-margin-bottom"> 2263 <h5 class="u-no-margin">@settings.Label</h5> 2264 <input type="checkbox" id="@(settings.SystemName)Selector" class="dropdown-trigger" /> 2265 <div class="dropdown u-full-width w-mod"> 2266 <label class="dropdown__header dropdown__btn dw-mod" for="@(settings.SystemName)Selector">@Translate(selectedFilter)</label> 2267 <div class="dropdown__content dw-mod"> 2268 <div class="dropdown__item" onclick="QueryArray.setParameterInCurrentURL('@settings.SystemName', '')">@Translate("All")</div> 2269 @foreach (var option in settings.Options) 2270 { 2271 <div class="dropdown__item" onclick="QueryArray.setParameterInCurrentURL('@settings.SystemName', '@option.Value')">@Translate(option.Name)</div> 2272 } 2273 </div> 2274 <label class="dropdown-trigger-off" for="@(settings.SystemName)Selector"></label> 2275 </div> 2276 </div> 2277 } 2278 } 2279 } 2280 @using System.Reflection 2281 @using Dynamicweb.Rapido.Blocks.Components 2282 @using Dynamicweb.Rapido.Blocks.Components.Articles 2283 @using Dynamicweb.Rapido.Blocks 2284 2285 @* Component for the articles *@ 2286 2287 @helper RenderArticleListSearch(ArticleListSearch settings) 2288 { 2289 dynamic[] methodParameters = new dynamic[1]; 2290 methodParameters[0] = settings; 2291 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleListSearchCustom"); 2292 2293 if (customMethod != null) 2294 { 2295 @customMethod.Invoke(this, methodParameters).ToString(); 2296 } else { 2297 string searchString = !string.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("Title")) ? HttpContext.Current.Request.QueryString.Get("Title").Trim('*') : ""; 2298 string className = "u-w340px u-pull--right u-margin-left"; 2299 2300 if (Pageview.Device.ToString() == "Mobile" || Pageview.Device.ToString() == "Tablet") 2301 { 2302 className = "u-full-width"; 2303 } 2304 2305 <div class="typeahead u-color-inherit u-margin-bottom dw-mod @className"> 2306 <input type="text" class="typeahead-search-field u-no-margin dw-mod" placeholder="@Translate("Search in list")" value="@searchString" id="ArticleListSearchInput" onchange="QueryArray.setParameterInCurrentURL('Title', '*' + document.getElementById('ArticleListSearchInput').value + '*')"> 2307 <button type="button" class="btn btn--condensed btn--primary u-no-margin dw-mod"><i class="fas fa-search"></i></button> 2308 </div> 2309 } 2310 } 2311 @using System.Reflection 2312 @using Dynamicweb.Rapido.Blocks.Components 2313 @using Dynamicweb.Rapido.Blocks.Components.Articles 2314 @using Dynamicweb.Rapido.Blocks 2315 2316 @* Component for the articles *@ 2317 2318 @helper RenderArticleListNoResultsInfo(ArticleListNoResultsInfo settings) 2319 { 2320 dynamic[] methodParameters = new dynamic[1]; 2321 methodParameters[0] = settings; 2322 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleListNoResultsInfoCustom"); 2323 2324 if (customMethod != null) 2325 { 2326 @customMethod.Invoke(this, methodParameters).ToString(); 2327 } else { 2328 <div class="u-margin-top--lg u-bold u-ta-center u-bold">@Translate(settings.Message)</div> 2329 } 2330 } 2331 @using System.Reflection 2332 @using Dynamicweb.Rapido.Blocks.Components 2333 @using Dynamicweb.Rapido.Blocks.Components.General 2334 @using Dynamicweb.Rapido.Blocks.Components.Articles 2335 @using Dynamicweb.Rapido.Blocks 2336 @using System.Text.RegularExpressions 2337 2338 @* Component for the articles *@ 2339 2340 @helper RenderArticleListItem(ArticleListItem settings) 2341 { 2342 switch (settings.Type) { 2343 case ArticleListItemType.Card: 2344 @RenderArticleListItemCard(settings); 2345 break; 2346 case ArticleListItemType.List: 2347 @RenderArticleListItemList(settings); 2348 break; 2349 case ArticleListItemType.Simple: 2350 @RenderArticleListItemSimple(settings); 2351 break; 2352 default: 2353 @RenderArticleListItemCard(settings); 2354 break; 2355 } 2356 } 2357 2358 @helper RenderArticleListItemCard(ArticleListItem settings) 2359 { 2360 <a href="@settings.Link" class="u-full-height u-color-light--bg"> 2361 <div class="u-color-light--bg u-no-padding dw-mod"> 2362 @if (settings.Logo != null) 2363 { 2364 string backgroundImage = settings.Image != null ? "background-image:url(/Admin/Public/GetImage.ashx?width=992&height=760&crop=0&Compression=75&DoNotUpscale=True&image=" + settings.Image.Path + "); background-size: cover;" : ""; 2365 settings.Logo.ImageDefault.Crop = 5; 2366 settings.Logo.ImageDefault.Width = settings.Logo.ImageDefault.Width == 1920 ? 240 : settings.Logo.ImageDefault.Width; 2367 settings.Logo.ImageDefault.Height = settings.Logo.ImageDefault.Height == 1080 ? 200 : settings.Logo.ImageDefault.Height; 2368 <div class="image-hover__wrapper layered-image layered-image--tinted dw-mod" style="@backgroundImage"> 2369 @if (settings.Stickers != null) 2370 { 2371 if (settings.Stickers.Position != StickersListPosition.Custom) 2372 { 2373 @RenderStickersCollection(settings.Stickers); 2374 } 2375 } 2376 @* @RenderImage(settings.Logo) *@ 2377 <div> 2378 <img class="grid__cell-img b-lazy dw-mod b-loaded" src="@settings.Logo.Path"> 2379 </div> 2380 </div> 2381 } 2382 else if (settings.Image != null) 2383 { 2384 <div class="flex-img image-hover__wrapper u-position-relative dw-mod"> 2385 @if (settings.Stickers != null) 2386 { 2387 if (settings.Stickers.Position != StickersListPosition.Custom) 2388 { 2389 @RenderStickersCollection(settings.Stickers); 2390 } 2391 } 2392 @RenderImage(settings.Image) 2393 </div> 2394 } 2395 </div> 2396 2397 @if (!String.IsNullOrEmpty(settings.Title) || !String.IsNullOrEmpty(settings.Summary)) 2398 { 2399 <div class="card u-color-light--bg dw-mod"> 2400 @if (settings.Stickers != null) 2401 { 2402 if (settings.Stickers.Position == StickersListPosition.Custom) 2403 { 2404 @RenderStickersCollection(settings.Stickers); 2405 } 2406 } 2407 @if (!String.IsNullOrEmpty(settings.Title)) 2408 { 2409 <h3 class="article-list__item-header u-truncate-text dw-mod">@settings.Title</h3> 2410 } 2411 @if (!String.IsNullOrEmpty(settings.SubTitle)) 2412 { 2413 <div class="article-list__item-micro-info u-truncate-text dw-mod">@settings.SubTitle</div> 2414 } 2415 @if (!String.IsNullOrEmpty(settings.Summary)) 2416 { 2417 <p class="article__short-summary dw-mod">@settings.Summary</p> 2418 } 2419 </div> 2420 } 2421 </a> 2422 } 2423 2424 @helper RenderArticleListItemList(ArticleListItem settings) 2425 { 2426 <a href="@settings.Link"> 2427 <div class="grid u-color-light--bg u-no-padding dw-mod"> 2428 <div class="grid__col-md-3"> 2429 <div class="u-color-light--bg u-no-padding dw-mod"> 2430 @if (settings.Logo != null) 2431 { 2432 string backgroundImage = settings.Image != null ? "background-image:url(/Admin/Public/GetImage.ashx?width=992&height=760&crop=0&Compression=75&DoNotUpscale=True&image=" + settings.Image.Path + "); background-size: cover;" : ""; 2433 settings.Logo.ImageDefault.Crop = 5; 2434 settings.Logo.ImageDefault.Width = settings.Logo.ImageDefault.Width == 1920 ? 240 : settings.Logo.ImageDefault.Width; 2435 settings.Logo.ImageDefault.Height = settings.Logo.ImageDefault.Height == 1080 ? 200 : settings.Logo.ImageDefault.Height; 2436 <div class="image-hover__wrapper layered-image layered-image--tinted dw-mod" style="@backgroundImage"> 2437 @if (settings.Stickers != null) 2438 { 2439 if (settings.Stickers.Position != StickersListPosition.Custom) 2440 { 2441 @RenderStickersCollection(settings.Stickers); 2442 } 2443 } 2444 @RenderImage(settings.Logo) 2445 </div> 2446 } 2447 else if (settings.Image != null) 2448 { 2449 <div class="flex-img image-hover__wrapper dw-mod"> 2450 @if (settings.Stickers != null) 2451 { 2452 if (settings.Stickers.Position != StickersListPosition.Custom) 2453 { 2454 @RenderStickersCollection(settings.Stickers); 2455 } 2456 } 2457 @RenderImage(settings.Image) 2458 </div> 2459 } 2460 </div> 2461 </div> 2462 2463 @if (!String.IsNullOrEmpty(settings.Title) || !String.IsNullOrEmpty(settings.Summary)) 2464 { 2465 <div class="grid__col-md-9"> 2466 @if (!String.IsNullOrEmpty(settings.Title)) 2467 { 2468 <h3 class="article-list__item-header u-truncate-text dw-mod">@settings.Title</h3> 2469 } 2470 @if (settings.Stickers != null) 2471 { 2472 if (settings.Stickers.Position == StickersListPosition.Custom) 2473 { 2474 @RenderStickersCollection(settings.Stickers); 2475 } 2476 } 2477 @if (!String.IsNullOrEmpty(settings.SubTitle)) 2478 { 2479 <div class="article-list__item-micro-info u-truncate-text dw-mod">@settings.SubTitle</div> 2480 } 2481 @if (!String.IsNullOrEmpty(settings.Summary)) 2482 { 2483 <p class="article__short-summary dw-mod">@settings.Summary</p> 2484 } 2485 </div> 2486 } 2487 </div> 2488 </a> 2489 } 2490 2491 @helper RenderArticleListItemSimple(ArticleListItem settings) 2492 { 2493 <a href="@settings.Link" class="u-color-inherit"> 2494 <div class="grid u-color-light--bg u-no-padding dw-mod"> 2495 <div class="grid__col-md-12"> 2496 @if (!String.IsNullOrEmpty(settings.Title)) 2497 { 2498 <div class="article-list-item__header u-truncate-text u-no-margin dw-mod">@settings.Title</div> 2499 } 2500 @if (!String.IsNullOrEmpty(settings.SubTitle)) 2501 { 2502 <div class="article-list__item-micro-info u-truncate-text dw-mod">@settings.SubTitle</div> 2503 } 2504 </div> 2505 </div> 2506 </a> 2507 } 2508 @using System.Reflection 2509 @using Dynamicweb.Rapido.Blocks.Components.Articles 2510 2511 2512 @* Component for the articles *@ 2513 2514 @helper RenderArticleAuthorAndDate(ArticleAuthorAndDate settings) 2515 { 2516 dynamic[] methodParameters = new dynamic[1]; 2517 methodParameters[0] = settings; 2518 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleAuthorAndDateCustom"); 2519 2520 if (customMethod != null) 2521 { 2522 @customMethod.Invoke(this, methodParameters).ToString(); 2523 } else { 2524 <small class="article__subscription"> 2525 @if (!(string.IsNullOrWhiteSpace(settings.Author) && string.IsNullOrWhiteSpace(settings.Date))) 2526 { 2527 <text>@Translate("Written")</text> 2528 } 2529 @if (!string.IsNullOrWhiteSpace(settings.Author)) 2530 { 2531 <text>@Translate("by") @settings.Author</text> 2532 } 2533 @if (!string.IsNullOrWhiteSpace(settings.Date)) 2534 { 2535 <text>@Translate("on") @settings.Date</text> 2536 } 2537 </small> 2538 } 2539 } 2540 @using System.Reflection 2541 @using Dynamicweb.Rapido.Blocks.Components.Articles 2542 2543 2544 @* Component for the articles *@ 2545 2546 @helper RenderArticleLink(ArticleLink settings) 2547 { 2548 dynamic[] methodParameters = new dynamic[1]; 2549 methodParameters[0] = settings; 2550 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleLinkCustom"); 2551 2552 if (customMethod != null) 2553 { 2554 @customMethod.Invoke(this, methodParameters).ToString(); 2555 } else { 2556 if (!String.IsNullOrEmpty(settings.Title)) 2557 { 2558 <div class="grid__cell"> 2559 @RenderButton(settings) 2560 </div> 2561 } 2562 } 2563 } 2564 @using System.Reflection 2565 @using Dynamicweb.Rapido.Blocks 2566 @using Dynamicweb.Rapido.Blocks.Components.Articles 2567 @using Dynamicweb.Rapido.Blocks.Components.General 2568 2569 2570 @* Component for the articles *@ 2571 2572 @helper RenderArticleCarousel(ArticleCarousel settings) 2573 { 2574 dynamic[] methodParameters = new dynamic[1]; 2575 methodParameters[0] = settings; 2576 MethodInfo customMethod = this.GetType().GetMethod(settings.HelperName + "Custom"); 2577 2578 if (customMethod != null) 2579 { 2580 @customMethod.Invoke(this, methodParameters).ToString(); 2581 } else { 2582 <div class="grid"> 2583 <div class="grid__col-12"> 2584 <div class="carousel" id="carousel_@settings.Id"> 2585 <div class="carousel__container js-carousel-slides dw-mod"> 2586 @RenderBlockList(settings.SubBlocks) 2587 </div> 2588 </div> 2589 </div> 2590 </div> 2591 2592 <script> 2593 document.addEventListener("DOMContentLoaded", function () { 2594 new CarouselModule("#carousel_@settings.Id", { 2595 slideTime: 0, 2596 dots: true 2597 }); 2598 }); 2599 </script> 2600 } 2601 } 2602 2603 @helper RenderArticleCarouselSlide(ArticleCarouselSlide settings) 2604 { 2605 dynamic[] methodParameters = new dynamic[1]; 2606 methodParameters[0] = settings; 2607 MethodInfo customMethod = this.GetType().GetMethod(settings.HelperName + "Custom"); 2608 2609 if (customMethod != null) 2610 { 2611 @customMethod.Invoke(this, methodParameters).ToString(); 2612 } 2613 else 2614 { 2615 string imageEngine = "/Admin/Public/GetImage.ashx?"; 2616 2617 string defaultImage = settings.ImageSettings != null ? imageEngine : settings.Image; 2618 if (settings.ImageSettings != null) 2619 { 2620 defaultImage += settings.ImageSettings.Width != 0 ? "Width=" + settings.ImageSettings.Width + "&" : ""; 2621 defaultImage += settings.ImageSettings.Height != 0 ? "Height=" + settings.ImageSettings.Height + "&" : ""; 2622 defaultImage += "Crop=" + settings.ImageSettings.Crop + "&"; 2623 defaultImage += "Compression=" + settings.ImageSettings.Compression + "&"; 2624 defaultImage += "DoNotUpscale=" + settings.ImageSettings.DoNotUpscale.ToString() + "&"; 2625 defaultImage += "FillCanvas=" + settings.ImageSettings.FillCanvas.ToString() + "&"; 2626 } 2627 defaultImage += "&Image=" + settings.Image; 2628 2629 <div class="carousel__slide u-min-h300px u-flex dw-mod" style="background-size:cover; background-image:url('@defaultImage')"> 2630 <a class="article-carousel-item__wrap" href="@settings.Link" title="@settings.Title"> 2631 <h2 class="article-list__item-header u-truncate-text u-color-light dw-mod">@settings.Title</h2> 2632 <div class="article-list__item-info"> 2633 @if (settings.Stickers != null) 2634 { 2635 settings.Stickers.Position = StickersListPosition.Custom; 2636 @RenderStickersCollection(settings.Stickers); 2637 } 2638 2639 <small class="u-margin-top--lg u-color-light"> 2640 @if (!(string.IsNullOrWhiteSpace(settings.Author) && string.IsNullOrWhiteSpace(settings.Date))) 2641 { 2642 <text>@Translate("Written")</text> 2643 } 2644 @if (!string.IsNullOrWhiteSpace(settings.Author)) 2645 { 2646 <text>@Translate("by") @settings.Author</text> 2647 } 2648 @if (!string.IsNullOrWhiteSpace(settings.Date)) 2649 { 2650 <text>@Translate("on") @settings.Date</text> 2651 } 2652 </small> 2653 </div> 2654 2655 <h3 class="article__short-summary u-color-light">@settings.Summary</h3> 2656 </a> 2657 @if (settings.UseFilters == true) 2658 { 2659 <div class="background-image image-filter image-filter--darken dw-mod"></div> 2660 } 2661 </div> 2662 } 2663 } 2664 @using System.Text.RegularExpressions 2665 @using Dynamicweb.Rapido.Blocks.Components 2666 @using Dynamicweb.Rapido.Blocks.Components.General 2667 @using Dynamicweb.Rapido.Blocks.Components.Articles 2668 @using Dynamicweb.Rapido.Blocks 2669 2670 @* Component for the articles *@ 2671 2672 @helper RenderArticleVideo(ArticleVideo settings) 2673 { 2674 dynamic[] methodParameters = new dynamic[1]; 2675 methodParameters[0] = settings; 2676 MethodInfo customMethod = this.GetType().GetMethod("RenderArticleTextCustom"); 2677 2678 if (customMethod != null) 2679 { 2680 @customMethod.Invoke(this, methodParameters).ToString(); 2681 } else { 2682 if (settings.Url != null) 2683 { 2684 //getting video ID from youtube URL 2685 string videoCode = settings.Url; 2686 Regex regex = new Regex(@".be\/(.[^?]*)"); 2687 Match match = regex.Match(videoCode); 2688 string videoId = ""; 2689 if (match.Success) 2690 { 2691 videoId = match.Groups[1].Value; 2692 } 2693 else 2694 { 2695 regex = new Regex(@"v=([^&]+)"); 2696 match = regex.Match(videoCode); 2697 if (match.Success) 2698 { 2699 videoId = match.Groups[1].Value; 2700 } 2701 } 2702 2703 int autoPlay = settings.AutoPlay == "true" ? 1 : 0; 2704 2705 <div class="video-wrapper"> 2706 <div class="js-youtube-video" data-video="@videoId" id="ytPlayer@(Guid.NewGuid().ToString("N"))" data-auto-play="@autoPlay" data-enable-controls="1"></div> 2707 </div> 2708 } 2709 } 2710 } 2711 2712 2713 2714 @* Simple helpers *@ 2715 2716 @*Requires the Gallery ItemType that comes with Rapido*@ 2717 @helper RenderArticleItemGallery(IList<ItemViewModel> gallery) { 2718 if (gallery != null && gallery.Count > 0) 2719 { 2720 int count = 1; 2721 2722 foreach (var item in gallery) 2723 { 2724 if (item.GetFile("ImagePath") != null) 2725 { 2726 string image = item.GetFile("ImagePath").PathUrlEncoded; 2727 string imagePrefix = "/Admin/Public/GetImage.ashx?width=1200&height=820&crop=5&Compression=99&DoNotUpscale=1&image="; 2728 int imagesCount = gallery.Count; 2729 2730 if (count == 1) 2731 { 2732 <label class="gallery" for="GalleryModalTrigger" onclick="Gallery.openImage(this.querySelector('.js-gallery'))"> 2733 <span class="gallery__main-image"> 2734 <img src="/Files/Images/placeholder.gif" data-src="/Admin/Public/GetImage.ashx?width=992&height=760&crop=0&Compression=99&DoNotUpscale=1&image=@image" class="b-lazy flex-img js-gallery" alt="" data-for="FullImage" data-image="@imagePrefix@image" /> 2735 </span> 2736 <span class="gallery__image-counter"> 2737 <i class="fas fa-camera fa-2x"></i> <span class="gallery__image-counter__number">@imagesCount</span> 2738 <span class="gallery__image-counter__text">@Translate("See all") <i class="fas fa-angle-right"></i></span> 2739 </span> 2740 </label> 2741 } 2742 else 2743 { 2744 <div class="u-hidden js-gallery" data-for="FullImage" data-image="@imagePrefix@image"></div> 2745 } 2746 2747 count++; 2748 } 2749 } 2750 } 2751 } 2752 2753 @helper RenderArticleItemGalleryModal() { 2754 <!-- Trigger for the gallery modal --> 2755 <input type="checkbox" id="GalleryModalTrigger" class="modal-trigger" /> 2756 2757 <!-- Gallery modal --> 2758 <div class="modal-container"> 2759 <label for="GalleryModalTrigger" id="GalleryModalOverlay" class="modal-overlay"></label> 2760 <div class="modal modal--full" id="GalleryModal"> 2761 <div class="modal__body modal__body--full"> 2762 <div class="gallery-slider"> 2763 <div class="gallery-slider__image"> 2764 <img src="#" alt="" class="modal--full__img" id="FullImage" /> 2765 </div> 2766 <div class="gallery-slider__image-counter" id="FullImage_counter"></div> 2767 <label class="gallery-slider__close-btn" for="GalleryModalTrigger"></label> 2768 <button class="gallery-slider__previous-btn" id="FullImage_prev" onclick="Gallery.prevImage('FullImage')"></button> 2769 <button class="gallery-slider__next-btn" id="FullImage_next" onclick="Gallery.nextImage('FullImage')"></button> 2770 </div> 2771 </div> 2772 </div> 2773 </div> 2774 } 2775 2776 2777 @helper RenderMobileFilters(List<Block> subBlocks) 2778 { 2779 if (subBlocks.Count > 0) 2780 { 2781 <div class="grid__col-12"> 2782 <input type="checkbox" id="CheckFilters" class="js-remember-state u-hidden" data-expand="CheckFilters" /> 2783 <div class="grid u-margin-bottom dw-mod" data-trigger="CheckFilters"> 2784 @RenderBlockList(subBlocks) 2785 </div> 2786 <label for="CheckFilters" class="btn btn--secondary btn--full dw-mod js-expand-hide" data-trigger="CheckFilters">@Translate("Select filters")</label> 2787 <label for="CheckFilters" class="btn btn--secondary btn--full dw-mod expandable--collapsed" data-trigger="CheckFilters">@Translate("Close filters")</label> 2788 </div> 2789 } 2790 } 2791 @if (File.Exists(HttpContext.Current.Server.MapPath("/Files/Templates/Designs/Rapido/Components/Custom/Custom__Blocks.cshtml"))) 2792 { 2793 <text>@using Dynamicweb.Rapido.Blocks.Components.General 2794 </text> 2795 } 2796 2797 2798 @* The @RenderBlockList base helper is included in Components/GridBuilder.cshtml *@ 2799 @RenderBlockList(articleListParagraph.BlocksRoot.BlocksList)
“ Sustainability is not just a goal – it is an integral part of our business strategy... „
Build your own machine
Configure and request for a demo, more technical information, rental information or a quote from a dealer.
Find a local dealer
The Egholm utility machines are sold and serviced through a wide network of dealers and distributors.
Egholm app
The app is designed for dealers & machine operators of Egholm machines and attachment.