From c801666b625ccf7067069854d194ef6257e442fb Mon Sep 17 00:00:00 2001 From: caishi Date: Fri, 5 Nov 2021 18:17:27 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E5=BC=B9=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/UrlTool.js | 12 +++++++++ src/common/educoder.js | 1 + src/forge/Head/Engineer.jsx | 30 +++++++++++++++++++++++ src/forge/Head/Header.js | 46 +++++++++++++++++++++++++++-------- src/forge/Head/teacherQQ.png | Bin 0 -> 4634 bytes src/forge/Main/list.scss | 3 ++- 6 files changed, 81 insertions(+), 11 deletions(-) create mode 100644 src/forge/Head/Engineer.jsx create mode 100644 src/forge/Head/teacherQQ.png diff --git a/src/common/UrlTool.js b/src/common/UrlTool.js index 4c3911cd4..f75fbf70d 100644 --- a/src/common/UrlTool.js +++ b/src/common/UrlTool.js @@ -24,6 +24,18 @@ export function getImageUrl(path) { return `${path}`; } + +export function openNewWindow(url) { + let link = document.createElement('a') + link.target = "_blank" + document.body.appendChild(link) + link.href = url + let evt = document.createEvent("MouseEvents") + evt.initEvent("click", false, false) + link.dispatchEvent(evt) + document.body.removeChild(link); +} + export function numFormat(num, digits){ let d = digits || 1; var si = [ diff --git a/src/common/educoder.js b/src/common/educoder.js index 1a063d823..5191bb4f5 100644 --- a/src/common/educoder.js +++ b/src/common/educoder.js @@ -7,6 +7,7 @@ export { getImageUrl as getImageUrl,getImage as getImage, getmyUrl as getmyUrl, getRandomNumber as getRandomNumber, getUrl as getUrl, publicSearchs as publicSearchs, getRandomcode as getRandomcode, getUrlmys as getUrlmys, getUrl2 as getUrl2, setImagesUrl as setImagesUrl , getUploadActionUrl as getUploadActionUrl, getUploadActionUrltwo as getUploadActionUrltwo, getUploadActionUrlthree as getUploadActionUrlthree, getUploadActionUrlOfAuth as getUploadActionUrlOfAuth , getTaskUrlById as getTaskUrlById, TEST_HOST, htmlEncode as htmlEncode, getupload_git_file as getupload_git_file, getcdnImageUrl as getcdnImageUrl + , openNewWindow as openNewWindow } from './UrlTool'; export { setmiyah as setmiyah } from './Component'; diff --git a/src/forge/Head/Engineer.jsx b/src/forge/Head/Engineer.jsx new file mode 100644 index 000000000..44e08fa6e --- /dev/null +++ b/src/forge/Head/Engineer.jsx @@ -0,0 +1,30 @@ +import React from 'react'; +import { Modal } from 'antd'; +import { openNewWindow } from 'educoder'; + +function Engineer({QQVisible,setQQVisible}) { + + return( + { + openNewWindow("https://qm.qq.com/cgi-bin/qm/qr?k=DWdqQHAbbfw7_rqm0d-Q_vDn5H6bMp91&jump_from=webapi") + }} + onCancel={() => setQQVisible(false)} + > +
+

您可以在QQ服务群向管理员申请,获得继续操作的权限

+ < img src={require("./teacherQQ.png")} width={200} height={200} alt=""/> +

群号:693542422

+
+
+ ) +} +export default Engineer \ No newline at end of file diff --git a/src/forge/Head/Header.js b/src/forge/Head/Header.js index 58c4ac7ca..baa4ce1f8 100644 --- a/src/forge/Head/Header.js +++ b/src/forge/Head/Header.js @@ -1,9 +1,8 @@ import React, { Component } from 'react'; import AccountProfile from "../../modules/user/AccountProfile"; -import { getImageUrl } from 'educoder' +import { getImageUrl , openNewWindow } from 'educoder'; import axios from 'axios'; -import { Input , notification , Dropdown ,Popover, Menu,Badge, Button } from 'antd'; -import { Link } from 'react-router-dom'; +import { Input , notification , Dropdown , Menu } from 'antd'; import LoginDialog from '../../modules/login/LoginDialog'; import HeadSearch from '../Component/HeadSearch'; @@ -13,7 +12,7 @@ import '../../modules/tpm/TPMIndex.css'; import CheckProfile from '../Component/ProfileModal/Profile'; import './header.scss'; -import NoticeContent from './NoticeContent'; +import Engineer from './Engineer'; const $ = window.$ // TODO 这部分脚本从公共脚本中直接调用 const { Search } = Input; @@ -49,6 +48,7 @@ class NewHeader extends Component { visiblemyss: false, openSearch:false, visible:false, //浮动消息框展示控制 + QQVisible:false } } componentDidMount() { @@ -346,14 +346,32 @@ class NewHeader extends Component { this.setState({ visible }); }; + turntoEngineer=(url)=>{ + const { current_user } = this.props; + if(current_user && current_user.login){ + if(url){ + window.location.href=url; + }else{ + this.setState({ + QQVisible:true + }) + } + }else{ + this.educoderlogin(); + } + } + + setQQVisible=()=>{ + this.setState({ + QQVisible:false + }) + } + render() { - const { match ,resetUserInfo ,showNotification} = this.props; + const { match } = this.props; let current_user = this.props.user; - let { Addcoursestypes, - tojoinitemtype, - tojoinclasstitle, - code_notice, - checked_notice, + let { + QQVisible, AccountProfiletype, user, isRender, @@ -441,6 +459,7 @@ class NewHeader extends Component { let search_url = settings && settings.common && settings.common.search; return (
+
{isRender === true ? + this.turntoEngineer(settings.engineer_url)}>工程认证 + + :"" + } : "" } diff --git a/src/forge/Head/teacherQQ.png b/src/forge/Head/teacherQQ.png new file mode 100644 index 0000000000000000000000000000000000000000..772a0e8d953060bfb9a1fe8c7c13a75967e19e41 GIT binary patch literal 4634 zcmcgwU2KzO6mHk8x`hT&5TRT&rm;anX4JG`2y|u)8trNZvKWjbWLbc%Tbwa*X3|Ek zh$)$Cl#A*{lx!K`-(W+MWs5PA!LrE4kJ-9xF_s04igdf6WUM~VdB1*cir>eT7t7kN z-+9k_&hvB54!=^q%~7fZkeuJY!Sf!6a2Ke!!V`V+&%RX|^KQ{iAoxZW~$X4pRHaD}Xm zHoV`ws>K;TZA}l4Psgp9o&On4!iW0Tw0L@k#CtW7T^CoE|<-b%TB<7HDfjq|#2v^EiWEm?;hR2RmoGZ8 zFVS#Kx-}i|iOok$>b7}Jixxwg%XG$6BRaxfzZW+{Ga`%b$O9LAS*07j@#B4atv7$R za`u~OUzY@Z%Ql!$AwukLjg74;1Rlz68KeAQ`e)wOjuxsc@Zj9g_;kQuZ$Sa26!sRa z!vZfNR)?-hr;iP!m)Zbi#HwI3fIK@})k$=-7|7dG3m~9keb>#Jqapz@s*reAe?bf( zbSDcP(-=g63En$;N3yp}f)BCH4qQ~8aD$pCfj2zk&Ov+&AgjRc>jD0G2+ks30k&YW z`J@R(v)}Rw^-PG@pS;2{GViivUjgZ=cvVmOQyI{S2@6=@AxU-{3s!scM&cX~@*Yls zS+_M^Y{TvAo%+5%v0(rPS?~arD4+D^(MTVZn~FsD5CN{Gck%Aa zhTu3)YXq|PDP{_vY^j75wG1iO^6<4U+E<8dp$<-#rPB-v-MyI_^iS$0k|J$e=ok=A z8n2M9nxxanW}rQHE)20gxE-LWWI;v&oFfV(3A2bAT~N(Jv{$rGFhAL7$l*&>nLUbj zn(2UVRQA~;02i>r;!N8gxp(dXy1!CYP4r7}l)j({7Ac}hFncMEW{>hc;Qb3j@p9Z< zSG;IO@p3>B0Y)8(T$)-cl+*Og(H@Ap$ZrrO29(d5xp0nlxx|T9rK^v-WXf42AJ8ZK zF&Lit*c7e8Bec1L!Y<-MA4WkXGi$mEeIg8wQ*qHZ0b4LRchayTvGzVqR%1Y%f|2HI z4F!~N%5M&U9#UrW)rGUBE;u=oVEB9png_?EB#32&u3>;h`ZQFcYi=c_11b+qy)i&P z(J zhnabWGCK}v%HMEL6Jxtn)wC@46y``xGN*T_S5!rDNb-^czEsL2S(%sv1z zd;?u9CYxn$aJt%0$zX*pO5BjK2kZQmW&t}g2Wdi~Ml{U8g6Fbi^K%@FXh=$=j4OLP zKJdCir4&=9d|NdP4NVh`nBS?uB1-^;4f{zj*~iVL-xzTK#33t8Krk;BBNP=YJqi%qfY;;Kyq_8ah!8a;SWv4OeIHZIdv@> zops+O6<|bSnQEYA^LPoI6ET}Bi*0FNZ9?n_`&196UvSrFRhVG%q$OetK)7~__L);! z?UR&m*(A^%E=Hi8%-9ZvGtBi+9<_p)2yu)fD&!D*8QmLgj!S0#$x&5mW+})3DLD3s z^P9QmXO)=iNKMYl;)eo)sUn#ZP(M*NN)UZWPUwCBQQtDMjlu`7AQHG(N9VefsM9y| z0b-qjCc7?o$_6_{OW8`b0)Y(c*vo}u{z>ivk}CBQwE?M3r=^wFOhPT_uxo)Sx)b8C zui3d)Pg%aSk1#?Qk9qLRR`<<_v4a>pm*J*myp8I|W-aAk9~&BT{?LGb_E-X2%S*p} IanJjI0jnVQVE_OC literal 0 HcmV?d00001 diff --git a/src/forge/Main/list.scss b/src/forge/Main/list.scss index 3b8ccd546..c2b8a2abc 100644 --- a/src/forge/Main/list.scss +++ b/src/forge/Main/list.scss @@ -121,8 +121,9 @@ justify-content: space-between; flex-wrap: wrap; align-items: center; - padding:25px 30px; + padding:0px 30px; border-bottom: 1px solid #E0E0E0; + height: 62px; } .list-r-Search{ width: 400px; From d1effecd13290c04a5d242ff0bc4845eef0ca2c2 Mon Sep 17 00:00:00 2001 From: caishi Date: Fri, 5 Nov 2021 18:41:31 +0800 Subject: [PATCH 2/2] hostname --- src/forge/Head/Header.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/forge/Head/Header.js b/src/forge/Head/Header.js index baa4ce1f8..d7f4b28b5 100644 --- a/src/forge/Head/Header.js +++ b/src/forge/Head/Header.js @@ -19,6 +19,7 @@ const { Search } = Input; let old_url; window._header_componentHandler = null; +const isPath= window.location.hostname ==='code.educoder.net' || window.location.hostname==='testforgeplus.educoder.net'; // 非trustie链接则新开页跳转 const str = ['www.trustie.net','forgeplus.trustie.net','forum.trustie.net','testforgeplus.trustie.net'] class NewHeader extends Component { @@ -509,7 +510,7 @@ class NewHeader extends Component { var waiLian = (new_link && str.filter(item=>new_link.indexOf(item)>-1) ); var wl = waiLian && waiLian.length>0; return ( -
  • this.headtypesonClick(item.link, true)} className={`${this.matchpaths(item.link) === true ? 'pr active' : 'pr'}`} style={!is_hidden ? { display: 'flex' } : { display: 'none' }}> +
  • this.headtypesonClick(item.link, true)} className={`${((isPath && item.name === "大学开源") || this.matchpaths(item.link) === true) ? 'pr active' : 'pr'}`} style={!is_hidden ? { display: 'flex' } : { display: 'none' }}>
  • )