From 57176a3aee0048e414419dfdf0f3f43204b01fc9 Mon Sep 17 00:00:00 2001 From: JesseBrault0709 <62299747+JesseBrault0709@users.noreply.github.com> Date: Fri, 7 Jun 2024 10:29:06 +0200 Subject: [PATCH] Composition page structure. --- .../site/composition/CompositionPage.groovy | 17 ++++++++++++++++- .../composition/CompositionPageTemplate.wvc | 7 +++++++ .../composition/CompositionContainer.groovy | 4 ++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/pages/groovy/com/jessebrault/site/composition/CompositionPage.groovy b/pages/groovy/com/jessebrault/site/composition/CompositionPage.groovy index 9839c09..b9e6ec7 100644 --- a/pages/groovy/com/jessebrault/site/composition/CompositionPage.groovy +++ b/pages/groovy/com/jessebrault/site/composition/CompositionPage.groovy @@ -2,18 +2,27 @@ package com.jessebrault.site.composition import com.jessebrault.site.util.TitleMaker import com.jessebrault.ssg.view.WvcPageView +import groovy.transform.Canonical import jakarta.inject.Inject import java.time.format.DateTimeFormatter class CompositionPage extends WvcPageView { + @Canonical + static class AlternateVersion { + final String versionName + final String path + } + Composition composition private final TitleMaker titleMaker + private final CompositionContainer compositionContainer @Inject - CompositionPage(TitleMaker titleMaker) { + CompositionPage(TitleMaker titleMaker, CompositionContainer compositionContainer) { this.titleMaker = titleMaker + this.compositionContainer = compositionContainer } String getTitle() { @@ -24,4 +33,10 @@ class CompositionPage extends WvcPageView { composition.date.format(DateTimeFormatter.ofPattern('yyyy')) } + Set getAlternateVersions() { + compositionContainer.getAlternateVersions(composition).collect { + new AlternateVersion(it.version, "/compositions/${it.slug}") + } + } + } diff --git a/pages/resources/com/jessebrault/site/composition/CompositionPageTemplate.wvc b/pages/resources/com/jessebrault/site/composition/CompositionPageTemplate.wvc index 90ab1bf..38e5255 100644 --- a/pages/resources/com/jessebrault/site/composition/CompositionPageTemplate.wvc +++ b/pages/resources/com/jessebrault/site/composition/CompositionPageTemplate.wvc @@ -11,6 +11,13 @@ import com.jessebrault.site.StandardPage $it

} />

$compositionYear

$composition.instrumentation

+ +

Alternate versions: +

+

+
${composition.text.render()} diff --git a/src/main/groovy/com/jessebrault/site/composition/CompositionContainer.groovy b/src/main/groovy/com/jessebrault/site/composition/CompositionContainer.groovy index 703ecba..6631f64 100644 --- a/src/main/groovy/com/jessebrault/site/composition/CompositionContainer.groovy +++ b/src/main/groovy/com/jessebrault/site/composition/CompositionContainer.groovy @@ -35,4 +35,8 @@ class CompositionContainer { this.compositions.findAll { it.categories.contains(category) } } + Set getAlternateVersions(Composition composition) { + this.compositions.findAll { it.title == composition.title && it.version != composition.version } + } + }