Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 24 additions & 4 deletions applications/app/services/TagPagePicker.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,41 @@ import services.IndexPage
object TagPagePicker extends GuLogging {

def getTier(tagPage: IndexPage)(implicit request: RequestHeader): RenderType = {
lazy val isSwitchedOn = DCRTagPages.isSwitchedOn
lazy val isSwitchedOn = DCRTagPages.isSwitchedOn;

val checks = dcrChecks(tagPage)

val tier = decideTier(
request.isRss,
request.isJson,
request.forceDCROff,
request.forceDCR,
isSwitchedOn,
dcrCouldRender(checks),
)

logTier(tagPage, isSwitchedOn, tier)
logTier(tagPage, isSwitchedOn, dcrCouldRender(checks), checks, tier)

tier
}

private def dcrCouldRender(checks: Map[String, Boolean]): Boolean = {
checks.values.forall(identity)
}

private def dcrChecks(tagPage: IndexPage): Map[String, Boolean] = {
Map(
("isNotTagCombiner", !tagPage.page.isInstanceOf[TagCombiner]),
)
}

private def decideTier(
isRss: Boolean,
isJson: Boolean,
forceDCROff: Boolean,
forceDCR: Boolean,
isSwitchedOn: Boolean,
dcrCouldRender: Boolean,
): RenderType = {
if (isRss) LocalRender
else if (isJson) {
Expand All @@ -39,22 +53,28 @@ object TagPagePicker extends GuLogging {
else LocalRender
} else if (forceDCROff) LocalRender
else if (forceDCR) RemoteRender
else if (isSwitchedOn) RemoteRender
else if (dcrCouldRender && isSwitchedOn) RemoteRender
else LocalRender
}

private def logTier(
tagPage: IndexPage,
isSwitchedOn: Boolean,
dcrCouldRender: Boolean,
checks: Map[String, Boolean],
tier: RenderType,
)(implicit request: RequestHeader): Unit = {
val tierReadable = if (tier == RemoteRender) "dotcomcomponents" else "web"
val checksToString = checks.map { case (key, value) =>
(key, value.toString)
}
val properties =
Map(
"isSwitchedOn" -> isSwitchedOn.toString,
"dcrCouldRender" -> dcrCouldRender.toString,
"isTagPage" -> "true",
"tier" -> tierReadable,
)
) ++ checksToString

DotcomFrontsLogger.logger.logRequest(s"tag front executing in $tierReadable", properties, tagPage)
}
Expand Down
1 change: 0 additions & 1 deletion applications/conf/routes
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,6 @@ GET /$path<[\w\d-]*(/[\w\d-]*)?(/[\w\d-]*)?>.json
GET /$path<[\w\d-]*(/[\w\d-]*)?(/[\w\d-]*)?> controllers.IndexController.render(path)

# Tag combiners
GET /$leftSide<[^+]+>+*rightSide.json controllers.IndexController.renderCombiner(leftSide, rightSide)
GET /$leftSide<[^+]+>+*rightSide controllers.IndexController.renderCombiner(leftSide, rightSide)

# Google site verification
Expand Down
4 changes: 2 additions & 2 deletions applications/test/IndexControllerTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -149,12 +149,12 @@ import play.api.libs.ws.WSClient

it should "resolve uk-news combiner pages" in {
val result = indexController.renderCombiner("uk-news/series/writlarge", "law/trial-by-jury")(
TestRequest("/uk-news/series/writlarge+law/trial-by-jury?dcr=false"),
TestRequest("/uk-news/series/writlarge+law/trial-by-jury"),
)
status(result) should be(200)

val result2 = indexController.renderCombiner("uk-news/the-northerner", "blackpool")(
TestRequest("/uk-news/the-northerner+blackpool?dcr=false"),
TestRequest("/uk-news/the-northerner+blackpool"),
)
status(result2) should be(200)
}
Expand Down
8 changes: 4 additions & 4 deletions applications/test/common/CombinerFeatureTest.scala
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import scala.jdk.CollectionConverters._

Given("I visit a combiner page")

goTo("/world/iraq+tone/comment?dcr=false") { browser =>
goTo("/world/iraq+tone/comment") { browser =>
import browser._
val trails = $(".fc-slice__item")
Then("I should see content tagged with both tags")
Expand All @@ -31,7 +31,7 @@ import scala.jdk.CollectionConverters._

Given("I visit a combiner page")

goTo("/science+technology/apple?dcr=false") { browser =>
goTo("/science+technology/apple") { browser =>
import browser._
val trails = $(".fromage, .fc-slice__item, .linkslist__item")
Then("I should see content tagged with both the section and the tag")
Expand All @@ -44,7 +44,7 @@ import scala.jdk.CollectionConverters._

Given("I visit a combiner page with tags in the same section")

goTo("/books/jkrowling+harrypotter?dcr=false") { browser =>
goTo("/books/jkrowling+harrypotter") { browser =>
import browser._
val trails = $(".fromage, .fc-slice__item, .linkslist__item")
Then("I should see content tagged with both tags")
Expand All @@ -57,7 +57,7 @@ import scala.jdk.CollectionConverters._
Given("I visit a combiner page with a series tag in the same seciton")

goTo(
"/lifeandstyle/series/quick-and-healthy-recipes+series/hugh-fearnley-whittingstall-quick-and-healthy-lunches?dcr=false",
"/lifeandstyle/series/quick-and-healthy-recipes+series/hugh-fearnley-whittingstall-quick-and-healthy-lunches",
) { browser =>
import browser._
val trails = $(".fromage, .fc-slice__item, .linkslist__item")
Expand Down
13 changes: 0 additions & 13 deletions common/app/model/meta.scala
Original file line number Diff line number Diff line change
Expand Up @@ -559,25 +559,12 @@ case class TagCombiner(

private val webTitle: String = webTitleOverrides.getOrElse(id, s"${leftTag.name} + ${rightTag.name}")

val javascriptConfigOverrides: Map[String, JsValue] = Map(
("keywords", JsString(List(leftTag.properties.webTitle, rightTag.properties.webTitle).mkString(","))),
("keywordIds", JsString(List(leftTag.id, rightTag.id).mkString(","))),
(
"references",
JsArray(
(leftTag.properties.references ++ rightTag.properties.references).map(ref => Reference.toJavaScript(ref.id)),
),
),
)

override val metadata: MetaData = MetaData.make(
id = id,
section = leftTag.metadata.section,
webTitle = webTitle,
pagination = pagination,
description = Some(DotcomContentType.TagIndex.name),
javascriptConfigOverrides = javascriptConfigOverrides,
isFront = true,
commercial = Some(
// We only use the left tag for CommercialProperties
CommercialProperties(
Expand Down
10 changes: 1 addition & 9 deletions common/app/services/repositories.scala
Original file line number Diff line number Diff line change
Expand Up @@ -80,15 +80,7 @@ trait Index extends ConciergeRepository {
val tag2 = findTag(head.item, secondTag)
if (tag1.isDefined && tag2.isDefined) {
val page = TagCombiner(s"$leftSide+$rightSide", tag1.get, tag2.get, pagination(response))
Right(
IndexPage(
page,
contents = trails,
tags = Tags(List(tag1.get, tag2.get)),
date = DateTime.now,
tzOverride = None,
),
)
Right(IndexPage(page, contents = trails, tags = Tags(Nil), date = DateTime.now, tzOverride = None))
} else {
Left(NotFound)
}
Expand Down
14 changes: 0 additions & 14 deletions docs/06-features-and-components/03-tag-combiners.md

This file was deleted.

2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
- [Non-refreshable line items](05-commercial/04-non-refreshable-line-items.md)

## [Features and components](06-features-and-components/)
- [How are trail pictures picked in Frontend?](06-features-and-components/01-trail-images.md)
- [How are trail pictures picked in Frontend?](06-features-and-components/02-trail-images.md)
- [theguardian.com/font-loader](06-features-and-components/03-font-loader-route.md)

## [Performance](07-performance/)
Expand Down