in common/app/model/dotcomrendering/DotcomRenderingSupportTypes.scala [69:143]
def apply(
block: APIBlock,
page: ContentPage,
shouldAddAffiliateLinks: Boolean,
request: RequestHeader,
isMainBlock: Boolean,
calloutsUrl: Option[String],
dateTimes: ArticleDateTimes,
tags: Seq[Tag],
): Block = {
val content = page.item
// We are passing through the block data here, not the article
// the block dateTime types are used for liveblogs
val blockCreatedOn = block.createdDate.map(_.dateTime)
val blockCreatedOnDisplay =
blockCreatedOn.map(dt => GUDateTimeFormatNew.formatTimeForDisplay(new DateTime(dt), request))
val blockFirstPublished = block.firstPublishedDate.map(_.dateTime)
val blockFirstPublishedDisplay =
blockFirstPublished.map(dt => GUDateTimeFormatNew.formatTimeForDisplay(new DateTime(dt), request))
val blockFirstPublishedDisplayNoTimezone =
blockFirstPublished.map(dt => GUDateTimeFormatNew.formatTimeForDisplayNoTimezone(new DateTime(dt), request))
val blockLastUpdated = block.lastModifiedDate.map(_.dateTime)
val blockLastUpdatedDisplay =
blockLastUpdated.map(dt => GUDateTimeFormatNew.formatTimeForDisplay(new DateTime(dt), request))
val displayedDateTimes = ArticleDateTimes.makeDisplayedDateTimesDCR(dateTimes, request)
val campaigns = page.getJavascriptConfig.get("campaigns")
val contributors = block.contributors flatMap { contributorId =>
tags
.find(_.id == s"profile/$contributorId")
.map(tag => Contributor(tag.title, tag.bylineImageUrl, tag.bylineLargeImageUrl))
}
val membershipPlaceholder = block.attributes.membershipPlaceholder map { placeholder =>
MembershipPlaceholder(placeholder.campaignCode)
}
val attributes = BlockAttributes(
block.attributes.pinned.getOrElse(false),
block.attributes.keyEvent.getOrElse(false),
block.attributes.summary.getOrElse(false),
membershipPlaceholder,
)
Block(
id = block.id,
attributes = attributes,
elements = DotcomRenderingUtils.blockElementsToPageElements(
block.elements.toSeq,
request,
content,
shouldAddAffiliateLinks,
isMainBlock,
content.metadata.format.exists(_.display == ImmersiveDisplay),
campaigns,
calloutsUrl,
),
blockCreatedOn = blockCreatedOn,
blockCreatedOnDisplay = blockCreatedOnDisplay,
blockLastUpdated = blockLastUpdated,
blockLastUpdatedDisplay = blockLastUpdatedDisplay,
title = block.title,
contributors = contributors.toSeq,
blockFirstPublished = blockFirstPublished,
blockFirstPublishedDisplay = blockFirstPublishedDisplay,
blockFirstPublishedDisplayNoTimezone = blockFirstPublishedDisplayNoTimezone,
primaryDateLine = displayedDateTimes.primaryDateLine,
secondaryDateLine = displayedDateTimes.secondaryDateLine,
)
}