diff --git a/components/groovy/com/jessebrault/site/lessons/LessonsBanner.groovy b/components/groovy/com/jessebrault/site/lessons/LessonsBanner.groovy new file mode 100644 index 0000000..58ae9cc --- /dev/null +++ b/components/groovy/com/jessebrault/site/lessons/LessonsBanner.groovy @@ -0,0 +1,17 @@ +package com.jessebrault.site.lessons + +import com.jessebrault.ssg.view.SkipTemplate +import groowt.view.View +import groowt.view.component.web.lib.DelegatingWebViewComponent + +@SkipTemplate +class LessonsBanner extends DelegatingWebViewComponent { + + private static final String lessonsBannerText = LessonsBanner.getResource('LessonsBanner.txt').text + + @Override + protected View getDelegate() { + return { Writer w -> w << lessonsBannerText } + } + +} diff --git a/components/groovy/com/jessebrault/site/util/OpenGraph.groovy b/components/groovy/com/jessebrault/site/util/OpenGraph.groovy index 349a050..6fe3981 100644 --- a/components/groovy/com/jessebrault/site/util/OpenGraph.groovy +++ b/components/groovy/com/jessebrault/site/util/OpenGraph.groovy @@ -20,7 +20,7 @@ class OpenGraph extends BaseWebViewComponent { OpenGraph(@Named('baseUrl') String baseUrl, @Global('openGraphFallbackImage') String fallbackImage, Map attr) { this.baseUrl = baseUrl title = attr.title - type = attr.type + type = attr.type ?: 'website' image = attr.image ?: fallbackImage description = attr.description path = attr.path diff --git a/components/groovy/com/jessebrault/site/videos/VideosBanner.groovy b/components/groovy/com/jessebrault/site/videos/VideosBanner.groovy new file mode 100644 index 0000000..11be608 --- /dev/null +++ b/components/groovy/com/jessebrault/site/videos/VideosBanner.groovy @@ -0,0 +1,17 @@ +package com.jessebrault.site.videos + +import com.jessebrault.ssg.view.SkipTemplate +import groowt.view.View +import groowt.view.component.web.lib.DelegatingWebViewComponent + +@SkipTemplate +class VideosBanner extends DelegatingWebViewComponent { + + private static final String videosBannerText = VideosBanner.getResource('VideosBanner.txt').text + + @Override + protected View getDelegate() { + return { Writer w -> w << videosBannerText } + } + +} diff --git a/components/resources/com/jessebrault/site/lessons/LessonsBanner.txt b/components/resources/com/jessebrault/site/lessons/LessonsBanner.txt new file mode 100644 index 0000000..1526616 --- /dev/null +++ b/components/resources/com/jessebrault/site/lessons/LessonsBanner.txt @@ -0,0 +1,11 @@ +
diff --git a/components/resources/com/jessebrault/site/videos/VideosBanner.txt b/components/resources/com/jessebrault/site/videos/VideosBanner.txt new file mode 100644 index 0000000..9fea3ba --- /dev/null +++ b/components/resources/com/jessebrault/site/videos/VideosBanner.txt @@ -0,0 +1,14 @@ + diff --git a/pages/groovy/com/jessebrault/site/lessons/LessonsPage.groovy b/pages/groovy/com/jessebrault/site/lessons/LessonsPage.groovy new file mode 100644 index 0000000..444428f --- /dev/null +++ b/pages/groovy/com/jessebrault/site/lessons/LessonsPage.groovy @@ -0,0 +1,37 @@ +package com.jessebrault.site.lessons + +import com.jessebrault.site.util.TitleMaker +import com.jessebrault.ssg.di.InjectText +import com.jessebrault.ssg.di.InjectTexts +import com.jessebrault.ssg.di.SelfPage +import com.jessebrault.ssg.page.Page +import com.jessebrault.ssg.page.PageSpec +import com.jessebrault.ssg.text.Text +import com.jessebrault.ssg.view.WvcPageView +import jakarta.inject.Inject + +@PageSpec(name = 'Lessons', path = '/lessons') +class LessonsPage extends WvcPageView { + + static final String description = 'Information about lessons offered by Jesse Brault.' + + final Page selfPage + private final TitleMaker titleMaker + private final Text lessonsText + + @Inject + LessonsPage(@SelfPage Page selfPage, TitleMaker titleMaker, @InjectText('/Lessons.md') Text lessonsText) { + this.selfPage = selfPage + this.titleMaker = titleMaker + this.lessonsText = lessonsText + } + + String getPageTitle() { + titleMaker.makeTitle(selfPage.name) + } + + String renderLessons() { + this.lessonsText.render() + } + +} diff --git a/pages/groovy/com/jessebrault/site/videos/VideosPage.groovy b/pages/groovy/com/jessebrault/site/videos/VideosPage.groovy new file mode 100644 index 0000000..6abdc4d --- /dev/null +++ b/pages/groovy/com/jessebrault/site/videos/VideosPage.groovy @@ -0,0 +1,37 @@ +package com.jessebrault.site.videos + +import com.jessebrault.site.util.TitleMaker +import com.jessebrault.ssg.di.InjectText +import com.jessebrault.ssg.di.InjectTexts +import com.jessebrault.ssg.di.SelfPage +import com.jessebrault.ssg.page.Page +import com.jessebrault.ssg.page.PageSpec +import com.jessebrault.ssg.text.Text +import com.jessebrault.ssg.view.WvcPageView +import jakarta.inject.Inject + +@PageSpec(name = 'Videos', path = '/videos') +class VideosPage extends WvcPageView { + + static final String description = 'Conducting videos of Jesse Brault.' + + final Page selfPage + private final TitleMaker titleMaker + private final Text videosText + + @Inject + VideosPage(@SelfPage Page selfPage, TitleMaker titleMaker, @InjectText('/Videos.md') Text videosText) { + this.selfPage = selfPage + this.titleMaker = titleMaker + this.videosText = videosText + } + + String getPageTitle() { + titleMaker.makeTitle(selfPage.name) + } + + String renderVideos() { + videosText.render() + } + +} diff --git a/pages/resources/com/jessebrault/site/lessons/LessonsPageTemplate.wvc b/pages/resources/com/jessebrault/site/lessons/LessonsPageTemplate.wvc new file mode 100644 index 0000000..844e949 --- /dev/null +++ b/pages/resources/com/jessebrault/site/lessons/LessonsPageTemplate.wvc @@ -0,0 +1,22 @@ +--- +package com.jessebrault.site.lessons + +import com.jessebrault.site.StandardPage +import com.jessebrault.site.util.OpenGraph +--- +