- {i.name}
+ toIssues(i) }>{i.name}
{i.description}
- {i.issues_count || 0} 疑修
+ toIssues(i) } >{i.issues_count || 0} 疑修
{/* {i.pull_requests_count || 0} 合并请求 */}
diff --git a/src/forge/Main/CoderDepot.jsx b/src/forge/Main/CoderDepot.jsx
index c6cd4d56d..fe570e020 100644
--- a/src/forge/Main/CoderDepot.jsx
+++ b/src/forge/Main/CoderDepot.jsx
@@ -511,9 +511,9 @@ function CoderDepot(props){
}
{
checkIfLogin && checkIfLogin()?
- eventTrack(`/${owner}/${projectsId}/webIDE/tree/${branchName||defaultBranch}`)}>Web IDE
+ eventTrack(`/${owner}/${projectsId}/webIDE/tree/${branchName||defaultBranch}`)}>Web IDE
:
- {showLoginDialog(`/${owner}/${projectsId}`)}}>Web IDE
+ {showLoginDialog(`/${owner}/${projectsId}`)}}>Web IDE
}
diff --git a/src/forge/Main/sub/DetailBanner.jsx b/src/forge/Main/sub/DetailBanner.jsx
index fc4196afd..f5c3d6b47 100644
--- a/src/forge/Main/sub/DetailBanner.jsx
+++ b/src/forge/Main/sub/DetailBanner.jsx
@@ -98,7 +98,7 @@ function DetailBanner({ history,list , owner , projectsId ,showNotification , ur
{/* */}
- 引擎(Engine)
+ 引擎(Engine)
{projectDetail && projectDetail.ops_count ? {projectDetail.ops_count} : ""}
@@ -138,7 +138,7 @@ function DetailBanner({ history,list , owner , projectsId ,showNotification , ur
- 服务
+ 服务
}
diff --git a/src/forge/Wiki/EditWiki.jsx b/src/forge/Wiki/EditWiki.jsx
index 728f6e775..6ec63904f 100644
--- a/src/forge/Wiki/EditWiki.jsx
+++ b/src/forge/Wiki/EditWiki.jsx
@@ -18,7 +18,7 @@ export default Form.create()(({ form, history, showNotification, projectDetail,
let wikiName = ''
let key = '';
if (!pathname.endsWith('/wiki/add')) {
- wikiName = pathname.split('/')[4];
+ wikiName = decodeURI(pathname.split('/')[4]);
key = pathname.split('/')[5];
}else{
key = search.split('=').pop();
@@ -116,6 +116,12 @@ export default Form.create()(({ form, history, showNotification, projectDetail,
};
validateFields((err, values) => {
if (!err) {
+ let regEn = /[\\/:*?"<>|[\]-]/g;
+ if (regEn.test(values.title)) {
+ message.error('文件名不能有特殊字符: \\ / : * ? \" < > | [ \] -');
+ setOperateFlag(false);
+ return;
+ }
const {md_content, title} = values;
if (wikiName && search!== "?copy") {
updateWiki({
@@ -124,7 +130,7 @@ export default Form.create()(({ form, history, showNotification, projectDetail,
projectId: project.id,
pageName: wikiName,
title,
- message: '',
+ commit_message: '',
content_base64: Base64.encode(md_content)
}).then(res => dealRes(res, title));
} else {
@@ -217,7 +223,7 @@ export default Form.create()(({ form, history, showNotification, projectDetail,
projectId: project.id,
pageName: '_Sidebar',
title: '_Sidebar',
- message: '',
+ commit_message: '',
content_base64: Base64.encode(content)
}).then(res => {
if (res && res.message === "200") {
@@ -327,7 +333,7 @@ export default Form.create()(({ form, history, showNotification, projectDetail,
"title",
[
{ required: true, message: "请输入标题" },
- { pattern: /^(?!-).*$/, message: '不能以-开头' }
+ // { pattern: /[^`\[\]\/:*?''<>|%-+_]/g, message: '不允许部分特殊字符' }
],
{
project && checkItem.name && getWiki({
owner: owner,
repo: projectsId,
- pageName: checkItem.sub_url,
+ pageName: checkItem.name,
projectId: project.id
}).then(res => {
if (res && res.message === "200") {
@@ -190,6 +190,11 @@ export default (props) => {
setAddMenuError("不能仅输入空格");
return;
}
+ const regEn = /[\\/:*?"<>|[\]-]/g;
+ if (regEn.test(menuName)) {
+ setAddMenuError("不能有特殊字符: \\ / : * ? \" < > | [ \] -");
+ return;
+ }
// 校验一级目录中是否有相同名称
const oneMenuList = fileList.filter(item=>!item.title.trim().startsWith('[[')).map(i=>i.title.trim())
if(oneMenuList.includes(`- ${menuName}`)){
@@ -210,7 +215,7 @@ export default (props) => {
projectId: project.id,
pageName: '_Sidebar',
title: '_Sidebar',
- message: '',
+ commit_message: '',
content_base64: Base64.encode(treeToMd(sidebarList))
}).then(res => {
if (res && res.message === "200") {
@@ -228,7 +233,7 @@ export default (props) => {
}
function goEdit(params) {
- history.push(`/${owner}/${projectsId}/wiki/${encodeURI(checkItem.sub_url)}/${checkItem.key}/edit${params}`);
+ history.push(`/${owner}/${projectsId}/wiki/${encodeURI(checkItem.name)}/${checkItem.key}/edit${params}`);
}
function preview() {
diff --git a/src/forge/Wiki/Preview.jsx b/src/forge/Wiki/Preview.jsx
index 2b700f60c..b36b1946f 100644
--- a/src/forge/Wiki/Preview.jsx
+++ b/src/forge/Wiki/Preview.jsx
@@ -63,7 +63,7 @@ export default (props) => {
projectsId && checkItem.name && getWiki({
owner: owner,
repo: projectsId,
- pageName: checkItem.sub_url,
+ pageName: checkItem.name,
projectId: projectId,
}).then(res => {
if (res && res.message === "200") {
diff --git a/src/forge/Wiki/api.js b/src/forge/Wiki/api.js
index 2250ec5f4..66425e0fb 100644
--- a/src/forge/Wiki/api.js
+++ b/src/forge/Wiki/api.js
@@ -116,16 +116,13 @@ export function markdownToTree(markdownText){
lines.map((item, index) =>{
const title = item.trim();
const isFile = title.startsWith('[[') && title.endsWith(']]');
- const titleStr = isFile ? title.substring(2, title.length - 2) : title.substring(2, title.length)
const node = {
// 带空格+[[]]或者- 标识
title: item,
children: [],
key: undefined,
// 纯内容
- titleStr,
- // 编码后的title,获取wiki内容用title_sub
- title_sub: encodeURIComponent(titleStr),
+ titleStr: isFile ? title.substring(2, title.length - 2) : title.substring(2, title.length),
// 是否是wiki文件
isFile: isFile
}
diff --git a/src/forge/Wiki/components/sidebar/index.jsx b/src/forge/Wiki/components/sidebar/index.jsx
index d7046edb0..794ecbabc 100644
--- a/src/forge/Wiki/components/sidebar/index.jsx
+++ b/src/forge/Wiki/components/sidebar/index.jsx
@@ -163,7 +163,7 @@ export default function Sidebar(props) {
const {node, children, key} = item;
if(isFile){
// 删除页面
- deleteWiki({owner: owner, repo: projectsId, projectId: project.id, pageName: item.title_sub}).then(res => {
+ deleteWiki({owner: owner, repo: projectsId, projectId: project.id, pageName: title}).then(res => {
if(res && res.message === "204"){
// 递归过滤相同key值的节点,执行删除操作
const menuListByDel = findSameKeyByDel(menuList, key);
@@ -267,7 +267,7 @@ export default function Sidebar(props) {
projectId: project.id,
pageName: '_Sidebar',
title: '_Sidebar',
- message: '',
+ commit_message: '',
content_base64: Base64.encode(content)
}).then(res => {
if (res && res.message === "200") {
@@ -303,18 +303,20 @@ export default function Sidebar(props) {
e.stopPropagation();
setVisible(item);
setIsEditName(type);
- const {titleStr, title_sub} = item;
+ let title = item.title.trim();
+ const isFile = title.startsWith('[[') && title.endsWith(']]');
+ title = isFile ? title.substring(2,title.length-2) : title.substring(2, title.length);
type === 2 && getWiki({
owner: owner,
repo: projectsId,
- pageName: title_sub,
+ pageName: title,
projectId: project.id
}).then(res => {
if (res && res.message === "200") {
setWikiContent(res.data.md_content);
}
})
- setMenuName(titleStr);
+ setMenuName(title);
}
// 新增子目录 或者 重命名目录
@@ -327,8 +329,9 @@ export default function Sidebar(props) {
setAddMenuError("不能仅输入空格");
return;
}
- if (isEditName === 2 && /^-/.test(menuName)) {
- setAddMenuError('不能以-开头');
+ const regEn = /[\\/:*?"<>|[\]-]/g;
+ if (regEn.test(menuName)) {
+ setAddMenuError('不能有特殊字符: \\ / : * ? \" < > | [ \] -');
return;
}
if(!isEditName){
@@ -353,15 +356,14 @@ export default function Sidebar(props) {
}else{
// isEditName 1 编辑目录名称 2编辑页面名称
const titleToJudge = isEditName === 2 ? `[[${menuName}]]` : `- ${menuName}`;
- const {key, titleStr, title_sub} = visible;
- // 判断是否有修改名称
- if(titleStr === menuName){
+ const {title, key} = visible;
+ if(title.trim() === titleToJudge){
setAddMenuError("请修改名称");
return
}
// 找兄弟节点
const list = findBrotherNodesByKey(menuList, key) || [];
- if(list.map(item=>item.titleStr).includes(menuName)){
+ if(list.map(item=>item.title.trim()).includes(titleToJudge)){
setAddMenuError("不能与同级目录名称相同");
return
}
@@ -379,16 +381,17 @@ export default function Sidebar(props) {
})
if(isEditName === 2){
// 编辑页面名称-> 修改wiki
+ const oldTitle = title.substring(title.indexOf('[[')+2, title.indexOf(']]'))
updateWiki({
owner,
repo: projectsId,
projectId: project.id,
// 原名称
- pageName: title_sub,
+ pageName: oldTitle,
// 现名称
title: menuName,
content_base64: wikiContent,
- message: '',
+ commit_message: '',
}).then(res=>{
if(res && res.message === '200'){
// 修改wiki名称接口请求成功,更新sidebar
diff --git a/src/forge/Wiki/components/uploadWiki/index.jsx b/src/forge/Wiki/components/uploadWiki/index.jsx
index 30cfe492c..4113752dd 100644
--- a/src/forge/Wiki/components/uploadWiki/index.jsx
+++ b/src/forge/Wiki/components/uploadWiki/index.jsx
@@ -59,8 +59,10 @@ export default function UploadWiki(props) {
message.error('只能上传md、txt文件');
return false;
}
- if (/^-/.test(file.name)) {
- message.error('文件名不能以-开头');
+
+ let regEn = /[\\/:*?"<>|[\]-]/g;
+ if (regEn.test(file.name)) {
+ message.error('文件名不能有特殊字符: \\ / : * ? \" < > | [ \] -');
return false;
}
@@ -84,7 +86,7 @@ export default function UploadWiki(props) {
projectId: project.id,
pageName: '_Sidebar',
title: '_Sidebar',
- message: '',
+ commit_message: '',
content_base64: Base64.encode(treeToMd(sidebarList))
}).then(res => {
if (res && res.message === "200") {