Very basic nav and composition listings.
This commit is contained in:
parent
5fe7fc923e
commit
4d5b84bdbe
@ -0,0 +1,14 @@
|
||||
package com.jessebrault.site
|
||||
|
||||
import com.jessebrault.site.composition.Composition
|
||||
import groowt.view.component.web.BaseWebViewComponent
|
||||
|
||||
class CompositionListing extends BaseWebViewComponent {
|
||||
|
||||
final Composition composition
|
||||
|
||||
CompositionListing(Composition composition) {
|
||||
this.composition = composition
|
||||
}
|
||||
|
||||
}
|
30
components/groovy/com/jessebrault/site/Header.groovy
Normal file
30
components/groovy/com/jessebrault/site/Header.groovy
Normal file
@ -0,0 +1,30 @@
|
||||
package com.jessebrault.site
|
||||
|
||||
import com.jessebrault.ssg.di.Global
|
||||
import com.jessebrault.ssg.di.InjectPages
|
||||
import com.jessebrault.ssg.page.Page
|
||||
import groowt.view.component.web.BaseWebViewComponent
|
||||
import jakarta.inject.Inject
|
||||
import jakarta.inject.Named
|
||||
|
||||
class Header extends BaseWebViewComponent {
|
||||
|
||||
final String siteName
|
||||
final String siteTagLine
|
||||
final List<Page> menuItems
|
||||
|
||||
@Inject
|
||||
Header(
|
||||
@Named('siteName') String siteName,
|
||||
@Global('siteTagLine') String siteTagLine,
|
||||
@Global('menuItems') List<String> menuItems,
|
||||
@InjectPages('/*') Set<Page> allPages
|
||||
) {
|
||||
this.siteName = siteName
|
||||
this.siteTagLine = siteTagLine
|
||||
this.menuItems = menuItems.collect { menuItem ->
|
||||
allPages.find { it.name == menuItem }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
---
|
||||
package com.jessebrault.site
|
||||
---
|
||||
<p>$composition.title</p>
|
@ -0,0 +1,9 @@
|
||||
<header>
|
||||
<h1>$siteName</h1>
|
||||
<h2>$siteTagLine</h2>
|
||||
<nav>
|
||||
<ul>
|
||||
<Each items={menuItems} transform={<li><a href={it.path}>$it.name</a></li>} />
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
@ -4,6 +4,7 @@ package com.jessebrault.site
|
||||
<html lang="en">
|
||||
<Head title={title} />
|
||||
<body>
|
||||
<Header />
|
||||
<% bodyChildren -> pageChildren.each { bodyChildren << it } %>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,7 +1,10 @@
|
||||
package com.jessebrault.site
|
||||
|
||||
import com.jessebrault.site.composition.Composition
|
||||
import com.jessebrault.site.util.TitleMaker
|
||||
import com.jessebrault.ssg.di.InjectTexts
|
||||
import com.jessebrault.ssg.page.PageSpec
|
||||
import com.jessebrault.ssg.text.Text
|
||||
import com.jessebrault.ssg.view.WvcPageView
|
||||
import jakarta.inject.Inject
|
||||
|
||||
@ -9,10 +12,14 @@ import jakarta.inject.Inject
|
||||
class CompositionsPage extends WvcPageView {
|
||||
|
||||
private final TitleMaker titleMaker
|
||||
final Set<Composition> compositions
|
||||
|
||||
@Inject
|
||||
CompositionsPage(TitleMaker titleMaker) {
|
||||
CompositionsPage(TitleMaker titleMaker, @InjectTexts('/compositions/*.md') Set<Text> compositions) {
|
||||
this.titleMaker = titleMaker
|
||||
this.compositions = compositions.collect {
|
||||
new Composition(it, it.frontMatter.title)
|
||||
}
|
||||
}
|
||||
|
||||
String getTitle() {
|
||||
|
@ -2,5 +2,8 @@
|
||||
package com.jessebrault.site
|
||||
---
|
||||
<StandardPage title={title}>
|
||||
<h1>Compositions</h1>
|
||||
<article>
|
||||
<h1>Compositions</h1>
|
||||
<Each items={compositions} transform={<CompositionListing (it) />} />
|
||||
</article>
|
||||
</StandardPage>
|
||||
|
@ -0,0 +1,16 @@
|
||||
package com.jessebrault.site.composition
|
||||
|
||||
import com.jessebrault.ssg.text.Text
|
||||
import groovy.transform.EqualsAndHashCode
|
||||
import groovy.transform.NullCheck
|
||||
import groovy.transform.ToString
|
||||
import groovy.transform.TupleConstructor
|
||||
|
||||
@TupleConstructor(defaults = false)
|
||||
@NullCheck(includeGenerated = true)
|
||||
@EqualsAndHashCode
|
||||
@ToString
|
||||
class Composition {
|
||||
final Text text
|
||||
final String title
|
||||
}
|
@ -10,6 +10,11 @@ BuildScriptBase base
|
||||
build {
|
||||
siteName 'Jesse R. Brault'
|
||||
baseUrl 'https://jessebrault.com'
|
||||
basePackage 'com.jessebrault.site'
|
||||
globals {
|
||||
siteTagLine = 'Conductor and Composer'
|
||||
menuItems = ['Biography', 'Compositions']
|
||||
}
|
||||
objectFactoryBuilder.configure {
|
||||
configureRegistry {
|
||||
bind(TitleMaker, toSelf())
|
||||
|
4
texts/compositions/SpiritTravels.md
Normal file
4
texts/compositions/SpiritTravels.md
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
title: Spirit Travels
|
||||
---
|
||||
Information about _Spirit Travels_.
|
Loading…
Reference in New Issue
Block a user