Merge branch 'dev_cxt' into dev_cs

Conflicts:
	app/views/messages/_course_show.html.erb
	app/views/student_work/index.html.erb
This commit is contained in:
caishi 2017-09-30 18:27:00 +08:00
commit c7ac2bdb41
67 changed files with 3364 additions and 2550 deletions

View File

@ -1,115 +1,109 @@
#encoding: utf-8
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,:student_exercise_list, :update_question_num,
:send_to_course, :get_student_uncomplete_question, :edit_question_score]
:send_to_course, :get_student_uncomplete_question, :edit_question_score, :setting, :set_public,
:ex_setting]
before_filter :find_course, :only => [:index,:new,:create]
include ExerciseHelper
def index
publish_exercises = Exercise.where("publish_time is not null and exercise_status = 1 and publish_time <=?",Time.now)
publish_exercises.each do |exercise|
exercise.update_column('exercise_status', 2)
course = exercise.course
course.members.each do |m|
exercise.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => false, :status => 2)
end
end
if @course.is_public == 0 && !(User.current.member_of_course?(@course)||User.current.admin?)
render_403
return
end
remove_invalid_exercise(@course)
@is_teacher = User.current.allowed_to?(:as_teacher,@course)
if @is_teacher || User.current.admin?
exercises = @course.exercises.order("created_at asc")
#remove_invalid_exercise(@course)
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
if @is_teacher
exercises = @course.exercises.order("created_at desc")
else
exercises = @course.exercises.where("exercise_status <> 1").order("created_at asc")
exercises = @course.exercises.where("exercise_status <> 1").order("created_at desc")
end
@exercises = paginateHelper exercises,20 #分页
if params[:type]
@type = params[:type]
exercises = exercises.where(:exercise_status => params[:type])
end
@search = params[:search] ? params[:search].to_s.strip : ""
if params[:search]
exercises = exercises.where("exercise_name like '%#{@search}%'")
end
@exercises = paginateHelper exercises,15 #分页
@left_nav_type = 8
respond_to do |format|
format.js
format.html
end
end
def show
publish_exercises = Exercise.where("publish_time is not null and exercise_status = 1 and publish_time <=?",Time.now)
publish_exercises.each do |exercise|
exercise.update_column('exercise_status', 2)
course = exercise.course
course.members.each do |m|
exercise.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => false, :status => 2)
end
end
unless User.current.member_of_course?(@course) || User.current.admin?
render_403
return
end
@exercise = Exercise.find params[:id]
@exercise.course_messages.each do |message|
if User.current.id == message.user_id && message.viewed == 0
message.update_attributes(:viewed => true) if message.viewed == 0
end
end
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
exercise_end = @exercise.end_time.nil? ? false : @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
end
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
elsif @exercise_user.start_at.nil?
@exercise_user.update_attributes(:start_at => Time.now)
end
exercise_end = @exercise.end_time.nil? ? false : @exercise.end_time > Time.now
if @exercise.time == -1
@can_edit_excercise = exercise_end && @exercise_user.commit_status == 0
else
@can_edit_excercise = !has_commit_exercise?(@exercise.id,User.current.id) && exercise_end
end
#score = calculate_student_score(@exercise, User.current)
#@exercise_user.update_attributes(:objective_score => score, :score => (score + (@exercise_user.subjective_score > 0 ? @exercise_user.subjective_score : 0)))
else
@can_edit_excercise = false
end
# @percent = get_percent(@exercise,User.current)
@exercise_questions = @exercise.exercise_questions
@left_nav_type = 8
#@exercise_questions = @exercise.exercise_questions
respond_to do |format|
format.html {render :layout => 'base_courses'}
format.html {render :layout => 'base_edu'}
end
#end
end
def new
option = {
:exercise_name => "",
:course_id => @course.id,
:exercise_status => 1,
:user_id => User.current.id,
:time => "",
:end_time => "",
:publish_time => "",
:exercise_description => "",
:show_result => 1
}
@exercise = Exercise.create option
if @exercise
redirect_to edit_exercise_url @exercise.id
# option = {
# :exercise_name => "",
# :course_id => @course.id,
# :exercise_status => 1,
# :user_id => User.current.id,
# :time => "",
# :end_time => "",
# :publish_time => "",
# :exercise_description => "",
# :show_result => 1
# }
@exercise = Exercise.new
respond_to do |format|
format.html{render :layout => 'base_edu'}
end
end
def create
if params[:exercise]
exercise = Exercise.find(params[:exercise_id]) if params[:exercise_id]
exercise ||= Exercise.new
exercise = Exercise.new
exercise.exercise_name = params[:exercise][:exercise_name]
exercise.exercise_description = params[:exercise][:exercise_description]
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]
exercise.course_id = params[:course_id]
exercise.time = -1
exercise.exercise_status = 1
if exercise.save
@exercise = exercise
@ -121,21 +115,15 @@ class ExerciseController < ApplicationController
end
def edit
@left_nav_type = 8
respond_to do |format|
format.html{render :layout => 'base_courses'}
end
format.html{render :layout => 'base_edu'}
end
end
def update
@exercise.exercise_name = params[:exercise][:exercise_name]
@exercise.exercise_description = params[:exercise][:exercise_description]
@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[:show_result] ? 1 : 0
@exercise.question_random = params[:question_random] ? 0 : 1
@exercise.choice_random = params[:choice_random] ? 0 : 1
if @exercise.save
respond_to do |format|
format.js
@ -148,15 +136,34 @@ class ExerciseController < ApplicationController
def destroy
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
if @exercise && @exercise.destroy
if @is_teacher
exercises = Exercise.where("course_id =?", @course.id)
else
exercises = Exercise.where("course_id =? and exercise_status =?", @course.id, 2)
end
@exercises = paginateHelper exercises,20 #分页
respond_to do |format|
format.js
end
redirect_to exercise_index_path(:course_id => @course.id)
end
end
def setting
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
@is_new = params[:is_new] ? true : false
respond_to do |format|
format.html{render :layout => 'base_edu'}
end
end
def ex_setting
@exercise.publish_time = params[:exercise_publish_time] if params[:exercise_publish_time]
@exercise.end_time = params[:exercise_end_time] if params[:exercise_end_time]
@exercise.time = -1
@exercise.question_random = params[:question_random] ? 1 : 0
@exercise.choice_random = params[:choice_random] ? 1 : 0
@exercise.score_open = params[:score_open] ? 1 : 0
@exercise.answer_open = params[:answer_open] ? 1 : 0
if @exercise.save
redirect_to student_exercise_list_exercise_path(@exercise)
end
end
def set_public
if User.current.admin? || User.current.allowed_to?(:as_teacher, @course)
@exercise.update_attributes(:is_public => true)
end
end
@ -178,10 +185,7 @@ class ExerciseController < ApplicationController
option = {
:question_title => question_title,
:question_type => params[:question_type] || 1,
:question_number => params[:question_type] == "1"? @exercise.exercise_questions.where("question_type = 1").count + 1 :
(params[:question_type] == "2" ? (@exercise.exercise_questions.where("question_type = 2").count + 1) :
(params[:question_type] == "3" ? (@exercise.exercise_questions.where("question_type = 3").count + 1) :
@exercise.exercise_questions.where("question_type = 4").count + 1)),
:question_number => @exercise.exercise_questions.count + 1,
:question_score => params[:question_score]
}
@exercise_questions = @exercise.exercise_questions.new option
@ -197,20 +201,23 @@ class ExerciseController < ApplicationController
end
end
# 如果是插入的话那么从插入的这个id以后的question_num都将要+1
if params[:quest_id]
if params[:quest_id] != "0"
@is_insert = true
if @exercise_questions.question_type == 1
ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 1).update_all(" question_number = question_number + 1")
#@exercise.exercise_questions.where("question_number > #{params[:quest_num].to_i} and question_type == 1").update_all(" question_number = question_number + 1")
elsif @exercise_questions.question_type == 2
ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 2).update_all(" question_number = question_number + 1")
elsif @exercise_questions.question_type == 3
ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 3).update_all(" question_number = question_number + 1")
else
ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 4).update_all(" question_number = question_number + 1")
insert_que = ExerciseQuestion.find params[:quest_id]
if insert_que
@exercise.exercise_questions.where("question_number>?",insert_que.question_number).update_all("question_number = question_number + 1")
# if @exercise_questions.question_type == 1
# ExerciseQuestion.where("question_number>?",params[:quest_num].to_i).update_all(" question_number = question_number + 1")
# elsif @exercise_questions.question_type == 2
# ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 2).update_all(" question_number = question_number + 1")
# elsif @exercise_questions.question_type == 3
# ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 3).update_all(" question_number = question_number + 1")
# else
# ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 4).update_all(" question_number = question_number + 1")
# end
# @exercise_question_num = params[:quest_num].to_i
@exercise_questions.question_number = insert_que.question_number + 1
end
# @exercise_question_num = params[:quest_num].to_i
@exercise_questions.question_number = params[:quest_num].to_i + 1
end
if @exercise_questions.save
# params[:exercise_choice] 标准答案参数
@ -327,16 +334,17 @@ class ExerciseController < ApplicationController
@exercise_question = ExerciseQuestion.find params[:exercise_question]
@exercise = @exercise_question.exercise
if @exercise_question.question_type == 1
ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 1).update_all(" question_number = question_number - 1")
#@exercise.exercise_questions.where("question_number > #{params[:quest_num].to_i} and question_type == 1").update_all(" question_number = question_number + 1")
elsif @exercise_question.question_type == 2
ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 2).update_all(" question_number = question_number - 1")
elsif @exercise_question.question_type == 3
ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 3).update_all(" question_number = question_number - 1")
else
ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 4).update_all(" question_number = question_number - 1")
end
ExerciseQuestion.where("question_number>?",params[:quest_num].to_i).update_all("question_number = question_number - 1")
# if @exercise_question.question_type == 1
# ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 1).update_all(" question_number = question_number - 1")
# #@exercise.exercise_questions.where("question_number > #{params[:quest_num].to_i} and question_type == 1").update_all(" question_number = question_number + 1")
# elsif @exercise_question.question_type == 2
# ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 2).update_all(" question_number = question_number - 1")
# elsif @exercise_question.question_type == 3
# ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 3).update_all(" question_number = question_number - 1")
# else
# ExerciseQuestion.where("question_number>? and question_type=?",params[:quest_num].to_i, 4).update_all(" question_number = question_number - 1")
# end
# @exercise_question_num = params[:quest_num].to_i
# @exercise_questions.question_number = params[:quest_num].to_i - 1
#
@ -358,12 +366,12 @@ class ExerciseController < ApplicationController
exercise_questions = @exercise.exercise_questions
if @exercise_question
if params[:opr] == 'up' && @exercise_question.question_number > 1
@before_que = exercise_questions.where("question_type = #{@exercise_question.question_type} and question_number = #{@exercise_question.question_number - 1}").first
@before_que = exercise_questions.where("question_number = #{@exercise_question.question_number - 1}").first
if @before_que && @exercise_question.update_attribute('question_number', @exercise_question.question_number - 1)
@before_que.update_attribute('question_number', @before_que.question_number + 1)
end
elsif params[:opr] == 'down' && @exercise_question.question_number < exercise_questions.count
@after_que = exercise_questions.where("question_type = #{@exercise_question.question_type} and question_number = #{@exercise_question.question_number + 1}").first
@after_que = exercise_questions.where("question_number = #{@exercise_question.question_number + 1}").first
if @after_que && @exercise_question.update_attribute('question_number', @exercise_question.question_number + 1)
@after_que.update_attribute('question_number', @after_que.question_number - 1)
end
@ -470,77 +478,68 @@ 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
@name,@select_group = params[:name].to_s.strip || "",params[:group]
@order,@b_sort,@name,@group,@comment,@status = params[:order] || "end_at",params[:sort] || "desc",params[:name].to_s.strip || "",params[:ex_group], params[:ex_comment], params[:ex_status]
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
if @is_teacher
@all_exercises = @course.exercises.order("created_at desc")
else
@all_exercises = @course.exercises.where("exercise_status > 1").order("created_at desc")
end
student_id = @course.student.blank? ? "(-1)" : "(" + @course.student.map{|student| student.student_id}.join(",") + ")"
if @select_group
if @select_group == "0"
none_group_students = @course.members.select{ |member| member.course_group_id == 0 }
if none_group_students.empty?
student_in_group = '(0)'
else
student_in_group = '(' + none_group_students.map{ |member| member.user_id }.join(',') + ')'
end
elsif @select_group == "-1"
all_group_students = @course.members.select{ |member| member.course_group_id }
if all_group_students.empty?
student_in_group = '(0)'
else
student_in_group = '(' + all_group_students.map{ |member| member.user_id }.join(',') + ')'
end
if @group
group_students = @course.members.where(:course_group_id => @group).joins("join users on members.user_id = users.id").select{|m| m.roles.to_s.include?("Student")}
if group_students.empty?
student_in_group = '(-1)'
else
course_group = CourseGroup.find_by_id(@select_group)
group_students = course_group.users
if group_students.empty?
student_in_group = '(0)'
else
student_in_group = '(' + group_students.map{ |user| user.id }.join(',') + ')'
end
student_in_group = '(' + group_students.map{ |member| member.user_id }.join(',') + ')'
end
if @is_teacher || (!@exercise.exercise_users.where("user_id = #{User.current.id}").empty? && @exercise.end_time <= Time.now)
@exercise_users_list = search_exercise_member @exercise.exercise_users.where("user_id in #{student_id} and user_id in #{student_in_group}"), @name
if @is_teacher || (!@exercise.exercise_users.where(:user_id => User.current.id, :commit_status => 1).empty? && @exercise.score_open && @exercise.end_time <= Time.now)
@exercise_users_list = @exercise.exercise_users.where("user_id in #{student_in_group}").order("#{@order} #{@b_sort}")
@show_all = true;
elsif !@exercise.exercise_users.where("user_id = #{User.current.id}").empty? && @exercise.end_time > Time.now
@exercise_users_list = search_exercise_member @exercise.exercise_users.where("user_id = ? and user_id in #{student_id} and user_id in #{student_in_group}",User.current.id), @name
elsif !@exercise.exercise_users.where(:user_id => User.current.id, :commit_status => 1).empty?
@exercise_users_list = @exercise.exercise_users.where("user_id = ? and user_id in #{student_in_group}",User.current.id)
else
@exercise_users_list = []
end
else
if @is_teacher || (!@exercise.exercise_users.where("user_id = #{User.current.id}").empty? && @exercise.end_time <= Time.now)
@exercise_users_list = search_exercise_member @exercise.exercise_users.where("user_id in #{student_id}"), @name
if @is_teacher || (!@exercise.exercise_users.where(:user_id => User.current.id, :commit_status => 1).empty? && @exercise.score_open && @exercise.end_time <= Time.now)
@exercise_users_list = @exercise.exercise_users.where("user_id in #{student_id}").order("#{@order} #{@b_sort}")
@show_all = true;
elsif !@exercise.exercise_users.where("user_id = #{User.current.id}").empty? && @exercise.end_time > Time.now
@exercise_users_list = search_exercise_member @exercise.exercise_users.where("user_id = ? and user_id in #{student_id}",User.current.id), @name
elsif User.current.member_of_course?(@course)
@exercise_users_list = @exercise.exercise_users.where("user_id = ? and user_id in #{student_id}",User.current.id)
else
@exercise_users_list = []
end
end
@exercise_count = @exercise.exercise_users.where("commit_status = 1 and user_id in #{student_id}").count
@left_nav_type = 8
unless @comment.blank?
if @comment.include?('0')
@exercise_users_list = @exercise_users_list.where(:subjective_score => -1)
else
@exercise_users_list = @exercise_users_list.where("subjective_score != -1")
end
end
unless @status.blank?
@exercise_users_list = @exercise_users_list.where(:commit_status => @status)
end
@exercise_users_list = search_exercise_member @exercise_users_list, @name
@score = @b_sort == "desc" ? "asc" : "desc"
@exercise_count = @exercise_users_list.count
@has_commit_count = @exercise.exercise_users.where(:commit_status => 1).count
@no_group_count = @course.members.where(:course_group_id => 0).select{|m| m.roles.to_s.include?("Student")}.count
@limit = 50
@is_remote = true
@page = (params['page'] || 1).to_i
@exercise_pages = Paginator.new @exercise_count, @limit, @page
@offset ||= @exercise_pages.offset
@exercise_users_list = paginateHelper @exercise_users_list, @limit
respond_to do |format|
format.js
format.html
format.html{render :layout => 'base_edu'}
format.xls {
filename = "#{@course.teacher.lastname.to_s + @course.teacher.firstname}_#{@course.name}_#{@course.time.to_s + @course.term}_#{@exercise.exercise_name}#{l(:excel_exercise_list)}.xls"
filename = "#{@course.teacher.lastname.to_s + @course.teacher.firstname}_#{@course.name}_#{@exercise.exercise_name}#{l(:excel_exercise_list)}.xls"
send_data(exercise_to_xls(@exercise_users_list), :type => "text/excel;charset=utf-8; header=present",
:filename => filename_for_content_disposition(filename))
}
@ -690,11 +689,11 @@ class ExerciseController < ApplicationController
else
# 更新提交状态
cur_exercise_user = ExerciseUser.where("user_id =? and exercise_id=?", User.current, @exercise.id).first
cur_exercise_user.update_attributes(:status => 1, :commit_status => 1)
if @exercise.time && @exercise.time != -1
cur_exercise_user.update_attributes(:status => 1, :commit_status => 1, :end_at => Time.now)
#if @exercise.time && @exercise.time != -1
score = calculate_student_score(@exercise, User.current)
cur_exercise_user.update_attributes(:score => score)
end
cur_exercise_user.update_attributes(:objective_score => score, :score => score + (cur_exercise_user.subjective_score > 0 ? cur_exercise_user.subjective_score : 0))
#end
# 答题过程中需要统计完成量
#@uncomplete_question = get_uncomplete_question(@exercise, User.current)
# 获取改学生的考试得分
@ -748,16 +747,20 @@ class ExerciseController < ApplicationController
#查看学生的答卷情况
def show_student_result
@user = User.find params[:user_id]
@can_edit_excercise = false
@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
@left_nav_type = 8
respond_to do |format|
format.html {render :layout => 'base_courses'}
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
if @is_teacher || (User.current.member_of_course?(@exercise.course) && @exercise.exercise_status > 2)
@user = User.find params[:user_id]
#@can_edit_excercise = false
@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_edu'}
end
else
render_403
end
end
@ -937,7 +940,7 @@ class ExerciseController < ApplicationController
else
name = name.downcase
select_exercises = exercises.select{ |exercise|
exercise.user[:login].to_s.downcase.include?(name) || exercise.user.user_extensions[:student_id].to_s.downcase.include?(name) || (exercise.user[:lastname].to_s.downcase + exercise.user[:firstname].to_s.downcase).include?(name)
exercise.user.user_extensions[:student_id].to_s.downcase.include?(name) || (exercise.user[:lastname].to_s.downcase + exercise.user[:firstname].to_s.downcase).include?(name)
}
end
select_exercises

View File

@ -33,6 +33,18 @@ module ApplicationHelper
extend Forwardable
def_delegators :wiki_helper, :wikitoolbar_for, :heads_for_wiki_formatter
# 作品列表的提交状态
def list_work_status status
case status
when 0
str = "未提交"
when 1
str = "<span class='color-light-green'>按时提交</span>"
when 2
str = "<span class='color-orange'>延时提交</span>"
end
end
# 定义当前关卡是否有权开启下一关
# :实训若发布了,必须通过当前关卡才能查看下一关
# :未发布的实训,除了最后一关,其它的关卡都可以进入下一关
@ -546,7 +558,7 @@ module ApplicationHelper
style = 'edu-filter-btn-red'
when '评阅中'
style = 'edu-filter-btn-green'
when '已结束'
when '已结束', '已截止'
style = 'edu-filter-btn-end'
when '已开启补交'
style = 'edu-filter-btn-late'
@ -568,9 +580,10 @@ module ApplicationHelper
# 未评阅
def had_unevaluate_count homework_common
count = StudentWorksScore.find_by_sql("SELECT count(distinct student_work_id) as count FROM student_works_scores sws, student_works sw, homework_commons hc where hc.id =#{homework_common.id} and sw.homework_common_id=hc.id and sw.is_delete = 0 and sws.student_work_id = sw.id and sws.user_id=#{User.current.id};").first.try(:count).to_i
student_count = homework_common.course.student.count
return student_count - count
#count = StudentWorksScore.find_by_sql("SELECT count(distinct student_work_id) as count FROM student_works_scores sws, student_works sw, homework_commons hc where hc.id =#{homework_common.id} and sw.homework_common_id=hc.id and sw.is_delete = 0 and sws.student_work_id = sw.id and sws.user_id=#{User.current.id};").first.try(:count).to_i
has_comment = User.current.student_works_scores.where(:student_work_id => homework_common.student_works.map(&:id), :reviewer_role => [1, 2]).group_by(&:student_work_id).count
student_count = homework_common.student_works.count
return student_count - has_comment
end
# 该阶段还有多长时间结束/距下一阶段还有多长时间
@ -616,6 +629,28 @@ module ApplicationHelper
result
end
# 试卷:该阶段还有多长时间结束/距下一阶段还有多长时间
def exercise_curr_time exercise
result = {}
status = ""
time = ""
case exercise.exercise_status
when 1
status = "未发布"
when 2
if exercise.end_time && exercise.end_time >= Time.now
status = "提交中"
time = how_much_time(exercise.end_time)
end
when 3
status = "已截止"
time = format_time exercise.end_time
end
result[:status] = status
result[:time] = time
result
end
# 公共分页
def paginator_list objs, objs_count, limit, is_remote
@is_remote = is_remote
@ -4760,9 +4795,19 @@ def get_work_index(hw,is_teacher)
return index
end
def get_ex_index(exercise, course, is_teacher)
if is_teacher
exercises = course.exercises.order("created_at asc")
else
exercises = course.exercises.where("exercise_status > 0").order("created_at asc")
end
ex_ids = exercises.map{|ex| ex.id} if !exercises.blank?
index = ex_ids.index(exercise.id)
return index
end
def get_hw_index(hw,is_teacher,type=0)
homework_commons = hw.course.homework_commons
Rails.logger.info("----------------------------------------------"+hw.course.to_s)
if is_teacher
if type != 0
homeworks = homework_commons.where("homework_commons.homework_type = #{type}").order("created_at asc")
@ -4776,7 +4821,6 @@ def get_hw_index(hw,is_teacher,type=0)
homeworks = homework_commons.where("publish_time <= '#{Time.now}'").order("created_at asc")
end
end
Rails.logger.info("----------------------------------------------"+homeworks.count.to_s)
hw_ids = homeworks.map{|hw| hw.id} if !homeworks.blank?
index = hw_ids.index(hw.id)
return index

View File

@ -1,6 +1,44 @@
# encoding: utf-8
module ExerciseHelper
def un_commit_num exercise
course = exercise.course
exercise.exercise_users.where(:commit_status => 0, :user_id => course.student.map(&:student_id)).count
end
def has_commit_num exercise
course = exercise.course
exercise.exercise_users.where(:commit_status => 1, :user_id => course.student.map(&:student_id)).count
end
def un_comment_num exercise
course = exercise.course
exercise.exercise_users.where(:commit_status => 1, :user_id => course.student.map(&:student_id), :subjective_score => -1).count
end
def has_comment_num exercise
course = exercise.course
exercise.exercise_users.where(:commit_status => 1, :user_id => course.student.map(&:student_id)).count - exercise.exercise_users.where(:commit_status => 1, :user_id => course.student.map(&:student_id), :subjective_score => -1).count
end
def answer_is_correct eq, user
is_correct = false
case eq.question_type
when 1
answer = get_user_answer(eq, user)
standard_answer = get_user_standard_answer(eq, user)
is_correct = !answer.empty? && !standard_answer.empty? && answer.first.exercise_choice.choice_position == standard_answer.first.exercise_choice_id
when 2
standard_answer = get_user_standard_answer(eq, user)
is_correct = !standard_answer.empty? && get_mulscore(eq, user).to_i == standard_answer.first.exercise_choice_id
when 3
answer = get_user_answer(eq, user)
standard_answer = get_user_standard_answer(eq, user)
is_correct = !answer.empty? && !standard_answer.empty? && standard_answer.include?(answer.first.answer_text)
end
is_correct
end
# 单选
def sigle_selection_standard_answer(params)
size = params.ord - 96
@ -160,6 +198,17 @@ module ExerciseHelper
uncomplete_question
end
def question_commit_status question, user
status = ""
case question.question_type
when 3, 4
get_anwser_vote_text(question.id,user.id) == "" ? status = "未答" : status = ""
when 1, 2
get_user_answer(question,user).empty? ? status = "未答" : status = ""
end
status
end
#获取文本题答案
def get_anwser_vote_text(question_id,user_id)
pv = ExerciseAnswer.find_by_exercise_question_id_and_user_id(question_id,user_id)

View File

@ -16,4 +16,5 @@ module OwnerTypeHelper
STUDENTWORK = 15
HOMEWORKBANK = 16
SUBJECT = 17
EXERCISEQUESTION = 18
end

View File

@ -85,18 +85,6 @@ module StudentWorkHelper
str
end
# 作品列表的提交状态
def list_work_status status
case status
when 0
str = "未提交"
when 1
str = "<span class='color-light-green'>按时提交</span>"
when 2
str = "<span class='color-orange'>延时提交</span>"
end
end
# 作品的助教评分模式
def ta_score_mode homework
mode = homework.homework_detail_manual.ta_mode == 1 ? '平均' : '复审'

View File

@ -1,3 +1,4 @@
#encoding: utf-8
class ExerciseQuestion < ActiveRecord::Base
include Redmine::SafeAttributes
@ -5,4 +6,17 @@ class ExerciseQuestion < ActiveRecord::Base
has_many :exercise_choices, :order => "#{ExerciseChoice.table_name}.choice_position",:dependent => :destroy
has_many :exercise_answers, :dependent => :destroy
has_many :exercise_standard_answers, :dependent => :destroy
def question_type_name
case self.question_type
when 1
"单选题"
when 2
"多选题"
when 3
"填空题"
when 4
"简答题"
end
end
end

View File

@ -10,7 +10,7 @@ class StudentsForCourse < ActiveRecord::Base
validates_uniqueness_of :student_id, :scope => :course_id
after_destroy :delete_student_works, :delete_course_homework_statistic
after_create :recovery_student_works, :create_student_works
after_create :recovery_student_works, :create_student_works, :create_exercise_users
#退出班级或删除学生时隐藏学生的作品
def delete_student_works
@ -58,6 +58,27 @@ class StudentsForCourse < ActiveRecord::Base
end
end
# 加入班级时创建已发布试卷的作品
def create_exercise_users
course = self.course
str = ""
exercises = course.exercises.where("exercise_status > 0")
if exercises.count != 0
exercises.each do |ex|
if ex.exercise_users.where("user_id = #{self.student_id}").count == 0
if str != ""
str += ","
end
str += "(#{ex.id},#{self.student_id}, 0, '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')"
end
end
if str != ""
sql = "insert into exercise_users (exercise_id, user_id, commit_status, created_at, updated_at) values" + str
ActiveRecord::Base.connection.execute sql
end
end
end
#加入班级时创建一条记录
def create_course_homework_statistic
# if CourseHomeworkStatistics.where(:user_id => self.student_id, :course_id => self.course_id).count == 0

View File

@ -21,6 +21,47 @@
}
</script>
<div class="questionContainer">
<div class="user_bg_shadow bor-grey-e pl15 pr30 mb20 single_Temp" id="single_Temp">
<div class="clearfix">
<p class="fl mt15 font-16 mb10">单选题</p>
<label class="fr mt15">标准答案:<span class="color-orange current-option" id="question_standard_answer_<%=exercise_question.id %>"><%=convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %></span></label>
</div>
<li class="clearfix pr mb20">
<input style="display: none;" name="exercise_choice" id="exercise_choice_<%=exercise_question.id%>" value="<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %>"/>
<label class="panel-form-label fl"><span class="mr10">题目</span></label>
<input name="question_type" value="<%=exercise_question.question_type %>" type="hidden">
<textarea name="question_title" id="poll_questions_title_<%=exercise_question.id %>" class="panel-form-width2-690 fl panel-box-sizing" placeholder="请输入单选题的题干" type="text" oninput="autoHeight('#poll_questions_title_<%=exercise_question.id %>',30)"><%=exercise_question.question_title %></textarea>
</li>
<% exercise_question.exercise_choices.reorder("choice_position").each_with_index do |exercise_choice,index| %>
<li class="clearfix pr mb20">
<label class="panel-form-label fl"><span class="option-item fr mr10 color-grey select-choice <%= (index + 1) == exercise_question.exercise_standard_answers.first.exercise_choice_id ? 'check-option-bg' : '' %>" name="option_span" data-tip-down="点击设置答案" onclick="selectchoice(this)"><%=convert_to_char (index+1).to_s %></span></label>
<textarea class="panel-form-width2-690 fl panel-box-sizing" name='question_answer[<%=exercise_choice.id %>]' placeholder="请输入选项内容"><%=exercise_choice.choice_text %></textarea>
<a title="移除" href="javascript:void(0)" class="position-delete option_icon_remove" onclick="removeSingle(this)"><i class="fa fa-times-circle color-orange font-16 fl"></i></a>
</li>
<div class="cl"></div>
<% end %>
<li class="clearfix mb20">
<label class="panel-form-label fl">
<span class="add-option-item fr mr10 color-grey border-dash-orange" name="option_span">D</span>
</label>
<div class="fl panel-box-sizing add-option-input border-dash-orange">
<a title="新增" href="javascript:void(0)" class="option_icon_add" onclick="addSingle(this)">新增选项</a>
</div>
</li>
<li class="clearfix mb20">
<label class="panel-form-label fl"><span class="mr10">分值</span></label>
<input id="poll_question_score_<%=exercise_question.id %>" value="<%=exercise_question.question_score %>" type="text" class="with10 mr5 pl10 fl panel-box-sizing task-height-40" name="question_score">
<label class="fl" style="line-height: 40px;">分</label>
<p class="fr">
<span class="font-12 color-grey mb10" style="display: block;">温馨提示:[单选题]属于客观题将由系统自动评分,请设置标准答案</span>
<a href="javascript:void(0)" class="fr task-btn task-btn-blue" onclick="edit_poll_question($(this),<%= exercise_question.id %>,1);">保存</a>
<a href="javascript:void(0)" class="fr task-btn mr10" onclick="$(this).parent().parent().parent().parent().remove();">取消</a>
</p>
</li>
</div>
</div>
<% if false %>
<div class="questionContainer" style="width: 680px;">
<div class="mb10 ur_item">
<label>分值<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>
@ -65,4 +106,5 @@
<div class="cl"></div>
</div>
<!--编辑单选 end-->
<% end%>
<% end%>

View File

@ -20,7 +20,54 @@
"</li> <div class='cl'></div>");
}
</script>
<div class="questionContainer">
<div class="user_bg_shadow bor-grey-e pl15 pr30 mb20 multiple_Temp" id="multiple_Temp">
<div class="clearfix">
<p class="fl mt15 font-16 mb10">多选题</p>
<input name="question_type" value="2" type="hidden">
<input name="quest_id" id="quest_id" value="0" type="hidden">
<label class="fr mt15">标准答案:<span class="color-orange current-option"id="question_standard_answer_<%=exercise_question.id %>"><%=convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %></span></label>
<input style="display: none;" name="exercise_choice"/>
</div>
<li class="clearfix pr mb20">
<input style="display: none;" name="exercise_choice" id="exercise_choice_<%=exercise_question.id%>" value="<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %>"/>
<label class="panel-form-label fl"><span class="mr10">题目</span></label>
<input name="question_type" value="<%=exercise_question.question_type %>" type="hidden">
<textarea name="question_title" id="poll_questions_title_<%=exercise_question.id %>" class="panel-form-width2-690 fl panel-box-sizing" placeholder="请输入多选题的题干" type="text" oninput="autoHeight('#poll_questions_title_<%=exercise_question.id %>',30)"><%=exercise_question.question_title %></textarea>
</li>
<% exercise_question.exercise_choices.reorder("choice_position").each_with_index do |exercise_choice,index| %>
<li class="clearfix pr mb20">
<label class="panel-form-label fl">
<span class="<%= exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s.include?((index+1).to_s) ? 'check-option-bg' : '' %> option-item fr mr10 color-grey select-choice " onclick="selectMul(this)" name="option_spans" data-tip-down="点击设置答案"><%=convert_to_char (index+1).to_s %></span>
</label>
<textarea name='question_answer[<%= exercise_choice.id %>]' class="panel-form-width2-690 fl panel-box-sizing" placeholder="请输入选项内容"><%=exercise_choice.choice_text %></textarea>
<a title="移除" href="javascript:void(0)" class="position-delete option_icon_remove" onclick="removeMuli(this)"><i class="fa fa-times-circle color-orange font-16 fl"></i></a>
</li>
<div class="cl"></div>
<% end %>
<li class="clearfix mb20">
<label class="panel-form-label fl">
<span class="add-option-item fr mr10 color-grey border-dash-orange" name="option_spans">D</span>
</label>
<div class="fl panel-box-sizing add-option-input border-dash-orange"><a title="新增" href="javascript:void(0)" onclick="addMuli(this)" class="option_icon_add">新增选项</a></div>
</li>
<li class="clearfix mb20">
<label class="panel-form-label fl"><span class="mr10">分值</span></label>
<input id="poll_question_score_<%=exercise_question.id %>" value="<%=exercise_question.question_score %>" type="text" name="question_score" class="with10 mr5 fl pl10 panel-box-sizing task-height-40" />
<label class="fl" style="line-height: 40px;">分</label>
<p class="fr">
<span class="font-12 color-grey mb10" style="display: block;">温馨提示:[多选题]属于客观题将由系统自动评分,请设置标准答案</span>
<a href="javascript:void(0)" class="fr task-btn task-btn-blue" onclick="edit_poll_question($(this),<%= exercise_question.id %>,2);">保存</a>
<a href="javascript:void(0)" class="fr task-btn mr10" onclick="$(this).parent().parent().parent().parent().remove();">取消</a>
</p>
</li>
</div>
</div>
<% if false %>
<div class="questionContainer" style="width: 680px;">
<div class="mb10 ur_item">
<label>分值<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>
@ -67,4 +114,5 @@
<div class="cl"></div>
</div>
<!--编辑单选 end-->
<% end %>
<% end%>

View File

