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 { > - 新建 + 新建 )} - - 排序 + + 排序