@ -1,8 +1,10 @@
class ExerciseController < ApplicationController
class ExerciseController < ApplicationController
layout " base_courses "
layout " base_courses "
before_filter :find_exercise_and_course , :only = > [ :create_exercise_question , :edit , :update , :show , :destroy , :commit_exercise , :commit_answer , :publish_exercise , :republish_exercise , :show_student_result ]
before_filter :find_exercise_and_course , :only = > [ :create_exercise_question , :edit , :update , :show , :destroy ,
before_filter :find_course , :only = > [ :index , :new , :create , :student_exercise_list ]
:commit_exercise , :commit_answer , :publish_exercise , :republish_exercise ,
:show_student_result , :student_exercise_list ]
before_filter :find_course , :only = > [ :index , :new , :create ]
include ExerciseHelper
include ExerciseHelper
def index
def index
@ -354,8 +356,20 @@ class ExerciseController < ApplicationController
end
end
def student_exercise_list
def student_exercise_list
= begin
if @exercise . end_time < = Time . now
@course . student . each do | student |
if ExerciseUser . where ( " user_id = ? && exercise_id = ? " , student . student_id , @exercise . id ) . empty?
ExerciseUser . create ( :user_id = > student . student_id , :exercise_id = > @exercise . id , :start_at = > @exercise . end_time , :status = > true , :score = > 0 )
end
s_score = calculate_student_score ( @exercise , student . student )
exercise_user = ExerciseUser . where ( " user_id =? and exercise_id=? " , student . student_id , @exercise . id ) . first
exercise_user . update_attributes ( :score = > s_score )
end
end
= end
@is_teacher = User . current . allowed_to? ( :as_teacher , @course ) || User . current . admin?
@is_teacher = User . current . allowed_to? ( :as_teacher , @course ) || User . current . admin?
@exercise = Exercise . find params [ :id ]
@all_exercises = @course . exercises . where ( " exercise_status > 1 " ) . 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
@exercise_count = @exercise . exercise_users . where ( 'score is not NULL' ) . count
if @is_teacher || ( ! @exercise . exercise_users . where ( :user_id = > User . current . id ) . empty? && @exercise . end_time < = Time . now )
if @is_teacher || ( ! @exercise . exercise_users . where ( :user_id = > User . current . id ) . empty? && @exercise . end_time < = Time . now )
@ -543,11 +557,11 @@ class ExerciseController < ApplicationController
def show_student_result
def show_student_result
@user = User . find params [ :user_id ]
@user = User . find params [ :user_id ]
@can_edit_excercise = false
@can_edit_excercise = false
@exercise_user = ExerciseUser . where ( " user_id =? and exercise_id=? " , @user . id , @exercise . id ) . first
@exercise_questions = @exercise . exercise_questions
@exercise_questions = @exercise . exercise_questions
score = calculate_student_score ( @exercise , @user )
score = calculate_student_score ( @exercise , @user )
eu = get_exercise_user ( @exercise . id , @user . id )
eu = get_exercise_user ( @exercise . id , @user . id )
eu . update_attributes ( :score = > score )
eu . update_attributes ( :score = > score )
@exercise_user = ExerciseUser . where ( " user_id =? and exercise_id=? " , @user . id , @exercise . id ) . first
respond_to do | format |
respond_to do | format |
format . html { render :layout = > 'base_courses' }
format . html { render :layout = > 'base_courses' }
end
end
@ -565,15 +579,15 @@ class ExerciseController < ApplicationController
standard_answer = get_user_standard_answer ( question , user )
standard_answer = get_user_standard_answer ( question , user )
unless answer . empty?
unless answer . empty?
# 问答题有多个答案
# 问答题有多个答案
if question . question_type == 3
if question . question_type == 3 && ! standard_answer . empty?
if standard_answer . include? ( answer . first . answer_text )
if standard_answer . include? ( answer . first . answer_text )
score1 = score1 + question . question_score unless question . question_score . nil?
score1 = score1 + question . question_score unless question . question_score . nil?
end
end
elsif question . question_type == 1
elsif question . question_type == 1 && ! standard_answer . nil?
if answer . first . exercise_choice . choice_position == standard_answer . exercise_choice_id
if answer . first . exercise_choice . choice_position == standard_answer . exercise_choice_id
score2 = score2 + question . question_score unless question . question_score . nil?
score2 = score2 + question . question_score unless question . question_score . nil?
end
end
els e
els if qu estion. question_type == 2 && ! standard_answer . nil?
arr = get_mulscore ( question , user )
arr = get_mulscore ( question , user )
if arr . to_i == standard_answer . exercise_choice_id
if arr . to_i == standard_answer . exercise_choice_id
score3 = score3 + question . question_score unless question . question_score . nil?
score3 = score3 + question . question_score unless question . question_score . nil?