@ -1,41 +1,12 @@
<%= form_for @exercise, :remote=>true do |f| %>
<div class="testContainer">
<div>
<input name="exercise[exercise_name]" maxlength="100" id="exercise_name" class="testTitle mb10" type="text" placeholder="测验标题" value="<%=@exercise.exercise_name%>" />
</div>
<label class="fl c_grey f14" style="margin-top: 4px;">截止时间:</label>
<div class="calendar_div fl">
<input type="text" name="exercise[end_time]" id="exercise_end_time" placeholder="截止时间" class="InputBox fl W120 calendar_input" readonly="readonly" value="<%= Time.parse(format_time(exercise.end_time)).strftime("%Y-%m-%d") if exercise.end_time %>"/>
<%= calendar_for('exercise_end_time')%>
</div>
<div class="fl ml15 f14 fontGrey2"><span class="mr5">测验时长:</span><input name="exercise[time]" id="exercise_time" type="text" class="examTime mr5" placeholder="不填即不限时" value="<%=exercise.time if exercise.time!= -1 %>" />分钟</div>
<label class="fl c_grey ml15 f14" style="margin-top: 4px;">发布时间(可选)</label>
<div class="calendar_div fl">
<input type="text" name="exercise[publish_time]" id="exercise_publish_time" placeholder="发布时间(可选)" class="InputBox fl W120 calendar_input" readonly="readonly" value="<%= Time.parse(format_time(exercise.publish_time)).strftime("%Y-%m-%d") if !exercise.publish_time.nil? %>"/>
<%= calendar_for('exercise_publish_time')%>
</div>
<div class="cl"></div>
<textarea class="testDes mt10" name="exercise[exercise_description]" id="exercise_description" placeholder="发布须知:试题类型有选择和填空两种,其中选择题包括单选题和多选题。您可以在此处填写测验相关说明。" ><%=exercise.exercise_description %></textarea>
<div class="ur_editor_footer">
<input type="checkbox" name="question_random" <%= exercise.question_random == 0 ? 'checked' : '' %> id="edit_question_random">
<label for="edit_question_random" class="mt10 mr30">题目不随机打乱</label>
<input type="checkbox" name="choice_random" <%= exercise.choice_random == 0 ? 'checked' : '' %> id="edit_choice_random">
<label for="edit_choice_random" class="mt10 mr30">选项不随机打乱</label>
<input type="checkbox" name="show_result" <%= exercise.show_result == 1 ? 'checked' : '' %> id="edit_show_result">
<label for="edit_show_result" class="mt10">允许学生查看测验结果</label>
<a data-button="ok" onclick="pollsSubmit($(this));" class="big_blue_btn fr borderRadius">保存</a>
<a data-button="cancel" onclick="pollsCancel();" class="big_grey_btn fr borderRadius mr10">取消</a>
</div>
<div class="cl"></div>
<%= form_for(@exercise, :html => {:multipart => true, :id => "exercise_head_form"}, :remote => true) do |f| %>
<div class="ml15 mr15 mb15">
<input class="panel-box-sizing panel-form-width-100" name="exercise[exercise_name]" maxlength="100" id="exercise_name" value="<%= @exercise.try(:exercise_name) %>" placeholder="试卷标题" style="text-align: center;"/>
</div>
<% end %>
<script type="text/javascript">
function resetHead()
{
$("#exercise_name").val("<%=exercise.exercise_name%>");
$("#exercise_end_time").val("<%= Time.parse(format_time(exercise.end_time)).strftime("%Y-%m-%d") if exercise.end_time %>");
$("#exercise_time").val("<%=exercise.time if exercise.time!= -1 %>");
$("#exercise_publish_time").val("<%= Time.parse(format_time(exercise.publish_time)).strftime("%Y-%m-%d") if !exercise.publish_time.nil?%>");
/*$("#exercise_description").text("<%#=exercise.exercise_description.html_safe %>");*/
}
</script>
<div class="ml15 mr15">
<textarea id="mustBe" name="exercise[exercise_description]" class="panel-box-sizing panel-form-width-100" placeholder="试卷须知共有选择、填空、简答3种题型其中选择题包括单选题和多选题;您可以在此处填写本次试卷答题的相关说明"><%= @exercise.try(:exercise_description) %></textarea>
</div>
<p class="fr">
<a href="javascript:void(0)" onclick="ex_head_submit($(this));" class="fr task-btn mr15 task-btn-blue">保存</a>
<a href="javascript:void(0)" onclick="ex_head_cancel();" class="fr task-btn mr10">取消</a>
</p>
<% end %>

View File

@ -7,6 +7,33 @@
}
</script>
<div class="user_bg_shadow bor-grey-e pl15 pr30 mb20 answer_Temp" id="answer_Temp">
<p class="fl mt15 font-16 mb10">简答题</p>
<input name="question_type" value="4" type="hidden">
<input name="quest_id" id="quest_id" value="0" type="hidden">
<li class="clearfix pr mb20">
<label class="panel-form-label fl"><span class="mr10">题目</span></label>
<input name="question_type" value="<%=exercise_question.question_type %>" type="hidden">
<textarea maxlength="250" class="panel-form-width2-690 fl panel-box-sizing" name="question_title" id="poll_questions_title_<%=exercise_question.id %>" placeholder="请输入简答题的题干" type="text" oninput="autoHeight('#poll_questions_title_<%=exercise_question.id %>',30)"><%=exercise_question.question_title %></textarea>
</li>
<li class="clearfix pr mb20">
<label class="panel-form-label fl"><span class="fr mr10 color-grey" name="option_spans">参考答案</span></label>
<textarea class="fl panel-box-sizing with90 task-height-150 pl5 pt5 candiate_answer" name="exercise_choice" placeholder="如有参考答案,请输入参考答案"id="poll_questions_answer_<%=exercise_question.id %>"><%=exercise_question.exercise_standard_answers.empty? ? '' : exercise_question.exercise_standard_answers.first.answer_text %></textarea>
</li>
<li class="clearfix mb20">
<label class="panel-form-label fl"><span class="mr10">分值</span></label>
<input id="poll_question_score_<%=exercise_question.id %>" value="<%=exercise_question.question_score %>" type="text" name="question_score" class="with10 mr5 pl10 fl panel-box-sizing task-height-40" />
<label class="fl" style="line-height: 40px;">分</label>
<p class="fr">
<span class="font-12 color-grey" style="display: block;">温馨提示:[简答题]属于主观题需要人工评分,未作答的情况下系统将自动评分</span>
<span class="font-12 color-grey mb10 ml50" style="display: block;">&nbsp;&nbsp;参考答案仅作为人工评分的参考</span>
<a href="javascript:void(0)" class="fr task-btn task-btn-blue" onclick="edit_poll_question($(this),<%= exercise_question.id %>,4);">保存</a>
<a href="javascript:void(0)" class="fr task-btn mr10" onclick="$(this).parent().parent().parent().parent().remove();">取消</a>
</p>
</li>
</div>
<% if false %>
<div class="questionContainer" style="width: 680px;">
<div class="mb10 ur_item">
<label class="ml25">分值<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>
@ -36,4 +63,5 @@
<div class="cl"></div>
</div>
<!--编辑单选 end-->
<% end%>
<% end%>

View File

@ -1,5 +1,6 @@
<%= form_for("",:url => update_exercise_question_exercise_index_path(:exercise_question => exercise_question.id),:remote => true) do |f|%>
<!--编辑单选start-->
<% if false %>
<script type="text/javascript">
function resetQuestion<%=exercise_question.id%>()
{
@ -18,46 +19,40 @@
"<div class='cl'></div>");
}
</script>
<div class="questionContainer" style="width: 680px;">
<div class="mb10 ur_item">
<label class="ml36">分值<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>
<input id="poll_question_score_<%=exercise_question.id %>" value="<%=exercise_question.question_score %>" type="text" name="question_score" style="width:60px; text-align:center; padding-left:0px;">分
<div class="cl"></div>
</div>
<div class="ur_editor_title">
<label class="questionLabel mt8 ml36">问题:&nbsp;&nbsp;</label>
<% end %>
<div class="user_bg_shadow bor-grey-e pl15 pr30 mb20 fillin_Temp" id="poll_answers_<%= exercise_question.id %>">
<p class="fl mt15 font-16 mb10">填空题</p>
<li class="clearfix pr mb20">
<input name="question_type" value="3" type="hidden">
<input name="quest_id" id="quest_id" value="0" type="hidden">
<label class="panel-form-label fl"><span class="mr10">题目</span></label>
<input name="question_type" value="<%=exercise_question.question_type %>" type="hidden">
<textarea name="question_title" style="width: 590px;" id="poll_questions_title_<%=exercise_question.id %>" class="questionTitle" placeholder="请输入填空题的题干(注意:目前仅支持一个空)" type="text" onfocus="autoHeight('#poll_questions_title_<%=exercise_question.id %>',30)"><%=exercise_question.question_title %></textarea>
</div>
<div class="ur_editor_content" id="edit_single">
<ul>
<div id="poll_answers_<%=exercise_question.id%>">
<% exercise_question.exercise_standard_answers.reorder("created_at").each_with_index do |exercise_choice,index| %>
<li class="ur_item new_answer">
<label name='candiate_items'>参考答案<%=convert_to_chi_num(index+1) %><span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>
<input class="candiate_answer w560" name="exercise_choice[<%=exercise_choice.id %>]" placeholder="请输入参考答案" type="text" value="<%=exercise_choice.answer_text %>"/>
<a class="icon_remove" title="删除" onclick="remove_single_answer($(this));"></a>
</li>
<div class="cl"></div>
<% end %>
<li class="ur_item">
<div class="dash-block new-question w560" style="margin-left: 82px;" onclick="add_candidate_answer($(this));">新建参考答案</div>
</li>
<div class="cl"></div>
</div>
<textarea maxlength="250" class="panel-form-width2-690 fl panel-box-sizing questionTitle" name="question_title" id="poll_questions_title_<%=exercise_question.id %>" placeholder="请输入填空题的题干(注意:目前仅支持一个空)" type="text" oninput="autoHeight('#poll_questions_title_<%=exercise_question.id %>',30)"><%=exercise_question.question_title %></textarea>
</li>
<% exercise_question.exercise_standard_answers.reorder("created_at").each_with_index do |exercise_choice,index| %>
<li class="clearfix pr mb20">
<label class="panel-form-label fl"><span class="fr mr10 color-grey" name="fill_span">答案 <%=convert_to_chi_num(index+1) %></span></label>
<textarea class="candiate_answer panel-form-width2-690 fl panel-box-sizing" name="exercise_choice[<%=exercise_choice.id %>]" placeholder="请输入参考答案(可选)"><%=exercise_choice.answer_text %></textarea>
<a title="移除" href="javascript:void(0)" class="position-delete option_icon_remove" onclick="removefill(this)"><i class="fa fa-times-circle color-orange font-16 fl"></i></a>
</li>
<div class="cl"></div>
</ul>
</div>
<div class="ur_editor_footer">
<span class="fl c_red mt10">温馨提示:[填空题]属于客观题将由系统自动评分,请输入参考答案</span>
<a class="big_blue_btn borderRadius fr" data-button="ok" onclick="edit_poll_question($(this),<%= exercise_question.id %>,3);">保存</a>
<a class="big_grey_btn borderRadius fr mr10" data-button="cancel" onclick="resetQuestion<%=exercise_question.id%>();pollQuestionCancel(<%= exercise_question.id%>);">
<%= l(:button_cancel)%>
</a>
</div>
<div class="cl"></div>
<% end %>
<li class="clearfix mb20">
<label class="panel-form-label fl"><span>&nbsp;</span></label>
<div class="fl panel-box-sizing add-option-input border-dash-orange"><a title="新增" href="javascript:void(0)" class="option_fillin_add" onclick="addfill(this)">新增参考答案</a></div>
</li>
<li class="clearfix mb20">
<label class="panel-form-label fl"><span class="mr10">分值</span></label>
<input id="poll_question_score_<%=exercise_question.id %>" value="<%=exercise_question.question_score %>" type="text" name="question_score" class="with10 mr5 fl pl10 panel-box-sizing task-height-40">
<label class="fl" style="line-height: 40px;">分</label>
<p class="fr">
<span class="font-12 color-grey mb10" style="display: block;">温馨提示:[填空题]属于客观题将由系统自动评分,请设置标准答案</span>
<a href="javascript:void(0)" class="fr task-btn task-btn-blue"onclick="edit_poll_question($(this),<%= exercise_question.id %>,3);">保存</a>
<a href="javascript:void(0)" class="fr task-btn mr10" onclick="$(this).parent().parent().parent().parent().remove();">取消</a>
</p>
</li>
</div>
<!--编辑单选 end-->
<% end%>
<% end %>

View File

@ -0,0 +1,261 @@
<% content_for :header_tags do %>
<%= import_ke(enable_at: false, prettify: false, init_activity: true) %>
<% end %>
<div class="edu-con-top user_bg_shadow bor-grey-e clearfix mb20" id="exercise_head">
<div class="<%= is_edit ? '' : 'none' %>" id="exercise_head_show">
<%= render :partial => 'show_head', :locals => {:exercise => @exercise} %>
</div>
<div class="<%= is_edit ? 'none' : '' %>" id="exercise_head_edit">
<% if is_edit %>
<%= render :partial => 'edit_head', :locals => {:exercise => @exercise} %>
<% else %>
<%= render :partial => 'new_head', :locals => {:exercise => @exercise} %>
<% end %>
</div>
</div>
<div id="total_questions_score">
<%= render :partial => "exercise/total_questions_score" %>
</div>
<div id="exercise_question_list">
<% if is_edit %>
<%= render :partial => "exercise/exercise_content" %>
<% end %>
</div>
<div class="edu-con-top user_bg_shadow bor-grey-e clearfix mb20" id="new_exercise_question">
<%= render :partial => "exercise/new_question" %>
</div>
<div id="new_poll_question">
</div>
<script id="t:set-option-list" type="text/html">
<li class="clearfix pr mb20">
<label class="panel-form-label fl"><span class="option-item fr mr10 color-grey select-choice" name="option_span" onclick="selectchoice(this)" data-tip-down="点击设置答案">A</span></label>
<input type="hidden" name="choice[answer][]">
<textarea class="panel-form-width2-690 fl panel-box-sizing" name="question_answer[]" placeholder="请输入选项内容"></textarea>
<a title="移除" href="javascript:void(0)" class="position-delete option_icon_remove" onclick="removeSingle(this)"><i class="fa fa-times-circle color-orange font-16 fl"></i></a>
</li>
</script>
<script id="t:set-option-lists" type="text/html">
<li class="clearfix pr mb20">
<label class="panel-form-label fl"><span class="option-item fr mr10 color-grey select-choice" onclick="selectMul(this)" name="option_spans" data-tip-down="点击设置答案">A</span></label>
<textarea class="panel-form-width2-690 fl panel-box-sizing" name="question_answer[]" placeholder="请输入选项内容"></textarea>
<a title="移除" href="javascript:void(0)" class="position-delete option_icon_remove" onclick="removeMuli(this)"><i class="fa fa-times-circle color-orange font-16 fl"></i></a>
</li>
</script>
<script id="t:set-fillin-lists" type="text/html">
<li class="clearfix pr mb20">
<label class="panel-form-label fl"><span class="fr mr10 color-grey" name="fill_span">答案 2</span></label>
<textarea class="candiate_answer panel-form-width2-690 fl panel-box-sizing" name="exercise_choice[]" placeholder="请输入参考答案(可选)"></textarea>
<a title="移除" href="javascript:void(0)" onclick="removefill(this)" class="position-delete option_icon_remove"><i class="fa fa-times-circle color-orange font-16 fl"></i></a>
</li>
</script>
<script>
/*填空题操作*/
function addfill(item){
var bt = baidu.template;
bt.LEFT_DELIMITER = '<!';
bt.RIGHT_DELIMITER = '!>';
var html = bt('t:set-fillin-lists', null);
$(item).parent().parent('.clearfix').before(html);
$(item).parent().parent('.clearfix').prev().find('textarea').attr("name", "exercise_choice["+new Date().getTime()+"]");
var inputs = document.getElementsByName("exercise_choice[]");
var inputs_spans=$(item).parents(".fillin_Temp").find("li span[name='fill_span']");
//var inputs_spans = document.getElementsByName("fill_span");
for (var j = 0; j < inputs_spans.length; j++) {
var countChar=convert_to_chi_num(j+1);
$(inputs_spans[j]).html("答案 "+countChar);
}
// for (var i = 0; i < inputs.length; i++) {
// autoTextarea(inputs[i], 0, 140);
// }
$(inputs[inputs.length - 1]).focus();
}
function convert_to_chi_num(num){
var toChar="";
switch(num){
case 1:
return toChar="一";
break;
case 2:
return toChar="二";
break;
case 3:
return toChar="三";
break;
case 4:
return toChar="四";
break;
case 5:
return toChar="五";
break;
case 6:
return toChar="六";
break;
case 7:
return toChar="七";
break;
case 8:
return toChar="八";
break;
case 9:
return toChar="九";
break;
}
}
function removefill(item){
var temp=$(item).parents(".fillin_Temp");
$(item).parents('li').remove();
var inputs_spans=temp.find("li span[name='fill_span']");
//var inputs_spans = document.getElementsByName("fill_span");
for (var j = 0; j < parseInt(inputs_spans.length); j++) {
var countChar=convert_to_chi_num(j+1);
$(inputs_spans[j]).html("答案 "+countChar);
}
}
/*选择题操作*/
function removeMuli(item){
var temp=$(item).parents("li").siblings("div").find(".current-option");
var count=0;
var exercise_choice = $(item).parents(".multiple_Temp").find("input[name='exercise_choice']");
var muil=$(item).parents(".multiple_Temp").find(".check-option-bg");
var pare=$(item).parents(".multiple_Temp");
if($(item).parents("li").find("label span").hasClass("check-option-bg")){
count++;
}
$(item).parents('li').remove();
var inputs_spans=pare.find("li span[name='option_spans']");
//var inputs_spans = document.getElementsByName("option_spans");
for (var j = 0; j < parseInt(inputs_spans.length)-count; j++) {
if(j >= 0 && j <= 26){
if(j >= 0 && j <= 26){
$(inputs_spans[j]).html(String.fromCharCode(65 + j));
}
}
}
temp.html("");
if(parseInt(muil.length)-count>0){
for(var i=0;i<parseInt(muil.length)-count;i++){
temp.html(temp.html()+muil.eq(i).html());
}
exercise_choice.val(temp.html());
}else{
exercise_choice.val('');
temp.html("请点击正确选项");
}
}
function addMuli(item){
var bt = baidu.template;
bt.LEFT_DELIMITER = '<!';
bt.RIGHT_DELIMITER = '!>';
var html = bt('t:set-option-lists', null);
$(item).parent().parent('.clearfix').before(html);
$(item).parent().parent('.clearfix').prev().find('textarea').attr("name", "question_answer["+new Date().getTime()+"]");
var inputs = document.getElementsByName("question_answer[]");
var inputs_spans=$(item).parents(".multiple_Temp").find("li span[name='option_spans']");
//var inputs_spans = document.getElementsByName("option_spans");
for (var j = 0; j < inputs_spans.length; j++) {
if(j >= 0 && j <= 26){
$(inputs_spans[j]).html(String.fromCharCode(65 + j));
}
}
$(inputs[inputs.length - 1]).focus();
}
function selectMul(item){
var temp=$(item).parents(".multiple_Temp");
var exercise_choice = $(temp).find("input[name='exercise_choice']");
temp.find("li").removeClass("check-option-bg");
$(item).toggleClass("check-option-bg");
temp.find(".current-option").html("");
if(temp.find(".check-option-bg").length>0){
for(var i=0;i<temp.find(".check-option-bg").length;i++){
temp.find(".current-option").html(temp.find(".current-option").html()+temp.find(".check-option-bg").eq(i).html());
}
exercise_choice.val(temp.find(".current-option").html());
}else{
temp.find(".current-option").html("请点击正确选项");
exercise_choice.val('');
}
}
/*单选题操作*/
function addSingle(item){
var bt = baidu.template;
bt.LEFT_DELIMITER = '<!';
bt.RIGHT_DELIMITER = '!>';
var html = bt('t:set-option-list', null);
$(item).parent().parent('.clearfix').before(html);
$(item).parent().parent('.clearfix').prev().find('textarea').attr("name", "question_answer["+new Date().getTime()+"]");
var inputs = document.getElementsByName("question_answer[]");
var inputs_spans=$(item).parents(".single_Temp").find("li span[name='option_span']");
//var inputs_spans = document.getElementsByName("option_span");
for (var j = 0; j < inputs_spans.length; j++) {
if(j >= 0 && j <= 26){
$(inputs_spans[j]).html(String.fromCharCode(65 + j));
}
}
$(inputs[inputs.length - 1]).focus();
}
function removeSingle(item){
var temp=$(item).parents("li").siblings("div").find(".current-option");
var exercise_choice = $(item).parents(".single_Temp").find("input[name='exercise_choice']");
var singl=$(item).parents(".single_Temp").find(".check-option-bg");
var pare=$(item).parents(".single_Temp");
temp.html("");
var count=0;
if($(item).parents("li").find("label span").hasClass("check-option-bg")){
count++;
}
$(item).parents('li').remove();
var inputs_spans=pare.find("li span[name='option_span']");
//var inputs_spans = document.getElementsByName("option_span");
for (var j = 0; j < parseInt(inputs_spans.length)-count; j++) {
if(j >= 0 && j <= 26){
if(j >= 0 && j <= 26){
$(inputs_spans[j]).html(String.fromCharCode(65 + j));
}
}
}
if(parseInt(singl.length)-count>0){
for(var i=0;i<parseInt(singl.length)-count;i++){
temp.html(temp.html()+singl.eq(i).html());
}
exercise_choice.val(temp.html());
}else{
temp.html("请点击正确选项");
exercise_choice.val('');
}
}
function selectchoice(item){
var temp=$(item).parents(".single_Temp");
var exercise_choice = $(temp).find("input[name='exercise_choice']");
$(temp).find("li span").removeClass("check-option-bg");
$(item).toggleClass("check-option-bg");
temp.find(".current-option").html("");
if(temp.find(".check-option-bg").length>0){
for(var i=0;i<temp.find(".check-option-bg").length;i++){
temp.find(".current-option").html(temp.find(".current-option").html()+temp.find(".check-option-bg").eq(i).html());
}
exercise_choice.val(temp.find(".current-option").html());
}else{
temp.find(".current-option").html("请点击正确选项");
exercise_choice.val('');
}
}
</script>

View File

@ -1,56 +1,34 @@
<% mc_question_list = exercise.exercise_questions.where("question_type=1") %>
<% mcq_question_list = exercise.exercise_questions.where("question_type=2") %>
<% single_question_list = exercise.exercise_questions.where("question_type=3") %>
<% multi_question_list = exercise.exercise_questions.where("question_type=4") %>
<div class="testStatus" id="mc_question_list" style="display: <%=mc_question_list.count > 0 ? "" : "none" %>">
<h3 class="fontGrey3">单选题</h3>
<% mc_question_list.each_with_index do |exercise_question, index| %>
<div id="poll_questions_<%= exercise_question.id%>">
<div id="show_poll_questions_<%= exercise_question.id %>" class="<%= (index + 1) == mc_question_list.count ? '' : 'border_b' %>">
<%= render :partial => 'show_MC', :locals => {:exercise_question => exercise_question} %>
</div>
<div id="edit_poll_questions_<%= exercise_question.id %>" style="display: none;">
<%= render :partial => 'edit_MC', :locals => {:exercise_question => exercise_question} %>
</div>
</div>
<% end %>
</div>
<div class="testStatus" id="mcq_question_list" style="display: <%=mcq_question_list.count > 0 ? "" : "none" %>">
<h3 class="fontGrey3">多选题</h3>
<% mcq_question_list.each_with_index do |exercise_question, index| %>
<div id="poll_questions_<%= exercise_question.id%>">
<div id="show_poll_questions_<%= exercise_question.id %>" class="<%= (index + 1) == mcq_question_list.count ? '' : 'border_b' %>">
<%= render :partial => 'show_MCQ', :locals => {:exercise_question => exercise_question} %>
</div>
<div id="edit_poll_questions_<%= exercise_question.id %>" style="display: none;">
<%= render :partial => 'edit_MCQ', :locals => {:exercise_question => exercise_question} %>
</div>
</div>
<% end %>
</div>
<div class="testStatus" id="single_question_list" style="display: <%=single_question_list.count > 0 ? "" : "none" %>">
<h3 class="fontGrey3">填空题</h3>
<% single_question_list.each_with_index do |exercise_question, index| %>
<div id="poll_questions_<%= exercise_question.id%>">
<div id="show_poll_questions_<%= exercise_question.id %>" class="<%= (index + 1) == single_question_list.count ? '' : 'border_b' %>">
<%= render :partial => 'show_single', :locals => {:exercise_question => exercise_question} %>
</div>
<div id="edit_poll_questions_<%= exercise_question.id %>" style="display: none;">
<%= render :partial => 'edit_single', :locals => {:exercise_question => exercise_question} %>
</div>
</div>
<% end %>
</div>
<div class="testStatus" id="multi_question_list" style="display: <%=multi_question_list.count > 0 ? "" : "none" %>">
<h3 class="fontGrey3">问答题</h3>
<% multi_question_list.each_with_index do |exercise_question, index| %>
<div id="poll_questions_<%= exercise_question.id%>">
<div id="show_poll_questions_<%= exercise_question.id %>" class="<%= (index + 1) == multi_question_list.count ? '' : 'border_b' %>">
<%= render :partial => 'show_multi', :locals => {:exercise_question => exercise_question} %>
</div>
<div id="edit_poll_questions_<%= exercise_question.id %>" style="display: none;">
<%= render :partial => 'edit_multi', :locals => {:exercise_question => exercise_question} %>
</div>
</div>
<% end %>
</div>
<% @exercise.exercise_questions.each do |eq| %>
<div id='poll_questions_<%= eq.id %>'>
<% case eq.question_type %>
<% when 1 %>
<div id='show_poll_questions_<%= eq.id %>'>
<%= render :partial => 'show_MC', :locals => {:exercise_question => eq} %>
</div>
<div id='edit_poll_questions_<%= eq.id %>' style='display: none;'>
<%= render :partial => 'edit_MC', :locals => {:exercise_question => eq} %>
</div>
<% when 2 %>
<div id='show_poll_questions_<%= eq.id %>'>
<%= render :partial => 'show_MCQ', :locals => {:exercise_question => eq} %>
</div>
<div id='edit_poll_questions_<%= eq.id %>' style='display: none;'>
<%= render :partial => 'edit_MCQ', :locals => {:exercise_question => eq} %>
</div>
<% when 3 %>
<div id='show_poll_questions_<%= eq.id %>'>
<%= render :partial => 'show_single', :locals => {:exercise_question => eq} %>
</div>
<div id='edit_poll_questions_<%= eq.id %>' style='display: none;'>
<%= render :partial => 'edit_single', :locals => {:exercise_question => eq} %>
</div>
<% when 4 %>
<div id='show_poll_questions_<%= eq.id %>'>
<%= render :partial => 'show_multi', :locals => {:exercise_question => eq} %>
</div>
<div id='edit_poll_questions_<%= eq.id %>' style='display: none;'>
<%= render :partial => 'edit_multi', :locals => {:exercise_question => eq} %>
</div>
<% end %>
</div>
<% end %>

View File

@ -0,0 +1,21 @@
<p class="fl task-form-60 mt3 ml15" id="exercise_index_tab">
<a href="<%= exercise_index_path(:course_id => @course.id, :search => @search) %>" class="<%= @type.nil? ? "active" : "" %> edu-filter-cir-grey mr5 font-12 fl" data-remote="true">全部</a>
<% if @is_teacher %>
<a href="<%= exercise_index_path(:course_id => @course.id, :search => @search, :type => 1) %>" class="<%= @type == '1' ? "active" : "" %> edu-filter-cir-grey mr5 font-12 fl" data-remote="true">未发布</a>
<% end %>
<a href="<%= exercise_index_path(:course_id => @course.id, :search => @search, :type => 2) %>" class="<%= @type == '2' ? "active" : "" %> edu-filter-cir-grey mr5 font-12 fl" data-remote="true">提交中</a>
<a href="<%= exercise_index_path(:course_id => @course.id, :search => @search, :type => 3) %>" class="<%= @type == '3' ? "active" : "" %> edu-filter-cir-grey mr5 font-12 fl" data-remote="true">已截止</a>
<!--<a href="javascript:void(0)" class=" edu-filter-cir-grey mr5 font-12 fl" data-remote="true">评阅中</a>-->
<!--<a href="javascript:void(0)" class=" edu-filter-cir-grey mr5 font-12 fl" data-remote="true">已结束</a>-->
</p>
<div id="search_div" class="edu-position fr task-form-30 mr15" style="padding: 0px">
<%= form_tag(exercise_index_path(:course_id => @course.id, :type => @type), :remote => true , :method => 'get', :id => 'exercise_search_form') do %>
<div class="edu-find fr with95 mr20 pr">
<div class="edu-find-input">
<input type="text" class="task-form-100 panel-box-sizing" name="search" placeholder="输入试卷名称进行搜索" value="<%= @search %>" id="exercise_name_search">
<i class="fa fa-close mr5 color-grey edu-close" onclick="close_searchbox();"></i>
</div>
<a href="javascript:void(0);" onclick="$('#exercise_search_form').submit();" class="edu-open font-16 color-grey "><i class="fa fa-search"></i></a>
</div>
<% end %>
</div>

View File

