Generate open graph meta tags

This commit is contained in:
Christoph Hagen
2025-01-15 22:04:48 +01:00
parent 4b448f3415
commit f6b868502d
21 changed files with 324 additions and 109 deletions

View File

@ -0,0 +1,32 @@
import SwiftUI
struct GeneralSettingsDetailView: View {
@ObservedObject
var generalSettings: GeneralSettings
var body: some View {
ScrollView {
VStack(alignment: .leading) {
DetailTitle(title: "General",
text: "General settings for the webpage")
StringPropertyView(
title: "Website URL",
text: $generalSettings.url,
footer: "The base path where the website is deployed, to generate absolute links")
IntegerPropertyView(
title: "Link Preview Image Width",
value: $generalSettings.linkPreviewImageWidth,
footer: "The maximum width of a link preview image")
IntegerPropertyView(
title: "Link Preview Image Height",
value: $generalSettings.linkPreviewImageHeight,
footer: "The maximum height of a link preview image")
}
.padding()
}
}
}

View File

@ -9,6 +9,8 @@ struct GenerationDetailView: View {
var body: some View {
switch section {
case .general:
GeneralSettingsDetailView(generalSettings: content.settings.general)
case .folders:
PathSettingsView()
case .navigationBar:

View File

@ -5,6 +5,8 @@ struct LocalizedPostFeedSettingsView: View {
@ObservedObject
var settings: LocalizedPostSettings
let transferImage: (language: ContentLanguage, image: FileResource)?
var body: some View {
VStack(alignment: .leading) {
StringPropertyView(
@ -12,25 +14,19 @@ struct LocalizedPostFeedSettingsView: View {
text: $settings.defaultPageLinkText,
footer: "The text to display when linking from a post to a page. Each post can provide a custom text.")
StringPropertyView(
title: "Title",
text: $settings.title,
footer: "The title of all post feed pages.")
StringPropertyView(
title: "URL prefix",
text: $settings.feedUrlPrefix,
footer: "The prefix to generate the urls for all post feed pages.")
TextFieldPropertyView(
title: "Description",
text: $settings.description,
footer: "The description of all post feed pages.")
LinkPreviewDetailView(linkPreview: settings.linkPreview, fallbackTitle: nil, transferImage: transferImage)
}
}
}
#Preview {
LocalizedPostFeedSettingsView(settings: PostSettings.default.english)
.padding()
LocalizedPostFeedSettingsView(
settings: PostSettings.default.english,
transferImage: nil)
.padding()
}

View File

@ -8,6 +8,12 @@ struct PostFeedSettingsView: View {
@ObservedObject
var postSettings: PostSettings
private var transferImage: (language: ContentLanguage, image: FileResource)? {
postSettings.localized(in: language.next).linkPreview.image.map {
(language.next, $0)
}
}
var body: some View {
ScrollView {
VStack(alignment: .leading) {
@ -40,7 +46,8 @@ struct PostFeedSettingsView: View {
selectedFile: $postSettings.swiperJsFile)
LocalizedPostFeedSettingsView(
settings: postSettings.localized(in: language))
settings: postSettings.localized(in: language),
transferImage: transferImage)
.id(language)
}
.padding()

View File

@ -2,6 +2,8 @@ import SFSafeSymbols
enum SettingsSection: String {
case general = "General"
case folders = "Folders"
case navigationBar = "Navigation Bar"
@ -20,6 +22,7 @@ extension SettingsSection {
var icon: SFSymbol {
switch self {
case .general: return .noteText
case .folders: return .folder
case .navigationBar: return .menubarArrowUpRectangle
case .postFeed: return .rectangleGrid1x2