|
|
@ -1,7 +1,7 @@
|
|
|
|
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]
|
|
|
|
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_course, :only => [:index,:new,:create,:student_exercise_list]
|
|
|
|
include ExerciseHelper
|
|
|
|
include ExerciseHelper
|
|
|
|
|
|
|
|
|
|
|
@ -34,7 +34,7 @@ class ExerciseController < ApplicationController
|
|
|
|
render_403
|
|
|
|
render_403
|
|
|
|
return
|
|
|
|
return
|
|
|
|
end
|
|
|
|
end
|
|
|
|
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")
|
|
|
|
exercise_end = @exercise.end_time > Time.now
|
|
|
|
if @exercise.time == -1
|
|
|
|
if @exercise.time == -1
|
|
|
|
@can_edit_excercise = exercise_end
|
|
|
|
@can_edit_excercise = exercise_end
|
|
|
|
else
|
|
|
|
else
|
|
|
@ -59,6 +59,9 @@ class ExerciseController < ApplicationController
|
|
|
|
# @percent = get_percent(@exercise,User.current)
|
|
|
|
# @percent = get_percent(@exercise,User.current)
|
|
|
|
exercise_questions = @exercise.exercise_questions
|
|
|
|
exercise_questions = @exercise.exercise_questions
|
|
|
|
@exercise_questions = paginateHelper exercise_questions,5 #分页
|
|
|
|
@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|
|
|
|
|
respond_to do |format|
|
|
|
|
format.html {render :layout => 'base_courses'}
|
|
|
|
format.html {render :layout => 'base_courses'}
|
|
|
|
end
|
|
|
|
end
|
|
|
@ -342,10 +345,10 @@ class ExerciseController < ApplicationController
|
|
|
|
@exercise = Exercise.find params[:id]
|
|
|
|
@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? && Time.parse(@exercise.end_time.to_s).strftime("%Y-%m-%d-%H-%M-%S") <= Time.now.strftime("%Y-%m-%d-%H-%M-%S"))
|
|
|
|
if @is_teacher || (!@exercise.exercise_users.where(:user_id => User.current.id).empty? && @exercise.end_time <= Time.now)
|
|
|
|
@exercise_users_list = @exercise.exercise_users.where('score is not NULL')
|
|
|
|
@exercise_users_list = @exercise.exercise_users.where('score is not NULL')
|
|
|
|
@show_all = true;
|
|
|
|
@show_all = true;
|
|
|
|
elsif !@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")
|
|
|
|
elsif !@exercise.exercise_users.where(:user_id => User.current.id).empty? && @exercise.end_time > Time.now
|
|
|
|
@exercise_users_list = @exercise.exercise_users.where("user_id = ? and score is not NULL",User.current.id)
|
|
|
|
@exercise_users_list = @exercise.exercise_users.where("user_id = ? and score is not NULL",User.current.id)
|
|
|
|
else
|
|
|
|
else
|
|
|
|
@exercise_users_list = []
|
|
|
|
@exercise_users_list = []
|
|
|
@ -359,7 +362,7 @@ class ExerciseController < ApplicationController
|
|
|
|
def commit_answer
|
|
|
|
def commit_answer
|
|
|
|
eq = ExerciseQuestion.find(params[:exercise_question_id])
|
|
|
|
eq = ExerciseQuestion.find(params[:exercise_question_id])
|
|
|
|
# 已提交过的且是限时的则不允许答题
|
|
|
|
# 已提交过的且是限时的则不允许答题
|
|
|
|
if (has_commit_exercise?(@exercise.id,User.current.id) && (!User.current.admin?) && @exercise.time != -1) || Time.parse(format_time(@exercise.end_time)).strftime("%Y-%m-%d %H:%M:%S") < Time.now.strftime("%Y-%m-%d %H:%M:%S")
|
|
|
|
if (has_commit_exercise?(@exercise.id,User.current.id) && (!User.current.admin?) && @exercise.time != -1) || @exercise.end_time < Time.now
|
|
|
|
render :json => {:text => "failure"}
|
|
|
|
render :json => {:text => "failure"}
|
|
|
|
return
|
|
|
|
return
|
|
|
|
end
|
|
|
|
end
|
|
|
@ -483,7 +486,7 @@ class ExerciseController < ApplicationController
|
|
|
|
@exercise.update_attributes(:publish_time => Time.now)
|
|
|
|
@exercise.update_attributes(:publish_time => Time.now)
|
|
|
|
redirect_to exercise_url(@exercise)
|
|
|
|
redirect_to exercise_url(@exercise)
|
|
|
|
return
|
|
|
|
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")
|
|
|
|
elsif @exercise.publish_time > Time.now
|
|
|
|
@exercise.update_attributes(:show_result => params[:show_result])
|
|
|
|
@exercise.update_attributes(:show_result => params[:show_result])
|
|
|
|
redirect_to exercise_url(@exercise)
|
|
|
|
redirect_to exercise_url(@exercise)
|
|
|
|
return
|
|
|
|
return
|
|
|
@ -521,6 +524,20 @@ class ExerciseController < ApplicationController
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#查看学生的答卷情况
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
respond_to do |format|
|
|
|
|
|
|
|
|
format.html {render :layout => 'base_courses'}
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
# 计算学生得分
|
|
|
|
# 计算学生得分
|
|
|
|
def calculate_student_score(exercise, user)
|
|
|
|
def calculate_student_score(exercise, user)
|
|
|
|
score = 0
|
|
|
|
score = 0
|
|
|
|