@ -3,7 +3,7 @@
$("#RSide").removeAttr("id");
$("#homework_page_right").css("min-height",$("#courseLSide").height()-33);
$("#Container").css("width","1000px");
var end_time = <%=exercise.end_time.to_i%>;
var end_time = <%=@exercise.end_time.to_i%>;
getTime(end_time);
/*start_time = new Date();
start_time.setFullYear(<%#=exercise_user.start_at.year%>);
@ -42,323 +42,237 @@
//}
}
</script>
<div class="homepageRight mt0 ml10">
<div class="resources">
<div class="testStatus"><!--头部显示 start-->
<h1 class="ur_page_title" id="polls_name_h"><%= exercise.exercise_name%></h1>
<div id="start_time" style="display: none"><%=exercise_user.start_at %></div>
<div class="fontGrey2">
<span class="mr100">开始时间:<%=Time.parse(h(exercise_user.start_at)).strftime("%Y-%m-%d %H:%M:%S")%></span>
<span class="mr100">截止时间:<%=Time.parse(h(exercise.end_time)).strftime("%Y-%m-%d %H:%M:%S")%></span>
<% unless exercise.time == -1 %>
<span class="fr">测验时长:<%=exercise.time %>分钟</span>
<% end %>
<!--
<span class="fr">剩余时长:<span class="c_red" id="rest_hours"></span>&nbsp;小时&nbsp;<span class="c_red" id="rest_minutes"></span>&nbsp;分钟&nbsp;<span class="c_red" id="rest_seconds"></span>&nbsp;秒</span>
-->
</div>
<pre class="fontGrey2 font_cus" style="white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:pre-wrap;white-space:-o-pre-wrap;word-break:normal;word-wrap: break-word;"><%= exercise.exercise_description.nil? ? "" :exercise.exercise_description.html_safe%></pre>
<div class="cl"></div>
</div>
<% current_score = get_current_score exercise %>
<div id="total_questions_score" style="display: <%= exercise.exercise_questions.count != 0 ? '' : 'none' %>">
<%= render :partial => 'exercise/total_questions_score', :locals => {:exercise => exercise, :current_score => current_score} %>
</div>
<div class="edu-class-container edu-position">
<p class="mb10 font-14">
<i class="fa fa-map-marker mr5 color-grey"></i>
<%= link_to @course.name, course_path(@course) %> &gt; <%= link_to "试卷列表", exercise_index_path(:course_id => @course.id) %> &gt; <%= link_to @exercise.exercise_name, student_exercise_list_exercise_path(@exercise) %> &gt; <%= @exercise_user.user.show_real_name %>
</p>
<div class="edu-con-top clearfix user_bg_shadow bor-grey-e mb20">
<p class="ml15 fl color-grey3">
<% unless @exercise.is_public %>
<i class="fa fa-lock color-grey fl mt8 mr15 font-18"></i>
<% end %>
<%= @exercise.exercise_name %>
</p>
<% mc_question_list = exercise.exercise_questions.where("question_type=1") %>
<% mcq_question_list = exercise.exercise_questions.where("question_type=2") %>
<% single_question_list = exercise.exercise_questions.where("question_type=3") %>
<% multi_question_list = exercise.exercise_questions.where("question_type=4") %>
<% if exercise.question_random == 1 %>
<% mc_question_list = mc_question_list.shuffle %>
<% mcq_question_list = mcq_question_list.shuffle %>
<% single_question_list = single_question_list.shuffle %>
<% multi_question_list =multi_question_list.shuffle %>
<% end %>
<div class="testStatus" id="mc_question_list" style="display: <%=mc_question_list.count > 0 ? "" : "none" %>">
<h3 class="fontGrey3">单选题</h3>
<% mc_question_list.each_with_index do |exercise_question, list_index| %>
<div id="poll_questions_<%= exercise_question.id%>">
<div id="show_poll_questions_<%= exercise_question.id %>" class="<%= (list_index + 1) == mc_question_list.count ? '' : 'border_b' %>">
<div>
<div class="exercise_title">
第<%= list_index+1%>题:<%= exercise_question.question_title %>&nbsp;&nbsp;(<%= exercise_question.question_score %>分)
</div>
<div class="cl"></div>
<div class="exercise_inputs">
<table class="" style="width:100%;">
<tbody>
<% exercise_choices = exercise.choice_random == 1 ? exercise_question.exercise_choices.shuffle : exercise_question.exercise_choices.reorder("choice_position") %>
<% exercise_choices.each_with_index do |exercise_choice,index| %>
<tr>
<td>
<label>
<script>
function click_<%= exercise_choice.id %>(obj)
{
$.ajax({
type: "post",
url: "<%= commit_answer_exercise_path(exercise) %>",
data: {
exercise_choice_id: <%= exercise_choice.id %>,
exercise_question_id: <%= exercise_question.id %>
},
success: function (data) {
var dataObj = eval(data);
if(dataObj.text == "ok")
{
obj.checked = true;
$("#question_answer_span_<%= exercise_question.id %>").addClass("bg_blue");
}
else
{
obj.checked = false;
}
},
error: function () {
long_notice_box("网络异常,答题失败,请确认网络正常连接后再答题。");
}
});
}
</script>
<%= radio_button "exercise",exercise_question.id.to_s+"exercise_choice_id",exercise_choice.id,:class=>"ur_radio",:onclick =>"click_#{exercise_choice.id}(this);return false;",:checked => answer_be_selected?(exercise_choice,User.current),:disabled => !@can_edit_excercise %>
<%= convert_to_char((index+1).to_s)%>&nbsp;&nbsp;<%= exercise_choice.choice_text%>
</label>
</td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
</div>
</div>
<% end %>
</div>
<div class="testStatus" id="mcq_question_list" style="display: <%=mcq_question_list.count > 0 ? "" : "none" %>">
<h3 class="fontGrey3">多选题</h3>
<% mcq_question_list.each_with_index do |exercise_question,list_index| %>
<div id="poll_questions_<%= exercise_question.id%>">
<div id="show_poll_questions_<%= exercise_question.id %>" class="<%= (list_index + 1) == mcq_question_list.count ? '' : 'border_b' %>">
<div>
<div class="exercise_title">
第<%= list_index+1%>题:<%= exercise_question.question_title %>&nbsp;&nbsp;(<%= exercise_question.question_score %>分)
</div>
<div class="cl"></div>
<div class="exercise_inputs">
<table class="" style="width:100%;">
<tbody>
<% exercise_choices = exercise.choice_random == 1 ? exercise_question.exercise_choices.shuffle : exercise_question.exercise_choices.reorder("choice_position") %>
<% exercise_choices.each_with_index do |exercise_choice,index| %>
<tr>
<td>
<label>
<script>
function click_<%= exercise_choice.id %>(obj)
{
$.ajax({
type: "post",
url: "<%= commit_answer_exercise_path(exercise) %>",
data: {
exercise_choice_id: <%= exercise_choice.id %>,
exercise_question_id: <%= exercise_question.id %>
},
success: function (data) {
var dataObj = eval(data);
if(dataObj.text == "ok")
{
obj.checked = true;
}
else
{
obj.checked = false;
}
if(dataObj.is_answer)
{
$("#question_answer_span_<%= exercise_question.id %>").addClass("bg_blue");
}
else
{
$("#question_answer_span_<%= exercise_question.id %>").removeClass("bg_blue");
}
},
error: function () {
long_notice_box("网络异常,答题失败,请确认网络正常连接后再答题。");
}
});
}
</script>
<input class="ur_radio" type="checkbox" onclick="click_<%= exercise_choice.id %>(this);return false;" <%= answer_be_selected?(exercise_choice,User.current) ? "checked":"" %> <%= @can_edit_excercise?"":"disabled=disabled" %> >
<%= convert_to_char((index+1).to_s)%>&nbsp;&nbsp;<%= exercise_choice.choice_text%>
</label>
</td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div><!--多选题显示 end-->
</div>
</div>
<% end %>
</div>
<div class="testStatus" id="single_question_list" style="display: <%=single_question_list.count > 0 ? "" : "none" %>">
<h3 class="fontGrey3">填空题</h3>
<% single_question_list.each_with_index do |exercise_question, list_index| %>
<div id="poll_questions_<%= exercise_question.id%>">
<div id="show_poll_questions_<%= exercise_question.id %>" class="<%= (list_index + 1) == single_question_list.count ? '' : 'border_b' %>">
<div>
<div class="exercise_title">
第<%= list_index+1%>题:<%= exercise_question.question_title %>&nbsp;&nbsp;(<%= exercise_question.question_score %>分)
</div>
<div class="cl"></div>
<div>
<script>
function onblur_<%= exercise_question.id %>(obj)
{
$(window).unbind('beforeunload');
$.ajax({
type: "post",
url: "<%= commit_answer_exercise_path(exercise) %>",
data: {
exercise_question_id: <%= exercise_question.id %>,
answer_text: $(obj).val().trim()
},
success: function (data) {
var dataObj = eval(data);
obj.value = dataObj.text;
if(dataObj.text != ""){
$("#question_answer_span_<%= exercise_question.id %>").addClass("bg_blue");
} else{
$("#question_answer_span_<%= exercise_question.id %>").removeClass("bg_blue");
}
},
error: function () {
long_notice_box("网络异常,答题失败,请确认网络正常连接后再答题。");
}
});
}
</script>
<input class="fillInput" placeholder="在此填入答案" type="text" value="<%= get_anwser_vote_text(exercise_question.id,User.current.id).html_safe %>" onblur="onblur_<%= exercise_question.id %>(this);" <%= @can_edit_excercise?"":"disabled=disabled" %>>
</div>
</div>
</div>
</div>
<% end %>
</div>
<div class="testStatus" id="multi_question_list" style="display: <%=multi_question_list.count > 0 ? "" : "none" %>">
<h3 class="fontGrey3">问答题</h3>
<% multi_question_list.each_with_index do |exercise_question, list_index| %>
<div id="poll_questions_<%= exercise_question.id%>">
<div id="show_poll_questions_<%= exercise_question.id %>" class="<%= (list_index + 1) == multi_question_list.count ? '' : 'border_b' %>">
<div>
<div class="exercise_title">
第<%= list_index+1%>题:<%= exercise_question.question_title %>&nbsp;&nbsp;(<%= exercise_question.question_score %>分)
</div>
<div class="cl"></div>
<div>
<script>
function onblur_<%= exercise_question.id %>(obj)
{
$(window).unbind('beforeunload');
$.ajax({
type: "post",
url: "<%= commit_answer_exercise_path(exercise) %>",
data: {
exercise_question_id: <%= exercise_question.id %>,
answer_text: $(obj).val().trim()
},
success: function (data) {
var dataObj = eval(data);
obj.text = dataObj.text;
if(dataObj.text != ""){
$("#question_answer_span_<%= exercise_question.id %>").addClass("bg_blue");
} else{
$("#question_answer_span_<%= exercise_question.id %>").removeClass("bg_blue");
}
},
error: function () {
long_notice_box("网络异常,答题失败,请确认网络正常连接后再答题。");
}
});
}
</script>
<textarea style="width: 693px; height: 90px; line-height: 30px; border: 1px solid #CBCBCB;" name="exercise_choice" placeholder="在此填入答案" onblur="onblur_<%= exercise_question.id %>(this);" <%= @can_edit_excercise?"":"disabled=disabled" %>><%= get_anwser_vote_text(exercise_question.id,User.current.id).html_safe %></textarea>
</div>
</div>
</div>
</div>
<% end %>
</div>
<div class="testStatus">
<p class="f14 fontGrey3">答题情况</p>
<div class="mt5">
<span class="f14 mr10 fl">单选题:</span>
<% mc_question_list.each_with_index do |exercise_question, list_index| %>
<span id="question_answer_span_<%= exercise_question.id %>" class="fl mr10 question_answer_span <%= User.current.exercise_answer.where(:exercise_question_id => exercise_question.id).count > 0 ? 'bg_blue' : '' %>"><%= list_index + 1 %></span>
<% end %>
<div class="cl"></div>
</div>
<div class="mt5">
<span class="f14 mr10 fl">多选题:</span>
<% mcq_question_list.each_with_index do |exercise_question, list_index| %>
<span id="question_answer_span_<%= exercise_question.id %>" class="fl mr10 question_answer_span <%= User.current.exercise_answer.where(:exercise_question_id => exercise_question.id).count > 0 ? 'bg_blue' : '' %>"><%= list_index + 1 %></span>
<% end %>
<div class="cl"></div>
</div>
<div class="mt5">
<span class="f14 mr10 fl">填空题:</span>
<% single_question_list.each_with_index do |exercise_question, list_index| %>
<span id="question_answer_span_<%= exercise_question.id %>" class="fl mr10 question_answer_span <%= User.current.exercise_answer.where(:exercise_question_id => exercise_question.id).count > 0 ? 'bg_blue' : '' %>"><%= list_index + 1 %></span>
<% end %>
<div class="cl"></div>
</div>
<div class="mt5">
<span class="f14 mr10 fl">问答题:</span>
<% multi_question_list.each_with_index do |exercise_question, list_index| %>
<span id="question_answer_span_<%= exercise_question.id %>" class="fl mr10 question_answer_span <%= User.current.exercise_answer.where(:exercise_question_id => exercise_question.id).count > 0 ? 'bg_blue' : '' %>"><%= list_index + 1 %></span>
<% end %>
<div class="cl"></div>
</div>
</div>
<div class="ur_buttons">
<a href="javascript:void(0)" onclick="commit_exercise_f();" class="btn_blue_64_width" style="margin-left:105px;">马上提交</a>
</div>
<div class="cl"></div>
<!--contentbox end-->
<span class="fr mr15 mt3 color-grey"><%= format_time @exercise_user.start_at %> 开始答题</span>
</div>
<!--RSide end-->
<% unless @exercise.try(:exercise_description).nil? %>
<div class="edu-con-top font-14 color-grey clearfix user_bg_shadow bor-grey-e mb20">
<pre class="exercise_que_title pl15 pr15"><%= @exercise.try(:exercise_description).html_safe%></pre>
</div>
<% end %>
<div id="total_questions_score">
<%= render :partial => "exercise/total_questions_score" %>
</div>
<div class="edu-con-top user_bg_shadow bor-grey-e clearfix mb20">
<div class="clearfix pl15">
<span class="checkstatus_box_small post_btn_white mt10" style="border: 1px solid #CCCCCC;"></span><span class="fl mr20 font-12 mt3">已答</span>
<span class="checkstatus_box_small post_btn_grey mt10"></span><span class="fl mr20 font-12 mt3">未答</span>
</div>
<% if @exercise.question_random == 1 %>
<% question_list = @exercise.exercise_questions.shuffle %>
<% end %>
<div class="clearfix ml15 mt10 mb15">
<% question_list.each_with_index do |eq, index| %>
<span id="ex_commit_status_<%= eq.id %>" class="checkstatus_box_big <%= User.current.exercise_answer.where(:exercise_question_id => eq.id).count > 0 ? 'post_btn_white' : 'post_btn_grey' %>"><%= index + 1 %></span>
<% end %>
</div>
</div>
<div class="clearfix">
<% question_list.each_with_index do |exercise_question, i| %>
<div class="question_item_con font-14 user_bg_shadow bor-grey-e mb20 pt15">
<div class="clearfix pl15 pr15">
<p class="fl font-15">第<%= i + 1 %>题:<span class="color-orange03 ml10">[<%= exercise_question.question_type_name %>]</span><span class="ml10"><%= exercise_question.question_score %></span>分</p>
</div>
<pre class="exercise_que_title pl15 pr15"><%= exercise_question.question_title %></pre>
<% case exercise_question.question_type %>
<% when 1 %>
<div class="pl15 pr15 mb15">
<% exercise_choices = @exercise.choice_random == 1 ? exercise_question.exercise_choices.shuffle : exercise_question.exercise_choices.reorder("choice_position") %>
<% exercise_choices.each_with_index do |exercise_choice,index| %>
<li class="clearfix">
<script>
function click_<%= exercise_choice.id %>(obj)
{
$.ajax({
type: "post",
url: "<%= commit_answer_exercise_path(@exercise) %>",
data: {
exercise_choice_id: <%= exercise_choice.id %>,
exercise_question_id: <%= exercise_question.id %>
},
success: function (data) {
var dataObj = eval(data);
if(dataObj.text == "ok")
{
obj.checked = true;
$("#ex_commit_status_<%= exercise_question.id %>").removeClass("post_btn_grey").addClass("post_btn_white");
}
else
{
obj.checked = false;
}
},
error: function () {
long_notice_box("网络异常,答题失败,请确认网络正常连接后再答题。");
}
});
}
</script>
<input name="exercise_choice_<%= exercise_question.id %>" class="magic-radio fl mt5 magic-checkbox_show" id="exercise_<%= exercise_choice.id %>_exercise_choice_id" onclick="click_<%= exercise_choice.id %>(this);return false;" type="radio" <%= !@can_edit_excercise ? "disabled" : "" %> <%= answer_be_selected?(exercise_choice,User.current) ? "checked" : "" %>>
<label class="fl color-grey3" for="exercise_<%= exercise_choice.id %>_exercise_choice_id"><%= convert_to_char((index+1).to_s)%>&nbsp;&nbsp;<%= exercise_choice.choice_text%></label>
</li>
<% end %>
</div>
<% when 2 %>
<div class="pl15 pr15 mb15">
<% exercise_choices = @exercise.choice_random == 1 ? exercise_question.exercise_choices.shuffle : exercise_question.exercise_choices.reorder("choice_position") %>
<% exercise_choices.each_with_index do |exercise_choice,index| %>
<li class="clearfix">
<script>
function click_<%= exercise_choice.id %>(obj)
{
$.ajax({
type: "post",
url: "<%= commit_answer_exercise_path(@exercise) %>",
data: {
exercise_choice_id: <%= exercise_choice.id %>,
exercise_question_id: <%= exercise_question.id %>
},
success: function (data) {
var dataObj = eval(data);
if(dataObj.text == "ok")
{
obj.checked = true;
}
else
{
obj.checked = false;
}
if(dataObj.is_answer)
{
$("#ex_commit_status_<%= exercise_question.id %>").removeClass("post_btn_grey").addClass("post_btn_white");
}
else
{
$("#ex_commit_status_<%= exercise_question.id %>").removeClass("post_btn_white").addClass("post_btn_grey");
}
},
error: function () {
long_notice_box("网络异常,答题失败,请确认网络正常连接后再答题。");
}
});
}
</script>
<input name="exercise_choice_<%= exercise_question.id %>" class="magic-checkbox fl mt5 magic-checkbox_show" id="exercise_<%= exercise_choice.id %>_exercise_choice_id" onclick="click_<%= exercise_choice.id %>(this);return false;" type="checkbox" <%= !@can_edit_excercise ? "disabled" : "" %> <%= answer_be_selected?(exercise_choice,User.current) ? "checked" : "" %>>
<label class="fl color-grey3" for="exercise_<%= exercise_choice.id %>_exercise_choice_id"><%= convert_to_char((index+1).to_s)%>&nbsp;&nbsp;<%= exercise_choice.choice_text%></label>
</li>
<% end %>
</div>
<% when 3 %>
<div class="ml15 mr15 mb15 mt10">
<script>
function onblur_<%= exercise_question.id %>(obj)
{
$(window).unbind('beforeunload');
$.ajax({
type: "post",
url: "<%= commit_answer_exercise_path(@exercise) %>",
data: {
exercise_question_id: <%= exercise_question.id %>,
answer_text: $(obj).val().trim()
},
success: function (data) {
var dataObj = eval(data);
obj.value = dataObj.text;
if(dataObj.text != ""){
$("#ex_commit_status_<%= exercise_question.id %>").removeClass("post_btn_grey").addClass("post_btn_white");
} else{
$("#ex_commit_status_<%= exercise_question.id %>").removeClass("post_btn_white").addClass("post_btn_grey");
}
},
error: function () {
long_notice_box("网络异常,答题失败,请确认网络正常连接后再答题。");
}
});
}
</script>
<textarea placeholder="在此填入答案" class="pl15 task-height-40 with100" onblur="onblur_<%= exercise_question.id %>(this);" <%= @can_edit_excercise?"":"disabled=disabled" %>><%= get_anwser_vote_text(exercise_question.id,User.current.id).html_safe %></textarea>
</div>
<% when 4 %>
<div class="ml15 mr15 mb15 mt10">
<script>
function onblur_<%= exercise_question.id %>(obj)
{
$(window).unbind('beforeunload');
$.ajax({
type: "post",
url: "<%= commit_answer_exercise_path(@exercise) %>",
data: {
exercise_question_id: <%= exercise_question.id %>,
answer_text: $(obj).val().trim()
},
success: function (data) {
var dataObj = eval(data);
obj.text = dataObj.text;
if(dataObj.text != ""){
$("#ex_commit_status_<%= exercise_question.id %>").removeClass("post_btn_grey").addClass("post_btn_white");
} else{
$("#ex_commit_status_<%= exercise_question.id %>").removeClass("post_btn_white").addClass("post_btn_grey");
}
},
error: function () {
long_notice_box("网络异常,答题失败,请确认网络正常连接后再答题。");
}
});
}
</script>
<textarea class="task-height-150 with100 pl15" name="exercise_choice" placeholder="在此填入答案" onblur="onblur_<%= exercise_question.id %>(this);" <%= @can_edit_excercise?"":"disabled=disabled" %>><%= get_anwser_vote_text(exercise_question.id,User.current.id).html_safe %></textarea>
</div>
<% end %>
</div>
<% end %>
</div>
<% if @can_edit_excercise %>
<div class="">
<p class="fr mb20">
<a href="javascript:void(0)" style="width: 50px;" onclick="commit_exercise_f();" class="task-btn task-btn-orange">交卷</a>
</p>
</div>
<% end %>
</div>
<script>
function commit_exercise_f(){
var str = "";
$.ajax({
type: "get",
url: "<%= get_student_uncomplete_question_exercise_path(exercise) %>",
url: "<%= get_student_uncomplete_question_exercise_path(@exercise) %>",
data: {},
success: function (data) {
var dataObj = eval(data);
if(dataObj.time_limit){
if(dataObj.uncomplete_count == 0){
str = "截止日期前您还可以继续答题<br/>是否确定提交";
str = "你是否确认提交?<br/>提交确定后将无法再修改答题";
} else{
str = "您还有 " + dataObj.uncomplete_count + " 题没有完成,截止日期前您还可以继续答题<br/>是否确定提交";
str = "你是否确认提交?<br/>还有 " + dataObj.uncomplete_count + " 题未答,提交确定后将无法再修改答题<br/>";
}
} else{
if(dataObj.uncomplete_count == 0){
str = "提交后将不能继续答题<br/>是否确定提交";
str = "你是否确认提交?<br/>提交确定后将无法再修改答题";
} else{
str = "您还有 " + dataObj.uncomplete_count + " 题没有完成,提交后将不能继续答题<br/>是否确定提交";
str = "你是否确认提交?<br/>还有 " + dataObj.uncomplete_count + " 题未答,提交确定后将无法再修改答题<br/>";
}
}
var htmlvalue = '<div id="muban_popup_box" style="width:380px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+
'<div class="clear mt15"><p class="text_c f14 fontGrey7">' + str + '</p><div class="cl"></div><a href="<%= commit_exercise_exercise_path(exercise) %>" class="fr sy_btn_blue mt20" data-remote="true" style="margin-right: 132px;">确定</a>'+
'<a href="javascript:void(0);" class="fr sy_btn_grey mt20 mr10" onclick="hideModal();">取消</a></div></div>';
pop_box_new(htmlvalue, 380, 140);
delete_confirm_box('<%= commit_exercise_exercise_path(@exercise) %>', str);
},
error: function () {
long_notice_box("网络异常,提交失败,请确认网络正常连接后再提交。");

View File

@ -1,256 +1,196 @@
<script type="text/javascript">
$(function(){
$("#RSide").removeAttr("id");
$("#homework_page_right").css("min-height",$("#courseLSide").height()-33);
$("#Container").css("width","1000px");
});
</script>
<div class="homepageRight mt0 ml10">
<div class="resources">
<div class="testStatus"><!--头部显示 start-->
<h1 class="ur_page_title text_c" id="polls_name_h"><%= exercise.exercise_name%></h1>
<div class="fontGrey2">
<span class="mr100">开始时间:<%=Time.parse(h(exercise_user.start_at)).strftime("%Y-%m-%d %H:%M:%S") %></span>
<span class="mr100">截止时间:<%=Time.parse(h(exercise.end_time)).strftime("%Y-%m-%d %H:%M:%S")%></span>
<% unless exercise.time == -1 %>
<span class="fr">测验时长:<%=exercise.time %>分钟</span>
<style>
.ui-slider {
position: relative;
width: 100px;
float: left;
margin-right: 20px;
margin-left: 7px;
height: 14px;
margin-top: 12px;
background: #e2e2e2;}
</style>
<div class="edu-class-container edu-position">
<p class="mb10 font-14">
<i class="fa fa-map-marker mr5 color-grey"></i>
<%= link_to @course.name, course_path(@course) %> &gt; <%= link_to "试卷列表", exercise_index_path(:course_id => @course.id) %> &gt; <%= link_to @exercise.exercise_name, student_exercise_list_exercise_path(@exercise) %> &gt; <%= @exercise_user.user.show_real_name %>
</p>
<div class="edu-con-top clearfix user_bg_shadow bor-grey-e mb20">
<p class="ml15 fl color-grey3">
<% unless @exercise.is_public %>
<i class="fa fa-lock color-grey fl mt8 mr15 font-18"></i>
<% end %>
<%= @exercise.exercise_name %>
</p>
<%= link_to "返回", student_exercise_list_exercise_path(@exercise), :class => "fr font-12 mr15 mt3 color-grey" %>
</div>
<% unless @exercise.try(:exercise_description).nil? %>
<div class="edu-con-top font-14 color-grey clearfix user_bg_shadow bor-grey-e mb20">
<pre class="exercise_que_title pl15 pr15"><%= @exercise.try(:exercise_description).html_safe%></pre>
</div>
<% end %>
<div id="total_questions_score">
<%= render :partial => "exercise/total_questions_score" %>
</div>
<div class="edu-con-top user_bg_shadow bor-grey-e clearfix mb20">
<div class="clearfix">
<span class="fl ml15 mr20 font-15">客观题</span>
<span class="checkstatus_box_small post_btn_green mt10"></span><span class="fl mr20 font-12 mt3">正确</span>
<span class="checkstatus_box_small post_btn_red mt10"></span><span class="fl font-12 mt3">错误</span>
<p class="mr15 mt3 fr color-grey font-14">总分:<span class="color-light-green" id="exercise_user_score"><%= @exercise_user.score.nil? ? "--" : format("%.1f",@exercise_user.score)%></span>分</p>
</div>
<div class="clearfix ml80 mt10 mb5">
<% @exercise.exercise_questions.where(:question_type => [1, 2, 3]).each_with_index do |eq, index| %>
<% is_correct = answer_is_correct(eq, user) %>
<span class="checkstatus_box_big <%= is_correct ? 'post_btn_green' : 'post_btn_red' %>"><%= eq.question_number %></span>
<% end %>
</div>
<div class="clearfix">
<span class="fl ml15 mr20 font-15">主观题</span>
<span class="checkstatus_box_small post_btn_white mt10" style="border: 1px solid #CCCCCC;"></span><span class="fl mr20 font-12 mt3">已评</span>
<span class="checkstatus_box_small post_btn_grey mt10"></span><span class="fl font-12 mt3">未评</span>
</div>
<div class="clearfix ml80 mt10 mb15">
<% @exercise.exercise_questions.where(:question_type => 4).each_with_index do |eq, index| %>
<% ea = User.current.exercise_answer.where(:exercise_question_id => eq.id).first %>
<span id="ex_comment_status_<%= eq.id %>" class="checkstatus_box_big <%= (ea && ea.score != -1) ? 'post_btn_white' : 'post_btn_grey' %>"><%= eq.question_number %></span>
<% end %>
</div>
</div>
<div class="clearfix">
<% @exercise.exercise_questions.each_with_index do |exercise_question, i| %>
<div class="question_item_con font-14 user_bg_shadow bor-grey-e mb20 pt15">
<div class="clearfix pl15 pr15">
<p class="fl font-15">第<%= exercise_question.question_number %>题:<span class="color-orange03 ml10">[<%= exercise_question.question_type_name %>]</span><span class="ml10"><%= exercise_question.question_score %>分</span><span class="ml10 color-red"><%= question_commit_status exercise_question, @exercise_user.user %></span></p>
<% if exercise_question.question_type != 4 %>
<% is_correct = answer_is_correct(exercise_question, user) %>
<p class="fr"><span class="<%= is_correct ? 'color-light-green' : 'color-red' %> mr3"><i class="mr5 fa <%= is_correct ? 'fa-check' : 'fa-close' %> font-14"></i><%= is_correct ? exercise_question.question_score : 0 %></span>分</p>
<% else %>
<% answer = get_user_answer(exercise_question, user)%>
<p class="fr" id="multi_q_score_<%= exercise_question.id %>"><span class="<%= answer.empty? ? 'color-red' : (answer.first.score == -1 || answer.first.score == 0 ? "color-red" : "color-light-green") %> mr3"><%= answer.empty? ? 0 : (answer.first.score == -1 ? "未批" : answer.first.score) %></span><%= answer.empty? ? "分" : (answer.first.score == -1 ? "" : "分") %></p>
<% end %>
<%# time = exercise_user.end_at - exercise_user.start_at %>
</div>
<pre class="fontGrey2 font_cus" style="white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:pre-wrap;white-space:-o-pre-wrap;word-break:normal;word-wrap: break-word;"><%= exercise.exercise_description.nil? ? "" :exercise.exercise_description.html_safe%></pre>
<div class="cl"></div>
</div>
<div>
<div class="fl mb5">得分:<span class="c_red" id="exercise_user_score"><%=exercise_user.score %></span>分</div>
<% if User.current.admin? || User.current.allowed_to?(:as_teacher,exercise.course) || (exercise.exercise_status == 3 && exercise.show_result == 1) %>
<%= link_to '返回统计结果>>',student_exercise_list_exercise_path(exercise.id,:course_id => exercise.course.id) , :class => "fr linkBlue" %>
<% end %>
</div>
<div class="cl"></div>
<% mc_question_list = exercise.exercise_questions.where("question_type=1") %>
<% mcq_question_list = exercise.exercise_questions.where("question_type=2") %>
<% single_question_list = exercise.exercise_questions.where("question_type=3") %>
<% multi_question_list = exercise.exercise_questions.where("question_type=4") %>
<div class="testStatus" id="mc_question_list" style="display: <%=mc_question_list.count > 0 ? "" : "none" %>">
<h3 class="fontGrey3">单选题</h3>
<% mc_question_list.each_with_index do |exercise_question, list_index| %>
<div id="poll_questions_<%= exercise_question.id%>">
<div id="show_poll_questions_<%= exercise_question.id %>" class="<%= (list_index + 1) == mc_question_list.count ? '' : 'border_b' %>">
<div>
<div class="exercise_title">
<div>
<span class="fl lh27">第<%= exercise_question.question_number%>题.&nbsp;&nbsp;<%= exercise_question.question_score %>分&nbsp;&nbsp;
标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %></span>
<div class="fr" id="menu_div_<%= exercise_question.id %>">
<% answer = get_user_answer(exercise_question, user)%>
<% standard_answer = get_user_standard_answer(exercise_question, user)%>
<% is_correct = !answer.empty? && !standard_answer.empty? && answer.first.exercise_choice.choice_position == standard_answer.first.exercise_choice_id %>
<div class="fr">
得分:<div class="c_red fr mr10 ml10"><%= is_correct ? exercise_question.question_score : 0 %></div>
</div>
<span class="fr mt-4 f16 mr20"><i class="<%= is_correct ? 'icon-ok c_green' : 'icon-remove c_red' %>"></i></span>
</div>
<div class="cl"></div>
</div>
<p class="formatContainer break_word"><%= exercise_question.question_title %></p>
</div>
<div class="cl"></div>
<div class="exercise_inputs">
<table class="" style="width:100%;">
<tbody>
<% exercise_question.exercise_choices.reorder("choice_position").each_with_index do |exercise_choice,index| %>
<tr>
<td>
<label>
<%= radio_button "exercise",exercise_question.id.to_s+"exercise_choice_id",exercise_choice.id,:class=>"ur_radio",:checked => answer_be_selected?(exercise_choice,user),:disabled => !@can_edit_excercise %>
<%= convert_to_char((index+1).to_s)%>&nbsp;&nbsp;<%= exercise_choice.choice_text%>
</label>
</td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div>
<pre class="exercise_que_title pl15 pr15"><%= exercise_question.question_title %></pre>
<% case exercise_question.question_type %>
<% when 1 %>
<div class="pl15 pr15 mb15">
<% exercise_choices = @exercise.choice_random == 1 ? exercise_question.exercise_choices.shuffle : exercise_question.exercise_choices.reorder("choice_position") %>
<% exercise_choices.each_with_index do |exercise_choice,index| %>
<li class="clearfix">
<input name="exercise_choice_<%= exercise_question.id %>" class="magic-radio fl mt5 magic-checkbox_show" id="exercise_<%= exercise_choice.id %>_exercise_choice_id" type="radio" disabled <%= answer_be_selected?(exercise_choice,user) ? "checked" : "" %>>
<label class="fl color-grey3" for="exercise_<%= exercise_choice.id %>_exercise_choice_id"><%= convert_to_char((index+1).to_s)%>&nbsp;&nbsp;<%= exercise_choice.choice_text%></label>
</li>
<% end %>
</div>
</div>
<% end %>
</div>
<div class="testStatus" id="mcq_question_list" style="display: <%=mcq_question_list.count > 0 ? "" : "none" %>">
<h3 class="fontGrey3">多选题</h3>
<% mcq_question_list.each_with_index do |exercise_question, list_index| %>
<div id="poll_questions_<%= exercise_question.id%>">
<div id="show_poll_questions_<%= exercise_question.id %>" class="<%= (list_index + 1) == mcq_question_list.count ? '' : 'border_b' %>">
<div>
<div class="exercise_title">
<div>
<span class="fl lh27">第<%= exercise_question.question_number%>题.&nbsp;&nbsp;<%= exercise_question.question_score %>分&nbsp;&nbsp;
标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %></span>
<div class="fr" id="menu_div_<%= exercise_question.id %>">
<% answer = get_user_answer(exercise_question, user)%>
<% standard_answer = get_user_standard_answer(exercise_question, user)%>
<% is_correct = !standard_answer.empty? && get_mulscore(exercise_question, user).to_i == standard_answer.first.exercise_choice_id %>
<div class="fr">
得分:<div class="c_red fr mr10 ml10"><%= is_correct ? exercise_question.question_score : 0 %></div>
</div>
<span class="fr mt-4 f16 mr20"><i class="<%= is_correct ? 'icon-ok c_green' : 'icon-remove c_red' %>"></i></span>
</div>
<div class="cl"></div>
</div>
<p class="formatContainer break_word"><%= exercise_question.question_title %></p>
<% if @is_teacher || @exercise.answer_open %>
<div class="pl15 pr15 pt10 pb10 bor-top-greyE">
标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %>
</div>
<div class="cl"></div>
<div class="exercise_inputs">
<table class="" style="width:100%;">
<tbody>
<% exercise_question.exercise_choices.reorder("choice_position").each_with_index do |exercise_choice,index| %>
<tr>
<td>
<label>
<input class="ur_radio" type="checkbox" <%= answer_be_selected?(exercise_choice,user) ? "checked":"" %> <%= @can_edit_excercise?"":"disabled=disabled" %> >
<%= convert_to_char((index+1).to_s)%>&nbsp;&nbsp;<%= exercise_choice.choice_text%>
</label>
</td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div><!--多选题显示 end-->
<% end %>
<% when 2 %>
<div class="pl15 pr15 mb15">
<% exercise_choices = @exercise.choice_random == 1 ? exercise_question.exercise_choices.shuffle : exercise_question.exercise_choices.reorder("choice_position") %>
<% exercise_choices.each_with_index do |exercise_choice,index| %>
<li class="clearfix">
<input name="exercise_choice_<%= exercise_question.id %>" class="magic-checkbox fl mt5 magic-checkbox_show" id="exercise_<%= exercise_choice.id %>_exercise_choice_id" type="checkbox" disabled <%= answer_be_selected?(exercise_choice,user) ? "checked" : "" %>>
<label class="fl color-grey3" for="exercise_<%= exercise_choice.id %>_exercise_choice_id"><%= convert_to_char((index+1).to_s)%>&nbsp;&nbsp;<%= exercise_choice.choice_text%></label>
</li>
<% end %>
</div>
</div>
<% end %>
</div>
<div class="testStatus" id="single_question_list" style="display: <%=single_question_list.count > 0 ? "" : "none" %>">
<h3 class="fontGrey3">填空题</h3>
<% single_question_list.each_with_index do |exercise_question,list_index| %>
<div id="poll_questions_<%= exercise_question.id%>">
<div id="show_poll_questions_<%= exercise_question.id %>" class="<%= (list_index + 1) == single_question_list.count ? '' : 'border_b' %>">
<div>
<div class="exercise_title">
<div>
<span class="fl lh27">第<%= exercise_question.question_number%>题.&nbsp;&nbsp;<%= exercise_question.question_score %>分</span>
<div class="fr" id="menu_div_<%= exercise_question.id %>">
<% answer = get_user_answer(exercise_question, user)%>
<% standard_answer = get_user_standard_answer(exercise_question, user)%>
<% is_correct = !answer.empty? && !standard_answer.empty? && standard_answer.include?(answer.first.answer_text) %>
<div class="fr">
得分:<div class="c_red fr mr10 ml10"><%= is_correct ? exercise_question.question_score : 0 %></div>
</div>
<span class="fr mt-4 f16 mr20"><i class="<%= is_correct ? 'icon-ok c_green' : 'icon-remove c_red' %>"></i></span>
</div>
<div class="cl"></div>
</div>
<p class="formatContainer break_word"><%= exercise_question.question_title %></p>
<% if @is_teacher || @exercise.answer_open %>
<div class=" pl15 pr15 pt10 pb10 bor-top-greyE">
标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %>
</div>
<div class="cl"></div>
<div class="mb10">
<% end %>
<% when 3 %>
<% unless get_anwser_vote_text(exercise_question.id,user.id) == "" %>
<pre class="exercise_que_title pl15 write_answer"><%= get_anwser_vote_text(exercise_question.id,user.id).html_safe %></pre>
<% end %>
<% if @is_teacher || @exercise.answer_open %>
<div class=" pl15 pr15 pt10 pb10 bor-top-greyE">
<% exercise_question.exercise_standard_answers.reorder("created_at").each_with_index do |exercise_choice,index| %>
参考答案<%= convert_to_chi_num(index+1) %><%= exercise_choice.answer_text%><br />
<p>候选答案<%= convert_to_chi_num(index+1) %><%= exercise_choice.answer_text%></p>
<% end %>
</div>
<div>
<input class="fillInput" placeholder="在此填入答案" type="text" value="<%= get_anwser_vote_text(exercise_question.id,user.id).html_safe %>" <%= @can_edit_excercise?"":"disabled=disabled" %>>
<% end %>
<% when 4 %>
<% unless get_anwser_vote_text(exercise_question.id,user.id) == "" %>
<pre class="exercise_que_title pl15 write_answer"><%= get_anwser_vote_text(exercise_question.id,user.id).html_safe %></pre>
<% end %>
<% if exercise_question.exercise_standard_answers.count > 0 && (@is_teacher || @exercise.answer_open) %>
<div class="clearfix bor-top-greyE">
<a href="javascript:void(0)" class="fr color-orange05 mb5 mr15 hide_answer">隐藏参考答案</a>
</div>
</div>
</div>
</div>
<% end %>
</div>
<div class="testStatus" id="multi_question_list" style="display: <%=multi_question_list.count > 0 ? "" : "none" %>">
<h3 class="fontGrey3">问答题</h3>
<% multi_question_list.each_with_index do |exercise_question, list_index| %>
<div id="poll_questions_<%= exercise_question.id%>">
<div id="show_poll_questions_<%= exercise_question.id %>" class="<%= (list_index + 1) == multi_question_list.count ? '' : 'border_b' %>">
<div>
<div class="exercise_title">
<div>
<span class="fl lh27">第<%= exercise_question.question_number%>题.&nbsp;&nbsp;<%= exercise_question.question_score %>分</span>
<div class="fr" id="menu_div_<%= exercise_question.id %>">
<% answer = get_user_answer(exercise_question, user)%>
<div class="fr">
<% if User.current.admin? || User.current.allowed_to?(:as_teacher,exercise.course) %>
得分:
<% if answer.empty? %>
<div id="exercise_question_score_<%= exercise_question.id %>" title="未答题系统自动打0分" class="c_red fr mr10 ml10">
0
</div>
<% else %>
<div id="exercise_question_score_<%= exercise_question.id %>" title="双击批阅" ondblclick="edit_question_score('<%= exercise_question.id %>', <%= exercise_question.question_score %>, <%= exercise_user.user_id %>)" class="c_red fr mr10 ml10">
<%= answer.first.score == -1 ? "双击批阅" : answer.first.score %>
</div>
<% end %>
<% else %>
得分:<div class="c_red fr mr10 ml10"><%= answer.empty? ? 0 : (answer.first.score == -1 ? "未批" : answer.first.score) %></div>
<% end %>
</div>
</div>
<div class="cl"></div>
<div class="clearfix bor-top-greyE padding15 answer_con">
<p>参考答案</p>
<pre class="exercise_que_title"><%= exercise_question.exercise_standard_answers.first.answer_text%></pre>
</div>
<% end %>
<% if !answer.empty? && @is_teacher %>
<div class="clearfix padding15 bor-top-greyE">
<div class="with85 fl">
<label class="fl color-grey mt5"> 评分&nbsp;&nbsp;</label>
<input type="number" class="fl task-form-10 task-height-40 panel-box-sizing" name="score" id="multi_score_<%= exercise_question.id %>" value="<%= answer.first.score %>" min="-1" max="<%= exercise_question.question_score %>" size="4" data-units="dollars" />
<span class="ml5 fl mt5">分</span>
<span id="score_notice_span_<%= exercise_question.id %>" class="ml5 fl mt5 color-red" style="display: none;">未评分</span>
</div>
<div class="with15 fr mt10">
<a href="javascript:void(0);" class="task-btn task-btn-orange fr" onclick="save_multi_score(<%= exercise_question.id %>, <%= exercise_question.question_score %>, <%= @exercise_user.user_id %>)">保存</a>
</div>
<p class="formatContainer break_word"><%= exercise_question.question_title %></p>
</div>
<div class="cl"></div>
<% if exercise_question.exercise_standard_answers.count > 0 %>
<div class="mb10">
参考答案:<pre class="fontGrey2 font_cus" style="white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:pre-wrap;white-space:-o-pre-wrap;word-break:normal;word-wrap: break-word;"><%= exercise_question.exercise_standard_answers.first.answer_text%></pre>
</div>
<% end %>
<div>
<textarea style="width: 693px; height: 90px; line-height: 30px; border: 1px solid #CBCBCB; color: #888888;" name="exercise_choice" placeholder="在此填入答案" <%= @can_edit_excercise?"":"disabled=disabled" %>><%= get_anwser_vote_text(exercise_question.id,exercise_user.user_id).html_safe %></textarea>
</div>
</div>
</div>
</div>
<% end %>
</div>
<div class="cl"></div>
<!--contentbox end-->
</div>
<!--RSide end-->
<% end %>
<% end %>
</div>
<% end %>
</div>
</div>
<script>
// 在线测验的主观题打分
function edit_question_score(id, score, user_id){
$("#exercise_question_score_"+id).html("<input type='text' id='edit_score_input' onblur='edit_question_score_submit(this, "+ id +", "+ score +", "+ user_id +")' class='score_input' placeholder='0-"+ score +"'></input>");
}
function edit_question_score_submit(obj, id, score, user_id){
$.ajax({
type: "post",
url: "<%= edit_question_score_exercise_path(exercise) %>",
data: {
exercise_question_id: id,
user_id: user_id,
score: $(obj).val().trim()
},
success: function (data) {
var dataObj = eval(data);
if(dataObj.status == 2){
$("#ajax_notice_p").html("请输入0-"+score);
$("#ajax-notice").css('top', $(window).scrollTop()+200);
$("#ajax-notice").show();
} else if(dataObj.status == 1){
$("#exercise_question_score_"+id).html(dataObj.score);
$("#exercise_user_score").html(dataObj.total_score);
$("#ajax_notice_p").html("分数已保存");
$("#ajax-notice").css('top', $(window).scrollTop()+200);
$("#ajax-notice").show();
}
setTimeout(function(){
$("#ajax-notice").hide();
},2000);
},
error: function () {
long_notice_box("网路异常,请重新批阅。");
}
$(function(){
$(".hide_answer").live("click",function(){
$(this).parent().siblings(".answer_con").slideToggle(500);
});
$('input[name="score"]').peSlider({range: 'min'});
});
// 在线测验的主观题打分
function save_multi_score(id, score, user_id){
if($("#multi_score_"+id).val().trim() == "" || $("#multi_score_"+id).val().trim() == "-1"){
$("#score_notice_span_"+id).html("请输入0-"+score+"之间的数值");
} else{
$.ajax({
type: "post",
url: "<%= edit_question_score_exercise_path(@exercise) %>",
data: {
exercise_question_id: id,
user_id: user_id,
score: $("#multi_score_"+id).val().trim()
},
success: function (data) {
var dataObj = eval(data);
if(dataObj.status == 2){
$("#score_notice_span_"+id).html("请输入0-"+score+"之间的数值");
} else if(dataObj.status == 1){
var spn_class = dataObj.score == 0 ? 'color-red' : 'color-light-green'
$("#multi_q_score_"+id).html("<span class='" + spn_class + " mr3'>"+dataObj.score+ "</span>分");
$("#exercise_user_score").html(dataObj.total_score);
$("#ajax_notice_p").html("分数已保存");
$("#ajax-notice").css('top', $(window).scrollTop()+400);
$("#ajax-notice").show();
}
setTimeout(function(){
$("#ajax-notice").hide();
},2000);
},
error: function () {
long_notice_box("网路异常,请重新批阅。");
}
});
}
}
</script>

View File

@ -1,28 +1,66 @@
<div class="polls_head" style="width:980px;">
<h2>所有试卷
<span><%= @obj_count%></span>
</h2>
<% if @is_teacher%>
<%= link_to "新建试卷 ", new_exercise_path(:course_id => @course.id), :class => "newbtn" %>
<%= link_to "导入试卷", other_exercise_exercise_index_path(:course_id => @course.id), :remote=>true,:class => "newbtn"%>
<% end%>
</div>
<div class="cl"></div>
<div id="polls_list" class="polls_list">
<% if @exercises.count != 0 %>
<% @exercises.each_with_index do |exercise,index|%>
<ul id="exercises_<%= exercise.id %>" class="exercise_list_div" onmouseover="$('#exercise_opr_<%=exercise.id %>').show();" onmouseout="$('#exercise_opr_<%=exercise.id %>').hide();">
<%= render :partial => 'exercise', :locals => {:exercise => exercise,:index => index} %>
</ul>
<div class="cl"></div>
<% end%>
<% if @exercises.count != 0 %>
<div class="mh550">
<% @exercises.each do |exercise| %>
<div class="clearfix edu-class-con-list pr">
<div class="fl ml15 task-form-90 ">
<span class="fl mr10 mt3 color-grey3"># <%= get_ex_index(exercise, @course, @is_teacher) + 1 %></span>
<%= link_to exercise.exercise_name, student_exercise_list_exercise_path(exercise), :class => "edu-class-inner-list fl color-grey3" %>
<% unless exercise.is_public %>
<i id="exercise_public_icon_<%= exercise.id %>" class="fa fa-lock color-grey fl mt8 ml15 font-18"></i>
<% end %>
<% ex_curr_status = exercise_curr_time exercise %>
<% if ex_curr_status[:status] != "" %>
<span class="edu-filter-btn <%= homework_status_color ex_curr_status[:status] %> ml10 fl mt3"><%= ex_curr_status[:status] %></span>
<% end %>
<div class="cl"></div>
<p class="color-grey font-12 mt20">
<span>创建于<%=time_from_now exercise.created_at %></span>
<span class="ml25">更新于<%=time_from_now exercise.updated_at %></span>
<span class="ml50"><a href="javascript:void(0)" class="color-orange05 mr3"><%= exercise.exercise_users.where("commit_status = 1").count %></a>已答</span>
<span class="ml50"><a href="javascript:void(0)" class="color-orange05 mr3"><%= exercise.course.student.count - exercise.exercise_users.where("commit_status = 1").count %></a>未答</span>
<%# count = exercise.exercise_users.where("commit_status = 1 and subjective_score = -1").count %>
<span class="ml50"><a href="javascript:void(0)" class="color-orange05 mr3"><%= un_commit_num exercise %></a>未评</span>
<span class="ml50 <%= exercise.try(:exercise_status) == 3 ? 'color-grey' : 'color-orange' %>"><%= ex_curr_status[:time] %></span>
<% if exercise.try(:exercise_status) == 0 && exercise.publish_time %>
<span class="ml50 color-grey">将于&nbsp;<span class="color-orange"><%= format_time(exercise.publish_time).to_s %></span>&nbsp;发布</span>
<% end %>
</p>
</div>
<div class="fr edu-position edu-position-hidebox mr20 mt5">
<a href="javascript:void(0);"><i class="fa fa-bars font-16"></i></a>
<ul class="edu-position-hide undis">
<% if @is_teacher %>
<% if exercise.exercise_status == 1 %>
<li><%= link_to "编辑", edit_exercise_path(exercise) %></li>
<% end %>
<!--<li><%#= link_to "预览", exercise_path(exercise) %></li>-->
<li><%= link_to "设置", setting_exercise_path(exercise) %></li>
<li><%= link_to "导出成绩", student_exercise_list_exercise_path(exercise.id,:course_id => @course.id, :format => 'xls') %></li>
<% unless exercise.is_public %>
<li id="set_exercise_public_<%= exercise.id %>">
<a href="javascript:void(0);" onclick="delete_confirm_box('<%= set_public_exercise_path(exercise) %>', '您确定要公开吗?<br/>公开后不能重设为私有')">设为公开</a>
</li>
<% end %>
<!--<li><a href="javascript:void(0)">加入题库</a></li>-->
<li><a href="javascript:void(0)" onclick="delete_confirm_box_3('<%= exercise_path(exercise) %>', '确定要删除该试卷吗?')">删除</a></li>
<% else %>
<ul class="wlist">
<%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true%>
</ul>
<div class="cl"></div>
<% else %>
<%= render :partial => "welcome/no_data" %>
<% end %>
</div><!--列表end-->
<% end %>
</ul>
</div>
</div>
<% end %>
</div>
<div style="text-align:center;">
<div class="pages_user_show" style="width:auto; display:inline-block;margin: 18px 0;">
<ul id="homework_pository_ref_pages">
<%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => true, :flag => true, :is_new => true %>
</ul>
<div class="cl"></div>
</div>
</div>
<% else %>
<div style="background-color: #fff;padding-bottom: 10px;">
<%= render :partial => "welcome/no_data" %>
</div>
<% end %>

View File

@ -1,70 +1,68 @@
<%= form_for(ExerciseQuestion.new,
:html => { :multipart => true },
:url=>create_exercise_question_exercise_path(exercise.id),
:remote=>true ) do |f| %>
<div class="questionContainer">
<div class="mb10 ur_item">
<% score = exercise.exercise_questions.where("question_type=1").last.nil? ? "": exercise.exercise_questions.where("question_type=1").last.question_score %>
<label>分值<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>
<input id="question_score" value="<%=score %>" type="text" name="question_score" style="width:60px; text-align:center; padding-left:0px;">分
<span class="fr c_red" style="width: 60px;" id="question_standard_answer_1">请点击选项</span>
<span class="fr">标准答案:</span>
<div class="cl"></div>
</div>
<div class="ur_editor_title">
<label class="questionLabel mt8">问题:&nbsp;&nbsp;</label>
<input name="question_type" value="1" type="hidden">
<textarea name="question_title" id="poll_questions_title" class="questionTitle" placeholder="请输入单选题的题干" type="text" oninput="autoHeight('#poll_questions_title',30)"></textarea>
</div>
<div class="ur_editor_content">
<ul>
<div>
<input style="display: none;" name="exercise_choice" id="exercise_choice_1"/>
<li class="ur_item new_answer">
<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 1, 1);">A</a>
<input maxlength="200" class="w600" type='text' name='question_answer[0]' placeholder='输入选项内容'>
<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>
</li>
<div class="cl"></div>
<li class="ur_item new_answer">
<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 1, 1);">B</a>
<input maxlength="200" class="w600" type='text' name='question_answer[1]' placeholder='输入选项内容'>
<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>
</li>
<div class="cl"></div>
<li class="ur_item new_answer">
<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 1, 1);">C</a>
<input maxlength="200" class="w600" type='text' name='question_answer[2]' placeholder='输入选项内容'/>
<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>
</li>
<div class="cl"></div>
<li class="ur_item new_answer">
<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 1, 1);">D</a>
<input maxlength="200" class="w600" type='text' name='question_answer[3]' placeholder='输入选项内容'/>
<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>
</li>
<div class='cl'></div>
<li class="ur_item">
<a class="question_choice_dash fl mr10 choice_btn">E</a>
<div class="dash-block new-question w600" onclick='add_single_answer($(this), 1);'>新建选项</div>
</li>
<div class='cl'></div>
</div>
<div class="cl"></div>
</ul>
</div>
<div class="ur_editor_footer">
<span class="fl c_red mt10">温馨提示:[单选题]属于客观题将由系统自动评分,请设置标准答案</span>
<a class="big_blue_btn borderRadius fr" data-button="ok" id="add_new_question">保存</a>
<a class="big_grey_btn borderRadius fr mr10" data-button="cancel" onclick="$(this).parent().parent().parent().remove();">取消</a>
</div>
<div class="cl"></div>
</div>
<% if exercise.id %>
<%= form_for(ExerciseQuestion.new,
:html => {:multipart => true},
:url => create_exercise_question_exercise_path(exercise.id),
:remote => true ) do |f| %>
<div class="user_bg_shadow bor-grey-e pl15 pr30 mb20 single_Temp" id="single_Temp">
<div class="clearfix">
<p class="fl mt15 font-16 mb10">单选题</p>
<input name="question_type" value="1" type="hidden">
<input name="quest_id" id="quest_id" value="0" type="hidden">
<label class="fr mt15">标准答案:<span class="color-orange current-option">请点击正确选项</span></label>
</div>
<li class="clearfix pr mb20">
<label class="panel-form-label fl"><span class="mr10">题目</span></label>
<textarea name="question_title" id="poll_questions_title" class="panel-form-width2-690 fl panel-box-sizing" placeholder="请输入单选题的题干" type="text" oninput="autoHeight('#poll_questions_title',30)"></textarea>
</li>
<input style="display: none;" name="exercise_choice" id="exercise_choice_1"/>
<li class="clearfix pr mb20">
<label class="panel-form-label fl">
<span class="option-item fr mr10 color-grey select-choice" onclick="selectchoice(this)" name="option_span" data-tip-down="点击设置答案">A</span>
</label>
<textarea maxlength="200" name='question_answer[0]' class="panel-form-width2-690 fl panel-box-sizing" placeholder="请输入选项内容"></textarea>
<a title="移除" href="javascript:void(0)" class="position-delete option_icon_remove" onclick="removeSingle(this)"><i class="fa fa-times-circle color-orange font-16 fl"></i></a>
</li>
<li class="clearfix pr mb20">
<label class="panel-form-label fl">
<span class="option-item fr mr10 color-grey select-choice " onclick="selectchoice(this)" name="option_span" data-tip-down="点击设置答案">B</span>
</label>
<textarea maxlength="200" name='question_answer[1]' class="panel-form-width2-690 fl panel-box-sizing" placeholder="请输入选项内容"></textarea>
<a title="移除" href="javascript:void(0)" class="position-delete option_icon_remove" onclick="removeSingle(this)"><i class="fa fa-times-circle color-orange font-16 fl"></i></a>
</li>
<li class="clearfix pr mb20">
<label class="panel-form-label fl">
<span class="option-item fr mr10 color-grey select-choice" onclick="selectchoice(this)" name="option_span" data-tip-down="点击设置答案">C</span>
</label>
<textarea maxlength="200" name='question_answer[2]' class="panel-form-width2-690 fl panel-box-sizing" placeholder="请输入选项内容"></textarea>
<a title="移除" href="javascript:void(0)" class="position-delete option_icon_remove" onclick="removeSingle(this)"><i class="fa fa-times-circle color-orange font-16 fl"></i></a>
</li>
<li class="clearfix mb20">
<label class="panel-form-label fl">
<span class="add-option-item fr mr10 color-grey border-dash-orange" name="option_span">D</span>
</label>
<div class="fl panel-box-sizing add-option-input border-dash-orange">
<a title="新增" href="javascript:void(0)" class="option_icon_add" onclick="addSingle(this)">新增选项</a>
</div>
</li>
<li class="clearfix mb20">
<% score = exercise.exercise_questions.where("question_type=1").last.nil? ? "": exercise.exercise_questions.where("question_type=1").last.question_score %>
<label class="panel-form-label fl"><span class="mr10">分值</span></label>
<input id="question_score" value="<%=score %>" type="text" class="with10 mr5 pl10 fl panel-box-sizing task-height-40" name="question_score" />
<label class="fl" style="line-height: 40px;">分</label>
<p class="fr">
<span class="font-12 color-grey mb10" style="display: block;">温馨提示:[单选题]属于客观题将由系统自动评分,请设置标准答案</span>
<a href="javascript:void(0)" class="fr task-btn task-btn-blue" id="add_new_question">保存</a>
<a href="javascript:void(0)" class="fr task-btn mr10" onclick="$(this).parent().parent().parent().parent().remove();">取消</a>
</p>
</li>
<div class="cl"></div>
</div>
<% end %>
<% end %>
<script type="text/javascript">
$(function(){
$("#add_new_question").one('click', function(){
add_poll_question($(this),1);
add_ex_question($(this),1);
});
});
</script>

View File

@ -1,69 +1,65 @@
<%= form_for(ExerciseQuestion.new,
<% if exercise.id %>
<%= form_for(ExerciseQuestion.new,
:html => { :multipart => true },
:url=>create_exercise_question_exercise_path(exercise.id),
:remote=>true ) do |f| %>
<div class="questionContainer">
<div class="mb10 ur_item">
<% score = exercise.exercise_questions.where("question_type=2").last.nil? ? "": exercise.exercise_questions.where("question_type=2").last.question_score %>
<label>分值<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>
<input id="question_score" value="<%=score %>" type="text" name="question_score" style="width:60px; text-align:center; padding-left:0px;">分
<span class="fr c_red" style="width: 60px;" id="question_standard_answer_2">请点击选项</span>
<span class="fr">标准答案:</span>
<div class="cl"></div>
</div>
<div class="ur_editor_title">
<label class="questionLabel mt8">问题:&nbsp;&nbsp;</label>
<input name="question_type" value="2" type="hidden">
<textarea name="question_title" id="poll_questions_title" class="questionTitle" placeholder="请输入多选题的题干" type="text" oninput="autoHeight('#poll_questions_title',30)"></textarea>
</div>
<div class="ur_editor_content">
<ul>
<div>
<input style="display: none;" name="exercise_choice" id="exercise_choice_2"/>
<li class="ur_item new_answer">
<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 2, 2);">A</a>
<input maxlength="200" class="w600" type='text' name='question_answer[0]' placeholder='输入选项内容'>
<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>
<div class="user_bg_shadow bor-grey-e pl15 pr30 mb20 multiple_Temp" id="multiple_Temp">
<div class="clearfix">
<p class="fl mt15 font-16 mb10">多选题</p>
<input name="question_type" value="2" type="hidden">
<input name="quest_id" id="quest_id" value="0" type="hidden">
<label class="fr mt15">标准答案:<span class="color-orange current-option">请点击正确选项</span></label>
<input style="display: none;" name="exercise_choice" id="exercise_choice_2"/>
</div>
<li class="clearfix pr mb20">
<label class="panel-form-label fl"><span class="mr10">题目</span></label>
<textarea name="question_title" id="poll_questions_title" class="panel-form-width2-690 fl panel-box-sizing" placeholder="请输入多选题的题干" type="text" oninput="autoHeight('#poll_questions_title',30)"></textarea>
</li>
<div class="cl"></div>
<li class="ur_item new_answer">
<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 2, 2);">B</a>
<input maxlength="200" class="w600" type='text' name='question_answer[1]' placeholder='输入选项内容'>
<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>
<li class="clearfix pr mb20">
<label class="panel-form-label fl">
<span class="option-item fr mr10 color-grey select-choice " onclick="selectMul(this)" name="option_spans" data-tip-down="点击设置答案">A</span>
</label>
<textarea class="panel-form-width2-690 fl panel-box-sizing" name="question_answer[0]" placeholder="请输入选项内容"></textarea>
<a title="移除" href="javascript:void(0)" class="position-delete option_icon_remove" onclick="removeMuli(this)"><i class="fa fa-times-circle color-orange font-16 fl"></i></a>
</li>
<div class="cl"></div>
<li class="ur_item new_answer">
<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 2, 2);">C</a>
<input maxlength="200" class="w600" type='text' name='question_answer[2]' placeholder='输入选项内容'>
<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>
<li class="clearfix pr mb20">
<label class="panel-form-label fl">
<span class="option-item fr mr10 color-grey select-choice " onclick="selectMul(this)" name="option_spans" data-tip-down="点击设置答案">B</span>
</label>
<textarea class="panel-form-width2-690 fl panel-box-sizing" name="question_answer[1]" placeholder="请输入选项内容"></textarea>
<a title="移除" href="javascript:void(0)" class="position-delete option_icon_remove" onclick="removeMuli(this)"><i class="fa fa-times-circle color-orange font-16 fl"></i></a>
</li>
<div class="cl"></div>
<li class="ur_item new_answer">
<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 2, 2);">D</a>
<input maxlength="200" class="w600" type='text' name='question_answer[3]' placeholder='输入选项内容'>
<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>
<li class="clearfix pr mb20">
<label class="panel-form-label fl">
<span class="option-item fr mr10 color-grey select-choice " onclick="selectMul(this)" name="option_spans" data-tip-down="点击设置答案">C</span>
</label>
<textarea class="panel-form-width2-690 fl panel-box-sizing" name="question_answer[2]" placeholder="请输入选项内容"></textarea>
<a title="移除" href="javascript:void(0)" class="position-delete option_icon_remove" onclick="removeMuli(this)"><i class="fa fa-times-circle color-orange font-16 fl"></i></a>
</li>
<div class="cl"></div>
<li class="ur_item">
<a class="question_choice_dash fl mr10 choice_btn">E</a>
<div class="dash-block new-question w600" onclick='add_single_answer($(this), 2);'>新建选项</div>
<li class="clearfix mb20">
<label class="panel-form-label fl">
<span class="add-option-item fr mr10 color-grey border-dash-orange" name="option_spans">D</span>
</label>
<div class="fl panel-box-sizing add-option-input border-dash-orange"><a title="新增" href="javascript:void(0)" onclick="addMuli(this)" class="option_icon_add">新增选项</a></div>
</li>
<div class='cl'></div>
</div>
</ul>
</div>
<div class="ur_editor_footer">
<span class="fl c_red mt10">温馨提示:[多选题]属于客观题将由系统自动评分,请设置标准答案</span>
<a class="big_blue_btn borderRadius fr" data-button="ok" id="add_new_question">保存</a>
<a class="big_grey_btn borderRadius fr mr10" data-button="cancel" onclick="$(this).parent().parent().parent().remove();">取消</a>
</div>
<div class="cl"></div>
</div>
<li class="clearfix mb20">
<% score = exercise.exercise_questions.where("question_type=2").last.nil? ? "": exercise.exercise_questions.where("question_type=2").last.question_score %>
<label class="panel-form-label fl"><span class="mr10">分值</span></label>
<input id="question_score" value="<%=score %>" type="text" name="question_score" class="with10 mr5 fl pl10 panel-box-sizing task-height-40" />
<label class="fl" style="line-height: 40px;">分</label>
<p class="fr">
<span class="font-12 color-grey mb10" style="display: block;">温馨提示:[多选题]属于客观题将由系统自动评分,请设置标准答案</span>
<a href="javascript:void(0)" class="fr task-btn task-btn-blue" id="add_new_question">保存</a>
<a href="javascript:void(0)" class="fr task-btn mr10" onclick="$(this).parent().parent().parent().parent().remove();">取消</a>
</p>
</li>
</div>
<% end %>
<% end %>
<script type="text/javascript">
$(function(){
$("#add_new_question").one('click', function(){
add_poll_question($(this),2);
add_ex_question($(this),2);
});
});
</script>

View File

@ -0,0 +1,17 @@
<%= form_for(@exercise,
:html => {:multipart => true, :id => "exercise_head_form"},
:url => {:controller => 'exercise',
:action => 'create',
:course_id => @course.id
},
:method => :post, :remote => true) do |f| %>
<div class="ml15 mr15 mb15">
<input class="panel-box-sizing panel-form-width-100" name="exercise[exercise_name]" maxlength="100" id="exercise_name" value="<%= @exercise.try(:exercise_name) %>" placeholder="试卷标题" style="text-align: center;"/>
</div>
<div class="ml15 mr15">
<textarea id="mustBe" name="exercise[exercise_description]" class="panel-box-sizing panel-form-width-100" placeholder="试卷须知共有选择、填空、简答3种题型其中选择题包括单选题和多选题;您可以在此处填写本次试卷答题的相关说明"><%= @exercise.try(:exercise_description) %></textarea>
</div>
<p class="fr">
<a href="javascript:void(0)" onclick="ex_head_submit($(this));" class="fr task-btn mr15 task-btn-blue">保存</a>
</p>
<% end %>

View File

@ -1,38 +1,39 @@
<%= form_for(ExerciseQuestion.new,
<% if exercise.id %>
<%= form_for(ExerciseQuestion.new,
:html => { :multipart => true },
:url=>create_exercise_question_exercise_path(exercise.id),
:remote=>true ) do |f| %>
<div class="questionContainer">
<div class="mb10 ur_item">
<% score = exercise.exercise_questions.where("question_type=4").last.nil? ? "": exercise.exercise_questions.where("question_type=4").last.question_score %>
<label class="ml25">分值<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>
<input id="question_score" value="<%=score %>" type="text" name="question_score" style="width:60px; text-align:center; padding-left:0px;">分
<div class="cl"></div>
</div>
<div class="ur_editor_title">
<label class="questionLabel mt8 ml25">问题:&nbsp;&nbsp;</label>
<input name="question_type" value="4" type="hidden">
<textarea maxlength="250" style="width: 619px;" class="questionTitle" name="question_title" id="poll_questions_title" placeholder="请输入问答题的题干" type="text" oninput="autoHeight('#poll_questions_title',30)"></textarea>
</div>
<div class="ur_editor_content" id="new_multi">
<div class="multi_input">
<label name='candiate_items'>参考答案<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>
<textarea class="candiate_answer" style="width: 620px; height: 90px;" name="exercise_choice" placeholder="如有参考答案,请输入参考答案" type="text"></textarea>
</div>
<div class="cl"></div>
</div>
<div class="ur_editor_footer">
<p class="fl c_red">温馨提示:[问答题]属于主观题需要人工评分,未作答的情况下系统将自动评零分<br><span class="ml60">参考答案作为人工评分时的参考</span></p>
<a class="big_blue_btn borderRadius fr" data-button="ok" id="add_new_question">保存</a>
<a class="big_grey_btn borderRadius fr mr10" data-button="cancel" onclick="$(this).parent().parent().parent().remove();">取消</a>
</div>
<div class="cl"></div>
</div>
<div class="user_bg_shadow bor-grey-e pl15 pr30 mb20 answer_Temp" id="answer_Temp">
<p class="fl mt15 font-16 mb10">简答题</p>
<input name="question_type" value="4" type="hidden">
<input name="quest_id" id="quest_id" value="0" type="hidden">
<li class="clearfix pr mb20">
<label class="panel-form-label fl"><span class="mr10">题目</span></label>
<textarea maxlength="250" class="panel-form-width2-690 fl panel-box-sizing" name="question_title" id="poll_questions_title" placeholder="请输入简答题的题干" type="text" oninput="autoHeight('#poll_questions_title',30)"></textarea>
</li>
<li class="clearfix pr mb20">
<label class="panel-form-label fl"><span class="fr mr10 color-grey" name="option_spans">参考答案</span></label>
<textarea class="fl panel-box-sizing with90 task-height-150 pl5 pt5" name="exercise_choice" placeholder="如有参考答案,请输入参考答案"></textarea>
</li>
<li class="clearfix mb20">
<% score = exercise.exercise_questions.where("question_type=4").last.nil? ? "": exercise.exercise_questions.where("question_type=4").last.question_score %>
<label class="panel-form-label fl"><span class="mr10">分值</span></label>
<input id="question_score" value="<%=score %>" type="text" name="question_score" class="with10 mr5 pl10 fl panel-box-sizing task-height-40" />
<label class="fl" style="line-height: 40px;">分</label>
<p class="fr">
<span class="font-12 color-grey" style="display: block;">温馨提示:[简答题]属于主观题需要人工评分,未作答的情况下系统将自动评分</span>
<span class="font-12 color-grey mb10 ml50" style="display: block;">&nbsp;&nbsp;参考答案仅作为人工评分的参考</span>
<a href="javascript:void(0)" class="fr task-btn task-btn-blue" id="add_new_question">保存</a>
<a href="javascript:void(0)" class="fr task-btn mr10" onclick="$(this).parent().parent().parent().parent().remove();">取消</a>
</p>
</li>
</div>
<% end %>
<% end %>
<script type="text/javascript">
$(function(){
$("#add_new_question").one('click', function(){
add_poll_question($(this),4);
add_ex_question($(this),4);
});
});
</script>

View File

@ -1,57 +1,56 @@
<ul class="tabs_list">
<li class="tab_item02 mr27"> <a title="单选题" class="tab_icon icon_radio" onclick="add_MC();"> 新建单选题 </a> </li>
<li class="tab_item02 mr27"> <a title="多选题" class=" tab_icon icon_checkbox" onclick="add_MCQ();"> 新建多选题 </a> </li>
<li class="tab_item02 mr27"> <a title="单行主观" class="tab_icon icon_text" onclick="add_single();"> 新建填空题 </a> </li>
<li class="tab_item02 "> <a title="问答题" class="tab_icon icon_text" onclick="add_multi();"> 新建问答题 </a> </li>
</ul>
<div class="cl"></div>
<a href="javascript:void(0);" class="fl mr20 add_item_part" onclick="add_MC();"><i class="fa fa-plus-circle color-light-green mr5"></i>单选题</a>
<a href="javascript:void(0);" class="fl mr20 add_item_part" onclick="add_MCQ();"><i class="fa fa-plus-circle color-light-green mr5"></i>多选题</a>
<a href="javascript:void(0);" class="fl mr20 add_item_part" onclick="add_single();"><i class="fa fa-plus-circle color-light-green mr5"></i>填空题</a>
<a href="javascript:void(0);" class="fl add_item_part" onclick="add_multi();"><i class="fa fa-plus-circle color-light-green mr5"></i>简答题</a>
<script type="text/javascript">
function add_MC(){
var forms = $("form.new_exercise_question");
if($("#polls_head_edit").is(":visible")){
notice_box("请先保存测验标题及测验基本信息。");
if($("#exercise_head_edit").is(":visible")){
notice_box("请先保存试卷标题等信息。");
}else if(forms.length > 0){
notice_box("请先保存正在编辑的题目再新建。");
} else{
$("#new_poll_question").html("<%= escape_javascript(render :partial => 'new_MC', :locals => {:exercise=>exercise}) %>");
$("#question_score").focus();
//$.get("<%#= new_exercise_question_path(:exercise => @exercise, :type => "MC") %>");
$("#new_poll_question").html("<%= escape_javascript(render :partial => 'new_MC', :locals => {:exercise=>@exercise}) %>");
$("#poll_questions_title").focus();
//sd_create_editor_from_data(<%#= @exercise.id %>, null, "100%", "<%#= @exercise.class.to_s %>");
}
}
function add_MCQ(){
var forms = $("form.new_exercise_question");
if($("#polls_head_edit").is(":visible")){
notice_box("请先保存测验标题及测验基本信息。");
if($("#exercise_head_edit").is(":visible")){
notice_box("请先保存试卷标题等信息。");
}else if(forms.length > 0){
notice_box("请先保存正在编辑的题目再新建。");
} else{
$("#new_poll_question").html("<%= escape_javascript(render :partial => 'new_MCQ', :locals => {:exercise=>exercise}) %>");
$("#question_score").focus();
$("#new_poll_question").html("<%= escape_javascript(render :partial => 'new_MCQ', :locals => {:exercise=>@exercise}) %>");
$("#poll_questions_title").focus();
}
}
function add_single(){
var forms = $("form.new_exercise_question");
if($("#polls_head_edit").is(":visible")){
notice_box("请先保存测验标题及测验基本信息。");
if($("#exercise_head_edit").is(":visible")){
notice_box("请先保存试卷标题等信息。");
}else if(forms.length > 0){
notice_box("请先保存正在编辑的题目再新建。");
} else{
$("#new_poll_question").html("<%= escape_javascript(render :partial => 'new_single', :locals => {:exercise=>exercise}) %>");
$("#question_score").focus();
$("#new_poll_question").html("<%= escape_javascript(render :partial => 'new_single', :locals => {:exercise=>@exercise}) %>");
$("#poll_questions_title").focus();
}
}
function add_multi(){
var forms = $("form.new_exercise_question");
if($("#polls_head_edit").is(":visible")){
notice_box("请先保存测验标题及测验基本信息。");
if($("#exercise_head_edit").is(":visible")){
notice_box("请先保存试卷标题等信息。");
}else if(forms.length > 0){
notice_box("请先保存正在编辑的题目再新建。");
} else{
$("#new_poll_question").html("<%= escape_javascript(render :partial => 'new_multi', :locals => {:exercise=>exercise}) %>");
$("#question_score").focus();
$("#new_poll_question").html("<%= escape_javascript(render :partial => 'new_multi', :locals => {:exercise=>@exercise}) %>");
$("#poll_questions_title").focus();
}
}

View File

@ -1,60 +1,48 @@
<%= form_for(ExerciseQuestion.new,
:html => { :multipart => true },
:url=>create_exercise_question_exercise_path(exercise.id),
:remote=>true ) do |f| %>
<div class="questionContainer">
<div class="mb10 ur_item">
<% score = exercise.exercise_questions.where("question_type=3").last.nil? ? "": exercise.exercise_questions.where("question_type=3").last.question_score %>
<label class="ml36">分值<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>
<input id="question_score" value="<%=score %>" type="text" name="question_score" style="width:60px; text-align:center; padding-left:0px;">分
<div class="cl"></div>
</div>
<div class="ur_editor_title">
<label class="questionLabel mt8 ml36">问题:&nbsp;&nbsp;</label>
<input name="question_type" value="3" type="hidden">
<textarea maxlength="250" style="width: 608px;" class="questionTitle" name="question_title" id="poll_questions_title" placeholder="请输入填空题的题干(注意:目前仅支持一个空)" type="text" oninput="autoHeight('#poll_questions_title',30)"></textarea>
</div>
<div class="ur_editor_content" id="new_single">
<ul>
<div>
<li class="ur_item new_answer">
<label name='candiate_items'>参考答案一<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>
<input class="candiate_answer w560" name="exercise_choice[0]" placeholder="请输入参考答案" type="text">
<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>
<% if exercise.id %>
<%= form_for(ExerciseQuestion.new,
:html => { :multipart => true },
:url=>create_exercise_question_exercise_path(exercise.id),
:remote=>true ) do |f| %>
<div class="user_bg_shadow bor-grey-e pl15 pr30 mb20 fillin_Temp" id="fillin_Temp">
<p class="fl mt15 font-16 mb10">填空题</p>
<li class="clearfix pr mb20">
<input name="question_type" value="3" type="hidden">
<input name="quest_id" id="quest_id" value="0" type="hidden">
<label class="panel-form-label fl"><span class="mr10">题目</span></label>
<textarea maxlength="250" class="panel-form-width2-690 fl panel-box-sizing" name="question_title" id="poll_questions_title" placeholder="请输入填空题的题干(注意:目前仅支持一个空)" type="text" oninput="autoHeight('#poll_questions_title',30)"></textarea>
</li>
<div class="cl"></div>
<li class="ur_item new_answer">
<label name='candiate_items'>参考答案二<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>
<input class="candiate_answer w560" name="exercise_choice[1]" placeholder="请输入参考答案(选填)" type="text">
<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>
<li class="clearfix pr mb20">
<label class="panel-form-label fl"><span class="fr mr10 color-grey" name="fill_span">答案 一</span></label>
<textarea class="panel-form-width2-690 fl panel-box-sizing" name="exercise_choice[0]" placeholder="请输入参考答案"></textarea>
<!--<a title="移除" href="javascript:void(0)" class="position-delete option_icon_remove"><i class="fa fa-times-circle color-orange font-16 fl"></i></a>-->
</li>
<div class="cl"></div>
<li class="ur_item new_answer">
<label name='candiate_items'>参考答案三<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>
<input class="candiate_answer w560" name="exercise_choice[2]" placeholder="请输入参考答案(选填)" type="text">
<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>
<li class="clearfix pr mb20">
<label class="panel-form-label fl"><span class="fr mr10 color-grey" name="fill_span">答案 二</span></label>
<textarea class="panel-form-width2-690 fl panel-box-sizing" name="exercise_choice[1]" placeholder="请输入参考答案(可选)"></textarea>
<a title="移除" href="javascript:void(0)" class="position-delete option_icon_remove" onclick="removefill(this)"><i class="fa fa-times-circle color-orange font-16 fl"></i></a>
</li>
<div class="cl"></div>
<li class="ur_item">
<div class="dash-block new-question w560" style="margin-left: 82px;" onclick="add_candidate_answer($(this));">新建参考答案</div>
<li class="clearfix mb20">
<label class="panel-form-label fl"><span>&nbsp;</span></label>
<div class="fl panel-box-sizing add-option-input border-dash-orange"><a title="新增" href="javascript:void(0)" class="option_fillin_add" onclick="addfill(this)">新增参考答案</a></div>
</li>
<div class='cl'></div>
</div>
<div class="cl"></div>
</ul>
</div>
<div class="ur_editor_footer">
<span class="fl c_red mt10">温馨提示:[填空题]属于客观题将由系统自动评分,请输入参考答案</span>
<a class="big_blue_btn borderRadius fr" data-button="ok" id="add_new_question">保存</a>
<a class="big_grey_btn borderRadius fr mr10" data-button="cancel" onclick="$(this).parent().parent().parent().remove();">取消</a>
</div>
<div class="cl"></div>
</div>
<li class="clearfix mb20">
<% score = exercise.exercise_questions.where("question_type=3").last.nil? ? "": exercise.exercise_questions.where("question_type=3").last.question_score %>
<label class="panel-form-label fl"><span class="mr10">分值</span></label>
<input id="question_score" value="<%=score %>" type="text" name="question_score" class="with10 mr5 fl pl10 panel-box-sizing task-height-40"/>
<label class="fl" style="line-height: 40px;">分</label>
<p class="fr">
<span class="font-12 color-grey mb10" style="display: block;">温馨提示:[填空题]属于客观题将由系统自动评分,请设置标准答案</span>
<a href="javascript:void(0)" class="fr task-btn task-btn-blue" id="add_new_question">保存</a>
<a href="javascript:void(0)" class="fr task-btn mr10" onclick="$(this).parent().parent().parent().parent().remove();">取消</a>
</p>
</li>
</div>
<% end %>
<% end %>
<script type="text/javascript">
$(function(){
$("#add_new_question").one('click', function(){
add_poll_question($(this),3);
add_ex_question($(this),3);
});
});
</script>

View File

@ -1,137 +1,56 @@
<div onmouseover="$('#menu_div_<%= exercise_question.id %>').show();" onmouseout="$('#menu_div_<%= exercise_question.id %>').hide();">
<div class="exercise_title">
<div>
<span class="fl lh27">第<%= exercise_question.question_number%>题.&nbsp;&nbsp;<%= exercise_question.question_score %>分&nbsp;&nbsp;
标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %></span>
<div class="fr none" id="menu_div_<%= exercise_question.id %>">
<% type = exercise_question.question_type %>
<% exercise = exercise_question.exercise %>
<% count = exercise.exercise_questions.where(:question_type => type).count %>
<a class="ur_icon_edit" title="编辑" onclick="pollQuestionEdit(<%= exercise_question.id%>);"></a>
<a href="javascript:void(0)" class="ur_icon_de" title="删除" onclick="delete_confirm_box('<%= delete_exercise_question_exercise_index_path(:exercise_question => exercise_question.id, :quest_num => exercise_question.question_number) %>', '确定要删除该题目吗?')"></a>
<a class='ur_icon_add' title='向下插入' id="add_mc_<%=exercise_question.id%>" onclick="dismiss('mc',<%=exercise_question.id%>);insert_MC('mc',<%=exercise_question.question_number%>,<%=exercise_question.id%>);"></a>
<% if exercise_question.question_number < count %>
<%= link_to('', {:controller => 'exercise', :action => 'update_question_num', :id => exercise.id, :ques_id => exercise_question.id, :opr => 'down'},:remote => true, :method => 'post', :class => "poll-down up_and_down", :title => '下移') %>
<% end %>
<% unless exercise_question.question_number == 1 %>
<%= link_to('', {:controller => 'exercise', :action => 'update_question_num', :id => exercise.id, :ques_id => exercise_question.id, :opr => 'up'},:remote => true, :method => 'post', :class => "poll-up up_and_down", :title => '上移') %>
<% end %>
</div>
<div class="cl"></div>
</div>
<p class="formatContainer break_word"><%= exercise_question.question_title %></p>
</div>
<div class="exercise_inputs">
<table class="" style="width:100%;">
<tbody>
<% exercise_question.exercise_choices.reorder("choice_position").each_with_index do |exercise_choice,index| %>
<tr>
<td>
<label>
<input class="ur_radio" type="radio" name="<%= exercise_question %>" value="<%= exercise_choice.choice_text%>" >
<%= convert_to_char((index+1).to_s)%>&nbsp;&nbsp;<%= exercise_choice.choice_text%>
</label>
</td>
</tr>
<div class="question_item_con font-14 user_bg_shadow bor-grey-e mb20 pt15">
<div class="clearfix pl15 pr15">
<p class="fl font-15">第<%= exercise_question.question_number%>题:<span class="color-orange03 ml10">[单选题]</span><span class="ml10"><%= exercise_question.question_score %></span>分</p>
<p class="fr exam_operator font-18">
<% if exercise_question.question_number < @exercise.exercise_questions.count %>
<a href="<%= update_question_num_exercise_path(@exercise, :ques_id => exercise_question.id, :opr => 'down') %>" data-remote="true" class="down_question"><i data-tip-down="下移" class="fa fa-arrow-circle-down mr10 color-orange05"></i></a>
<% end %>
</tbody>
</table>
<% unless exercise_question.question_number == 1 %>
<a href="<%= update_question_num_exercise_path(@exercise, :ques_id => exercise_question.id, :opr => 'up') %>" data-remote="true" class="up_question"><i data-tip-down="上移" class="fa fa-arrow-circle-up mr10 color-orange05"></i></a>
<% end %>
<a href="javascript:void(0)" class="add_question" onclick="insert_MC(<%=exercise_question.id%>);"><i data-tip-down="向下插入单选题" class="fa fa-plus-circle mr10 color-orange05"></i></a>
<a href="javascript:void(0)" onclick="delete_confirm_box('<%= delete_exercise_question_exercise_index_path(:exercise_question => exercise_question.id, :quest_num => exercise_question.question_number) %>', '确定要删除该题目吗?')"><i data-tip-down="删除" class="fa fa-times-circle mr10 color-orange05"></i></a>
<a href="javascript:void(0)" onclick="exQuestionEdit(<%= exercise_question.id%>);"><i data-tip-down="编辑" class="fa fa-pencil color-orange05"></i></a>
</p>
</div>
</div><!--单选题显示 end-->
<pre class="exercise_que_title pl15 pr15"><%= exercise_question.question_title %></pre>
<div class="pl15 pr15 mb10">
<% exercise_question.exercise_choices.reorder("choice_position").each_with_index do |exercise_choice,index| %>
<li class="clearfix">
<input class="magic-radio fl mt5 magic-checkbox_show" id="sx_<%= exercise_choice.id %>" name="<%= exercise_question %>" value="<%= exercise_choice.choice_text%>" type="radio">
<label class="fl color-grey3" for="sx_<%= exercise_choice.id %>"><%= convert_to_char((index+1).to_s)%>&nbsp;&nbsp;<%= exercise_choice.choice_text%></label>
</li>
<% end %>
</div>
<div class=" pl15 pr15 pt10 pb10 bor-top-greyE">
标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %>
</div>
</div>
<!-- 新增问题 -->
<div id="insert_new_poll_question_mc_<%=exercise_question.id%>">
<div id="insert_new_poll_question_<%=exercise_question.id%>">
</div>
<div class="cl"></div>
<script type="text/javascript">
function insert_MC(quest_type,quest_num,quest_id){
function insert_MC(quest_id){
var forms = $("form.new_exercise_question");
if($.trim($("#insert_new_poll_question_"+quest_type+"_"+quest_id).html()) == "") {
if($.trim($("#insert_new_poll_question_"+quest_id).html()) == "") {
if(forms.length > 0){
notice_box("请先保存正在编辑的题目再新建。");
} else{
<% score =exercise_question.question_score %>
$("#insert_new_poll_question_"+quest_type+"_"+quest_id).html(
'<%= form_for(ExerciseQuestion.new,:html=>{:multipart=>true},:url=>create_exercise_question_exercise_path(exercise_question.exercise.id),:remote=>true) do |f|%>'+
' <div class="questionContainer" style="width: 680px;"> '+
'<div class="mb10 ur_item">'+
'<label>分值<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>'+
'<input id="question_score" value="<%=score %>" type="text" name="question_score" style="width:60px; text-align:center; padding-left:0px;">分'+
'<span class="fr c_red" style="width: 60px;" id="question_standard_answer_1">请点击选项</span>'+
'<span class="fr">标准答案:</span>'+
'<div class="cl"></div>'+
'</div>'+
'<div class="ur_editor_title"> '+
'<label class="questionLabel mt8">问题:&nbsp;&nbsp;</label>'+
'<input type="hidden" name="quest_id" value="'+quest_id+'"/>'+
'<input type="hidden" name="quest_num" value="'+quest_num+'"/>'+
'<input type="hidden" name="question_type" value="1"/>'+
'<textarea name="question_title" style="width: 625px;" id="poll_questions_title" class="questionTitle" placeholder="请输入单选题的题干" type="text"></textarea>'+
'</div>'+
'<div class="ur_editor_content">'+
'<ul>'+
'<div>'+
'<input style="display: none;" name="exercise_choice" id="exercise_choice_1"/>'+
'<li class="ur_item new_answer">'+
'<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 1, 1);">A</a>'+
'<input maxlength="200" class="w600" type="text" name="question_answer[0]" placeholder="输入选项内容"/>'+
'<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>'+
'</li>'+
'<div class="cl"></div>'+
'<li class="ur_item new_answer">'+
'<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 1, 1);">B</a>'+
'<input maxlength="200" class="w600" type="text" name="question_answer[1]" placeholder="输入选项内容"/>'+
'<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>'+
'</li>'+
'<div class="cl"></div>'+
'<li class="ur_item new_answer">'+
'<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 1, 1);">C</a>'+
'<input maxlength="200" class="w600" type="text" name="question_answer[2]" placeholder="输入选项内容"/>'+
'<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>'+
'</li>'+
'<div class="cl"></div>'+
'<li class="ur_item new_answer">'+
'<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 1, 1);">D</a>'+
'<input maxlength="200" class="w600" type="text" name="question_answer[3]" placeholder="输入选项内容"/>'+
'<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>'+
'</li>'+
'<div class="cl"></div>'+
'<li class="ur_item">'+
'<a class="question_choice_dash fl mr10 choice_btn">E</a>'+
'<div class="dash-block new-question w600" onclick="add_single_answer($(this), 1);">新建选项</div>'+
'</li>'+
'<div class="cl"></div>'+
'</div>'+
'<div class="cl"></div>'+
'</ul>'+
'</div>'+
'<div class="ur_editor_footer">'+
'<span class="fl c_red mt10">温馨提示:[单选题]属于客观题将由系统自动评分,请设置标准答案</span>'+
'<a class="big_blue_btn borderRadius fr" data-button="ok" id="add_new_question">'+
'保存'+
'</a>'+
'<a class="big_grey_btn borderRadius fr mr10" data-button="cancel" onclick="$(this).parent().parent().parent().remove();">'+
'<%= l(:button_cancel)%>'+
'</a>'+
'</div>'+
'<div class="cl"></div>'+
'</div>'+
'<% end%>'
);
$("#insert_new_poll_question_"+quest_id).html("<%= escape_javascript(render :partial => 'new_MC', :locals => {:exercise=>@exercise}) %>");
$("#quest_id").val(quest_id);
$("#poll_questions_title").focus();
$("#add_new_question").one('click', function(){
add_poll_question($(this),1);
});
$(".questionTitle").on("input",function(){
$(this).height(30);
var scrollVal = $(this)[0].scrollHeight;
$(this).height(scrollVal);
});
}
}
}
else {
$("#insert_new_poll_question_"+quest_type+"_"+quest_id).html("");
$("#insert_new_poll_question_"+quest_id).html("");
}
}
</script>

View File

@ -1,125 +1,46 @@
<div onmouseover="$('#menu_div_<%= exercise_question.id %>').show();" onmouseout="$('#menu_div_<%= exercise_question.id %>').hide();">
<div class="exercise_title">
<div>
<span class="fl lh27">第<%= exercise_question.question_number%>题.&nbsp;&nbsp;<%= exercise_question.question_score %>分&nbsp;&nbsp;
标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %></span>
<div class="fr none" id="menu_div_<%= exercise_question.id %>">
<% type = exercise_question.question_type %>
<% exercise = exercise_question.exercise %>
<% count = exercise.exercise_questions.where(:question_type => type).count %>
<a class="ur_icon_edit" title="编辑" onclick="pollQuestionEdit(<%= exercise_question.id%>);"></a>
<a href="javascript:void(0)" class="ur_icon_de" title="删除" onclick="delete_confirm_box('<%= delete_exercise_question_exercise_index_path(:exercise_question => exercise_question.id, :quest_num => exercise_question.question_number) %>', '确定要删除该题目吗?')"></a>
<a class='ur_icon_add' title='向下插入' id="add_mcq_<%=exercise_question.id%>" onclick="dismiss('mcq',<%=exercise_question.id%>);insert_MCQ('mcq',<%=exercise_question.question_number%>,<%=exercise_question.id%>);"></a>
<% if exercise_question.question_number < count %>
<%= link_to('', {:controller => 'exercise', :action => 'update_question_num', :id => exercise.id, :ques_id => exercise_question.id, :opr => 'down'},:remote => true, :method => 'post', :class => "poll-down up_and_down", :title => '下移') %>
<% end %>
<% unless exercise_question.question_number == 1 %>
<%= link_to('', {:controller => 'exercise', :action => 'update_question_num', :id => exercise.id, :ques_id => exercise_question.id, :opr => 'up'},:remote => true, :method => 'post', :class => "poll-up up_and_down", :title => '上移') %>
<% end %>
</div>
<div class="cl"></div>
</div>
<p class="formatContainer break_word"><%= exercise_question.question_title %></p>
</div>
<div class="exercise_inputs">
<table class="" style="width:100%;">
<tbody>
<% exercise_question.exercise_choices.reorder("choice_position").each_with_index do |exercise_choice,index| %>
<tr>
<td>
<label>
<input class="ur_radio" type="checkbox" name="<%= exercise_question %>" value="<%= exercise_choice.choice_text%>" >
<%= convert_to_char((index+1).to_s)%>&nbsp;&nbsp;<%= exercise_choice.choice_text%>
</label>
</td>
</tr>
<div class="question_item_con font-14 user_bg_shadow bor-grey-e mb20 pt15">
<div class="clearfix pl15 pr15">
<p class="fl font-15">第<%= exercise_question.question_number%>题:<span class="color-orange03 ml10">[多选题]</span><span class="ml10"><%= exercise_question.question_score %></span>分</p>
<p class="fr exam_operator font-18">
<% if exercise_question.question_number < @exercise.exercise_questions.count %>
<a href="<%= update_question_num_exercise_path(@exercise, :ques_id => exercise_question.id, :opr => 'down') %>" data-remote="true" class="down_question"><i data-tip-down="下移" class="fa fa-arrow-circle-down mr10 color-orange05"></i></a>
<% end %>
</tbody>
</table>
<% unless exercise_question.question_number == 1 %>
<a href="<%= update_question_num_exercise_path(@exercise, :ques_id => exercise_question.id, :opr => 'up') %>" data-remote="true" class="up_question"><i data-tip-down="上移" class="fa fa-arrow-circle-up mr10 color-orange05"></i></a>
<% end %>
<a href="javascript:void(0)" class="add_question" onclick="insert_MCQ(<%=exercise_question.id%>);"><i data-tip-down="向下插入多选题" class="fa fa-plus-circle mr10 color-orange05"></i></a>
<a href="javascript:void(0)" onclick="delete_confirm_box('<%= delete_exercise_question_exercise_index_path(:exercise_question => exercise_question.id, :quest_num => exercise_question.question_number) %>', '确定要删除该题目吗?')"><i data-tip-down="删除" class="fa fa-times-circle mr10 color-orange05"></i></a>
<a href="javascript:void(0)" onclick="exQuestionEdit(<%= exercise_question.id%>);"><i data-tip-down="编辑" class="fa fa-pencil color-orange05"></i></a>
</p>
</div>
</div><!--多选题显示 end-->
<pre class="exercise_que_title pl15 pr15"><%= exercise_question.question_title %></pre>
<div class="pl15 pr15 mb10">
<% exercise_question.exercise_choices.reorder("choice_position").each_with_index do |exercise_choice,index| %>
<li class="clearfix">
<input class="magic-checkbox fl mt5 magic-checkbox_show" id="dx_<%= exercise_choice.id %>" value="<%= exercise_choice.choice_text%>" type="checkbox">
<label class="fl color-grey3" for="dx_<%= exercise_choice.id %>"><%= convert_to_char((index+1).to_s)%>&nbsp;&nbsp;<%= exercise_choice.choice_text%></label>
</li>
<% end %>
</div>
<div class=" pl15 pr15 pt10 pb10 bor-top-greyE">
标准答案:<%= convert_to_char(exercise_question.exercise_standard_answers.first.exercise_choice_id.to_s) %>
</div>
</div>
<!-- 新增问题 -->
<div id="insert_new_poll_question_mcq_<%=exercise_question.id%>">
<div id="insert_new_poll_question_<%=exercise_question.id%>">
</div>
<script type="text/javascript">
function insert_MCQ(quest_type,quest_num,quest_id){
function insert_MCQ(quest_id){
var forms = $("form.new_exercise_question");
if($.trim($("#insert_new_poll_question_"+quest_type+"_"+quest_id).html()) == ""){
if($.trim($("#insert_new_poll_question_"+quest_id).html()) == ""){
if(forms.length > 0){
notice_box("请先保存正在编辑的题目再新建。");
} else {
<% score =exercise_question.question_score %>
$("#insert_new_poll_question_"+quest_type+"_"+quest_id).html(
'<%= form_for(ExerciseQuestion.new,:html=>{:multipart=>true},:url=>create_exercise_question_exercise_path(exercise_question.exercise.id),:remote=>true) do |f|%>'+
'<div class="questionContainer" style="width: 680px;"> '+
'<div class="mb10 ur_item">'+
'<label>分值<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>'+
'<input id="question_score" value="<%=score %>" type="text" name="question_score" style="width:60px; text-align:center; padding-left:0px;">分'+
'<span class="fr c_red" style="width: 60px;" id="question_standard_answer_2">请点击选项</span>'+
'<span class="fr">标准答案:</span>'+
'<div class="cl"></div>'+
'</div>'+
'<div class="ur_editor_title">'+
'<label class="questionLabel mt8">问题:&nbsp;&nbsp;</label>'+
'<input type="hidden" name="quest_id" value="'+quest_id+'"/>'+
'<input type="hidden" name="quest_num" value="'+quest_num+'"/>'+
'<input type="hidden" name="question_type" value="2"/>'+
'<textarea name="question_title" style="width: 625px;" id="poll_questions_title" class="questionTitle" placeholder="请输入多选题的题干" type="text"></textarea>'+
'</div>'+
'<div class="ur_editor_content">'+
'<ul>'+
'<div>'+
'<input style="display: none;" name="exercise_choice" id="exercise_choice_2"/>'+
'<li class="ur_item new_answer">'+
'<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 2, 2);">A</a>'+
'<input maxlength="200" class="w600" type="text" name="question_answer[0]" placeholder="输入选项内容"/>'+
'<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>'+
'</li>'+
'<div class="cl"></div>'+
'<li class="ur_item new_answer">'+
'<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 2, 2);">B</a>'+
'<input maxlength="200" class="w600" type="text" name="question_answer[1]" placeholder="输入选项内容"/>'+
'<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>'+
'</li>'+
'<div class="cl"></div>'+
'<li class="ur_item new_answer">'+
'<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 2, 2);">C</a>'+
'<input maxlength="200" class="w600" type="text" name="question_answer[2]" placeholder="输入选项内容"/>'+
'<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>'+
'</li>'+
'<div class="cl"></div>'+
'<li class="ur_item new_answer">'+
'<a class="question_choice_white fl mr10 choice_btn" title="设为答案" href="javascript:void(0)" onclick="toggle_select($(this), 2, 2);">D</a>'+
'<input maxlength="200" class="w600" type="text" name="question_answer[3]" placeholder="输入选项内容"/>'+
'<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>'+
'</li>'+
'<div class="cl"></div>'+
'<li class="ur_item">'+
'<a class="question_choice_dash fl mr10 choice_btn">E</a>'+
'<div class="dash-block new-question w600" onclick="add_single_answer($(this), 2);">新建选项</div>'+
'</li>'+
'<div class="cl"></div>'+
'</div> </ul>'+
'</div>'+
'<div class="ur_editor_footer">'+
'<span class="fl c_red mt10">温馨提示:[多选题]属于客观题将由系统自动评分,请设置标准答案</span>'+
'<a class="big_blue_btn borderRadius fr" data-button="ok" id="add_new_question">'+
'保存'+
'</a>'+
'<a class="big_grey_btn borderRadius fr mr10" data-button="cancel" onclick="$(this).parent().parent().parent().remove();">'+
'<%= l(:button_cancel)%>'+
'</a>'+
'</div>'+
'<div class="cl"></div>'+
'</div>'+
'<% end%>'
);
$("#insert_new_poll_question_"+quest_id).html("<%= escape_javascript(render :partial => 'new_MCQ', :locals => {:exercise=>@exercise}) %>");
$("#quest_id").val(quest_id);
$("#poll_questions_title").focus();
$("#add_new_question").one('click', function(){
add_poll_question($(this),2);
});
$(".questionTitle").on("input",function(){
$(this).height(30);
var scrollVal = $(this)[0].scrollHeight;
@ -127,7 +48,7 @@
});
}
}else {
$("#insert_new_poll_question_"+quest_type+"_"+quest_id).html("");
$("#insert_new_poll_question_"+quest_id).html("");
}
}
</script>

View File

@ -1,24 +1,15 @@
<div class="testStatus" onmouseover="$('#poll_head_edit_pen').show();" onmouseout="$('#poll_head_edit_pen').hide();"><!--头部显示 start-->
<a href="javascript:" class="testEdit" title="编辑" id="poll_head_edit_pen" onclick="pollsEdit();" style="top:0;display:none"></a>
<!-- <a class='ur_icon_add' title='导入' id="import_btn" onclick="importPoll();"></a> -->
<h1 class="ur_page_title" id="polls_name_h"><%= exercise.exercise_name%></h1>
<div class="fontGrey2">
<% unless exercise.publish_time.nil? %>
<span class="mr100">发布时间:<%=Time.parse(h(exercise.publish_time)).strftime("%Y-%m-%d %H:%M:%S") if exercise.publish_time%></span>
<% end %>
<span class="mr100">截止时间:<font id="show_exercise_time"><%=Time.parse(h(exercise.end_time)).strftime("%Y-%m-%d %H:%M:%S") if exercise.end_time %></font></span>
<% if exercise.time != -1 %>
<span>测验时长:<%= exercise.time %>分钟</span>
<% end %>
</div>
<pre class="fontGrey2 font_cus" style="white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:pre-wrap;white-space:-o-pre-wrap;word-break:normal;word-wrap: break-word;"><%= exercise.exercise_description.nil? ? "" :exercise.exercise_description.html_safe%></pre>
<div class="ur_editor_footer mt10">
<input type="checkbox" name="question_random" disabled <%= exercise.question_random == 0 ? 'checked' : '' %> id="show_question_random">
<label for="show_question_random" class="mr30">题目不随机打乱</label>
<input type="checkbox" name="choice_random" disabled <%= exercise.choice_random == 0 ? 'checked' : '' %> id="show_question_random">
<label for="show_question_random" class="mr30">选项不随机打乱</label>
<input type="checkbox" name="show_result" disabled <%= exercise.show_result == 1 ? 'checked' : '' %> id="show_question_random">
<label for="show_question_random">允许学生查看测验结果</label>
</div>
<div class="cl"></div>
</div>
<div class="ml15 mr15">
<p style="text-align: center; font-size: 16px; width: 98%;" class="fl"><%= @exercise.try(:exercise_name) %></p>
<a href="javascript:void(0)" class="fl" onclick="pollsEdit();" data-tip-down="编辑"><i class="fa fa-pencil color-orange05"></i></a>
</div>
<div class="cl"></div>
<div class="ml15 mr15 mt15">
<pre class="color-grey font-14 exercise_que_title"><%= @exercise.try(:exercise_description).nil? ? "" : @exercise.try(:exercise_description).html_safe%></pre>
</div>
<script>
function pollsEdit(){
$("#exercise_head_edit").show();
$("#exercise_head_show").hide();
}
</script>

View File

@ -1,83 +1,39 @@
<div onmouseover="$('#menu_div_<%= exercise_question.id %>').show();" onmouseout="$('#menu_div_<%= exercise_question.id %>').hide();">
<div class="exercise_title">
<div>
<span class="fl lh27">第<%= exercise_question.question_number%>题.&nbsp;&nbsp;<%= exercise_question.question_score %>分</span>
<div class="fr none" id="menu_div_<%= exercise_question.id %>">
<% type = exercise_question.question_type %>
<% exercise = exercise_question.exercise %>
<% count = exercise.exercise_questions.where(:question_type => type).count %>
<a class="ur_icon_edit" title="编辑" onclick="pollQuestionEdit(<%= exercise_question.id%>);"></a>
<a href="javascript:void(0)" class="ur_icon_de" title="删除" onclick="delete_confirm_box('<%= delete_exercise_question_exercise_index_path(:exercise_question => exercise_question.id, :quest_num => exercise_question.question_number) %>', '确定要删除该题目吗?')"></a>
<a class='ur_icon_add' title='向下插入' id="add_multi_<%=exercise_question.id%>" onclick="dismiss('multi',<%=exercise_question.id%>);insert_MULTI('multi',<%=exercise_question.question_number%>,<%=exercise_question.id%>);"></a>
<% if exercise_question.question_number < count %>
<%= link_to('', {:controller => 'exercise', :action => 'update_question_num', :id => exercise.id, :ques_id => exercise_question.id, :opr => 'down'},:remote => true, :method => 'post', :class => "poll-down up_and_down", :title => '下移') %>
<% end %>
<% unless exercise_question.question_number == 1 %>
<%= link_to('', {:controller => 'exercise', :action => 'update_question_num', :id => exercise.id, :ques_id => exercise_question.id, :opr => 'up'},:remote => true, :method => 'post', :class => "poll-up up_and_down", :title => '上移') %>
<% end %>
</div>
<div class="cl"></div>
</div>
<p class="formatContainer break_word"><%= exercise_question.question_title %></p>
<div class="question_item_con font-14 user_bg_shadow bor-grey-e mb20 pt15">
<div class="clearfix pl15 pr15">
<p class="fl font-15">第<%= exercise_question.question_number%>题:<span class="color-orange03 ml10">[简答题]</span><span class="ml10"><%= exercise_question.question_score %></span>分</p>
<p class="fr exam_operator font-18">
<% if exercise_question.question_number < @exercise.exercise_questions.count %>
<a href="<%= update_question_num_exercise_path(@exercise, :ques_id => exercise_question.id, :opr => 'down') %>" data-remote="true" class="down_question"><i data-tip-down="下移" class="fa fa-arrow-circle-down mr10 color-orange05"></i></a>
<% end %>
<% unless exercise_question.question_number == 1 %>
<a href="<%= update_question_num_exercise_path(@exercise, :ques_id => exercise_question.id, :opr => 'up') %>" data-remote="true" class="up_question"><i data-tip-down="上移" class="fa fa-arrow-circle-up mr10 color-orange05"></i></a>
<% end %>
<a href="javascript:void(0)" class="add_question" onclick="insert_MULTI(<%=exercise_question.id%>);"><i data-tip-down="向下插入简答题" class="fa fa-plus-circle mr10 color-orange05"></i></a>
<a href="javascript:void(0)" onclick="delete_confirm_box('<%= delete_exercise_question_exercise_index_path(:exercise_question => exercise_question.id, :quest_num => exercise_question.question_number) %>', '确定要删除该题目吗?')"><i data-tip-down="删除" class="fa fa-times-circle mr10 color-orange05"></i></a>
<a href="javascript:void(0)" onclick="exQuestionEdit(<%= exercise_question.id%>);"><i data-tip-down="编辑" class="fa fa-pencil color-orange05"></i></a>
</p>
</div>
<pre class="exercise_que_title pl15 mb10 pr15"><%= exercise_question.question_title %></pre>
<div class="clearfix bor-top-greyE padding15 answer_con">
<p>参考答案</p>
<p style="text-align:justify;"><%= exercise_question.exercise_standard_answers.count > 0 ? exercise_question.exercise_standard_answers.first.answer_text : "无"%></p>
</div>
<% if exercise_question.exercise_standard_answers.count > 0 %>
<div>
参考答案:<pre class="fontGrey2 font_cus" style="white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:pre-wrap;white-space:-o-pre-wrap;word-break:normal;word-wrap: break-word;"><%= exercise_question.exercise_standard_answers.first.answer_text%></pre>
</div>
<% end %>
</div>
<!-- 新增问题 -->
<div id="insert_new_poll_question_multi_<%=exercise_question.id%>">
<div id="insert_new_poll_question_<%=exercise_question.id%>">
</div>
<script type="text/javascript">
function insert_MULTI(quest_type,quest_num,quest_id){
function insert_MULTI(quest_id){
var forms = $("form.new_exercise_question");
if($.trim($("#insert_new_poll_question_"+quest_type+"_"+quest_id).html()) == "") {
if($.trim($("#insert_new_poll_question_"+quest_id).html()) == "") {
if(forms.length > 0){
notice_box("请先保存正在编辑的题目再新建。");
} else {
<% score =exercise_question.question_score %>
$("#insert_new_poll_question_"+quest_type+"_"+quest_id).html(
'<%= form_for(ExerciseQuestion.new,:html=>{:multipart=>true},:url=>create_exercise_question_exercise_path(exercise_question.exercise.id),:remote=>true) do |f|%>'+
'<div class="questionContainer" style="width: 680px;"> '+
'<div class="mb10 ur_item">'+
'<label class="ml25">分值<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>'+
'<input id="question_score" value="<%=score %>" type="text" name="question_score" style="width:60px; text-align:center; padding-left:0px;">分'+
'<div class="cl"></div>'+
'</div>'+
'<div class="ur_editor_title"> '+
'<label class="questionLabel mt8 ml25">问题:&nbsp;&nbsp;&nbsp;</label>'+
'<input type="hidden" name="quest_id" value="'+quest_id+'"/>'+
'<input type="hidden" name="quest_num" value="'+quest_num+'"/>'+
'<input type="hidden" name="question_type" value="4"/>'+
'<textarea maxlength="250" style="width: 600px;" name="question_title" id="poll_questions_title" class="questionTitle" placeholder="请输入问答题的题干" type="text"></textarea>'+
'</div>'+
'<div class="ur_editor_content" id="new_multi">'+
'<div class="multi_input">'+
'<label name="candiate_items">参考答案<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>'+
'<textarea class="candiate_answer" style="width: 600px; height: 90px;" name="exercise_choice" placeholder="如有参考答案,请输入参考答案" type="text"></textarea>'+
'</div>'+
'<div class="cl"></div>'+
'</div>'+
'<div class="ur_editor_footer">'+
'<p class="fl c_red">温馨提示:[问答题]属于主观题需要人工评分,未作答的情况下系统将自动评零分<br><span class="ml60">参考答案作为人工评分时的参考</span></p>'+
'<a class="big_blue_btn borderRadius fr" data-button="ok" id="add_new_question">'+
'保存'+
'</a>'+
'<a class="big_grey_btn borderRadius fr mr10" data-button="cancel" onclick="$(this).parent().parent().parent().remove();">'+
'<%= l(:button_cancel)%>'+
'</a>'+
'</div>'+
'<div class="cl"></div>'+
'</div>'+
'<% end%>'
);
$("#insert_new_poll_question_"+quest_id).html("<%= escape_javascript(render :partial => 'new_multi', :locals => {:exercise=>@exercise}) %>");
$("#quest_id").val(quest_id);
$("#poll_questions_title").focus();
$("#add_new_question").one('click', function(){
add_poll_question($(this),4);
});
$(".questionTitle").on("input",function(){
$(this).height(30);
var scrollVal = $(this)[0].scrollHeight;
@ -85,7 +41,7 @@
});
}
} else {
$("#insert_new_poll_question_"+quest_type+"_"+quest_id).html("");
$("#insert_new_poll_question_"+quest_id).html("");
}
}
</script>

View File

@ -1,105 +1,40 @@
<div onmouseover="$('#menu_div_<%= exercise_question.id %>').show();" onmouseout="$('#menu_div_<%= exercise_question.id %>').hide();">
<div class="exercise_title">
<div>
<span class="fl lh27">第<%= exercise_question.question_number%>题.&nbsp;&nbsp;<%= exercise_question.question_score %>分</span>
<div class="fr none" id="menu_div_<%= exercise_question.id %>">
<% type = exercise_question.question_type %>
<% exercise = exercise_question.exercise %>
<% count = exercise.exercise_questions.where(:question_type => type).count %>
<a class="ur_icon_edit" title="编辑" onclick="pollQuestionEdit(<%= exercise_question.id%>);"></a>
<a href="javascript:void(0)" class="ur_icon_de" title="删除" onclick="delete_confirm_box('<%= delete_exercise_question_exercise_index_path(:exercise_question => exercise_question.id, :quest_num => exercise_question.question_number) %>', '确定要删除该题目吗?')"></a>
<a class='ur_icon_add' title='向下插入' id="add_single_<%=exercise_question.id%>" onclick="dismiss('single',<%=exercise_question.id%>);insert_SINGLE('single',<%=exercise_question.question_number%>,<%=exercise_question.id%>);"></a>
<% if exercise_question.question_number < count %>
<%= link_to('', {:controller => 'exercise', :action => 'update_question_num', :id => exercise.id, :ques_id => exercise_question.id, :opr => 'down'},:remote => true, :method => 'post', :class => "poll-down up_and_down", :title => '下移') %>
<% end %>
<% unless exercise_question.question_number == 1 %>
<%= link_to('', {:controller => 'exercise', :action => 'update_question_num', :id => exercise.id, :ques_id => exercise_question.id, :opr => 'up'},:remote => true, :method => 'post', :class => "poll-up up_and_down", :title => '上移') %>
<% end %>
</div>
<div class="cl"></div>
</div>
<p class="formatContainer break_word"><%= exercise_question.question_title %></p>
<div class="question_item_con font-14 user_bg_shadow bor-grey-e mb20 pt15">
<div class="clearfix pl15 pr15">
<p class="fl font-15">第<%= exercise_question.question_number%>题:<span class="color-orange03 ml10">[填空题]</span><span class="ml10"><%= exercise_question.question_score %></span>分</p>
<p class="fr exam_operator font-18">
<% if exercise_question.question_number < @exercise.exercise_questions.count %>
<a href="<%= update_question_num_exercise_path(@exercise, :ques_id => exercise_question.id, :opr => 'down') %>" data-remote="true" class="down_question"><i data-tip-down="下移" class="fa fa-arrow-circle-down mr10 color-orange05"></i></a>
<% end %>
<% unless exercise_question.question_number == 1 %>
<a href="<%= update_question_num_exercise_path(@exercise, :ques_id => exercise_question.id, :opr => 'up') %>" data-remote="true" class="up_question"><i data-tip-down="上移" class="fa fa-arrow-circle-up mr10 color-orange05"></i></a>
<% end %>
<a href="javascript:void(0)" class="add_question" onclick="insert_SINGLE(<%=exercise_question.id%>);"><i data-tip-down="向下插入填空题" class="fa fa-plus-circle mr10 color-orange05"></i></a>
<a href="javascript:void(0)" onclick="delete_confirm_box('<%= delete_exercise_question_exercise_index_path(:exercise_question => exercise_question.id, :quest_num => exercise_question.question_number) %>', '确定要删除该题目吗?')"><i data-tip-down="删除" class="fa fa-times-circle mr10 color-orange05"></i></a>
<a href="javascript:void(0)" onclick="exQuestionEdit(<%= exercise_question.id%>);"><i data-tip-down="编辑" class="fa fa-pencil color-orange05"></i></a>
</p>
</div>
<div>
<pre class="exercise_que_title pl15 pr15"><%= exercise_question.question_title %></pre>
<div class="pl15 pr15 pt10 pb10 bor-top-greyE">
<% exercise_question.exercise_standard_answers.reorder("created_at").each_with_index do |exercise_choice,index| %>
参考答案<%= convert_to_chi_num(index+1) %><%= exercise_choice.answer_text%><br />
<p>候选答案<%= convert_to_chi_num(index+1) %><%= exercise_choice.answer_text%></p>
<% end %>
</div>
</div>
<!-- 新增问题 -->
<div id="insert_new_poll_question_single_<%=exercise_question.id%>">
<div id="insert_new_poll_question_<%=exercise_question.id%>">
</div>
<script type="text/javascript">
function insert_SINGLE(quest_type,quest_num,quest_id){
function insert_SINGLE(quest_id){
var forms = $("form.new_exercise_question");
if($.trim($("#insert_new_poll_question_"+quest_type+"_"+quest_id).html()) == "") {
if($.trim($("#insert_new_poll_question_"+quest_id).html()) == "") {
if(forms.length > 0){
notice_box("请先保存正在编辑的题目再新建。");
} else {
<% score =exercise_question.question_score %>
$("#insert_new_poll_question_"+quest_type+"_"+quest_id).html(
'<%= form_for(ExerciseQuestion.new,:html=>{:multipart=>true},:url=>create_exercise_question_exercise_path(exercise_question.exercise.id),:remote=>true) do |f|%>'+
'<div class="questionContainer" style="width: 680px;"> '+
'<div class="mb10 ur_item">'+
'<label class="ml36">分值<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>'+
'<input id="question_score" value="<%=score %>" type="text" name="question_score" style="width:60px; text-align:center; padding-left:0px;">分'+
'<div class="cl"></div>'+
'</div>'+
'<div class="ur_editor_title"> '+
'<label class="questionLabel mt8 ml36">问题:&nbsp;&nbsp;&nbsp;</label>'+
'<input type="hidden" name="quest_id" value="'+quest_id+'"/>'+
'<input type="hidden" name="quest_num" value="'+quest_num+'"/>'+
'<input type="hidden" name="question_type" value="3"/>'+
'<textarea maxlength="250" style="width: 590px;" name="question_title" id="poll_questions_title" class="questionTitle" placeholder="请输入填空题的题干(注意:目前仅支持一个空)" type="text"></textarea>'+
'</div>'+
'<div class="ur_editor_content" id="new_single">'+
'<ul>'+
'<div>'+
'<li class="ur_item new_answer">'+
'<label name="candiate_items">参考答案一<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>'+
'<input class="candiate_answer w560" type="text" name="exercise_choice[0]" placeholder="请输入参考答案"/>'+
'<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>'+
'</li>'+
'<div class="cl"></div>'+
'<li class="ur_item new_answer">'+
'<label name="candiate_items">参考答案二<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>'+
'<input class="candiate_answer w560" type="text" name="exercise_choice[1]" placeholder="请输入参考答案(选填)"/>'+
'<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>'+
'</li>'+
'<div class="cl"></div>'+
'<li class="ur_item new_answer">'+
'<label name="candiate_items">参考答案三<span class="ur_index"></span>&nbsp;&nbsp;&nbsp;</label>'+
'<input class="candiate_answer w560" type="text" name="exercise_choice[2]" placeholder="请输入参考答案(选填)"/>'+
'<a class="icon_remove" title="删除" onclick="remove_single_answer($(this))"></a>'+
'</li>'+
'<div class="cl"></div>'+
'<li class="ur_item">'+
'<div class="dash-block new-question w560" style="margin-left: 82px;" onclick="add_candidate_answer($(this));">新建参考答案</div>'+
'</li>'+
'<div class="cl"></div>'+
'</div>'+
'<div class="cl"></div>'+
'</ul>'+
'</div>'+
'<div class="ur_editor_footer">'+
'<span class="fl c_red mt10">温馨提示:[填空题]属于客观题将由系统自动评分,请输入参考答案</span>'+
'<a class="big_blue_btn borderRadius fr" data-button="ok" id="add_new_question">'+
'保存'+
'</a>'+
'<a class="big_grey_btn borderRadius fr mr10" data-button="cancel" onclick="$(this).parent().parent().parent().remove();">'+
'<%= l(:button_cancel)%>'+
'</a>'+
'</div>'+
'<div class="cl"></div>'+
'</div>'+
'<% end%>'
);
$("#insert_new_poll_question_"+quest_id).html("<%= escape_javascript(render :partial => 'new_single', :locals => {:exercise=>@exercise}) %>");
$("#quest_id").val(quest_id);
$("#poll_questions_title").focus();
$("#add_new_question").one('click', function(){
add_poll_question($(this),3);
});
$(".questionTitle").on("input",function(){
$(this).height(30);
var scrollVal = $(this)[0].scrollHeight;
@ -107,7 +42,7 @@
});
}
} else {
$("#insert_new_poll_question_"+quest_type+"_"+quest_id).html("");
$("#insert_new_poll_question_"+quest_id).html("");
}
}
</script>

View File

@ -1,30 +1,88 @@
<div class="fl pr" style="padding-bottom:10px; width:720px;">
<span class="c_dark f14 fb fl mr30">
测验
<font class="f12 c_red">
(<%= @exercise_count%>人已答)
</font>
</span>
<%if @is_teacher || @exercise.exercise_status == 3%>
<div class="hworkSearchBox">
<input type="text" id="course_student_name" value="<%= @name%>" placeholder="姓名、学号、邮箱" class="hworkSearchInput" onkeypress="SearchByName('<%= student_exercise_list_exercise_path(@exercise)%>',event);"/>
<a class="hworkSearchIcon" id="search_in_student_work" onclick="SearchByName_1('<%= student_exercise_list_exercise_path(@exercise)%>');" href="javascript:void(0)"></a>
</div>
<%= select_tag(:student_work_in_group,options_for_select(course_group_list(@course),@select_group), {:class => "classSplit"}) unless course_group_list(@course).empty? %>
<% end %>
<span class="fr c_grey"> <a href="javascript:void(0);" class="linkGrey2" id="homework_info_show" onclick="show_or_hide_info();" style="display: none">[ 显示测验信息 ]</a> </span>
<div class="panel-bg-grey clearfix mb15">
<%= link_to "提交时间排序", student_exercise_list_exercise_path(@exercise, :order => "end_at", :sort => @score, :name => @name, :ex_group => @group, :ex_comment => @comment, :ex_status => @status), :class => "#{@order == 'end_at' ? 'color-orange03' : ''} fl ml15", :remote => true %>
<span class="mr5 ml5 fl">|</span>
<%= link_to "最终成绩排序", student_exercise_list_exercise_path(@exercise, :order => "score", :sort => @score, :name => @name, :ex_group => @group, :ex_comment => @comment, :ex_status => @status), :class => "#{@order == 'score' ? 'color-orange03' : ''} fl", :remote => true %>
<p class="fr"> <span class="color-orange03"><%= @exercise_count %></span> 个检索结果(学生:<%= @course.student.count %>人)</p>
</div>
<table class="edu-pop-table edu-txt-center hover-td" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th>序号</th>
<th>姓名</th>
<th>学号</th>
<th>提交状态</th>
<th>提交时间</th>
<th>客观题得分</th>
<th>主观题教师评分</th>
<!--<th>主观题助教评分</th>-->
<th>最终成绩</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<% @exercise_users_list.each_with_index do |exercise, index| %>
<tr id="exercise_user_<%= exercise.id %>">
<td><%= (@page - 1) * @limit + index + 1 %></td>
<td>
<%= link_to exercise.user.show_real_name, user_path(exercise.user),:class=>"color-grey3" %>
</td>
<td title="<%= exercise.user.user_extensions.nil? ? "--" : exercise.user.user_extensions.student_id %>">
<%= exercise.user.user_extensions.nil? ? "--" : exercise.user.user_extensions.student_id %>
</td>
<td>
<%= (list_work_status exercise.commit_status).html_safe %>
</td>
<td><%= exercise.commit_status == 0 ? '--' : format_time(exercise.end_at) %></td>
<td class="<%= score_color exercise.objective_score %>">
<%= exercise.objective_score == -1 ? "--" : format("%.1f",exercise.objective_score)%>
</td>
<td class="<%= score_color(exercise.subjective_score == -1 ? nil : exercise.subjective_score) %>">
<%= exercise.subjective_score == -1 ? "--" : format("%.1f",exercise.subjective_score)%>
</td>
<!--<td class="color-red-light edu-position student_score_info">91.0-->
<!--<div class="popup_tip_box-black" style="left: 120px; ">-->
<!--<em></em>-->
<!--<span></span>-->
<!--<p>5名助教进行了评分<br>平均分91.0 分-->
<!--</p>-->
<!--</div>-->
<!--</td>-->
<!-- 成绩 -->
<td class="<%= score_color exercise.score%> edu-position student_score_info">
<%= exercise.score.nil? ? "--" : format("%.1f",exercise.score)%>
<%# unless exercise.score.nil? %>
<!--<div class="popup_tip_box-black" style="left: 100px; ">-->
<!--<em></em>-->
<!--<span></span>-->
<!--<p><%#= exercise.user.show_real_name %><%#= exercise.user.login %><br>-->
<!--最终评分:<%#= format("%.1f",exercise.score) %> 分<br>-->
<!--&lt;!&ndash;迟交扣分0 分<br>&ndash;&gt;-->
<!--最终成绩:<%#= format("%.1f",exercise.score) %> 分<br>-->
<!--</p>-->
<!--</div>-->
<%# end %>
</td>
<td>
<% if exercise.commit_status > 0 %>
<% if @is_teacher %>
<%= link_to '评阅', show_student_result_exercise_path(@exercise,:user_id => exercise.user_id), :target => "_blank" %>
<% else %>
<%= link_to '查看', exercise.commit_status == 1 ? exercise_path(@exercise,:user_id => exercise.user_id) : show_student_result_exercise_path(@exercise,:user_id => exercise.user_id), :target => "_blank" %>
<% end %>
<% else %>
--
<% end %>
</td>
</tr>
<% end %>
</tbody>
</table>
<div class="group_work_tip_box fontGrey2">
<em></em>
<span></span>
<p class="mt5 mb5 break_word">客观题由系统自动评分:<br/>
单选题、多选题、填空题<br/><br/>主观题需要人工评分,但未作答时系统<br/>自动评零分:<br/>问答题
</p>
<div style="text-align:center;" class="new_expand">
<div class="pages_user_show" style="width:auto; display:inline-block;margin: 18px 0;">
<ul>
<%= pagination_links_full @exercise_pages, @exercise_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true %>
</ul>
<div class="cl"></div>
</div>
</div>
<div class="cl"></div>
<div class="fl">
<%= render :partial => "student_table" %>
</div>
<div class="cl"></div>
</div>

View File

@ -1,8 +1,12 @@
<div class="" style="display: <%= current_score[0] == 0 ? "none" : "" %>" id="current_score_div">
<span class="mr20">单选题&nbsp;<%= exercise.exercise_questions.where("question_type=1").count %>&nbsp;题,共<%= current_score[1] %>分</span>
<span class="mr20">多选题&nbsp;<%= exercise.exercise_questions.where("question_type=2").count %>&nbsp;题,共<%= current_score[2] %>分</span>
<span class="mr20">填空题&nbsp;<%= exercise.exercise_questions.where("question_type=3").count %>&nbsp;题,共<%= current_score[3] %>分</span>
<span class="mr20">问答题&nbsp;<%= exercise.exercise_questions.where("question_type=4").count %>&nbsp;题,共<%= current_score[4] %>分</span>
<span class="fr">合计&nbsp;<font class="c_red"><%= exercise.exercise_questions.count %></font>&nbsp;题,共<font class="c_red"><%= current_score[0] %></font>分</span>
<div class="cl"></div>
<% current_score = get_current_score @exercise %>
<div class="edu-con-top user_bg_shadow bor-grey-e color-grey clearfix mb20 font-12" style="display: <%= current_score[0] == 0 ? "none" : "" %>">
<p class="ml15 fl">
<span class="mr20">单选题<span>&nbsp;<%= @exercise.exercise_questions.where("question_type=1").count %>&nbsp;</span>题,共<span>&nbsp;<%= current_score[1] %>&nbsp;</span>分</span>
<span class="mr20">多选题<span>&nbsp;<%= @exercise.exercise_questions.where("question_type=2").count %>&nbsp;</span>题,共<span>&nbsp;<%= current_score[2] %>&nbsp;</span>分</span>
<span class="mr20">填空题<span>&nbsp;<%= @exercise.exercise_questions.where("question_type=3").count %>&nbsp;</span>题,共<span>&nbsp;<%= current_score[3] %>&nbsp;</span>分</span>
<span>简答题<span>&nbsp;<%= @exercise.exercise_questions.where("question_type=4").count %>&nbsp;</span>题,共<span>&nbsp;<%= current_score[4] %>&nbsp;</span>分</span>
</p>
<a class="fr mr15">
<span>合计<span class="color-orange03">&nbsp;<%= @exercise.exercise_questions.count %>&nbsp;</span>题,共<span class="color-orange03">&nbsp;<%= current_score[0] %>&nbsp;</span>分</span>
</a>
</div>

View File

@ -1 +1 @@
notice_box_redirect("<%= exercise_index_path(:course_id => @course.id) %>", "提交成功");
notice_box_redirect("<%= student_exercise_list_exercise_path(@exercise) %>", "提交成功");

View File

@ -1,4 +1,5 @@
$("#polls_head_show").html("<%= escape_javascript(render :partial => 'show_head', :locals => {:exercise => @exercise}) %>");
$("#polls_head_edit").html("<%= escape_javascript(render :partial => 'edit_head', :locals => {:exercise => @exercise}) %>");
$("#polls_head_edit").hide();
$("#polls_head_show").show();
$("#exercise_head_show").html("<%= escape_javascript(render :partial => 'show_head') %>");
$("#exercise_head_edit").html("<%= escape_javascript(render :partial => 'edit_head') %>");
$("#exercise_head_edit").hide();
$("#exercise_head_show").show();
$("#new_exercise_question").html("<%= escape_javascript(render :partial => 'exercise/new_question') %>");

View File

@ -1,54 +1,4 @@
<% if @is_insert %>
$("#poll_content").html('<%= escape_javascript(render :partial => 'exercise_content', :locals => {:exercise => @exercise})%>');
$("#exercise_submit").html("<%= escape_javascript(render :partial => 'exercise_submit', :locals => {:exercise => @exercise}) %>");
<% current_score = get_current_score @exercise %>
$("#total_questions_score").html("<%= escape_javascript(render :partial => 'exercise/total_questions_score', :locals => {:exercise => @exercise, :current_score => current_score}) %>");
<% else %>
$("#exercise_question_list").html("<%= escape_javascript(render :partial => 'exercise/exercise_content') %>");
$("#total_questions_score").html("<%= escape_javascript(render :partial => 'exercise/total_questions_score') %>");
$("#new_exercise_question").html('<%= escape_javascript(render :partial => 'new_question', :locals => {:exercise => @exercise}) %>');
$("#new_poll_question").html("");
$("#exercise_submit").html("<%= escape_javascript(render :partial => 'exercise_submit', :locals => {:exercise => @exercise}) %>");
<%if @exercise_questions.question_type == 1%>
$("#mc_question_list>div").last().children().first().addClass("border_b");
$("#mc_question_list").show().append("<div id='poll_questions_<%= @exercise_questions.id%>'>" +
"<div id='show_poll_questions_<%= @exercise_questions.id %>'>" +
"<%= escape_javascript(render :partial => 'show_MC', :locals => {:exercise_question => @exercise_questions}) %>" +
"</div>" +
"<div id='edit_poll_questions_<%= @exercise_questions.id %>' style='display: none;'>" +
"<%= escape_javascript(render :partial => 'edit_MC', :locals => {:exercise_question => @exercise_questions}) %>" +
"</div>" +
"</div>");
<% end %>
<%if @exercise_questions.question_type == 2%>
$("#mcq_question_list").show().append("<div id='poll_questions_<%= @exercise_questions.id%>'>" +
"<div id='show_poll_questions_<%= @exercise_questions.id %>'>" +
"<%= escape_javascript(render :partial => 'show_MCQ', :locals => {:exercise_question => @exercise_questions}) %>" +
"</div>" +
"<div id='edit_poll_questions_<%= @exercise_questions.id %>' style='display: none;'>" +
"<%= escape_javascript(render :partial => 'edit_MCQ', :locals => {:exercise_question => @exercise_questions}) %>" +
"</div>" +
"</div>");
<% end %>
<%if @exercise_questions.question_type == 3%>
$("#single_question_list").show().append("<div id='poll_questions_<%= @exercise_questions.id%>'>" +
"<div id='show_poll_questions_<%= @exercise_questions.id %>'>" +
"<%= escape_javascript(render :partial => 'show_single', :locals => {:exercise_question => @exercise_questions}) %>" +
"</div>" +
"<div id='edit_poll_questions_<%= @exercise_questions.id %>' style='display: none;'>" +
"<%= escape_javascript(render :partial => 'edit_single', :locals => {:exercise_question => @exercise_questions}) %>" +
"</div>" +
"</div>");
<% end %>
<%if @exercise_questions.question_type == 4%>
$("#multi_question_list").show().append("<div id='poll_questions_<%= @exercise_questions.id%>'>" +
"<div id='show_poll_questions_<%= @exercise_questions.id %>'>" +
"<%= escape_javascript(render :partial => 'show_multi', :locals => {:exercise_question => @exercise_questions}) %>" +
"</div>" +
"<div id='edit_poll_questions_<%= @exercise_questions.id %>' style='display: none;'>" +
"<%= escape_javascript(render :partial => 'edit_multi', :locals => {:exercise_question => @exercise_questions}) %>" +
"</div>" +
"</div>");
<% end %>
$("#total_questions_score").show();
<% current_score = get_current_score @exercise %>
$("#total_questions_score").html("<%= escape_javascript(render :partial => 'exercise/total_questions_score', :locals => {:exercise => @exercise, :current_score => current_score}) %>");
<% end %>
$("#new_poll_question").html("");

View File

@ -1,5 +1,3 @@
hideModal();
$("#poll_content").html("<%= escape_javascript(render :partial => 'exercise_content', :locals => {:exercise => @exercise}) %>");
<% current_score = get_current_score @exercise %>
$("#total_questions_score").html("<%= escape_javascript(render :partial => 'exercise/total_questions_score', :locals => {:exercise => @exercise, :current_score => current_score}) %>");
$("#exercise_submit").html("<%= escape_javascript(render :partial => 'exercise_submit', :locals => {:exercise => @exercise}) %>");
$("#exercise_question_list").html("<%= escape_javascript(render :partial => 'exercise/exercise_content') %>");
$("#total_questions_score").html("<%= escape_javascript(render :partial => 'exercise/total_questions_score') %>");

View File

@ -1,2 +0,0 @@
hideModal();
$("#exercise").html("<%= escape_javascript(render :partial => 'exercises_list') %>");

View File

@ -1,9 +1,15 @@
<%= render :partial => 'exercise_form'%>
<script type="text/javascript">
$(function() {
<% if @exercise.exercise_name != "" && @exercise.end_time != "" %>
$("#polls_head_show").show();
$("#polls_head_edit").hide();
<% end %>
});
</script>
<%#= render :partial => 'exercise_form'%>
<div class="edu-class-container edu-position">
<p class="mb10 font-14">
<i class="fa fa-map-marker mr5 color-grey"></i>
<%= link_to @course.name, course_path(@course) %> &gt; <%= link_to "试卷列表", exercise_index_path(:course_id => @course.id) %> &gt; <%= link_to @exercise.exercise_name, student_exercise_list_exercise_path(@exercise) %> &gt; 编辑
</p>
<div class="edu-con-top user_bg_shadow bor-grey-e clearfix mb20">
<p class="ml15 color-grey3 fl">编辑试卷</p>
<%= link_to "返回", student_exercise_list_exercise_path(@exercise), :class => "fr font-12 color-grey mr15 mt5" %>
<%= link_to "设置", setting_exercise_path(@exercise), :class => "fr font-12 mr15 mt5 color-grey" %>
</div>
<%= render :partial => "exercise/edu_edit_form", :locals => {:is_edit => true} %>
</div>

View File

@ -1,8 +1,12 @@
<%= stylesheet_link_tag 'polls', :media => 'all' %>
<script type="text/javascript">
$(function(){
$("#homework_page_right").css("min-height",$("#courseLSide").height()-33);
});
function close_searchbox(){
if($("#exercise_name_search").val() != ""){
$("#exercise_name_search").val("");
$('#exercise_search_form').submit();
}
}
function republish_exercise(exercise_id,index)
{
var htmlvalue = '<div id="muban_popup_box" style="width:400px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+
@ -48,8 +52,24 @@
pop_box_new(htmlvalue, 300, 140);
}
</script>
<div class="courseRSide fl" id="homework_page_right">
<div class="polls_content02" id="exercise" style="width: 980px;">
<%= render :partial => 'exercises_list'%>
</div><!--问卷内容end-->
<div class="with85 fl">
<div class="ml15 user_bg_shadow bor-grey-e">
<div class="edu-con-top clearfix">
<p class="ml15 color-grey3 fl">试卷列表</p>
<% if @is_teacher %>
<a href="<%= new_exercise_path(:course_id => @course.id) %>" class="white-btn orange-btn fr mr20 mt3" title="新建">+&nbsp;新建</a>
<!--<a href="javascript:void(0)" class="white-btn orange-btn fr mr20 mt3" data-remote="true" title="题库选用">+&nbsp;题库选用</a>-->
<!--<a href="javascript:void(0)" class="white-btn orange-btn fr mr20 mt3" data-remote="true" title="导出成绩">导出成绩</a>-->
<% end %>
</div>
<div class="edu-class-innner-conbox">
<div class="edu-con-top clearfix" id="exercise_index_tab">
<%= render :partial => "exercise/exercise_index_tab" %>
</div>
<div id="exercise_index_list" class="mh550 clearfix">
<%= render :partial => "exercise/exercises_list" %>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,4 @@
<% unless params[:page] %>
$("#exercise_index_tab").html("<%= j(render :partial => 'exercise/exercise_index_tab') %>");
<% end %>
$("#exercise_index_list").html("<%= j(render :partial => 'exercise/exercises_list') %>");

View File

@ -1 +1,13 @@
<%= render :partial => 'exercise_form'%>
<%#= render :partial => 'exercise_form'%>
<div class="edu-class-container edu-position">
<p class="mb10 font-14">
<i class="fa fa-map-marker mr5 color-grey"></i>
<%= link_to @course.name, course_path(@course) %> &gt; <%= link_to "试卷列表", exercise_index_path(:course_id => @course.id) %> &gt; 新建
</p>
<div class="edu-con-top user_bg_shadow bor-grey-e clearfix mb20">
<p class="ml15 color-grey3 fl">新建试卷</p>
<%= link_to "返回", exercise_index_path(:course_id => @course.id), :class => "fr font-12 color-grey mr15 mt5" %>
</div>
<%= render :partial => "exercise/edu_edit_form", :locals =>{:is_edit => false} %>
</div>

View File

@ -0,0 +1,2 @@
$("#set_exercise_public_<%= @exercise.id %>").remove();
$("#exercise_public_icon_<%= @exercise.id %>").remove();

View File

@ -0,0 +1,378 @@
<style>
.magic-radio + label:before, .magic-checkbox_show + label:before{
width: 16px;
height: 16px;
}
</style>
<div class="edu-class-container edu-position">
<p class="mb10 font-14">
<i class="fa fa-map-marker mr5 color-grey"></i>
<%= link_to @course.name, course_path(@course) %> &gt; <%= link_to "试卷列表", exercise_index_path(:course_id => @course.id) %> &gt; #<%= get_ex_index(@exercise, @course, @is_teacher) + 1 %>
</p>
<div class="edu-con-top user_bg_shadow bor-grey-e clearfix mb20">
<p class="ml15 fl color-grey3">
<i class="fa fa-lock mr5 color-grey"></i>
<%= @exercise.exercise_name %>
</p>
<%= link_to "返回", student_exercise_list_exercise_path(@exercise), :class => "fr font-12 mr15 mt3 color-grey" %>
</div>
<div class="user_bg_shadow bor-grey-e clearfix">
<% edit_mode = @is_new && @is_teacher %>
<div id="homework_publish_setting">
<!--发布设置-->
<div>
<div class="<%= edit_mode ? 'none' : '' %>" id="show_exercise_setting">
<div class="bor-bottom-greyE pt10 pb10 pr10">
<div class="clearfix mb15">
<p class="ml15 fl font-16 mt5">发布设置</p>
<% if @is_teacher %>
<a href="javascript:void(0);" class="white-btn orange-btn fr mr15 mt15" title="编辑" onclick="show_ex_edit_setting();">编辑</a>
<% end %>
</div>
<div class="ml30 mr30">
<div class="clearfix">
<ul>
<li class="clearfix mb15 edu-position pl30">
<label class="panel-form-label fl mr10">发布时间</label>
<input type="text" class="disabled-bg fl task-form-15 task-height-40 panel-box-sizing" value="<%= format_time @exercise.publish_time %>" disabled>
<div class="popup_tip_box fontGrey2" style="right:-15px; top:0px; width:405px;">
<em></em>
<span></span>
<p>发布之前,学生不会收到试卷</p>
</div>
</li>
<li class="clearfix mb15 edu-position pl30">
<label class=" panel-form-label fl mr10">截止时间</label>
<input type="text" class="disabled-bg fl task-form-15 task-height-40 panel-box-sizing" id="show_end_time" value="<%= format_time @exercise.end_time %>" disabled>
<div class="cl"></div>
</li>
<!--<li class="clearfix mb15 edu-position pl30">-->
<!--<label class=" panel-form-label fl mr10">结束时间</label>-->
<!--<input type="text" class="disabled-bg fl task-form-15 task-height-40 panel-box-sizing" id="show_archive_time" value="" disabled="">-->
<!--<div class="popup_tip_box fontGrey2" style="right:-15px; top:0px;width:405px;">-->
<!--<em></em>-->
<!--<span></span>-->
<!--<p>结束之后,系统自动归档试卷</p>-->
<!--</div>-->
<!--</li>-->
</ul>
</div>
</div>
</div>
<div class="bor-bottom-greyE pt10 pb10 pr10">
<div class="clearfix mb15">
<p class="ml15 fl font-16 mt10">答题设置</p>
</div>
<div class="ml30 mr30" style="padding-bottom:20px;">
<div class="clearfix">
<ul>
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">答题时长</label>-->
<!--<input type="text" value="<%#= @exercise.time.to_i == -1 ? '' : @exercise.time %>" disabled class="fl task-form-15 task-height-40 panel-box-sizing disabled-bg">-->
<!--<label class="fl mt8 ml5">分钟</label>-->
<!--<div class="popup_tip_box fontGrey2" style="right:-15px; top:0px;width:405px;">-->
<!--<em></em>-->
<!--<span></span>-->
<!--<p>答题时长不填写,则表示不限时长</p>-->
<!--<p>学生答题时间即使没有超过答题时长的限制</p>-->
<!--<p>但是已到截止时间点,则系统自动为正在答题的学生提交试卷</p>-->
<!--</div>-->
<!--</li>-->
<li class="clearfix mb20 edu-position pl30">
<label class="panel-form-label fl mr10">答题显示</label>
<input class="magic-checkbox fl mt5 magic-checkbox_show" id="dt_1" disabled type="checkbox" <%= @exercise.question_random == 1 ? 'checked' : '' %>>
<label class="fl" for="dt_1">题目顺序随机打乱</label>
<span class="fl color-grey mt5">(选中则学生答题时,题目顺序按照题型随机显示)</span>
<div class="cl"></div>
<input class="magic-checkbox fl mt5 magic-checkbox_show" id="dt_2" disabled type="checkbox" <%= @exercise.choice_random == 1 ? 'checked' : '' %>>
<label class="fl" for="dt_2" style="margin-left: 11%;">选项顺序随机打乱</label>
<span class="fl color-grey mt5">(选中则学生答题时,选项顺序随机显示)</span>
</li>
</ul>
<!--<ul>-->
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">补交答题</label>-->
<!--<input id="edit_allow_late_1" disabled="" class="magic-radio fl" type="radio" name="homework_allow_late" value="1">-->
<!--<label for="edit_allow_late_1" class="fl mr30">允许</label>-->
<!--<input id="edit_allow_late_0" disabled="" class="magic-radio fl" type="radio" name="homework_allow_late" value="0" checked="">-->
<!--<label for="edit_allow_late_0" class="fl">禁止</label>-->
<!--<div class="popup_tip_box fontGrey2" style="right:-15px; top:0px;width:405px;">-->
<!--<em></em>-->
<!--<span></span>-->
<!--<p>允许补交,则在补交截止日期之前,未答题的学生可以补交答题</p>-->
<!--<p>但是在发布截止日期~补交截止时间内才答题的学生,将被扣迟交分</p>-->
<!--</div>-->
<!--</li>-->
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">&nbsp;</label>-->
<!--<label class="mt8 fl mr10">截止时间</label>-->
<!--<input type="text" value="10" class="fl task-form-15 task-height-40 panel-box-sizing disabled-bg" disabled="" placeholder="5">-->
<!--</li>-->
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">&nbsp;</label>-->
<!--<label class="mt8 fl mr10">迟交扣分</label>-->
<!--<input type="text" value="10" class="fl task-form-15 task-height-40 panel-box-sizing disabled-bg" disabled="" placeholder="5">-->
<!--</li>-->
<!--</ul>-->
</div>
</div>
</div>
<div class="bor-bottom-greyE pt10 pb10 pr10">
<div class="clearfix mb15">
<p class="ml15 fl font-16 mt10">公开设置</p>
</div>
<div class="ml30 mr30 mb15">
<div class="clearfix">
<ul>
<li class="clearfix">
<label class="panel-form-label fl mr10">&nbsp;</label>
<input class="magic-checkbox fl mt5 magic-checkbox_show" type="checkbox" disabled <%= @exercise.score_open ? 'checked' : '' %>>
<label class="fl">公开成绩</label>
<span class="fl color-grey">(选中则在截止时间之后对班级学生公开所有成员的成绩,否则不公开)</span>
</li>
<li class="clearfix">
<label class="panel-form-label fl mr10">&nbsp;</label>
<input class="magic-checkbox fl mt5 magic-checkbox_show" type="checkbox" disabled <%= @exercise.answer_open ? 'checked' : '' %>>
<label class="fl">公开答案</label>
<span class="fl color-grey">(选中则在截止时间之后对班级学生公开试卷题目的答案,否则不公开)</span>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="<%= edit_mode ? '' : 'none' %>" id="edit_exercise_setting">
<%= form_tag(ex_setting_exercise_path(@exercise), :method => "post", :id => 'exercise_setting_form') do |f| %>
<div class="bor-bottom-greyE pt10 pb10 pr10">
<div class="clearfix mb15">
<p class="ml15 fl font-16 mt5">发布设置</p>
</div>
<div class="ml30 mr30">
<div class="clearfix">
<ul>
<li class="clearfix mb15 edu-position pl30">
<label class="panel-form-label fl mr10">发布时间</label>
<input type="text" name="exercise_publish_time" readonly value="<%= format_time @exercise.publish_time %>" <%= @exercise.try(:exercise_status) > 1 ? 'disabled' : '' %> class="fl task-form-15 task-height-40 panel-box-sizing <%= @exercise.try(:exercise_status) > 1 ? 'disabled-bg' : '' %>" placeholder="请选择发布时间">
<span class="color-orange fl ml20 mt5 none" id="exercise_publish_time_notice"><i class="fa fa-exclamation-circle mr5 color-orange"></i></span>
<div class="popup_tip_box fontGrey2" style="right:-15px; top:0px; width:405px;">
<em></em>
<span></span>
<p>发布之前,学生不会收到试卷</p>
</div>
</li>
<li class="clearfix mb15 edu-position pl30">
<label class="panel-form-label fl mr10">截止时间</label>
<input type="text" name="exercise_end_time" readonly value="<%= format_time @exercise.end_time %>" <%= @exercise.try(:exercise_status) == 3 ? 'disabled' : '' %> class="fl task-form-15 task-height-40 panel-box-sizing <%= @exercise.try(:exercise_status) == 3 ? 'disabled-bg' : '' %>" placeholder="请选择截止时间">
<span class="color-orange fl ml20 mt5 none" id="exercise_end_time_notice">
<i class="fa fa-exclamation-circle mr5 color-orange"></i>
</span>
<span class="color-orange fl mt5 none">不能早于发布时间</span>
</li>
<!--<li class="clearfix mb15 edu-position pl30">-->
<!--<label class=" panel-form-label fl mr10">结束时间</label>-->
<!--<input type="text" name="homework_archive_time" readonly="" value="" class=" fl task-form-15 task-height-40 panel-box-sizing" placeholder="请选择结束时间">-->
<!--<span class="color-orange fl ml20 mt5 none" id="homework_archive_time_notice"><i class="fa fa-exclamation-circle mr5 color-orange"></i></span>-->
<!--<div class="popup_tip_box fontGrey2" style="right:-15px; top:0px;width:405px;">-->
<!--<em></em>-->
<!--<span></span>-->
<!--<p>结束之后,系统自动归档试卷</p>-->
<!--</div>-->
<!--</li>-->
</ul>
</div>
</div>
</div>
<div class="bor-bottom-greyE pt10 pb10 pr10">
<div class="clearfix mb15">
<p class="ml15 fl font-16 mt10">答题设置</p>
</div>
<div class="ml30 mr30" style="padding-bottom:20px;">
<div class="clearfix">
<ul>
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">答题时长</label>-->
<!--<input type="text" name="time" <%#= @exercise.try(:exercise_status) == 3 ? 'disabled' : '' %> value="<%#= @exercise.time.to_i == -1 ? '' : @exercise.time %>" class="fl task-form-15 task-height-40 panel-box-sizing">-->
<!--<label class="fl mt8 ml5">分钟</label>-->
<!--<div class="popup_tip_box fontGrey2" style="right:-15px; top:0px;width:405px;">-->
<!--<em></em>-->
<!--<span></span>-->
<!--<p>答题时长不填写,则表示不限时长</p>-->
<!--<p>学生答题时间即使没有超过答题时长的限制</p>-->
<!--<p>但是已到截止时间点,则系统自动为正在答题的学生提交试卷</p>-->
<!--</div>-->
<!--</li>-->
<li class="clearfix mb20 edu-position pl30">
<label class="panel-form-label fl mr10">答题显示</label>
<input name="question_random" <%= @exercise.try(:exercise_status) == 3 ? 'disabled' : '' %> class="magic-checkbox fl mt5 magic-checkbox_show" id="dt_3" type="checkbox" <%= @exercise.question_random == 1 ? 'checked' : '' %>>
<label class="fl" for="dt_3">题目顺序随机打乱</label>
<span class="fl color-grey mt5">(选中则学生答题时,题目顺序按照题型随机显示)</span>
<div class="cl"></div>
<input name="choice_random" <%= @exercise.try(:exercise_status) == 3 ? 'disabled' : '' %> class="magic-checkbox fl mt5 magic-checkbox_show" id="dt_4" type="checkbox" <%= @exercise.choice_random == 1 ? 'checked' : '' %>>
<label class="fl" for="dt_4" style="margin-left: 11%;">选项顺序随机打乱</label>
<span class="fl color-grey mt5">(选中则学生答题时,选项顺序随机显示)</span>
</li>
</ul>
<!--<ul>-->
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">补交答题</label>-->
<!--<input id="edit_allow_late_2" class="magic-radio fl" type="radio" name="homework_allow_late_1" value="1">-->
<!--<label for="edit_allow_late_2" class="fl mr30 mt3">允许</label>-->
<!--<input id="edit_allow_late_3" class="magic-radio fl" type="radio" name="homework_allow_late_1" value="0" checked="">-->
<!--<label for="edit_allow_late_3" class="fl mt3">禁止</label>-->
<!--<div class="popup_tip_box fontGrey2" style="right:-15px; top:0px;width:405px;">-->
<!--<em></em>-->
<!--<span></span>-->
<!--<p>允许补交,则在补交截止日期之前,未答题的学生可以补交答题</p>-->
<!--<p>但是在发布截止日期~补交截止时间内才答题的学生,将被扣迟交分</p>-->
<!--</div>-->
<!--</li>-->
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">&nbsp;</label>-->
<!--<label class="mt8 fl mr10">截止时间</label>-->
<!--<input type="text" value="10" class="fl task-form-15 task-height-40 panel-box-sizing" placeholder="5">-->
<!--</li>-->
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">&nbsp;</label>-->
<!--<label class="mt8 fl mr10">迟交扣分</label>-->
<!--<input type="text" value="10" class="fl task-form-15 task-height-40 panel-box-sizing" placeholder="5">-->
<!--</li>-->
<!--</ul>-->
</div>
</div>
</div>
<div class="pt10 pb10 pr10">
<div class="clearfix mb15">
<p class="ml15 fl font-16 mt10">公开设置</p>
</div>
<div class="ml30 mr30">
<div class="clearfix">
<ul>
<li class="clearfix">
<label class="panel-form-label fl mr10">&nbsp;</label>
<input name="score_open" class="magic-checkbox fl magic-checkbox_show" type="checkbox" id="public_scroe" <%= @exercise.score_open ? 'checked' : '' %>>
<label class="fl" for="public_scroe" style="top:0px">公开成绩</label>
<span class="fl color-grey">(选中则在截止时间之后对班级学生公开所有成员的成绩,否则不公开)</span>
</li>
<li class="clearfix">
<label class="panel-form-label fl mr10">&nbsp;</label>
<input name="answer_open" class="magic-checkbox fl magic-checkbox_show" type="checkbox" id="public_answer" <%= @exercise.answer_open ? 'checked' : '' %>>
<label class="fl" for="public_answer" style="top:0px">公开答案</label>
<span class="fl color-grey">(选中则在截止时间之后对班级学生公开试卷题目的答案,否则不公开)</span>
</li>
</ul>
</div>
</div>
</div>
<% end %>
</div>
</div>
<!--主观题评分设置-->
<!--<div class="bor-bottom-greyE pt10 pb10 pr10">-->
<!--<div class="none" id="show_late_setting">-->
<!--<div class="clearfix mb15">-->
<!--<p class="ml15 fl font-16 mt10">主观题评分设置</p>-->
<!--</div>-->
<!--<div class="ml30 mr30" style="padding-bottom:20px;">-->
<!--<div class="clearfix">-->
<!--<ul>-->
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">助教评分</label>-->
<!--<input class="magic-radio fl mt5 magic-checkbox_show" id="zg_1" name="zg[]_1" disabled="" type="radio" checked="">-->
<!--<label class="fl" for="zg_1">普通模式</label>-->
<!--<span class="fl color-grey mt5">(选中则取各助教最终评分的平均分)</span>-->
<!--<div class="cl"></div>-->
<!--<input class="magic-radio fl mt5 magic-checkbox_show" id="zg_2" name="zg[]_1" disabled="" type="radio">-->
<!--<label class="fl" for="zg_2" style="margin-left: 11%;">复审模式</label>-->
<!--<span class="fl color-grey mt5">(选中则只取最终次的助教评分)</span>-->
<!--</li>-->
<!--</ul>-->
<!--<ul>-->
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">最终成绩</label>-->
<!--<div class="popup_tip_box fontGrey2" style="right:-15px; top:0px;width:405px;">-->
<!--<em></em>-->
<!--<span></span>-->
<!--<p>计算说明</p>-->
<!--<p class="mb10">教师评分*其百分比+助教评分+其百分比+迟交扣分</p>-->
<!--<p>注意</p>-->
<!--<p>非零百分比的评分选项,在没有评分记录的情况下,其百分比平摊到另外</p><p>的评分选项上。例如教师评分60% + 助教评分40% 学生A没有得到</p><p>教师评分则最终成绩将按照助教评分100% 进行计算 </p>-->
<!--</div>-->
<!--</li>-->
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">&nbsp;</label>-->
<!--<label class="mt8 fl mr10">教师评分</label>-->
<!--<input type="text" value="10" class="fl task-form-15 task-height-40 panel-box-sizing disabled-bg" disabled="" placeholder="5">-->
<!--</li>-->
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">&nbsp;</label>-->
<!--<label class="mt8 fl mr10">助教评分</label>-->
<!--<input type="text" value="10" class="fl task-form-15 task-height-40 panel-box-sizing disabled-bg" disabled="" placeholder="5">-->
<!--</li>-->
<!--</ul>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--<div class="" id="edit_late_setting">-->
<!--<div class="clearfix mb15">-->
<!--<p class="ml15 fl font-16 mt10">主观题评分设置</p>-->
<!--</div>-->
<!--<div class="ml30 mr30" style="padding-bottom:20px;">-->
<!--<div class="clearfix">-->
<!--<ul>-->
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">助教评分</label>-->
<!--<input class="magic-radio fl mt5 magic-checkbox_show" id="zg_3" name="zg[]_2" type="radio" checked="">-->
<!--<label class="fl" for="zg_3">普通模式</label>-->
<!--<span class="fl color-grey mt5">(选中则取各助教最终评分的平均分)</span>-->
<!--<div class="cl"></div>-->
<!--<input class="magic-radio fl mt5 magic-checkbox_show" id="zg_4" name="zg[]_2" type="radio" checked="">-->
<!--<label class="fl" for="zg_4" style="margin-left: 11%;">复审模式</label>-->
<!--<span class="fl color-grey mt5">(选中则只取最终次的助教评分)</span>-->
<!--</li>-->
<!--</ul>-->
<!--<ul>-->
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">最终成绩</label>-->
<!--<div class="popup_tip_box fontGrey2" style="right:-15px; top:0px;width:405px;">-->
<!--<em></em>-->
<!--<span></span>-->
<!--<p>计算说明</p>-->
<!--<p class="mb10">教师评分*其百分比+助教评分*其百分比-迟交扣分</p>-->
<!--<p>注意</p>-->
<!--<p>非零百分比的评分选项,在没有评分记录的情况下,其百分比平摊到另外</p><p>的评分选项上。例如教师评分60% + 助教评分40% 学生A没有得到</p><p>教师评分则最终成绩将按照助教评分100% 进行计算 </p>-->
<!--</div>-->
<!--</li>-->
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">&nbsp;</label>-->
<!--<label class="mt8 fl mr10">教师评分</label>-->
<!--<input type="text" value="10" class="fl task-form-15 task-height-40 panel-box-sizing" placeholder="5">-->
<!--</li>-->
<!--<li class="clearfix mb20 edu-position pl30">-->
<!--<label class="panel-form-label fl mr10">&nbsp;</label>-->
<!--<label class="mt8 fl mr10">助教评分</label>-->
<!--<input type="text" value="10" class="fl task-form-15 task-height-40 panel-box-sizing" placeholder="5">-->
<!--</li>-->
<!--</ul>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<div class="clearfix mt15 mb15 mr15 pr10 <%= edit_mode ? '' : 'none' %>" id="exam_setting_submit_block">
<a href="javascript:void(0);" onclick="ex_setting_form_submit();" class="task-btn task-btn-blue fr">保存</a>
<a href="javascript:void(0);" onclick="s_op_confirm_box('<%= student_exercise_list_exercise_path(@exercise) %>', '修改的内容将全部丢失<br/>是否确认取消保存')" class="task-btn fr mr10">取消</a>
</div>
</div>
</div>
</div>

View File

@ -1,10 +1,10 @@
<%= stylesheet_link_tag 'polls', :media => 'all' %>
<% if @is_teacher %>
<%= render :partial => 'exercise_teacher', :locals =>{:exercise =>@exercise, :exercise_questions => @exercise_questions} %>
<%= render :partial => 'exercise_teacher' %>
<% else %>
<% if @can_edit_excercise %>
<%=render :partial => 'exercise_student', :locals => {:exercise =>@exercise, :exercise_questions => @exercise_questions,:exercise_user => @exercise_user} %>
<% else %>
<%=render :partial => 'exercise_student_result', :locals => {:exercise =>@exercise, :exercise_questions => @exercise_questions,:exercise_user => @exercise_user,:user=>User.current} %>
<% end %>
<%# if @can_edit_excercise %>
<%=render :partial => 'exercise_student' %>
<%# else %>
<%#=render :partial => 'exercise_student_result', :locals => {:user=>User.current} %>
<%# end %>
<% end %>

View File

@ -1,126 +1,117 @@
<script type="text/javascript">
function clear_searchbox(){
if($('#student_user_name').val() != ""){
$('#student_user_name').val('');
SearchByName_ex();
}
}
$(function(){
$("#RSide").removeAttr("id");
$("#homework_page_right").css("min-height",$("#courseLSide").height()-47);
$("#Container").css("width","1000px");
});
function show_or_hide_info(){
$("#homeworkInformation").toggle();
$("#homework_info_hidden").toggle();
$("#homework_info_show").toggle();
}
$(function(){
/*$("#homework_info_hidden").click(function(){
$("#homeworkInformation").hide();
$("#homework_info_hidden").hide();
$("#homework_info_show").show();
});
$("#homework_info_show").click(function(){
$("#homework_info_show").hide();
$("#homeworkInformation").show();
$("#homework_info_hidden").show();
});*/
if($("#homework_description").height() > 54) {
$("#homeworkDetailShow").show();
}
$("#homeworkDetailShow").click(function(){
$("#homeworkDetail").toggleClass("max_h54");
$("#homeworkDetailShow").hide();
$("#homeworkDetailHide").show();
});
$("#homeworkDetailHide").click(function(){
$("#homeworkDetail").toggleClass("max_h54");
$("#homeworkDetailHide").hide();
$("#homeworkDetailShow").show();
});
});
</script>
<div class="homepageRight mt0 ml10">
<div class="resources" id="homework_page_right">
<div class="hworkListBanner">
<div id="menu_r" class="fl">
<ul class="menu_r">
<li>
<a href="javascript:void(0);" class="parent">
<% @all_exercises.each_with_index do |exercise,index |%>
<% if exercise.id == @exercise.id %>
<%="测验 #{@all_exercises.count - index}" %>
<% end %>
<% end%>
</a>
<ul>
<% @all_exercises.each_with_index do |exercise,index |%>
<li class="pr10">
<%= link_to "测验#{@all_exercises.count - index}#{exercise.exercise_name}",student_exercise_list_exercise_path(exercise.id,:course_id => @course.id)%>
<%#= link_to "第#{@homework_commons.count - index}次作业",student_work_index_path(:homework => homework_common.id)%>
</li>
<% end%>
</ul>
</li>
<!---level1 end--->
</ul>
<!---menu_r end--->
</div>
<!--div class="hworkInfor"><a href="javascript:void(0);" class="linkBlue">作业信息</a></div-->
<% if @is_teacher%>
<div class="fr mt10 mr5">
<%= link_to "导出成绩", student_exercise_list_exercise_path(@exercise.id,:course_id => @course.id, :format => 'xls'),:class=>'linkBlue', :id => "export_student_work"%>
</div>
<% end%>
<div class="cl"></div>
</div>
<div class="homeworkInfo mb10" id="homeworkInformation">
<div class="">
<%= link_to @exercise.exercise_name, exercise_path(@exercise), :class => 'homepagePostTitle fl hidden m_w460', :title => "#{@exercise.exercise_name}", :target => '_blank' %>
<% if @exercise.exercise_status == 1 %>
<span class="grey_homework_btn_cir ml5">未发布</span>
<% elsif @exercise.exercise_status == 2 %>
<span class="green_homework_btn_cir ml5">已发布</span>
<% elsif @exercise.exercise_status == 3 %>
<span class="grey_homework_btn_cir ml5">已截止</span>
<% end%>
<span class="fr c_grey"> <a href="javascript:void(0);" class="linkGrey2" onclick="show_or_hide_info();" id="homework_info_hidden">[ 隐藏测验信息 ]</a> </span>
<div class="cl"></div>
<div class="fontGrey2 db mb5">发布者:<%= @exercise.user.show_name %></div>
<div class="homeworkDetail upload_img break_word list_style max_h54" id="homeworkDetail">
<div id="homework_description"><%= @exercise.exercise_description.html_safe %></div>
</div>
<div id="homeworkDetailShow" class="fr" style="display:none;"><a href="javascript:void(0);" class="linkBlue">[展开]</a></div>
<div id="homeworkDetailHide" class="fr" style="display:none;"><a href="javascript:void(0);" class="linkBlue">[收起]</a></div>
<div class="cl"></div>
<div class="mt5">
<div class="fontGrey2 db fl">截止时间:<%= format_time @exercise.end_time %></div>
<% if @exercise.exercise_status == 1 %>
<div class="fontGrey2 db fl ml10">发布时间:<%= format_time @exercise.publish_time %></div>
<% end %>
<% if @exercise.end_time && @exercise.end_time.to_time.to_i > Time.now.to_i %>
<% end_time = @exercise.end_time.to_time.to_i %>
<div class="fontGrey2 db fr">提交剩余时间: <span class="c_red"><%= (end_time - Time.now.to_i) / (24*60*60) %></span> 天
<span class="c_red"><%= ((end_time - Time.now.to_i) % (24*60*60)) / (60*60)%></span> 小时
<span class="c_red"><%= (((end_time - Time.now.to_i) % (24*60*60)) % (60*60)) / 60%></span> 分</div>
<% else %>
<div class="db fr c_red">提交已截止</div>
<div class="edu-class-container edu-position">
<p class="mb10 font-14">
<i class="fa fa-map-marker mr5 color-grey"></i>
<%= link_to @course.name, course_path(@course) %> &gt; <%= link_to "试卷列表", exercise_index_path(:course_id => @course.id) %> &gt; #<%= get_ex_index(@exercise, @course, @is_teacher) + 1 %>
</p>
<div class="edu-con-top user_bg_shadow bor-grey-e clearfix mb20">
<p class="ml15 fl color-grey3">
<% unless @exercise.is_public %>
<i id="exercise_public_icon_<%= @exercise.id %>" class="fa fa-lock color-grey fl mt8 mr15 font-18"></i> <% end %>
<span><%= @exercise.exercise_name %></span>
</p>
<%= link_to "返回", exercise_index_path(:course_id => @course.id), :class => "fr font-12 mr15 mt3 color-grey" %>
<% if @is_teacher %>
<%= link_to "设置", setting_exercise_path(@exercise), :class => "fr font-12 mr15 mt3 color-grey" %>
<% else %>
<!--学生查看时显示-->
<%= link_to "查看设置", setting_exercise_path(@exercise), :class => "fr font-12 mr15 mt3 color-grey" %>
<% end %>
</div>
<div class="edu-tab clearfix mb20">
<ul id="edu-tab-nav" class="border-bottom-orange">
<li id="edu-tab-nav-2" class="new-tab-nav background-orange">
<a href="javascript:void(0);" class="tab_type">答题统计</a>
</li>
</ul>
<div id="list_count" class="user_bg_shadow bor-grey-e padding15">
<!--老师显示部分-->
<% if @is_teacher %>
<form id="exercise_user_search_form">
<li class="clearfix mb5">
<%= link_to "导出成绩", student_exercise_list_exercise_path(@exercise, :course_id => @course.id, :format => 'xls'), :id => "export_exercise_work", :class => "fr white-btn orange-btn ml10 mt8" %>
<div class="edu-find fr mr40 with20 pr">
<div class="edu-find-input">
<input type="text" class="task-form-100 panel-box-sizing" maxlength="20" placeholder="姓名、学号关键字检索" value="<%= @name %>" id="student_user_name">
<i class="fa fa-close mr5 color-grey edu-close" onclick="clear_searchbox();"></i>
</div>
<a href="javascript:void(0);" onclick="SearchByName_ex();" class="edu-open font-16 color-grey "><i class="fa fa-search"></i></a>
</div>
</li>
<input id="exercise_id" type="hidden" value="<%= @exercise.id %>">
<li class="clearfix mb5">
<span class="ml33 fl mr10 color-grey">你的评阅:</span>
<span class="fl mr25">
<a href="javascript:void(0);" id="ex_comment_no_limit" class="<%= @comment.blank? ? 'color-orange03' : '' %>">不限</a>
</span>
<input id="not_comment" class="magic-checkbox fl" type="checkbox" value="0" name="ex_comment[]" <%= !@comment.blank? && @comment.include?('0') ? 'checked' : '' %>>
<label for="not_comment" class="fl mr25" style="top: 0px;">未评<span>(<%= un_commit_num @exercise %>)</span></label>
<input id="has_comment" class="magic-checkbox fl" type="checkbox" value="1" name="ex_comment[]" <%= !@comment.blank? && @comment.include?('1') ? 'checked' : '' %>>
<label for="has_comment" class="fl mr25" style="top: 0px;">已评<span>(<%= has_commit_num @exercise %>)</span></label>
</li>
<li class="clearfix mb5">
<span class="ml33 fl mr10 color-grey">作品状态:</span>
<span class="fl mr25">
<a href="javascript:void(0);" id="ex_status_no_limit" class="<%= @status.blank? ? 'color-orange03' : '' %>">不限</a>
</span>
<input id="work_status_1" class="magic-checkbox fl" type="checkbox" value="0" name="ex_status[]" <%= !@status.blank? && @status.include?('0') ? 'checked' : '' %>>
<label for="work_status_1" class="fl mr25" style="top: 0px;">未提交<span>(<%= un_commit_num @exercise %>)</span></label>
<input id="work_status_2" class="magic-checkbox fl" type="checkbox" value="1" name="ex_status[]" <%= !@status.blank? && @status.include?('1') ? 'checked' : '' %>>
<label for="work_status_2" class="fl mr25" style="top: 0px;">已提交<span>(<%= has_commit_num @exercise %>)</span></label>
</li>
<li class="clearfix mb5">
<span class="ml33 fl mr10 color-grey">分班情况:</span>
<span class="fl mr25">
<a href="javascript:void(0);" id="ex_group_no_limit" class="<%= @group.blank? ? 'color-orange03' : '' %>">不限</a>
</span>
<% @exercise.course.course_groups.each do |group| %>
<input id="group_<%= group.id %>" class="magic-checkbox fl" type="checkbox" value="<%= group.id %>" name="ex_group[]" <%= !@group.blank? && @group.include?(group.id) ? 'checked' : '' %>>
<label for="group_<%= group.id %>" class="fl mr25" style="top: 0px;"><%= group.name %><span>(<%= group.members.count %>)</span></label>
<% end %>
<div class="cl"></div>
</div>
</div>
</div>
<input id="group_0" class="magic-checkbox fl" type="checkbox" value="0" name="ex_group[]">
<label for="group_0" class="fl mr25" style="top: 0px;">未分班<span>(<%= @no_group_count %>)</span></label>
</li>
</form>
<% elsif User.current.member_of_course?(@exercise.course) %>
<!--学生显示部分-->
<p class="clearfix">
<% ex_user = @exercise.exercise_users.where(:user_id => User.current).first %>
<% if ex_user %>
<% if ex_user.commit_status > 0 %>
<span class="edu-filter-btn edu-filter-btn-orange mb15">你已提交</span>
<%= link_to '查看答题', ex_user.commit_status == 1 ? exercise_path(@exercise,:user_id => User.current.id) : show_student_result_exercise_path(@exercise,:user_id => User.current.id), :class => "white-btn orange-btn fr" %>
<% else %>
<span class="edu-filter-btn edu-filter-btn-orange mb15">你未提交</span>
<% if @exercise.exercise_status == 2 %>
<%= link_to (ex_user.start_at.nil? ? "开始答题" : "继续答题"), exercise_path(@exercise,:user_id => User.current.id), :class => "white-btn orange-btn fr" %>
<% end %>
<% end %>
<% end %>
</p>
<p class="clearfix font-12">
<span class="fr color-grey ml10"><%= @has_commit_count %>人已交)</span>
<% if @exercise.exercise_status == 2 && @exercise.end_time > Time.now %>
<% end_time = @exercise.end_time.to_time.to_i %>
<span class="fr color-grey">答题剩余时间:<span class="color-orange03"><%= (end_time - Time.now.to_i) / (24*60*60) %></span>天<span class="color-orange03"><%= ((end_time - Time.now.to_i) % (24*60*60)) / (60*60)%></span>小时<span class="color-orange03"><%= (((end_time - Time.now.to_i) % (24*60*60)) % (60*60)) / 60%></span>分</span>
<% elsif @exercise.exercise_status == 3 %>
<span class="color-orange ml30">提交已截止</span>
<% end %>
</p>
<% end %>
<div class="hworkListContainer">
<div class="ctt2">
<div class="dis" id="exercise_student_work_list">
<%= render :partial => "exercise/student_exercise"%>
</div>
</div>
<div id="exercise_student_work_list">
<%= render :partial => "exercise/student_exercise"%>
</div>
<div class="cl"></div>
</div>
</div>
<div class="cl"></div>
</div>

