forked from Gitlink/forgeplus-react
960 lines
29 KiB
JavaScript
960 lines
29 KiB
JavaScript
import React, { Component } from 'react';
|
||
import { Link } from "react-router-dom";
|
||
import AccountProfile from "../user/AccountProfile";
|
||
import { getImageUrl } from 'educoder'
|
||
import axios from 'axios';
|
||
import { Modal, Input, message, notification } from 'antd';
|
||
|
||
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 { Search } = Input;
|
||
let old_url;
|
||
|
||
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,
|
||
}
|
||
}
|
||
componentDidUpdate = (prevProps) => {
|
||
if (this.state.mygetHelmetapi2 === undefined) {
|
||
this.getAppdata();
|
||
}
|
||
}
|
||
componentDidMount() {
|
||
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))
|
||
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 = "/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
|
||
})
|
||
}
|
||
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 (tojoinclasstitle.length < 6) {
|
||
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
|
||
}
|
||
}
|
||
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
|
||
});
|
||
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'));
|
||
this.setState({
|
||
mygetHelmetapi2: chromesettingArray
|
||
});
|
||
if (chromesettingArray.tab_logo_url) {
|
||
this.gettablogourldata(chromesettingresponseArray);
|
||
} else {
|
||
this.gettablogourlnull();
|
||
}
|
||
} catch (e) {
|
||
this.geturlsdata();
|
||
}
|
||
};
|
||
|
||
geturlsdata = () => {
|
||
let url = "/setting.json";
|
||
axios.get(url).then((response) => {
|
||
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('/projects') && match.path.startsWith('/projects')) {
|
||
return true
|
||
} else if (url.startsWith('/paths') && match.path.startsWith('/paths')) {
|
||
return true
|
||
} else if (url.startsWith('/courses') && match.path.startsWith('/courses')) {
|
||
return true
|
||
} else if (url.startsWith('/competitions') && match.path.startsWith('/competitions')) {
|
||
return true
|
||
} else if (url.startsWith('/statistics') && match.path.startsWith('/statistics')) {
|
||
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('/courses')) {
|
||
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 = '/';
|
||
|
||
if (mygetHelmetapi2) {
|
||
if (mygetHelmetapi2.navbar) {
|
||
if (mygetHelmetapi2.navbar.length > 0) {
|
||
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;
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
let shixuntype = false;
|
||
let pathstype = false;
|
||
let coursestypes = false;
|
||
if (this.props && this.props.mygetHelmetapi != null) {
|
||
let shixun = "/shixuns";
|
||
let paths = "/paths";
|
||
let courses = "/courses";
|
||
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 = (
|
||
<div className="questiontypes" style={{
|
||
width: '93px',
|
||
height: '80px',
|
||
}}>
|
||
<a href={'/question'} ><p className="questiontype">试题库</p></a>
|
||
<p className="questiontypeheng"></p>
|
||
<a href={'/paperlibrary'} ><p className="questiontype">试卷库</p></a>
|
||
<p className="questiontypeheng"></p>
|
||
</div>
|
||
);
|
||
return (
|
||
<div className="newHeaders" id="nHeader">
|
||
<div className="headerContent">
|
||
{isRender === true ?
|
||
<LoginDialog
|
||
Modifyloginvalue={() => this.Modifyloginvalue()}
|
||
{...this.props}
|
||
{...this.state}
|
||
/> : ""}
|
||
|
||
{AccountProfiletype === true ?
|
||
<AccountProfile
|
||
hideAccountProfile={() => this.hideAccountProfile()}
|
||
{...this.props}
|
||
{...this.state}
|
||
/> : ""}
|
||
|
||
{
|
||
goshowqqgtounp === true ?
|
||
<GotoQQgroup {...this.state} {...this.props} setgoshowqqgtounp={(bool) => this.setgoshowqqgtounp(bool)}></GotoQQgroup>
|
||
:
|
||
""
|
||
}
|
||
|
||
<a href={"/"} onClick={() => this.headtypesonClick("/", false)} className={"fl mr30"}>
|
||
{
|
||
mygetHelmetapi2 && mygetHelmetapi2.nav_logo_url && mygetHelmetapi2.nav_logo_url ?
|
||
<img alt="高校智能化教学与实训平台" className="logoimg" style={{ heigth: "40px" }} src={getImageUrl(mygetHelmetapi2.nav_logo_url)}></img>
|
||
:
|
||
<img alt="高校智能化教学与实训平台" className="logoimg" style={{ heigth: "40px" }} src={getImageUrl("images/educoder/headNavLogo.png?1526520218")}></img>
|
||
}
|
||
</a>
|
||
{
|
||
mygetHelmetapi2 && mygetHelmetapi2.navbar && mygetHelmetapi2.navbar.length > 0 ?
|
||
<div className="head-nav pr" id={"head-navpre1"}>
|
||
<ul id="header-nav">
|
||
{
|
||
mygetHelmetapi2.navbar && mygetHelmetapi2.navbar.map((item, key) => {
|
||
var new_link = item.link;
|
||
var user_login = this.props.user && this.props.user.login;
|
||
var is_hidden = item.hidden
|
||
|
||
if (new_link.indexOf("courses") > -1 || new_link.indexOf("contests") > -1) {
|
||
if (user_login) {
|
||
if (new_link.indexOf("courses") > -1) {
|
||
new_link = new_link.replace(/courses/g, "users/" + user_login + "/courses")
|
||
} else if (new_link.indexOf("contests") > -1) {
|
||
new_link = new_link.replace(/contests/g, "users/" + user_login + "/contests")
|
||
}
|
||
|
||
} else {
|
||
is_hidden = true
|
||
}
|
||
}
|
||
|
||
var str = new RegExp("projects");
|
||
var strbool = false;
|
||
if (item.link) {
|
||
if (str.test(item.link) === true) {
|
||
strbool = true
|
||
} else {
|
||
strbool = false
|
||
}
|
||
}
|
||
return (
|
||
<li key={key} onClick={() => this.headtypesonClick(item.link, true)} className={`${this.matchpaths(item.link) === true ? 'pr active' : 'pr'}`} style={!is_hidden ? { display: 'flex' } : { display: 'none' }}>
|
||
{
|
||
strbool ?
|
||
<React.Fragment>
|
||
<Link to={item.link}>{item.name}</Link>
|
||
{
|
||
mygetHelmetapi2.old_projects_url ?
|
||
<a href={mygetHelmetapi2.old_projects_url} className="color-orange">(进入老版本)</a>
|
||
: ""
|
||
}
|
||
</React.Fragment>
|
||
:
|
||
<a href={new_link} target='_blank'>{item.name}</a>
|
||
}
|
||
</li>
|
||
)
|
||
})
|
||
}
|
||
</ul>
|
||
</div>
|
||
: ""
|
||
}
|
||
|
||
<div className="head-right">
|
||
{
|
||
this.props.user && this.props.user.login ?
|
||
<div className="edu-menu-panel">
|
||
<i className="iconfont icon-tianjiafangda color-grey-3"></i>
|
||
<div className="edu-menu-list" style={{ top: '46px', width: "240px" }}>
|
||
<div className="overPart"></div>
|
||
<ul className={coursestypes === true && this.props.user && this.props.user.main_site === false ? "fl headwith100b edu-txt-center pr ul-leftline" : "fl with50 edu-txt-center pr ul-leftline"}>
|
||
{
|
||
mygetHelmetapi2 && mygetHelmetapi2.new_course && mygetHelmetapi2.new_course.new_syllabuses &&
|
||
<li><a href={`${mygetHelmetapi2.new_course.new_syllabuses}`} target="_blank">新建课程</a></li>
|
||
}
|
||
{
|
||
mygetHelmetapi2 && mygetHelmetapi2.new_course && mygetHelmetapi2.new_course.new_course &&
|
||
<li><a href={`${mygetHelmetapi2.new_course.new_course}`} target="_blank">新建班级</a></li>
|
||
}
|
||
</ul>
|
||
{
|
||
coursestypes === true && this.props.user && this.props.user.main_site === false ? "" :
|
||
<ul className="fl with50 edu-txt-center">
|
||
<li><Link to={"/projects/mirror/new"}>新建镜像项目</Link></li>
|
||
<li><Link to={"/projects/deposit/new"}>新建托管项目</Link></li>
|
||
</ul>
|
||
}
|
||
</div>
|
||
</div>
|
||
: ""
|
||
}
|
||
{
|
||
this.props.user && this.props.user.login ?
|
||
<div className="ml30 edu-menu-panel">
|
||
{user && user.login &&
|
||
<a href={`${mygetHelmetapi2 && mygetHelmetapi2.new_course && mygetHelmetapi2.new_course.tiding_url}`} style={{ position: 'relative' }} target="_blank">
|
||
<i className="iconfont icon-xiaoxilingdang color-grey-3"></i>
|
||
<span className="newslight" style={{ display: this.props.Headertop === undefined ? "none" : this.props.Headertop.new_message === true ? "block" : "none" }}>
|
||
</span>
|
||
</a>
|
||
}
|
||
</div>
|
||
: ""
|
||
}
|
||
<Modal
|
||
keyboard={false}
|
||
title="提示"
|
||
visible={submitapplications}
|
||
closable={false}
|
||
footer={null}
|
||
>
|
||
<div className="task_popup_con ml30">
|
||
<div className="mr15">
|
||
<ul>
|
||
<div className="task-popup-content">
|
||
<p className="task-popup-text-center font-16">
|
||
{submitapplicationsvalue}
|
||
</p>
|
||
</div>
|
||
<li className="clearfix mt10 edu-txt-center">
|
||
<a className="task-btn mr10"
|
||
onClick={this.hidesubmitapplications}>取消</a>
|
||
<a
|
||
className="task-btn task-btn-orange ml20"
|
||
onClick={this.submitsubmitapplications}>确定</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</Modal>
|
||
</div>
|
||
{user === undefined ?
|
||
<span className="font-15">
|
||
<a onClick={() => this.educoderlogin()} className="mr5 color-grey-3">登录</a>
|
||
{
|
||
mygetHelmetapi2 && mygetHelmetapi2.new_course && mygetHelmetapi2.new_course.register_url &&
|
||
<span><em className="vertical-line"></em><a className="ml5 color-grey-3" href={`${mygetHelmetapi2.new_course.register_url}`} target="_blank">注册</a></span>
|
||
}
|
||
</span>
|
||
: user.login === "" ?
|
||
<span className="font-15">
|
||
<a onClick={() => this.educoderlogin()} className="mr5 color-grey-3">登录</a>
|
||
{
|
||
mygetHelmetapi2 && mygetHelmetapi2.new_course && mygetHelmetapi2.new_course.register_url &&
|
||
<span><em className="vertical-line"></em><a className="color-grey-3 ml5" href={`${mygetHelmetapi2.new_course.register_url}`} target="_blank">注册</a></span>
|
||
}
|
||
</span>
|
||
:
|
||
<div className="ml30 edu-menu-panel" style={{height:"70px",lineHeight:"70px"}}>
|
||
<a href={`/users/${this.props.current_user === undefined ? "" : this.props.current_user.login}/courses`}>
|
||
<img alt="头像" className="radius" height="34" id="nh_user_logo" name="avatar_image"
|
||
src={getImageUrl(`images/` + user.image_url)} width="34">
|
||
</img>
|
||
</a>
|
||
<ul className="edu-menu-list" style={{ top: '46px', 'textAlign': 'center' }}>
|
||
<li className="bor-bottom-greyE">
|
||
<a href={`/users/${this.props.current_user.login}`}>个人中心</a>
|
||
{/* <a href="javascript:void(0)" className="fs12 hide-1 task-hide edu-txt-w80">{user.username}</a> */}
|
||
</li>
|
||
{/* {
|
||
mygetHelmetapi2 && mygetHelmetapi2.new_course && mygetHelmetapi2.new_course.edit_account &&
|
||
<li><a href={`${mygetHelmetapi2.new_course.edit_account}`} target="_blank">修改资料</a></li>
|
||
} */}
|
||
{
|
||
mygetHelmetapi2 && mygetHelmetapi2.new_course && mygetHelmetapi2.new_course.my_courses &&
|
||
<li><a href={`${mygetHelmetapi2.new_course.my_courses}`} target="_blank">我的课程</a></li>
|
||
}
|
||
{
|
||
mygetHelmetapi2 && mygetHelmetapi2.new_course && mygetHelmetapi2.new_course.my_projects &&
|
||
<li><Link to={`/users/${this.props.current_user.login}/projects`} >我的项目</Link></li>
|
||
}
|
||
|
||
{
|
||
mygetHelmetapi2 && mygetHelmetapi2.new_course && mygetHelmetapi2.new_course.my_organ &&
|
||
// <li><a href={`${mygetHelmetapi2.new_course.my_organ}`} target="_blank">我的组织</a></li>
|
||
<li><a href={`/users/${this.props.current_user.login}/organize`} target="_blank">我的组织</a></li>
|
||
}
|
||
<li className="bor-top-greyE">
|
||
<a onClick={() => this.educoderloginysl()}>退出</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
}
|
||
</div>
|
||
</div>
|
||
);
|
||
}
|
||
}
|
||
|
||
export default NewHeader;
|
||
|