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

dev_hjm
hjm 6 years ago
commit e68241c064

@ -190,7 +190,7 @@ class ApplicationController < ActionController::Base
def check_account def check_account
if !current_user.profile_completed? if !current_user.profile_completed?
info_url = '/account/profile' info_url = '/account/profile'
tip_exception(402, info_url) tip_exception(402, '')
end end
end end

@ -265,10 +265,10 @@ class MyshixunsController < ApplicationController
# params[:evaluate] 实训评测时更新必须给的参数,需要依据该参数做性能统计,其它类型的更新可以跳过 # params[:evaluate] 实训评测时更新必须给的参数,需要依据该参数做性能统计,其它类型的更新可以跳过
# 自动保存的时候evaluate为0点评测的时候为1 # 自动保存的时候evaluate为0点评测的时候为1
if params[:evaluate] == 1 if params[:evaluate] == 1
#exec_time = game.challenge.try(:exec_time) exec_time = game.challenge.try(:exec_time)
@sec_key = generate_identifier(EvaluateRecord, 12) @sec_key = generate_identifier(EvaluateRecord, 12)
record = EvaluateRecord.create!(:user_id => current_user.id, :shixun_id => @myshixun.shixun_id, :game_id => game_id, record = EvaluateRecord.create!(:user_id => current_user.id, :shixun_id => @myshixun.shixun_id, :game_id => game_id,
:identifier => @sec_key) :identifier => @sec_key, :exec_time => exec_time)
uid_logger("-- game build: file update #{@sec_key}, record id is #{record.id}, time is **** #{Time.now.strftime("%Y-%m-%d %H:%M:%S.%L")}") uid_logger("-- game build: file update #{@sec_key}, record id is #{record.id}, time is **** #{Time.now.strftime("%Y-%m-%d %H:%M:%S.%L")}")
end end
unless @hide_code unless @hide_code