View File

@ -1,2 +1,2 @@
$("#exercise_student_work_list").html("<%= escape_javascript(render :partial => 'exercise/student_exercise') %>");
$("#export_student_work").replaceWith("<%= escape_javascript( link_to "导出成绩", student_exercise_list_exercise_path(@exercise.id,:course_id => @course.id, :group => @select_group, :name => @name, :format => 'xls'),:class=>'linkBlue', :id => 'export_student_work') %>");
$("#export_exercise_work").replaceWith("<%= escape_javascript(link_to "导出成绩", student_exercise_list_exercise_path(@exercise, :course_id => @course.id, :format => 'xls'), :class => "fr white-btn orange-btn ml10 mt8", :id => "export_exercise_work") %>");

View File

@ -1,5 +1,4 @@
$("#polls_head_show").html("<%= escape_javascript(render :partial => 'show_head', :locals => {:exercise => @exercise}) %>");
$("#polls_head_edit").html("<%= escape_javascript(render :partial => 'edit_head', :locals => {:exercise => @exercise}) %>");
$("#polls_head_edit").hide();
$("#polls_head_show").show();
$("#exercise_submit").html("<%= escape_javascript(render :partial => 'exercise_submit', :locals => {:exercise => @exercise}) %>");
$("#exercise_head_show").html("<%= escape_javascript(render :partial => 'show_head') %>");
$("#exercise_head_edit").html("<%= escape_javascript(render :partial => 'edit_head') %>");
$("#exercise_head_edit").hide();
$("#exercise_head_show").show();

