|
|
|
@ -1,8 +1,10 @@
|
|
|
|
|
class ExerciseController < ApplicationController
|
|
|
|
|
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_course, :only => [:index,:new,:create,:student_exercise_list]
|
|
|
|
|
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,:student_exercise_list]
|
|
|
|
|
before_filter :find_course, :only => [:index,:new,:create]
|
|
|
|
|
include ExerciseHelper
|
|
|
|
|
|
|
|
|
|
def index
|
|
|
|
@ -27,7 +29,7 @@ class ExerciseController < ApplicationController
|
|
|
|
|
if @is_teacher || User.current.admin?
|
|
|
|
|
exercises = @course.exercises.order("created_at asc")
|
|
|
|
|
else
|
|
|
|
|
exercises = @course.exercises.where(:exercise_status => 2).order("created_at asc")
|
|
|
|
|
exercises = @course.exercises.where("exercise_status <> 1").order("created_at asc")
|
|
|
|
|
end
|
|
|
|
|
@exercises = paginateHelper exercises,20 #分页
|
|
|
|
|
respond_to do |format|
|
|
|
|
@ -54,41 +56,26 @@ class ExerciseController < ApplicationController
|
|
|
|
|
end
|
|
|
|
|
@exercise = Exercise.find params[:id]
|
|
|
|
|
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
|
|
|
|
|
if @exercise.exercise_status != 2 && (!(User.current.allowed_to?(:as_teacher,@course) || User.current.admin?))
|
|
|
|
|
render_403
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
exercise_end = @exercise.end_time > Time.now
|
|
|
|
|
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?
|
|
|
|
|
@can_edit_excercise = !has_commit_exercise?(@exercise.id,User.current.id)&& exercise_end
|
|
|
|
|
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)
|
|
|
|
|
unless @is_teacher
|
|
|
|
|
@exercise_user = ExerciseUser.where("user_id=? and exercise_id=?", User.current.id, @exercise.id).first
|
|
|
|
|
if @exercise_user.nil?
|
|
|
|
|
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
|
|
|
|
|
end
|
|
|
|
|
# @percent = get_percent(@exercise,User.current)
|
|
|
|
|
exercise_questions = @exercise.exercise_questions
|
|
|
|
|
@exercise_questions = paginateHelper exercise_questions,5 #分页
|
|
|
|
|
score = calculate_student_score(@exercise, User.current)
|
|
|
|
|
eu = get_exercise_user(@exercise.id, User.current.id)
|
|
|
|
|
eu.update_attributes(:score => score)
|
|
|
|
|
respond_to do |format|
|
|
|
|
|
format.html {render :layout => 'base_courses'}
|
|
|
|
|
end
|
|
|
|
|
@exercise_user.update_attributes(:score => score)
|
|
|
|
|
end
|
|
|
|
|
# @percent = get_percent(@exercise,User.current)
|
|
|
|
|
@exercise_questions = @exercise.exercise_questions
|
|
|
|
|
respond_to do |format|
|
|
|
|
|
format.html {render :layout => 'base_courses'}
|
|
|
|
|
end
|
|
|
|
|
#end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
@ -369,8 +356,20 @@ class ExerciseController < ApplicationController
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
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?
|
|
|
|
|
@exercise = Exercise.find params[:id]
|
|
|
|
|
@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? && @exercise.end_time <= Time.now)
|
|
|
|
@ -537,12 +536,9 @@ class ExerciseController < ApplicationController
|
|
|
|
|
# @score = 100
|
|
|
|
|
if @uncomplete_question.count < 1
|
|
|
|
|
# 查看是否有已提交记录
|
|
|
|
|
eu = get_exercise_user(@exercise.id, User.current.id)
|
|
|
|
|
eu.user_id = User.current.id
|
|
|
|
|
eu.exercise_id = @exercise.id
|
|
|
|
|
eu.score = @score
|
|
|
|
|
if eu.save
|
|
|
|
|
#redirect_to poll_index_path(:polls_group_id => @course.id,:polls_type => 'Course')
|
|
|
|
|
cur_exercise_user.score = @score
|
|
|
|
|
if cur_exercise_user.save
|
|
|
|
|
#redirect_to poll_index_path(:polls_group_id => @course.id,:polls_type => 'Course')
|
|
|
|
|
@status = 0 #提交成功
|
|
|
|
|
else
|
|
|
|
|
@status = 2 #未知错误
|
|
|
|
@ -550,6 +546,7 @@ class ExerciseController < ApplicationController
|
|
|
|
|
else
|
|
|
|
|
@status = 1 #有未做得必答题
|
|
|
|
|
end
|
|
|
|
|
@save = params[:save].to_i if params[:save]
|
|
|
|
|
respond_to do |format|
|
|
|
|
|
format.js
|
|
|
|
|
end
|
|
|
|
@ -560,11 +557,11 @@ class ExerciseController < ApplicationController
|
|
|
|
|
def show_student_result
|
|
|
|
|
@user = User.find params[:user_id]
|
|
|
|
|
@can_edit_excercise = false
|
|
|
|
|
@exercise_user = ExerciseUser.where("user_id =? and exercise_id=?", @user.id, @exercise.id).first
|
|
|
|
|
@exercise_questions = @exercise.exercise_questions
|
|
|
|
|
score = calculate_student_score(@exercise, @user)
|
|
|
|
|
eu = get_exercise_user(@exercise.id, @user.id)
|
|
|
|
|
eu.update_attributes(:score => score)
|
|
|
|
|
@exercise_user = ExerciseUser.where("user_id =? and exercise_id=?", @user.id, @exercise.id).first
|
|
|
|
|
respond_to do |format|
|
|
|
|
|
format.html {render :layout => 'base_courses'}
|
|
|
|
|
end
|
|
|
|
@ -582,15 +579,15 @@ class ExerciseController < ApplicationController
|
|
|
|
|
standard_answer = get_user_standard_answer(question, user)
|
|
|
|
|
unless answer.empty?
|
|
|
|
|
# 问答题有多个答案
|
|
|
|
|
if question.question_type == 3
|
|
|
|
|
if question.question_type == 3 && !standard_answer.empty?
|
|
|
|
|
if standard_answer.include?(answer.first.answer_text)
|
|
|
|
|
score1 = score1+ question.question_score unless question.question_score.nil?
|
|
|
|
|
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
|
|
|
|
|
score2 = score2 + question.question_score unless question.question_score.nil?
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
elsif question.question_type == 2 && !standard_answer.nil?
|
|
|
|
|
arr = get_mulscore(question, user)
|
|
|
|
|
if arr.to_i == standard_answer.exercise_choice_id
|
|
|
|
|
score3 = score3 + question.question_score unless question.question_score.nil?
|
|
|
|
|