@ -1,73 +1,131 @@
class ModifyKeContentsForMarkdown < ActiveRecord::Migration[5.2] class ModifyKeContentsForMarkdown < ActiveRecord::Migration[5.2]
include ActionView::Helpers::SanitizeHelper include ActionView::Helpers::SanitizeHelper
def change def change
def ke_transform_to_md content # def ke_transform_to_md content
sanitize(content, tags: %w(img a span), attributes: %w(src href target style)) # sanitize(content, tags: %w(img a span), attributes: %w(src href target style))
.gsub(/^(\n)/, "").gsub(/(\n)+/, "<br />").gsub(/$(\n)/, "") # .gsub(/^(\n)/, "").gsub(/(\n)+/, "<br />").gsub(/$(\n)/, "")
.gsub(/(\n)+/, "<br />").gsub("\t", "&nbsp;&nbsp;&nbsp;&nbsp;") # .gsub(/(\n)+/, "<br />").gsub("\t", "&nbsp;&nbsp;&nbsp;&nbsp;")
end # end
#
# 课程讨论区 # # 课程讨论区
MessageDetail.find_each do |m| # MessageDetail.find_each do |m|
content = ke_transform_to_md m.content # content = ke_transform_to_md m.content
puts("content:#{content}") # puts("content:#{content}")
m.update_column(:content, content) # m.update_column(:content, content)
end # end
#
# 试卷的描述 # # 试卷的描述
Exercise.find_each do |e| # Exercise.find_each do |e|
exercise_description = ke_transform_to_md e.exercise_description # exercise_description = ke_transform_to_md e.exercise_description
puts("#exercise_description: #{exercise_description}") # puts("#exercise_description: #{exercise_description}")
e.update_column(:exercise_description, exercise_description) # e.update_column(:exercise_description, exercise_description)
end # end
#
# 试卷的标题 # # 试卷的标题
ExerciseQuestion.find_each do |eq| # ExerciseQuestion.find_each do |eq|
question_title = ke_transform_to_md eq.question_title # question_title = ke_transform_to_md eq.question_title
puts("question_title:#{question_title}") # puts("question_title:#{question_title}")
eq.update_column(:question_title, question_title) # eq.update_column(:question_title, question_title)
end # end
#
# 试卷的答案 # # 试卷的答案
ExerciseStandardAnswer.find_each do |esa| # ExerciseStandardAnswer.find_each do |esa|
answer_text = ke_transform_to_md esa.answer_text # answer_text = ke_transform_to_md esa.answer_text
puts("answer_text: #{answer_text}") # puts("answer_text: #{answer_text}")
esa.update_column(:answer_text, answer_text) # esa.update_column(:answer_text, answer_text)
end # end
#
# 试卷题库 # # 试卷题库的问题标题
ExerciseBankQuestion.find_each do |ebq| # ExerciseBankQuestion.find_each do |ebq|
question_title = ke_transform_to_md ebq.question_title # question_title = ke_transform_to_md ebq.question_title
puts("#question_title: #{question_title}") # puts("#question_title: #{question_title}")
end # ebq.update_column(:question_title, question_title)
# end
#
# 问卷的标题 # # 试卷答案
PollQuestion.find_each do |pq| # ExerciseBankStandardAnswer.find_each do |ebsa|
question_title = ke_transform_to_md pq.question_title # answer_text = ke_transform_to_md ebsa.answer_text
puts("question_title:#{question_title}") # puts("#answer_text: #{answer_text}")
pq.update_column(:question_title, question_title) # ebsa.update_column(:answer_text, answer_text)
end # end
#
# # 问卷的标题
# PollQuestion.find_each do |pq|
# question_title = ke_transform_to_md pq.question_title
StudentWork # puts("question_title:#{question_title}")
HomeworkCommon # pq.update_column(:question_title, question_title)
JournalsForMessage # end
GraduationTask #
GraduationTopic # # 学生的作品
GraduationWork # StudentWork.find_each do |sw|
GtaskBank # description = ke_transform_to_md sw.description
GtopicBank # puts("#description: #{description}")
HomeworkBank # sw.update_column(:description, description)
QuestionBank # end
#
ExerciseBankStandardAnswer # # 作业
Memo # HomeworkCommon.find_each do |hc|
# description = ke_transform_to_md hc.description
# reference_answer = ke_transform_to_md hc.reference_answer
# explanation = ke_transform_to_md hc.explanation
# hc.update_attributes(description: description, reference_answer: reference_answer, explanation: explanation)
# end
#
# # 作业题库
# HomeworkBank.find_each do |hb|
# description = ke_transform_to_md hb.description
# reference_answer = ke_transform_to_md hb.reference_answer
# hb.update_attributes(description: description, reference_answer: reference_answer)
# end
#
# # 课堂评论
# JournalsForMessage.find_each do |jfm|
# notes = ke_transform_to_md jfm.notes
# puts("#notes: #{notes}")
# jfm.update_column(:notes, notes)
# end
#
# # 毕业任务
# GraduationTask.find_each do |gt|
# description = ke_transform_to_md gt.description
# puts("#description: #{description}")
# gt.update_column(:description, description)
# end
#
# # 毕设选题
# GraduationTopic.find_each do |gt|
# description = ke_transform_to_md gt.description
# puts("#description: #{description}")
# gt.update_column(:description, description)
# end
#
# # 毕设作品
# GraduationWork.find_each do |gw|
# description = ke_transform_to_md gw.description
# puts("#description: #{description}")
# gw.update_column(:description, description)
# end
#
# # 毕设任务题库
# GtaskBank.find_each do |gb|
# description = ke_transform_to_md gb.description
# puts("#description: #{description}")
# gb.update_column(:description, description)
# end
#
# # 毕设选题题库
# GtopicBank.find_each do |gb|
# description = ke_transform_to_md gb.description
# puts("#description: #{description}")
# gb.update_column(:description, description)
# end
#
# # 交流问答
# Memo.find_each do |m|
# content = ke_transform_to_md m.content
# puts("#description: #{content}")
# m.update_column(:content, content)
# end
end end
end end

