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

dev_cs_new
caishi 6 years ago
commit 3a02cdf9bc

@ -1566,15 +1566,22 @@ class ExercisesController < ApplicationController
def check_user_id_start_answer #判断用户在开始答题时是否有用户id传入,如果为老师则id必需否则为当前用户的id def check_user_id_start_answer #判断用户在开始答题时是否有用户id传入,如果为老师则id必需否则为当前用户的id
user_login = params[:login] user_login = params[:login]
# exercise_current_user_id = params[:user_id]
if user_login.blank? && @user_course_identity < Course::STUDENT #id不存在且当前为老师/管理员等 if user_login.blank? && @user_course_identity < Course::STUDENT #id不存在且当前为老师/管理员等
normal_status(-1,"请输入学生登陆名!") normal_status(-1,"请输入学生登陆名!")
else else
@ex_answerer = User.find_by(login: user_login) #回答者 if @user_course_identity < Course::STUDENT || @exercise.score_open
@ex_answerer = user_login.blank? ? current_user : User.find_by(login: user_login)
else
@ex_answerer = current_user
end
if @ex_answerer.blank? if @ex_answerer.blank?
normal_status(404,"答题用户不存在") normal_status(404,"答题用户不存在")
elsif @user_course_identity > Course::STUDENT && !@exercise.is_public
normal_status(403,"非公开试卷")
else else
@exercise_current_user_id = @ex_answerer.id || current_user.id # @exercise_current_user_id = @ex_answerer.id || current_user.id
@exercise_current_user_id = @ex_answerer.id
end end
end end
end end

@ -5,6 +5,7 @@ json.course_id @course.id
json.school @course.school&.name json.school @course.school&.name
json.class_period @course.class_period json.class_period @course.class_period
json.credit @course.credit json.credit @course.credit
json.start_date @course.start_date
json.end_date @course.end_date json.end_date @course.end_date
json.is_public @course.is_public json.is_public @course.is_public
json.course_module_types @course.course_modules.where(hidden: 0).pluck(:module_type) json.course_module_types @course.course_modules.where(hidden: 0).pluck(:module_type)

@ -38,6 +38,8 @@ namespace :excellent_course_exercise do
rand_num = index < pass_count - 1 ? 20 : rand(1..16) rand_num = index < pass_count - 1 ? 20 : rand(1..16)
elsif exercise_question_ids.length == 17 elsif exercise_question_ids.length == 17
rand_num = index < pass_count - 1 ? rand(13..17) : rand(1..11) rand_num = index < pass_count - 1 ? rand(13..17) : rand(1..11)
elsif exercise_question_ids.length == 39
rand_num = index < pass_count - 1 ? rand(30..39) : rand(1..18)
else else
rand_num = exercise_question_ids.length rand_num = exercise_question_ids.length
end end

