Add tag overview, improve assets
This commit is contained in:
@ -18,13 +18,13 @@ struct ContentPage: HtmlProducer {
|
||||
|
||||
private let pageContent: String
|
||||
|
||||
private let headers: String
|
||||
private let headers: [HeaderElement]
|
||||
|
||||
private let footers: String
|
||||
|
||||
private let icons: Set<PageIcon>
|
||||
|
||||
init(language: ContentLanguage, dateString: String, title: String, tags: [FeedEntryData.Tag], linkTitle: String, description: String, navigationBarLinks: [NavigationBar.Link], pageContent: String, headers: String, footers: [String], icons: Set<PageIcon>) {
|
||||
init(language: ContentLanguage, dateString: String, title: String, tags: [FeedEntryData.Tag], linkTitle: String, description: String, navigationBarLinks: [NavigationBar.Link], pageContent: String, headers: [HeaderElement], footers: [String], icons: Set<PageIcon>) {
|
||||
self.language = language
|
||||
self.dateString = dateString
|
||||
self.title = title
|
||||
@ -41,7 +41,7 @@ struct ContentPage: HtmlProducer {
|
||||
func populate(_ result: inout String) {
|
||||
// TODO: Add headers and footers from page content
|
||||
result += "<!DOCTYPE html><html lang=\"\(language.rawValue)\">"
|
||||
result += PageHead(title: title, description: description, additionalHeaders: headers).content
|
||||
result += PageHead(items: [.charset, .viewport] + headers).content
|
||||
result += "<body>"
|
||||
result += NavigationBar(links: navigationBarLinks).content
|
||||
|
||||
|
@ -10,25 +10,25 @@ struct GenericPage {
|
||||
|
||||
let links: [NavigationBar.Link]
|
||||
|
||||
let additionalHeaders: String
|
||||
let headers: [HeaderElement]
|
||||
|
||||
let additionalFooter: String
|
||||
|
||||
let insertedContent: (inout String) -> Void
|
||||
|
||||
init(language: ContentLanguage, title: String, description: String, links: [NavigationBar.Link], additionalHeaders: String, additionalFooter: String, insertedContent: @escaping (inout String) -> Void) {
|
||||
init(language: ContentLanguage, title: String, description: String, links: [NavigationBar.Link], headers: [HeaderElement], additionalFooter: String, insertedContent: @escaping (inout String) -> Void) {
|
||||
self.language = language
|
||||
self.title = title
|
||||
self.description = description
|
||||
self.links = links
|
||||
self.additionalHeaders = additionalHeaders
|
||||
self.headers = headers
|
||||
self.additionalFooter = additionalFooter
|
||||
self.insertedContent = insertedContent
|
||||
}
|
||||
var content: String {
|
||||
var result = ""
|
||||
result += "<!DOCTYPE html><html lang=\"\(language.rawValue)\">"
|
||||
result += PageHead(title: title, description: description, additionalHeaders: additionalHeaders).content
|
||||
result += PageHead(items: [.charset, .viewport] + headers).content
|
||||
result += "<body>"
|
||||
result += NavigationBar(links: links).content
|
||||
result += "<div class=\"content\"><div style=\"height: 70px;\"></div>"
|
||||
|
@ -1,71 +0,0 @@
|
||||
import Foundation
|
||||
|
||||
struct PageInFeed {
|
||||
|
||||
private let swiperStyleSheetPath = "/assets/swiper/swiper-bundle.min.css"
|
||||
|
||||
private let swiperJsPath = "/assets/swiper/swiper-bundle.min.js"
|
||||
|
||||
let language: ContentLanguage
|
||||
|
||||
let title: String
|
||||
|
||||
let showTitle: Bool
|
||||
|
||||
let description: String
|
||||
|
||||
let navigationBarLinks: [NavigationBar.Link]
|
||||
|
||||
let pageNumber: Int
|
||||
|
||||
let totalPages: Int
|
||||
|
||||
let posts: [FeedEntryData]
|
||||
|
||||
private var swiperHeader: String {
|
||||
"<link rel='stylesheet' href='\(swiperStyleSheetPath)' />"
|
||||
}
|
||||
|
||||
private var swiperIsNeeded: Bool {
|
||||
posts.contains(where: { $0.images.count > 1 })
|
||||
}
|
||||
|
||||
private var headers: String {
|
||||
swiperIsNeeded ? swiperHeader : ""
|
||||
}
|
||||
|
||||
var content: String {
|
||||
let footer = swiperIsNeeded ? swiperInits : ""
|
||||
|
||||
return GenericPage(
|
||||
language: language,
|
||||
title: title,
|
||||
description: description,
|
||||
links: navigationBarLinks,
|
||||
additionalHeaders: headers,
|
||||
additionalFooter: footer) { content in
|
||||
if showTitle {
|
||||
content += "<h1>\(title)</h1>"
|
||||
}
|
||||
for post in posts {
|
||||
content += FeedEntry(data: post).content
|
||||
}
|
||||
if totalPages > 1 {
|
||||
content += PostFeedPageNavigation(currentPage: pageNumber, numberOfPages: totalPages, language: language).content
|
||||
}
|
||||
|
||||
}.content
|
||||
}
|
||||
|
||||
private var swiperInits: String {
|
||||
var result = "<script src='\(swiperJsPath)'></script><script>"
|
||||
for post in posts {
|
||||
guard post.images.count > 1 else {
|
||||
continue
|
||||
}
|
||||
result += ImageGallery.swiperInit(id: post.entryId)
|
||||
}
|
||||
result += "</script>"
|
||||
return result
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user