Error executing template "Designs/Rapido/ContentPage/Paragraph/Carousel.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at CompiledRazorTemplates.Dynamic.RazorEngine_7e3c70c0144c4605b04a55c269ef764e.<>c__DisplayClass48_0.<RenderTheSlide>b__0(TextWriter __razor_helper_writer) in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\Carousel.cshtml:line 2417
at CompiledRazorTemplates.Dynamic.RazorEngine_7e3c70c0144c4605b04a55c269ef764e.Execute() in D:\dynamicweb.net\Solutions\Buchs\HammelFurniture.cloud.dynamicweb-cms.com\Files\Templates\Designs\Rapido\ContentPage\Paragraph\Carousel.cshtml:line 2394
at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel>
2 @using Dynamicweb.Frontend
3 @using Dynamicweb.Rapido.Blocks.Components
4 @using Dynamicweb.Rapido.Blocks.Components.General
5 @using Dynamicweb.Content
6 @using Dynamicweb.Content.Items
7 @using Dynamicweb
8
9 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel>
10 @using Dynamicweb.Frontend
11
12 @* Include the components *@
13 @using System.Text.RegularExpressions
14 @using System.Collections.Generic
15 @using System.Reflection
16 @using System.Web
17 @using System.Web.UI.HtmlControls
18 @using Dynamicweb.Rapido.Blocks.Components
19 @using Dynamicweb.Rapido.Blocks.Components.Articles
20 @using Dynamicweb.Rapido.Blocks.Components.Documentation
21 @using Dynamicweb.Rapido.Blocks
22
23
24 @*--- START: Base block renderers ---*@
25
26 @helper RenderBlockList(List<Block> blocks)
27 {
28 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false;
29 blocks = blocks.OrderBy(item => item.SortId).ToList();
30
31 foreach (Block item in blocks)
32 {
33 if (debug) {
34 <!-- Block START: @item.Id -->
35 }
36
37 if (item.Design == null)
38 {
39 @RenderBlock(item)
40 }
41 else if (item.Design.RenderType == RenderType.None) {
42 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : "";
43
44 <div class="@cssClass dw-mod">
45 @RenderBlock(item)
46 </div>
47 }
48 else if (item.Design.RenderType != RenderType.Hide)
49 {
50 string cssClass = item.Design.CssClass != null ? item.Design.CssClass : "";
51
52 if (!item.SkipRenderBlocksList) {
53 if (item.Design.RenderType == RenderType.Row)
54 {
55 <div class="grid grid--align-content-start @cssClass dw-mod" id="Block__@item.Id">
56 @RenderBlock(item)
57 </div>
58 }
59
60 if (item.Design.RenderType == RenderType.Column)
61 {
62 string hidePadding = item.Design.HidePadding ? "u-no-padding" : "";
63 string size = item.Design.Size ?? "12";
64 size = Regex.IsMatch(size, @"\d") ? "md-" + item.Design.Size : item.Design.Size;
65
66 <div class="grid__col-lg-@item.Design.Size grid__col-md-@item.Design.Size grid__col-sm-12 grid__col-xs-12 @hidePadding @cssClass dw-mod" id="Block__@item.Id">
67 @RenderBlock(item)
68 </div>
69 }
70
71 if (item.Design.RenderType == RenderType.Table)
72 {
73 <table class="table @cssClass dw-mod" id="Block__@item.Id">
74 @RenderBlock(item)
75 </table>
76 }
77
78 if (item.Design.RenderType == RenderType.TableRow)
79 {
80 <tr class="@cssClass dw-mod" id="Block__@item.Id">
81 @RenderBlock(item)
82 </tr>
83 }
84
85 if (item.Design.RenderType == RenderType.TableColumn)
86 {
87 <td class="@cssClass dw-mod" id="Block__@item.Id">
88 @RenderBlock(item)
89 </td>
90 }
91
92 if (item.Design.RenderType == RenderType.CardHeader)
93 {
94 <div class="card-header @cssClass dw-mod">
95 @RenderBlock(item)
96 </div>
97 }
98
99 if (item.Design.RenderType == RenderType.CardBody)
100 {
101 <div class="card @cssClass dw-mod">
102 @RenderBlock(item)
103 </div>
104 }
105
106 if (item.Design.RenderType == RenderType.CardFooter)
107 {
108 <div class="card-footer @cssClass dw-mod">
109 @RenderBlock(item)
110 </div>
111 }
112 }
113 else
114 {
115 @RenderBlock(item)
116 }
117 }
118
119 if (debug) {
120 <!-- Block END: @item.Id -->
121 }
122 }
123 }
124
125 @helper RenderBlock(Block item)
126 {
127 bool debug = !String.IsNullOrEmpty(HttpContext.Current.Request.QueryString.Get("debug")) ? Convert.ToBoolean(HttpContext.Current.Request.QueryString.Get("debug")) : false;
128
129 if (item.Template != null)
130 {
131 @BlocksPage.RenderTemplate(item.Template)
132 }
133
134 if (item.Component != null)
135 {
136 string customSufix = "Custom";
137 string methodName = item.Component.HelperName;
138
139 ComponentBase[] methodParameters = new ComponentBase[1];
140 methodParameters[0] = item.Component;
141 Type methodType = this.GetType();
142
143 MethodInfo customMethod = methodType.GetMethod(methodName + customSufix);
144 MethodInfo generalMethod = methodType.GetMethod(methodName);
145
146 try {
147 if (debug) {
148 <!-- Component: @methodName.Replace("Render", "") -->
149 }
150 @customMethod.Invoke(this, methodParameters).ToString();
151 } catch {
152 try {
153 @generalMethod.Invoke(this, methodParameters).ToString();
154 } catch(Exception ex) {
155 throw new Exception(item.Component.GetType().Name + " method '" + methodName +"' could not be invoked", ex);
156 }
157 }
158 }
159
160 if (item.BlocksList.Count > 0 && !item.SkipRenderBlocksList)
161 {
162 @RenderBlockList(item.BlocksList)
163 }
164 }
165
166 @*--- END: Base block renderers ---*@
167
168 @using Dynamicweb.Rapido.Blocks.Components
169 @using Dynamicweb.Rapido.Blocks.Components.General
170 @using Dynamicweb.Rapido.Blocks
171 @using System.IO
172
173 @* Required *@
174 @using Dynamicweb.Rapido.Blocks.Components
175 @using Dynamicweb.Rapido.Blocks.Components.General
176 @using Dynamicweb.Rapido.Blocks
177
178
179 @helper Render(ComponentBase component)
180 {
181 if (component != null)
182 {
183 @component.Render(this)
184 }
185 }
186
187 @* Components *@
188 @using System.Reflection
189 @using Dynamicweb.Rapido.Blocks.Components.General
190
191
192 @* Component *@
193
194 @helper RenderIcon(Icon settings)
195 {
196 if (settings != null)
197 {
198 string color = settings.Color != null ? "style=\"color: " + settings.Color + "\"" : "";
199
200 if (settings.Name != null)
201 {
202 if (string.IsNullOrEmpty(settings.Label))
203 {
204 <i class="@settings.Prefix @settings.Name @settings.CssClass" @color></i>
205 }
206 else
207 {
208 if (settings.LabelPosition == IconLabelPosition.Before)
209 {
210 <div class="u-flex u-flex--align-items-center @settings.CssClass">@settings.Label <i class="@settings.Prefix @settings.Name u-margin-left" @color></i></div>
211 }
212 else
213 {
214 <div class="u-flex u-flex--align-items-center @settings.CssClass"><i class="@settings.Prefix @settings.Name u-margin-right--lg u-w20px" @color></i>@settings.Label</div>
215 }
216 }
217 }
218 else if (!string.IsNullOrEmpty(settings.Label))
219 {
220 @settings.Label
221 }
222 }
223 }
224 @using System.Reflection
225 @using Dynamicweb.Rapido.Blocks.Components.General
226 @using Dynamicweb.Rapido.Blocks.Components
227 @using Dynamicweb.Core
228
229 @* Component *@
230
231 @helper RenderButton(Button settings)
232 {
233 if (settings != null && (!string.IsNullOrEmpty(settings.Title) || settings.Icon != null))
234 {
235 Dictionary<string, string> attributes = new Dictionary<string, string>();
236 List<string> classList = settings.CssClass != null ? settings.CssClass.Split(' ').ToList() : new List<string>();
237 if (settings.Disabled) {
238 attributes.Add("disabled", "true");
239 classList.Add("disabled");
240 }
241
242 if (!string.IsNullOrEmpty(settings.ConfirmText) || !string.IsNullOrEmpty(settings.ConfirmTitle))
243 {
244 settings.Id = !string.IsNullOrEmpty(settings.Id) ? settings.Id : Guid.NewGuid().ToString("N");
245 @RenderConfirmDialog(settings);
246 settings.OnClick = "document.getElementById('" + settings.Id + "ModalTrigger').checked = true";
247 }
248
249 if (!string.IsNullOrEmpty(settings.Id)) { attributes.Add("id", settings.Id); }
250 if (!string.IsNullOrEmpty(settings.Name)) { attributes.Add("name", settings.Name); }
251 if (!string.IsNullOrEmpty(settings.AltText))
252 {
253 attributes.Add("title", settings.AltText);
254 }
255 else if (!string.IsNullOrEmpty(settings.Title))
256 {
257 string cleanTitle = Regex.Replace(settings.Title, "<.*?>", String.Empty);
258 cleanTitle = cleanTitle.Replace(" ", " ");
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 }