diff --git a/src/forge/Component/DeleteModal/Index.jsx b/src/forge/Component/DeleteModal/Index.jsx
index f12b8ea86..008efdbf6 100644
--- a/src/forge/Component/DeleteModal/Index.jsx
+++ b/src/forge/Component/DeleteModal/Index.jsx
@@ -3,29 +3,22 @@ import { AlignCenter } from '../layout';
import { Button } from 'antd';
import Modals from '../PublicModal/Index';
-function DeleteBox({
- visible ,
- onCancel ,
- onSuccess ,
- title ,
- subTitle,
- content
-}) {
+function DeleteBox({visible, onCancel, onSuccess, title, subTitle, content}) {
return(
-
- }
- onCancel={onCancel}
+ }
+ onCancel={onCancel}
visible={visible}
>
-
{content}
-
删除后未来事件将不会推送至此Webhook地址:{subTitle}
+
{content}
+
{subTitle}
)
diff --git a/src/forge/Main/Detail.js b/src/forge/Main/Detail.js
index f964b1060..c87bb57b9 100644
--- a/src/forge/Main/Detail.js
+++ b/src/forge/Main/Detail.js
@@ -668,6 +668,7 @@ class Detail extends Component {
urlFlag={urlFlag}
showNotification={this.props.showNotification}
current_user={current_user}
+ isManager={isManager}
/>
}
diff --git a/src/forge/Main/sub/DetailBanner.jsx b/src/forge/Main/sub/DetailBanner.jsx
index de3008f26..a56f371d9 100644
--- a/src/forge/Main/sub/DetailBanner.jsx
+++ b/src/forge/Main/sub/DetailBanner.jsx
@@ -5,7 +5,7 @@ import { numFormat } from 'educoder';
import QuitBox from './quit';
import axios from 'axios';
-function DetailBanner({ history,list , owner , projectsId ,showNotification , url , pathname , state , urlFlag , projectDetail , platform ,open_devops ,current_user }){
+function DetailBanner({ history,list , owner , projectsId ,showNotification , url , pathname , state , urlFlag , projectDetail , platform ,open_devops ,current_user, isManager }){
const [ menuName , setMenuName ] = useState(undefined);
const [ visible , setVisible ] = useState(false);
useEffect(()=>{
@@ -83,8 +83,9 @@ function DetailBanner({ history,list , owner , projectsId ,showNotification , ur
:""
}
+ {/* 引擎仅对当前仓库管理员可见 */}
{
- item.menu_name === "devops" ?
+ item.menu_name === "devops" && isManager ?
{/* */}
diff --git a/src/forge/Settings/Webhooks/Index.jsx b/src/forge/Settings/Webhooks/Index.jsx
index 1cc171c47..3be76bd3f 100644
--- a/src/forge/Settings/Webhooks/Index.jsx
+++ b/src/forge/Settings/Webhooks/Index.jsx
@@ -1,9 +1,8 @@
import React, { useEffect, useState } from 'react';
-import { Banner , FlexAJ } from '../../Component/layout';
+import { Banner , AlignCenter } from '../../Component/layout';
import DeleteBox from '../../Component/DeleteModal/Index';
import './Index.scss';
-import { Button , List, Pagination } from 'antd';
-import { Link } from 'react-router-dom';
+import { Button , List, Pagination, Modal, Tooltip } from 'antd';
import axios from 'axios';
const limit = 15;
@@ -13,7 +12,10 @@ function Index(props) {
const [ total , setTotal ] = useState(1);
const [ deleteId , setDeleteId ] = useState(undefined);
const [ visible , setVisible ] = useState(false);
- const [ url , setUrl ] = useState(undefined);
+ const [ editVisible , setEditVisible ] = useState(false);
+ const [ editId , setEditId ] = useState(undefined);
+ const [ deleteWebHookModTitle, setDeleteWebHookModTitle] = useState(undefined);
+ const [ deleteWebHookModSubTitle, setDeleteWebHookModSubTitle] = useState(undefined);
const { owner , projectsId } = props.match.params;
@@ -29,15 +31,21 @@ function Index(props) {
params:{page,limit}
}).then(result=>{
if(result && result.data){
+ const reg1 = new RegExp("https://(.*?)jianmuhub.com(.*?)");
+ const reg2 = new RegExp("https://jianmu.gitlink.org.cn(.*?)");
+ result.data.webhooks.map(item=>{
+ item.isJianMu = reg1.test(item.url) || reg2.test(item.url);
+ })
setData(result.data.webhooks);
setTotal(result.data.total_count);
}
}).catch(error=>{})
}
- function deleteFunc(id,url) {
- setDeleteId(id);
- setUrl(url);
+ function deleteFunc(webhook) {
+ setDeleteWebHookModTitle(webhook.isJianMu ? '请谨慎删除此Webhook' : '删除Webhook');
+ setDeleteWebHookModSubTitle(webhook.isJianMu ? '该Webhook由流水线创建, 删除此Webhook后, 将导致本仓库相关流水线失效。确定要删除此Webhook?' : `删除后未来事件将不会推送至此Webhook地址: ${webhook.url}`);
+ setDeleteId(webhook.id);
setVisible(true);
}
@@ -65,16 +73,37 @@ function Index(props) {
props.history.push(`/${owner}/${projectsId}/settings/webhooks/new`)
}
+ function gotoEditWebhook(webhook){
+ if(webhook.isJianMu){
+ setEditId(webhook.id);
+ setEditVisible(true);
+ }else{
+ props.history.push(`/${owner}/${projectsId}/settings/webhooks/${webhook.id}`);
+ }
+ }
+
return(
-
setVisible(false)}
onSuccess={onSuccess}
- title="删除Webhook"
+ title={deleteWebHookModTitle}
content="您确定要删除此Webhook吗?"
- subTitle={`删除后未来事件将不会推送至此Webhook地址:${url}`}
+ subTitle={deleteWebHookModSubTitle}
/>
+ {setEditVisible(false)}}
+ title="请谨慎编辑此Webhook"
+ width={"520px"}
+ wrapClassName={"deleteBox"}
+ centered={true}
+ onOk={()=>{props.history.push(`/${owner}/${projectsId}/settings/webhooks/${editId}`)}}
+ >
+ 您确定要编辑此Webhook吗?
+ 该Webhook由流水线创建, 编辑此Webhook后, 将大概率导致本仓库相关流水线失效。确定要修改此Webhook?
+
Webhooks(网络钩子)
@@ -87,11 +116,11 @@ function Index(props) {
{data.map((i,k)=>{
return(
-
- {i.url}
+
+ {i.isJianMu ? {i.url} : i.url}
-
-
+
+
)
diff --git a/src/forge/Settings/Webhooks/Index.scss b/src/forge/Settings/Webhooks/Index.scss
index 6c166a730..0c4dc0e62 100644
--- a/src/forge/Settings/Webhooks/Index.scss
+++ b/src/forge/Settings/Webhooks/Index.scss
@@ -15,6 +15,12 @@
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
+ cursor: default;
+ &.spanBox{
+ display: inline-block;
+ max-width: 100%;
+ overflow: hidden;
+ }
}
}
}
@@ -168,4 +174,7 @@
}
}
}
+}
+.editWebhookModalTitle{
+ justify-content: center;
}
\ No newline at end of file
diff --git a/src/forge/users/InfosUser.js b/src/forge/users/InfosUser.js
index 072b272cb..54ed5c2fe 100644
--- a/src/forge/users/InfosUser.js
+++ b/src/forge/users/InfosUser.js
@@ -196,15 +196,15 @@ class InfosUser extends Component {
>
-
新建
+ 新建
)}
-
- 排序
+
+ 排序