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