From 5e435f8521c1aaeaff5bae485f7bc581b0f333e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E6=80=9D?= <2897217417@qq.com> Date: Wed, 20 Mar 2024 10:18:36 +0800 Subject: [PATCH] =?UTF-8?q?wiki=E7=89=B9=E6=AE=8A=E5=AD=97=E7=AC=A6=20issu?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/forge/Wiki/Index.jsx | 40 ++++++++++----------- src/forge/Wiki/Preview.jsx | 13 +++---- src/forge/Wiki/api.js | 25 ++++++++++--- src/forge/Wiki/components/sidebar/index.jsx | 12 ++----- 4 files changed, 50 insertions(+), 40 deletions(-) diff --git a/src/forge/Wiki/Index.jsx b/src/forge/Wiki/Index.jsx index 1c8eb99cd..08288c366 100644 --- a/src/forge/Wiki/Index.jsx +++ b/src/forge/Wiki/Index.jsx @@ -5,7 +5,7 @@ import CopyTool from '../Component/CopyTool'; import Welcome from './Welcome'; import RenderHtml from "../../components/render-html"; -import { wikiPages, getWiki, parseSidebar, updateWiki, treeToMd } from './api'; +import { wikiPages, getWiki, parseSidebar, updateWiki, treeToMd, deleteSameKey } from './api'; import { httpUrl } from './fetch'; import './Index.scss'; import './components/ModalFun/index.scss'; @@ -38,18 +38,9 @@ export default (props) => { const [addMenuError, setAddMenuError] = useState(undefined); const [sidebar, setSidebar] = useState(undefined); const [defaultSelectedKeys, setDefaultSelectedKeys] = useState(undefined); - const [masterProtected, setMasterProtected] = useState(false); useEffect(()=>{ window.scrollTo(0,0); - // 获取仓库分支信息,判断master是否设置了分支保护 - if(projectsId && owner){ - axios.get(`/v1/${owner}/${projectsId}/branches.json`, {keyword: 'master'}).then(res=>{ - if(res && res.data && res.data.total_count === 1){ - setMasterProtected(res.data.branches[0].protected); - } - }) - } }, []) useEffect(()=>{ @@ -84,9 +75,9 @@ export default (props) => { setSidebar(sidebar) setFileList(menuList); let firstWikiNode = undefined; - const arr = pathname.split('/'); if(!pathname.endsWith('/wiki')){ - firstWikiNode = findNodeByName(menuList, arr[arr.length-2]); + const {wikiName} = match.params; + firstWikiNode = findNodeByName(menuList, wikiName); } else{ // 找到目录树中第一个[[页面]] firstWikiNode = findFirstWiki(menuList); @@ -95,14 +86,14 @@ export default (props) => { !firstWikiNode && (firstWikiNode = findFirstWiki(menuList)); // 设置目录 选中节点初始化 setDefaultSelectedKeys([firstWikiNode.key+""]); - const title = firstWikiNode.title.trim().substring(2,firstWikiNode.title.trim().length-2); + const title = firstWikiNode.titleStr; const firstWiki = res.data.filter(item => { return title === item.name })[0]; setCheckItem({ ...firstWiki, key: firstWikiNode.key }) if(window.location.pathname.indexOf('/wiki') === -1) return - history.push(`/${owner}/${projectsId}/wiki/${title}/${firstWikiNode.key}`); + history.push(encodeURI(`/${owner}/${projectsId}/wiki/${firstWiki.sub_url}/${firstWikiNode.key}`)); } else { setFileArr([]); setFileArrInit([]); @@ -110,9 +101,9 @@ export default (props) => { }); }, [project, reload]) - // 加载单个wiki详情,参数尽量用驼峰,此处由于后端太麻烦所以不标准 + // 加载单个wiki详情,sub_url: 后端转义的字符串 useEffect(() => { - project && checkItem.name && getWiki({ + project && checkItem.sub_url && getWiki({ owner: owner, repo: projectsId, pageName: checkItem.sub_url, @@ -228,11 +219,11 @@ export default (props) => { } function goEdit(params) { - history.push(`/${owner}/${projectsId}/wiki/${encodeURI(checkItem.sub_url)}/${checkItem.key}/edit${params}`); + history.push(encodeURI(`/${owner}/${projectsId}/wiki/${checkItem.sub_url}/${checkItem.key}/edit${params}`)); } function preview() { - window.open(`/${owner}/${projectsId}/wiki/preview/${encodeURI(project.name)}/${project.id}`); + window.open(encodeURI(`/${owner}/${projectsId}/wiki/preview/${project.name}/${project.id}`)); } // 支持 Markdown,Html,Pdf格式文件 @@ -257,11 +248,18 @@ export default (props) => { function changeitem(item){ const {name, key} = item; const wiki = fileArrInit.filter(item => { return item.name == name })[0]; + if(!wiki){ + // 不存在的wiki,修正sidebarfindSameKeyByDel + const menuListByDel = deleteSameKey(fileList, key); + updateWikiFun(menuListByDel); + message.success("不存在的wiki") + return + } setCheckItem({ ...wiki, key }) - history.push(`/${owner}/${projectsId}/wiki/${name}/${key}`); + history.push(encodeURI(`/${owner}/${projectsId}/wiki/${name}/${key}`)); } return ( @@ -297,7 +295,7 @@ export default (props) => {