import React, { Component } from 'react'; import { BrowserRouter as Router, Route, Link } from "react-router-dom"; import { Redirect } from 'react-router'; import AccountProfile from"../user/AccountProfile"; import PropTypes from 'prop-types'; // import searchImg from '../../../../images/educoder/icon/search.svg' // /images/educoder/icon/search.svg import { getImageUrl, toPath } from 'educoder' import axios from 'axios'; import { Modal,Checkbox ,Radio,Input,message,notification } from 'antd'; import Addcourses from '../courses/coursesPublic/Addcourses'; import LoginDialog from '../login/LoginDialog'; import Trialapplication from '../login/Trialapplication' 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'; import { trigger, broadcastChannelPostMessage } from 'educoder'; 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 } // console.log("176") // console.log(props); } componentDidMount() { 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) }); //获取游览器地址 window.sessionStorage.setItem("yslgeturls",JSON.stringify(window.location.href)) } componentDidUpdate = (prevProps) => { // if(prevProps.user!=this.props.user){ // // console.log("216") // // console.log(prevProps.user); // // console.log(this.props.user); // if(this.props.user !== undefined){ // this.setState({ // user_phone_binded :this.props.user.user_phone_binded, // }) // } // // // } } 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 }) // let path="/"; // this.props.history.push(path); broadcastChannelPostMessage('refreshPage') 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=()=>{ 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 = "/courses/"+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 }) // var url = `/accounts/logout.json`; // // axios.get((url)).then((result) => { // if(result!==undefined){ // // this.setState({ // // isRender:true // // }) // window.location.href = "/"; // } // }).catch((error) => { // console.log(error); // }) } educoderloginysl=()=>{ //退出账号 // this.setState({ // isRender:true // }) var url = `/accounts/logout.json`; axios.get((url)).then((result) => { if(result!==undefined){ // this.setState({ // isRender:true // }) window.location.href = "/"; } }).catch((error) => { console.log(error); }) } hideAddcoursestypes=()=>{ this.setState({ Addcoursestypes: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 { // if( response.data.state===0){ // this.submitstatevalue(0,"加入成功",response.data.course_id) // }else if( response.data.state===1){ // }else if( response.data.state===2){ // this.submitstatevalue( 0,"课堂已过期! 请联系课堂管理员重启课堂。(在配置课堂处)") // }else if( response.data.state===3){ // this.submitstatevalue( 0,"您已是课堂成员)",response.data.course_id) // }else if( response.data.state===4){ // this.submitstatevalue( 0,"您输入的邀请码错误)") // }else if( response.data.state===5){ // this.submitstatevalue( 0,"您还未登录") // }else if( response.data.state===6){ // this.submitstatevalue( 0,"申请已提交,请等待审核") // }else if( response.data.state===7){ // this.submitstatevalue( 0," 您已经发送过申请了,请耐心等待") // }else if( response.data.state===8){ // this.submitstatevalue( 0,"您已经是该课堂的教师了",response.data.course_id) // }else if( response.data.state==9){ // this.submitstatevalue( 0,"您已经是该课堂的教辅了",response.data.course_id) // }else if( response.data.state==10){ // this.submitstatevalue(0,"您已经是该课堂的管理员了",response.data.course_id) // }else if( response.data.state==11){ // this.submitstatevalue(0," 该课堂已归档,请联系老师") // }else if( response.data.state==12){ // this.submitstatevalue(0,"您已经发送过申请了,请耐心等待师") // }else if( response.data.state==13){ // this.submitstatevalue(0,"您申请已提交,请等待审核") // }else if( response.data.state==14){ // this.submitstatevalue("此邀请码已停用,请与老师联系") // }else if( response.data.state==15){ // this.submitstatevalue(0,"您已是课堂成员! 加入分班请在课堂具体分班页面进行") // }else { // this.submitstatevalue(0," 未知错误,请稍后再试") // } // }) // // } if(value===1){ let url="/project_applies.json" // const form = new FormData(); // form.append('code', tojoinclasstitle); // form.append('role', RadioGroupvalue); // form.append('type', 1); 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() } // trialapplications =()=>{ // console.log("点击了") // this.setState({ // isRenders: true, // showTrial:true, // }) // } // 关闭 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)=>{ // 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(url !== undefined || url!==""){ window.location.href = url; } } //修改登录方法 Modifyloginvalue=()=>{ this.setState({ isRender:false, }) } hideAccountProfile=()=>{ this.setState({ AccountProfiletype:false }) } render() { const isLogin = true; // 这里不会出现未登录的情况,服务端在服务端路由时发现如果是未登录,则跳转到登录页了。 const {match ,} = this.props; let {Addcoursestypes, tojoinitemtype, tojoinclasstitle, Checkboxteacherchecked, Checkboxstudentchecked, Checkboxteachingchecked, Checkboxteachertype, Checkboxteachingtype, code_notice, checked_notice, AccountProfiletype, submitapplications, submitapplicationsvalue, user, isRender, showSearchOpentype, }=this.state; /* 用户名称 用户头像url */ let activeIndex = false; let activeForums = false; let activeShixuns = false; let activePaths = false; let coursestype=false; let activePackages=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('/courses')) { coursestype = true; }else if (match.path.startsWith('/crowdsourcing')) { activePackages = true; }else { activeIndex = true; } return (
{isRender===true?this.Modifyloginvalue()} {...this.props} {...this.state} />:""} {AccountProfiletype===true?this.hideAccountProfile()} {...this.state} {...this.props} />:""} 高校智能化教学与实训平台
{/*<%= link_to image_tag("/images/educoder/logo.png", alt:"高校智能化教学与实训平台", className:"logoimg"), home_path %>*/}
{/**/} {/**/} {/*搜索框*/} {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.showSearchOpen(e)}> {/*"/images/educoder/icon/search.svg" */} } {/*
*/}
{ user===undefined?"":user.login===""?"": {/*{this.props.Headertop===undefined?"":this.props.Headertop.unread_message_count > 99 ? '99+'*/} {/*: this.props.Headertop===undefined?"":this.props.Headertop.unread_message_count}*/} }
); } } export default NewHeader;