View File

@ -20,6 +20,4 @@ $("#poll_questions_<%= @exercise_question.id%>").html("<div id='show_poll_questi
"<%= escape_javascript(render :partial => 'edit_multi', :locals => {:exercise_question => @exercise_question}) %>" +
"<% end%>" +
"</div>");
<% current_score = get_current_score @exercise %>
$("#total_questions_score").html("<%= escape_javascript(render :partial => 'exercise/total_questions_score', :locals => {:exercise => @exercise, :current_score => current_score}) %>");
$("#exercise_submit").html("<%= escape_javascript(render :partial => 'exercise_submit', :locals => {:exercise => @exercise_question.exercise}) %>");
$("#total_questions_score").html("<%= escape_javascript(render :partial => 'exercise/total_questions_score') %>");

View File

@ -7,7 +7,7 @@
<% elsif @before_que.question_type == 3%>
$("#show_poll_questions_<%= @before_que.id %>").html("<%= escape_javascript(render :partial => 'show_single', :locals => {:exercise_question => @before_que}) %>");
<% elsif @before_que.question_type == 4%>
$("#show_poll_questions_<%= @before_que.id %>").html("<%= escape_javascript(render :partial => 'show_mulit', :locals => {:exercise_question => @before_que}) %>");
$("#show_poll_questions_<%= @before_que.id %>").html("<%= escape_javascript(render :partial => 'show_multi', :locals => {:exercise_question => @before_que}) %>");
<% end%>
<% elsif @after_que %>
$("#poll_questions_<%= @exercise_question.id%>").insertAfter($("#poll_questions_<%= @after_que.id%>"));
@ -18,7 +18,7 @@
<% elsif @after_que.question_type == 3%>
$("#show_poll_questions_<%= @after_que.id %>").html("<%= escape_javascript(render :partial => 'show_single', :locals => {:exercise_question => @after_que}) %>");
<% elsif @after_que.question_type == 4%>
$("#show_poll_questions_<%= @after_que.id %>").html("<%= escape_javascript(render :partial => 'show_mulit', :locals => {:exercise_question => @after_que}) %>");
$("#show_poll_questions_<%= @after_que.id %>").html("<%= escape_javascript(render :partial => 'show_multi', :locals => {:exercise_question => @after_que}) %>");
<% end%>
<% end %>
<% if @exercise_question.question_type == 1%>
@ -28,5 +28,5 @@
<% elsif @exercise_question.question_type == 3%>
$("#show_poll_questions_<%= @exercise_question.id %>").html("<%= escape_javascript(render :partial => 'show_single', :locals => {:exercise_question => @exercise_question}) %>");
<% elsif @exercise_question.question_type == 4%>
$("#show_poll_questions_<%= @exercise_question.id %>").html("<%= escape_javascript(render :partial => 'show_mulit', :locals => {:exercise_question => @exercise_question}) %>");
$("#show_poll_questions_<%= @exercise_question.id %>").html("<%= escape_javascript(render :partial => 'show_multi', :locals => {:exercise_question => @exercise_question}) %>");
<% end%>

