From 99846f05f2f0412e007ad65932c8108c7e761caf Mon Sep 17 00:00:00 2001 From: JesseBrault0709 <62299747+JesseBrault0709@users.noreply.github.com> Date: Mon, 10 Jun 2024 13:59:39 +0200 Subject: [PATCH] Added open graph data. --- .../groovy/com/jessebrault/site/Head.groovy | 2 ++ .../com/jessebrault/site/StandardPage.groovy | 3 ++ .../jessebrault/site/util/OpenGraph.groovy | 32 +++++++++++++++++++ .../com/jessebrault/site/HeadTemplate.wvc | 1 + .../jessebrault/site/StandardPageTemplate.wvc | 2 +- .../site/util/OpenGraphTemplate.wvc | 8 +++++ .../site/biography/BiographyPage.groovy | 4 +-- .../site/composition/CompositionPage.groovy | 7 +++- .../composition/CompositionPageFactory.groovy | 1 - .../site/CompositionsPageTemplate.wvc | 12 ++++++- .../site/biography/BiographyPageTemplate.wvc | 14 +++++++- .../composition/CompositionPageTemplate.wvc | 12 ++++++- .../site/contact/ContactPageTemplate.wvc | 14 +++++++- .../site/composition/Composition.groovy | 1 + .../composition/CompositionContainer.groovy | 1 + texts/compositions/Arcadia.md | 3 +- texts/compositions/Capriccioso.md | 3 +- texts/compositions/Conversations.md | 2 ++ texts/compositions/FourPiecesForPiano.md | 2 ++ texts/compositions/Illuminatio.md | 4 ++- texts/compositions/NearUnderFar.md | 1 + texts/compositions/SonataShambhala.md | 2 ++ texts/compositions/SpiritTravels.md | 3 +- texts/compositions/SpiritTravelsOrchestra.md | 1 + 24 files changed, 122 insertions(+), 13 deletions(-) create mode 100644 components/groovy/com/jessebrault/site/util/OpenGraph.groovy create mode 100644 components/resources/com/jessebrault/site/util/OpenGraphTemplate.wvc diff --git a/components/groovy/com/jessebrault/site/Head.groovy b/components/groovy/com/jessebrault/site/Head.groovy index 37c1b74..87dfe9a 100644 --- a/components/groovy/com/jessebrault/site/Head.groovy +++ b/components/groovy/com/jessebrault/site/Head.groovy @@ -5,9 +5,11 @@ import groowt.view.component.web.BaseWebViewComponent class Head extends BaseWebViewComponent { final String title + final Object openGraph Head(Map attr) { title = attr.title + openGraph = attr.openGraph?.call() ?: '' } } diff --git a/components/groovy/com/jessebrault/site/StandardPage.groovy b/components/groovy/com/jessebrault/site/StandardPage.groovy index 98153b7..4d44615 100644 --- a/components/groovy/com/jessebrault/site/StandardPage.groovy +++ b/components/groovy/com/jessebrault/site/StandardPage.groovy @@ -4,6 +4,7 @@ import com.jessebrault.ssg.di.Global import groowt.view.component.web.BaseWebViewComponent import groowt.view.component.web.WebViewComponent import jakarta.inject.Inject +import org.jetbrains.annotations.Nullable import java.time.LocalDate import java.time.format.DateTimeFormatter @@ -13,6 +14,7 @@ class StandardPage extends BaseWebViewComponent { final String spotifyUrl final String youtubeUrl final String title + final @Nullable Closure openGraph final Closure banner final List pageScripts @@ -21,6 +23,7 @@ class StandardPage extends BaseWebViewComponent { this.spotifyUrl = spotifyUrl this.youtubeUrl = youtubeUrl this.title = attr.title + this.openGraph = attr.openGraph this.banner = attr.banner ?: { '' } this.pageScripts = attr.pageScripts ?: [] } diff --git a/components/groovy/com/jessebrault/site/util/OpenGraph.groovy b/components/groovy/com/jessebrault/site/util/OpenGraph.groovy new file mode 100644 index 0000000..8cac4d2 --- /dev/null +++ b/components/groovy/com/jessebrault/site/util/OpenGraph.groovy @@ -0,0 +1,32 @@ +package com.jessebrault.site.util + +import groowt.view.component.web.BaseWebViewComponent +import jakarta.inject.Inject +import jakarta.inject.Named +import org.jetbrains.annotations.Nullable + +class OpenGraph extends BaseWebViewComponent { + + final String title + final String type + final String image + final @Nullable String description + + private final String baseUrl + private final String path + + @Inject + OpenGraph(@Named('baseUrl') String baseUrl, Map attr) { + this.baseUrl = baseUrl + title = attr.title + type = attr.type + image = attr.image + description = attr.description + path = attr.path + } + + String getUrl() { + baseUrl + path + } + +} diff --git a/components/resources/com/jessebrault/site/HeadTemplate.wvc b/components/resources/com/jessebrault/site/HeadTemplate.wvc index 6f5344f..00fcc19 100644 --- a/components/resources/com/jessebrault/site/HeadTemplate.wvc +++ b/components/resources/com/jessebrault/site/HeadTemplate.wvc @@ -4,6 +4,7 @@ package com.jessebrault.site + <% children -> children << openGraph %> $title diff --git a/components/resources/com/jessebrault/site/StandardPageTemplate.wvc b/components/resources/com/jessebrault/site/StandardPageTemplate.wvc index 9bc1a36..589763a 100644 --- a/components/resources/com/jessebrault/site/StandardPageTemplate.wvc +++ b/components/resources/com/jessebrault/site/StandardPageTemplate.wvc @@ -5,7 +5,7 @@ import com.jessebrault.site.icon.SpotifyIcon import com.jessebrault.site.icon.YoutubeIcon --- - +
diff --git a/components/resources/com/jessebrault/site/util/OpenGraphTemplate.wvc b/components/resources/com/jessebrault/site/util/OpenGraphTemplate.wvc new file mode 100644 index 0000000..78c58aa --- /dev/null +++ b/components/resources/com/jessebrault/site/util/OpenGraphTemplate.wvc @@ -0,0 +1,8 @@ +--- +package com.jessebrault.site.util +--- + + + +} /> + diff --git a/pages/groovy/com/jessebrault/site/biography/BiographyPage.groovy b/pages/groovy/com/jessebrault/site/biography/BiographyPage.groovy index 3829b4f..1863c54 100644 --- a/pages/groovy/com/jessebrault/site/biography/BiographyPage.groovy +++ b/pages/groovy/com/jessebrault/site/biography/BiographyPage.groovy @@ -10,13 +10,13 @@ import jakarta.inject.Inject @PageSpec(name = 'Biography', path = '/') class BiographyPage extends WvcPageView { + final Text biography private final TitleMaker titleMaker - private final Text biography @Inject BiographyPage(TitleMaker titleMaker, @InjectText('/Biography.md') Text biography) { - this.titleMaker = titleMaker this.biography = biography + this.titleMaker = titleMaker } String renderBiography() { diff --git a/pages/groovy/com/jessebrault/site/composition/CompositionPage.groovy b/pages/groovy/com/jessebrault/site/composition/CompositionPage.groovy index b9e6ec7..129e35a 100644 --- a/pages/groovy/com/jessebrault/site/composition/CompositionPage.groovy +++ b/pages/groovy/com/jessebrault/site/composition/CompositionPage.groovy @@ -1,6 +1,8 @@ package com.jessebrault.site.composition import com.jessebrault.site.util.TitleMaker +import com.jessebrault.ssg.di.SelfPage +import com.jessebrault.ssg.page.Page import com.jessebrault.ssg.view.WvcPageView import groovy.transform.Canonical import jakarta.inject.Inject @@ -16,13 +18,16 @@ class CompositionPage extends WvcPageView { } Composition composition + final Page selfPage + private final TitleMaker titleMaker private final CompositionContainer compositionContainer @Inject - CompositionPage(TitleMaker titleMaker, CompositionContainer compositionContainer) { + CompositionPage(TitleMaker titleMaker, CompositionContainer compositionContainer, @SelfPage Page selfPage) { this.titleMaker = titleMaker this.compositionContainer = compositionContainer + this.selfPage = selfPage } String getTitle() { diff --git a/pages/groovy/com/jessebrault/site/composition/CompositionPageFactory.groovy b/pages/groovy/com/jessebrault/site/composition/CompositionPageFactory.groovy index d7a937a..2ce1a07 100644 --- a/pages/groovy/com/jessebrault/site/composition/CompositionPageFactory.groovy +++ b/pages/groovy/com/jessebrault/site/composition/CompositionPageFactory.groovy @@ -1,6 +1,5 @@ package com.jessebrault.site.composition -import com.jessebrault.site.CompositionsPage import com.jessebrault.ssg.page.Page import com.jessebrault.ssg.page.PageFactory import com.jessebrault.ssg.view.WvcCompiler diff --git a/pages/resources/com/jessebrault/site/CompositionsPageTemplate.wvc b/pages/resources/com/jessebrault/site/CompositionsPageTemplate.wvc index b899f3e..e6ddcc0 100644 --- a/pages/resources/com/jessebrault/site/CompositionsPageTemplate.wvc +++ b/pages/resources/com/jessebrault/site/CompositionsPageTemplate.wvc @@ -2,8 +2,18 @@ package com.jessebrault.site import com.jessebrault.site.composition.CompositionCategory +import com.jessebrault.site.util.OpenGraph --- - +} +>

Compositions

diff --git a/pages/resources/com/jessebrault/site/biography/BiographyPageTemplate.wvc b/pages/resources/com/jessebrault/site/biography/BiographyPageTemplate.wvc index fc22530..34f6f49 100644 --- a/pages/resources/com/jessebrault/site/biography/BiographyPageTemplate.wvc +++ b/pages/resources/com/jessebrault/site/biography/BiographyPageTemplate.wvc @@ -2,8 +2,20 @@ package com.jessebrault.site.biography import com.jessebrault.site.StandardPage +import com.jessebrault.site.util.OpenGraph --- -} pageScripts={['/biography.js']}> +} + banner={} + pageScripts={['/biography.js']} +>
<%= renderBiography() %> diff --git a/pages/resources/com/jessebrault/site/composition/CompositionPageTemplate.wvc b/pages/resources/com/jessebrault/site/composition/CompositionPageTemplate.wvc index 0560616..683b2b5 100644 --- a/pages/resources/com/jessebrault/site/composition/CompositionPageTemplate.wvc +++ b/pages/resources/com/jessebrault/site/composition/CompositionPageTemplate.wvc @@ -3,8 +3,18 @@ package com.jessebrault.site.composition import com.jessebrault.site.StandardPage import com.jessebrault.site.util.MaybeExternalLink +import com.jessebrault.site.util.OpenGraph --- - +} + title={title} +>
Back to compositions
diff --git a/pages/resources/com/jessebrault/site/contact/ContactPageTemplate.wvc b/pages/resources/com/jessebrault/site/contact/ContactPageTemplate.wvc index d8aca90..68cc79c 100644 --- a/pages/resources/com/jessebrault/site/contact/ContactPageTemplate.wvc +++ b/pages/resources/com/jessebrault/site/contact/ContactPageTemplate.wvc @@ -2,8 +2,20 @@ package com.jessebrault.site.contact import com.jessebrault.site.StandardPage +import com.jessebrault.site.util.OpenGraph --- -} pageScripts={['/contact.js']}> +} + banner={} + pageScripts={['/contact.js']} +>

