Rework content commands, add audio player
This commit is contained in:
@ -1,8 +1,6 @@
|
||||
import Foundation
|
||||
|
||||
final class Page: ObservableObject {
|
||||
|
||||
unowned let content: Content
|
||||
final class Page: Item {
|
||||
|
||||
/**
|
||||
The unique id of the entry
|
||||
@ -10,6 +8,15 @@ final class Page: ObservableObject {
|
||||
@Published
|
||||
var id: String
|
||||
|
||||
/**
|
||||
The external link this page points to.
|
||||
|
||||
If this value is not `nil`, then the page has no content
|
||||
and many other features are disabled.
|
||||
*/
|
||||
@Published
|
||||
var externalLink: String?
|
||||
|
||||
@Published
|
||||
var isDraft: Bool
|
||||
|
||||
@ -44,6 +51,7 @@ final class Page: ObservableObject {
|
||||
|
||||
init(content: Content,
|
||||
id: String,
|
||||
externalLink: String?,
|
||||
isDraft: Bool,
|
||||
createdDate: Date,
|
||||
startDate: Date,
|
||||
@ -51,8 +59,8 @@ final class Page: ObservableObject {
|
||||
german: LocalizedPage,
|
||||
english: LocalizedPage,
|
||||
tags: [Tag]) {
|
||||
self.content = content
|
||||
self.id = id
|
||||
self.externalLink = externalLink
|
||||
self.isDraft = isDraft
|
||||
self.createdDate = createdDate
|
||||
self.startDate = startDate
|
||||
@ -61,6 +69,8 @@ final class Page: ObservableObject {
|
||||
self.german = german
|
||||
self.english = english
|
||||
self.tags = tags
|
||||
|
||||
super.init(content: content)
|
||||
}
|
||||
|
||||
func localized(in language: ContentLanguage) -> LocalizedPage {
|
||||
@ -78,6 +88,28 @@ final class Page: ObservableObject {
|
||||
id = newId
|
||||
return true
|
||||
}
|
||||
|
||||
var isExternalUrl: Bool {
|
||||
externalLink != nil
|
||||
}
|
||||
|
||||
// MARK: Paths
|
||||
|
||||
func absoluteUrl(for language: ContentLanguage) -> String {
|
||||
if let url = externalLink {
|
||||
return url
|
||||
}
|
||||
// TODO: Record link to trace connections between pages
|
||||
return 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).urlString
|
||||
}
|
||||
}
|
||||
|
||||
extension Page: Identifiable {
|
||||
|
Reference in New Issue
Block a user