Findahl by Hammel – dänische Handwerkskunst seit 1946
Entdecken Sie die schönen Findahl Möbel und finden Sie genau den Esszimmerstuhl, Barhocker, Loungesessel oder Esstisch, der zu Ihrer Einrichtung passt. Wenn Sie sich für Findahl by Hammel entscheiden, können Sie sicher sein, ein Möbel von hoher dänischer Qualität zu erhalten.
Jedes einzelne Produkt wird sorgfältig in unserer Möbelfabrik in Dänemark hergestellt, und unsere erfahrenen Möbelschreiner haben ein Auge für die kleinen Details. In diesem Möbelprogramm finden Sie den bekannten Buck Barhocker und den legendären Mette Stuhl, entworfen von Carsten Buhl.
Wir sind stolz darauf, alle Findahl Stühle mit „Made in Denmark“ zu kennzeichnen.
FINDAHL BY HAMMEL MÖBEL
Gestalten Sie Ihr persönliches Stuhl
Nutzen Sie unseren Konfigurator, um ein Stuhl ganz nach Ihren Vorstellungen zu entwerfen. Sobald Sie Ihr Design erstellt haben, können Sie sofort sehen, wie viel diese Einrichtung kostet.
Sie können dann Ihr Design ausdrucken oder es direkt an Ihre E-Mail-Adresse senden.
Der Konfigurator kann auf dem Handy, dem Tablet oder direkt in Ihrem Browser verwendet werden. Erfahren Sie unten, wie es funktioniert:
Wähle Sie Ihre Plattform
Mehr über Findahl by Hammel
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_508a1daa8d924aaca68baa9066c12760.<>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 2413 at CompiledRazorTemplates.Dynamic.RazorEngine_508a1daa8d924aaca68baa9066c12760.Execute() in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\Carousel.cshtml:line 2390 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(" ", " "); 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 imageMedium += "&alternativeImage=" + alternativeImage; 976 977 imageMedium += "\""; 978 } 979 } 980 981 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 982 if (!string.IsNullOrEmpty(settings.OnClick)) { optionalAttributes.Add("onclick", settings.OnClick); } 983 if (!string.IsNullOrEmpty(settings.Title)) 984 { 985 optionalAttributes.Add("alt", settings.Title); 986 optionalAttributes.Add("title", settings.Title); 987 } 988 989 string imgAlt = ""; 990 string imgTitle = ""; 991 992 if (!string.IsNullOrWhiteSpace(alText)) 993 { 994 imgAlt = "alt=" + '"' + alText + '"'; 995 } 996 997 if (!string.IsNullOrWhiteSpace(titleText)) 998 { 999 imgTitle = "title=" + '"' + titleText + '"'; 1000 1001 } 1002 1003 1004 if (settings.DisableLazyLoad) 1005 { 1006 <img id="@settings.Id" class="@imageStyle @settings.CssClass dw-mod" src="@defaultImage" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes) @imgAlt @imgTitle /> 1007 } 1008 else 1009 { 1010 <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 /> 1011 } 1012 } 1013 } 1014 @using System.Reflection 1015 @using Dynamicweb.Rapido.Blocks.Components.General 1016 @using Dynamicweb.Rapido.Blocks.Components 1017 1018 @* Component *@ 1019 1020 @helper RenderFileField(FileField settings) 1021 { 1022 var attributes = new Dictionary<string, string>(); 1023 if (string.IsNullOrEmpty(settings.Id)) 1024 { 1025 settings.Id = Guid.NewGuid().ToString("N"); 1026 } 1027 1028 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1029 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1030 if (settings.Required) { attributes.Add("required", "true"); } 1031 if (settings.Multiple) { attributes.Add("multiple", "true"); } 1032 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1033 if (string.IsNullOrEmpty(settings.ChooseFileText)) 1034 { 1035 settings.ChooseFileText = Translate("Choose file"); 1036 } 1037 if (string.IsNullOrEmpty(settings.NoFilesChosenText)) 1038 { 1039 settings.NoFilesChosenText = Translate("No files chosen..."); 1040 } 1041 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1042 1043 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1044 1045 string setValueToFakeInput = "FileUpload.setValueToFakeInput(this)"; 1046 attributes.Add("onchange", setValueToFakeInput + (!string.IsNullOrEmpty(settings.OnChange) ? settings.OnChange : "")); 1047 1048 attributes.Add("type", "file"); 1049 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1050 settings.CssClass = "u-full-width " + settings.CssClass; 1051 1052 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1053 1054 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1055 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1056 { 1057 <div class="u-full-width"> 1058 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1059 @if (settings.Link != null) { 1060 <div class="u-pull--right"> 1061 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1062 @Render(settings.Link) 1063 </div> 1064 } 1065 </div> 1066 1067 } 1068 1069 @if (!string.IsNullOrEmpty(settings.HelpText)) 1070 { 1071 <small class="form__help-text">@settings.HelpText</small> 1072 } 1073 1074 <div class="form__field-combi file-input u-no-margin dw-mod"> 1075 <input @ComponentMethods.AddAttributes(resultAttributes) class="file-input__real-input" data-no-files-text="@settings.NoFilesChosenText" data-many-files-text="@Translate("files")" /> 1076 <label for="@settings.Id" class="file-input__btn btn--secondary btn dw-mod">@settings.ChooseFileText</label> 1077 <label for="@settings.Id" class="@settings.CssClass file-input__fake-input js-fake-input dw-mod">@settings.NoFilesChosenText</label> 1078 @if (settings.UploadButton != null) 1079 { 1080 settings.UploadButton.CssClass += " btn--condensed u-no-margin"; 1081 @Render(settings.UploadButton) 1082 } 1083 </div> 1084 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1085 </div> 1086 } 1087 @using System.Reflection 1088 @using Dynamicweb.Rapido.Blocks.Components.General 1089 @using Dynamicweb.Rapido.Blocks.Components 1090 @using Dynamicweb.Core 1091 @using System.Linq 1092 1093 @* Component *@ 1094 1095 @helper RenderDateTimeField(DateTimeField settings) 1096 { 1097 if (string.IsNullOrEmpty(settings.Id)) 1098 { 1099 settings.Id = Guid.NewGuid().ToString("N"); 1100 } 1101 1102 var textField = new TextField { 1103 Name = settings.Name, 1104 Id = settings.Id, 1105 Label = settings.Label, 1106 HelpText = settings.HelpText, 1107 Value = settings.Value, 1108 Disabled = settings.Disabled, 1109 Required = settings.Required, 1110 ErrorMessage = settings.ErrorMessage, 1111 CssClass = settings.CssClass, 1112 WrapperCssClass = settings.WrapperCssClass, 1113 OnChange = settings.OnChange, 1114 OnClick = settings.OnClick, 1115 Link = settings.Link, 1116 ExtraAttributes = settings.ExtraAttributes, 1117 // 1118 Placeholder = settings.Placeholder 1119 }; 1120 1121 @Render(textField) 1122 1123 List<string> jsAttributes = new List<string>(); 1124 1125 jsAttributes.Add("mode: '" + Enum.GetName(typeof(DateTimeFieldMode), settings.Mode).ToLower() + "'"); 1126 1127 if (!string.IsNullOrEmpty(settings.DateFormat)) 1128 { 1129 jsAttributes.Add("dateFormat: '" + settings.DateFormat + "'"); 1130 } 1131 if (!string.IsNullOrEmpty(settings.MinDate)) 1132 { 1133 jsAttributes.Add("minDate: '" + settings.MinDate + "'"); 1134 } 1135 if (!string.IsNullOrEmpty(settings.MaxDate)) 1136 { 1137 jsAttributes.Add("maxDate: '" + settings.MaxDate + "'"); 1138 } 1139 if (settings.IsInline) 1140 { 1141 jsAttributes.Add("inline: " + Converter.ToString(settings.IsInline).ToLower()); 1142 } 1143 if (settings.EnableTime) 1144 { 1145 jsAttributes.Add("enableTime: " + Converter.ToString(settings.EnableTime).ToLower()); 1146 } 1147 if (settings.EnableWeekNumbers) 1148 { 1149 jsAttributes.Add("weekNumbers: " + Converter.ToString(settings.EnableWeekNumbers).ToLower()); 1150 } 1151 1152 jsAttributes.AddRange(settings.GetFlatPickrOptions().Select(x => x.Key + ": " + x.Value)); 1153 1154 <script> 1155 document.addEventListener("DOMContentLoaded", function () { 1156 flatpickr("#@textField.Id", { 1157 @string.Join(",", jsAttributes) 1158 }); 1159 }); 1160 </script> 1161 } 1162 @using System.Reflection 1163 @using Dynamicweb.Rapido.Blocks.Components.General 1164 @using Dynamicweb.Rapido.Blocks.Components 1165 1166 @* Component *@ 1167 1168 @helper RenderTextField(TextField settings) 1169 { 1170 var attributes = new Dictionary<string, string>(); 1171 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1172 { 1173 settings.Id = Guid.NewGuid().ToString("N"); 1174 } 1175 1176 /*base settings*/ 1177 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1178 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1179 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1180 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1181 if (settings.Required) { attributes.Add("required", "true"); } 1182 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1183 /*end*/ 1184 1185 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1186 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1187 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1188 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1189 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1190 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1191 attributes.Add("type", Enum.GetName(typeof(TextFieldType), settings.Type).ToLower()); 1192 if (settings.Type == TextFieldType.Password) { attributes.Add("autocomplete", "off"); }; 1193 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1194 1195 settings.CssClass = "u-full-width " + settings.CssClass; 1196 1197 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1198 1199 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1200 1201 string noMargin = "u-no-margin"; 1202 if (!settings.ReadOnly) { 1203 noMargin = ""; 1204 } 1205 1206 <div class="form__field-group u-full-width @noMargin @settings.WrapperCssClass dw-mod"> 1207 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1208 { 1209 <div class="u-full-width"> 1210 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1211 @if (settings.Link != null) { 1212 settings.Link.ButtonLayout = ButtonLayout.LinkClean; 1213 1214 <div class="u-pull--right"> 1215 @Render(settings.Link) 1216 </div> 1217 } 1218 </div> 1219 1220 } 1221 1222 @if (!string.IsNullOrEmpty(settings.HelpText)) 1223 { 1224 <small class="form__help-text">@settings.HelpText</small> 1225 } 1226 1227 @if (settings.ActionButton != null) 1228 { 1229 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1230 <div class="form__field-combi u-no-margin dw-mod"> 1231 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1232 @Render(settings.ActionButton) 1233 </div> 1234 } 1235 else 1236 { 1237 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1238 } 1239 1240 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1241 </div> 1242 } 1243 @using System.Reflection 1244 @using Dynamicweb.Rapido.Blocks.Components.General 1245 @using Dynamicweb.Rapido.Blocks.Components 1246 1247 @* Component *@ 1248 1249 @helper RenderNumberField(NumberField settings) 1250 { 1251 var attributes = new Dictionary<string, string>(); 1252 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1253 { 1254 settings.Id = Guid.NewGuid().ToString("N"); 1255 } 1256 1257 /*base settings*/ 1258 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1259 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1260 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1261 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1262 if (settings.Required) { attributes.Add("required", "true"); } 1263 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1264 /*end*/ 1265 1266 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1267 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1268 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1269 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1270 if (settings.Max != null) { attributes.Add("max", settings.Max.ToString()); } 1271 if (settings.Min != null) { attributes.Add("min", settings.Min.ToString()); } 1272 if (settings.Step != 0) { attributes.Add("step", settings.Step.ToString()); } 1273 if (settings.Value != null && !string.IsNullOrEmpty(settings.Value.ToString())) { attributes.Add("value", settings.Value.ToString()); } 1274 attributes.Add("type", "number"); 1275 1276 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1277 1278 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1279 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1280 { 1281 <div class="u-full-width"> 1282 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1283 @if (settings.Link != null) { 1284 <div class="u-pull--right"> 1285 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1286 @Render(settings.Link) 1287 </div> 1288 } 1289 </div> 1290 1291 } 1292 1293 @if (!string.IsNullOrEmpty(settings.HelpText)) 1294 { 1295 <small class="form__help-text">@settings.HelpText</small> 1296 } 1297 1298 @if (settings.ActionButton != null) 1299 { 1300 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1301 <div class="form__field-combi u-no-margin dw-mod"> 1302 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1303 @Render(settings.ActionButton) 1304 </div> 1305 } 1306 else 1307 { 1308 <div class="form__field-combi u-no-margin dw-mod"> 1309 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1310 </div> 1311 } 1312 1313 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1314 </div> 1315 } 1316 @using System.Reflection 1317 @using Dynamicweb.Rapido.Blocks.Components.General 1318 @using Dynamicweb.Rapido.Blocks.Components 1319 1320 1321 @* Component *@ 1322 1323 @helper RenderTextareaField(TextareaField settings) 1324 { 1325 Dictionary<string, string> attributes = new Dictionary<string, string>(); 1326 string id = settings.Id; 1327 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(id)) 1328 { 1329 id = Guid.NewGuid().ToString("N"); 1330 } 1331 1332 if (!string.IsNullOrEmpty(id)) { attributes.Add("id", id); } 1333 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1334 if (!string.IsNullOrEmpty(settings.OnKeyUp)) { attributes.Add("onkeyup", settings.OnKeyUp); } 1335 if (!string.IsNullOrEmpty(settings.OnInput)) { attributes.Add("oninput", settings.OnInput); } 1336 if (!string.IsNullOrEmpty(settings.OnFocus)) { attributes.Add("onfocus", settings.OnFocus); } 1337 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1338 if (!string.IsNullOrEmpty(settings.Placeholder)) { attributes.Add("placeholder", settings.Placeholder); } 1339 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1340 if (settings.Required) { attributes.Add("required", "true"); } 1341 if (settings.ReadOnly) { attributes.Add("readonly", "true"); } 1342 if (settings.MaxLength != 0) { attributes.Add("maxlength", settings.MaxLength.ToString()); } 1343 if (settings.Rows != 0) { attributes.Add("rows", settings.Rows.ToString()); } 1344 attributes.Add("name", settings.Name); 1345 1346 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1347 1348 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1349 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1350 { 1351 <div class="u-full-width"> 1352 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1353 @if (settings.Link != null) { 1354 <div class="u-pull--right"> 1355 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1356 @Render(settings.Link) 1357 </div> 1358 } 1359 </div> 1360 } 1361 1362 @if (!string.IsNullOrEmpty(settings.HelpText)) 1363 { 1364 <small class="form__help-text">@settings.HelpText</small> 1365 } 1366 1367 <textarea class="u-full-width @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Value</textarea> 1368 1369 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1370 </div> 1371 } 1372 @using System.Reflection 1373 @using Dynamicweb.Rapido.Blocks.Components.General 1374 @using Dynamicweb.Rapido.Blocks.Components 1375 1376 1377 @* Component *@ 1378 1379 @helper RenderHiddenField(HiddenField settings) { 1380 var attributes = new Dictionary<string, string>(); 1381 attributes.Add("type", "hidden"); 1382 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1383 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1384 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1385 1386 <input @ComponentMethods.AddAttributes(attributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)/> 1387 } 1388 @using System.Reflection 1389 @using Dynamicweb.Rapido.Blocks.Components.General 1390 @using Dynamicweb.Rapido.Blocks.Components 1391 1392 @* Component *@ 1393 1394 @helper RenderCheckboxField(CheckboxField settings) 1395 { 1396 var attributes = new Dictionary<string, string>(); 1397 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1398 { 1399 settings.Id = Guid.NewGuid().ToString("N"); 1400 } 1401 1402 /*base settings*/ 1403 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1404 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1405 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1406 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1407 if (settings.Required) { attributes.Add("required", "true"); } 1408 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1409 /*end*/ 1410 1411 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1412 1413 attributes.Add("type", "checkbox"); 1414 if (settings.Checked) { attributes.Add("checked", "true"); } 1415 settings.CssClass = "form__control " + settings.CssClass; 1416 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1417 1418 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1419 1420 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1421 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1422 @if (!string.IsNullOrEmpty(settings.Label)) 1423 { 1424 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1425 } 1426 1427 @if (settings.Link != null) { 1428 <span> 1429 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1430 @Render(settings.Link) 1431 </span> 1432 } 1433 1434 @if (!string.IsNullOrEmpty(settings.HelpText)) 1435 { 1436 <small class="form__help-text checkbox-help dw-mod">@settings.HelpText</small> 1437 } 1438 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1439 </div> 1440 } 1441 @using System.Reflection 1442 @using Dynamicweb.Rapido.Blocks.Components.General 1443 @using Dynamicweb.Rapido.Blocks.Components 1444 1445 1446 @* Component *@ 1447 1448 @helper RenderCheckboxListField(CheckboxListField settings) 1449 { 1450 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 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 1465 <div class="u-pull--left"> 1466 @if (!string.IsNullOrEmpty(settings.HelpText)) 1467 { 1468 <small class="form__help-text">@settings.HelpText</small> 1469 } 1470 1471 @foreach (var item in settings.Options) 1472 { 1473 if (settings.Required) 1474 { 1475 item.Required = true; 1476 } 1477 if (settings.Disabled) 1478 { 1479 item.Disabled = true; 1480 } 1481 if (!string.IsNullOrEmpty(settings.Name)) 1482 { 1483 item.Name = settings.Name; 1484 } 1485 if (!string.IsNullOrEmpty(settings.CssClass)) 1486 { 1487 item.CssClass += settings.CssClass; 1488 } 1489 1490 /* value is not supported */ 1491 1492 if (!string.IsNullOrEmpty(settings.OnClick)) 1493 { 1494 item.OnClick += settings.OnClick; 1495 } 1496 if (!string.IsNullOrEmpty(settings.OnChange)) 1497 { 1498 item.OnChange += settings.OnChange; 1499 } 1500 @Render(item) 1501 } 1502 1503 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1504 </div> 1505 1506 </div> 1507 } 1508 @using Dynamicweb.Rapido.Blocks.Components.General 1509 1510 @* Component *@ 1511 1512 @helper RenderSearch(Search settings) 1513 { 1514 var searchValue = HttpContext.Current.Request.QueryString.Get(settings.SearchParameter) ?? ""; 1515 var groupValue = HttpContext.Current.Request.QueryString.Get(settings.GroupsParameter) ?? ""; 1516 1517 if (string.IsNullOrEmpty(settings.Id)) 1518 { 1519 settings.Id = Guid.NewGuid().ToString("N"); 1520 } 1521 1522 var resultAttributes = new Dictionary<string, string>(); 1523 1524 if (settings.PageSize != 0) 1525 { 1526 resultAttributes.Add("data-page-size", settings.PageSize.ToString()); 1527 } 1528 if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1529 { 1530 resultAttributes.Add("data-groups-feed-url", settings.GroupItemsFeedUrl); 1531 if (!string.IsNullOrEmpty(groupValue)) 1532 { 1533 resultAttributes.Add("data-selected-group", groupValue); 1534 } 1535 if (!string.IsNullOrEmpty(settings.GroupsParameter)) 1536 { 1537 resultAttributes.Add("data-groups-parameter", settings.GroupsParameter); 1538 } 1539 } 1540 resultAttributes.Add("data-force-init", "true"); 1541 if (settings.GoToFirstSearchResultOnEnter) 1542 { 1543 resultAttributes.Add("data-go-to-first-search-result-on-enter", settings.GoToFirstSearchResultOnEnter.ToString().ToLower()); 1544 } 1545 if (!string.IsNullOrEmpty(settings.SearchParameter)) 1546 { 1547 resultAttributes.Add("data-search-parameter", settings.SearchParameter); 1548 } 1549 resultAttributes.Add("data-search-feed-url", settings.SearchData.SearchFeedUrl); 1550 resultAttributes.Add("data-results-template-id", settings.SearchData.ResultsTemplateId); 1551 1552 if (settings.SecondSearchData != null) 1553 { 1554 resultAttributes.Add("data-second-search-feed-url", settings.SecondSearchData.SearchFeedUrl); 1555 resultAttributes.Add("data-second-results-template-id", settings.SecondSearchData.ResultsTemplateId); 1556 } 1557 if (!string.IsNullOrEmpty(settings.ResultsPageUrl)) 1558 { 1559 resultAttributes.Add("data-results-page-url", settings.ResultsPageUrl); 1560 } 1561 1562 resultAttributes = resultAttributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1563 1564 string searchFieldCss = (settings.SearchButton == null) ? "search--with-icon" : ""; 1565 1566 <div class="search @settings.CssClass @searchFieldCss js-search-data-source dw-mod" id="@settings.Id" @ComponentMethods.AddAttributes(resultAttributes)> 1567 @if (!string.IsNullOrEmpty(settings.GroupItemsFeedUrl)) 1568 { 1569 <button type="button" class="search__groups-btn dw-mod js-search-groups-btn">@Translate("All")</button> 1570 <ul class="dropdown dropdown--absolute-position dw-mod search__groups-results js-search-groups-list"></ul> 1571 } 1572 1573 <input type="text" class="search__field dw-mod js-search-field" placeholder="@settings.Placeholder" value="@searchValue"> 1574 1575 <div class="dropdown dropdown--absolute-position search__results dw-mod js-search-results @(settings.SecondSearchData != null ? "search__results--combined" : "")"> 1576 @if (settings.SecondSearchData != null) 1577 { 1578 <div class="search__column search__column--products dw-mod"> 1579 <div class="search__column-header dw-mod">@Translate("Products")</div> 1580 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1581 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1582 { 1583 @Render(new Link { 1584 Title = Translate("View all"), 1585 CssClass = "js-view-all-button u-margin", 1586 Href = settings.SearchData.ResultsPageUrl 1587 }); 1588 } 1589 </div> 1590 <div class="search__column search__column--pages dw-mod"> 1591 <div class="search__column-header">@Translate("Pages")</div> 1592 <ul class="search__results-list dw-mod js-search-results-second-list" id="@(settings.Id)_SecondResultsList"></ul> 1593 @if (!string.IsNullOrEmpty(settings.SecondSearchData.ResultsPageUrl)) 1594 { 1595 @Render(new Link 1596 { 1597 Title = Translate("View all"), 1598 CssClass = "js-view-all-button u-margin", 1599 Href = settings.SecondSearchData.ResultsPageUrl 1600 }); 1601 } 1602 </div> 1603 } 1604 else 1605 { 1606 <div class="search__column search__column--only dw-mod"> 1607 <ul class="search__results-list dw-mod js-search-results-list" id="@(settings.Id)_ResultsList"></ul> 1608 @if (!string.IsNullOrEmpty(settings.SearchData.ResultsPageUrl)) 1609 { 1610 @Render(new Link { 1611 Title = Translate("View all"), 1612 CssClass = "js-view-all-button u-margin", 1613 Href = settings.SearchData.ResultsPageUrl 1614 }); 1615 } 1616 </div> 1617 } 1618 </div> 1619 1620 @if (settings.SearchButton != null) 1621 { 1622 settings.SearchButton.CssClass += " search__btn js-search-btn"; 1623 if (settings.RenderDefaultSearchIcon) 1624 { 1625 settings.SearchButton.Icon = new Icon { Name = Pageview.AreaSettings.GetItem("Layout").GetItem("Icons").GetList("SearchIcon").SelectedValue }; 1626 } 1627 @Render(settings.SearchButton); 1628 } 1629 </div> 1630 } 1631 @using System.Reflection 1632 @using Dynamicweb.Rapido.Blocks.Components.General 1633 @using Dynamicweb.Rapido.Blocks.Components 1634 1635 1636 @* Component *@ 1637 1638 @helper RenderSelectField(SelectField settings) 1639 { 1640 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1641 { 1642 settings.Id = Guid.NewGuid().ToString("N"); 1643 } 1644 1645 <div class="form__field-group u-full-width @settings.WrapperCssClass dw-mod"> 1646 @if (!string.IsNullOrEmpty(settings.Label) || settings.Link != null ) 1647 { 1648 <div class="u-full-width"> 1649 @if (!string.IsNullOrEmpty(settings.Label)) { <label for="@settings.Id" class="u-pull--left">@settings.Label</label> } 1650 @if (settings.Link != null) { 1651 <div class="u-pull--right"> 1652 @{ settings.Link.ButtonLayout = ButtonLayout.LinkClean; } 1653 @Render(settings.Link) 1654 </div> 1655 } 1656 </div> 1657 } 1658 1659 @if (!string.IsNullOrEmpty(settings.HelpText)) 1660 { 1661 <small class="form__help-text">@settings.HelpText</small> 1662 } 1663 1664 @if (settings.ActionButton != null) 1665 { 1666 settings.ActionButton.CssClass += " btn--condensed u-no-margin"; 1667 <div class="form__field-combi u-no-margin dw-mod"> 1668 @RenderSelectBase(settings) 1669 @Render(settings.ActionButton) 1670 </div> 1671 } 1672 else 1673 { 1674 @RenderSelectBase(settings) 1675 } 1676 1677 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1678 </div> 1679 } 1680 1681 @helper RenderSelectBase(SelectField settings) 1682 { 1683 var attributes = new Dictionary<string, string>(); 1684 1685 /*base settings*/ 1686 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1687 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1688 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1689 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1690 if (settings.Required) { attributes.Add("required", "true"); } 1691 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1692 /*end*/ 1693 1694 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1695 1696 <select @ComponentMethods.AddAttributes(resultAttributes) class="u-full-width @settings.CssClass dw-mod"> 1697 @if (settings.Default != null) 1698 { 1699 @Render(settings.Default) 1700 } 1701 1702 @foreach (var item in settings.Options) 1703 { 1704 if (settings.Value != null) { 1705 item.Checked = item.Value == settings.Value; 1706 } 1707 @Render(item) 1708 } 1709 </select> 1710 } 1711 @using System.Reflection 1712 @using Dynamicweb.Rapido.Blocks.Components.General 1713 @using Dynamicweb.Rapido.Blocks.Components 1714 1715 @* Component *@ 1716 1717 @helper RenderRadioButtonField(RadioButtonField settings) 1718 { 1719 var attributes = new Dictionary<string, string>(); 1720 if (!string.IsNullOrEmpty(settings.Label) && string.IsNullOrEmpty(settings.Id)) 1721 { 1722 settings.Id = Guid.NewGuid().ToString("N"); 1723 } 1724 1725 /*base settings*/ 1726 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1727 if (!string.IsNullOrEmpty(settings.OnClick)) { attributes.Add("onclick", settings.OnClick); } 1728 if (!string.IsNullOrEmpty(settings.OnChange)) { attributes.Add("onchange", settings.OnChange); } 1729 if (settings.Disabled) { attributes.Add("disabled", "true"); } 1730 if (settings.Required) { attributes.Add("required", "true"); } 1731 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); } 1732 /*end*/ 1733 1734 attributes.Add("type", "radio"); 1735 if (settings.Checked) { attributes.Add("checked", "true"); } 1736 settings.CssClass = "form__control " + settings.CssClass; 1737 if (settings.Value != null) { attributes.Add("value", settings.Value); } 1738 1739 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary (d => d.Key, d => d.Last().Value); 1740 1741 <div class="form__field-group @settings.WrapperCssClass dw-mod"> 1742 <input @ComponentMethods.AddAttributes(resultAttributes) class="@settings.CssClass dw-mod" /> 1743 @if (!string.IsNullOrEmpty(settings.Label)) 1744 { 1745 <label for="@settings.Id" class="dw-mod">@settings.Label</label> 1746 } 1747 @if (!string.IsNullOrEmpty(settings.HelpText)) 1748 { 1749 <small class="form__help-text">@settings.HelpText</small> 1750 } 1751 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1752 </div> 1753 } 1754 @using System.Reflection 1755 @using Dynamicweb.Rapido.Blocks.Components.General 1756 @using Dynamicweb.Rapido.Blocks.Components 1757 1758 1759 @* Component *@ 1760 1761 @helper RenderRadioButtonListField(RadioButtonListField settings) 1762 { 1763 if (settings.Required && !String.IsNullOrEmpty(settings.Label)) { settings.Label += " <span class=\"required dw-mod\">*</span>"; } 1764 1765 <div class="form__field-group @settings.WrapperCssClass u-margin-bottom dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1766 @if (!string.IsNullOrEmpty(settings.Label)) 1767 { 1768 <label>@settings.Label</label> 1769 } 1770 @if (!string.IsNullOrEmpty(settings.HelpText)) 1771 { 1772 <small class="form__help-text">@settings.HelpText</small> 1773 } 1774 1775 @foreach (var item in settings.Options) 1776 { 1777 if (settings.Required) 1778 { 1779 item.Required = true; 1780 } 1781 if (settings.Disabled) 1782 { 1783 item.Disabled = true; 1784 } 1785 if (!string.IsNullOrEmpty(settings.Name)) 1786 { 1787 item.Name = settings.Name; 1788 } 1789 if (settings.Value != null && settings.Value == item.Value) 1790 { 1791 item.Checked = true; 1792 } 1793 if (!string.IsNullOrEmpty(settings.OnClick)) 1794 { 1795 item.OnClick += settings.OnClick; 1796 } 1797 if (!string.IsNullOrEmpty(settings.OnChange)) 1798 { 1799 item.OnChange += settings.OnChange; 1800 } 1801 if (!string.IsNullOrEmpty(settings.CssClass)) 1802 { 1803 item.CssClass += settings.CssClass; 1804 } 1805 @Render(item) 1806 } 1807 1808 @Render(new NotificationMessage { Message = settings.ErrorMessage }) 1809 </div> 1810 } 1811 @using System.Reflection 1812 @using Dynamicweb.Rapido.Blocks.Components.General 1813 @using Dynamicweb.Rapido.Blocks.Components 1814 1815 1816 @* Component *@ 1817 1818 @helper RenderNotificationMessage(NotificationMessage settings) 1819 { 1820 if (!string.IsNullOrEmpty(settings.Message)) 1821 { 1822 var attributes = new Dictionary<string, string>(); 1823 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 1824 1825 string messageTypeClass = Enum.GetName(typeof(NotificationMessageType), settings.MessageType).ToLower(); 1826 string messageLayoutClass = Enum.GetName(typeof(NotificationMessageLayout), settings.MessageLayout).ToLower(); 1827 string minHeightClass = settings.Icon != null ? "u-min-h70px" : ""; 1828 1829 <div class="notification-message-@messageTypeClass notification-message-@messageLayoutClass @messageLayoutClass @minHeightClass @settings.CssClass u-full-width dw-mod" @ComponentMethods.AddAttributes(attributes)> 1830 @if (settings.Icon != null) { 1831 settings.Icon.Label = !string.IsNullOrEmpty(settings.Icon.Label) ? settings.Message + settings.Icon.Label : settings.Message; 1832 @Render(settings.Icon) 1833 } else { 1834 @settings.Message 1835 } 1836 </div> 1837 } 1838 } 1839 @using Dynamicweb.Rapido.Blocks.Components.General 1840 1841 1842 @* Component *@ 1843 1844 @helper RenderHandlebarsRoot(HandlebarsRoot settings) { 1845 string preRender = !String.IsNullOrEmpty(settings.PreRenderScriptTemplate) ? "data-pre-render-template=\"" + settings.PreRenderScriptTemplate + "\"" : ""; 1846 1847 <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> 1848 @if (settings.SubBlocks != null) { 1849 @RenderBlockList(settings.SubBlocks) 1850 } 1851 </div> 1852 } 1853 @using System.Reflection 1854 @using Dynamicweb.Rapido.Blocks.Components.General 1855 @using Dynamicweb.Rapido.Blocks.Components 1856 @using System.Text.RegularExpressions 1857 1858 1859 @* Component *@ 1860 1861 @helper RenderSticker(Sticker settings) { 1862 if (!String.IsNullOrEmpty(settings.Title)) { 1863 string size = settings.Size.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Size.ToString().ToLower() : ""; 1864 string style = settings.Style.ToString() != "None" ? "" + "stickers-container__tag--" + settings.Style.ToString().ToLower() : ""; 1865 1866 Dictionary<String, String> optionalAttributes = new Dictionary<string, string>(); 1867 if (!String.IsNullOrEmpty(settings.Color) || !String.IsNullOrEmpty(settings.BackgroundColor)) { 1868 string styleTag = !String.IsNullOrEmpty(settings.Color) ? "color: " + settings.Color + "; " : ""; 1869 styleTag += !String.IsNullOrEmpty(settings.BackgroundColor) ? "background-color: " + settings.BackgroundColor + "; " : ""; 1870 optionalAttributes.Add("style", styleTag); 1871 } 1872 1873 <div class="stickers-container__tag @size @style @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)>@settings.Title</div> 1874 } 1875 } 1876 1877 @using System.Reflection 1878 @using Dynamicweb.Rapido.Blocks.Components.General 1879 @using Dynamicweb.Rapido.Blocks.Components 1880 1881 1882 @* Component *@ 1883 1884 @helper RenderStickersCollection(StickersCollection settings) 1885 { 1886 if (settings.Stickers.Count > 0) 1887 { 1888 string position = "stickers-container--" + Regex.Replace(settings.Position.ToString(), "([a-z])([A-Z])", "$1-$2").ToLower(); 1889 1890 <div class="stickers-container @position @settings.CssClass dw-mod" @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1891 @foreach (Sticker sticker in settings.Stickers) 1892 { 1893 @Render(sticker) 1894 } 1895 </div> 1896 } 1897 } 1898 1899 @using Dynamicweb.Rapido.Blocks.Components.General 1900 1901 1902 @* Component *@ 1903 1904 @helper RenderForm(Form settings) { 1905 if (settings != null) 1906 { 1907 Dictionary<string, string> optionalAttributes = new Dictionary<string, string>(); 1908 if (!string.IsNullOrEmpty(settings.Action)) { optionalAttributes.Add("action", settings.Action); }; 1909 if (!string.IsNullOrEmpty(settings.Name)) { optionalAttributes.Add("name", settings.Name); }; 1910 if (!string.IsNullOrEmpty(settings.OnSubmit)) { optionalAttributes.Add("onsubmit", settings.OnSubmit); }; 1911 var enctypes = new Dictionary<string, string> 1912 { 1913 { "multipart", "multipart/form-data" }, 1914 { "text", "text/plain" }, 1915 { "application", "application/x-www-form-urlencoded" } 1916 }; 1917 if (settings.Enctype != FormEnctype.none) { optionalAttributes.Add("enctype", enctypes[Enum.GetName(typeof(FormEnctype), settings.Enctype).ToLower()]); }; 1918 optionalAttributes.Add("method", settings.Method.ToString()); 1919 1920 if (!string.IsNullOrEmpty(settings.FormStartMarkup)) 1921 { 1922 @settings.FormStartMarkup 1923 } 1924 else 1925 { 1926 @:<form class="@settings.CssClass u-no-margin dw-mod" @ComponentMethods.AddAttributes(optionalAttributes) @ComponentMethods.AddAttributes(settings.ExtraAttributes)> 1927 } 1928 1929 foreach (var field in settings.GetFields()) 1930 { 1931 @Render(field) 1932 } 1933 1934 @:</form> 1935 } 1936 } 1937 @using System.Reflection 1938 @using Dynamicweb.Rapido.Blocks.Components.General 1939 @using Dynamicweb.Rapido.Blocks.Components 1940 1941 1942 @* Component *@ 1943 1944 @helper RenderText(Text settings) 1945 { 1946 @settings.Content 1947 } 1948 @using System.Reflection 1949 @using Dynamicweb.Rapido.Blocks.Components.General 1950 @using Dynamicweb.Rapido.Blocks.Components 1951 1952 1953 @* Component *@ 1954 1955 @helper RenderContentModule(ContentModule settings) { 1956 if (!string.IsNullOrEmpty(settings.Content)) 1957 { 1958 @settings.Content 1959 } 1960 } 1961 @using System.Reflection 1962 @using Dynamicweb.Rapido.Blocks.Components.General 1963 @using Dynamicweb.Rapido.Blocks.Components 1964 1965 1966 @* Component *@ 1967 1968 @helper RenderModal(Modal settings) { 1969 if (settings != null) 1970 { 1971 string modalId = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N"); 1972 1973 string onchange = !string.IsNullOrEmpty(settings.OnClose) ? "onchange=\"if(!this.checked){" + settings.OnClose + "}\"" : ""; 1974 1975 <input type="checkbox" id="@(modalId)ModalTrigger" class="modal-trigger" @onchange /> 1976 1977 <div class="modal-container"> 1978 @if (!settings.DisableDarkOverlay) 1979 { 1980 <label for="@(modalId)ModalTrigger" id="@(modalId)ModalOverlay" class="modal-overlay"></label> 1981 } 1982 <div class="modal modal--@settings.Width.ToString().ToLower() modal-height--@settings.Height.ToString().ToLower()" id="@(modalId)Modal"> 1983 @if (settings.Heading != null) 1984 { 1985 if (!string.IsNullOrEmpty(settings.Heading.Title)) 1986 { 1987 <div class="modal__header"> 1988 @Render(settings.Heading) 1989 </div> 1990 } 1991 } 1992 <div class="modal__body @(settings.Width.ToString().ToLower() == "full" ? "modal__body--full" : "")"> 1993 @if (!string.IsNullOrEmpty(settings.BodyText)) 1994 { 1995 @settings.BodyText 1996 } 1997 @if (settings.BodyTemplate != null) 1998 { 1999 @settings.BodyTemplate 2000 } 2001 @{ 2002 var actions = settings.GetActions(); 2003 } 2004 </div> 2005 @if (actions.Length > 0) 2006 { 2007 <div class="modal__footer"> 2008 @foreach (var action in actions) 2009 { 2010 if (Pageview.Device.ToString() != "Mobile") { 2011 action.CssClass += " u-no-margin"; 2012 } else { 2013 action.CssClass += " u-full-width u-margin-bottom"; 2014 } 2015 2016 @Render(action) 2017 } 2018 </div> 2019 } 2020 <label class="modal__close-btn" for="@(modalId)ModalTrigger"></label> 2021 </div> 2022 </div> 2023 } 2024 } 2025 @using Dynamicweb.Rapido.Blocks.Components.General 2026 2027 @* Component *@ 2028 2029 @helper RenderMediaListItem(MediaListItem settings) 2030 { 2031 <div class="media-list-item @settings.CssClass dw-mod" @(!string.IsNullOrEmpty(settings.Id) ? "id=\"" + settings.Id + "\"" : "")> 2032 @if (!string.IsNullOrEmpty(settings.Label)) 2033 { 2034 if (!string.IsNullOrEmpty(settings.Link)) 2035 { 2036 @Render(new Link 2037 { 2038 Href = settings.Link, 2039 CssClass = "media-list-item__sticker dw-mod", 2040 ButtonLayout = ButtonLayout.None, 2041 Title = settings.Label, 2042 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2043 }) 2044 } 2045 else if (!string.IsNullOrEmpty(settings.OnClick)) 2046 { 2047 <span class="media-list-item__sticker dw-mod" onclick="@(settings.OnClick)"> 2048 <span class="u-uppercase">@settings.Label</span> 2049 </span> 2050 } 2051 else 2052 { 2053 <span class="media-list-item__sticker media-list-item__sticker--no-link dw-mod"> 2054 <span class="u-uppercase">@settings.Label</span> 2055 </span> 2056 } 2057 } 2058 <div class="media-list-item__wrap"> 2059 <div class="media-list-item__info dw-mod"> 2060 <div class="media-list-item__header dw-mod"> 2061 @if (!string.IsNullOrEmpty(settings.Title)) 2062 { 2063 if (!string.IsNullOrEmpty(settings.Link)) 2064 { 2065 @Render(new Link 2066 { 2067 Href = settings.Link, 2068 CssClass = "media-list-item__name dw-mod", 2069 ButtonLayout = ButtonLayout.None, 2070 Title = settings.Title, 2071 OnClick = !string.IsNullOrEmpty(settings.OnClick) ? settings.OnClick : "" 2072 }) 2073 } 2074 else if (!string.IsNullOrEmpty(settings.OnClick)) 2075 { 2076 <span class="media-list-item__name dw-mod" onclick="@(settings.OnClick)">@settings.Title</span> 2077 } 2078 else 2079 { 2080 <span class="media-list-item__name media-list-item__name--no-link dw-mod">@settings.Title</span> 2081 } 2082 } 2083 2084 @if (!string.IsNullOrEmpty(settings.Status)) 2085 { 2086 <div class="media-list-item__state dw-mod">@settings.Status</div> 2087 } 2088 </div> 2089 @{ 2090 settings.InfoTable.CssClass += " media-list-item__parameters-table"; 2091 } 2092 2093 @Render(settings.InfoTable) 2094 </div> 2095 <div class="media-list-item__actions dw-mod"> 2096 <div class="media-list-item__actions-list dw-mod"> 2097 @{ 2098 var actions = settings.GetActions(); 2099 2100 foreach (ButtonBase action in actions) 2101 { 2102 action.ButtonLayout = ButtonLayout.None; 2103 action.CssClass += " media-list-item__action link"; 2104 2105 @Render(action) 2106 } 2107 } 2108 </div> 2109 2110 @if (settings.SelectButton != null && !string.IsNullOrEmpty(settings.SelectButton.Title)) 2111 { 2112 settings.SelectButton.CssClass += " u-no-margin"; 2113 2114 <div class="media-list-item__action-button"> 2115 @Render(settings.SelectButton) 2116 </div> 2117 } 2118 </div> 2119 </div> 2120 </div> 2121 } 2122 @using Dynamicweb.Rapido.Blocks.Components.General 2123 @using Dynamicweb.Rapido.Blocks.Components 2124 2125 @helper RenderTable(Table settings) 2126 { 2127 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2128 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2129 2130 var enumToClasses = new Dictionary<TableDesign, string> 2131 { 2132 { TableDesign.Clean, "table--clean" }, 2133 { TableDesign.Bordered, "table--bordered" }, 2134 { TableDesign.Striped, "table--striped" }, 2135 { TableDesign.Hover, "table--hover" }, 2136 { TableDesign.Compact, "table--compact" }, 2137 { TableDesign.Condensed, "table--condensed" }, 2138 { TableDesign.NoTopBorder, "table--no-top-border" } 2139 }; 2140 string tableDesignClass = ""; 2141 if (settings.Design != TableDesign.None) 2142 { 2143 tableDesignClass = enumToClasses[settings.Design]; 2144 } 2145 2146 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableDesign.None) { attributes.Add("class", "table " + tableDesignClass + " " + settings.CssClass + " dw-mod"); } 2147 2148 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2149 2150 <table @ComponentMethods.AddAttributes(resultAttributes)> 2151 @if (settings.Header != null) 2152 { 2153 <thead> 2154 @Render(settings.Header) 2155 </thead> 2156 } 2157 <tbody> 2158 @foreach (var row in settings.Rows) 2159 { 2160 @Render(row) 2161 } 2162 </tbody> 2163 @if (settings.Footer != null) 2164 { 2165 <tfoot> 2166 @Render(settings.Footer) 2167 </tfoot> 2168 } 2169 </table> 2170 } 2171 @using Dynamicweb.Rapido.Blocks.Components.General 2172 @using Dynamicweb.Rapido.Blocks.Components 2173 2174 @helper RenderTableRow(TableRow settings) 2175 { 2176 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2177 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2178 2179 var enumToClasses = new Dictionary<TableRowDesign, string> 2180 { 2181 { TableRowDesign.NoBorder, "table__row--no-border" }, 2182 { TableRowDesign.Border, "table__row--border" }, 2183 { TableRowDesign.TopBorder, "table__row--top-line" }, 2184 { TableRowDesign.BottomBorder, "table__row--bottom-line" }, 2185 { TableRowDesign.Solid, "table__row--solid" } 2186 }; 2187 2188 string tableRowDesignClass = ""; 2189 if (settings.Design != TableRowDesign.None) 2190 { 2191 tableRowDesignClass = enumToClasses[settings.Design]; 2192 } 2193 2194 if (!string.IsNullOrEmpty(settings.CssClass) || settings.Design != TableRowDesign.None) { attributes.Add("class", "table__row " + tableRowDesignClass + " " + settings.CssClass + " dw-mod"); } 2195 2196 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2197 2198 <tr @ComponentMethods.AddAttributes(resultAttributes)> 2199 @foreach (var cell in settings.Cells) 2200 { 2201 if (settings.IsHeaderRow) 2202 { 2203 cell.IsHeader = true; 2204 } 2205 @Render(cell) 2206 } 2207 </tr> 2208 } 2209 @using Dynamicweb.Rapido.Blocks.Components.General 2210 @using Dynamicweb.Rapido.Blocks.Components 2211 @using Dynamicweb.Core 2212 2213 @helper RenderTableCell(TableCell settings) 2214 { 2215 Dictionary<string, string> attributes = new Dictionary<string, string>(); 2216 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); } 2217 if (settings.Colspan != 0) { attributes.Add("colspan", Converter.ToString(settings.Colspan)); } 2218 if (settings.Rowspan != 0) { attributes.Add("rowspan", Converter.ToString(settings.Rowspan)); } 2219 if (!string.IsNullOrEmpty(settings.CssClass)) { attributes.Add("class", settings.CssClass + " dw-mod"); } 2220 2221 var resultAttributes = attributes.Concat(settings.ExtraAttributes).GroupBy(d => d.Key).ToDictionary(d => d.Key, d => d.Last().Value); 2222 2223 string tagName = settings.IsHeader ? "th" : "td"; 2224 2225 @("<" + tagName + " " + ComponentMethods.AddAttributes(resultAttributes) + ">") 2226 @settings.Content 2227 @("</" + tagName + ">"); 2228 } 2229 @using System.Linq 2230 @using Dynamicweb.Rapido.Blocks.Components.General 2231 2232 @* Component *@ 2233 2234 @helper RenderPagination(Dynamicweb.Rapido.Blocks.Components.General.Pagination settings) 2235 { 2236 var pageNumberQueryStringName = Dynamicweb.Rapido.Services.Pagination.GetPageNumberQueryStringName(settings); // Get the proper 'page number' query string parameter 2237 var queryParameters = Dynamicweb.Rapido.Services.Url.GetQueryParameters(pageNumberQueryStringName); // Get the NameValueCollection from the querystring 2238 2239 if (settings.NumberOfPages > 1) 2240 { 2241 string url = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/Default.aspx"; 2242 string ariaLabel = !string.IsNullOrWhiteSpace(settings.AriaLabel) ? settings.AriaLabel : Translate("Page navigation"); 2243 Dictionary<string, int> startAndEndPageNumber = Dynamicweb.Rapido.Services.Pagination.GetStartAndEndPageNumber(settings); 2244 2245 <div class="pager u-margin-top dw-mod @settings.CssClass" aria-label="@ariaLabel"> 2246 @if (settings.ShowPagingInfo) 2247 { 2248 <div class="pager__info dw-mod"> 2249 @Translate("Page") @settings.CurrentPageNumber @Translate("of") @settings.NumberOfPages 2250 </div> 2251 } 2252 <ul class="pager__list dw-mod"> 2253 @if (!string.IsNullOrWhiteSpace(settings.FirstPageUrl) && settings.ShowFirstAndLastControls) 2254 { 2255 @Render(new PaginationItem { Link = settings.FirstPageUrl, Icon = settings.FirstIcon }) 2256 } 2257 @if (!string.IsNullOrWhiteSpace(settings.PreviousPageUrl) && settings.ShowNextAndPrevControls) 2258 { 2259 @Render(new PaginationItem { Link = settings.PreviousPageUrl, Icon = settings.PrevIcon }) 2260 } 2261 @if (settings.GetPages().Any()) 2262 { 2263 foreach (var page in settings.GetPages()) 2264 { 2265 @Render(page) 2266 } 2267 } 2268 else 2269 { 2270 for (var page = startAndEndPageNumber["StartPage"]; page <= startAndEndPageNumber["EndPage"]; page++) 2271 { 2272 queryParameters = Dynamicweb.Rapido.Services.Url.UpdateQueryStringParameter(queryParameters, pageNumberQueryStringName, page.ToString()); 2273 @Render(new PaginationItem { Label = page.ToString(), Link = Dynamicweb.Rapido.Services.Url.BuildUri(url, queryParameters).PathAndQuery, IsActive = (settings.CurrentPageNumber == page) }); 2274 } 2275 } 2276 @if (!string.IsNullOrWhiteSpace(settings.NextPageUrl) && settings.ShowNextAndPrevControls) 2277 { 2278 @Render(new PaginationItem { Link = settings.NextPageUrl, Icon = settings.NextIcon }) 2279 } 2280 @if (!string.IsNullOrWhiteSpace(settings.LastPageUrl) && settings.ShowFirstAndLastControls) 2281 { 2282 @Render(new PaginationItem { Link = settings.LastPageUrl, Icon = settings.LastIcon }) 2283 } 2284 </ul> 2285 </div> 2286 } 2287 } 2288 2289 @helper RenderPaginationItem(PaginationItem settings) 2290 { 2291 if (settings.Icon == null) 2292 { 2293 settings.Icon = new Icon(); 2294 } 2295 2296 settings.Icon.Label = settings.Label; 2297 <li class="pager__btn dw-mod"> 2298 @if (settings.IsActive) 2299 { 2300 <span class="pager__num pager__num--current dw-mod"> 2301 @Render(settings.Icon) 2302 </span> 2303 } 2304 else 2305 { 2306 <a href="@settings.Link" class="pager__num dw-mod"> 2307 @Render(settings.Icon) 2308 </a> 2309 } 2310 </li> 2311 } 2312 2313 2314 @using Dynamicweb.Rapido.Blocks.Components.General 2315 @using Dynamicweb.Rapido.Blocks.Components.Ecommerce 2316 2317 2318 2319 2320 2321 @functions { 2322 public string GenerateRgba(string color, string opacity) 2323 { 2324 color = color.Replace("#", ""); 2325 if (color.Length == 6) 2326 { 2327 return "rgba(" + Convert.ToInt32(color.Substring(0, 2), 16) + ", " + Convert.ToInt32(color.Substring(2, 2), 16) + ", " + Convert.ToInt32(color.Substring(4, 2), 16) + ", " + opacity + ");"; 2328 } 2329 else 2330 { 2331 return Convert.ToInt16(color).ToString(); 2332 } 2333 } 2334 } 2335 2336 @{ 2337 List<ItemViewModel> slides = new List<ItemViewModel>(); 2338 2339 if (Model.Item.GetItem("SlideOne") != null) 2340 { 2341 if (!string.IsNullOrEmpty(Model.Item.GetItem("SlideOne").GetString("Image"))) 2342 { 2343 slides.Add(Model.Item.GetItem("SlideOne")); 2344 } 2345 } 2346 2347 if (Model.Item.GetItem("SlideTwo") != null) 2348 { 2349 if (!string.IsNullOrEmpty(Model.Item.GetItem("SlideTwo").GetString("Image"))) 2350 { 2351 slides.Add(Model.Item.GetItem("SlideTwo")); 2352 } 2353 } 2354 2355 if (Model.Item.GetItem("SlideThree") != null) 2356 { 2357 if (!string.IsNullOrEmpty(Model.Item.GetItem("SlideThree").GetString("Image"))) 2358 { 2359 slides.Add(Model.Item.GetItem("SlideThree")); 2360 } 2361 } 2362 2363 if (Model.Item.GetItem("SlideFour") != null) 2364 { 2365 if (!string.IsNullOrEmpty(Model.Item.GetItem("SlideFour").GetString("Image"))) 2366 { 2367 slides.Add(Model.Item.GetItem("SlideFour")); 2368 } 2369 } 2370 2371 if (Model.Item.GetItem("SlideFive") != null) 2372 { 2373 if (!string.IsNullOrEmpty(Model.Item.GetItem("SlideFive").GetString("Image"))) 2374 { 2375 slides.Add(Model.Item.GetItem("SlideFive")); 2376 } 2377 } 2378 } 2379 2380 @if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) && !Model.Item.GetBoolean("HideTitle")) 2381 { 2382 @Render(new Heading { Title = Model.Item.GetString("Title"), Level = 2 }) 2383 } 2384 2385 <div class="carousel u-full-height dw-mod" id="Paragraph_@(Model.ID)"> 2386 <div class="carousel__container u-full-height js-carousel-slides dw-mod"> 2387 @foreach (var slide in slides) 2388 { 2389 <div class="carousel__slide u-padding--lg dw-mod"> 2390 @RenderTheSlide(slide) 2391 </div> 2392 } 2393 </div> 2394 </div> 2395 2396 @helper RenderTheSlide(ItemViewModel slide) 2397 { 2398 var colorService = new ColorSwatchService(); 2399 string backgroundColor = slide.GetString("BackgroundColor") != null ? slide.GetString("BackgroundColor") : ""; 2400 backgroundColor = !backgroundColor.Contains("#") ? "background-color: " + colorService.GetHexColor(Pageview.AreaID, backgroundColor) : backgroundColor; 2401 string textColor = slide.GetString("TextColor") != null ? slide.GetString("TextColor") : ""; 2402 textColor = !textColor.Contains("#") ? colorService.GetHexColor(Pageview.AreaID, textColor) : textColor; 2403 string styles = backgroundColor + "; color: " + textColor; 2404 2405 string horizontalAlign = slide.GetString("HorizontalAlignment") != null ? "u-ta-" + slide.GetList("HorizontalAlignment").SelectedValue.ToString().ToLower() : ""; 2406 string verticalAlign = slide.GetString("VerticalAlignment") != null ? "u-align-self-" + slide.GetList("VerticalAlignment").SelectedValue.ToString().ToLower() : ""; 2407 string alignmentCssClasses = horizontalAlign + " " + verticalAlign; 2408 2409 if (!string.IsNullOrEmpty(slide.GetString("Image"))) 2410 { 2411 int cropMode = !string.IsNullOrEmpty(Convert.ToString(slide.GetList("ImageCrop"))) ? Convert.ToInt32(slide.GetList("ImageCrop").SelectedValue) : 0; 2412 2413 Image image = new Image 2414 { 2415 Path = slide.GetFile("Image").Path, 2416 CssClass = "background-image__cover", 2417 ImageDefault = new ImageSettings 2418 { 2419 Crop = cropMode, 2420 //Height = 845, 2421 Width = 3000 2422 }, 2423 ImageMedium = new ImageSettings 2424 { 2425 Crop = cropMode, 2426 Height = 450, 2427 Width = 1024 2428 }, 2429 ImageSmall = new ImageSettings 2430 { 2431 Crop = cropMode, 2432 Height = 544, 2433 Width = 640 2434 } 2435 }; 2436 2437 image.FilterPrimary = !string.IsNullOrEmpty(slide.GetList("ImageFilterPrimary").SelectedValue) ? (ImageFilter)Enum.Parse(typeof(ImageFilter), slide.GetList("ImageFilterPrimary").SelectedValue.Replace("-", ""), true) : ImageFilter.None; 2438 image.FilterSecondary = !string.IsNullOrEmpty(slide.GetList("ImageFilterSecondary").SelectedValue) ? (ImageFilter)Enum.Parse(typeof(ImageFilter), slide.GetList("ImageFilterSecondary").SelectedValue.Replace("-", ""), true) : ImageFilter.None; 2439 2440 if (!string.IsNullOrEmpty(slide.GetString("ColorForTheFilter"))) 2441 { 2442 image.FilterColor = slide.GetString("ColorForTheFilter").StartsWith("#") ? GenerateRgba(slide.GetString("ColorForTheFilter"), "0.3") : ""; 2443 } 2444 2445 string imageAltText = ""; 2446 if (!string.IsNullOrWhiteSpace(slide.GetString("ImageAltText"))) 2447 { 2448 imageAltText = slide.GetString("ImageAltText"); 2449 } 2450 2451 string imageTitleText = ""; 2452 if (!string.IsNullOrWhiteSpace(slide.GetString("ImageTitleText"))) 2453 { 2454 imageTitleText = slide.GetString("ImageTitleText"); 2455 } 2456 2457 <div class="background-image dw-mod"> 2458 <div class="background-image__wrapper dw-mod"> 2459 @RenderWithAltAndTitle(image, imageAltText, imageTitleText) 2460 </div> 2461 </div> 2462 } 2463 2464 if (!string.IsNullOrEmpty(textColor)) 2465 { 2466 <style> 2467 .slideContent-@slide.Id p, .slideContent-@slide.Id h1, .slideContent-@slide.Id h2, .slideContent-@slide.Id h3 { 2468 color: @textColor; 2469 } 2470 </style> 2471 } 2472 2473 string link = !string.IsNullOrEmpty(slide.GetString("Link")) ? slide.GetString("Link") : ""; 2474 string linkTarget = link.Contains("http") ? "_blank" : "_self"; 2475 2476 if (!string.IsNullOrEmpty(link)) 2477 { 2478 <a href="@link" target="@linkTarget" class="u-full-width u-full-height u-position-absolute"> </a> 2479 } 2480 2481 <div class="content-row__item__body @alignmentCssClasses slideContent-@slide.Id dw-mod"> 2482 @if (!string.IsNullOrEmpty(slide.GetString("Title")) || !string.IsNullOrEmpty(slide.GetString("Text"))) 2483 { 2484 <div class="grid__cell"> 2485 @Render(new Heading { Title = slide.GetString("Title"), Level = 2 }) 2486 @Render(new Text { Content = slide.GetString("Text") }) 2487 </div> 2488 } 2489 2490 @if (!string.IsNullOrEmpty(slide.GetItem("ButtonOne").GetString("Title")) || !string.IsNullOrEmpty(slide.GetItem("ButtonTwo").GetString("Title"))) 2491 { 2492 <div class="grid__cell"> 2493 @ParagraphButton(slide.GetItem("ButtonOne")) 2494 @ParagraphButton(slide.GetItem("ButtonTwo")) 2495 </div> 2496 } 2497 </div> 2498 } 2499 2500 @{ 2501 if (slides.Count > 1) 2502 { 2503 bool enableDots = !Model.Item.GetBoolean("HideDots"); 2504 2505 <script> 2506 document.addEventListener("DOMContentLoaded", function () { 2507 var hideArrows = "@Model.Item.GetBoolean("HideArrows")"; 2508 2509 var row = document.querySelector(".rowItemContent-@(Model.ID)"); 2510 row.classList.add("slider-min-height"); 2511 2512 new CarouselModule("#Paragraph_@(Model.ID)", { 2513 slideTime: @Model.Item.GetString("SlideTime"), 2514 dots: @(enableDots.ToString().ToLower()), 2515 prevBtn: hideArrows == "True" ? "u-hidden" : "carousel-prev-btn dw-mod", 2516 nextBtn: hideArrows == "True" ? "u-hidden" : "carousel-next-btn dw-mod" 2517 }); 2518 }) 2519 </script> 2520 } 2521 } 2522 2523 @helper ParagraphButton(ItemViewModel item) 2524 { 2525 if (item != null) 2526 { 2527 if (!string.IsNullOrEmpty(item.GetString("Title"))) 2528 { 2529 Button button = new Button 2530 { 2531 Title = item.GetString("Title"), 2532 Href = item.GetString("Link"), 2533 CssClass = "u-no-margin", 2534 ButtonLayout = (ButtonLayout)System.Enum.Parse(typeof(ButtonLayout), char.ToUpper(item.GetList("Layout").SelectedValue[0]) + item.GetList("Layout").SelectedValue.Substring(1)) 2535 }; 2536 2537 if (!string.IsNullOrEmpty(item.GetString("Icon"))) 2538 { 2539 button.Icon = new Icon 2540 { 2541 CssClass = item.GetString("Icon") 2542 }; 2543 } 2544 2545 @Render(button) 2546 } 2547 } 2548 }
FINDAHL MÖBEL
Dänische Qualitätsmöbel, hergestellt in Dänemark
Findahl zeichnet sich seit 1946 durch dänische Handwerkskunst aus. Von erfahrenen Möbelschreinern mit viel Liebe zum Detail hergestellt. Wir sind stolz darauf, alle unsere Findahl Möbel mit „Made in Denmark“ zu kennzeichnen.
3-D-KONFIGURATOR
Gestalten Sie mit dem Konfigurator von Hammel Ihr eigenes Regal.
Der Konfigurator ist für iOS, Android und als Web-Anwendung verfügbar.
Unsere App für IOS- und Android-Geräte heißt „Hammel“.
Denken Sie daran, die App regelmäßig zu aktualisieren, damit Sie immer die neueste Version nutzen.
Gehen Sie hier direkt zum Konfigurator auf Ihrem Computer
Die Geschichte von Hammel Furniture
Hammel Furniture produziert seit 1961 Möbel in stolzer dänischer Handwerkstradition. Die Produktion erfolgt in unseren Werken in Hammel und Skærbæk in Jütland. Am Standort Hammel werden Esstische, Couchtische und Bücherregale hergestellt (darunter das bekannte Bücherregal Mistral, das dieses Jahr sein 30-jähriges Jubiläum feiert). Das Werk in Skærbæk, das seit 1946 schöne Esszimmerstühle und Loungesessel produziert, kam 2018 zur Hammel Familie.
Händlersuche
Hammel Furniture verfügt über ein großes Händlernetz, das Ladengeschäfte und Online-Webshops betreibt.