feat: create wiki articles

This commit is contained in:
FrenchGithubUser
2025-11-29 14:54:47 +01:00
parent 7adf639f88
commit aea3b2ebaf
4 changed files with 27 additions and 4 deletions

View File

@@ -166,7 +166,15 @@ const router = createRouter({
path: '/wiki/article/:id/edit',
name: 'EditWikiArticle',
meta: {
documentTitle: 'Edit Wiki',
documentTitle: 'Edit Wiki Article',
},
component: () => import('../views/wiki/CreateOrEditWikiArticle.vue'),
},
{
path: '/wiki/create-article',
name: 'CreateWikiArticle',
meta: {
documentTitle: 'Create Wiki Article',
},
component: () => import('../views/wiki/CreateOrEditWikiArticle.vue'),
},

View File

@@ -7,6 +7,12 @@ export const getWikiArticle = async (articleId: number) => {
return (await api.get<WikiArticle>(`/wiki/articles?id=${articleId}`)).data
}
export type UserCreatedWikiArticle = components['schemas']['UserCreatedWikiArticle']
export const createWikiArticle = async (article: UserCreatedWikiArticle) => {
return (await api.post<WikiArticle>('/wiki/articles', article)).data
}
export type EditedWikiArticle = components['schemas']['EditedWikiArticle']
export const editWikiArticle = async (article: EditedWikiArticle) => {

View File

@@ -7,14 +7,14 @@
<BBCodeEditor :rows="30" :initial-value="wikiArticle.body" :label="t('wiki.article_body')" @value-change="wikiArticle.body = $event">
<template #buttons>
<Button v-if="isEditMode" :label="t('wiki.validate_article_edit')" :loading @click="editArticle" />
<Button v-else :label="t('wiki.create_article')" :loading />
<Button v-else :label="t('wiki.create_article')" :loading @click="createArticle" />
</template>
</BBCodeEditor>
</div>
</template>
<script setup lang="ts">
import { editWikiArticle, getWikiArticle, type EditedWikiArticle } from '@/services/api/wikiService'
import { createWikiArticle, editWikiArticle, getWikiArticle, type EditedWikiArticle } from '@/services/api/wikiService'
import { computed, ref } from 'vue'
import { onMounted } from 'vue'
import { useRoute, useRouter } from 'vue-router'
@@ -40,6 +40,15 @@ const editArticle = () => {
.catch(() => (loading.value = false))
}
const createArticle = () => {
loading.value = true
createWikiArticle(wikiArticle.value)
.then((data) => {
router.push(`/wiki/article/${data.id}`)
})
.catch(() => (loading.value = false))
}
onMounted(async () => {
if (isEditMode.value) {
wikiArticle.value = await getWikiArticle(parseInt(route.params.id as string))

View File

@@ -4,7 +4,7 @@
<i class="pi pi-plus" v-tooltip.top="t('wiki.create_article')" />
</RouterLink>
<RouterLink to="/wiki/search">
<i class="pi pi-search" v-tooltip.top="t('wiki.search')" />
<i class="pi pi-search" v-tooltip.top="'Not implemented yet'" />
</RouterLink>
</div>
<div v-if="wikiArticle" class="wiki-article">