@import views.support.ImgSrc
@(item: layout.ContentCard, containerIndex: Int, index: Int, visibilityDataAttribute: String, isFirstContainer: Boolean, isList: Boolean)(implicit request: RequestHeader)
@import layout.{FaciaWidths, FrontendLatestSnap}
@import model.{CrosswordSvg, InlineImage, InlineSlideshow, InlineVideo, InlineYouTubeMediaAtom, VideoPlayer}
@import views.html.fragments.items.elements.facia_cards._
@import views.html.fragments.items.elements.starRating
@import views.html.fragments.items.facia_cards.meta
@import views.html.fragments.atoms.youtube
@import views.html.fragments.media.video
@import views.html.fragments.inlineSvg
@import views.support.{CutOut, GetClasses, RemoveOuterParaHtml, RenderClasses, Video640}
@import model.ContentDesignType.RichContentDesignType
@import Function.const
data-discussion-id="@id"
}
data-discussion-closed="@item.discussionSettings.isClosedForComments"
data-discussion-url="@item.header.url.get(request)#comments"
}
data-link-name="@item.dataLinkName(index)"
data-item-visibility="@visibilityDataAttribute"
data-test-id="facia-card"
@item.id.map { id => data-id="@id" }
@item.snapStuff.map(_.dataAttributes)
@item.shortUrl.map { shortUrl => data-loyalty-short-url="@shortUrl" }>
@if(item.hasInlineSnapHtml) {
@item.snapStuff.map { snap =>
@snap.embedCss.map { css => }
@snap.embedHtml.map(Html(_))
@snap.embedJs.map { js => }
}
} else {
@container(item)
}
@mediaMeta(item: layout.ContentCard) = {
@item.displayElement.filter(const(item.showDisplayElement)) match {
case Some(InlineVideo(videoElement, title, fallback)) if item.cardTypes.showVideoPlayer => {
@defining(VideoPlayer(
videoElement,
Video640,
title,
autoPlay = false,
showControlsAtStart = false,
overrideIsRatioHd = Some(false),
// We only pass in the ID if this is a video or audio block, as if it's a mainMedia video, the
// ID is actually pointing to the article, which is wrong. It would be nice to have the ID on the
// ContentCard, but we don't for now. Annoyingly this doesn't allow us to check for if we should
// play ads or if the video is expired, but as fronts change really often, this is a non-problem.
embedPath = if (item.isMediaLink) item.id else None,
path = if (item.isMediaLink) item.id else None
)) { player =>
@fallback.map { fallbackImage =>
}
}
}
case Some(svg@CrosswordSvg(_)) => {
}
case Some(media@InlineYouTubeMediaAtom(_,_)) => {
}
case Some(InlineVideo(_, _, Some(fallbackImage))) => {
@itemImage(
fallbackImage.imageMedia,
inlineImage = containerIndex == 0 && index < 4,
widthsByBreakpoint = Some(item.mediaWidthsByBreakpoint),
shouldLazyLoad = containerIndex > 2
)
}
case Some(InlineImage(images)) => {
@item.starRating.map { rating =>
@starRating(rating)
}
@itemImage(
images,
inlineImage = containerIndex == 0 && index < 4,
widthsByBreakpoint = Some(item.mediaWidthsByBreakpoint),
shouldLazyLoad = containerIndex > 2
)
}
case Some(InlineSlideshow(imageElements)) => {
@defining(imageElements.take(10)) { slides =>
}
}
case _ => {}
}
@title(item.header, index, containerIndex, snapType = item.snapStuff.map(_.snapType), isAction = item.isAction)
@item.bylineText.map { byline =>
@byline
}
@item.starRating.map { rating =>
@starRating(rating)
}
@if(item.isMediaLink) {
@standfirst(item)
} else {
@standfirst(item)
@meta(item)
@if(item.cardTypes.showCutOut) {
@item.cutOut.map { cutout =>
@image(
classes = Seq("fc-item__avatar__media", CutOut.cssClass(cutout.orientation)),
widths = FaciaWidths.cutOutFromItemClasses(item.cardTypes),
maybePath = Some(cutout.imageUrl)
)
}
}
}
@if(item.isLive && item.displaySettings.showLivePlayable && !isList) {
}
@if(item.isMediaLink) {
} else {
@if(item.sublinks.nonEmpty) {
}
}
@if(item.sublinks.nonEmpty) {
}
@if(item.designType.nameOrDefault == "comment") {
@meta(item)
}
@RemoveOuterParaHtml(item.header.headline)
}