Vi fejrer Mistrals 30 års jubilæum og 
Findahl by Hammels 75 års jubilæeum med eksklusive 
og bæredygtige designs i limited edition

30 år med Mistral.

Vi fejrer Mistrals 30 års jubilæum. Du har netop nu muligheden for at blive den heldige ejer af de specielle limited edition modeller i racing green.

Vælg imellem bogkasse 025, skrivepult 004 og av modul 311.

Kontakt en af vores forhandlere for at bestille disse unikke møbelklassikere. 

 

75-års jubilæum.

Du har netop nu muligheden for at bliver ejer af den unikke limited edition Tradition stol i sort eg med eksklusivt cognacfarvet kernelæder. En smukt jubilæumsmodel dekoreret med messing emblem. 


Kontakt en af vores forhandlere for at bestille denne smukke kvalitetsstol. 

 

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_7e3c70c0144c4605b04a55c269ef764e.<>c__DisplayClass48_0.<RenderTheSlide>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\Carousel.cshtml:line 2417
   at CompiledRazorTemplates.Dynamic.RazorEngine_7e3c70c0144c4605b04a55c269ef764e.Execute() in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\Carousel.cshtml:line 2394
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

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

Bliv inspireret
til din egen
indretning


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