consolidate tags, hide date

This commit is contained in:
Christoph Hagen
2025-01-05 12:19:32 +01:00
parent 93e642c3c9
commit 5ac5a7b000
26 changed files with 284 additions and 129 deletions

View File

@ -58,7 +58,7 @@ final class FeedPageGenerator {
header: pageHeader,
additionalFooter: footer) { content in
if showTitle {
content += "<h1>\(title)</h1>"
content += "<h1 class='separated-headline'>\(title)</h1>"
}
for post in posts {
content += FeedEntry(data: post).content

View File

@ -80,7 +80,9 @@ final class PageGenerator {
additionalFooter: results.requiredFooters.sorted().joined()) { content in
content += "<article>"
if !localized.hideTitle {
content += "<h3>\(page.dateText(in: language))</h3>"
if !page.hideDate {
content += "<h3>\(page.dateText(in: language))</h3>"
}
content += "<h1>\(localized.title)</h1>"
content += TagList(tags: tags).content
}

View File

@ -121,7 +121,7 @@ final class TagOverviewGenerator {
let page = GenericPage(
header: pageHeader,
additionalFooter: "") { content in
content += "<h1>\(header.title)</h1>"
content += "<h1 class='separated-headline'>\(header.title)</h1>"
for tag in tags {
let description = tag.localized.description ?? ""
let image = self.makePageImage(item: tag.localized)

View File

@ -99,6 +99,28 @@ final class PageGenerationResults: ObservableObject {
pageIsEmpty = false
}
func reset() {
inaccessibleFiles = []
unparsableFiles = [:]
missingFiles = [:]
missingLinkedFiles = [:]
missingLinkedTags = [:]
missingLinkedPages = [:]
requiredHeaders = []
requiredFooters = []
requiredIcons = []
linkedPages = []
linkedTags = []
externalLinks = []
usedFiles = []
requiredFiles = []
imagesToGenerate = []
invalidCommands = []
warnings = []
unsavedOutputFiles = [:]
pageIsEmpty = false
}
// MARK: Adding entries
func inaccessibleContent(file: FileResource) {

View File

@ -38,37 +38,40 @@ final class PostListPageGenerator {
}
}
private func createPostFeedPage(_ pageIndex: Int, pageCount: Int, posts: ArraySlice<Post>) {
let posts: [FeedEntryData] = posts.map { post in
let localized: LocalizedPost = post.localized(in: language)
private func makePostData(post: Post) -> FeedEntryData {
let localized: LocalizedPost = post.localized(in: language)
#warning("Add post link text to settings or to each post")
let linkUrl = post.linkedPage.map {
FeedEntryData.Link(
url: $0.absoluteUrl(in: language),
text: language == .english ? "View" : "Anzeigen")
}
let tags: [FeedEntryData.Tag] = post.tags.filter { $0.isVisible }.map { tag in
.init(name: tag.localized(in: language).name,
url: tag.absoluteUrl(in: language))
}
let images = localized.images.map { image in
image.imageSet(width: mainContentMaximumWidth, height: mainContentMaximumWidth, language: language)
}
images.forEach(source.results.require)
return FeedEntryData(
entryId: post.id,
title: localized.title,
textAboveTitle: post.dateText(in: language),
link: linkUrl,
tags: tags,
text: localized.text.components(separatedBy: "\n"),
images: images)
#warning("Add post link text to settings or to each post")
let linkUrl = post.linkedPage.map {
FeedEntryData.Link(
url: $0.absoluteUrl(in: language),
text: language == .english ? "View" : "Anzeigen")
}
// Use the tags of the page if one is linked
let tags: [FeedEntryData.Tag] = post.usedTags().filter { $0.isVisible }.map { tag in
.init(name: tag.localized(in: language).name,
url: tag.absoluteUrl(in: language))
}
let images = localized.images.map { image in
image.imageSet(width: mainContentMaximumWidth, height: mainContentMaximumWidth, language: language)
}
images.forEach(source.results.require)
return FeedEntryData(
entryId: post.id,
title: localized.title,
textAboveTitle: post.dateText(in: language),
link: linkUrl,
tags: tags,
text: localized.text.components(separatedBy: "\n\n"),
images: images)
}
private func createPostFeedPage(_ pageIndex: Int, pageCount: Int, posts: ArraySlice<Post>) {
let posts: [FeedEntryData] = posts.map(makePostData)
let feedPageGenerator = FeedPageGenerator(content: source.content, results: source.results)
let languageButtonUrl = "/" + pageUrl(in: language.next, pageNumber: pageIndex)