Contact

diff --git a/src/main/groovy/com/jessebrault/site/composition/Composition.groovy b/src/main/groovy/com/jessebrault/site/composition/Composition.groovy index 5d7e33f..0c1f39a 100644 --- a/src/main/groovy/com/jessebrault/site/composition/Composition.groovy +++ b/src/main/groovy/com/jessebrault/site/composition/Composition.groovy @@ -21,6 +21,7 @@ class Composition { Map recordings Map externalLinks @Nullable String shortInfo + @Nullable String description LocalDate date Set categories } diff --git a/src/main/groovy/com/jessebrault/site/composition/CompositionContainer.groovy b/src/main/groovy/com/jessebrault/site/composition/CompositionContainer.groovy index cc42b25..7f5af8a 100644 --- a/src/main/groovy/com/jessebrault/site/composition/CompositionContainer.groovy +++ b/src/main/groovy/com/jessebrault/site/composition/CompositionContainer.groovy @@ -25,6 +25,7 @@ class CompositionContainer { recordings: text.frontMatter.recordings ?: [:], externalLinks: text.frontMatter.externalLinks ?: [:], shortInfo: text.frontMatter.shortInfo, + description: text.frontMatter.description, date: LocalDate.parse(text.frontMatter.date), categories: text.frontMatter.categories as Set ) diff --git a/texts/compositions/Arcadia.md b/texts/compositions/Arcadia.md index e0a3435..cca5151 100644 --- a/texts/compositions/Arcadia.md +++ b/texts/compositions/Arcadia.md @@ -10,13 +10,14 @@ recordings: externalLinks: 'Musaics of the Bay': https://www.musaics.org/stayathomesymposium/20-arcadia Discussion: https://www.youtube.com/watch?v=y52TU2u1BnU +description: Commissioned by Musaics of the Bay, Arcadia was written in response to June Yokell's painting Paradise Lost. shortInfo: 'Commissioned by Musaics of the Bay.' date: 2020-10-01 categories: - Chamber --- _Arcadia_ was commissioned by _Musaics of the Bay_ and written in response to June -Yokell's painting entitled _Paradise Lost_. +Yokell's painting _Paradise Lost_. When I first saw her painting, I knew immediately that I must compose music from it. The colors of the landscape spoke to me directly, reminding me of the geography of diff --git a/texts/compositions/Capriccioso.md b/texts/compositions/Capriccioso.md index 9cc8d88..6ca5a60 100644 --- a/texts/compositions/Capriccioso.md +++ b/texts/compositions/Capriccioso.md @@ -7,12 +7,13 @@ score: https://jessebrault.nyc3.cdn.digitaloceanspaces.com/scores/capriccioso.pd recordings: Premiere: https://www.youtube.com/watch?v=TDfhT8TU4Ik Audio: https://jessebrault.nyc3.cdn.digitaloceanspaces.com/recordings/capriccioso.mp3 +description: Commissioned by Musaics of the Bay, Capriccioso is a musical response to Carel Fabritius' 1654 painting The Goldfinch. shortInfo: 'Commissioned by Musaics of the Bay and Miniatures: Mauritshuis.' date: 2021-11-01 categories: - Chamber --- -Capriccioso is a musical response to Carel Fabritius’ 1654 painting _The Goldfinch_, +Capriccioso is a musical response to Carel Fabritius' 1654 painting _The Goldfinch_, as well as the history surrounding the painting itself. Generally, the music is meant to evoke the playfulness of the small bird in the painting. diff --git a/texts/compositions/Conversations.md b/texts/compositions/Conversations.md index ea81877..803c970 100644 --- a/texts/compositions/Conversations.md +++ b/texts/compositions/Conversations.md @@ -5,6 +5,8 @@ instrumentation: For two violins. premiere: April 3, 2019, at Church of St. Paul the Apostle, New York, New York. score: https://jessebrault.nyc3.cdn.digitaloceanspaces.com/scores/conversations.pdf date: 2017-06-01 +description: For Jocelyn Zhu and Mariella Haubs in commemoration of their 2017 Concerts for Compassion Tour, Conversations depicts a conversation between two people. +shortInfo: For Jocelyn Zhu and Mariella Haubs in commemoration of their 2017 Concerts for Compassion Tour. categories: - Chamber --- diff --git a/texts/compositions/FourPiecesForPiano.md b/texts/compositions/FourPiecesForPiano.md index 4b9371a..35e25a9 100644 --- a/texts/compositions/FourPiecesForPiano.md +++ b/texts/compositions/FourPiecesForPiano.md @@ -3,6 +3,8 @@ title: Four Pieces for Piano slug: four-pieces-for-piano instrumentation: For solo piano. score: https://jessebrault.nyc3.cdn.digitaloceanspaces.com/scores/four-pieces-for-piano.pdf +description: Written for Julia Hamos, each of the Four Pieces varies wildly in character. +shortInfo: Written for Julia Hamos. date: 2019-05-01 categories: - Solo diff --git a/texts/compositions/Illuminatio.md b/texts/compositions/Illuminatio.md index 2d226af..1ed4ba4 100644 --- a/texts/compositions/Illuminatio.md +++ b/texts/compositions/Illuminatio.md @@ -4,6 +4,8 @@ slug: illuminatio instrumentation: For solo piano and wind ensemble. premiere: March 17, 2013, Cannon Falls, Minnesota. date: 2013-02-01 +description: Written in response to 'Innovation in the Liberal Arts', St. Olaf College's 2012-13 campus theme, Illuminatio musically captures a heightening of awareness. +shortInfo: Sponsored by St. Olaf College's Collaborative Undergraduate Research and Inquiry program, 2012. categories: - Wind Ensemble --- @@ -15,7 +17,7 @@ enlightening, that of becoming aware. The study of diverse lines of thought not different pieces of knowledge, but it heightens one’s perception of the world through experiencing many different perspectives of other human beings. The innovation is thus a change of the way one thinks about the process of learning in the liberal arts. _Illuminatio_ seeks to capture musically -this process of becoming aware. +this process of expanding one's awareness. The St. Olaf College Collaborative Undergraduate Research and Inquiry program sponsored my work on _Illuminatio_. diff --git a/texts/compositions/NearUnderFar.md b/texts/compositions/NearUnderFar.md index 427036c..2914c8f 100644 --- a/texts/compositions/NearUnderFar.md +++ b/texts/compositions/NearUnderFar.md @@ -8,6 +8,7 @@ recordings: Audio: https://jessebrault.nyc3.cdn.digitaloceanspaces.com/recordings/near-under-far.mp3 externalLinks: 'Musaics of the Bay': https://www.musaics.org/stayathomesymposium/51-near-under-far +description: Based on Die blaue Eiche by Luc Tuymans, Near, Under, Far musically expresses the painting's loneliness and angularity. shortInfo: Based on Die blaue Eiche by Luc Tuymans. date: 2021-03-01 categories: diff --git a/texts/compositions/SonataShambhala.md b/texts/compositions/SonataShambhala.md index 7317013..b44368a 100644 --- a/texts/compositions/SonataShambhala.md +++ b/texts/compositions/SonataShambhala.md @@ -6,6 +6,8 @@ premiere: November 11, 2018, at Marlboro College, Brattleboro, Vermont. score: https://jessebrault.nyc3.cdn.digitaloceanspaces.com/scores/sonata-shambhala.pdf externalLinks: 'Benjamin Hochman Discusses Sonata Shambhala': https://www.youtube.com/watch?v=leyqMdGyr8Q +description: Written for Benjamin Hochman and based upon The Sacred Path of the Warrior by Chögyam Trungpa, Sonata Shambhala meditates upon the books themes of personal spiritual development. +shortInfo: Based upon The Sacred Path of the Warrior by Chögyam Trungpa. date: 2018-09-01 categories: - Solo diff --git a/texts/compositions/SpiritTravels.md b/texts/compositions/SpiritTravels.md index c7e8fad..880973c 100644 --- a/texts/compositions/SpiritTravels.md +++ b/texts/compositions/SpiritTravels.md @@ -8,11 +8,12 @@ score: https://jessebrault.nyc3.cdn.digitaloceanspaces.com/scores/spirit-travels recordings: Audio: https://jessebrault.nyc3.cdn.digitaloceanspaces.com/recordings/spirit-travels.mp3 shortInfo: In memoriam Jane H. Kim. +description: Written in memoriam Jane H. Kim, Spirit Travels evokes the journeys of one's spirit through this world and the beyond. date: 2023-12-01 categories: - Chamber --- -_Spirit Travels_ evokes the journeys of one’s spirit through this world and the beyond. +_Spirit Travels_ evokes the journeys of one's spirit through this world and the beyond. It is a tone poem in two consecutive parts: the first is bright, colorful, and energetic, while the second is introspective and lyrical (and prominently features the piano). Beside many common musical motives, a noble horn melody links both parts, suggesting both diff --git a/texts/compositions/SpiritTravelsOrchestra.md b/texts/compositions/SpiritTravelsOrchestra.md index 12bdc6c..718ad03 100644 --- a/texts/compositions/SpiritTravelsOrchestra.md +++ b/texts/compositions/SpiritTravelsOrchestra.md @@ -7,6 +7,7 @@ score: https://jessebrault.nyc3.cdn.digitaloceanspaces.com/scores/spirit-travels recordings: 'Midi Mockup': https://jessebrault.nyc3.cdn.digitaloceanspaces.com/recordings/spirit-travels-orchestra-midi.mp3 shortInfo: In memoriam Jane H. Kim. +description: Written in memoriam Jane H. Kim, Spirit Travels evokes the journeys of one's spirit through this world and the beyond. date: 2024-02-20 categories: - Orchestra