Add tag overview, improve assets

This commit is contained in:
Christoph Hagen
2024-12-15 21:20:12 +01:00
parent 8a3a0f1797
commit 1e67a99866
59 changed files with 1301 additions and 480 deletions

View File

@ -2,10 +2,6 @@ import Foundation
final class Tag: Item {
var id: String {
english.urlComponent
}
@Published
var isVisible: Bool
@ -15,19 +11,19 @@ final class Tag: Item {
@Published
var english: LocalizedTag
init(content: Content, id: String) {
override init(content: Content, id: String) {
self.isVisible = true
self.english = .init(urlComponent: id, name: id)
let deId = id + "-" + ContentLanguage.german.rawValue
self.german = .init(urlComponent: deId, name: deId)
super.init(content: content)
super.init(content: content, id: id)
}
init(content: Content, isVisible: Bool = true, german: LocalizedTag, english: LocalizedTag) {
init(content: Content, id: String, isVisible: Bool = true, german: LocalizedTag, english: LocalizedTag) {
self.isVisible = isVisible
self.german = german
self.english = english
super.init(content: content)
super.init(content: content, id: id)
}
var linkName: String {
@ -38,49 +34,33 @@ final class Tag: Item {
"/tags/\(linkName).html"
}
func localized(in language: ContentLanguage) -> LocalizedTag {
switch language {
case .english: return english
case .german: return german
}
}
// MARK: Paths
func absoluteUrl(for language: ContentLanguage) -> String {
makeCleanAbsolutePath(internalPath(for: language))
}
func filePathRelativeToOutputFolder(for language: ContentLanguage) -> String {
makeCleanRelativePath(internalPath(for: language))
}
private func internalPath(for language: ContentLanguage) -> String {
content.settings.pages.pageUrlPrefix + "/" + localized(in: language).urlComponent
content.settings.paths.tagsOutputFolderPath + "/" + localized(in: language).urlComponent
}
override func absoluteUrl(in language: ContentLanguage) -> String {
makeCleanAbsolutePath(internalPath(for: language))
}
override func title(in language: ContentLanguage) -> String {
localized(in: language).name
}
override var itemType: ItemType {
.tag
}
func contains(urlComponent: String) -> Bool {
german.urlComponent == urlComponent || english.urlComponent == urlComponent
}
}
extension Tag: Identifiable {
}
extension Tag: Equatable {
static func == (_ lhs: Tag, _ rhs: Tag) -> Bool {
lhs.id == rhs.id
}
}
extension Tag: Hashable {
func hash(into hasher: inout Hasher) {
hasher.combine(id)
}
}
extension Tag: Comparable {
static func < (lhs: Tag, rhs: Tag) -> Bool {
lhs.id < rhs.id
}
extension Tag: LocalizedItem {
}