View File

@ -22,6 +22,7 @@
<%= f.kindeditor :description, :editor_id => 'homework_description_editor',
:owner_id => @homework.nil? ? 0: @homework.id,
:owner_type => OwnerTypeHelper::HOMEWORKCOMMON,
:placeholder => "请在此输入您的作业描述",
:width => '90%',
:height => 200,
:minHeight=>200,

View File

@ -116,6 +116,12 @@
<span class="edu-cir-grey fl ml10 mt15"><%= count %></span>
<%#= link_to( "+", new_board_message_path(:board_id => course_board.id), :class => 'fr mr15 font-18 link-color-grey', :title => "#{l(:label_message_new)}") if User.current.logged? %>
</li>
<% count = User.current.allowed_to?(:as_teacher,@course)? @course.exercises.count : @course.exercises.where("exercise_status <> 1").count %>
<li class="clearfix" id="sy_08">
<a href="<%= exercise_index_path(:course_id => @course.id) %>" class="fl ml15 ">试卷</a>
<span class="edu-cir-grey fl ml10 mt15"><%= count %></span>
<%#= link_to( "+", new_exercise_path(:course_id => @course.id), :class => 'fr mr15 font-18 link-color-grey', :title =>"新建试卷") if is_teacher %>
</li>
<div id="group_children_list">
<%= render :partial => 'layouts/group_children_list', :locals => {:is_teacher => is_teacher} %>
</div>

