commit 3d70e10ff3815e60e5f336da1aee80456b560f61
parent 0ab32acc99d9083771ea800de1024542e445878e
Author: Yongbin Kim <iam@yongbin.kim>
Date: Sun, 29 Jan 2023 04:02:30 +0900
fix: Wiki 관련 페이지에서 WikiBase 사용하도록 수정
Signed-off-by: Yongbin Kim <iam@yongbin.kim>
Diffstat:
6 files changed, 45 insertions(+), 43 deletions(-)
diff --git a/components/wiki/WikiBase.tsx b/components/wiki/WikiBase.tsx
@@ -21,9 +21,7 @@ export default function WikiBase (props: WikiBaseProps) {
<Container>
<WikiToolbar pageKind={props.pageKind} />
- <Section>
- {props.children}
- </Section>
+ {props.children}
</Container>
</>
)
diff --git a/components/wiki/WikiToolbar.tsx b/components/wiki/WikiToolbar.tsx
@@ -2,7 +2,7 @@ import Link from 'next/link'
import styles from './WikiToolbar.module.css';
export interface WikiToolbarProps {
- pageKind: 'wiki' | 'edit' | 'talk' | 'xref' | 'logs'
+ pageKind: 'wiki' | 'edit' | 'talk' | 'logs'
}
export default function WikiToolbar (props: WikiToolbarProps) {
@@ -23,11 +23,6 @@ export default function WikiToolbar (props: WikiToolbarProps) {
Talks
</Link>
)}
- {props.pageKind !== 'xref' && (
- <Link href={`/xref/test/test`} className={styles['item']}>
- Backlinks
- </Link>
- )}
{props.pageKind !== 'logs' && (
<Link href={'/logs/test/test'} className={styles['item']}>
History
diff --git a/pages/edit/[slug]/[...path].tsx b/pages/edit/[slug]/[...path].tsx
@@ -1,6 +1,8 @@
+import { useSocket } from '@/components/contexts/SocketContext'
import { SubmitButton } from '@/components/elements/Button'
import Fields from '@/components/form/Fields'
import Form from '@/components/form/Form'
+import Section from '@/components/layout/Section'
import WikiBase from '@/components/wiki/WikiBase'
import WikiEditor from '@/components/wiki/WikiEditor'
import { useForm } from '@/lib/hooks/use_form'
@@ -12,6 +14,7 @@ import { authenticationFromCookies } from '@/lib/security/token'
import { getSlugAndPath } from '@/lib/utils/wiki'
import { GetServerSideProps } from 'next'
import { useRouter } from 'next/router'
+import { useEffect } from 'react'
export interface WikiEditPageProps {
slug: string
@@ -70,6 +73,15 @@ interface WikiEditFormFields {
export default function WikiEditPage (props: WikiEditPageProps) {
const router = useRouter()
+ const socket = useSocket()
+
+ // 다른 사용자가 문서를 편집했을 때
+ //
+ useEffect(() => {
+ return socket.on('pageChange', ({ payload }) => {
+
+ })
+ }, [])
const [fields, updateFields, submit, isLoading, result, error] = useForm<WikiEditFormFields>(
{ method: 'PUT', url: `/api/wiki/${props.slug}/${props.path}` },
@@ -81,17 +93,19 @@ export default function WikiEditPage (props: WikiEditPageProps) {
)
return (
- <WikiBase title={`수정중: ${props.path}`} pageKind="edit">
- <WikiEditor
- value={fields.content}
- onValueChange={updateFields.bind(null, 'content')}
- />
-
- <Form onSubmit={submit}>
- <Fields>
- <SubmitButton color="primary" disabled={isLoading} value="저장"/>
- </Fields>
- </Form>
+ <WikiBase title={`편집: ${props.path}`} pageKind="edit">
+ <Section>
+ <WikiEditor
+ value={fields.content}
+ onValueChange={updateFields.bind(null, 'content')}
+ />
+
+ <Form onSubmit={submit}>
+ <Fields>
+ <SubmitButton color="primary" disabled={isLoading} value="저장"/>
+ </Fields>
+ </Form>
+ </Section>
</WikiBase>
)
}
diff --git a/pages/logs/[slug]/[...path].tsx b/pages/logs/[slug]/[...path].tsx
@@ -3,6 +3,7 @@ import Container from '@/components/layout/Container'
import Hero from '@/components/layout/Hero'
import Section from '@/components/layout/Section'
import { Pagination } from '@/components/Pagination'
+import WikiBase from '@/components/wiki/WikiBase'
import { withConnection } from '@/lib/model_helpers'
import { getWikiAndPageACLViaPath } from '@/lib/models/wiki_acl'
import { countWikiChanges, getWikiChanges, WikiChangeListItem } from '@/lib/models/wiki_change'
@@ -60,11 +61,7 @@ export default function WikiLogsPage (props: WikiLogsPageProps) {
const [slug, path] = useMemo(() => getSlugAndPath(router), [router])
return (
<>
- <Hero>
- <Title kind="headline" size="large">편집 기록: {path}</Title>
- </Hero>
-
- <Container>
+ <WikiBase pageKind={'logs'} title={`편집 기록: ${path}`}>
<Section>
<ul>
{props.changes.map((change, i, changes) => (
@@ -88,12 +85,10 @@ export default function WikiLogsPage (props: WikiLogsPageProps) {
</li>
))}
</ul>
- </Section>
- <Section>
<Pagination page={props.page} totalCount={props.count} pageSize={PAGE_SIZE}/>
</Section>
- </Container>
+ </WikiBase>
</>
)
}
diff --git a/pages/talk/[slug]/[...path].tsx b/pages/talk/[slug]/[...path].tsx
@@ -9,6 +9,7 @@ import Hero from '@/components/layout/Hero'
import Section from '@/components/layout/Section'
import { Pagination } from '@/components/Pagination'
import ThreadList from '@/components/threads/ThreadList'
+import WikiBase from '@/components/wiki/WikiBase'
import { ApiError } from '@/lib/apierror'
import { withConnection } from '@/lib/model_helpers'
import { Thread } from '@/lib/models/thread'
@@ -67,11 +68,7 @@ export const getServerSideProps: GetServerSideProps<TestPageProps> = async (cont
export default function TestPage (props: TestPageProps) {
return (
- <Container>
- <Hero>
- <Title kind="headline" size="large">{props.pagePath}</Title>
- </Hero>
-
+ <WikiBase pageKind={'talk'} title={props.pagePath}>
<Section>
{props.talks.length === 0 ? (
<div>No talks</div>
@@ -93,7 +90,7 @@ export default function TestPage (props: TestPageProps) {
<Title>새 주제 만들기</Title>
<NewTalk {...props} />
</Section>
- </Container>
+ </WikiBase>
)
}
diff --git a/pages/wiki/[slug]/[...path].tsx b/pages/wiki/[slug]/[...path].tsx
@@ -1,3 +1,4 @@
+import Section from '@/components/layout/Section'
import RevisionAlert from '@/components/wiki/RevisionAlert'
import WikiArticle from '@/components/wiki/WikiArticle'
import WikiBase from '@/components/wiki/WikiBase'
@@ -96,15 +97,17 @@ export default function WikiViewPage (props: WikiViewPageProps) {
return (
<>
<WikiBase pageKind={'wiki'} title={path ?? ''}>
- <WikiArticle>
- {rev != null && (
- <RevisionAlert
- page={props.page}
- recentURL={`/wiki/${slug}/${path}`}
- />
- )}
- <div dangerouslySetInnerHTML={{ __html: props.html }}/>
- </WikiArticle>
+ <Section>
+ <WikiArticle>
+ {rev != null && (
+ <RevisionAlert
+ page={props.page}
+ recentURL={`/wiki/${slug}/${path}`}
+ />
+ )}
+ <div dangerouslySetInnerHTML={{ __html: props.html }}/>
+ </WikiArticle>
+ </Section>
</WikiBase>
</>
)