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