Add empty page text, playlist text to settings
This commit is contained in:
@ -14,14 +14,24 @@ final class AudioPlayerSettings: ObservableObject {
|
||||
@Published
|
||||
var audioPlayerCssFile: FileResource?
|
||||
|
||||
@Published
|
||||
var german: LocalizedAudioPlayerSettings
|
||||
|
||||
@Published
|
||||
var english: LocalizedAudioPlayerSettings
|
||||
|
||||
init(playlistCoverImageSize: Int,
|
||||
smallCoverImageSize: Int,
|
||||
audioPlayerJsFile: FileResource?,
|
||||
audioPlayerCssFile: FileResource?) {
|
||||
audioPlayerCssFile: FileResource?,
|
||||
german: LocalizedAudioPlayerSettings,
|
||||
english: LocalizedAudioPlayerSettings) {
|
||||
self.playlistCoverImageSize = playlistCoverImageSize
|
||||
self.smallCoverImageSize = smallCoverImageSize
|
||||
self.audioPlayerJsFile = audioPlayerJsFile
|
||||
self.audioPlayerCssFile = audioPlayerCssFile
|
||||
self.german = german
|
||||
self.english = english
|
||||
}
|
||||
|
||||
init(file: AudioPlayerSettingsFile, files: [String : FileResource]) {
|
||||
@ -29,13 +39,17 @@ final class AudioPlayerSettings: ObservableObject {
|
||||
self.smallCoverImageSize = file.smallCoverImageSize
|
||||
self.audioPlayerJsFile = file.audioPlayerJsFile.map { files[$0] }
|
||||
self.audioPlayerCssFile = file.audioPlayerCssFile.map { files[$0] }
|
||||
self.german = .init(file: file.german)
|
||||
self.english = .init(file: file.english)
|
||||
}
|
||||
|
||||
var file: AudioPlayerSettingsFile {
|
||||
.init(playlistCoverImageSize: playlistCoverImageSize,
|
||||
smallCoverImageSize: smallCoverImageSize,
|
||||
audioPlayerJsFile: audioPlayerJsFile?.id,
|
||||
audioPlayerCssFile: audioPlayerCssFile?.id)
|
||||
audioPlayerCssFile: audioPlayerCssFile?.id,
|
||||
german: german.file,
|
||||
english: english.file)
|
||||
}
|
||||
}
|
||||
|
||||
@ -45,5 +59,11 @@ extension AudioPlayerSettings {
|
||||
playlistCoverImageSize: 280,
|
||||
smallCoverImageSize: 78,
|
||||
audioPlayerJsFile: nil,
|
||||
audioPlayerCssFile: nil)
|
||||
audioPlayerCssFile: nil,
|
||||
german: .init(playlistText: "Wiedergabeliste"),
|
||||
english: .init(playlistText: "Playlist"))
|
||||
}
|
||||
|
||||
extension AudioPlayerSettings: LocalizedItem {
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,19 @@
|
||||
import Foundation
|
||||
|
||||
final class LocalizedAudioPlayerSettings: ObservableObject {
|
||||
|
||||
@Published
|
||||
var playlistText: String
|
||||
|
||||
init(playlistText: String) {
|
||||
self.playlistText = playlistText
|
||||
}
|
||||
|
||||
init(file: LocalizedAudioPlayerSettingsFile) {
|
||||
self.playlistText = file.playlistText
|
||||
}
|
||||
|
||||
var file: LocalizedAudioPlayerSettingsFile {
|
||||
.init(playlistText: playlistText)
|
||||
}
|
||||
}
|
27
CHDataManagement/Model/Settings/LocalizedPageSettings.swift
Normal file
27
CHDataManagement/Model/Settings/LocalizedPageSettings.swift
Normal file
@ -0,0 +1,27 @@
|
||||
import Foundation
|
||||
|
||||
final class LocalizedPageSettings: ObservableObject {
|
||||
|
||||
/// The title to show for the box on an empty page
|
||||
@Published
|
||||
var emptyPageTitle: String
|
||||
|
||||
/// The text to show in the box on an empty page
|
||||
@Published
|
||||
var emptyPageText: String
|
||||
|
||||
init(emptyPageTitle: String, emptyPageText: String) {
|
||||
self.emptyPageTitle = emptyPageTitle
|
||||
self.emptyPageText = emptyPageText
|
||||
}
|
||||
|
||||
init(file: LocalizedPageSettingsFile) {
|
||||
self.emptyPageTitle = file.emptyPageTitle
|
||||
self.emptyPageText = file.emptyPageText
|
||||
}
|
||||
|
||||
var file: LocalizedPageSettingsFile {
|
||||
.init(emptyPageTitle: emptyPageTitle,
|
||||
emptyPageText: emptyPageText)
|
||||
}
|
||||
}
|
@ -26,6 +26,12 @@ final class PageSettings: ObservableObject {
|
||||
@Published
|
||||
var imageCompareCssFile: FileResource?
|
||||
|
||||
@Published
|
||||
var german: LocalizedPageSettings
|
||||
|
||||
@Published
|
||||
var english: LocalizedPageSettings
|
||||
|
||||
init(file: PageSettingsFile, files: [String : FileResource]) {
|
||||
self.contentWidth = file.contentWidth
|
||||
self.largeImageWidth = file.largeImageWidth
|
||||
@ -35,6 +41,8 @@ final class PageSettings: ObservableObject {
|
||||
self.modelViewerJsFile = file.modelViewerJsFile.map { files[$0] }
|
||||
self.imageCompareCssFile = file.imageCompareCssFile.map { files[$0] }
|
||||
self.imageCompareJsFile = file.imageCompareJsFile.map { files[$0] }
|
||||
self.german = .init(file: file.german)
|
||||
self.english = .init(file: file.english)
|
||||
}
|
||||
|
||||
var file: PageSettingsFile {
|
||||
@ -45,6 +53,12 @@ final class PageSettings: ObservableObject {
|
||||
codeHighlightingJsFile: codeHighlightingJsFile?.id,
|
||||
modelViewerJsFile: modelViewerJsFile?.id,
|
||||
imageCompareJsFile: imageCompareJsFile?.id,
|
||||
imageCompareCssFile: imageCompareCssFile?.id)
|
||||
imageCompareCssFile: imageCompareCssFile?.id,
|
||||
german: german.file,
|
||||
english: english.file)
|
||||
}
|
||||
}
|
||||
|
||||
extension PageSettings: LocalizedItem {
|
||||
|
||||
}
|
||||
|
@ -19,26 +19,38 @@ final class PostSettings: ObservableObject {
|
||||
@Published
|
||||
var defaultCssFile: FileResource?
|
||||
|
||||
@Published
|
||||
var german: LocalizedPostSettings
|
||||
|
||||
@Published
|
||||
var english: LocalizedPostSettings
|
||||
|
||||
init(postsPerPage: Int,
|
||||
contentWidth: Int,
|
||||
swiperCssFile: FileResource?,
|
||||
swiperJsFile: FileResource?,
|
||||
defaultCssFile: FileResource?) {
|
||||
defaultCssFile: FileResource?,
|
||||
german: LocalizedPostSettings,
|
||||
english: LocalizedPostSettings) {
|
||||
self.postsPerPage = postsPerPage
|
||||
self.contentWidth = contentWidth
|
||||
self.swiperCssFile = swiperCssFile
|
||||
self.swiperJsFile = swiperJsFile
|
||||
self.defaultCssFile = defaultCssFile
|
||||
self.german = german
|
||||
self.english = english
|
||||
}
|
||||
|
||||
// MARK: Storage
|
||||
|
||||
|
||||
init(file: PostSettingsFile, files: [String : FileResource]) {
|
||||
self.postsPerPage = file.postsPerPage
|
||||
self.contentWidth = file.contentWidth
|
||||
self.swiperCssFile = file.swiperCssFile.map { files[$0] }
|
||||
self.swiperJsFile = file.swiperJsFile.map { files[$0] }
|
||||
self.defaultCssFile = file.defaultCssFile.map { files[$0] }
|
||||
self.german = .init(file: file.german)
|
||||
self.english = .init(file: file.english)
|
||||
}
|
||||
|
||||
var file: PostSettingsFile {
|
||||
@ -46,6 +58,19 @@ final class PostSettings: ObservableObject {
|
||||
contentWidth: contentWidth,
|
||||
swiperCssFile: swiperCssFile?.id,
|
||||
swiperJsFile: swiperJsFile?.id,
|
||||
defaultCssFile: defaultCssFile?.id)
|
||||
defaultCssFile: defaultCssFile?.id,
|
||||
german: german.file,
|
||||
english: english.file)
|
||||
}
|
||||
}
|
||||
|
||||
extension PostSettings {
|
||||
|
||||
static var `default`: PostSettings {
|
||||
.init(file: .default, files: [:])
|
||||
}
|
||||
}
|
||||
|
||||
extension PostSettings: LocalizedItem {
|
||||
|
||||
}
|
||||
|
@ -18,34 +18,16 @@ final class Settings: ObservableObject {
|
||||
@Published
|
||||
var audioPlayer: AudioPlayerSettings
|
||||
|
||||
@Published
|
||||
var german: LocalizedPostSettings
|
||||
|
||||
@Published
|
||||
var english: LocalizedPostSettings
|
||||
|
||||
|
||||
init(paths: PathSettings,
|
||||
navigation: NavigationSettings,
|
||||
posts: PostSettings,
|
||||
pages: PageSettings,
|
||||
audioPlayer: AudioPlayerSettings,
|
||||
german: LocalizedPostSettings,
|
||||
english: LocalizedPostSettings) {
|
||||
audioPlayer: AudioPlayerSettings) {
|
||||
self.paths = paths
|
||||
self.navigation = navigation
|
||||
self.posts = posts
|
||||
self.pages = pages
|
||||
self.audioPlayer = audioPlayer
|
||||
self.german = german
|
||||
self.english = english
|
||||
}
|
||||
|
||||
func localized(in language: ContentLanguage) -> LocalizedPostSettings {
|
||||
switch language {
|
||||
case .english: return english
|
||||
case .german: return german
|
||||
}
|
||||
}
|
||||
|
||||
init(file: SettingsFile, files: [String : FileResource], map: (String) -> Item?) {
|
||||
@ -55,9 +37,6 @@ final class Settings: ObservableObject {
|
||||
self.pages = PageSettings(file: file.pages, files: files)
|
||||
self.paths = PathSettings(file: file.paths)
|
||||
self.audioPlayer = .init(file: file.audioPlayer, files: files)
|
||||
|
||||
self.german = .init(file: file.german)
|
||||
self.english = .init(file: file.english)
|
||||
}
|
||||
|
||||
func file(tagOverview: TagOverviewPage?) -> SettingsFile {
|
||||
@ -67,9 +46,7 @@ final class Settings: ObservableObject {
|
||||
posts: posts.file,
|
||||
pages: pages.file,
|
||||
audioPlayer: audioPlayer.file,
|
||||
tagOverview: tagOverview?.file,
|
||||
german: german.file,
|
||||
english: english.file)
|
||||
tagOverview: tagOverview?.file)
|
||||
}
|
||||
}
|
||||
|
||||
@ -80,7 +57,5 @@ extension Settings {
|
||||
navigation: .default,
|
||||
posts: .default,
|
||||
pages: .default,
|
||||
audioPlayer: .default,
|
||||
german: .german,
|
||||
english: .english)
|
||||
audioPlayer: .default)
|
||||
}
|
||||
|
Reference in New Issue
Block a user