@ -5,14 +5,17 @@ class ExerciseController < ApplicationController
before_filter :find_course , :only = > [ :index , :new , :create , :student_exercise_list ]
include ExerciseHelper
include ExerciseHelper
def index
if @course . is_public == 0 && ! User . current . member_of_course? ( @course )
render_403
return
end
remove_invalid_exercise ( @course )
@is_teacher = User . current . allowed_to? ( :as_teacher , @course )
if @is_teacher
exercises = @course . exercises
exercises = @course . exercises . order ( " created_at asc " )
else
exercises = @course . exercises . where ( :exercise_status = > 2 )
exercises = @course . exercises . where ( :exercise_status = > 2 ) . order ( " created_at asc " )
end
@exercises = paginateHelper exercises , 20 #分页
respond_to do | format |
@ -31,17 +34,24 @@ class ExerciseController < ApplicationController
render_403
return
end
@can_edit_excercise = ( ! has_commit_exercise? ( @exercise . id , User . current . id ) ) || User . current . admin?
exercise_end = Time . parse ( format_time ( @exercise . end_time ) ) . strftime ( " %Y-%m-%d %H:%M:%S " ) > Time . now . strftime ( " %Y-%m-%d %H:%M:%S " )
if @exercise . time == - 1
@can_edit_excercise = exercise_end
else
@can_edit_excercise = ( ! has_commit_exercise? ( @exercise . id , User . current . id ) && exercise_end ) || User . current . admin?
end
@exercise_user = ExerciseUser . where ( " user_id=? and exercise_id=? " , User . current . id , @exercise . id ) . first
# 学生点击的时候即创建关联,自动保存
#eu = ExerciseUser.create(:user_id => User.current, :exercise_id => @exercise.id, :start_at => Time.now, :status => false)
# 已提交问卷的用户不能再访问该界面
= begin
if has_commit_exercise? ( @exercise . id , User . current . id ) && ( ! User . current . admin? )
respond_to do | format |
format . html { render :layout = > 'base_courses' }
end
else
= end
if ! @is_teacher && ! has_click_exercise? ( @exercise . id , User . current . id )
eu = ExerciseUser . create ( :user_id = > User . current . id , :exercise_id = > @exercise . id , :start_at = > Time . now , :status = > false )
@exercise_user = ExerciseUser . where ( " user_id=? and exercise_id=? " , User . current . id , @exercise . id ) . first
@ -52,7 +62,7 @@ class ExerciseController < ApplicationController
respond_to do | format |
format . html { render :layout = > 'base_courses' }
end
end
# end
end
def new
@ -65,7 +75,6 @@ class ExerciseController < ApplicationController
:end_time = > " " ,
:publish_time = > " " ,
:exercise_description = > " " ,
:show_result = > " " ,
:show_result = > 1
}
@exercise = Exercise . create option
@ -80,7 +89,7 @@ class ExerciseController < ApplicationController
exercise || = Exercise . new
exercise . exercise_name = params [ :exercise ] [ :exercise_name ]
exercise . exercise_description = params [ :exercise ] [ :exercise_description ]
exercise . end_time = params [ :exercise ] [ :end_time ]
exercise . end_time = Time . at ( params [ :exercise ] [ :end_time ] . to_time . to_i + 16 * 60 * 60 - 1 )
exercise . publish_time = params [ :exercise ] [ :publish_time ]
exercise . user_id = User . current . id
exercise . time = params [ :exercise ] [ :time ]
@ -104,10 +113,10 @@ class ExerciseController < ApplicationController
def update
@exercise . exercise_name = params [ :exercise ] [ :exercise_name ]
@exercise . exercise_description = params [ :exercise ] [ :exercise_description ]
@exercise . time = params [ :exercise ] [ :time ]
@exercise . end_time = params [ :exercise ] [ :end_time ]
@exercise . time = params [ :exercise ] [ :time ] . blank? ? - 1 : params [ :exercise ] [ :time ]
@exercise . end_time = Time . at ( params [ :exercise ] [ :end_time ] . to_time . to_i + 16 * 60 * 60 - 1 )
@exercise . publish_time = params [ :exercise ] [ :publish_time ]
@exercise . show_result = params [ :exercise ] [ :show_result ]
@exercise . show_result = params [ :exercise ] [ :show_result ] . blank? ? 1 : params [ :exercise ] [ :show_result ]
if @exercise . save
respond_to do | format |
format . js
@ -300,6 +309,7 @@ class ExerciseController < ApplicationController
# 发布试卷
def publish_exercise
@is_teacher = User . current . allowed_to? ( :as_teacher , @course )
@index = params [ :index ]
@exercise . exercise_status = 2
@exercise . publish_time = Time . now
if @exercise . save
@ -314,11 +324,13 @@ class ExerciseController < ApplicationController
# 重新发布的时候会删除所有的答题
def republish_exercise
@is_teacher = User . current . allowed_to? ( :as_teacher , @course )
@index = params [ :index ]
@exercise . exercise_questions . each do | exercise_question |
exercise_question . exercise_answers . destroy_all
end
@exercise . exercise_users . destroy_all
@exercise . exercise_status = 1
@exercise . publish_time = nil
@exercise . save
respond_to do | format |
format . js
@ -328,7 +340,7 @@ class ExerciseController < ApplicationController
def student_exercise_list
@is_teacher = User . current . allowed_to? ( :as_teacher , @course ) || User . current . admin?
@exercise = Exercise . find params [ :id ]
@all_exercises = @course . exercises . order( " created_at desc " )
@all_exercises = @course . exercises . where( " exercise_status > 1 " ) . order( " created_at desc " )
@exercise_count = @exercise . exercise_users . where ( 'score is not NULL' ) . count
if @is_teacher || ( ! @exercise . exercise_users . where ( :user_id = > User . current . id ) . empty? && Time . parse ( @exercise . end_time . to_s ) . strftime ( " %Y-%m-%d-%H-%M-%S " ) < = Time . now . strftime ( " %Y-%m-%d-%H-%M-%S " ) )
@exercise_users_list = @exercise . exercise_users . where ( 'score is not NULL' )
@ -346,8 +358,8 @@ class ExerciseController < ApplicationController
# 学生提交答卷,选中答案的过程中提交
def commit_answer
eq = ExerciseQuestion . find ( params [ :exercise_question_id ] )
# 已提交过的 则不允许答题
if has_commit_exercise? ( @exercise . id , User . current . id ) && ( ! User . current . admin? )
# 已提交过的 且是限时的 则不允许答题
if has_commit_exercise? ( @exercise . id , User . current . id ) && ( ! User . current . admin? ) && @exercise . time != - 1
render :json = > { :text = > " failure " }
return
end
@ -447,6 +459,17 @@ class ExerciseController < ApplicationController
def commit_exercise
# 老师不需要提交
if User . current . allowed_to? ( :as_teacher , @course )
if @exercise . publish_time . nil?
@exercise . update_attributes ( :show_result = > params [ :show_result ] )
@exercise . update_attributes ( :exercise_status = > 2 )
@exercise . update_attributes ( :publish_time = > Time . now )
redirect_to exercise_url ( @exercise )
return
elsif Time . parse ( @exercise . publish_time . to_s ) . strftime ( " %Y-%m-%d-%H-%M-%S " ) > Time . now . strftime ( " %Y-%m-%d-%H-%M-%S " )
@exercise . update_attributes ( :show_result = > params [ :show_result ] )
redirect_to exercise_url ( @exercise )
return
end
@exercise . update_attributes ( :show_result = > params [ :show_result ] )
redirect_to exercise_url ( @exercise )
# REDO: 提示提交成功