Merge branch 'dev_aliyun' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun

dev_forum
杨树林 5 years ago
commit d3bc8b33a0

@ -20,28 +20,29 @@ class MyshixunsController < ApplicationController
unless (current_user.admin? || current_user.id == @myshixun.user_id) unless (current_user.admin? || current_user.id == @myshixun.user_id)
tip_exception("403", "") tip_exception("403", "")
end end
begin
ActiveRecord::Base.transaction do
begin
@shixun = Shixun.select(:id, :identifier).find(@myshixun.shixun_id)
@myshixun.destroy
ActiveRecord::Base.transaction do StudentWork.where(:myshixun_id => @myshixun.id).update_all(:myshixun_id => 0, :work_status => 0)
begin
@shixun = Shixun.select(:id, :identifier).find(@myshixun.shixun_id)
@myshixun.destroy
# 刪除版本庫 # 实训在申请发布前,是否玩过实训,如果玩过需要更改记录,防止二次重置
begin shixun_mod = ShixunModify.where(:shixun_id => @shixun.id, :myshixun_id => @myshixun.id, :status => 1).take
GitService.delete_repository(repo_path: @repo_path) shixun_mod.update_column(:status, 0) if shixun_mod
rescue Exception => e rescue Exception => e
uid_logger_error("版本库删除异常,详情:#{e.message}") logger.error("######reset_my_game_failed:#{e.message}")
raise("ActiveRecord::RecordInvalid")
end end
StudentWork.where(:myshixun_id => @myshixun.id).update_all(:myshixun_id => 0, :work_status => 0)
# 实训在申请发布前,是否玩过实训,如果玩过需要更改记录,防止二次重置
shixun_mod = ShixunModify.where(:shixun_id => @shixun.id, :myshixun_id => @myshixun.id, :status => 1).take
shixun_mod.update_column(:status, 0) if shixun_mod
rescue Exception => e
uid_logger_error("myshixun reset failed #{e}")
raise ActiveRecord::Rollback
end end
# 删除版本库
GitService.delete_repository(repo_path: @repo_path)
rescue Exception => e
if e.message != "ActiveRecord::RecordInvalid"
logger.error("######delete_repository_error:#{e.message}")
end
raise ActiveRecord::Rollback
end end
end end

