This commit is contained in:
caishi 2023-07-20 18:04:12 +08:00
commit 16e64b60bc
4 changed files with 30 additions and 15 deletions

View File

@ -236,7 +236,7 @@ function ProjectSource(props) {
</div> </div>
{adminUrl && <Button onClick={()=>{wiki && window.open(`${data && data.gitlinkProject.wiki_url}/${wiki.titleStr}/${wiki.key}`)}} className='zone_apply_button' style={{width: '90px', height: '34px'}}>配置内容</Button>} {adminUrl && <Button onClick={()=>{wiki && window.open(`${data && data.gitlinkProject.wiki_url}/${wiki.titleStr}/${wiki.key}`)}} className='zone_apply_button' style={{width: '90px', height: '34px'}}>配置内容</Button>}
</FlexAJ> </FlexAJ>
{wikiDetail.md_content && <RenderHtml className="wikiContentHC editor-content-panel mt20" value={ Base64.decode(wikiDetail.md_content) } url={history.location}/>} {wikiDetail.md_content && <RenderHtml className="wikiContentHC editor-content-panel mt20 imageLayerParent" value={ Base64.decode(wikiDetail.md_content) } url={history.location}/>}
</LongWidth> </LongWidth>
{wikiContMenu && wikiContMenu !== "<ul></ul>" && <Affix offsetTop={80}> {wikiContMenu && wikiContMenu !== "<ul></ul>" && <Affix offsetTop={80}>
<div id="wikiContMenuBox" className='wikiContMenuBox font-15' dangerouslySetInnerHTML={{ __html: wikiContMenu }}></div> <div id="wikiContMenuBox" className='wikiContMenuBox font-15' dangerouslySetInnerHTML={{ __html: wikiContMenu }}></div>

View File

@ -15,6 +15,7 @@ import { IsPC } from 'educoder';
import "slick-carousel/slick/slick.css"; import "slick-carousel/slick/slick.css";
import "slick-carousel/slick/slick-theme.css"; import "slick-carousel/slick/slick-theme.css";
import { tempEnum } from "./tempInfo"; import { tempEnum } from "./tempInfo";
import { ImageLayerOfCommentHOC } from "../../modules/page/layers/ImageLayerOfCommentHOC";
const SourceDetail = Loadable({ const SourceDetail = Loadable({
loader: () => import("./Pages/sourceDetail"), loader: () => import("./Pages/sourceDetail"),
@ -177,5 +178,8 @@ function Index(props){
</div> </div>
) )
} }
export default withRouter((CNotificationHOC()(SnackbarHOC()(TPMIndexHOC(Index)))) export default withRouter((CNotificationHOC()(SnackbarHOC()(TPMIndexHOC(ImageLayerOfCommentHOC({
imgSelector: ".imageLayerParent img, .imageLayerParent .imageTarget",
parentSelector: ".newContainer",
})(Index)))))
); );

View File

@ -1,19 +1,19 @@
import React, { useEffect, useCallback, useState, useMemo } from 'react'; import React, { useEffect, useState } from 'react';
import { Button, Dropdown, Icon, Input, Menu, Tooltip, Select, Upload, message, Spin, Modal } from 'antd'; import { Button, Dropdown, Icon, Input, Menu, Select, message, Spin, Modal } from 'antd';
import { getImageUrl, timeAgo } from 'educoder'; import { getImageUrl, timeAgo } from 'educoder';
import cookie from 'react-cookies';
import CopyTool from '../Component/CopyTool'; import CopyTool from '../Component/CopyTool';
import Welcome from './Welcome'; import Welcome from './Welcome';
import RenderHtml from "../../components/render-html"; import RenderHtml from "../../components/render-html";
import { wikiPages, getWiki, parseSidebar, updateWiki, treeToMd } from './api'; import { wikiPages, getWiki, parseSidebar, updateWiki, treeToMd } from './api';
import { httpUrl, TokenKey } from './fetch'; import { httpUrl } from './fetch';
import './Index.scss'; import './Index.scss';
import './components/ModalFun/index.scss'; import './components/ModalFun/index.scss';
import { isArray } from 'lodash'; import { isArray } from 'lodash';
import { Base64 } from 'js-base64'; import { Base64 } from 'js-base64';
import Sidebar from './components/sidebar'; import Sidebar from './components/sidebar';
import UploadWiki from './components/uploadWiki'; import UploadWiki from './components/uploadWiki';
import axios from 'axios';
const InputGroup = Input.Group; const InputGroup = Input.Group;
const { Option } = Select; const { Option } = Select;
@ -38,9 +38,18 @@ export default (props) => {
const [addMenuError, setAddMenuError] = useState(undefined); const [addMenuError, setAddMenuError] = useState(undefined);
const [sidebar, setSidebar] = useState(undefined); const [sidebar, setSidebar] = useState(undefined);
const [defaultSelectedKeys, setDefaultSelectedKeys] = useState(undefined); const [defaultSelectedKeys, setDefaultSelectedKeys] = useState(undefined);
const [masterProtected, setMasterProtected] = useState(false);
useEffect(()=>{ useEffect(()=>{
window.scrollTo(0,0); window.scrollTo(0,0);
// master
if(projectsId && owner){
axios.get(`/v1/${owner}/${projectsId}/branches.json`, {keyword: 'master'}).then(res=>{
if(res && res.data && res.data.total_count === 1){
setMasterProtected(res.data.branches[0].protected);
}
})
}
}, []) }, [])
useEffect(()=>{ useEffect(()=>{
@ -292,7 +301,7 @@ export default (props) => {
<div className="wiki-nav"> <div className="wiki-nav">
{/* 读sidebar转换成目录树 */} {/* 读sidebar转换成目录树 */}
<Sidebar fileList = {fileList} changeitem={changeitem} projectsId={projectsId} owner={owner} project={project} setReload={setReload} sidebar={sidebar} history={history} permission={permission} defaultSelectedKeys={defaultSelectedKeys} fileArrInit={fileArrInit}/> <Sidebar fileList = {fileList} changeitem={changeitem} projectsId={projectsId} owner={owner} project={project} setReload={setReload} sidebar={sidebar} history={history} permission={permission} defaultSelectedKeys={defaultSelectedKeys} fileArrInit={fileArrInit} masterProtected={masterProtected}/>
</div> </div>
</div> </div>
@ -321,7 +330,7 @@ export default (props) => {
{permission && <Button type="primary" onClick={goEdit}>编辑</Button>} {permission && <Button type="primary" onClick={goEdit}>编辑</Button>}
</div> </div>
{itemDetail&&itemDetail.md_content&&<RenderHtml className="wiki-content-detail editor-content-panel" value={ itemDetail && Base64.decode(itemDetail.md_content) } url={history.location}/>} {itemDetail&&itemDetail.md_content&&<RenderHtml className="wiki-content-detail editor-content-panel imageLayerParent" value={ itemDetail && Base64.decode(itemDetail.md_content) } url={history.location}/>}
</div> </div>
</div> </div>
</div > </div >

View File

@ -12,7 +12,7 @@ const {DirectoryTree, TreeNode} = Tree;
// wiki // wiki
export default function Sidebar(props) { export default function Sidebar(props) {
const {fileList, changeitem, owner, projectsId, project, setReload, sidebar, history, permission, defaultSelectedKeys, fileArrInit} = props; const {fileList, changeitem, owner, projectsId, project, setReload, sidebar, history, permission, defaultSelectedKeys, fileArrInit, masterProtected} = props;
const {location:{pathname}} = history; const {location:{pathname}} = history;
const [initMenuList, setInitMenuList] = useState(undefined); const [initMenuList, setInitMenuList] = useState(undefined);
const [menuList, setMenuList] = useState(undefined); const [menuList, setMenuList] = useState(undefined);
@ -66,9 +66,10 @@ export default function Sidebar(props) {
</a> </a>
</Menu.Item> </Menu.Item>
<Menu.Item> <Menu.Item>
<a onClick={(e) => { deleteFileModal(e, title, isFile, item) }}> {
删除 masterProtected && item.children.length ? <a onClick={() => { message.error("由于master分支设置了分支保护不允许删除wiki") }}>删除</a> :
</a> <a onClick={(e) => { deleteFileModal(e, title, isFile, item) }}>删除</a>
}
</Menu.Item> </Menu.Item>
</Menu> </Menu>
}; };
@ -81,9 +82,10 @@ export default function Sidebar(props) {
</a> </a>
</Menu.Item> </Menu.Item>
<Menu.Item> <Menu.Item>
<a onClick={(e) => { deleteFileModal(e, title, isFile, item) }}> {
删除 masterProtected ? <a onClick={() => { message.error("由于master分支设置了分支保护不允许删除wiki") }}>删除</a> :
</a> <a onClick={(e) => { deleteFileModal(e, title, isFile, item) }}>删除</a>
}
</Menu.Item> </Menu.Item>
</Menu> </Menu>
}; };