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