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 } + } + }