import React, { Component } from 'react'; import { Link } from "react-router-dom"; import AccountProfile from "../user/AccountProfile"; import Certifiedprofessional from "../../modules/modals/Certifiedprofessional" import { getImageUrl } from 'educoder' import axios from 'axios'; import { Modal, Radio, Input, message, notification } from 'antd'; import Addcourses from '../courses/coursesPublic/Addcourses'; import LoginDialog from '../login/LoginDialog'; import GotoQQgroup from '../../modal/GotoQQgroup' import 'antd/lib/modal/style/index.css'; import 'antd/lib/checkbox/style/index.css'; import 'antd/lib/radio/style/index.css'; import 'antd/lib/input/style/index.css'; import './TPMIndex.css'; const $ = window.$ // TODO 这部分脚本从公共脚本中直接调用 const RadioGroup = Radio.Group; const { Search } = Input; let old_url; /* _logined_header.html.erb _unlogin_header.html.erb */ window._header_componentHandler = null; class NewHeader extends Component { constructor(props) { super(props) this.state = { Addcoursestypes: false, tojoinitemtype: false, tojoinclasstitle: undefined, rolearr: ["", ""], Checkboxteacherchecked: false, Checkboxstudentchecked: false, Checkboxteachingchecked: false, Checkboxteachertype: false, Checkboxteachingtype: false, code_notice: false, checked_notice: false, RadioGroupvalue: undefined, submitapplications: false, isRender: false, showSearchOpentype: false, showTrial: false, setevaluatinghides: false, occupation: 0, mydisplay: false, headtypesonClickbool: false, headtypess: "/", mygetHelmetapi2: null, goshowqqgtounp: false, visiblemyss: false, } // console.log("176") // console.log(props); // console.log("NewHeader1234567890"); // console.log(this.props); } componentDidUpdate = (prevProps) => { // console.log("componentDidMount2"); // console.log(this.state.mygetHelmetapi2); if (this.state.mygetHelmetapi2 === undefined) { this.getAppdata(); } } componentDidMount() { // console.log("componentDidMount1"); this.getAppdata(); window._header_componentHandler = this; //下拉框的显示隐藏 var hoverTimeout; var hoveredPanel; $(".edu-menu-panel").hover(function () { if (hoverTimeout) { // 一次只显示一个panel if (hoveredPanel && hoveredPanel != this) { $(hoveredPanel).find(".edu-menu-list").hide() } clearTimeout(hoverTimeout); hoverTimeout = null; } hoveredPanel = this; $(this).find(".edu-menu-list").show(); }, function () { var that = this; // 延迟hide hoverTimeout = setTimeout(function () { $(that).find(".edu-menu-list").hide(); }, 800) }); //获取游览器地址 try { window.sessionStorage.setItem("yslgeturls", JSON.stringify(window.location.href)) } catch (e) { } } openNotification = (messge) => { notification.open({ message: "提示", description: messge, }); }; componentWillReceiveProps(newProps, oldProps) { this.setState({ user: newProps.user }) if (newProps.Headertop != undefined) { old_url = newProps.Headertop.old_url } } getCookie = (key) => { var arr, reg = RegExp('(^| )' + key + '=([^;]+)(;|$)'); if (arr = document.cookie.match(reg)) //["username=liuwei;", "", "liuwei", ";"] return decodeURIComponent(arr[2]); else return null; } delCookie = (name) => { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval = this.getCookie(name); if (cval != null) { document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString(); } } onLogout = () => { const url = `/accounts/logout.json` this.delCookie("autologin_trustie") axios.get(url, { }) .then((response) => { if (response.data.status === 1) { this.setState({ user: undefined }) window.location.href = "/login" message.success('退出成功'); } }); } tojoinclass = () => { let { user } = this.state; if (user === undefined) { this.setState({ isRender: true }) return } if (user && user.login === "") { this.setState({ isRender: true }) return; } if (user && user.profile_completed === false) { this.setState({ AccountProfiletype: true }) return; } this.setState({ Addcoursestypes: true, }) } tojoinitem = () => { if (this.props.user && this.props.user.email === undefined || this.props.user && this.props.user.email === null || this.props.user && this.props.user.email === "") { this.openNotification("请先绑定邮箱,谢谢"); return } let { user } = this.state; if (user === undefined) { this.setState({ isRender: true }) return } if (user && user.login === "") { this.setState({ isRender: true }) return; } if (user && user.profile_completed === false) { this.setState({ AccountProfiletype: true }) return; } this.setState({ tojoinitemtype: true }) } submitstatevalue = (sum, value, data) => { this.setState({ Addcoursestypes: false, tojoinitemtype: false, tojoinclasstitle: undefined, rolearr: ["", ""], Checkboxteacherchecked: false, Checkboxstudentchecked: false, Checkboxteachingchecked: false, Checkboxteachertype: false, Checkboxteachingtype: false, code_notice: false, checked_notice: false, submitapplicationssum: sum, submitapplications: true, submitapplicationsvalue: value, submitapplicationsvaluedata: data, RadioGroupvalue: undefined }) } onChangeRadioGroup = (e) => { this.setState({ RadioGroupvalue: e.target.value, }); } submitsubmitapplications = () => { let { submitapplicationssum, submitapplicationsvaluedata } = this.state; this.setState({ submitapplications: false, RadioGroupvalue: undefined }) if (submitapplicationssum === 0) { if (submitapplicationsvaluedata != undefined) { window.location.href = "/classrooms/" + submitapplicationsvaluedata; } } else if (submitapplicationssum === 1) { if (submitapplicationsvaluedata != undefined) { window.location.href = "/projects/" + submitapplicationsvaluedata; } } } hidesubmitapplications = () => { this.setState({ Addcoursestypes: false, tojoinitemtype: false, tojoinclasstitle: undefined, rolearr: ["", ""], Checkboxteacherchecked: false, Checkboxstudentchecked: false, Checkboxteachingchecked: false, Checkboxteachertype: false, Checkboxteachingtype: false, code_notice: false, checked_notice: false, submitapplications: false, RadioGroupvalue: undefined }) } educoderlogin = () => { //登录账号 this.setState({ isRender: true }) } educoderloginysl = () => { var url = `/accounts/logout.json`; axios.get((url)).then((result) => { if (result !== undefined) { window.location.href = "/"; } }).catch((error) => { console.log(error); }) } hideAddcoursestypes = () => { this.setState({ Addcoursestypes: false }) }; HideAddcoursestypess = (i) => { console.log("调用了"); this.setState({ Addcoursestypes: false, mydisplay: true, occupation: i, }) }; ModalCancelsy = () => { this.setState({ mydisplay: false, }) }; hidetojoinclass = () => { this.setState({ tojoinclasstype: false, tojoinitemtype: false, tojoinclasstitle: undefined, rolearr: ["", ""], Checkboxteacherchecked: false, Checkboxstudentchecked: false, Checkboxteachingchecked: false, Checkboxteachertype: false, Checkboxteachingtype: false, code_notice: false, checked_notice: false, RadioGroupvalue: undefined }) } submittojoinclass = (value) => { let { tojoinclasstitle, rolearr, RadioGroupvalue } = this.state; if (tojoinclasstitle === undefined) { this.setState({ code_notice: true }) return } let newrolearr = rolearr; // if(value===1){ if (tojoinclasstitle.length < 6) { this.setState({ code_notice: true }) return } // }else if(value===0){ // if(tojoinclasstitle.length<5){ // this.setState({ // code_notice:true // }) // return // } // } if (tojoinclasstitle === "" || tojoinclasstitle === undefined) { this.setState({ code_notice: true }) return } else { this.setState({ code_notice: false }) } let pamst = []; let num = 0; for (var i = 0; i < newrolearr.length; i++) { if (newrolearr[i] != "") { pamst.push(newrolearr[i]) } else { num = num + 1 } } if (num === 2 && value === 0) { this.setState({ checked_notice: true }) return } if (value === 1 && RadioGroupvalue === undefined) { this.setState({ checked_notice: true }) return } if (value === 1) { let url = "/project_applies.json" axios.post(url, { code: tojoinclasstitle, role: RadioGroupvalue } ).then((response) => { if (response.data.status === 1) { this.submitstatevalue(1, "您输入的邀请码错误") } else if (response.data.status === 2) { this.submitstatevalue(1, "您已经是该项目成员", response.data.project) } else if (response.data.status === 3) { this.submitstatevalue(1, "请选择一个角色") } else if (response.data.status === 4) { this.submitstatevalue(1, "您的申请已提交,请等待项目管理员审批") } else if (response.data.status === 5) { this.submitstatevalue(1, "您已经申请加入该项目了,请耐心等待") } else if (response.data.status === 6) { this.submitstatevalue(1, "您已成功加入项目", response.data.project) } else if (response.data.status === 0) { if (RadioGroupvalue === "reporter") { this.openNotification("您加入项目成功!"); window.location.href = `/projects/${response.data.project_id}`; } else { this.openNotification("您的申请已提交,请等待项目管理员审批!"); } } }) } this.hidetojoinclass() } // 关闭 cancelModulationModels = () => { this.setState({ isRenders: false }) } inputjoinclassvalue = (e) => { console.log(e.target.value.length); if (e.target.value.length >= 7) { this.openNotification("请输入6位项目邀请码!"); return } this.setState({ tojoinclasstitle: e.target.value }) } showSearchOpen = (e) => { this.setState({ showSearchOpentype: true }) } hideshowSearchOpen = (e) => { let { setevaluatinghides } = this.state; if (setevaluatinghides === true) { this.setState({ showSearchOpentype: false, setevaluatinghides: false }) } } onKeywordSearchKeyDown = (value) => { let url = `/search?value=${value}`; this.props.history.push(url) } onKeywordSearchKeyDowns = () => { this.setState( { setevaluatinghides: false } ) } setevaluatinghides = () => { this.setState( { setevaluatinghides: true } ) } //头部获取是否已经登录了 getUser = (url, type) => { if (type === "projects") { if (this.props.user && this.props.user.email === undefined || this.props.user && this.props.user.email === null || this.props.user && this.props.user.email === "") { this.openNotification("请先绑定邮箱,谢谢"); return } } // console.log("点击了503") // console.log(url); let { user } = this.state; if (user === undefined) { this.setState({ isRender: true }) return } if (user && user.login === "") { this.setState({ isRender: true }) return; } if (user && user.profile_completed === false) { this.setState({ AccountProfiletype: true }) return; } if (type === "newshixuns") { if (this.props && this.props.current_user && this.props.current_user.is_shixun_marker === false) { this.setgoshowqqgtounp(true); return; } } if (url !== undefined || url !== "") { window.location.href = url; } } //修改登录方法 Modifyloginvalue = () => { this.setState({ isRender: false, }) } hideAccountProfile = () => { this.setState({ AccountProfiletype: false }) }; headtypesonClick = (url, bool) => { this.setState({ headtypess: url, headtypesonClickbool: bool, }) } //获取数据为空的时候 gettablogourlnull = () => { this.setState({ mygetHelmetapi2: undefined }); document.title = "EduCoder"; var link = document.createElement('link'), oldLink = document.getElementById('dynamic-favicon'); link.id = 'dynamic-favicon'; link.rel = 'shortcut icon'; link.href = "/react/build/./favicon.ico"; if (oldLink) { document.head.removeChild(oldLink); } document.head.appendChild(link); }; //获取数据的时候 gettablogourldata = (response) => { document.title = response.data.setting.name; var link = document.createElement('link'), oldLink = document.getElementById('dynamic-favicon'); link.id = 'dynamic-favicon'; link.rel = 'shortcut icon'; link.href = '/' + response.data.setting.tab_logo_url; if (oldLink) { document.head.removeChild(oldLink); } document.head.appendChild(link); } handleVisibleChanges = (boll) => { this.setState({ visiblemyss: boll, }) } getAppdata = () => { try { var chromesettingArray = JSON.parse(localStorage.getItem('chromesetting')); var chromesettingresponseArray = JSON.parse(localStorage.getItem('chromesettingresponse')); // console.log("NewHeaderNewHeaderNewHeader"); // console.log(chromesettingArray); // console.log(chromesettingresponseArray); this.setState({ mygetHelmetapi2: chromesettingArray }); if (chromesettingArray.tab_logo_url) { this.gettablogourldata(chromesettingresponseArray); } else { this.gettablogourlnull(); } } catch (e) { console.log("head获取游览器配置失败 重新请求开始读取配置"); this.geturlsdata(); } }; geturlsdata = () => { let url = "/setting.json"; axios.get(url).then((response) => { // console.log("app.js开始请求/setting.json"); // console.log("获取当前定制信息"); if (response) { if (response.data) { this.setState({ mygetHelmetapi2: response.data.setting }); localStorage.setItem('chromesetting', JSON.stringify(response.data.setting)); localStorage.setItem('chromesettingresponse', JSON.stringify(response)); try { if (response.data.setting.tab_logo_url) { this.gettablogourldata(response); } else { this.gettablogourlnull(); } } catch (e) { this.gettablogourlnull(); } } else { this.gettablogourlnull(); } } else { this.gettablogourlnull(); } }).catch((error) => { this.gettablogourlnull(); }); } matchpaths = (url) => { const { match } = this.props; if (url === '/forums' && match.path === '/forums') { return true } else if (url.startsWith('/shixuns') && match.path.startsWith('/shixuns')) { return true } else if (url.startsWith('/paths') && match.path.startsWith('/paths')) { return true } else if (url.startsWith('/classrooms') && match.path.startsWith('/classrooms')) { return true } else if (url.startsWith('/competitions') && match.path.startsWith('/competitions')) { return true } else if (url.startsWith('/crowdsourcing') && match.path.startsWith('/crowdsourcing')) { return true } else if (url.startsWith('/moop_cases') && match.path.startsWith('/moop_cases')) { return true } else if (url.startsWith('/developer') && match.path.startsWith('/developer')) { return true } else { return false } } // 处理弹框 setgoshowqqgtounp = (bool) => { this.setState({ goshowqqgtounp: bool }) } render() { const isLogin = true; // 这里不会出现未登录的情况,服务端在服务端路由时发现如果是未登录,则跳转到登录页了。 const { match } = this.props; let { Addcoursestypes, tojoinitemtype, tojoinclasstitle, code_notice, checked_notice, AccountProfiletype, submitapplications, submitapplicationsvalue, user, isRender, showSearchOpentype, headtypesonClickbool, headtypess, mygetHelmetapi2, goshowqqgtounp, } = this.state; /* 用户名称 用户头像url */ let activeIndex = false; let activeForums = false; let activeShixuns = false; let activePaths = false; let coursestype = false; let activePackages = false; let activeMoopCases = false; let activeCompetitions = false; if (match.path === '/forums') { activeForums = true; } else if (match.path.startsWith('/shixuns')) { activeShixuns = true; } else if (match.path.startsWith('/paths')) { activePaths = true; } else if (match.path.startsWith('/classrooms')) { coursestype = true; } else if (match.path.startsWith('/crowdsourcing')) { activePackages = true; } else if (match.path.startsWith('/moop_cases')) { activeMoopCases = true; } else if (match.path.startsWith('/competitions')) { activeCompetitions = true; } else { activeIndex = true; } let headtypes = '/'; // console.log("mygetHelmetapi2"); // console.log(mygetHelmetapi2); if (mygetHelmetapi2) { if (mygetHelmetapi2.navbar) { if (mygetHelmetapi2.navbar.length > 0) { // console.log("mygetHelmetapi2.navbar.length>0====-=-=--=-=-=-="); // // console.log(match.path); if (match.path === '/') { if (headtypesonClickbool === false) { headtypes = undefined; } else { headtypes = headtypess; } } else { for (var i = 0; i < mygetHelmetapi2.navbar.length; i++) { if (match.path === mygetHelmetapi2.navbar[i].link) { headtypes = mygetHelmetapi2.navbar[i].link; break; } } } } } } // console.log(mygetHelmetapi2); // console.log("NewHeadermygetHelmetapi123123123123"); let shixuntype = false; let pathstype = false; let coursestypes = false; if (this.props && this.props.mygetHelmetapi != null) { let shixun = "/shixuns"; let paths = "/paths"; let courses = "/classrooms"; this.props.mygetHelmetapi.navbar.map((item, key) => { var reg = RegExp(item.link); if (shixun.match(reg)) { if (item.hidden === true) { shixuntype = true } } if (paths.match(reg)) { if (item.hidden === true) { pathstype = true } } if (courses.match(reg)) { if (item.hidden === true) { coursestypes = true } } }) } const contents = (

