Error executing template "Designs/deBisschop_generated/Paragraph/JumbotronContainer.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at CompiledRazorTemplates.Dynamic.RazorEngine_9b308f5ac81e4ed99813d4345b4ede8f.<>c__DisplayClass5_0.<RenderShoutbox>b__0(TextWriter __razor_helper_writer) in E:\Dynamicweb.NET\Groco-DeBisschop\Production\host\files\Templates\Designs\deBisschop_generated\Paragraph\JumbotronContainer.cshtml:line 497
at CompiledRazorTemplates.Dynamic.RazorEngine_9b308f5ac81e4ed99813d4345b4ede8f.Execute() in E:\Dynamicweb.NET\Groco-DeBisschop\Production\host\files\Templates\Designs\deBisschop_generated\Paragraph\JumbotronContainer.cshtml:line 263
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.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
2 @using Dynamicweb;
3 @using Dynamicweb.Content.Items;
4 @using Dynamicweb.Content.Items.Metadata;
5 @using Bluedesk.DynamicWeb.ItemTypes;
6 @using Bluedesk.DynamicWeb.ItemTypes.Settings;
7
8
9 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
10 @using Dynamicweb;
11 @using Dynamicweb.Content.Items;
12 @using Bluedesk.DynamicWeb.ItemTypes;
13 @using Bluedesk.DynamicWeb.ItemTypes.Extensions;
14 @using Bluedesk.DynamicWeb.ItemTypes.Configuration;
15 @using Bluedesk.DynamicWeb.ItemTypes.Settings.Configuration;
16
17 @helper RenderButton(ButtonConfiguration ButtonConfiguration, string btnLink, string btnClass, string btnText, string ariaLabel = "", bool newWindow = false, string btnIcon = "", string btnExtraClass = "", string btnTextClass = "", string btnIconClass = "")
18 {
19 string buttonID = ButtonConfiguration.Id;
20 var master_configuration = Dynamicweb.Services.Pages.GetPageByNavigationTag(Pageview.AreaID, "MasterConfiguration");
21 MasterConfig mc = master_configuration.Item.ToCodeFirstItem<MasterConfig>();
22
23 string FontAwesomeLibrary = mc.GeneralConfiguration.fontawesomeStyle;
24 bool HideIcon = ButtonConfiguration.HideIcon;
25 string CustomIconClass = !string.IsNullOrWhiteSpace(ButtonConfiguration.CustomIcon) ? ButtonConfiguration.CustomIcon : !string.IsNullOrWhiteSpace(btnIcon) ? btnIcon : "fa-chevron-right";
26 string IconPositionClass = HideIcon ? "default-btn--no-icon" : mc.GeneralConfiguration.IconPosition == "left" ? "default-btn--icon-left" : "";
27
28 string target = newWindow ? "_blank" : "_self";
29 string ariaText = !string.IsNullOrWhiteSpace(ariaLabel) ? "aria-label='" + ariaLabel + "'" : "";
30
31 string styleBlock = GenerateButtonConfigVariables(ButtonConfiguration, mc, Pageview.AreaID);
32
33 if (!string.IsNullOrWhiteSpace(btnLink) && !string.IsNullOrWhiteSpace(btnText))
34 {
35 <a href="@btnLink" class="btn default-btn default-btn--@buttonID @IconPositionClass @btnClass @btnExtraClass" target="@target" @ariaText style="@styleBlock">
36 <span class="btn__text @btnTextClass">@btnText</span>
37 @if (!HideIcon)
38 {
39 <i class="btn__icon @FontAwesomeLibrary @CustomIconClass @btnIconClass"></i>
40 }
41 </a>
42 }
43 }
44
45 @helper RenderFontConfig(Dictionary<string, string> FontConfig)
46 {
47 <text>color: @FontConfig["textColor"] !important;</text>
48
49 if (!string.IsNullOrWhiteSpace(FontConfig["textColor"]))
50 {
51 <text>
52 color: @FontConfig["textColor"] !important;
53 </text>
54 }
55
56 if (!string.IsNullOrWhiteSpace(FontConfig["fontSize"]))
57 {
58 <text>font-size: @FontConfig["fontSize"] !important;</text>
59 }
60 if (!string.IsNullOrWhiteSpace(FontConfig["lineHeight"]))
61 {
62 <text>line-height: @FontConfig["lineHeight"] !important;</text>
63 }
64 if (!string.IsNullOrWhiteSpace(FontConfig["fontFamily"]))
65 {
66 <text>font-family: @FontConfig["fontFamily"] !important;</text>
67 }
68 if (!string.IsNullOrWhiteSpace(FontConfig["fontWeight"]))
69 {
70 <text>font-weight: @FontConfig["fontWeight"] !important;</text>
71 }
72 if (!string.IsNullOrWhiteSpace(FontConfig["fontStyle"]))
73 {
74 if (FontConfig["fontStyle"] != "none")
75 {
76 <text>text-transform: @FontConfig["fontStyle"] !important;</text>
77 }
78 }
79 }
80
81 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
82 @using Dynamicweb;
83 @using Dynamicweb.Content.Items;
84 @using Bluedesk.DynamicWeb.ItemTypes;
85
86 @functions {
87
88 Dictionary<string, string> GetFontConfiguration(string TextColor, FontConfigurationItemTab FontConfiguration)
89 {
90 var colorService = new ColorSwatchService();
91 TextColor = !string.IsNullOrWhiteSpace(TextColor) ? TextColor : "" ;
92 TextColor = !TextColor.Contains("#") ? colorService.GetHexColor(Pageview.AreaID, TextColor) : TextColor;
93 Dictionary<string, string> FontConfig = new Dictionary<string, string>() {
94 { "textColor" , TextColor },
95 { "fontSize" , FontConfiguration?.FontSize },
96 { "lineHeight", FontConfiguration?.LineHeight},
97 { "fontFamily" , FontConfiguration?.FontConfiguration?.FontFamily },
98 { "fontWeight" , FontConfiguration?.FontWeight },
99 { "fontStyle" , FontConfiguration?.FontStyle }
100 };
101 return FontConfig;
102 }
103
104 public string GenerateButtonConfigVariables(ButtonConfiguration BC, MasterConfig mc, int areaId)
105 {
106 string ButtonLabelAlignment = BC.ButtonLabelAlignment;
107 switch (ButtonLabelAlignment)
108 {
109 case "align-left":
110 ButtonLabelAlignment = "flex-start";
111 break;
112 case "align-center":
113 ButtonLabelAlignment = "center";
114 break;
115 case "align-right":
116 ButtonLabelAlignment = "flex-end";
117 break;
118 case "align-full":
119 ButtonLabelAlignment = "space-between";
120 break;
121 default:
122 ButtonLabelAlignment = "flex-start";
123 break;
124 }
125
126 var btnStyleBlock = new System.Text.StringBuilder();
127
128 // General Config
129 btnStyleBlock.Append(GenerateCssVar("btn-min-height", $"{mc.GeneralConfiguration.ButtonHeight}px"));
130 btnStyleBlock.Append(GenerateCssVar("btn-border-radius", $"{mc.GeneralConfiguration.RoundedCornerValue}px"));
131
132 // Button Config
133 btnStyleBlock.Append(GenerateCssVar("btn-border-width", $"{BC.BorderSize.ToString()}px"));
134 btnStyleBlock.Append(GenerateCssVar("btn-label-alignment", ButtonLabelAlignment));
135
136 // Button Config Tab
137 btnStyleBlock.Append(GenerateCssVar("btn-bg-color", BC.ButtonColorConfiguration.BackgroundColor.GetColorCode(areaId)));
138 btnStyleBlock.Append(GenerateCssVar("btn-font-color", BC.ButtonColorConfiguration.FontColor.GetColorCode(areaId)));
139 btnStyleBlock.Append(GenerateCssVar("btn-border-color", BC.ButtonColorConfiguration.BorderColor.GetColorCode(areaId)));
140
141 // Button Config Hover tab
142 btnStyleBlock.Append(GenerateCssVar("btn-bg-color-hover", BC.ButtonHoverColorConfiguration.BackgroundColor.GetColorCode(areaId)));
143 btnStyleBlock.Append(GenerateCssVar("btn-font-color-hover", BC.ButtonHoverColorConfiguration.FontColor.GetColorCode(areaId)));
144 btnStyleBlock.Append(GenerateCssVar("btn-border-color-hover", BC.ButtonHoverColorConfiguration.BorderColor.GetColorCode(areaId)));
145
146 // Button Config Font Config
147 btnStyleBlock.Append(GenerateCssVar("btn-font-size", BC.FontConfiguration.FontSize));
148 btnStyleBlock.Append(GenerateCssVar("btn-font-config-color", BC.FontConfiguration.Color.GetColorCode(areaId)));
149 btnStyleBlock.Append(GenerateCssVar("btn-font-line-height", BC.FontConfiguration.LineHeight));
150 btnStyleBlock.Append(GenerateCssVar("btn-font-family", BC.FontConfiguration.FontConfiguration.FontFamily));
151 btnStyleBlock.Append(GenerateCssVar("btn-font-weight", BC.FontConfiguration.FontWeight));
152 btnStyleBlock.Append(GenerateCssVar("btn-font-transform", BC.FontConfiguration.FontStyle));
153
154 return btnStyleBlock.ToString();
155 }
156
157 public string GenerateCssVar(string name, string value)
158 {
159 if (!string.IsNullOrWhiteSpace(value)) {
160 return $"--{name}: {value};";
161 } else {
162 return "";
163 }
164 }
165 }
166
167
168 @*
169 @{
170 var image = GetString("ParagraphImageClean");
171 var parameters = GetString("ParagraphImage.FocalPointParameters");
172 var imageFocalX = GetString("ParagraphImage.FocalX");
173 var imageFocalY = GetString("ParagraphImage.FocalY");
174 var imageHasFocalPoint = GetBoolean("ParagraphImage.ImageHasFocalPoint");
175 }
176 <img src="/Admin/Public/GetImage.ashx?Image=@image&Format=jpg&Width=50&height=200&crop=7&@parameters" />*@
177 @{
178
179 JumbotronContainer _data = ItemManager.Storage.GetById<JumbotronContainer>(Pageview.CurrentParagraph.ItemId ?? "0");
180
181 var colorService = new ColorSwatchService();
182
183 string backgroundClass = !string.IsNullOrWhiteSpace(_data.JumbotronConfiguration.BackgroundClass) ? string.Format("bg-{0}", _data.JumbotronConfiguration.BackgroundClass) : "";
184 string JumbotronHeight = _data.JumbotronHeight + "px";
185
186 string BackgroundHorizontalPosition = "";
187 string BackgroundVerticalPosition = "";
188
189 string QuickmenuWidth = _data.QuickmenuWidth + "px";
190 int JumbotronListCount = _data.JumbotronList.Count;
191
192 string JumbotronCarouselClass = JumbotronListCount != 1 ? "jumbotron__carousel" : "jumbotron__no-carousel";
193 string JumbotronCarouselMobClass = JumbotronListCount != 1 ? "jumbotron__carousel-mob" : "jumbotron__no-carousel-mob";
194
195 var paragraphID = Pageview.CurrentParagraph.ID;
196 var JumbotronBackgroundClassName = "";
197
198 var subheaderFontConfig = GetFontConfiguration(_data.JumbotronConfiguration.ShoutboxSubheaderTextColor, _data.JumbotronConfiguration.FontConfigurationSubheader);
199 var headerFontConfig = GetFontConfiguration(_data.JumbotronConfiguration.ShoutboxHeaderTextColor, _data.JumbotronConfiguration.FontConfigurationHeader);
200 var contentFontConfig = GetFontConfiguration(_data.JumbotronConfiguration.ShoutboxContentTextColor, _data.JumbotronConfiguration.FontConfigurationContent);
201
202 string ShoutboxBackgroundColor = _data.JumbotronConfiguration.ShoutboxBackgroundColor;
203 string ShoutBoxGradient = _data.JumbotronConfiguration.ShoutboxBackgroundGradient;
204
205 string ShoutboxBackgroundImage = _data.JumbotronConfiguration.ShoutboxBackgroundImage;
206
207 string QuickmenuBackgoundImage = _data.JumbotronConfiguration.QuickmenuBackgroundImage;
208
209 ShoutboxBackgroundColor = colorService.GetHexColor(Pageview.AreaID, ShoutboxBackgroundColor);
210
211
212 }
213
214 <!--- BEGIN SVG SHAPE -->
215
216 <style>
217 .jumbotron-mask {
218 /*
219 -webkit-clip-path: url(#myClip);
220 clip-path: url(#myClip);
221 */
222 }
223 </style>
224
225 <!--- END SVG SHAPE -->
226 <!--
227 *****************************
228 **** BEGIN DESKTOP SETUP ****
229 *****************************
230 -->
231
232 <section class="jumbotron__playground jumbotron-mask jumbotron__playground-@paragraphID jumbotron--desktop @_data.CssClass @backgroundClass">
233
234 <section class="@JumbotronCarouselClass">
235
236 @foreach (var _item in _data.JumbotronList)
237 {
238
239 BackgroundHorizontalPosition = _item.BackgroundHorizontalPosition;
240 BackgroundVerticalPosition = _item.BackgroundVerticalPosition != "center" ? _item.BackgroundVerticalPosition : "middle";
241 JumbotronBackgroundClassName = "jumbotron__image_background_" + paragraphID + "_" + _item.Id;
242 string jumbotronImage = _item.Image.Image.Replace("?x","&x");
243 <div class="jumbotron @_item.CssClass" id="@_item.Id">
244
245 <style>
246
247 @@media screen and (min-width: 994px) {
248 .@JumbotronBackgroundClassName {
249 background-image: url('/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Width=1200&height=@_data.JumbotronHeight&Compression=80');
250 }
251 }
252
253 @@media screen and (min-width: 1200px) {
254 .@JumbotronBackgroundClassName {
255 background-image: url('/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Width=2000&height=@_data.JumbotronHeight&Compression=80');
256 }
257 }
258
259 </style>
260
261 <figure class="jumbotron__image rellaxOff @BackgroundHorizontalPosition @BackgroundVerticalPosition @JumbotronBackgroundClassName"></figure>
262
263 @RenderShoutbox(_data, _item)
264 </div>
265 }
266
267 </section>
268
269 <!-- BEGIN QUICKMENU -->
270
271 @RenderQuickmenu(_data)
272
273 <!-- END QUICKMENU -->
274
275 <div class="jumbotron__shaper-container"><!--//
276 <svg width="100%" height="500" viewBox="0 0 1600 600" preserveAspectRatio="none">
277 <defs>
278 <style>
279 .cls-1 {
280 fill: #cccccb;
281 }
282
283 .cls-2 {
284 fill: #fff;
285 opacity: 0.2;
286 }
287
288 </style>
289 </defs>
290 <title></title>
291 <path class="jumbotron__shaper-homepage" d="M2.59,495,237,553l122-48,132,54,360,16,262-48,176-90,154,120,112,12,206-102,159.79,65v71H1.56S1.31,493.72,2.59,495Z" />
292 <polygon class="cls-2" points="359 505 317 599 491 559 359 505" />
293 <polygon class="cls-2" points="1289 437 1443 557 1177 601 1289 437" />
294 <polygon class="cls-2" points="1761 467 1696.44 604.28 1920.8 603 1920.8 532.03 1761 467" />
295 </svg>
296 <svg width="100%" height="600" viewBox="0 0 2000 600" preserveAspectRatio="none">
297 <clipPath id="myClip">
298 <path class="cls-1" d="M1999.57,425c-123.24,53.94-329.82,96.6-581.35,119.35q33.6-6.59,65.7-14.19c104.82-24.86,197.33-58,276-98.78,21.37-11.08,49.25-53.51,49.25-53.51C1609,504.41,1328.64,545.78,1128.7,558.21c-31.7,2-62.42,3.29-91.8,4.12q-18.23.13-36.6.13c-81.34,0-160.65-1.95-237.08-5.65-16.15-1.19-25.6-1.31-25.6-1.31C416.39,538.15,148.8,489.67,1,425H.3V600h2000V425Z"></path>
299 </clipPath>
300 </svg>
301 //-->
302
303 <!--//
304 <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" height="0" width="0" viewBox="0 0 2000 600" preserveAspectRatio="">
305 <clipPath id="myClip">
306 <path class="st0" d="M0,0v325h0.2C37.1,389.7,104,438.2,184.3,455.5c0,0,2.4,0.1,6.4,1.3c19.1,3.7,38.9,5.7,59.3,5.7
307 c3.1,0,6.1,0,9.2-0.1c7.3-0.8,15-2.1,23-4.1c50-12.4,120.1-53.8,170.1-180.3c0,0-7,42.4-12.3,53.5c-19.7,40.8-42.8,73.9-69,98.8
308 c-5.4,5.1-10.8,9.8-16.4,14.2C417.4,421.6,469,378.9,499.8,325h0.2V0H0z" />
309 </clipPath>
310 </svg>
311 //-->
312
313 <!--<img src="https://images.unsplash.com/photo-1592006256125-1e7622ead3b0?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=400&fit=max&ixid=eyJhcHBfaWQiOjE0NTg5fQ" alt="Photographer in a market." height="1000" width="1000" />
314 <svg width="0" height="0">
315 <clipPath id="svgClip" clipPathUnits="objectBoundingBox">
316 <path d="M0.75815095, 0.0579477769 C0.879893708, 0.187288937 0.902165272, 0.677587654 0.799370955, 0.785996249 C0.627963035, 0.966765889 0.26163708, 0.91434951 0.111342491,0.755791573 C-0.0332137967,0.603287436 -0.035795248,0.382887577 0.0965066612,0.173955315 C0.200239457,0.0101396315 0.648923894,-0.0580965318 0.75815095,0.0579477769 Z"></path>
317 </clipPath>
318 </svg>
319 <style>
320 .jumbotron-mask {
321 clip-path: url(#svgClip);
322 width: 18em;
323 height: 18em;
324 object-fit: cover;
325 display: block;
326 margin-right: auto;
327 margin-left: auto;
328 }
329 </style>-->
330 </div>
331
332 </section>
333
334 <!--
335 ***************************
336 **** END DESKTOP SETUP ****
337 ***************************
338 -->
339 <!--
340 ****************************
341 **** BEGIN MOBILE SETUP ****
342 ****************************
343 -->
344
345 <section class="jumbotron__playground jumbotron__playground-@paragraphID jumbotron--mobile @_data.CssClass">
346
347 <section class="@JumbotronCarouselMobClass">
348
349 @foreach (var _item in _data.JumbotronList)
350 {
351
352 BackgroundHorizontalPosition = _item.BackgroundHorizontalPosition;
353 BackgroundVerticalPosition = _item.BackgroundVerticalPosition != "center" ? _item.BackgroundVerticalPosition : "middle";
354 string jumbotronImage = _item.Image.Image.Replace("?x","&x");
355 <div class="jumbotron @_item.CssClass">
356
357 <!-- BEGIN IMAGE -->
358
359 <figure class="jumbotron__image-container">
360 <picture class="jumbotron__image w-full h-full">
361 <source media="(max-width: 400px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=90&Width=400&Compression=80">
362 <source media="(max-width: 500px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=90&Width=500&Compression=80">
363 <source media="(max-width: 600px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=90&Width=600&Compression=80">
364 <source media="(max-width: 700px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=90&Width=700&Compression=80">
365 <source media="(max-width: 994px)" srcset="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Quality=90&Width=994&Compression=80">
366 <img src="/Admin/Public/GetImage.ashx?Image=@jumbotronImage&Crop=7&Format=webp&Width=400&Quality=90&Compression=80" width="1980" height="500" alt="@_item.Image.ImageAlt" />
367 </picture>
368 </figure>
369
370 <!-- END IMAGE -->
371 <!-- BEGIN SHOUTBOX -->
372
373 @RenderShoutbox(_data, _item)
374
375 <!-- END SHOUTBOX -->
376 </div>
377 }
378
379 </section>
380
381 <!-- BEGIN QUICKMENU -->
382
383 @RenderQuickmenu(_data)
384
385 <!-- END QUICKMENU -->
386
387 </section>
388
389 <!--
390 ************************
391 *** END MOBILE SETUP ***
392 ************************
393 -->
394
395 <style>
396 .jumbotron__playground,
397 .jumbotron {
398 height: auto;
399 }
400
401 @@media screen and (min-width: 991px){
402 .jumbotron__playground-@paragraphID .jumbotron__carousel,
403 .jumbotron__playground-@paragraphID .jumbotron {
404 height: @JumbotronHeight;
405 overflow: hidden;
406 }
407
408 .jumbotron__playground-@paragraphID .jumbotron__container {
409 width: 100%;
410 }
411
412 @*@if(!_data.JumbotronConfiguration.FullWidth){
413 <text>
414 .jumbotron__playground-@paragraphID .jumbotron__container {
415 max-width: @_data.JumbotronConfiguration.ContainerSize;
416 }
417 </text>
418 }*@
419
420 .jumbotron__playground-@paragraphID .quickmenu {
421 width: @QuickmenuWidth;
422 }
423
424 .jumbotron__playground-@paragraphID .jumbotron__no-carousel,
425 .jumbotron__playground-@paragraphID .jumbotron__carousel {
426 width: calc(100% - @QuickmenuWidth);
427
428 }
429
430 .jumbotron__playground-@paragraphID .jumbotron__subheading {
431 @RenderFontConfig(subheaderFontConfig)
432 }
433
434 .jumbotron__playground-@paragraphID .jumbotron__heading {
435 @RenderFontConfig(headerFontConfig)
436 }
437
438 .jumbotron__playground-@paragraphID .jumbotron__shoutbox-intro p,
439 .jumbotron__playground-@paragraphID .jumbotron__shoutbox-intro li {
440 @RenderFontConfig(contentFontConfig)
441 }
442
443 .jumbotron__playground-@paragraphID .jumbotron__shoutbox {
444 background-color: @ShoutboxBackgroundColor;
445 @if (!string.IsNullOrWhiteSpace(ShoutBoxGradient)) {
446
447 <text> @ShoutBoxGradient </text>
448
449 }
450 @if (!string.IsNullOrWhiteSpace(ShoutboxBackgroundImage)) {
451
452 <text>
453 background-image: url('@ShoutboxBackgroundImage');
454 </text>
455
456 }
457 }
458
459 .jumbotron__playground-@paragraphID .quickmenu {
460 @if (!string.IsNullOrWhiteSpace(QuickmenuBackgoundImage)) {
461
462 <text>
463 background-image: url('@QuickmenuBackgoundImage');
464 </text>
465
466 }
467 }
468
469
470 }
471 </style>
472
473 @helper RenderShoutbox(JumbotronContainer _data, JumbotronListItem _item)
474 {
475 string ShoutboxFullHeightClass = _data.ShoutboxFullHeight ? "fullheight" : "";
476 string ShoutboxBackgroundTransparentClass = _data.ShoutboxBackgroundTransparent ? "transparent" : "";
477
478 string ShoutboxHorizontalPositionClass = _data.ShoutboxHorizontalPosition;
479 string ShoutboxVerticalPositionClass = _data.ShoutboxVerticalPosition != "center" ? @_data.ShoutboxVerticalPosition : "middle";
480
481 <section class="jumbotron__container container @ShoutboxHorizontalPositionClass @ShoutboxVerticalPositionClass ">
482
483 @if (_item.HasShoutbox)
484 {
485 <div class="jumbotron__shoutbox @ShoutboxBackgroundTransparentClass @ShoutboxFullHeightClass">
486 <section class="jumbotron__shoutbox-header">
487
488 @_item.SubHeader.HeaderFormatted("jumbotron__subheading")
489 @_item.Header.HeaderFormatted("jumbotron__heading")
490
491 @if (!string.IsNullOrWhiteSpace(_item.Content.Text))
492 {
493 <div class="jumbotron__shoutbox-intro">@_item.Content.Text</div>
494 }
495 @{var _buttonConfiguration = ItemManager.Storage.GetById<ButtonConfiguration>(_item.Button.ButtonConfigurationID);
496 }
497 @RenderButton(_buttonConfiguration, _item.Button.GetLink(Pageview), _buttonConfiguration.ButtonClass, _item.Button.ButtonText, _item.Button.ButtonAriaLabel, _item.Button.NewWindow, "", "jumbotron__shoutbox-cta", "jumbotron__shoutbox-cta-label", "jumbotron__shoutbox-cta-icon")
498
499 </section>
500 </div>
501 }
502 </section>
503 }
504
505 @helper RenderQuickmenu(JumbotronContainer _data)
506 {
507 int quickmenuWidth = _data.QuickmenuWidth;
508
509 if (quickmenuWidth > 0)
510 {
511 <div class="quickmenu">
512 <h2 class="quickmenu__header">@_data.QuickmenuHeader</h2>
513 <nav class="quickmenu__list">
514 @foreach (var _link in _data.QuickmenuLinks)
515 {
516 var highlightedClass = _link.Highlighted ? "highlighted" : "";
517 var targetLink = _link.NewWindow ? "target='_blank'" : "";
518
519 <a href="@_link.Link" class="quickmenu__link @highlightedClass" @targetLink> @_link.Name </a>
520 }
521 </nav>
522 </div>
523 }
524 }
525