@ -239,6 +239,7 @@ class BoardsNew extends Component{
render() { render() {
let { addGroup, fileList, course_id, title_num } = this.state; let { addGroup, fileList, course_id, title_num } = this.state;
const { getFieldDecorator } = this.props.form; const { getFieldDecorator } = this.props.form;
const { current_user } = this.props
const formItemLayout = { const formItemLayout = {
labelCol: { labelCol: {
@ -299,7 +300,7 @@ class BoardsNew extends Component{
`}</style> `}</style>
<div className="edu-class-container edu-position courseForm"> <div className="edu-class-container edu-position courseForm">
<CBreadcrumb items={[ <CBreadcrumb items={[
{ to: `/courses/${courseId}/students`, name: this.props.coursedata ? this.props.coursedata.name : ''}, { to: current_user.first_category_url, name: this.props.coursedata ? this.props.coursedata.name : ''},
{ to: `/courses/${courseId}/boards/${boardId}`, name: this.state.board_name }, { to: `/courses/${courseId}/boards/${boardId}`, name: this.state.board_name },
{ name: this.isEdit ? '帖子编辑' : '帖子新建'} { name: this.isEdit ? '帖子编辑' : '帖子新建'}
]}></CBreadcrumb> ]}></CBreadcrumb>

@ -546,7 +546,7 @@ class TopicDetail extends Component {
} }
`}</style> `}</style>
<CBreadcrumb className={'independent'} items={[ <CBreadcrumb className={'independent'} items={[
{ to: `/courses/${courseId}`, name: this.props.coursedata.name}, { to: current_user.first_category_url, name: this.props.coursedata.name},
{ to: `/courses/${courseId}/boards/${boardId}`, name: memo.board_name }, { to: `/courses/${courseId}/boards/${boardId}`, name: memo.board_name },
{ name: '帖子详情'} { name: '帖子详情'}
]}></CBreadcrumb> ]}></CBreadcrumb>

@ -145,6 +145,7 @@ class CommonWorkDetailIndex extends Component{
, end_immediately, publish_immediately, work_statuses, accessoryVisible , end_immediately, publish_immediately, work_statuses, accessoryVisible
} =this.state; } =this.state;
const { current_user } = this.props
let courseId=this.props.match.params.coursesId; let courseId=this.props.match.params.coursesId;
let category_id= category && category.category_id; let category_id= category && category.category_id;
@ -197,15 +198,15 @@ class CommonWorkDetailIndex extends Component{
background: #fff; background: #fff;
} }
`}</style> `}</style>
<CBreadcrumb items={[ {current_user && <CBreadcrumb items={[
{ to: `/courses/${courseId}`, name: course_name}, { to: current_user.first_category_url , name: course_name},
{ to: `/courses/${courseId}/${moduleEngName}/${category_id}`, name: category_name }, { to: `/courses/${courseId}/${moduleEngName}/${category_id}`, name: category_name },
window.location.pathname.indexOf('appraise') == -1 ? { } : { to: `/courses/${courseId}/${moduleEngName}/${workId}/list`, name: '作业详情' }, window.location.pathname.indexOf('appraise') == -1 ? { } : { to: `/courses/${courseId}/${moduleEngName}/${workId}/list`, name: '作业详情' },
// 1. 与上一条联动当匿评他人作品时TA人作品的作者真实姓名切换为“匿名” // 1. 与上一条联动当匿评他人作品时TA人作品的作者真实姓名切换为“匿名”
window.location.pathname.indexOf('appraise') == -1 ? { name: '作业详情' } : { name: author_name }, window.location.pathname.indexOf('appraise') == -1 ? { name: '作业详情' } : { name: author_name },
// window.location.pathname.indexOf('appraise') == -1 ? { } : { to: `/courses/${courseId}/${moduleEngName}/${workId}/list`, name: '作品列表' }, // window.location.pathname.indexOf('appraise') == -1 ? { } : { to: `/courses/${courseId}/${moduleEngName}/${workId}/list`, name: '作品列表' },
// { name: childModuleName } // { name: childModuleName }
]}></CBreadcrumb> ]}></CBreadcrumb>}
<div style={{ width:'100%',height:'52px'}} > <div style={{ width:'100%',height:'52px'}} >
<span className=" fl color-black summaryname" title={`${homework_name && homework_name.length > 36 ? homework_name : ''}`} <span className=" fl color-black summaryname" title={`${homework_name && homework_name.length > 36 ? homework_name : ''}`}

@ -481,6 +481,7 @@ render(){
course_name, homework_name, course_name, homework_name,
memberNumMax, memberNumMin memberNumMax, memberNumMin
} =this.state; } =this.state;
const { current_user } = this.props
let courseId=this.props.match.params.coursesId; let courseId=this.props.match.params.coursesId;
let workId=this.props.match.params.workId; let workId=this.props.match.params.workId;
@ -522,7 +523,6 @@ render(){
const moduleName = this.props.getModuleName() const moduleName = this.props.getModuleName()
const moduleCHName = this.props.getModuleName(true) const moduleCHName = this.props.getModuleName(true)
const isGroup = this.props.isGroup() const isGroup = this.props.isGroup()
const { current_user } = this.props;
return( return(
<React.Fragment> <React.Fragment>
@ -540,7 +540,7 @@ render(){
<div className={"educontent mb20"}> <div className={"educontent mb20"}>
<p className="clearfix mt10"> <p className="clearfix mt10">
<WordsBtn style="grey" className="fl"> <Link to={`/courses/${courseId}/${moduleName}/${category ? category.category_id : ''}`} className="color-grey-6">{course_name}</Link></WordsBtn> <WordsBtn style="grey" className="fl"> <Link to={ current_user && current_user.first_category_url} className="color-grey-6">{course_name}</Link></WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span> <span className="color-grey-9 fl ml3 mr3">&gt;</span>
<WordsBtn style="grey" className="fl"> <Link to={`/courses/${courseId}/${moduleName}/${workId}`} className="color-grey-6">{moduleCHName}</Link></WordsBtn> <WordsBtn style="grey" className="fl"> <Link to={`/courses/${courseId}/${moduleName}/${workId}`} className="color-grey-6">{moduleCHName}</Link></WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span> <span className="color-grey-9 fl ml3 mr3">&gt;</span>

@ -313,6 +313,7 @@ class NewWork extends Component{
init_max_num, init_min_num, init_max_num, init_min_num,
title_num, course_name, category, has_commit, has_project title_num, course_name, category, has_commit, has_project
}=this.state }=this.state
const { current_user } = this.props
const courseId = this.state.course_id || this.props.match.params.coursesId ; const courseId = this.state.course_id || this.props.match.params.coursesId ;
const isEdit = this.isEdit; const isEdit = this.isEdit;
@ -369,7 +370,7 @@ class NewWork extends Component{
<span>{pageType==="new"?"新建":"编辑"}</span> <span>{pageType==="new"?"新建":"编辑"}</span>
</p> */} </p> */}
<CBreadcrumb items={[ <CBreadcrumb items={[
{ to: `/courses/${courseId}`, name: this.state.course_name}, { to: current_user.first_category_url, name: this.state.course_name},
{ to: `/courses/${courseId}/${moduleEngName}/${category && category.category_id ? category.category_id : ''}` { to: `/courses/${courseId}/${moduleEngName}/${category && category.category_id ? category.category_id : ''}`
, name: category && category.category_name }, , name: category && category.category_name },
{ name: `${ this.isEdit ? '编辑' : '新建'}` } { name: `${ this.isEdit ? '编辑' : '新建'}` }

@ -59,7 +59,7 @@ class WorkDetailPageHeader extends Component{
const dateFormat = 'YYYY-MM-DD HH:mm'; const dateFormat = 'YYYY-MM-DD HH:mm';
let {course_name, homework_name, search, page, loadingstate, homework_status, description, noTab let {course_name, homework_name, search, page, loadingstate, homework_status, description, noTab
, view_answer, author_name, category, work_id , view_answer, author_name, category, work_id, current_user
} =this.props; } =this.props;
let courseId=this.props.match.params.coursesId; let courseId=this.props.match.params.coursesId;
@ -89,7 +89,7 @@ class WorkDetailPageHeader extends Component{
} }
`}</style> `}</style>
<CBreadcrumb items={[ <CBreadcrumb items={[
{ to: `/courses/${courseId}`, name: course_name}, { to: current_user.first_category_url, name: course_name},
{ to: `/courses/${courseId}/${moduleEngName}/${category_id}`, name: category_name }, { to: `/courses/${courseId}/${moduleEngName}/${category_id}`, name: category_name },
window.location.pathname.indexOf('appraise') == -1 ? { } : { to: `/courses/${courseId}/${moduleEngName}/${workId}/list`, name: '作业详情' }, window.location.pathname.indexOf('appraise') == -1 ? { } : { to: `/courses/${courseId}/${moduleEngName}/${workId}/list`, name: '作业详情' },
// 1. 与上一条联动当匿评他人作品时TA人作品的作者真实姓名切换为“匿名” // 1. 与上一条联动当匿评他人作品时TA人作品的作者真实姓名切换为“匿名”

@ -369,6 +369,7 @@ class ExerciceNew extends Component{
}, },
}; };
const { current_user } = this.props
const isAdmin = this.props.isAdmin() const isAdmin = this.props.isAdmin()
const courseId=this.props.match.params.coursesId; const courseId=this.props.match.params.coursesId;
const exercise_id = this.props.match.params.Id const exercise_id = this.props.match.params.Id
@ -407,7 +408,7 @@ class ExerciceNew extends Component{
`}</style> `}</style>
<div className="edu-class-container edu-position courseForm"> <div className="edu-class-container edu-position courseForm">
<CBreadcrumb items={[ <CBreadcrumb items={[
{ to: `/courses/${courseId}/students`, name: this.props.coursedata ? this.props.coursedata.name : ''}, { to: current_user.first_category_url, name: this.props.coursedata ? this.props.coursedata.name : ''},
{ to: `/courses/${courseId}/exercises/${left_banner_id}`, name: '试卷列表' }, { to: `/courses/${courseId}/exercises/${left_banner_id}`, name: '试卷列表' },
{ name: this.isEdit ? '编辑试卷' : '新建试卷'} { name: this.isEdit ? '编辑试卷' : '新建试卷'}
]}></CBreadcrumb> ]}></CBreadcrumb>

@ -509,7 +509,7 @@ class ExerciseReviewAndAnswer extends Component{
}=this.state }=this.state
let isAdmin = this.props.isAdmin(); let isAdmin = this.props.isAdmin();
let isStudent =this.props.isStudent(); let isStudent =this.props.isStudent();
const { current_user } = this.props
console.log(data&&data.exercise.user_name) console.log(data&&data.exercise.user_name)
return( return(
<div className="newMain" style={{paddingTop:"0px"}}> <div className="newMain" style={{paddingTop:"0px"}}>
@ -537,7 +537,7 @@ class ExerciseReviewAndAnswer extends Component{
/> />
<div className="educontent mt10 mb50"> <div className="educontent mt10 mb50">
<p className="clearfix mb20"> <p className="clearfix mb20">
<WordsBtn style="grey" className="fl" to={`/courses/${coursesId}`}>{courseName}</WordsBtn> <WordsBtn style="grey" className="fl" to={current_user.first_category_url}>{courseName}</WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span> <span className="color-grey-9 fl ml3 mr3">&gt;</span>
<WordsBtn style="grey" className="fl" to={`/courses/${coursesId}/exercises/${data && data.left_banner_id}`}>{data && data.left_banner_name}</WordsBtn> <WordsBtn style="grey" className="fl" to={`/courses/${coursesId}/exercises/${data && data.left_banner_id}`}>{data && data.left_banner_name}</WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span> <span className="color-grey-9 fl ml3 mr3">&gt;</span>

@ -96,6 +96,7 @@ class GraduateTopicDetail extends Component{
tablePageSize, tablePageSize,
tab, tab,
}=this.state }=this.state
const { current_user } = this.props
let {course_id,graduation_topic_id}=this.props.match.params; let {course_id,graduation_topic_id}=this.props.match.params;
const isStudent =this.props.isStudent(); const isStudent =this.props.isStudent();
const isAdmin =this.props.isAdmin(); const isAdmin =this.props.isAdmin();
@ -104,7 +105,7 @@ class GraduateTopicDetail extends Component{
<div className="newMain"> <div className="newMain">
<div className="educontent mt10 mb50"> <div className="educontent mt10 mb50">
<p className="clearfix mb15 lineh-20"> <p className="clearfix mb15 lineh-20">
<WordsBtn style="grey" className="fl" to={`/courses/${tableData.course_id}`}>{tableData && tableData.course_name}</WordsBtn> <WordsBtn style="grey" className="fl" to={current_user.first_category_url}>{tableData && tableData.course_name}</WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span> <span className="color-grey-9 fl ml3 mr3">&gt;</span>
<WordsBtn style="grey" className="fl" to={`/courses/${tableData.course_id}/graduation_topics/${tableData.graduation_id}`}>{tableData.graduation_name}</WordsBtn> <WordsBtn style="grey" className="fl" to={`/courses/${tableData.course_id}/graduation_topics/${tableData.graduation_id}`}>{tableData.graduation_name}</WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span> <span className="color-grey-9 fl ml3 mr3">&gt;</span>

@ -276,6 +276,7 @@ class GraduateTopicNew extends Component{
course_name, course_name,
left_banner_name left_banner_name
} = this.state; } = this.state;
const { current_user } = this.props
const { getFieldDecorator } = this.props.form; const { getFieldDecorator } = this.props.form;
let{ topicId,coursesId }=this.props.match.params let{ topicId,coursesId }=this.props.match.params
console.log(this.props); console.log(this.props);
@ -322,7 +323,7 @@ class GraduateTopicNew extends Component{
`}</style> `}</style>
<div className="edu-class-container edu-position courseForm"> <div className="edu-class-container edu-position courseForm">
<p className="clearfix mb20 mt10"> <p className="clearfix mb20 mt10">
<WordsBtn style="grey" className="fl" to={`/courses/${coursesId}`}>{course_name}</WordsBtn> <WordsBtn style="grey" className="fl" to={current_user.first_category_url}>{course_name}</WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span> <span className="color-grey-9 fl ml3 mr3">&gt;</span>
<WordsBtn style="grey" className="fl" to={`/courses/${coursesId}/graduation_topics/${left_banner_id}`}>{left_banner_name}</WordsBtn> <WordsBtn style="grey" className="fl" to={`/courses/${coursesId}/graduation_topics/${left_banner_id}`}>{left_banner_name}</WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span> <span className="color-grey-9 fl ml3 mr3">&gt;</span>

@ -110,7 +110,7 @@ class PollDetailIndex extends Component{
} }
render(){ render(){
let {tab,pollDetail,user_permission}=this.state; let {tab,pollDetail,user_permission}=this.state;
const { current_user } = this.props;
const isAdmin =this.props.isAdmin(); const isAdmin =this.props.isAdmin();
const isStudent = this.props.isStudent(); const isStudent = this.props.isStudent();
return( return(
@ -123,7 +123,7 @@ class PollDetailIndex extends Component{
/> />
<div className="educontent mt10 mb50"> <div className="educontent mt10 mb50">
<p className="clearfix mb20"> <p className="clearfix mb20">
<WordsBtn style="grey" className="fl" to={`/courses/${this.props.match.params.coursesId}/students`}>{this.props.coursedata.name}</WordsBtn> <WordsBtn style="grey" className="fl" to={current_user.first_category_url}>{this.props.coursedata.name}</WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span> <span className="color-grey-9 fl ml3 mr3">&gt;</span>
<WordsBtn style="grey" className="fl" to={`/courses/${this.props.match.params.coursesId}/polls/${user_permission && user_permission.left_banner_id}`}>问卷</WordsBtn> <WordsBtn style="grey" className="fl" to={`/courses/${this.props.match.params.coursesId}/polls/${user_permission && user_permission.left_banner_id}`}>问卷</WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span> <span className="color-grey-9 fl ml3 mr3">&gt;</span>

@ -299,6 +299,7 @@ class PollInfo extends Component{
modalSave, modalSave,
questionPanelFixed questionPanelFixed
}=this.state; }=this.state;
const { current_user } = this.props
let isAdmin=this.props.isAdmin(); let isAdmin=this.props.isAdmin();
let isStudent=this.props.isStudent(); let isStudent=this.props.isStudent();
return( return(
@ -314,7 +315,7 @@ class PollInfo extends Component{
></Modals> ></Modals>
<div className="educontent mt10 mb50"> <div className="educontent mt10 mb50">
<p className="clearfix mb20"> <p className="clearfix mb20">
<WordsBtn style="grey" className="fl" to={`/courses/${this.props.match.params.coursesId}/students`}>{courseName}</WordsBtn> <WordsBtn style="grey" className="fl" to={current_user.first_category_url}>{courseName}</WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span> <span className="color-grey-9 fl ml3 mr3">&gt;</span>
<WordsBtn style="grey" className="fl" to={`/courses/${this.props.match.params.coursesId}/polls/${poll && poll.left_banner_id}`}>问卷</WordsBtn> <WordsBtn style="grey" className="fl" to={`/courses/${this.props.match.params.coursesId}/polls/${poll && poll.left_banner_id}`}>问卷</WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span> <span className="color-grey-9 fl ml3 mr3">&gt;</span>

@ -2320,12 +2320,17 @@ class PollNew extends Component {
} }
gotohome=()=>{ gotohome=()=>{
let courseId=this.props.match.params.coursesId; const { current_user} = this.props
if(courseId===undefined){
this.props.history.push("/courses"); this.props.history.push(current_user.first_category_url);
}else{
this.props.history.push(this.props.current_user.first_category_url);
} // let courseId=this.props.match.params.coursesId;
// if(courseId===undefined){
// this.props.history.push("/courses");
// }else{
// this.props.history.push(this.props.current_user.first_category_url);
// }
} }
//试图 //试图
render() { render() {

Loading…
Cancel
Save