试题库

试卷库

); // console.log("头部"); // console.log(this.props); //判断平台身份 let Periofters = false; if (this.props) { if (this.props.current_user) { if (this.props.current_user.admin) { Periofters = true; } else if (this.props.current_user.business) { Periofters = true; } else if (this.props.current_user.is_teacher) { Periofters = true; } else if (this.props.current_user.user_identity !== "学生") { Periofters = true; } } } return (
{isRender === true ? this.Modifyloginvalue()} {...this.props} {...this.state} /> : ""} {AccountProfiletype === true ? this.hideAccountProfile()} {...this.props} {...this.state} /> : ""} { goshowqqgtounp === true ? this.setgoshowqqgtounp(bool)}> : "" } this.headtypesonClick("/", false)} className={"fl mr30 ml25 mt10"}> { mygetHelmetapi2 === null ? "" : mygetHelmetapi2 === undefined || mygetHelmetapi2.nav_logo_url === null || mygetHelmetapi2.nav_logo_url === undefined ? 高校智能化教学与实训平台 : 高校智能化教学与实训平台 } { mygetHelmetapi2 === null ? "" : mygetHelmetapi2 !== undefined && mygetHelmetapi2.navbar !== null && mygetHelmetapi2.navbar !== undefined && mygetHelmetapi2.navbar.length > 0 ?
    {/*
  • 首页
  • */} {/*
  • 实训路径
  • */} { mygetHelmetapi2.navbar && mygetHelmetapi2.navbar.map((item, key) => { // console.log("headtypes"); // console.log(headtypes);hidden var str = new RegExp("http"); var strbool = false; //test方法返回值为(true或者false) if (item.link) { if (str.test(item.link) === true) { strbool = true } else { strbool = false } } // console.log(item.hidden); return (
  • this.headtypesonClick(item.link, true)} className={`${this.matchpaths(item.link) === true ? 'pr active' : 'pr'}`} style={item.hidden == false ? { display: 'block' } : { display: 'none' }}> { strbool === true ? {item.name} : {item.name} }
  • ) }) } {/*{*/} {/* Periofters===true?*/} {/*
  • */} {/* */} {/*
    */} {/*
    */} {/* 题库*/} {/*
    */} {/*
    */} {/*
    */} {/*
  • */} {/* :""*/} {/*}*/}
  • 工程认证
  • 0 ? 'block' : 'none' }}> 职业路径
    0 ? 'block' : 'none' }}>
      {this.props.Headertop === undefined ? "" : this.props.Headertop.career_url.map((item, key) => { return (
    • {item.name}
    • ) }) }
