Show page tags
This commit is contained in:
parent
5684196ef3
commit
93e642c3c9
@ -41,4 +41,11 @@ extension ContentLanguage {
|
|||||||
case .german: return .english
|
case .german: return .english
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var text: String {
|
||||||
|
switch self {
|
||||||
|
case .english: return "English"
|
||||||
|
case .german: return "German"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,6 @@ struct LocalizedPageContentView: View {
|
|||||||
didChangeContent = true
|
didChangeContent = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.padding()
|
|
||||||
.onAppear(perform: loadContent)
|
.onAppear(perform: loadContent)
|
||||||
.onDisappear(perform: saveContent)
|
.onDisappear(perform: saveContent)
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,9 @@ struct PageContentView: View {
|
|||||||
@EnvironmentObject
|
@EnvironmentObject
|
||||||
private var content: Content
|
private var content: Content
|
||||||
|
|
||||||
|
@State
|
||||||
|
private var showTagPicker = false
|
||||||
|
|
||||||
init(page: Page) {
|
init(page: Page) {
|
||||||
self.page = page
|
self.page = page
|
||||||
}
|
}
|
||||||
@ -40,10 +43,36 @@ struct PageContentView: View {
|
|||||||
Spacer()
|
Spacer()
|
||||||
}.padding()
|
}.padding()
|
||||||
} else {
|
} else {
|
||||||
LocalizedPageContentView(pageId: page.id, page: page.localized(in: language), language: language)
|
VStack(alignment: .leading) {
|
||||||
.id(page.id + language.rawValue)
|
FlowHStack {
|
||||||
|
ForEach(page.tags, id: \.id) { tag in
|
||||||
|
TagView(text: tag.localized(in: language).name)
|
||||||
|
.foregroundStyle(.white)
|
||||||
|
}
|
||||||
|
Button(action: { showTagPicker = true }) {
|
||||||
|
Image(systemSymbol: .squareAndPencilCircleFill)
|
||||||
|
.resizable()
|
||||||
|
.aspectRatio(1, contentMode: .fit)
|
||||||
|
.frame(height: 22)
|
||||||
|
.foregroundColor(Color.gray)
|
||||||
|
.background(Circle()
|
||||||
|
.fill(Color.white)
|
||||||
|
.padding(1))
|
||||||
|
}
|
||||||
|
.buttonStyle(.plain)
|
||||||
|
}
|
||||||
|
LocalizedPageContentView(pageId: page.id, page: page.localized(in: language), language: language)
|
||||||
|
.id(page.id + language.rawValue)
|
||||||
|
}.padding()
|
||||||
|
.sheet(isPresented: $showTagPicker) {
|
||||||
|
TagSelectionView(
|
||||||
|
presented: $showTagPicker,
|
||||||
|
selected: $page.tags,
|
||||||
|
tags: $content.tags)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,6 +43,7 @@ private struct LocalizedTitle: View {
|
|||||||
.foregroundStyle(Color.primary)
|
.foregroundStyle(Color.primary)
|
||||||
.textFieldStyle(.plain)
|
.textFieldStyle(.plain)
|
||||||
.lineLimit(2)
|
.lineLimit(2)
|
||||||
|
.frame(minHeight: 30)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,8 +88,11 @@ struct LocalizedPostContentView: View {
|
|||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
Text("Images")
|
HStack {
|
||||||
.font(.headline)
|
Text("Images")
|
||||||
|
.font(.headline)
|
||||||
|
Button("Transfer from \(language.next.text)", action: copyImagesFromOtherLanguage)
|
||||||
|
}
|
||||||
PostImagesView(post: post.localized(in: language))
|
PostImagesView(post: post.localized(in: language))
|
||||||
LocalizedTitle(post: post.localized(in: language))
|
LocalizedTitle(post: post.localized(in: language))
|
||||||
FlowHStack {
|
FlowHStack {
|
||||||
@ -119,8 +123,9 @@ struct LocalizedPostContentView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func remove(tag: Tag) {
|
private func copyImagesFromOtherLanguage() {
|
||||||
post.tags = post.tags.filter {$0.id != tag.id }
|
let images = post.localized(in: language.next).images
|
||||||
|
post.localized(in: language).images = images
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,10 +75,6 @@ struct TagSelectionView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func select(tag: Tag) {
|
private func select(tag: Tag) {
|
||||||
guard let index = tags.firstIndex(of: tag) else {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
tags.remove(at: index)
|
|
||||||
selected.append(tag)
|
selected.append(tag)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user