Skip to content

Commit 4cac1d4

Browse files
committed
frontend: enable direct json editor on comment form
1 parent 25f8c34 commit 4cac1d4

File tree

2 files changed

+55
-23
lines changed

2 files changed

+55
-23
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,39 @@
11
<template>
2-
<div>
3-
<p class="text-muted-color">
4-
Une page additionelle est insérée automatiquement au début du formulaire,
5-
contenant le nom de l'auteur.ice ainsi qu'un champ libre.
6-
</p>
7-
8-
<AdminFamiliesEditForm
9-
:original-form-fields="fetchedFamily.comment_form.fields"
10-
:on-save-callback="onSave"
11-
kind-name="commentaire"
12-
kind="comment"
13-
:categories="categories"
14-
/>
15-
</div>
2+
<Tabs v-model:value="tabValue">
3+
<TabList>
4+
<Tab value="0">
5+
Éditeur visuel
6+
</Tab>
7+
<Tab value="1">
8+
Éditeur avancé
9+
</Tab>
10+
</TabList>
11+
<TabPanels>
12+
<TabPanel value="0">
13+
<p class="text-muted-color">
14+
Une page additionelle est insérée automatiquement au début du formulaire,
15+
contenant le nom de l'auteur.ice ainsi qu'un champ libre.
16+
</p>
17+
18+
<AdminFamiliesEditForm
19+
:original-form-fields="fetchedFamily.comment_form.fields"
20+
:categories="categories"
21+
:on-save-callback="onSave"
22+
class="-ml-4"
23+
kind="comment"
24+
kind-name="commentaire"
25+
/>
26+
</TabPanel>
27+
<TabPanel value="1">
28+
<AdminFamiliesEditFormJson
29+
:original-form-fields="fetchedFamily.comment_form.fields"
30+
:on-sync-callback="onSynchronise"
31+
kind="comment"
32+
kind-name="commentaire"
33+
/>
34+
</TabPanel>
35+
</TabPanels>
36+
</Tabs>
1637
</template>
1738

1839
<script setup lang="ts">
@@ -28,9 +49,9 @@ if (!state.is_admin)
2849
navigateTo('/admin/home')
2950
3051
const id = useRoute().params.id as string
52+
const tabValue = ref('0')
3153
3254
const fetchedFamily = await state.fetchFamily(id)
33-
const editedFamily = JSON.parse(JSON.stringify(fetchedFamily))
3455
await state.fetchCategories()
3556
const categories = state.categories.filter(category => category.family_id == fetchedFamily.id)
3657
@@ -47,13 +68,24 @@ initAdminLayout(
4768
4869
async function onSave(newFormFields: FormField[]): Promise<{ error: Error | undefined }> {
4970
try {
50-
editedFamily.comment_form.fields = newFormFields
51-
await state.client.updateFamily(id, editedFamily)
71+
fetchedFamily.comment_form.fields = newFormFields
72+
await state.client.updateFamily(id, fetchedFamily)
5273
navigateTo('/admin/families')
5374
return { error: undefined }
5475
}
5576
catch (error) {
5677
return { error: error as Error }
5778
}
5879
}
80+
81+
async function onSynchronise(newFormFields: FormField[]): Promise<{ error: Error | undefined }> {
82+
try {
83+
fetchedFamily.comment_form.fields = newFormFields
84+
tabValue.value = '0' // Switch back to the visual editor tab after synchronization
85+
return { error: undefined }
86+
}
87+
catch (error) {
88+
return { error: error as Error }
89+
}
90+
}
5991
</script>

frontend/pages/admin/families/[id]/entities.vue

+6-6
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,20 @@
1616
</p>
1717

1818
<AdminFamiliesEditForm
19-
class="-ml-4"
2019
:original-form-fields="fetchedFamily.entity_form.fields"
21-
:on-save-callback="onSave"
2220
:categories="categories"
23-
kind-name="entité"
21+
:on-save-callback="onSave"
22+
class="-ml-4"
2423
kind="entity"
24+
kind-name="entité"
2525
/>
2626
</TabPanel>
2727
<TabPanel value="1">
2828
<AdminFamiliesEditFormJson
2929
:original-form-fields="fetchedFamily.entity_form.fields"
3030
:on-sync-callback="onSynchronise"
31-
kind-name="entité"
3231
kind="entity"
32+
kind-name="entité"
3333
/>
3434
</TabPanel>
3535
</TabPanels>
@@ -51,7 +51,7 @@ if (!state.is_admin)
5151
const id = useRoute().params.id as string
5252
const tabValue = ref('0')
5353
54-
const fetchedFamily = await state.client.getFamily(id)
54+
const fetchedFamily = await state.fetchFamily(id)
5555
await state.fetchCategories()
5656
const categories = state.categories.filter(category => category.family_id == fetchedFamily.id)
5757
@@ -81,7 +81,7 @@ async function onSave(newFormFields: FormField[]): Promise<{ error: Error | unde
8181
async function onSynchronise(newFormFields: FormField[]): Promise<{ error: Error | undefined }> {
8282
try {
8383
fetchedFamily.entity_form.fields = newFormFields
84-
tabValue.value = '0'
84+
tabValue.value = '0' // Switch back to the visual editor tab after synchronization
8585
return { error: undefined }
8686
}
8787
catch (error) {

0 commit comments

Comments
 (0)