:
}
{/**/} {/**/} {/*搜索框*/} {showSearchOpentype === true ?
this.hideshowSearchOpen(e)} onMouseLeave={() => this.setevaluatinghides()}> this.onKeywordSearchKeyDowns()} onSearch={(value) => this.onKeywordSearchKeyDown(value)} // onPressEnter={this.onKeywordSearchKeyDown} style={{ width: 300, height: 32 }} autoFocus={true} />
: ""} {/**/} {/*/!**!/*/} {/**/} {/**/} {/* TODO 需要服务端接口提供最近搜索
最近搜索
*/}
{/* <%= link_to '登录', signin_path, :className => "mr5" %> <%= link_to '注册', user_join_path, :className => "ml5" %> */} {user === undefined ? this.educoderlogin()} className="mr5 color-white">登录 注册 : user.login === "" ? this.educoderlogin()} className="mr5 color-white">登录 注册 :
} {/*href="https://www.educoder.net/login"*/}
{/*{ loadHeader()}*/} {showSearchOpentype === true ? "" : this.props.user && this.props.user.main_site === true ? this.showSearchOpen(e)}> {/*"/images/educoder/icon/search.svg" */} : ""} {/*
*/}
{coursestypes === true && this.props.user && this.props.user.main_site === false ? "" : }
{this.props.user && this.props.user.main_site === true ?
{user === undefined ? "" : user.login === "" ? "" : }
: ""}
); } } export default NewHeader;