diff --git a/app/assets/javascripts/common.js b/app/assets/javascripts/common.js index fa7bef244..dc0818b64 100644 --- a/app/assets/javascripts/common.js +++ b/app/assets/javascripts/common.js @@ -1,5 +1,6 @@ function createMDEditor(element, opts){ var defaults = { + height: 600, path: '/editormd/lib/', syncScrolling: "single", tex: true, diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb index ac72577e0..916f09430 100644 --- a/app/controllers/games_controller.rb +++ b/app/controllers/games_controller.rb @@ -67,13 +67,19 @@ class GamesController < ApplicationController uri = "#{shixun_tomcat}/bridge/vnc/getvnc" params = {tpiID: @myshixun.id, :containers => "#{Base64.urlsafe_encode64(shixun_container_limit(@shixun))}"} res = uri_post uri, params + logger.info("###############---- ") if res && res['code'].to_i != 0 raise("实训云平台繁忙(繁忙等级:99)") end - # 无域名版本 - #@vnc_url = "http://#{service_host}:#{res['port']}/vnc_lite.html?password=headless" - # 有域名版本 - @vnc_url = "https://#{res['port']}.#{service_host}/vnc_lite.html?password=headless" + + if request.subdomain == "pre-newweb" + # 无域名版本 + @vnc_url = "http://#{service_host}:#{res['port']}/vnc_lite.html?password=headless" + else + # 有域名版本 + @vnc_url = "https://#{res['port']}.#{service_host}/vnc_lite.html?password=headless" + end + @vnc_evaluate = @shixun.vnc_evaluate rescue Exception => e Rails.logger.error(e.message) diff --git a/app/controllers/question_banks_controller.rb b/app/controllers/question_banks_controller.rb index e7be8b395..b4e98e05f 100644 --- a/app/controllers/question_banks_controller.rb +++ b/app/controllers/question_banks_controller.rb @@ -265,6 +265,7 @@ class QuestionBanksController < ApplicationController # exercise.update_column(:quotes, exercise.quotes+1) # end new_exercise if new_exercise.save! + exercise.update_column(:quotes, exercise.quotes+1) end end @@ -292,6 +293,7 @@ class QuestionBanksController < ApplicationController # poll.update_column(:quotes, poll.quotes+1) # end new_poll if new_poll.save! + poll.update_column(:quotes, poll.quotes+1) end end diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index 180c269b5..79e182fef 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -448,6 +448,7 @@ class ShixunsController < ApplicationController ShixunMirrorRepository.create(:shixun_id => @shixun.id, :mirror_repository_id => mirror) end end + logger.info("#########shixun_params#{shixun_params}") @shixun.update_attributes(shixun_params) logger.info("##########shixun_info_params: #{shixun_info_params}") logger.info("##########params[:shixun_info][:evaluate_script]: #{params[:shixun_info][:evaluate_script]}") diff --git a/app/models/gtopic_bank.rb b/app/models/gtopic_bank.rb index af5b267a6..609219711 100644 --- a/app/models/gtopic_bank.rb +++ b/app/models/gtopic_bank.rb @@ -1,7 +1,7 @@ class GtopicBank < ApplicationRecord belongs_to :user - belongs_to :graduation_topic - belongs_to :course_list + belongs_to :graduation_topic, optional: true + belongs_to :course_list, optional: true has_many :attachments, as: :container, dependent: :destroy has_many :graduation_topics, dependent: :nullify diff --git a/app/models/user_extension.rb b/app/models/user_extension.rb index 5a0dc8a37..98afcb165 100644 --- a/app/models/user_extension.rb +++ b/app/models/user_extension.rb @@ -1,6 +1,6 @@ class UserExtension < ApplicationRecord # identity 0: 教师教授 1: 学生, 2: 专业人士, 3: 开发者 - enum identity: { teacher: 0, student: 1, professional: 2, developer: 3 } + enum identity: { teacher: 0, student: 1, professional: 2, developer: 3, cnmooc: 4, unselect: -1 } belongs_to :user, touch: true belongs_to :school, optional: true diff --git a/db/migrate/20190907021100_migrate_bank_reference_id.rb b/db/migrate/20190907021100_migrate_bank_reference_id.rb new file mode 100644 index 000000000..c71034167 --- /dev/null +++ b/db/migrate/20190907021100_migrate_bank_reference_id.rb @@ -0,0 +1,31 @@ +class MigrateBankReferenceId < ActiveRecord::Migration[5.2] + def change + HomeworkBank.all.each do |bank| + if bank.homework_common + bank.homework_common.update_column("homework_bank_id", bank.id) if bank.homework_common.homework_bank_id.nil? + end + end + + GtopicBank.all.each do |bank| + if bank.graduation_topic + bank.graduation_topic.update_column("gtopic_bank_id", bank.id) if bank.graduation_topic.gtopic_bank_id.nil? + end + end + + GtaskBank.all.each do |bank| + if bank.graduation_task + bank.graduation_task.update_column("gtask_bank_id", bank.id) if bank.graduation_task.gtask_bank_id.nil? + end + end + + ExerciseBank.all.each do |bank| + if bank.container_type == 'Exercise' + exercise = Exercise.find_by(id: bank.container_id) + exercise.update_column("exercise_bank_id", bank.id) if exercise && exercise.exercise_bank_id.nil? + elsif bank.container_type == 'Poll' + poll = Poll.find_by(id: bank.container_id) + poll.update_column("exercise_bank_id", bank.id) if poll && poll.exercise_bank_id.nil? + end + end + end +end diff --git a/public/images/educoder/path.png b/public/images/educoder/path.png index d29dae522..1461d47e6 100644 Binary files a/public/images/educoder/path.png and b/public/images/educoder/path.png differ diff --git a/public/react/src/images/path/path.png b/public/react/src/images/path/path.png index 594358959..1461d47e6 100644 Binary files a/public/react/src/images/path/path.png and b/public/react/src/images/path/path.png differ diff --git a/public/react/src/modules/courses/busyWork/common/TabRightComponents.js b/public/react/src/modules/courses/busyWork/common/TabRightComponents.js index 34044330d..25ae55203 100644 --- a/public/react/src/modules/courses/busyWork/common/TabRightComponents.js +++ b/public/react/src/modules/courses/busyWork/common/TabRightComponents.js @@ -63,7 +63,7 @@ class TabRightComponents extends Component{ }) } }else { - this.props.slowDownload(url) + this.props.slowDownload(url); // this.props.showNotification(`正在下载中`); // window.open("/api"+url, '_blank'); } diff --git a/public/react/src/modules/courses/poll/PollNewQuestbank.js b/public/react/src/modules/courses/poll/PollNewQuestbank.js index b38bfccfd..ad68530e7 100644 --- a/public/react/src/modules/courses/poll/PollNewQuestbank.js +++ b/public/react/src/modules/courses/poll/PollNewQuestbank.js @@ -302,7 +302,7 @@ class PollNewQuestbank extends Component { {content:'编辑'} ] } - this.props.initPublic(crumbData,response.data); + this.props.initPublic(crumbData,result.data); }catch (e) { } diff --git a/public/react/src/modules/courses/shixunHomework/Listofworksstudentone.js b/public/react/src/modules/courses/shixunHomework/Listofworksstudentone.js index 3db3846fe..71ce6a4ea 100644 --- a/public/react/src/modules/courses/shixunHomework/Listofworksstudentone.js +++ b/public/react/src/modules/courses/shixunHomework/Listofworksstudentone.js @@ -67,7 +67,7 @@ class Listofworksstudentone extends Component { pages: 1, limit: 20, loadingstate: true, - order: "update_time", + order: "", search: null, day: 0, hour: 0, @@ -130,30 +130,30 @@ class Listofworksstudentone extends Component { {record.name === undefined ? -- : record.name === "" ? -- : record.name === null ? -- : record.name === "--" ? -- : {record.name} } @@ -167,24 +167,23 @@ class Listofworksstudentone extends Component { key: 'stduynumber', align: "center", className:'font-14 maxnamewidth110', - width:'110px', render: (text, record) => ( {record.stduynumber === undefined ? -- : record.stduynumber === null ? -- : record.stduynumber === "" ? -- @@ -193,8 +192,8 @@ class Listofworksstudentone extends Component { title={record.stduynumber} className="maxnamewidth110" style={{ - color: '#9A9A9A', - textAlign: "center" + "color": '#9A9A9A', + textAlign: "center" }}>{ record.stduynumber } @@ -214,7 +213,7 @@ class Listofworksstudentone extends Component { render: (text, record) => ( {record.classroom === undefined ? "--" : record.classroom === "" ? "--" : record.classroom === null ? "--" : record.classroom} @@ -229,10 +228,10 @@ class Listofworksstudentone extends Component { render: (text, record) => ( {record.submitstate === undefined ? "--" : record.submitstate === "" ? "--" : record.submitstate === null ? "--" : record.submitstate} @@ -251,26 +250,37 @@ class Listofworksstudentone extends Component { color: '#747A7F', textAlign: "center" } - }>{record.cost_time === null ? "--":record.cost_time === undefined ?"--":record.cost_time } - + }> + {record.cost_time === null? "--":record.cost_time === undefined?"--": + {record.cost_time === null ? "--":record.cost_time === undefined ?"--":record.cost_time} + + } + ) }, - { - title: '更新时间', - dataIndex: 'updatetime', - key: 'updatetime', - align: "center", - className:'font-14', - render: (text, record) => ( - - {record.updatetime === undefined ? "--" : record.updatetime === "" ? "--" : record.updatetime} - - ), - }, + // { + // title: '更新时间', + // dataIndex: 'updatetime', + // key: 'updatetime', + // align: "center", + // className:'font-14', + // render: (text, record) => ( + // + // {record.updatetime === undefined ? "--" : record.updatetime === "" ? "--" : record.updatetime} + // + // ), + // }, { title: '完成情况', dataIndex: 'completion', @@ -279,7 +289,7 @@ class Listofworksstudentone extends Component { className:'font-14', render: (text, record) => ( - {record.completion+"/"+this.state.challenges_count} + {record.completion+"/"+this.state.challenges_count} ), }, @@ -379,7 +389,7 @@ class Listofworksstudentone extends Component { }, ], - orders: "update_time", + orders: "", b_order:"desc", allow_late:false, checkedValuesine: undefined, @@ -395,8 +405,8 @@ class Listofworksstudentone extends Component { course_group: null, publish_immediately: undefined, end_immediately: undefined, - mystyle: {"display": "block", color: '#07111B', textAlign: "center"}, - mystyles: {"display": "none", color: '#07111B', textAlign: "center"}, + mystyle: {"display": "block", "color": '#07111B', textAlign: "center"}, + mystyles: {"display": "none", "color": '#07111B', textAlign: "center"}, mystyle1: {"display": "block"}, mystyles1: {"display": "none"}, unlimited: 0, @@ -413,7 +423,7 @@ class Listofworksstudentone extends Component { align: 'center', className:'font-14', render: (text, record) => ( - {record.number} + {record.number} ) }, @@ -425,7 +435,7 @@ class Listofworksstudentone extends Component { className:'font-14 maxnamewidth100', width:'100px', render: (text, record) => ( - {record.name} + {record.name} ) }, { @@ -434,7 +444,6 @@ class Listofworksstudentone extends Component { key: 'stduynumber', align: "center", className:'font-14 maxnamewidth110', - width:'110px', render: (text, record) => ( {record.stduynumber === undefined ? @@ -480,7 +489,7 @@ class Listofworksstudentone extends Component { className:'font-14', render: (text, record) => ( - {record.classroom === undefined ? -- : record.classroom === "" ? --: record.classroom === null ? -- : {record.classroom}} + {record.classroom === undefined ? -- : record.classroom === "" ? --: record.classroom === null ? -- : {record.classroom}} ) }, @@ -514,21 +523,41 @@ class Listofworksstudentone extends Component { color: '#747A7F', textAlign: "center" } - }>{record.cost_time === null ? "--":record.cost_time === undefined ?"--":record.cost_time } - + }> + {record.cost_time === null? "--":record.cost_time === undefined?"--": + {record.cost_time === null ? "--":record.cost_time === undefined ?"--":record.cost_time} + + } + + // {record.cost_time === null ? "--":record.cost_time === undefined ?"--":record.cost_time } + // ) }, - { - title: '更新时间', - dataIndex: 'updatetime', - key: 'updatetime', - align: 'center', - className:'font-14', - render: (text, record) => ( - {record.updatetime} - ), - }, + // { + // title: '更新时间', + // dataIndex: 'updatetime', + // key: 'updatetime', + // align: 'center', + // className:'font-14', + // render: (text, record) => ( + // {record.updatetime} + // ), + // }, { title: '完成情况', dataIndex: 'completion', @@ -541,7 +570,7 @@ class Listofworksstudentone extends Component {
已通过{record.completion}关,共{this.state.challenges_count}关
}> - {record.completion+"/"+this.state.challenges_count} + {record.completion+"/"+this.state.challenges_count}
@@ -556,14 +585,14 @@ class Listofworksstudentone extends Component { render: (text, record) => ( = 90 ? {color: '#DD1717', textAlign: "center"} : { - color: '#747A7F', - textAlign: "center" + "color": '#FF6800', + "text-align": "center" + } : parseInt(record.levelscore) >= 90 ? {"color": '#DD1717', "text-align": "center"} : { + "color": '#747A7F', + "text-align": "center" }}>{record.levelscore} ) @@ -602,15 +631,15 @@ class Listofworksstudentone extends Component { ) : = 90 ? { - color: '#DD1717', - textAlign: "center" - } : {color: '#747A7F', textAlign: "center"}}>{record.efficiencyscore} + "color": '#DD1717', + "text-align": "center" + } : {"color": '#747A7F', "text-align": "center"}}>{record.efficiencyscore} } @@ -634,19 +663,19 @@ class Listofworksstudentone extends Component { record.finalscore&&record.finalscore==="--"? {record.finalscore} : = 90 ? {color: '#DD1717', textAlign: "center"} : { - color: '#747A7F', - textAlign: "center" + "color": '#FF6800', + "text-align": "center" + } : parseInt(record.finalscore) >= 90 ? {"color": '#DD1717', "text-align": "center"} : { + "color": '#747A7F', + "text-align": "center" }}>{record.finalscore} } @@ -662,19 +691,19 @@ class Listofworksstudentone extends Component { record.finalscore&&record.finalscore==="--"? {record.finalscore} : = 90 ? {color: '#DD1717', textAlign: "center"} : { - color: '#747A7F', - textAlign: "center" + "color": '#FF6800', + "text-align": "center" + } : parseInt(record.finalscore) >= 90 ? {"color": '#DD1717', "text-align": "center"} : { + "color": '#747A7F', + "text-align": "center" }}>{record.finalscore} } @@ -707,7 +736,7 @@ class Listofworksstudentone extends Component { align: 'center', className:'font-14', render: (text, record) => ( - {record.number} + {record.number} ) }, @@ -719,7 +748,7 @@ class Listofworksstudentone extends Component { className:'font-14 maxnamewidth100', width:'100px', render: (text, record) => ( - {record.name} + {record.name} ) }, { @@ -728,25 +757,24 @@ class Listofworksstudentone extends Component { key: 'stduynumber', align: "center", className:'font-14 maxnamewidth110', - width:'110px', render: (text, record) => ( {record.stduynumber === undefined ? -- : record.stduynumber === null ? -- : record.stduynumber === "" ? -- : @@ -774,7 +802,7 @@ class Listofworksstudentone extends Component { className:'font-14', render: (text, record) => ( - {record.classroom === undefined ? -- : record.classroom === "" ? --: record.classroom === null ? -- : {record.classroom}} + {record.classroom === undefined ? -- : record.classroom === "" ? --: record.classroom === null ? -- : {record.classroom}} ) }, @@ -796,16 +824,16 @@ class Listofworksstudentone extends Component { ) }, - { - title: '更新时间', - dataIndex: 'updatetime', - key: 'updatetime', - align: 'center', - className:'font-14', - render: (text, record) => ( - {record.updatetime} - ), - }, + // { + // title: '更新时间', + // dataIndex: 'updatetime', + // key: 'updatetime', + // align: 'center', + // className:'font-14', + // render: (text, record) => ( + // {record.updatetime} + // ), + // }, { title: '实战耗时', dataIndex: 'cost_time', @@ -818,10 +846,20 @@ class Listofworksstudentone extends Component { color: '#747A7F', textAlign: "center" } - }>{record.cost_time === null ? "--":record.cost_time === undefined ?"--":record.cost_time } - + }> + {record.cost_time === null ? "--":record.cost_time === undefined ?"--": + {record.cost_time === null ? "--":record.cost_time === undefined ?"--":record.cost_time} + + } + ) - }, { title: '完成情况', @@ -904,7 +942,7 @@ class Listofworksstudentone extends Component { } : parseInt(record.efficiencyscore) >= 90 ? { color: '#DD1717', textAlign: "center" - } : {color: '#747A7F', textAlign: "center"}}>{record.efficiencyscore} + } : {color: '#747A7F',textAlign: "center"}}>{record.efficiencyscore} } @@ -1031,8 +1069,6 @@ class Listofworksstudentone extends Component { // console.log(this.props); // console.log(this.props.isAdmin()) this.student(); - console.log("Listofworksstudentone---------------"); - console.log(this.props); } isupdatas = () => { var homeworkid = this.props.match.params.homeworkid; @@ -1658,9 +1694,9 @@ class Listofworksstudentone extends Component { var homeworkid = this.props.match.params.homeworkid; let urll = `/homework_commons/${homeworkid}/works_list.json?`; var order = "asc"; - if (ordervlue === "update_time") { - order = "desc"; - } + // if (ordervlue === "update_time") { + // order = "desc"; + // } var checkedValuesines = checkedValuesine; var checkedValuesineinfos = checkedValuesineinfo; var searchtexts = searchtext @@ -2067,15 +2103,15 @@ class Listofworksstudentone extends Component { } //排序 funordert = (e) => { - if (e === "update_time") { - // 时间 - // 时间排序是从小到大 - this.setState({ - orders: "update_time", - loadingstate: true, - }) - this.Startsortingt("update_time", this.state.course_groupyslstwo, this.state.checkedValuesineinfo, this.state.searchtext, this.state.page, this.state.limit); - } + // if (e === "update_time") { + // // 时间 + // // 时间排序是从小到大 + // this.setState({ + // orders: "update_time", + // loadingstate: true, + // }) + // this.Startsortingt("update_time", this.state.course_groupyslstwo, this.state.checkedValuesineinfo, this.state.searchtext, this.state.page, this.state.limit); + // } if (e === "work_score") { // 成绩 @@ -2475,8 +2511,9 @@ class Listofworksstudentone extends Component { }) } }else { - this.props.showNotification(`正在下载中`); - window.open("/api"+url, '_blank'); + // this.props.showNotification(`正在下载中`); + // window.open("/api"+url, '_blank'); + this.props.slowDownload(url); } }).catch((error) => { console.log(error) @@ -2494,12 +2531,27 @@ class Listofworksstudentone extends Component { let {columns,course_groupysls,datajs,isAdmin, course_groupyslstwo, unlimited, unlimitedtwo, course_group_info, orders, task_status, checkedValuesine, searchtext, teacherlist, visible,visibles, game_list,columnsstu, limit,experience, boolgalist,viewtrainingdata, teacherdata, page, data, jobsettingsdata, styletable, datas, order, loadingstate,computeTimetype} = this.state; const antIcon = ; - + // console.log(this.state.student_works); + // console.log("841"); + // console.log(this.state.columns); + // console.log(datajs); + // console.log("2202"); + // console.log(this.props.isAdmin()); + // console.log("2498"); + // console.log(data); + // console.log(datas); + // console.log(this.props.isAdmin()); let course_is_end = this.props.current_user&&this.props.current_user.course_is_end; - - console.log("Listofworksstudentone+++++++++"); - console.log(this.props); + // if(this.props.isAdmin() === false){ + // if(teacherdata.student_works!==undefined){ + // if(teacherdata.student_works.length>0){ + // + // + // } + // } + // + // } return ( this.props.isAdmin() === true ? ( @@ -2749,10 +2801,10 @@ class Listofworksstudentone extends Component { */} diff --git a/public/react/src/modules/courses/shixunHomework/style.css b/public/react/src/modules/courses/shixunHomework/style.css index f2b0c39ed..c2affa32c 100644 --- a/public/react/src/modules/courses/shixunHomework/style.css +++ b/public/react/src/modules/courses/shixunHomework/style.css @@ -38,14 +38,14 @@ .TopicDetailTable .bottomBody li:last-child{border-bottom: none;} .maxnamewidth100{ - max-width: 100px; + max-width: 145px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; cursor: default; } .maxnamewidth110{ - max-width: 110px; + max-width: 145px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; diff --git a/public/react/src/modules/page/MainContent.js b/public/react/src/modules/page/MainContent.js index d8623d84b..21524e627 100644 --- a/public/react/src/modules/page/MainContent.js +++ b/public/react/src/modules/page/MainContent.js @@ -100,6 +100,9 @@ class MainContent extends Component { vnc_url={vnc_url} {...this.props} > +
+ +
: diff --git a/public/react/src/modules/page/main/ActionView.js b/public/react/src/modules/page/main/ActionView.js index 4933ba0ac..e475b999c 100644 --- a/public/react/src/modules/page/main/ActionView.js +++ b/public/react/src/modules/page/main/ActionView.js @@ -150,7 +150,7 @@ class ActionView extends Component { -
+ {(!shixun.vnc || shixun.vnc_evaluate) &&
{ st === 1 && game.status === 2 ? @@ -174,7 +174,7 @@ class ActionView extends Component { 测评 } -
+
} ); /* diff --git a/public/react/src/modules/tpm/TPMsettings/TPMsettings.js b/public/react/src/modules/tpm/TPMsettings/TPMsettings.js index f1184e7b7..a8917fd02 100644 --- a/public/react/src/modules/tpm/TPMsettings/TPMsettings.js +++ b/public/react/src/modules/tpm/TPMsettings/TPMsettings.js @@ -355,6 +355,7 @@ export default class TPMsettings extends Component { code_hidden: response.data.shixun.code_hidden, forbid_copy: response.data.shixun.forbid_copy, vnc: response.data.shixun.vnc, + vnc_evaluate: response.data.shixun.vnc_evaluate, name: response.data.shixun.name, scope_partment: response.data.shixun.scope_partment, description: response.data.shixun.description, @@ -535,6 +536,12 @@ export default class TPMsettings extends Component { forbid_copy: sum, }); } + shixun_vnc_evaluate=(e) => { + this.setState({ + vnc_evaluate: e.target.checked, + }); + + } shixun_vnc=(e)=>{ // let sum = "" @@ -545,6 +552,7 @@ export default class TPMsettings extends Component { // } this.setState({ vnc: e.target.checked, + vnc_evaluate: false, }); } @@ -772,7 +780,7 @@ export default class TPMsettings extends Component { } let { - name, choice_main_type, choice_small_type, choice_standard_scripts, scope_partment, choice_standard_scriptssum, + name, choice_main_type, choice_small_type, choice_standard_scripts, scope_partment, choice_standard_scriptssum, vnc_evaluate, evaluate_script, webssh, use_scope, trainee, can_copy, task_pass, test_set_permission, hide_code, code_hidden, forbid_copy, vnc,multi_webssh, opening_time,shixunmemoMDvalue,shixun_service_configlist } = this.state; @@ -883,6 +891,7 @@ export default class TPMsettings extends Component { use_scope: use_scope, can_copy: can_copy, vnc: vnc===null?undefined:vnc, + vnc_evaluate: vnc_evaluate===null?undefined:vnc_evaluate, test_set_permission: test_set_permission, code_hidden: code_hidden, trainee: trainee, @@ -1464,6 +1473,7 @@ export default class TPMsettings extends Component { forbid_copy, code_hidden, vnc, + vnc_evaluate, scopetype, scope_partment, departmentslist, @@ -1643,8 +1653,6 @@ export default class TPMsettings extends Component { // onMouseEnter={operateauthority?this.bigopen:""} onSelect={operateauthority?this.bigopens:""} // open={opers} - - showSearch optionFilterProp="children" filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0 @@ -2222,12 +2230,21 @@ export default class TPMsettings extends Component { {this.props.identity<3?
VNC图形化: - - - - + + + + +
:""} + {this.props.identity<3 && vnc ?
+ VNC图形化评测: + + + +
:""} + + {this.props.identity<3?