View File

@ -48,6 +48,9 @@
<div id="ajax-indicator" style="display:none;">
<span>载入中...</span>
</div>
<div id="ajax-notice" style="display: none; text-align: center; bottom: 200px; left: 50%; margin-left: -70px; background: #a1a1a1; width: 140px; height: 80px; position: absolute; z-index: 999999;">
<p id="ajax_notice_p" style="text-align: center; color: #fff; font-size: 18px; padding-top: 26px;">分数已保存</p>
</div>
<div id="ajax-modal" style="display:none;"></div>
</body>
</html>

View File

@ -33,15 +33,14 @@
<% if User.current.logged? %>
<p class="fr font-16">
<% if User.current.admin? || User.current.allowed_to?(:as_teacher, @course) || User.current == @topic.author %>
<a href="javascript:void(0);" onclick="delete_confirm_box_3('<%= delete_board_message_path(@topic.board_id, @topic) %>', '确定要删除该帖子吗?')" class="mr10" data-tip-down="删除"><i class="fa fa-trash-o"></i></a>
<a href="javascript:void(0);" class="mr10" data-tip-down="发送" onclick="show_send(<%= @topic.id %>, <%= User.current.id %>, 'message');"><i class="fa fa-send-o"></i></a>
<% if User.current.admin? || User.current.allowed_to?(:as_teacher, @course) %>
<a href="<%= sticky_topic_board_message_path(@topic.board_id, @topic) %>" class="mr10" data-tip-down="<%= @topic.sticky == 1 ? '取消置顶' : '置顶' %>"><i class="fa <%= @topic.sticky == 1 ? 'fa-arrow-circle-o-down' : 'fa-arrow-circle-o-up' %>"></i></a>
<% end %>
<a href="javascript:void(0);" class="mr10" data-tip-down="发送" onclick="show_send(<%= @topic.id %>, <%= User.current.id %>, 'message');"><i class="fa fa-send-o"></i></a>
<% if User.current.admin? || User.current.allowed_to?(:as_teacher, @course) || User.current == @topic.author %>
<a href="<%= edit_board_message_path(@topic.board_id, @topic) %>" class="mr10" data-tip-down="编辑"><i class="fa fa-pencil"></i></a>
<% end %>
<% if User.current.admin? || User.current.allowed_to?(:as_teacher, @course) %>
<a href="<%= sticky_topic_board_message_path(@topic.board_id, @topic) %>" class="mr10" data-tip-down="<%= @topic.sticky == 1 ? '取消置顶' : '置顶' %>"><i class="fa <%= @topic.sticky == 1 ? 'fa-arrow-circle-o-down' : 'fa-arrow-circle-o-up' %>"></i></a>
<a href="javascript:void(0);" onclick="delete_confirm_box_3('<%= delete_board_message_path(@topic.board_id, @topic) %>', '确定要删除该帖子吗?')" class="mr10" data-tip-down="删除"><i class="fa fa-trash-o"></i></a>
<% end %>
</p>
<% end %>

View File

@ -28,7 +28,7 @@
<%= my_score.nil? ? "--" : format("%.1f",my_score.score)%>
</td>
<td>
<%= link_to @homework.homework_detail_manual.comment_status == 3 ? '评阅' : '查看', student_work_path(student_work), :class => 'link-color-blue' %>
<%= link_to @homework.homework_detail_manual.comment_status == 3 ? '评阅' : '查看', student_work_path(student_work), :class => 'link-color-blue', :target => "_blank" %>
</td>
<% end%>
</tr>

View File

@ -226,7 +226,7 @@
<% end %>
<div class="edu-find fr mr40 with20 pr">
<div class="edu-find-input">
<input type="text" class="task-form-100 panel-box-sizing" placeholder="姓名、学号关键字检索" value="<%= @name %>" id="course_student_name"/>
<input type="text" class="task-form-100 panel-box-sizing" maxlength="20" placeholder="姓名、学号关键字检索" value="<%= @name %>" id="course_student_name"/>
<span class="edu-close" style="top:1px;" onclick="$('#course_student_name').val('');SearchByName_1();" data-tip-down="关闭">×</span>
<!--<i class="fa fa-close mr5 color-grey edu-close" onclick="$('#course_student_name').val('');SearchByName_1();"></i>-->
</div>

View File

@ -1,6 +1,6 @@
<!-- 此界面只用来新建匿评作业作品 -->
<% content_for :header_tags do %>
<%= import_ke(enable_at: true, prettify: false, init_activity: false) %>
<%= import_ke(enable_at: false, prettify: false, init_activity: false) %>
<% end %>
<script type="text/javascript">

View File

@ -86,11 +86,15 @@
<i class="fa fa-bars color-grey-b"></i>
<ul class="homepagePostSettiongText">
<li><a href="javascript:void(0)" onclick="show_send(<%= activity.id %>, <%= User.current.id %>, 'message');" class="postOptionLink">发&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;送</a></li>
<li><a href="<%= sticky_topic_board_message_path(activity.board_id, activity, :is_board => true) %>" class="postOptionLink"><%= activity.sticky == 1 ? '取消置顶' : '置&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;顶'.html_safe %></a></li>
<li><a href="<%= edit_board_message_path(activity.board_id, activity) %>" class="postOptionLink">编&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;辑</a></li>
<li>
<a href="javascript:void(0);" onclick="delete_confirm_box_3('<%= delete_board_message_path(activity.board_id, activity) %>', '确定要删除该帖子吗?')" class="postOptionLink">删&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;除</a>
</li>
<% if User.current.admin? || User.current.allowed_to?(:as_teacher, @course) %>
<li><a href="<%= sticky_topic_board_message_path(activity.board_id, activity, :is_board => true) %>" class="postOptionLink"><%= activity.sticky == 1 ? '取消置顶' : '置&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;顶'.html_safe %></a></li>
<% end %>
<% if User.current.admin? || User.current.allowed_to?(:as_teacher, @course) || User.current == activity.author %>
<li><a href="<%= edit_board_message_path(activity.board_id, activity) %>" class="postOptionLink">编&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;辑</a></li>
<li>
<a href="javascript:void(0);" onclick="delete_confirm_box_3('<%= delete_board_message_path(activity.board_id, activity) %>', '确定要删除该帖子吗?')" class="postOptionLink">删&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;除</a>
</li>
<% end %>
</ul>
</li>
</ul>

View File

@ -532,10 +532,13 @@ RedmineApp::Application.routes.draw do
post 'create_exercise_question'
post 'commit_answer'
get 'commit_exercise'
post 'update_question_num'
get 'update_question_num'
post 'send_to_course'
get 'get_student_uncomplete_question'
post 'edit_question_score'
get 'setting'
post 'ex_setting'
get 'set_public'
end
collection do #生成路径为 /exercise/方法名
@ -548,7 +551,18 @@ RedmineApp::Application.routes.draw do
end
end
resources :homework_common, :except => [:show]do
resources :exercise_question do
member do
end
collection do
end
end
resources :homework_common, :except => [:show]do
member do
get 'start_anonymous_comment'
get 'stop_anonymous_comment'

View File

@ -0,0 +1,7 @@
class AddNewColumnToExercises < ActiveRecord::Migration
def change
add_column :exercises, :is_public, :boolean, :default => false
add_column :exercises, :score_open, :boolean, :default => true
add_column :exercises, :answer_open, :boolean, :default => true
end
end

View File

@ -12,7 +12,7 @@ namespace :exercise_publish do
answer = get_user_answer(question, user)
standard_answer = get_user_standard_answer(question, user)
unless answer.empty?
# 问答题有多个答案
# 填空题有多个答案
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?
@ -39,6 +39,9 @@ namespace :exercise_publish do
exercises.each do |exercise|
exercise.update_column('exercise_status', 2)
course = exercise.course
course.student.each do |student|
ExerciseUser.create(:user_id => student.student_id, :exercise_id => exercise.id, :commit_status => 0)
end
course.members.each do |m|
exercise.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => false, :status => 2)
end
@ -48,7 +51,6 @@ namespace :exercise_publish do
end
task :end => :environment do
include ExerciseHelper
exercises = Exercise.where("end_time <=? and exercise_status = 2",Time.now)
exercises.each do |exercise|
course = exercise.course
@ -56,12 +58,12 @@ namespace :exercise_publish do
course.student.each do |student|
exercise_user = ExerciseUser.where("user_id =? and exercise_id=?", student.student_id, exercise.id).first
if exercise_user
exercise_user = ExerciseUser.create(:user_id => student.student_id, :exercise_id => exercise.id, :start_at => exercise.end_time, :status => true,:score=>0)
else
exercise_user.update_column('commit_status', 1)
if exercise_user.commit_status == 0 && !exercise_user.start_at.nil?
exercise_user.update_attributes(:commit_status => 1, :end_at => Time.now)
end
s_score = calculate_student_score(exercise, student.student)
exercise_user.update_attributes(:objective_score => s_score, :score => (s_score + (exercise_user.subjective_score && exercise_user.subjective_score > 0 ? exercise_user.subjective_score : 0)))
end
s_score = calculate_student_score(exercise, student.student)
exercise_user.update_attributes(:objective_score => s_score, :score => (s_score + (exercise_user.subjective_score > 0 ? exercise_user.subjective_score : 0)))
end
end
end

View File

