mirror of
https://github.com/Arcadia-Solutions/arcadia.git
synced 2025-12-21 09:19:33 -06:00
feat: create wiki articles
This commit is contained in:
@@ -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'),
|
||||
},
|
||||
|
||||
@@ -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) => {
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user