@ -722,15 +722,19 @@ class Coursesleftnav extends Component{
let {url}=this.state; let {url}=this.state;
if (key === this.props.indexs) { if (key === this.props.indexs) {
this.props.unlocationNavfun(undefined) this.props.unlocationNavfun(undefined)
this.props.history.replace(urls);
} else { } else {
this.props.unlocationNavfun(key) this.props.unlocationNavfun(key)
this.props.history.replace(urls);
} }
if(urls!=url){ if(urls!=url){
this.props.history.replace(urls); this.props.history.replace(urls);
} }
if(this.props.indexs===undefined){ // if(this.props.indexs===undefined){
this.props.history.replace(urls); //
} // }else{
//
// }
} }
maincontent=(item,key)=>{ maincontent=(item,key)=>{

@ -226,10 +226,11 @@ class DetailCards extends Component{
startshixunCombattype:true, startshixunCombattype:true,
}) })
} else { } else {
window.location.href = "/tasks/" + response.data.game_identifier; // window.location.href = "/tasks/" + response.data.game_identifier;
// window.location.href = path // window.location.href = path
// let path="/tasks/"+response.data.game_identifier; // let path="/tasks/"+response.data.game_identifier;
// this.props.history.push(path); // this.props.history.push(path);
window.open("/tasks/" + response.data.game_identifier);
} }
}).catch((error) => { }).catch((error) => {

@ -26,7 +26,7 @@
height: 158px; height: 158px;
cursor: pointer; cursor: pointer;
} }
.nItem.videoItem:hover .playWrap {.videoItem img.play .nItem.videoItem:hover .playWrap {
display: inline-block; display: inline-block;
} }
.nItem .mask { .nItem .mask {

@ -10,6 +10,7 @@ import { getUploader } from './AliyunUploaderManager'
import { reducer, initialState } from './VideoReducer' import { reducer, initialState } from './VideoReducer'
import { deleteVideoInCloud } from './VideoUtil' import { deleteVideoInCloud } from './VideoUtil'
import uploadIcon from './images/upload.png' import uploadIcon from './images/upload.png'
import uploadHoverIcon from './images/upload_hover.png'
let uploader let uploader
const files = [] const files = []
@ -167,21 +168,29 @@ function VideoUploadList (props) {
const _input = document.getElementById('fileUpload') const _input = document.getElementById('fileUpload')
_input.value = '' _input.value = ''
} }
// uploader.deleteFile(index); function doDelete(index, isSuccess) {
function cancelUpload(index, isSuccess) {
// TODO 确定取消?
uploader.deleteFile(index) uploader.deleteFile(index)
// uploader.cancelFile(index)
if (isSuccess) { if (isSuccess) {
deleteVideoInCloud(username, state.videoes[index].videoId) deleteVideoInCloud(username, state.videoes[index].videoId)
} }
// else {
// uploader.cancelFile(index) clearInput()
// }
clearInput()
dispatch({type: 'removeVideo', index}) dispatch({type: 'removeVideo', index})
// setVideoes([...videoes.splice(index, 1)]) // setVideoes([...videoes.splice(index, 1)])
} }
// uploader.deleteFile(index);
function cancelUpload(index, isSuccess) {
props.confirm({
content: <div>
<div>您确认要{isSuccess ? '删除' : '取消上传'}该视频吗</div>
</div>,
onOk: () => {
doDelete(index, isSuccess)
}
})
}
function onPublish() { function onPublish() {
if (state.videoes.length == 0) { if (state.videoes.length == 0) {
showNotification('请先上传视频') showNotification('请先上传视频')
@ -291,6 +300,26 @@ function VideoUploadList (props) {
border-bottom: none; border-bottom: none;
} }
.noUploads img {
width: 64px;
height: 48px;
}
.noUploads .uploadHoverIcon {
display: none;
}
.noUploads .imgWrap:hover .uploadHoverIcon {
display: inline;
}
.noUploads .imgWrap:hover .uploadIcon {
display: none;
}
.noUploads .imgWrap {
width: 72px;
height: 54px;
margin: 0 auto;
cursor: pointer;
}
`}</style> `}</style>
<CBreadcrumb <CBreadcrumb
className="mb26" className="mb26"
@ -308,8 +337,13 @@ function VideoUploadList (props) {
<div className="section"> <div className="section">
{/* noUploads */} {/* noUploads */}
{noUploads && <div className="noUploads" style={{paddingTop: '72px'}}> {noUploads && <div className="noUploads" style={{paddingTop: '72px'}} >
<img src={uploadIcon} onClick={() => document.getElementById('fileUpload').click()}></img> <div className="imgWrap" onClick={() => document.getElementById('fileUpload').click()}>
<img className="uploadIcon" src={uploadIcon} ></img>
<img className="uploadHoverIcon" src={uploadHoverIcon} ></img>
</div>
<div style={{ <div style={{
color: '#000000', color: '#000000',
fontSize: '18px', fontSize: '18px',

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

Loading…
Cancel
Save