Et bæredygtigt univers af smagsoplevelser

Få frokostordning leveret til Greve

Oplev et smagsunivers, når du vælger Jespers Torvekøkken til frokost. En frokostordning fra os leveret til Greve er en frokostordning lavet af friske råvarer med masser af kærlighed. 

Nyd eksemplevis vores favoritkøkken, som er alle yndlingsretterne samlet i ét køkken. Her kan du få lune retter som chili con carne med bønner, majs og smag af chokolade og kaffe, medaillon af svinekamfilet med ratatouille, chicken tikka masala, ribbensteg serveret med hvide kartofler og skysauce eller braiseret kalvecuvette med vinterfrikassé. 

Når du får en frokostordning hos Jespers Torvekøkken får du forskellige pålægger og salater med til din lune ret, samt ost og kage én gang om ugen. Pålægget kan være Spicy tunsalat med rød peber og tomat, Roastbeef med remoulade og ristede løg, kartoffelfad med sauce verde, ribbensteg med rødkål og svesker eller dildsild med løg og kapers.

Du kan også vælge alternativer til den lune ret, som vegetarisk, vegansk, glutenfri, laktosefri eller lune retter uden gris. 

Kontakt os!

Allan Olesen
Kundechef København/Aarhus
tlf 40 83 53 66

Michael Madsen
Kundechef København
tlf 26 83 89 01

Nedenfor kan du se de lækre frokostmuligheder, og hvad vi tilbyder af frokostordninger i Greve

Frokostordning til ethvert behov

Et af nøgleordene hos Jespers Torvekøkken er variation. Det er vigtigt for os at du altid får spændende, velsmagende og nærende frokost, og derfor har du mulighed for at vælge mellem portionsanretninger, frokostbuffeter og Torvets Frokostbod.

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_498aae31124643abab73084731a5490c.<>c__DisplayClass46_0.<RenderTheSlide>b__0(TextWriter __razor_helper_writer) in E:\Solutions\JespersTorvekoekken\Files\Templates\Designs\Rapido\ContentPage\Paragraph\Carousel.cshtml:line 2200
   at CompiledRazorTemplates.Dynamic.RazorEngine_498aae31124643abab73084731a5490c.Execute() in E:\Solutions\JespersTorvekoekken\Files\Templates\Designs\Rapido\ContentPage\Paragraph\Carousel.cshtml:line 2179
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

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

Kontakt os!

Ønsker du at høre mere om frokostordning i Greve?

Vi står altid klar til at hjælpe dig med forespørgelser.
Udfyld kontaktformularen og vi vender tilbage til dig hurtigst muligt.
Vi svarer i hverdage mellem 8-16

 

Kontakt vores salgschefer
 

Michael Madsen
tlf: 26 83 89 01​

eller

Allan Olesen
tlf: 40 83 53 66