Error executing template "Designs/ProNails_generated/Paragraph/CTAParagraph.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
at Bluedesk.DynamicWeb.ItemTypes.CTAButton.GetLink(PageView pv, String navigationtag)
at CompiledRazorTemplates.Dynamic.RazorEngine_ec5d95b299f1474c80c60044f6aca9a4.Execute() in D:\dynamicweb.net\Solutions\Bluedesk\pronails.cloud.dynamicweb-cms.com\files\Templates\Designs\ProNails_generated\Paragraph\CTAParagraph.cshtml:line 58
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.Frontend;
4 @using Dynamicweb.Content.Items;
5 @using Bluedesk.DynamicWeb.ItemTypes;
6 @using Bluedesk.Tools.DynamicWeb.DataAccess;
7
8 @using System.Runtime.Caching;
9
10
11 @{
12 /* var paragraphID = Pageview.CurrentParagraph.ID;
13 CTAParagraph _data = Dynamicweb.Services.Items.GetItem("CTAParagraph", Pageview.CurrentParagraph.ItemId).ToCodeFirstItem<CTAParagraph>() ?? new CTAParagraph(); */
14
15 /* Hack */
16
17 var paragraphID = Pageview.CurrentParagraph.ID;
18 CTAParagraph _data = new CTAParagraph();
19
20 int CacheTime = 5;
21 MemoryCache memCache = MemoryCache.Default;
22 string cacheKey = $"CTAParagraph_{paragraphID}-{Pageview.AreaID}";
23
24 if (Pageview.IsVisualEditorMode)
25 {
26 var cache = MemoryCache.Default;
27 memCache.Remove($"CTAParagraph_{paragraphID}-{Pageview.AreaID}");
28 }
29
30 if (memCache.Contains(cacheKey))
31 {
32 _data = memCache.Get(cacheKey) as CTAParagraph;
33
34 if (_data == null)
35 {
36 _data = Dynamicweb.Content.Services.Items.GetItem("CTAParagraph", Pageview.CurrentParagraph.ItemId).ToCodeFirstItem<CTAParagraph>() ?? new CTAParagraph();
37 memCache.Set(cacheKey, _data, DateTimeOffset.UtcNow.AddMinutes(CacheTime));
38
39 }
40
41 }
42 else
43 {
44 _data = Dynamicweb.Content.Services.Items.GetItem("CTAParagraph", Pageview.CurrentParagraph.ItemId).ToCodeFirstItem<CTAParagraph>() ?? new CTAParagraph();
45 memCache.Set(cacheKey, _data, DateTimeOffset.UtcNow.AddMinutes(CacheTime));
46 }
47
48 /* End Hack */
49
50 List<string> BackgroundConfigIdList = ((List<string>)Dynamicweb.Context.Current.Items["BackgroundConfigIdList"]) ?? new List<string>();
51 BackgroundConfigIdList.Add(_data.BackgroundConfigurationID);
52 Dynamicweb.Context.Current.Items["BackgroundConfigIdList"] = BackgroundConfigIdList;
53
54 string contentRightClass = _data.ImagePosition.Equals("right") ? "image-right" : "image-left";
55
56 string newWindow = _data.Button.NewWindow ? "target='_blank'" : "";
57 string ariaLabel = !string.IsNullOrWhiteSpace(_data.Button.ButtonAriaLabel) ? "aria-label='" + _data.Button.ButtonAriaLabel + "'" : "";
58 bool clickableBlock = !string.IsNullOrWhiteSpace(_data.Button.GetLink(Pageview)) && _data.Clickable;
59 string clickableClass = clickableBlock ? "cta-paragraph__container--clickable" : "";
60 string ctaHasBackgroundImageClass = _data.ImageAsBackground ? "cta-paragraph--hasbackgroundimg" : "";
61
62 bool hasContent = !string.IsNullOrWhiteSpace(_data.Button.ButtonText) || !string.IsNullOrWhiteSpace(_data.Content.Text) || !string.IsNullOrWhiteSpace(_data.Header.HeaderFormatted());
63 double ColumnWidthSize = hasContent ? 0.5 : 1;
64
65 // string backgroundClass = getbackgroundclass(_data.BackgroundConfiguration.BackgroundClass);
66
67 string AnimateDirection = !string.IsNullOrWhiteSpace(_data.AnimateDirection) ? _data.AnimateDirection : "";
68 bool AnimateHalfBlock = false;
69 int AnimationDuration = _data.AnimateDuration;
70 string DataAosValue = "";
71
72 switch (AnimateDirection)
73 {
74 case "left":
75 DataAosValue = "fade-left";
76 break;
77
78 case "right":
79 DataAosValue = "fade-right";
80 break;
81
82 case "up":
83 DataAosValue = "fade-up";
84 break;
85
86 case "down":
87 DataAosValue = "fade-down";
88 break;
89
90 case "center":
91 AnimateHalfBlock = true;
92 break;
93
94 case "":
95 case "none":
96 // No action
97 break;
98 }
99
100 string ParagraphHeight = _data.Height == 0 ? "auto" : _data.Height + "px";
101
102 }
103
104 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
105 @using Dynamicweb;
106 @using Dynamicweb.Content.Items;
107 @using Bluedesk.DynamicWeb.ItemTypes;
108
109 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
110 @using Dynamicweb;
111 @using Dynamicweb.Content.Items;
112 @using Bluedesk.DynamicWeb.ItemTypes;
113
114 @functions {
115
116 Dictionary<string, string> GetFontConfiguration(string TextColor, FontConfigurationItemTab FontConfiguration)
117 {
118 var colorService = new ColorSwatchService();
119 TextColor = !string.IsNullOrWhiteSpace(TextColor) ? TextColor : "" ;
120 TextColor = !TextColor.Contains("#") ? colorService.GetHexColor(Pageview.AreaID, TextColor) : TextColor;
121 Dictionary<string, string> FontConfig = new Dictionary<string, string>() {
122 { "textColor" , TextColor },
123 { "fontSize" , FontConfiguration.FontSize },
124 { "lineHeight", FontConfiguration.LineHeight},
125 { "fontFamily" , FontConfiguration.FontConfiguration.FontFamily },
126 { "fontWeight" , FontConfiguration.FontWeight },
127 { "fontStyle" , FontConfiguration.FontStyle }
128 };
129 return FontConfig;
130 }
131
132 public string GenerateButtonConfigVariables(ButtonConfiguration BC, MasterConfig mc, int areaId)
133 {
134 string ButtonLabelAlignment = BC.ButtonLabelAlignment;
135 switch (ButtonLabelAlignment)
136 {
137 case "align-left":
138 ButtonLabelAlignment = "flex-start";
139 break;
140 case "align-center":
141 ButtonLabelAlignment = "center";
142 break;
143 case "align-right":
144 ButtonLabelAlignment = "flex-end";
145 break;
146 case "align-full":
147 ButtonLabelAlignment = "space-between";
148 break;
149 default:
150 ButtonLabelAlignment = "flex-start";
151 break;
152 }
153
154 var btnStyleBlock = new System.Text.StringBuilder();
155
156 // General Config
157 btnStyleBlock.Append(GenerateCssVar("btn-min-height", $"{mc.GeneralConfiguration.ButtonHeight}px"));
158 btnStyleBlock.Append(GenerateCssVar("btn-border-radius", $"{mc.GeneralConfiguration.RoundedCornerValue}px"));
159
160 // Button Config
161 btnStyleBlock.Append(GenerateCssVar("btn-border-width", $"{BC.BorderSize.ToString()}px"));
162 btnStyleBlock.Append(GenerateCssVar("btn-label-alignment", ButtonLabelAlignment));
163
164 // Button Config Tab
165 btnStyleBlock.Append(GenerateCssVar("btn-bg-color", BC.ButtonColorConfiguration.BackgroundColor.GetColorCode(areaId)));
166 btnStyleBlock.Append(GenerateCssVar("btn-font-color", BC.ButtonColorConfiguration.FontColor.GetColorCode(areaId)));
167 btnStyleBlock.Append(GenerateCssVar("btn-border-color", BC.ButtonColorConfiguration.BorderColor.GetColorCode(areaId)));
168
169 // Button Config Hover tab
170 btnStyleBlock.Append(GenerateCssVar("btn-bg-color-hover", BC.ButtonHoverColorConfiguration.BackgroundColor.GetColorCode(areaId)));
171 btnStyleBlock.Append(GenerateCssVar("btn-font-color-hover", BC.ButtonHoverColorConfiguration.FontColor.GetColorCode(areaId)));
172 btnStyleBlock.Append(GenerateCssVar("btn-border-color-hover", BC.ButtonHoverColorConfiguration.BorderColor.GetColorCode(areaId)));
173
174 // Button Config Font Config
175 btnStyleBlock.Append(GenerateCssVar("btn-font-size", BC.FontConfiguration.FontSize));
176 btnStyleBlock.Append(GenerateCssVar("btn-font-config-color", BC.FontConfiguration.Color.GetColorCode(areaId)));
177 btnStyleBlock.Append(GenerateCssVar("btn-font-line-height", BC.FontConfiguration.LineHeight));
178 btnStyleBlock.Append(GenerateCssVar("btn-font-family", BC.FontConfiguration.FontConfiguration.FontFamily));
179 btnStyleBlock.Append(GenerateCssVar("btn-font-weight", BC.FontConfiguration.FontWeight));
180 btnStyleBlock.Append(GenerateCssVar("btn-font-transform", BC.FontConfiguration.FontStyle));
181
182 return btnStyleBlock.ToString();
183 }
184
185 public string GenerateCssVar(string name, string value)
186 {
187 if (!string.IsNullOrWhiteSpace(value)) {
188 return $"--{name}: {value};";
189 } else {
190 return "";
191 }
192 }
193 }
194
195
196 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
197 @using Dynamicweb;
198 @using Dynamicweb.Content.Items;
199 @using Bluedesk.DynamicWeb.ItemTypes;
200 @using Bluedesk.DynamicWeb.ItemTypes.Configuration;
201
202
203 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>>
204 @using Dynamicweb;
205 @using Dynamicweb.Content.Items;
206 @using Bluedesk.DynamicWeb.ItemTypes;
207 @using Bluedesk.DynamicWeb.ItemTypes.Extensions;
208 @using Bluedesk.DynamicWeb.ItemTypes.Configuration;
209 @using Bluedesk.DynamicWeb.ItemTypes.Settings.Configuration;
210 @using Dynamicweb;
211 @using Dynamicweb.Frontend
212 @using Bluedesk.DynamicWeb.ItemTypes.BaseSolution;
213
214 @helper RenderButton(CTAButton button, PageView Pageview)
215 {
216
217 if (!string.IsNullOrWhiteSpace(button.GetLink(Pageview)))
218 {
219 string Template = button.GetButtonTemplate().Replace("{{ ButtonLink }}", button.GetLink(Pageview));
220 @Template;
221 }
222 }
223
224
225 @{
226
227 var colorService = new ColorSwatchService();
228
229 string fullWidthContainerClass = _data.Fullwidth ? "" : "container";
230
231 string backgroundClass = !string.IsNullOrWhiteSpace(_data.BackgroundConfiguration.BackgroundClass) ? string.Format("bg-{0}", _data.BackgroundConfiguration.BackgroundClass) : "";
232 string backgroundStyle = !string.IsNullOrWhiteSpace(_data.BackgroundConfiguration.BackgroundColor) ? $"background-color: {_data.BackgroundConfiguration.BackgroundColor}; " : "";
233 backgroundStyle += !string.IsNullOrWhiteSpace(_data.BackgroundConfiguration.BackgroundImage) ? $"background-image: url({_data.BackgroundConfiguration.BackgroundImage}); " : "";
234
235 // string backgroundClass = "null";
236 // string backgroundStyle = "";
237 }
238
239
240 @functions {
241 //string getbackgroundclass(string backgroundClass)
242 //{
243 // return !string.IsNullOrWhiteSpace(backgroundClass) ? string.Format("bg-{0}", backgroundClass) : "";
244 //}
245 }
246
247 @helper CTAParagraphImage(
248 ParagraphImageResizable Image,
249 bool hasContent,
250 bool ImageAsBackground,
251 string ImagePosition,
252 bool ParallaxImage,
253 bool Fullwidth,
254 string imagesHeight,
255 double ColumnWidthSize,
256 int AnimationDuration = 300,
257 bool AnimateHalfBlock = false
258 )
259 {
260 if (!string.IsNullOrWhiteSpace(Image.Image))
261 {
262
263 string image = !string.IsNullOrWhiteSpace(Image.Image) ? Image.Image : null;
264 imagesHeight = hasContent ? imagesHeight : "100%";
265 imagesHeight = !string.IsNullOrWhiteSpace(imagesHeight) ? "height: " + imagesHeight + ";" : "";
266
267 string imageParrallax = ParallaxImage ? "rellax" : "";
268 string imageAsBackground = ImageAsBackground ? "cta-paragraph__image--is-background" : "";
269 double imageWidth = 2000;
270
271 imageWidth = Fullwidth ? imageWidth : 1200;
272 imageWidth = !ImageAsBackground ? imageWidth * ColumnWidthSize : imageWidth;
273
274 string strImageWidth = imageWidth + "px";
275 string strImageWidthSize = imageWidth + "w";
276
277 string ImageUrl;
278 if (image.EndsWith(".gif"))
279 {
280 ImageUrl = image;
281 }
282 else
283 {
284 ImageUrl = "/Admin/Public/GetImage.ashx?Image=" + image + "&Crop=7&Format=webp&Quality=90&Compression=80";
285 ImageUrl = ImageUrl.Replace("?x", "&x");
286 }
287
288 string animationDirection = AnimateHalfBlock ? ImagePosition.Equals("right") ? "fade-left" : "fade-right" : "";
289
290 if (!string.IsNullOrWhiteSpace(Image.Image))
291 {
292
293 <figure class="cta-paragraph__image-container @imageAsBackground @Image.PositionY @Image.PositionX" style="@imagesHeight" data-aos="@animationDirection" data-aos-duration="@AnimationDuration">
294
295 <picture class="cta-paragraph__image @Image.BackgroundSize @imageParrallax">
296 @if (ImageUrl.EndsWith(".gif"))
297 {
298 <source media="(max-width: 400px)" srcset="@ImageUrl&Width=400">
299 <source media="(max-width: 994px)" srcset="@ImageUrl&Width=994">
300 <img src="@ImageUrl" loading="lazy" alt="@Image.ImageAlt" class="cta-paragraph__image @Image.BackgroundSize @imageParrallax" width="1980" height="500">
301 }
302 else
303 {
304 <source media="(max-width: 400px)" srcset="@ImageUrl&Width=400">
305 <source media="(max-width: 994px)" srcset="@ImageUrl&Width=994">
306 <img src="@ImageUrl&Width=@imageWidth" loading="lazy" alt="@Image.ImageAlt" class="cta-paragraph__image @Image.BackgroundSize @imageParrallax" width="1980" height="500">
307 }
308 </picture>
309
310 </figure>
311 }
312 }
313 }
314
315 @helper CTAParagraphContent(
316 int paragraphID,
317 ParagraphHeader Header,
318 ParagraphHeader SubHeader,
319 ParagraphContent Content,
320 CTAButton Button,
321 CTAButton ExtraButton,
322 ParagraphImage Image,
323 bool strCenterVertical,
324 string ImagePosition = "",
325 int AnimationDuration = 300,
326 bool AnimateHalfBlock = false
327 )
328 {
329
330 bool hasImage = !string.IsNullOrWhiteSpace(Image.Image) ? true : false;
331 string noImageClass = hasImage ? "" : "no-image";
332
333 string centerTextClass = strCenterVertical ? "text-center" : "";
334 string centerContent = !string.IsNullOrWhiteSpace(Image.Image) ? "" : "cta-paragraph__content--center";
335
336 string paragraphInstanceClass = "cta-paragraph__content--" + paragraphID;
337
338 string animationDirection = (AnimateHalfBlock && hasImage) ? ImagePosition.Equals("right") ? "fade-right" : "fade-left" : "";
339
340 if (!string.IsNullOrWhiteSpace(Button.ButtonText) || !string.IsNullOrWhiteSpace(Content.Text) || !string.IsNullOrWhiteSpace(Header.HeaderFormatted("cta-paragraph__header")))
341 {
342
343 <section class="cta-paragraph__content @paragraphInstanceClass @centerContent @noImageClass" data-aos="@animationDirection" data-aos-duration="@AnimationDuration">
344
345 <article class="cta-paragraph__content-container @noImageClass">
346
347 @if (!string.IsNullOrWhiteSpace(Header.HeaderFormatted("cta-paragraph__header")))
348 {
349 <header class="cta-paragraph__header @centerTextClass">
350 @if (SubHeader != null)
351 {
352 @SubHeader.HeaderFormatted("cta-paragraph__subheader")
353 }
354 @Header.HeaderFormatted("cta-paragraph__header")
355 </header>
356 }
357
358 @if (!string.IsNullOrWhiteSpace(Content.Text))
359 {
360 <div class="cta-paragraph__text @centerTextClass">@Content.Text</div>
361 }
362
363 @if (!string.IsNullOrWhiteSpace(Button.GetLink(Pageview)) && !string.IsNullOrWhiteSpace(Button.ButtonText))
364 {
365 <nav class="cta-paragraph__btn-navigation @centerTextClass">
366 @RenderButton(Button, Pageview)
367 @RenderButton(ExtraButton, Pageview)
368 </nav>
369 }
370
371 </article>
372 </section>
373
374 }
375
376 }
377
378 @helper CTAParagraphVideo(ParagraphVideo Video, string imagesHeight)
379 {
380 if (!string.IsNullOrWhiteSpace(Video.YoutubeLink) || !string.IsNullOrWhiteSpace(Video.VimeoLink))
381 {
382 string YoutubeID = Video.YoutubeId;
383 string YoutubeLink = Video.YoutubeLink;
384
385 string VimeoID = Video.VimeoId;
386 string VimeoLink = Video.VimeoLink;
387
388 int CleanVideo = Video.Clean ? 1 : 0;
389 int ShowControls = Video.ShowControls ? 1 : 0;
390 int AutoPlay = Video.AutoPlay ? 1 : 0;
391 int LoopVideo = Video.LoopVideo ? 1 : 0;
392 int MuteAudio = Video.MuteAudio ? 1 : 0;
393 string hideControlsClass = Video.ShowControls ? "video-player-wrapper--hidecontrols" : "";
394 string origin = Dynamicweb.Environment.Helpers.LinkHelper.GetHttpDomain();
395 imagesHeight = !string.IsNullOrWhiteSpace(imagesHeight) ? "height: " + imagesHeight + ";" : "";
396
397 if (!string.IsNullOrWhiteSpace(YoutubeLink))
398 {
399 if(AutoPlay == 1)
400 {
401 <section class="cta-paragraph__video-container" style="@imagesHeight">
402 <div class="">
403 <div class="video-player-wrapper @hideControlsClass">
404 <iframe class="video-player" loading="lazy" data-video="@YoutubeID" frameborder="0" allowfullscreen allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" src="https://www.youtube-nocookie.com/embed/@YoutubeID?autoplay=@AutoPlay&controls=@ShowControls&loop=@LoopVideo&playlist=@YoutubeID&playsinline=1&modestbranding=@CleanVideo&mute=@MuteAudio&rel=0&enablejsapi=1&origin=@origin&disablekb=0"></iframe>
405 </div>
406 </div>
407 </section>
408 }
409 else
410 {
411 <lite-youtube videoid="@YoutubeID" params="controls=@ShowControls&loop=@LoopVideo&playlist=@YoutubeID&playsinline=1&modestbranding=@CleanVideo&mute=@MuteAudio&rel=0&enablejsapi=1&origin=@origin&disablekb=0"></lite-youtube>
412 }
413 }
414 if (!string.IsNullOrWhiteSpace(VimeoLink))
415 {
416 <section class="cta-paragraph__video-container" style="@imagesHeight">
417 <div class="">
418 <div class="video-player-wrapper">
419 <iframe class="video-player" loading="lazy" data-video="@VimeoID" frameborder="0" allowfullscreen allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="Vimeo video player" src="https://player.vimeo.com/video/@VimeoID?title=0&byline=0&portrait=0&autoplay=@AutoPlay&controls=@ShowControls&loop=@LoopVideo&muted=@MuteAudio"></iframe>
420 </div>
421 </div>
422 </section>
423 }
424 }
425 }
426
427 @helper CTAParagraphIcon(ParagraphIcon Icon, bool strCenterVertical)
428 {
429 if (!string.IsNullOrWhiteSpace(Icon.FaIcon))
430 {
431 string centerIconClass = strCenterVertical ? "justify-center" : "justify-start";
432 string iconSizeClass = string.Format("cta-paragraph__icon--{0}", Icon.FaIconSize);
433
434 <div class="cta-paragraph__icon-container">
435 <div class="cta-paragraph__icon-inner-container @centerIconClass">
436 <span class="cta-paragraph__icon @iconSizeClass">@Icon.FaIcon</span>
437 </div>
438 </div>
439 }
440 }
441
442 @helper RenderContentAlignment(BackgroundConfiguration data)
443 {
444
445 switch (data.ContentElementAlign)
446 {
447 case "align-left":
448 <text>
449 align-items: flex-start;
450 text-align: left;
451 </text>
452 break;
453 case "align-center":
454 <text>
455 align-items: center;
456 text-align: center;
457 </text>
458 break;
459 case "align-right":
460 <text>
461 align-items: flex-end;
462 text-align: right;
463 </text>
464 break;
465 case "align-full":
466 <text>
467 align-items: flex-start;
468 text-align: justify;
469 </text>
470 break;
471 }
472
473 }
474
475
476 <style>
477
478 @@media screen and (min-width: 991px) {
479 .cta-paragraph__container--@paragraphID {
480 height: @ParagraphHeight !important;
481 }
482 }
483
484 </style>
485
486 @if (_data != null)
487 {
488
489 string BackgroundPadding = _data.BackgroundConfiguration.backgroundPadding;
490
491 bool Containerfit = _data.BackgroundConfiguration.ContainerFit == "Fit" ? true : false;
492 if (!string.IsNullOrWhiteSpace(contentRightClass))
493 {
494 contentRightClass = Containerfit ? "" : contentRightClass;
495 }
496
497 string backgroundImageRepeatClass = _data.BackgroundConfiguration.BackgroundImageRepeat;
498 string backgroundImageSizeClass = "";
499
500 string BackgroundImagePositionX = _data.BackgroundConfiguration.BackgroundImagePositionX;
501 string BackgroundImagePositionY = _data.BackgroundConfiguration.BackgroundImagePositionY;
502
503
504 string BackgroundImagePositionClass = "";
505
506 if (backgroundImageRepeatClass == "no-repeat")
507 {
508 BackgroundImagePositionClass = BackgroundImagePositionY + "-" + BackgroundImagePositionX;
509 backgroundImageSizeClass = _data.BackgroundConfiguration.BackgroundImageSize;
510 }
511
512 string shadowClass = _data.BackgroundConfiguration.contentShadow ? "contentShadow" : "";
513
514 <section class="cta-paragraph cta-paragraph--@paragraphID config--@_data.BackgroundConfigurationID @backgroundClass @_data.CssClass @backgroundImageRepeatClass @BackgroundImagePositionClass @backgroundImageSizeClass @BackgroundPadding @ctaHasBackgroundImageClass" style="@backgroundStyle" data-paragraphid="@paragraphID" id="@paragraphID" data-aos="@DataAosValue" data-aos-duration="@AnimationDuration">
515
516 <div class="cta-paragraph__container cta-paragraph__container--@paragraphID @fullWidthContainerClass @clickableClass @contentRightClass @shadowClass">
517
518 <style>
519
520 .cta-paragraph--@paragraphID .cta-paragraph__content {
521 @if (Containerfit)
522 {
523 <text>
524 flex-grow: 0;
525 </text>
526 }
527 }
528
529 .cta-paragraph--@paragraphID .cta-paragraph__image-container {
530 @if (Containerfit)
531 {
532 <text>
533 position: absolute;
534 top: 0;
535 left: 0;
536 right: 0;
537 bottom: 0;
538 </text>
539 }
540 }
541
542 </style>
543
544 @CTAParagraphImage(
545 _data.Image,
546 true,
547 _data.ImageAsBackground,
548 _data.ImagePosition,
549 _data.ParallaxImage,
550 _data.Fullwidth,
551 "",
552 ColumnWidthSize,
553 AnimationDuration,
554 AnimateHalfBlock
555 )
556 @CTAParagraphContent(
557 paragraphID,
558 _data.Header,
559 _data.SubHeader,
560 _data.Content,
561 _data.Button,
562 _data.ExtraButton,
563 _data.Image,
564 _data.CenterVertical,
565 _data.ImagePosition,
566 AnimationDuration,
567 AnimateHalfBlock
568 )
569
570 @if (clickableBlock)
571 {
572 <a href="@_data.Button.GetLink(Pageview)" class="cta-paragraph__clickable" @newWindow @ariaLabel></a>
573 }
574
575 </div>
576
577 </section>
578 }
579