ihVPg=%&G|m;b!bu`x&`zgl)-A`?Ac
z=s^yLe(5OlrJ*bDe4>!CMr98#pOT5vZ$}W77jl5Zr4Op4XD~V30$1GCmG79N(pAgu
zMS#ANZ^y&2eHt>i4PABTkMbRRRJQ7lPVCf>Z^y&5{mTPaeP?05V<(U>5PUXX8OZbx
zUUg?hzO(&Ifkfa8r2DJk%XjzW1Jpr-RGdgc>zF!ds;mLP{K4fE_=!H-{}XOco9
zrRCIT!&wvBTJr{J#@Gg!Th|014eUi0?Gk|4OO!$8H4K)4Clk~E^t1OE>Pu2GsnMYf
z0G3z!Kg#=pjjDwg2xp6R)sSrTUd=*${q|RWC1u8*e4M(MH5One?
zJ30;nK$8#J(*+Uf%6?*)?KjqqFRy~~WD>Rw_slF9q)iHvu){MZ?nyEc^C+=a@gIwN
z8h!)A)~FT(z^=ZTu`rRhpwqE1(9g<)hv`3-bo)
zSY*<4WD>gtr-tA|
zJnyF7JusNwrzRfA(HVRg;na^91ZwNSl(0`SCLlF(D&R+;dDoVdLg!G=qWnP`KM5n7
z$ZZSC%_Wc~x4@HPCY{AL0>T)@a?|hgY8&7SkDgOLarmtq*rZa-@A0ok)ZX7#0p;lB3OupXnW&!^P1HE9%<`S5QUwu@{Q
z1+$n`5J(FqklY%WMIyH>FVdOB^CWNXwiYvqQTMB-%!MmjW`Cl*KF!YWt$6`D(I<^X
zmMVBDhJK{}V>V9eB*rlOA
z%--d*M#muksx2;q+EN5*umF%wXq*f)LngUs=0m;9onjKx=oO{``1v-HS;Lf^2@^m!
zz4kYtiTj1E*zdvkw7oOj-DV9XaQbw5LL%&JSXZE(hr8dN*8e-C5
zcm7OT*x2Gg>M&1IFl@xaBFVzN7nz02c1s|iTyimtDk{#I>`kvd0~`BxOPJ>?tVM^i*Y;&yd7L?mh*1qHxxPDPArpyMdq2Db>_^YrT^%eNGIm?8WG_J|yicmAh2^tO%IW{L*PqR)
z0&ra^ShrasEem`NZZi#iY}11BuFsh7(djjoWBT|6_N
zQ(F%|o_l)EB!7Say}E0w$V~I6&|@sGArK!t?(CfYE7q-s4|;dUDhI}>aE-?6K#qFi
zNqkW_$^kM7lSu?=b0Hv|*fbS{NeB{U+(C3R2AMla2CXu4;a}4L+*gS*dt~AHFe>Tg
zMqYH?D^Fo|y^lFa6LEuQW>RRE#PJwRJa1^5p99jj-h2**GpS&0XX${g8D*_zOBK$S
z@ViwbXw0?6!lccEyYu&?lbTv#7FGfrNNU_Z74UhIL^qY3fnQSeqUE&(>3E2(CLrbFGHzO?I(N$$+7L%#_t0YNRvokPY-;ME{V
z#H3AyfOK+m8#1Y$rDjYrb9P>&;XiKL2A-Ig7`L#*B*jY;-tO0UzG~?s8yWpKrZ0l#
zis~E|t?AwYk9_#1PXW}6#Ct3kA|~qbIKd1`ygW9lDPeRg6r@uow!zUTHv(xZ%gyIU
z0+N@LW=bx?Ie#*b3c<<-$bsj9qbp1R-LfBm===|?e~s6bBu6Jr1&9~3_Bp45V2qXX
z5lB>}EQm>`B1p5xOkfrXNC89ix`yH3V9Q?H*;>vmP1J9AyG}%yWu6p41p;*ICjhj1
zS0_BS`JEt&dG=+OgMCFnBuwQL^HBOkIZ{ngDQql6Zl_HWkO-iyxTthytzg+YMZhyw
zi8s0Y$)yar@`{yo6(E|#Sgh~R0(c~e(HLkf_q_MAt6&O?eEmF@FR90w|5&t?+LkPI
zYp_g0a{F+g0OLM=(li8VJcG22Kyq>mWhPfYCcgkgzGBYQH3BM#t}2klpihz*nf3SI
zc>#vg>G+KTHDU20UyYP>LgeTHGS8B>0#X@#Fz|8y(e3jH(wwovq;37ZDmRCKV-I7X
zk<5FOmf=)d#y0bb(6ekC-Cw(9`a+n7iRVZ!0_gtrtMQgrZ;n|@?nCu+VMiPgDc1S?
zOJz+hu~RJ;{i+KE>5R!o!W@)aC*BC?L?(shkL>6cGReu!z+>jfz@7J)yj+BfFc+$a
z>qp3i=-Al+31c*m3Ye11B8#ZrtQk;Zo1UAhl2s_T5BdvW(wUQIAd|*3Ky=51=`un@
z6DFDDY}t|({*`xfgWKq?X@Sb`t~sBB(OJ1rESPE*OEgcbZyB+i`y|$wUfj7U22k8{{Jl9lmMxHpbD6|G9QX{j7Kr$wU@1nr0=;jEQ%P8?C;hfL7BRFe9E1WsLHHS&Jz3~s1
zsoN7Jp>$lhXMgca8NXnbNXMpbUKHd>bWF;T$dfkocjeEd^QO*1kR~ud+m%VGx47I4
z6emTMqcJMREZb*!lVE%e){Bm=85aZTeO%rDa>M_e;S($52@_>O5bg~iS8^d^=JQ(B
zQu?~P$I2pNR270$jlQ(LuKF&x{rt>0OZztoC0VhGZ6XRig;O3P9qxuE+Cb_x`IGzodw78vjDxYgPEiY
zRd3>T0v?r1f&aFXCp|BupMs>lH5kR-)5JdO_02V9rv^0
zqBa7li20
z3Ky}G4_R5p(g3?K^gx#fY1JK1;lXnY&HDlA;GY{~&Z;e!_zvHV?PpNkpzv{VseSD=hVdVB(?8i86%
zOe$No?0Iaq*n#bt^
z)(k(po@L*w(33_HlX`b7ib{UHe0Cz8ehvp4kG1tz}@cVkF6F~7}w3m;P_Xv>Nm;54GySgkDMb0;x%I~Upsmq`FJ
z-N%n@s?8gu-)&m6BAJ2f`|+MVm2kZ$<$6vCkP=P@5=u(@1y|B0BZF46Hy|`=bd1yQ
z;nIcr#H$M-2$q_JlGE%S`;{e%xGG60L@G+(al)A9JM#wV$qj2J4kTeUin}hA&OrC@
zAbUml3Zs+*Dqs=wiO(#jPvdd+aY*-|*#2zkiLZF}2x~-SrTB2VJq{hR&X^_JRLbUk
z%rf9#0hD3lT7n?)s4~&h3+g6tN|ZN9)ajY+8`^pXhaSft|DvhI4`BdhA37VjY*ErZ
zGm4hvIoVQEWyU9n8|i_pa-0;EQz$dHel$kAxj^SJdHDoHz{=i7bHQI%LMD^??ZUcA
zmwA=MIFR3$r#su1_7Cs70Dqs_nvRlV@CS7<#H`S7r13j#kDL$Z+KdCNqWyb@hoA@9
z>432-&QtPXnjY7w!Dkw!3c#;H%EkYKnbhj`3pS=aRhosMUgNEf55jc
zN=7SB8`ttPl-<4qpDq6uhXhDA>_2y`I~NK6P%@DmOWTN1dy!ctjWYBcdTf|}i-xS}
zM|1xADfKP)=RfWIdK^+9(a;~+_Qt3&sfvg3XH*vvhvLBsVZvM}s0Vki^{i((O!v?w890u;eWzz`vVCI|{`={8*v(stT;?;XGIEcbl(
z+>na99x1PyzqdyC+oE-NVC2#=jC#+BI`*GgmI-3
zob}QJVr7BTiR{xoGKWd}n
zIowglbGo}~$M<Ln{dBm&x3g(X{Zz(zYu&rk`!s>T+gCknFK$
zTyJ!>31uCPHS(&nPs!hr8d7z>1cyy3sf&MabqQ4ztC?uy2#3TK+1d=y*(#v68n&Ew
zYOXUiq}HYaOvJ2eE2`%sRMD`v5d&VvH;Q~rtNNs;jHm)Buaw}8
zcT37)(|IRP5b*UAa&Y2TqCRWO4uI?KEx_PjyHsHcvdb55c@j8vV`kR*R|KgOA&tlA
zMmbWNJSiN}Xis~yBr_vGm)<%AG;x2;Mrt?-AzgY-RDF*>SArMbzy-ZByD%g_HPGg0
zoVw@qD~3cVKw3zAl^>)@cwtZ9RRaw%)%D8|(1+-h)nrZnWc`g@(_My;W_&puD%N0~
z_4;K6S03>}DIdhjCj^K3uy#7$hD(!<(U<~k$&dncl~Ynecnjr8W@i$b&i&U`M@;SY
zcS^AMp<-A;lq#8;kWvVqqh|uZ9Y4f1gtslYp}_K|X!wujQ{iO^eNH<7T!1ny9T2r5(iAHe?~d40E^A&n&^(Xs>`_r{D1TwQO}1-dRQNgR7b4jQoFwR4vQGPRJi
z4w;#&F%jT9FRwzs5w3vh8)o(-fY&vY6wKX;BP3yX!_Eo_luOmkm+}=1ImUB`PU4QPLq_Lv%_~h>Qsa38x_)3jGFRL!E#{34rL#
zw?0~gf3A&IE93o9)Xel}A|O;~dviue;}DW{+#9#X*OQz!*f)*etla{0QxlIuG6IW~
zNyx+&^;O3zh{pW+Z3z$mo=h#iIuMj^V~TCoG;LsLs|3>cj)F5c1t|_x)aab4X;ijH
zL_J0^+Pny-Hk(eo=pQXi21EE@?fHozVThyJp7T;ZkA#q>jBH5z8JpTBQ3~0$CMOZgr@+wmr
z37HRf+$_Rb#ksx?E@j+pS(S9~7!7FyhZIp#GNzDPnB7sk@=r#V)`1>1O~6$P;wuEC
zpe2vs%6~vB&aT(2Qd|mPqnP(W(2fu!1^v{E^dv-tB-EYW|uWwZQ7~3pT`Ljr2rpq&aienWIQ_Vc5QA+
z(Jf9#fw33@V&3j6VvgE#j-3k5Wp?
z3TYBT8fPGF+Lq!cB@@@3XJL7h`33{)(^&zW`qdmPI3rp&di;4ThrF)WW;SH=2<6(D
zdBylDe@sY8O%*_zjF85nPa>zC1c|#?i%|>69dSz1ZGnnd3NU|G4(82_Lb~vJ6Y7;x
z*c~JWT6FSZnEdDNkjb%gQ5Aq3_u4Gx*4u3%K^W4$oHtvqgkqF6FAga%ISlLP=i$i1
z!cmRt*pyXU$L_1f?)%Y=`=O*UYK>>E#hTmNfeb!r%E1Nv9SoI(w`UIc=C+T;n;*b=
zD!^3~6z6cjk1xu@)Sf7$+kO#-#2s}Uq>xDlH7V!6)EE`joKI>s=9UT4p@$Ss@#-aA_{6bPPBGuEaag+tB}N?gjfc&}Es{eKj+s#sM6OI4+h!oG
z$)cpGJqQVl_XDJ)?as#3JF0&8lJUqy4l{r*y4fgamM^AH$i$3U@JT0|o~vUAeOM$6
z&dbhe&27ylG&j6O`CaTZElC7^`(XqLmE=RR{o)u!tdMom4n1Zq$J*`0Y*{4)#)B1a
zdJIwwT<(kPxvjZrNd59Tyv9?93u)TqB6Jx@o8wY|xX>2Fb_XMX%FQhXm{XUFVgcBY
z!d!VIfM|g*ha7L7(Hk>JNv#;&6r?$Q@=y3p9zR@2hxekA@Q#ZC{4IVnGq>T6*Boe?
z?8Z_hC3a(Kpsey>tkaE{odU$hv-H53WfTrqQUD3f?R`AZJKRYgF$I-`km!bm)Q|$z
z7)Xj3uRiHTs>Mj`>ahZF>=C+3_%SYG)ei(#adzUq2?hHJkj!y)LutY}l)0gjR+EzO
z*^=qFe0&8vd)4B2Y+pRIHL(NMvqXcJQKGnXsmi*?;t>
zB<%=yu%n(zlzNpqtE1LrS*=D1C=*PQ#Ved$54Z&xM;p}xlIgZPmzQ3v&dX!zXP?xN*r)Li=8E#)-*I^!>T2CJ
zQuXobdrZb{)#I600LfR7@_#yDsAURMUuX;-A8mco2Dm6Sq@}+p;lqP+UIbETC0ic6
zZ))89_(k7L1^Mgi~t
z8|I~kboUcO*H!0pi|PJFx_8lTN$cAPy971ygwjsfo|`7o+f6@+0{S9TVlj@FE5Jcv
zRRyCOn<|9*FeL?MXH1xG!>+DINFM?IPMmUE`egAZ`8?c+Py4`H11a(_m>=ZK2giPt
z`nKI=#F-xVW7ZFGkUUr75Y(9!BTW1tDPOSnws`ehWSoKq-gF$-#3^&f)4Y<@Vr;
z!pfo)XOfcEZc6XCxmmf7W|-_n2Qu;|$jpULEPxjR;w6jzSTlPLjeZ@bXJ$|cP*(%@
z&pk=>r-ror8Tp0X#p2tgl4u+%2-yCqggtm?8N@zY$Rri#gbav60bmIKxXJn5`9v&e
zTb;GD?`PP{;b4LbWYDzJ|(|?rHc6?fTzEBX|
zZmh2=ekI9;ChIgQ@1aU30gp2|u0VU7o3E6()BjHeAB$y0%zo>|%U
zsZm5=9_BnuHBAllkW9`zszr}%$pS*#TEcl+h`tH>llI^ZqN83_TMJ80IYzAJR8pH;
zcBIK8AA44gA1cZfn8F-Q7fxzYsv0t?Qrfb2iRjyP4x%S%u`|LMs2e37J8LFfhh|1b
zyWh7F0m;tlm(La!7K^#1ICs;UUp6n)z`?yXV1wm+V51n
z6OJfIbZrklC7VYz6rYjB+zGVs*t1u{7JMqR8L?4vM;BaECD+wgi_^X_OT6>H24pP$
z|M4;DKjVo%$n*CW{~sgSkVHrQ7k=tG|Jxi~UH||907*qo
IM6N<$f-P87VE_OC
literal 0
HcmV?d00001
diff --git a/src/forge/Information/index.jsx b/src/forge/Information/index.jsx
index 33cc40bf0..e4cf7a5d5 100644
--- a/src/forge/Information/index.jsx
+++ b/src/forge/Information/index.jsx
@@ -55,6 +55,11 @@ const Main = Loadable({
loading: Loading,
});
+const Help = Loadable({
+ loader: () => import("./Pages/help"),
+ loading: Loading,
+});
+
function Index(props){
const [ data , setData ] = useState(undefined);
const [ adminUrl , setAdminUrl ] = useState(undefined);
@@ -153,6 +158,12 @@ function Index(props){
)}
>
+ {data && data.helperShow === 1 && (
+
+ )}
+ >}
(
diff --git a/src/forge/Information/index.scss b/src/forge/Information/index.scss
index f3cc17d70..d5013dc89 100644
--- a/src/forge/Information/index.scss
+++ b/src/forge/Information/index.scss
@@ -1347,6 +1347,75 @@
}
}
}
+// 帮助中心
+.zoneHelpBox{
+ .leftMenuHC{
+ width: 290px;
+ min-height: 500px;
+ overflow-x: auto;
+ &::-webkit-scrollbar{
+ display: none;
+ }
+ background-image: linear-gradient(269.73deg,#ffffff 0%,rgba(255, 255, 255, 0) 100%);
+ padding: 25px 15px;
+ .ant-tree.ant-tree-directory > .menuHcNode span.ant-tree-node-content-wrapper.ant-tree-node-selected, .ant-tree.ant-tree-directory .ant-tree-child-tree > .menuHcNode span.ant-tree-node-content-wrapper.ant-tree-node-selected{
+ color: var(--primary-color);
+ }
+ .ant-tree.ant-tree-directory > .menuHcNode.ant-tree-treenode-selected > span.ant-tree-switcher, .ant-tree.ant-tree-directory .ant-tree-child-tree > .menuHcNode.ant-tree-treenode-selected > span.ant-tree-switcher{
+ color: var(--primary-color);
+ }
+ .ant-tree.ant-tree-directory > .menuHcNode span.ant-tree-node-content-wrapper:hover::before, .ant-tree.ant-tree-directory .ant-tree-child-tree > .menuHcNode span.ant-tree-node-content-wrapper:hover::before{
+ background: var(--more-light-color);
+ }
+ .menuHcNode{
+ .ant-tree-node-selected::before{
+ background: none !important;
+ }
+ }
+ .searchHC.ant-input-affix-wrapper{
+ &:hover .ant-input, .ant-input:focus{
+ border-color: var(--primary-color) !important;
+ }
+ }
+ .searchHC .ant-input-search-icon:hover{
+ color: var(--primary-color);
+ }
+ }
+ .wikiTitleHC{
+ font-weight: 700;
+ }
+ .wikiUpdateTimeHC{
+ color:#6c7283;
+ }
+ .wikiContentBox{
+ min-height: 500px;
+ background-color: #fff;
+ padding: 20px 40px;
+ }
+ .wikiContMenuBox{
+ border-left: 3px solid #e6e8ef;
+ padding: 5px 0 5px 15px;
+ min-width: 100px;
+ max-width: 220px;
+ margin-left: 60px;
+ background-color: #fff;
+ a{
+ color:#6c7283;
+ &.current{
+ color: var(--primary-color);
+ position: relative;
+ &::before{
+ content: "";
+ position: absolute;
+ left: -18px;
+ width:3px;
+ height:30px;
+ background-color: var(--primary-color);
+ }
+ }
+ }
+ }
+}
.primaryColor{
color: var(--primary-color)!important;
}
\ No newline at end of file
diff --git a/src/forge/Wiki/api.js b/src/forge/Wiki/api.js
index 6b6ee58a1..75aade837 100644
--- a/src/forge/Wiki/api.js
+++ b/src/forge/Wiki/api.js
@@ -115,10 +115,16 @@ export function markdownToTree(markdownText){
}
lines.map((item, index) =>{
const title = item.trim();
+ const isFile = title.startsWith('[[') && title.endsWith(']]');
const node = {
+ // 带空格+[[]]或者- 标识
title: item,
children: [],
- key: undefined
+ key: undefined,
+ // 纯内容
+ titleStr: isFile ? title.substring(2, title.length - 2) : title.substring(2, title.length),
+ // 是否是wiki文件
+ isFile: isFile
}
// level:空格的个数(层级)
const level = item.search(/\S/);
@@ -200,4 +206,51 @@ function readList(list, readChildren){
list.push(item.title)
readList(list, item.children)
})
+}
+
+export function generateList(list) {
+ const dataList = [];
+ generate(list);
+
+ function generate(data){
+ for (let i = 0; i < data.length; i++) {
+ const node = data[i];
+ const { key, titleStr } = node;
+ dataList.push({ key, title: titleStr });
+ if (node.children) {
+ generate(node.children);
+ }
+ }
+ }
+
+ return dataList;
+};
+
+export const getParentKey = (key, tree) => {
+ let parentKey;
+ for (let i = 0; i < tree.length; i++) {
+ const node = tree[i];
+ if (node.children) {
+ if (node.children.some(item => item.key === key)) {
+ parentKey = node.key;
+ } else if (getParentKey(key, node.children)) {
+ parentKey = getParentKey(key, node.children);
+ }
+ }
+ }
+ return parentKey;
+};
+
+export function findFirstWiki(list){
+ for (let index = 0; index < list.length; index++) {
+ const element = list[index];
+ if (element.isFile) {
+ return element;
+ }else if (element.children.length) {
+ let result = findFirstWiki(element.children);
+ if (result) {
+ return result;
+ }
+ }
+ }
}
\ No newline at end of file
From 6938de1c63e259eeb9bde03ba0850336a40b2f76 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B0=A2=E6=80=9D?= <2897217417@qq.com>
Date: Mon, 17 Jul 2023 15:37:37 +0800
Subject: [PATCH 04/17] =?UTF-8?q?=E7=BC=96=E8=BE=91wiki=E5=86=85=E5=AE=B9?=
=?UTF-8?q?=EF=BC=8C=E9=BC=A0=E6=A0=87=E8=87=AA=E5=8A=A8=E8=81=9A=E7=84=A6?=
=?UTF-8?q?=E5=88=B0=E6=A0=87=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/forge/Wiki/EditWiki.jsx | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/forge/Wiki/EditWiki.jsx b/src/forge/Wiki/EditWiki.jsx
index d2fbf2152..1daf28d0d 100644
--- a/src/forge/Wiki/EditWiki.jsx
+++ b/src/forge/Wiki/EditWiki.jsx
@@ -332,6 +332,7 @@ export default Form.create()(({ form, history, showNotification, projectDetail,
placeholder={"请输入标题"}
className="contact-input"
maxLength={50}
+ autoFocus
/>
)}
@@ -343,6 +344,7 @@ export default Form.create()(({ form, history, showNotification, projectDetail,
initValue={content}
onChange={onContentChange}
className="mt20 wikiMEDEditor"
+ isFocus={false}
>
{getFieldDecorator('md_content', {
rules: [{ required: true, message: "请输入wiki内容" }],
From 1bfc8fad56573ca24b78687abd1750dc801e0ba8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B0=A2=E6=80=9D?= <2897217417@qq.com>
Date: Tue, 18 Jul 2023 13:39:51 +0800
Subject: [PATCH 05/17] =?UTF-8?q?=E5=8F=91=E8=A1=8C=E7=89=88=E5=90=8D?=
=?UTF-8?q?=E7=A7=B0=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/forge/Main/version/version.scss | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/forge/Main/version/version.scss b/src/forge/Main/version/version.scss
index 69d3734ca..ee7d527e0 100644
--- a/src/forge/Main/version/version.scss
+++ b/src/forge/Main/version/version.scss
@@ -152,7 +152,6 @@
justify-content: space-between;
width: 100%;
height: 18px;
- line-height: 18px;
margin-top: -5px;
}
From 2bd6ebe7c28fe4e60f0e64581ade2646f90589a5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B0=A2=E6=80=9D?= <2897217417@qq.com>
Date: Tue, 18 Jul 2023 13:43:32 +0800
Subject: [PATCH 06/17] =?UTF-8?q?=E9=87=8C=E7=A8=8B=E7=A2=91=E8=AF=A6?=
=?UTF-8?q?=E6=83=85=E9=A1=B5=E6=B7=BB=E5=8A=A0=E9=87=8C=E7=A8=8B=E7=A2=91?=
=?UTF-8?q?=E6=8F=8F=E8=BF=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/forge/Order/MilepostDetail.jsx | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/forge/Order/MilepostDetail.jsx b/src/forge/Order/MilepostDetail.jsx
index 98714591d..f7c6603ae 100644
--- a/src/forge/Order/MilepostDetail.jsx
+++ b/src/forge/Order/MilepostDetail.jsx
@@ -186,6 +186,8 @@ function MilepostDetail(props){
{history.push(`/${owner}/${projectsId}/issues/${mileId}/new`)}} checklogin className="operateButton ml20">+ 创建疑修