From 48c4b64b2bebed4335c45806a16c1d4b4cf72b9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E6=80=9D?= <2897217417@qq.com> Date: Thu, 4 Aug 2022 09:07:48 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=AF=B9=E5=BB=BA=E6=9C=A8=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E7=9A=84webhook=E7=89=B9=E6=AE=8A=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/forge/Component/DeleteModal/Index.jsx | 21 +++----- src/forge/Settings/Webhooks/Index.jsx | 59 +++++++++++++++++------ src/forge/Settings/Webhooks/Index.scss | 9 ++++ src/forge/users/InfosUser.js | 6 +-- 4 files changed, 63 insertions(+), 32 deletions(-) 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/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 { > - 新建 + 新建 )} - - 排序 + + 排序 From 40e88d95d8b336a58a94a2994e3718dd79392a4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E6=80=9D?= <2897217417@qq.com> Date: Thu, 4 Aug 2022 14:06:28 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=BC=95=E6=93=8Etab=E4=BB=85=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86=E5=91=98=E5=8F=AF?= =?UTF-8?q?=E8=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/forge/Main/Detail.js | 1 + src/forge/Main/sub/DetailBanner.jsx | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/forge/Main/Detail.js b/src/forge/Main/Detail.js index 69f2098b8..7bac26181 100644 --- a/src/forge/Main/Detail.js +++ b/src/forge/Main/Detail.js @@ -664,6 +664,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 ?
  • {/* */}