@ -945,6 +945,111 @@ function SearchByName_1()
});
}
$(function(){
$("#ex_comment_no_limit").live('click', function(){
if(!$(this).hasClass("color-orange03")){
$(this).addClass("color-orange03");
$("input[name='ex_comment[]']").attr("checked", false);
$.ajax({
url: '/exercise/'+$("#exercise_id").val()+'/student_exercise_list?name='+$("#student_user_name").val(),
type: 'get',
data: $("#exercise_user_search_form").serialize(),
remote: true,
success: function(data){
}
});
}
});
$("input[name='ex_comment[]']").live('click', function(){
if($("input[name='ex_comment[]']:checked").length == 2 || $("input[name='ex_comment[]']:checked").length == 0){
$("input[name='ex_comment[]']:checked").attr("checked", false);
$("#ex_comment_no_limit").addClass("color-orange03");
} else{
$("#ex_comment_no_limit").removeClass("color-orange03");
}
$.ajax({
url: '/exercise/'+$("#exercise_id").val()+'/student_exercise_list?name='+$("#student_user_name").val(),
type: 'get',
data: $("#exercise_user_search_form").serialize(),
remote: true,
success: function(data){
}
});
});
$("#ex_status_no_limit").live('click', function(){
if(!$(this).hasClass("color-orange03")){
$(this).addClass("color-orange03");
$("input[name='ex_status[]']").attr("checked", false);
$.ajax({
url: '/exercise/'+$("#exercise_id").val()+'/student_exercise_list?name='+$("#student_user_name").val(),
type: 'get',
data: $("#exercise_user_search_form").serialize(),
remote: true,
success: function(data){
}
});
}
});
$("input[name='ex_status[]']").live('click', function(){
if($("input[name='ex_status[]']:checked").length == 2 || $("input[name='ex_status[]']:checked").length == 0){
$("input[name='ex_status[]']:checked").attr("checked", false);
$("#ex_status_no_limit").addClass("color-orange03");
} else{
$("#ex_status_no_limit").removeClass("color-orange03");
}
$.ajax({
url: '/exercise/'+$("#exercise_id").val()+'/student_exercise_list?name='+$("#student_user_name").val(),
type: 'get',
data: $("#exercise_user_search_form").serialize(),
remote: true,
success: function(data){
}
});
});
$("#ex_group_no_limit").live('click', function(){
if(!$(this).hasClass("color-orange03")){
$(this).addClass("color-orange03");
$("input[name='ex_group[]']").attr("checked", false);
$.ajax({
url: '/exercise/'+$("#exercise_id").val()+'/student_exercise_list?name='+$("#student_user_name").val(),
type: 'get',
data: $("#exercise_user_search_form").serialize(),
remote: true,
success: function(data){
}
});
}
});
$("input[name='ex_group[]']").live('click', function(){
if($("input[name='ex_group[]']:checked").length == $("input[name='ex_group[]']").length || $("input[name='ex_group[]']:checked").length == 0){
$("input[name='ex_group[]']:checked").attr("checked", false);
$("#ex_group_no_limit").addClass("color-orange03");
} else{
$("#ex_group_no_limit").removeClass("color-orange03");
}
$.ajax({
url: '/exercise/'+$("#exercise_id").val()+'/student_exercise_list?name='+$("#student_user_name").val(),
type: 'get',
data: $("#exercise_user_search_form").serialize(),
remote: true,
success: function(data){
}
});
});
});
function SearchByName_ex()
{
$.ajax({
url: '/exercise/'+$("#exercise_id").val()+'/student_exercise_list?name='+$("#student_user_name").val(),
type: 'get',
data: $("#exercise_user_search_form").serialize(),
remote: true,
success: function(data){
}
});
}
function choose_course(user_id, hw_id) {
$.ajax({
type: 'get',

View File

@ -562,3 +562,178 @@ function delete_students(type, id, group_id){
return;
}
}
function show_ex_edit_setting(){
$("#show_exercise_setting").hide();
$("#edit_exercise_setting").show();
$("#exam_setting_submit_block").show();
$("input[name='exercise_publish_time']").datetimepicker({
allowBlank:true,
lang:'ch',
format:'Y-m-d H:i',
validateOnBlur:false,
onSelectDate:function() {
if($.trim($("input[name='exercise_end_time']").val()) == ""){
var date = new Date(Date.parse($("input[name='exercise_publish_time']").val().replace(/-/g, "/")));
$("input[name='exercise_end_time']").val(formate_time(new Date(date.setDate(date.getDate()+14))));
}
// if($.trim($("input[name='homework_archive_time']").val()) == ""){
// var date = new Date(Date.parse($("input[name='homework_end_time']").val().replace(/-/g, "/")));
// $("input[name='homework_archive_time']").val(formate_time(new Date(date.setMonth(date.getMonth()+1))));
// }
},
onSelectTime:function() {
if($.trim($("input[name='exercise_end_time']").val()) == ""){
var date = new Date(Date.parse($("input[name='exercise_publish_time']").val().replace(/-/g, "/")));
$("input[name='exercise_end_time']").val(formate_time(new Date(date.setDate(date.getDate()+14))));
}
// if($.trim($("input[name='homework_archive_time']").val()) == ""){
// var date = new Date(Date.parse($("input[name='homework_end_time']").val().replace(/-/g, "/")));
// $("input[name='homework_archive_time']").val(formate_time(new Date(date.setMonth(date.getMonth()+1))));
// }
}
});
$("input[name='exercise_end_time']").datetimepicker({
allowBlank:true,
lang:'ch',
format:'Y-m-d H:i',
validateOnBlur:false,
// onSelectDate:function() {
// if($.trim($("input[name='homework_archive_time']").val()) == ""){
// var date = new Date(Date.parse($("input[name='homework_end_time']").val().replace(/-/g, "/")));
// $("input[name='homework_archive_time']").val(formate_time(new Date(date.setMonth(date.getMonth()+1))));
// }
// },
// onSelectTime:function() {
// if($.trim($("input[name='homework_archive_time']").val()) == ""){
// var date = new Date(Date.parse($("input[name='homework_end_time']").val().replace(/-/g, "/")));
// $("input[name='homework_archive_time']").val(formate_time(new Date(date.setMonth(date.getMonth()+1))));
// }
// }
});
}
function ex_setting_form_submit(){
var myDate = new Date();
var result = true;
if($("input[name='exercise_publish_time']").prop("disabled")==false && $.trim($("input[name='exercise_publish_time']").val()) != ""){
var publish_time = Date.parse($("input[name='exercise_publish_time']").val());
if(publish_time < myDate){
$("#exercise_publish_time_notice").html("<i class='fa fa-exclamation-circle mr5 color-orange'></i>发布时间应晚于当前时间").show();
result = false;
} else{
$("#exercise_publish_time_notice").hide();
}
if($.trim($("input[name='exercise_end_time']").val()) == ""){
$("#exercise_end_time_notice").html("<i class='fa fa-exclamation-circle mr5 color-orange'></i>截止时间不能为空").show();
result = false;
}
}
if($("input[name='exercise_end_time']").prop("disabled")==false && $.trim($("input[name='exercise_end_time']").val()) != ""){
if($.trim($("input[name='exercise_publish_time']").val()) == ""){
$("#exercise_publish_time").val(formate_time(myDate));
}
var publish_time = Date.parse($("input[name='exercise_publish_time']").val());
var end_time = Date.parse($("input[name='exercise_end_time']").val());
if(end_time <= publish_time){
$("#exercise_end_time_notice").html("<i class='fa fa-exclamation-circle mr5 color-orange'></i>截止时间应晚于发布时间").show();
result = false;
} else if(end_time <= myDate) {
$("#exercise_end_time_notice").html("<i class='fa fa-exclamation-circle mr5 color-orange'></i>截止时间应晚于当前时间").show();
result = false;
} else{
$("#exercise_end_time_notice").hide();
}
}
if(result){
$("#exercise_setting_form").submit();
}
}
//添加标题时确定按钮
function add_ex_question(doc,quest_type)
{
var title = $.trim($("#poll_questions_title").val());
var score = $.trim($("#question_score").val());
var standard_ans = $.trim($("#exercise_choice_" + quest_type).val());
if(title.length == 0 || score.length == 0){
notice_box("题目标题/分数不能为空");
doc.one('click', function(){
add_ex_question($(this),quest_type);
});
}else if(!/^[1-9][0-9]*$/.test(score)) {
notice_box("分数必须是非零开头的数字");
doc.one('click', function(){
add_ex_question($(this),quest_type);
});
}else if(quest_type !=3 && quest_type !=4 && standard_ans.length == 0) {
notice_box("标准答案不能为空");
doc.one('click', function(){
add_ex_question($(this),quest_type);
});
}else{
doc.parent().parent().parent().parent().submit();
}
}
function ex_head_submit(doc){
var title = $.trim($("#exercise_name").val());
if(title.length == 0){
notice_box("试卷标题不能为空");
} else {
doc.parent().parent().submit();
}
}
function ex_head_cancel(){
$("#exercise_head_edit").hide();
$("#exercise_head_show").show();
}
function exQuestionEdit(question_id){
var forms = $("form.new_exercise_question");
if($.trim($("#insert_new_poll_question_"+question_id).html()) == "") {
if(forms.length > 0){
notice_box("请先保存正在编辑的题目再编辑。");
} else{
$("#show_poll_questions_"+question_id).hide();
$("#edit_poll_questions_"+question_id).show();
$("#poll_questions_title_"+question_id).focus();
}
}
}
//修改标题时确定按钮
function edit_poll_question(doc,id,quest_type)
{
var title = $.trim($("#poll_questions_title_" + id).val());
var score = $.trim($("#poll_question_score_"+ id).val());
var standard_ans = $.trim($("#exercise_choice_" + id).val());
if(title.length == 0 || score.length == 0){
notice_box("题目标题/分数不能为空");
}else if(!/^[1-9][0-9]*$/.test(score)) {
notice_box("分数必须是非零开头的数字");
}else if(quest_type !=3 && quest_type !=4 && standard_ans.length == 0) {
notice_box("标准答案不能为空");
}else if(quest_type ==3) {
var div = $("#poll_answers_" + id);
var candiate_answer = $(".candiate_answer",div);
if(candiate_answer.length > 0) {
for(i=0;i<candiate_answer.length;i++) {
if(i<candiate_answer.length-1 && $.trim($(candiate_answer[i]).val()) == "") {
continue;
} else if(i == (candiate_answer.length-1) && $.trim($(candiate_answer[i]).val()) == "") {
notice_box("参考答案不能为空");
} else if($.trim($(candiate_answer[i]).val()) != ""){
doc.parent().parent().parent().submit();
break;
}
}
} else{
notice_box("参考答案不能为空");
}
}else{
doc.parent().parent().parent().submit();}
}

View File

@ -1,333 +1,333 @@
/* Focused windows */
.overlay_mac_os_x {
background-color: #85BBEF;
filter:alpha(opacity=60);
-moz-opacity: 0.6;
opacity: 0.6;
}
.mac_os_x_nw {
background: transparent url(mac_os_x/TL_Main.png) no-repeat 0 0;
width:24px;
height:30px;
}
.mac_os_x_n {
background: transparent url(mac_os_x/T_Main.png) repeat-x 0 0;
height:30px;
}
.mac_os_x_ne {
background: transparent url(mac_os_x/TR_Main.png) no-repeat 0 0;
width:31px;
height:30px;
}
.mac_os_x_w {
background: transparent url(mac_os_x/L_Main.png) repeat-y top left;
width:16px;
}
.mac_os_x_e {
background: transparent url(mac_os_x/R_Main.png) repeat-y top right;
width:16px;
}
.mac_os_x_sw {
background: transparent url(mac_os_x/BL_Main.png) no-repeat 0 0;
width:31px;
height:40px;
}
.mac_os_x_s {
background: transparent url(mac_os_x/B_Main.png) repeat-x 0 0;
height:40px;
}
.mac_os_x_se, .mac_os_x_sizer {
background: transparent url(mac_os_x/BR_Main.png) no-repeat 0 0;
width:31px;
height:40px;
}
.mac_os_x_sizer {
cursor:se-resize;
}
.mac_os_x_close {
width: 19px;
height: 19px;
background: transparent url(mac_os_x/close.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:25px;
cursor:pointer;
z-index:1000;
}
.mac_os_x_minimize {
width: 19px;
height: 19px;
background: transparent url(mac_os_x/minimize.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:45px;
cursor:pointer;
z-index:1000;
}
.mac_os_x_maximize {
width: 19px;
height: 19px;
background: transparent url(mac_os_x/maximize.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:65px;
cursor:pointer;
z-index:1000;
}
.mac_os_x_title {
float:left;
height:14px;
font-family: Tahoma, Arial, sans-serif;
font-size:12px;
text-align:center;
margin-top:8px;
width:100%;
color:#000;
}
.mac_os_x_content {
overflow:auto;
color: #222;
font-family: Tahoma, Arial, sans-serif;
font-size: 10px;
background:#FFF;
}
.mac_os_x_s .status_bar {
padding-bottom:24px;
}
/* FOR IE */
* html .mac_os_x_nw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/TL_Main.png", sizingMethod="crop");
}
* html .mac_os_x_n {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/T_Main.png", sizingMethod="scale");
}
* html .mac_os_x_ne {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/TR_Main.png", sizingMethod="crop");
}
* html .mac_os_x_w {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/L_Main.png", sizingMethod="scale");
}
* html .mac_os_x_e {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/R_Main.png", sizingMethod="scale");
}
* html .mac_os_x_sw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/BL_Main.png", sizingMethod="crop");
}
* html .mac_os_x_s {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/B_Main.png", sizingMethod="scale");
}
* html .mac_os_x_se {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/BR_Main.png", sizingMethod="crop");
}
* html .mac_os_x_sizer {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/BR_Main.png", sizingMethod="crop");
}
/* Focused windows */
.overlay_blur_os_x {
background-color: #85BBEF;
filter:alpha(opacity=60);
-moz-opacity: 0.6;
opacity: 0.6;
}
.blur_os_x_nw {
background: transparent url(mac_os_x/TL.png) no-repeat 0 0;
width:24px;
height:30px;
}
.blur_os_x_n {
background: transparent url(mac_os_x/T.png) repeat-x 0 0;
height:30px;
}
.blur_os_x_ne {
background: transparent url(mac_os_x/TR.png) no-repeat 0 0;
width:31px;
height:30px;
}
.blur_os_x_w {
background: transparent url(mac_os_x/L.png) repeat-y top left;
width:16px;
}
.blur_os_x_e {
background: transparent url(mac_os_x/R.png) repeat-y top right;
width:16px;
}
.blur_os_x_sw {
background: transparent url(mac_os_x/BL.png) no-repeat 0 0;
width:31px;
height:40px;
}
.blur_os_x_s {
background: transparent url(mac_os_x/B.png) repeat-x 0 0;
height:40px;
}
.blur_os_x_se, .blur_os_x_sizer {
background: transparent url(mac_os_x/BR.png) no-repeat 0 0;
width:31px;
height:40px;
}
.blur_os_x_sizer {
cursor:se-resize;
}
.blur_os_x_close {
width: 19px;
height: 19px;
background: transparent url(mac_os_x/close.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:25px;
cursor:pointer;
z-index:1000;
}
.blur_os_x_minimize {
width: 19px;
height: 19px;
background: transparent url(mac_os_x/minimize.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:45px;
cursor:pointer;
z-index:1000;
}
.blur_os_x_maximize {
width: 19px;
height: 19px;
background: transparent url(mac_os_x/maximize.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:65px;
cursor:pointer;
z-index:1000;
}
.blur_os_x_title {
float:left;
height:14px;
font-family: Tahoma, Arial, sans-serif;
font-size:12px;
text-align:center;
margin-top:8px;
width:100%;
color:#000;
}
.blur_os_x_content {
overflow:auto;
color: #222;
font-family: Tahoma, Arial, sans-serif;
font-size: 10px;
background:#FFF;
}
.blur_os_x_s .status_bar {
padding-bottom:24px;
}
/* FOR IE */
* html .blur_os_x_nw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/TL.png", sizingMethod="crop");
}
* html .blur_os_x_n {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/T.png", sizingMethod="scale");
}
* html .blur_os_x_ne {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/TR.png", sizingMethod="crop");
}
* html .blur_os_x_w {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/L.png", sizingMethod="scale");
}
* html .blur_os_x_e {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/R.png", sizingMethod="scale");
}
* html .blur_os_x_sw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/BL.png", sizingMethod="crop");
}
* html .blur_os_x_s {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/B.png", sizingMethod="scale");
}
* html .blur_os_x_se {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/BR.png", sizingMethod="crop");
}
* html .blur_os_x_sizer {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/BR.png", sizingMethod="crop");
}
/* Focused windows */
.overlay_mac_os_x {
background-color: #85BBEF;
filter:alpha(opacity=60);
-moz-opacity: 0.6;
opacity: 0.6;
}
.mac_os_x_nw {
background: transparent url(mac_os_x/TL_Main.png) no-repeat 0 0;
width:24px;
height:30px;
}
.mac_os_x_n {
background: transparent url(mac_os_x/T_Main.png) repeat-x 0 0;
height:30px;
}
.mac_os_x_ne {
background: transparent url(mac_os_x/TR_Main.png) no-repeat 0 0;
width:31px;
height:30px;
}
.mac_os_x_w {
background: transparent url(mac_os_x/L_Main.png) repeat-y top left;
width:16px;
}
.mac_os_x_e {
background: transparent url(mac_os_x/R_Main.png) repeat-y top right;
width:16px;
}
.mac_os_x_sw {
background: transparent url(mac_os_x/BL_Main.png) no-repeat 0 0;
width:31px;
height:40px;
}
.mac_os_x_s {
background: transparent url(mac_os_x/B_Main.png) repeat-x 0 0;
height:40px;
}
.mac_os_x_se, .mac_os_x_sizer {
background: transparent url(mac_os_x/BR_Main.png) no-repeat 0 0;
width:31px;
height:40px;
}
.mac_os_x_sizer {
cursor:se-resize;
}
.mac_os_x_close {
width: 19px;
height: 19px;
background: transparent url(mac_os_x/close.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:25px;
cursor:pointer;
z-index:1000;
}
.mac_os_x_minimize {
width: 19px;
height: 19px;
background: transparent url(mac_os_x/minimize.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:45px;
cursor:pointer;
z-index:1000;
}
.mac_os_x_maximize {
width: 19px;
height: 19px;
background: transparent url(mac_os_x/maximize.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:65px;
cursor:pointer;
z-index:1000;
}
.mac_os_x_title {
float:left;
height:14px;
font-family: Tahoma, Arial, sans-serif;
font-size:12px;
text-align:center;
margin-top:8px;
width:100%;
color:#000;
}
.mac_os_x_content {
overflow:auto;
color: #222;
font-family: Tahoma, Arial, sans-serif;
font-size: 10px;
background:#FFF;
}
.mac_os_x_s .status_bar {
padding-bottom:24px;
}
/* FOR IE */
* html .mac_os_x_nw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/TL_Main.png", sizingMethod="crop");
}
* html .mac_os_x_n {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/T_Main.png", sizingMethod="scale");
}
* html .mac_os_x_ne {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/TR_Main.png", sizingMethod="crop");
}
* html .mac_os_x_w {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/L_Main.png", sizingMethod="scale");
}
* html .mac_os_x_e {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/R_Main.png", sizingMethod="scale");
}
* html .mac_os_x_sw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/BL_Main.png", sizingMethod="crop");
}
* html .mac_os_x_s {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/B_Main.png", sizingMethod="scale");
}
* html .mac_os_x_se {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/BR_Main.png", sizingMethod="crop");
}
* html .mac_os_x_sizer {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/BR_Main.png", sizingMethod="crop");
}
/* Focused windows */
.overlay_blur_os_x {
background-color: #85BBEF;
filter:alpha(opacity=60);
-moz-opacity: 0.6;
opacity: 0.6;
}
.blur_os_x_nw {
background: transparent url(mac_os_x/TL.png) no-repeat 0 0;
width:24px;
height:30px;
}
.blur_os_x_n {
background: transparent url(mac_os_x/T.png) repeat-x 0 0;
height:30px;
}
.blur_os_x_ne {
background: transparent url(mac_os_x/TR.png) no-repeat 0 0;
width:31px;
height:30px;
}
.blur_os_x_w {
background: transparent url(mac_os_x/L.png) repeat-y top left;
width:16px;
}
.blur_os_x_e {
background: transparent url(mac_os_x/R.png) repeat-y top right;
width:16px;
}
.blur_os_x_sw {
background: transparent url(mac_os_x/BL.png) no-repeat 0 0;
width:31px;
height:40px;
}
.blur_os_x_s {
background: transparent url(mac_os_x/B.png) repeat-x 0 0;
height:40px;
}
.blur_os_x_se, .blur_os_x_sizer {
background: transparent url(mac_os_x/BR.png) no-repeat 0 0;
width:31px;
height:40px;
}
.blur_os_x_sizer {
cursor:se-resize;
}
.blur_os_x_close {
width: 19px;
height: 19px;
background: transparent url(mac_os_x/close.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:25px;
cursor:pointer;
z-index:1000;
}
.blur_os_x_minimize {
width: 19px;
height: 19px;
background: transparent url(mac_os_x/minimize.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:45px;
cursor:pointer;
z-index:1000;
}
.blur_os_x_maximize {
width: 19px;
height: 19px;
background: transparent url(mac_os_x/maximize.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:65px;
cursor:pointer;
z-index:1000;
}
.blur_os_x_title {
float:left;
height:14px;
font-family: Tahoma, Arial, sans-serif;
font-size:12px;
text-align:center;
margin-top:8px;
width:100%;
color:#000;
}
.blur_os_x_content {
overflow:auto;
color: #222;
font-family: Tahoma, Arial, sans-serif;
font-size: 10px;
background:#FFF;
}
.blur_os_x_s .status_bar {
padding-bottom:24px;
}
/* FOR IE */
* html .blur_os_x_nw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/TL.png", sizingMethod="crop");
}
* html .blur_os_x_n {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/T.png", sizingMethod="scale");
}
* html .blur_os_x_ne {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/TR.png", sizingMethod="crop");
}
* html .blur_os_x_w {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/L.png", sizingMethod="scale");
}
* html .blur_os_x_e {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/R.png", sizingMethod="scale");
}
* html .blur_os_x_sw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/BL.png", sizingMethod="crop");
}
* html .blur_os_x_s {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/B.png", sizingMethod="scale");
}
* html .blur_os_x_se {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/BR.png", sizingMethod="crop");
}
* html .blur_os_x_sizer {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x/BR.png", sizingMethod="crop");
}

View File

@ -1,160 +1,160 @@
.overlay_mac_os_x_dialog {
background-color: #FF7224;
filter:alpha(opacity=60);
-moz-opacity: 0.6;
opacity: 0.6;
}
.mac_os_x_dialog_nw {
background: transparent url(mac_os_x_dialog/L.png) repeat-y top left;
width:16px;
height:16px;
}
.mac_os_x_dialog_n {
background: transparent url(mac_os_x_dialog/bg.gif) repeat 0 0;
height:18px;
}
.mac_os_x_dialog_ne {
background: transparent url(mac_os_x_dialog/R.png) repeat-y top left;
width:16px;
height:16px;
}
.mac_os_x_dialog_w {
background: transparent url(mac_os_x_dialog/L.png) repeat-y top left;
width:16px;
}
.mac_os_x_dialog_e {
background: transparent url(mac_os_x_dialog/R.png) repeat-y top right;
width:16px;
}
.mac_os_x_dialog_sw {
background: transparent url(mac_os_x_dialog/BL.png) no-repeat 0 0;
width:31px;
height:40px;
}
.mac_os_x_dialog_s {
background: transparent url(mac_os_x_dialog/B.png) repeat-x 0 0;
height:40px;
}
.mac_os_x_dialog_se, .mac_os_x_dialog_sizer {
background: transparent url(mac_os_x_dialog/BR.png) no-repeat 0 0;
width:31px;
height:40px;
}
.mac_os_x_dialog_sizer {
cursor:se-resize;
}
.mac_os_x_dialog_close {
width: 19px;
height: 19px;
background: transparent url(mac_os_x_dialog/close.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:25px;
cursor:pointer;
z-index:1000;
}
.mac_os_x_dialog_minimize {
width: 19px;
height: 19px;
background: transparent url(mac_os_x_dialog/minimize.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:45px;
cursor:pointer;
z-index:1000;
}
.mac_os_x_dialog_maximize {
width: 19px;
height: 19px;
background: transparent url(mac_os_x_dialog/maximize.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:65px;
cursor:pointer;
z-index:1000;
}
.mac_os_x_dialog_title {
float:left;
height:14px;
font-family: Tahoma, Arial, sans-serif;
font-size:12px;
text-align:center;
margin-top:6px;
width:100%;
color:#000;
}
.mac_os_x_dialog_content {
overflow:auto;
color: #222;
font-family: Tahoma, Arial, sans-serif;
font-size: 10px;
background: transparent url(mac_os_x_dialog/bg.gif) repeat 0 0;
}
.mac_os_x_dialog_buttons {
text-align: center;
}
/* FOR IE */
* html .mac_os_x_dialog_nw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/L.png", sizingMethod="scale");
}
* html .mac_os_x_dialog_ne {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/R.png", sizingMethod="scale");
}
* html .mac_os_x_dialog_w {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/L.png", sizingMethod="scale");
}
* html .mac_os_x_dialog_e {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/R.png", sizingMethod="scale");
}
* html .mac_os_x_dialog_sw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/BL.png", sizingMethod="crop");
}
* html .mac_os_x_dialog_s {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/B.png", sizingMethod="scale");
}
* html .mac_os_x_dialog_se {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/BR.png", sizingMethod="crop");
}
* html .mac_os_x_dialog_sizer {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/BR.png", sizingMethod="crop");
}
.overlay_mac_os_x_dialog {
background-color: #FF7224;
filter:alpha(opacity=60);
-moz-opacity: 0.6;
opacity: 0.6;
}
.mac_os_x_dialog_nw {
background: transparent url(mac_os_x_dialog/L.png) repeat-y top left;
width:16px;
height:16px;
}
.mac_os_x_dialog_n {
background: transparent url(mac_os_x_dialog/bg.gif) repeat 0 0;
height:18px;
}
.mac_os_x_dialog_ne {
background: transparent url(mac_os_x_dialog/R.png) repeat-y top left;
width:16px;
height:16px;
}
.mac_os_x_dialog_w {
background: transparent url(mac_os_x_dialog/L.png) repeat-y top left;
width:16px;
}
.mac_os_x_dialog_e {
background: transparent url(mac_os_x_dialog/R.png) repeat-y top right;
width:16px;
}
.mac_os_x_dialog_sw {
background: transparent url(mac_os_x_dialog/BL.png) no-repeat 0 0;
width:31px;
height:40px;
}
.mac_os_x_dialog_s {
background: transparent url(mac_os_x_dialog/B.png) repeat-x 0 0;
height:40px;
}
.mac_os_x_dialog_se, .mac_os_x_dialog_sizer {
background: transparent url(mac_os_x_dialog/BR.png) no-repeat 0 0;
width:31px;
height:40px;
}
.mac_os_x_dialog_sizer {
cursor:se-resize;
}
.mac_os_x_dialog_close {
width: 19px;
height: 19px;
background: transparent url(mac_os_x_dialog/close.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:25px;
cursor:pointer;
z-index:1000;
}
.mac_os_x_dialog_minimize {
width: 19px;
height: 19px;
background: transparent url(mac_os_x_dialog/minimize.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:45px;
cursor:pointer;
z-index:1000;
}
.mac_os_x_dialog_maximize {
width: 19px;
height: 19px;
background: transparent url(mac_os_x_dialog/maximize.gif) no-repeat 0 0;
position:absolute;
top:12px;
left:65px;
cursor:pointer;
z-index:1000;
}
.mac_os_x_dialog_title {
float:left;
height:14px;
font-family: Tahoma, Arial, sans-serif;
font-size:12px;
text-align:center;
margin-top:6px;
width:100%;
color:#000;
}
.mac_os_x_dialog_content {
overflow:auto;
color: #222;
font-family: Tahoma, Arial, sans-serif;
font-size: 10px;
background: transparent url(mac_os_x_dialog/bg.gif) repeat 0 0;
}
.mac_os_x_dialog_buttons {
text-align: center;
}
/* FOR IE */
* html .mac_os_x_dialog_nw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/L.png", sizingMethod="scale");
}
* html .mac_os_x_dialog_ne {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/R.png", sizingMethod="scale");
}
* html .mac_os_x_dialog_w {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/L.png", sizingMethod="scale");
}
* html .mac_os_x_dialog_e {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/R.png", sizingMethod="scale");
}
* html .mac_os_x_dialog_sw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/BL.png", sizingMethod="crop");
}
* html .mac_os_x_dialog_s {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/B.png", sizingMethod="scale");
}
* html .mac_os_x_dialog_se {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/BR.png", sizingMethod="crop");
}
* html .mac_os_x_dialog_sizer {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/mac_os_x_dialog/BR.png", sizingMethod="crop");
}

View File

@ -1,164 +1,164 @@
.overlay_nuncio img { border: none; }
.overlay_nuncio {
background-color: #666666;
}
.nuncio_nw {
width: 12px;
height: 28px;
background: url(nuncio/top_left.png) no-repeat;
}
.nuncio_n {
background: url(nuncio/top_mid.png) repeat-x;
height: 28px;
}
.nuncio_ne {
width: 21px;
height: 28px;
background: url(nuncio/top_right.png) no-repeat;
}
.nuncio_e {
width: 21px;
background: url(nuncio/center_right.png) repeat-y top right;
}
.nuncio_w {
width: 12px;
background: url(nuncio/center_left.png) repeat-y top left;
}
.nuncio_sw {
width: 12px;
height: 18px;
background: url(nuncio/bottom_left.png) no-repeat;
}
.nuncio_s {
background: url(nuncio/bottom_mid.png) repeat-x 0 0;
height: 18px;
}
.nuncio_se, .nuncio_sizer {
width: 21px;
height: 18px;
background: url(nuncio/bottom_right.png) no-repeat;
}
.nuncio_close {
width: 14px;
height: 14px;
background: url(nuncio/close.png) no-repeat;
position:absolute;
top:10px;
right:22px;
cursor:pointer;
z-index:2000;
}
.nuncio_minimize {
width: 14px;
height: 15px;
background: url(nuncio/minimize.png) no-repeat;
position:absolute;
top:10px;
right:40px;
cursor:pointer;
z-index:2000;
}
.nuncio_title {
float:left;
font-size:11px;
font-weight: bold;
font-style: italic;
color: #fff;
width: 100%
}
.nuncio_content {
background: url(nuncio/overlay.png) repeat;
overflow:auto;
color: #ddd;
font-family: Tahoma, Arial, "sans-serif";
font-size: 10px;
}
.nuncio_sizer {
cursor:se-resize;
}
.top_draggable, .bottom_draggable {
cursor:move
}
/* FOR IE */
* html .nuncio_nw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_left.png", sizingMethod="crop");
}
* html .nuncio_n {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_mid.png", sizingMethod="scale");
}
* html .nuncio_ne {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_right.png", sizingMethod="crop");
}
* html .nuncio_w {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/center_left.png", sizingMethod="scale");
}
* html .nuncio_e {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/center_right.png", sizingMethod="scale");
}
* html .nuncio_sw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_left.png", sizingMethod="crop");
}
* html .nuncio_s {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_mid.png", sizingMethod="scale");
}
* html .nuncio_se {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_right.png", sizingMethod="crop");
}
* html .nuncio_sizer {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_right.png", sizingMethod="crop");
}
* html .nuncio_close {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/close.png", sizingMethod="crop");
}
* html .nuncio_minimize {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/minimize.png", sizingMethod="crop");
}
.overlay_nuncio img { border: none; }
.overlay_nuncio {
background-color: #666666;
}
.nuncio_nw {
width: 12px;
height: 28px;
background: url(nuncio/top_left.png) no-repeat;
}
.nuncio_n {
background: url(nuncio/top_mid.png) repeat-x;
height: 28px;
}
.nuncio_ne {
width: 21px;
height: 28px;
background: url(nuncio/top_right.png) no-repeat;
}
.nuncio_e {
width: 21px;
background: url(nuncio/center_right.png) repeat-y top right;
}
.nuncio_w {
width: 12px;
background: url(nuncio/center_left.png) repeat-y top left;
}
.nuncio_sw {
width: 12px;
height: 18px;
background: url(nuncio/bottom_left.png) no-repeat;
}
.nuncio_s {
background: url(nuncio/bottom_mid.png) repeat-x 0 0;
height: 18px;
}
.nuncio_se, .nuncio_sizer {
width: 21px;
height: 18px;
background: url(nuncio/bottom_right.png) no-repeat;
}
.nuncio_close {
width: 14px;
height: 14px;
background: url(nuncio/close.png) no-repeat;
position:absolute;
top:10px;
right:22px;
cursor:pointer;
z-index:2000;
}
.nuncio_minimize {
width: 14px;
height: 15px;
background: url(nuncio/minimize.png) no-repeat;
position:absolute;
top:10px;
right:40px;
cursor:pointer;
z-index:2000;
}
.nuncio_title {
float:left;
font-size:11px;
font-weight: bold;
font-style: italic;
color: #fff;
width: 100%
}
.nuncio_content {
background: url(nuncio/overlay.png) repeat;
overflow:auto;
color: #ddd;
font-family: Tahoma, Arial, "sans-serif";
font-size: 10px;
}
.nuncio_sizer {
cursor:se-resize;
}
.top_draggable, .bottom_draggable {
cursor:move
}
/* FOR IE */
* html .nuncio_nw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_left.png", sizingMethod="crop");
}
* html .nuncio_n {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_mid.png", sizingMethod="scale");
}
* html .nuncio_ne {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/top_right.png", sizingMethod="crop");
}
* html .nuncio_w {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/center_left.png", sizingMethod="scale");
}
* html .nuncio_e {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/center_right.png", sizingMethod="scale");
}
* html .nuncio_sw {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_left.png", sizingMethod="crop");
}
* html .nuncio_s {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_mid.png", sizingMethod="scale");
}
* html .nuncio_se {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_right.png", sizingMethod="crop");
}
* html .nuncio_sizer {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/bottom_right.png", sizingMethod="crop");
}
* html .nuncio_close {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/close.png", sizingMethod="crop");
}
* html .nuncio_minimize {
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/nuncio/minimize.png", sizingMethod="crop");
}

View File

@ -1,108 +1,108 @@
.overlay_spread {
background-color: #85BBEF;
filter:alpha(opacity=60);
-moz-opacity: 0.6;
opacity: 0.6;
}
.spread_nw {
background: transparent url(spread/left-top.gif) no-repeat 0 0;
width:10px;
height:25px;
}
.spread_n {
background: transparent url(spread/top-middle.gif) repeat-x 0 0;
height:25px;
}
.spread_ne {
background: transparent url(spread/right-top.gif) no-repeat 0 0;
width:10px;
height:25px;
}
.spread_w {
background: transparent url(spread/frame-left.gif) repeat-y top left;
width:7px;
}
.spread_e {
background: transparent url(spread/frame-right.gif) repeat-y top right;
width:7px;
}
.spread_sw {
background: transparent url(spread/bottom-left-c.gif) no-repeat 0 0;
width:7px;
height:7px;
}
.spread_s {
background: transparent url(spread/bottom-middle.gif) repeat-x 0 0;
height:7px;
}
.spread_se, .spread_sizer {
background: transparent url(spread/bottom-right-c.gif) no-repeat 0 0;
width:7px;
height:7px;
}
.spread_sizer {
cursor:se-resize;
}
.spread_close {
width: 23px;
height: 23px;
background: transparent url(spread/button-close-focus.gif) no-repeat 0 0;
position:absolute;
top:0px;
right:11px;
cursor:pointer;
z-index:1000;
}
.spread_minimize {
width: 23px;
height: 23px;
background: transparent url(spread/button-min-focus.gif) no-repeat 0 0;
position:absolute;
top:0px;
right:55px;
cursor:pointer;
z-index:1000;
}
.spread_maximize {
width: 23px;
height: 23px;
background: transparent url(spread/button-max-focus.gif) no-repeat 0 0;
position:absolute;
top:0px;
right:33px;
cursor:pointer;
z-index:1000;
}
.spread_title {
float:left;
height:14px;
font-family: Tahoma, Arial, sans-serif;
font-size:14px;
font-weight:bold;
text-align:left;
margin-top:2px;
width:100%;
color:#E47211;
}
.spread_content {
overflow:auto;
color: #222;
font-family: Tahoma, Arial, sans-serif;
font-size: 10px;
background:#A9EA00;
}
.overlay_spread {
background-color: #85BBEF;
filter:alpha(opacity=60);
-moz-opacity: 0.6;
opacity: 0.6;
}
.spread_nw {
background: transparent url(spread/left-top.gif) no-repeat 0 0;
width:10px;
height:25px;
}
.spread_n {
background: transparent url(spread/top-middle.gif) repeat-x 0 0;
height:25px;
}
.spread_ne {
background: transparent url(spread/right-top.gif) no-repeat 0 0;
width:10px;
height:25px;
}
.spread_w {
background: transparent url(spread/frame-left.gif) repeat-y top left;
width:7px;
}
.spread_e {
background: transparent url(spread/frame-right.gif) repeat-y top right;
width:7px;
}
.spread_sw {
background: transparent url(spread/bottom-left-c.gif) no-repeat 0 0;
width:7px;
height:7px;
}
.spread_s {
background: transparent url(spread/bottom-middle.gif) repeat-x 0 0;
height:7px;
}
.spread_se, .spread_sizer {
background: transparent url(spread/bottom-right-c.gif) no-repeat 0 0;
width:7px;
height:7px;
}
.spread_sizer {
cursor:se-resize;
}
.spread_close {
width: 23px;
height: 23px;
background: transparent url(spread/button-close-focus.gif) no-repeat 0 0;
position:absolute;
top:0px;
right:11px;
cursor:pointer;
z-index:1000;
}
.spread_minimize {
width: 23px;
height: 23px;
background: transparent url(spread/button-min-focus.gif) no-repeat 0 0;
position:absolute;
top:0px;
right:55px;
cursor:pointer;
z-index:1000;
}
.spread_maximize {
width: 23px;
height: 23px;
background: transparent url(spread/button-max-focus.gif) no-repeat 0 0;
position:absolute;
top:0px;
right:33px;
cursor:pointer;
z-index:1000;
}
.spread_title {
float:left;
height:14px;
font-family: Tahoma, Arial, sans-serif;
font-size:14px;
font-weight:bold;
text-align:left;
margin-top:2px;
width:100%;
color:#E47211;
}
.spread_content {
overflow:auto;
color: #222;
font-family: Tahoma, Arial, sans-serif;
font-size: 10px;
background:#A9EA00;
}

View File

@ -404,3 +404,5 @@ a.uploadIcon {width:100px; height:33px;color:#ffffff;}
/*课堂改版*/
.sy_member_div:hover{background:#EFF2F7;}
.real-name:hover,.operation:hover{color: #FF9e6a!important;}
/*试卷*/
pre.exercise_que_title{font-family: '微软雅黑','宋体';white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:pre-wrap;white-space:-o-pre-wrap;word-break:normal;word-wrap: break-word;}

View File

@ -433,5 +433,5 @@ html>body #ajax-indicator-base { position: fixed; }
/*---------------------试卷----------------------*/
.question_item_con{font-weight: normal!important;border:1px solid #EEEEEE!important;color: #333!important;background: #FFFFff!important;position: relative}
.exam_operator{cursor: pointer;position: absolute;right: 15px;top: 11px;}
.question_item_con .write_answer{border:1px solid #EEEEEE;background:#EFF9FD;padding: 10px 15px;text-align:justify;}
.question_item_con .write_answer{border-top:1px solid #EEEEEE;background:#EFF9FD;padding: 10px 15px;text-align:justify;}
.add_item_part{width: auto;padding: 2px 20px;border: 1px solid #CCCCCC;border-radius: 3px;margin-left: 15px;cursor: pointer;}