@ -40,6 +40,7 @@ class CaseNew extends Component{
imageUrl:undefined, imageUrl:undefined,
loading: false, loading: false,
checkTag:false, checkTag:false,
checkFile:false,
coverID:undefined coverID:undefined
} }
} }
@ -89,10 +90,12 @@ class CaseNew extends Component{
let contentFileList = info.fileList; let contentFileList = info.fileList;
this.setState({ contentFileList: appendFileSizeToUploadFileAll(contentFileList)}); this.setState({ contentFileList: appendFileSizeToUploadFileAll(contentFileList)});
let list = appendFileSizeToUploadFileAll(contentFileList); let list = appendFileSizeToUploadFileAll(contentFileList);
let arr = list.map(item=>{
return ( item.response && item.response.id )
})
this.setState({ this.setState({
filesID:list.map(item=>{ filesID:arr,
return ( item.response && item.response.id ) checkFile:arr.length > 0 ? false : true
})
}) })
console.log("fujian"); console.log("fujian");
console.log(list.map(item=>{ console.log(list.map(item=>{
@ -165,7 +168,7 @@ class CaseNew extends Component{
let caseID = this.props.match.params.caseID; let caseID = this.props.match.params.caseID;
console.log(type); console.log(type);
this.props.form.validateFieldsAndScroll((err, values) => { this.props.form.validateFieldsAndScroll((err, values) => {
let { casesTags } = this.state; let { casesTags , filesID } = this.state;
if(casesTags.length == 0){ if(casesTags.length == 0){
$("html").animate({ scrollTop: $("#tagFormItem").offset().top - 100 }); $("html").animate({ scrollTop: $("#tagFormItem").offset().top - 100 });
this.setState({ this.setState({
@ -173,6 +176,13 @@ class CaseNew extends Component{
}) })
return; return;
} }
if(filesID.length == 0){
$("html").animate({ scrollTop: $("#fileFormItem").offset().top - 100 });
this.setState({
checkFile:true
})
return;
}
//const mdContnet = this.DescMdRef.current.getValue().trim(); //const mdContnet = this.DescMdRef.current.getValue().trim();
console.log(values); console.log(values);
let url = caseID ? `/libraries/${caseID}.json`: `/libraries.json`; let url = caseID ? `/libraries/${caseID}.json`: `/libraries.json`;
@ -235,7 +245,7 @@ class CaseNew extends Component{
render(){ render(){
let { caseID } = this.props.match.params; let { caseID } = this.props.match.params;
let { CaseDetail } = this.props; let { CaseDetail } = this.props;
let { casesTags , contentFileList , imageUrl , checkTag } = this.state; let { casesTags , contentFileList , imageUrl , checkTag , checkFile } = this.state;
const {getFieldDecorator} = this.props.form; const {getFieldDecorator} = this.props.form;
@ -363,11 +373,14 @@ class CaseNew extends Component{
watch={true} className="caseMessageMD" initValue={CaseDetail && CaseDetail.content}></TPMMDEditor> watch={true} className="caseMessageMD" initValue={CaseDetail && CaseDetail.content}></TPMMDEditor>
)} )}
</Form.Item> </Form.Item>
<div style={{marginLeft:"76px"}}> <div className={checkFile == true ? "clearfix mb20 pr has-error" : "clearfix mb20"} id="fileFormItem" style={{marginLeft:"76px"}}>
<Dragger {...uploadProps} className="librariesField upload_1"> <Dragger {...uploadProps} className="librariesField upload_1">
<p className="ant-upload-text color-blue font-18 mb20">上传附件</p> <p className="ant-upload-text color-blue font-18 mb20">上传附件</p>
<p className="ant-upload-text color-grey-c">从我的电脑选择要上传的文档按住CTRL可以上传多份文档单个文件最大限制150MB</p> <p className="ant-upload-text color-grey-c">从我的电脑选择要上传的文档按住CTRL可以上传多份文档单个文件最大限制150MB</p>
</Dragger> </Dragger>
{
checkFile && <div style={{left:"0px",bottom:"-21px"}} class="ant-form-explain">请先上传附件</div>
}
</div> </div>
<p className="lineh-25 mt20 mb10 clearfix"> <p className="lineh-25 mt20 mb10 clearfix">
<span className="upload_Title" style={{marginRight:"12px"}}>封面图</span><span class="color-grey-c fl lineh-35">120*90 px</span> <span className="upload_Title" style={{marginRight:"12px"}}>封面图</span><span class="color-grey-c fl lineh-35">120*90 px</span>

Loading…
Cancel
Save