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