Version 100 % électrique du porte-outils populaire Park Ranger 2155
Park Ranger 2155
Haute flexibilité et maniabilité
Une machine polyvalente avec plusieurs outils sur mesure pour tout type de travaux d’entretien extérieur tout au long de l’année.
25 CV | 19 outils
Park Ranger 2155e
100 % électrique - 0 % émission
Une machine électrique polyvalente avec grand confort et des outils sur mesure pour tout type de travaux d’entretien extérieur.
23,5 kWh | 19 outils
City Ranger 2260
Puissance et polyvalence
Une solution conviviale pour les travaux intenses de maintenance en extérieur - avec changement d’outils en 1 minute seulement!
33 CV | 18 outils
City Ranger 3070
Performance à plus grande échelle
Un porte-outils haute de gamme compact pour une utilisation quotidienne dans les grands espaces extérieurs.
74 CV | 10 outils
“ Chez Egholm, nous testons sans cesse. Car seuls des tests rigoureux nous permettent de garantir la qualité supérieure dont nous sommes fiers... „
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)
“ La durabilité n’est pas seulement un objectif – elle fait partie intégrante de notre stratégie commerciale... „
Configurez votre machine
Configurez une machine Egholm et demandez une démo, des informations plus techniques ou un devis à un revendeur.
Trouvez une distributeur local
Les machines utilitaires Egholm sont commercialisées et entretenues avec l’appui d’un vaste réseau de concessionnaires et de distributeurs.
Egholm app
L'application est conçue pour les revendeur et les opérateurs de machines et d'outils Egholm.