Create page from post

This commit is contained in:
Christoph Hagen
2025-01-18 12:02:06 +01:00
parent 1d4b3c266c
commit 51eff690d2
7 changed files with 88 additions and 24 deletions

View File

@ -17,7 +17,7 @@ final class Post: Item, DateItem, LocalizedItem {
var hasEndDate: Bool
@Published
var endDate: Date
var potentialEndDate: Date
/**
The tags associated with the post
@ -52,7 +52,7 @@ final class Post: Item, DateItem, LocalizedItem {
self.createdDate = createdDate
self.startDate = startDate
self.hasEndDate = endDate != nil
self.endDate = endDate ?? startDate
self.potentialEndDate = endDate ?? startDate
self.tags = tags
self.german = german
self.english = english
@ -143,6 +143,34 @@ final class Post: Item, DateItem, LocalizedItem {
english.remove(file)
german.remove(file)
}
func makePage() -> Page {
var id = self.id
var number = 2
while !content.isNewIdForPage(id) {
id += "\(self.id)-\(number)"
number += 1
}
// Move tags to page
let tags = self.tags
self.tags = []
let german = english.makePage(urlString: id + "-de")
let english = english.makePage(urlString: id + "-en")
return Page(
content: content,
id: id,
externalLink: nil,
isDraft: true,
createdDate: .now,
hideDate: false,
startDate: startDate,
endDate: endDate,
german: german,
english: english,
tags: tags,
requiredFiles: [])
}
}
extension Post {
@ -177,7 +205,7 @@ extension Post {
isDraft: isDraft,
createdDate: createdDate,
startDate: startDate,
endDate: hasEndDate ? endDate : nil,
endDate: endDate,
tags: tags.map { $0.id },
german: german.data,
english: english.data,