Generate first feed pages, images

This commit is contained in:
Christoph Hagen
2024-12-04 08:10:45 +01:00
parent dc7b7a0e90
commit b3cc4a57db
25 changed files with 928 additions and 272 deletions

View File

@ -12,14 +12,17 @@ struct GenericPage {
let additionalHeaders: String
let additionalFooter: String
let insertedContent: (inout String) -> Void
init(language: ContentLanguage, title: String, description: String, data: NavigationBarData, additionalHeaders: String, insertedContent: @escaping (inout String) -> Void) {
init(language: ContentLanguage, title: String, description: String, data: NavigationBarData, additionalHeaders: String, additionalFooter: String, insertedContent: @escaping (inout String) -> Void) {
self.language = language
self.title = title
self.description = description
self.data = data
self.additionalHeaders = additionalHeaders
self.additionalFooter = additionalFooter
self.insertedContent = insertedContent
}
var content: String {
@ -30,7 +33,9 @@ struct GenericPage {
result += NavigationBar(data: data).content
result += "<div class=\"content\"><div style=\"height: 70px;\"></div>"
insertedContent(&result)
result += "</div></body></html>" // Close content
result += "</div>"
result += additionalFooter
result += "</body></html>" // Close content
return result
}
}

View File

@ -33,20 +33,25 @@ struct PageInFeed {
}
var content: String {
GenericPage(language: language, title: title, description: description, data: navigationBarData, additionalHeaders: headers) { content in
let footer = swiperIsNeeded ? swiperInits : ""
return GenericPage(
language: language,
title: title,
description: description,
data: navigationBarData,
additionalHeaders: headers,
additionalFooter: footer) { content in
for post in posts {
FeedEntry(data: post)
.addContent(to: &content)
content += FeedEntry(data: post).content
}
content += PostFeedPageNavigation(currentPage: pageNumber, numberOfPages: totalPages, language: language).content
if swiperIsNeeded {
addSwiperInits(to: &content)
}
}.content
}
private func addSwiperInits(to result: inout String) {
result += "<script src='\(swiperJsPath)'></script><script>"
private var swiperInits: String {
var result = "<script src='\(swiperJsPath)'></script><script>"
for post in posts {
guard post.images.count > 1 else {
continue
@ -54,5 +59,6 @@ struct PageInFeed {
result += ImageGallery.swiperInit(id: post.entryId)
}
result += "</script>"
return result
}
}