Merge branch 'educoder' of http://bdgit.educoder.net/Hjqreturn/pgfqe6ch8 into educoder

openi_sso
jingquan huang 6 years ago
commit f6bbf74a52

@ -141,6 +141,7 @@ class AccountController < ApplicationController
@resubmit = "#{code}"
@agreement = Help.first
@cooperation = Cooperation.all
@url = params[:url]
@com_coop_img = CooImg.where(:img_type => 'com_coop').order("position asc")
@edu_coop_img = CooImg.where(:img_type => 'edu_coop').order("position asc")
@ -208,7 +209,7 @@ class AccountController < ApplicationController
end
def insert_suggest
content = "<p>[#{params[:question_kind]}]</p>" + params[:description]
content = "<p>[#{params[:question_kind]}]</p>" + "<p>问题页面网址:#{params[:url]}</p>" + params[:description]
PrivateMessage.create(:user_id => User.current.id, :target_id => 1, :sender_id => User.current.id, :receiver_id => 1, :content => content, :send_time => Time.now, :status => 1)
PrivateMessage.create(:user_id => 1, :target_id => User.current.id, :sender_id => User.current.id, :receiver_id => 1, :content => content, :send_time => Time.now, :status => 0)
redirect_to message_detail_user_path(User.current, :user_id => 1)

@ -16,7 +16,7 @@ class HomeworkCommonController < ApplicationController
before_filter :teacher_of_course, :only => [:new, :create, :edit, :update, :destroy, :start_anonymous_comment, :stop_anonymous_comment, :alert_anonymous_comment,
:start_evaluation_set,:set_evaluation_attr,:score_rule_set,:alert_forbidden_anonymous_comment,:alert_open_student_works,
:open_student_works,:add_to_homework_bank,:publish_notice,:end_notice,:publish_homework,:end_homework,:update_explanation,
:cancel_publish, :move_to_category]
:cancel_publish, :move_to_category,:homework_setting]
# before_filter :member_of_course, :only => [:index,:setting]
@ -282,93 +282,94 @@ class HomeworkCommonController < ApplicationController
end
def homework_setting
if @homework.homework_detail_manual.try(:comment_status) == 0 && @course.course_groups.count > 1
@homework.unified_setting = params[:unified_setting] ? true :false
end
ActiveRecord::Base.transaction do
if @homework.homework_detail_manual.try(:comment_status) == 0 && @course.course_groups.count > 1
@homework.unified_setting = params[:unified_setting] ? true :false
end
if @homework.unified_setting
params_publish_time = params[:homework_publish_time]
params_end_time = params[:homework_end_time]
# params_archive_time = params[:homework_archive_time]
min_publish_time = params_publish_time
max_end_time = params_end_time
else
# 获取最小发布时间和最大截止时间赋值给homework
params_publish_time = params[:homework_publish_time_group]
params_end_time = params[:homework_end_time_group]
# params_archive_time = params[:homework_archive_time_group]
min_publish_time = @homework.publish_time ? (format_time @homework.publish_time).to_s : ""
max_end_time = @homework.end_time ? (format_time @homework.end_time).to_s : ""
if params[:homework_end_time_group]
max_end_time = ""
params[:homework_end_time_group].each_with_index do |end_time, index|
if end_time != ""
if max_end_time == "" || end_time > max_end_time
max_end_time = end_time
if @homework.unified_setting
params_publish_time = params[:homework_publish_time]
params_end_time = params[:homework_end_time]
# params_archive_time = params[:homework_archive_time]
min_publish_time = params_publish_time
max_end_time = params_end_time
else
# 获取最小发布时间和最大截止时间赋值给homework
params_publish_time = params[:homework_publish_time_group]
params_end_time = params[:homework_end_time_group]
# params_archive_time = params[:homework_archive_time_group]
min_publish_time = @homework.publish_time ? (format_time @homework.publish_time).to_s : ""
max_end_time = @homework.end_time ? (format_time @homework.end_time).to_s : ""
if params[:homework_end_time_group]
max_end_time = ""
params[:homework_end_time_group].each_with_index do |end_time, index|
if end_time != ""
if max_end_time == "" || end_time > max_end_time
max_end_time = end_time
end
end
end
end
end
if params[:homework_publish_time_group]
params[:homework_publish_time_group].each_with_index do |publish_time, index|
if publish_time != ""
if min_publish_time == "" || publish_time < min_publish_time
min_publish_time = publish_time
if params[:homework_publish_time_group]
params[:homework_publish_time_group].each_with_index do |publish_time, index|
if publish_time != ""
if min_publish_time == "" || publish_time < min_publish_time
min_publish_time = publish_time
end
end
end
end
end
end
# 不统一设置且分班数大于一则更新分组设置
if !@homework.unified_setting && @course.course_groups.count > 1
@course.course_groups.each_with_index do |group, index|
homework_group_setting = @homework.homework_group_settings.where(:course_group_id => group.id).first
unless homework_group_setting
homework_group_setting = HomeworkGroupSetting.create(:homework_common_id => @homework.id, :course_group_id => group.id, :course_id => @course.id)
# 不统一设置且分班数大于一则更新分组设置
if !@homework.unified_setting && @course.course_groups.count > 1
@course.course_groups.each_with_index do |group, index|
homework_group_setting = @homework.homework_group_settings.where(:course_group_id => group.id).first
unless homework_group_setting
homework_group_setting = HomeworkGroupSetting.create(:homework_common_id => @homework.id, :course_group_id => group.id, :course_id => @course.id)
end
end
end
group_id = []
@homework.homework_group_settings.where("publish_time is null or publish_time > '#{Time.now}'").joins(:course_group).reorder("CONVERT(course_groups.name USING gbk) COLLATE gbk_chinese_ci ASC").each_with_index do |setting, index|
if params[:homework_publish_time_group] && min_publish_time != ""
if params[:homework_publish_time_group][index] && params[:homework_publish_time_group][index] != ""
setting.update_column(:publish_time, params[:homework_publish_time_group][index])
group_id = []
@homework.homework_group_settings.where("publish_time is null or publish_time > '#{Time.now}'").joins(:course_group).reorder("CONVERT(course_groups.name USING gbk) COLLATE gbk_chinese_ci ASC").each_with_index do |setting, index|
if params[:homework_publish_time_group] && min_publish_time != ""
if params[:homework_publish_time_group][index] && params[:homework_publish_time_group][index] != ""
setting.update_column(:publish_time, params[:homework_publish_time_group][index])
end
elsif params[:homework_publish_time_group] && min_publish_time == ""
setting.update_column(:publish_time, Time.now)
group_id << setting.course_group_id
end
elsif params[:homework_publish_time_group] && min_publish_time == ""
setting.update_column(:publish_time, Time.now)
group_id << setting.course_group_id
end
end
@homework.homework_group_settings.where("end_time is null or end_time > '#{Time.now}'").joins(:course_group).reorder("CONVERT(course_groups.name USING gbk) COLLATE gbk_chinese_ci ASC").each_with_index do |setting, index|
if params[:homework_end_time_group] && max_end_time != ""
if params[:homework_end_time_group][index] && params[:homework_end_time_group][index] != ""
setting.update_column(:end_time, params[:homework_end_time_group][index])
@homework.homework_group_settings.where("end_time is null or end_time > '#{Time.now}'").joins(:course_group).reorder("CONVERT(course_groups.name USING gbk) COLLATE gbk_chinese_ci ASC").each_with_index do |setting, index|
if params[:homework_end_time_group] && max_end_time != ""
if params[:homework_end_time_group][index] && params[:homework_end_time_group][index] != ""
setting.update_column(:end_time, params[:homework_end_time_group][index])
end
elsif params[:homework_end_time_group] && max_end_time == ""
setting.update_column(:end_time, Time.at(((1.month.since.to_i)/3600.0).ceil * 3600))
end
elsif params[:homework_end_time_group] && max_end_time == ""
setting.update_column(:end_time, Time.at(((1.month.since.to_i)/3600.0).ceil * 3600))
end
# 统一设置则删除分组设置
elsif @homework.unified_setting
@homework.homework_group_settings.destroy_all
end
# 统一设置则删除分组设置
elsif @homework.unified_setting
@homework.homework_group_settings.destroy_all
end
# homework 的记录更新
# 发布时间不为空
if params_publish_time && min_publish_time != ""
@homework.publish_time = min_publish_time
@homework.end_time = max_end_time
# @homework.archive_time = params_archive_time if params_archive_time
if @homework.publish_time < Time.now and @homework_detail_manual.comment_status == 0
@homework_detail_manual.comment_status = 1
create_homework_user = 1
if @homework.course_acts.size == 0
@homework.course_acts << CourseActivity.new(:user_id => @homework.user_id,:course_id => @homework.course_id)
# homework 的记录更新
# 发布时间不为空
if params_publish_time && min_publish_time != ""
@homework.publish_time = min_publish_time
@homework.end_time = max_end_time
# @homework.archive_time = params_archive_time if params_archive_time
if @homework.publish_time < Time.now and @homework_detail_manual.comment_status == 0
@homework_detail_manual.comment_status = 1
create_homework_user = 1
if @homework.course_acts.size == 0
@homework.course_acts << CourseActivity.new(:user_id => @homework.user_id,:course_id => @homework.course_id)
end
end
end
=begin
if @homework.archive_time < Time.now && @homework_detail_manual.comment_status < 6
@homework_detail_manual.comment_status = 6
@ -376,22 +377,22 @@ class HomeworkCommonController < ApplicationController
@homework_detail_manual.comment_status = 5
end
=end
# 发布时间未设置 则按当前时间立即发布
elsif params_publish_time && min_publish_time == ""
@homework_detail_manual.comment_status = 1
@homework.publish_time = Time.now
@homework.unified_setting = 1
@homework.end_time = Time.at(((1.month.since.to_i)/3600.0).ceil * 3600)
# @homework.archive_time = Time.at(((2.months.since.to_i)/3600.0).ceil * 3600)
create_homework_user = 1
if @homework.course_acts.size == 0
@homework.course_acts << CourseActivity.new(:user_id => @homework.user_id,:course_id => @homework.course_id)
end
# 已发布的作业,只更新截止时间和结束时间
else
@homework.end_time = max_end_time if params_end_time
# @homework.archive_time = params_archive_time if params_archive_time
# 发布时间未设置 则按当前时间立即发布
elsif params_publish_time && min_publish_time == ""
@homework_detail_manual.comment_status = 1
@homework.publish_time = Time.now
@homework.unified_setting = 1
@homework.end_time = Time.at(((1.month.since.to_i)/3600.0).ceil * 3600)
# @homework.archive_time = Time.at(((2.months.since.to_i)/3600.0).ceil * 3600)
create_homework_user = 1
if @homework.course_acts.size == 0
@homework.course_acts << CourseActivity.new(:user_id => @homework.user_id,:course_id => @homework.course_id)
end
# 已发布的作业,只更新截止时间和结束时间
else
@homework.end_time = max_end_time if params_end_time
# @homework.archive_time = params_archive_time if params_archive_time
=begin
if @homework.archive_time < Time.now && @homework_detail_manual.comment_status < 6
@ -400,189 +401,190 @@ class HomeworkCommonController < ApplicationController
@homework_detail_manual.comment_status = 5
end
=end
end
end
if params[:homework_allow_late] == '1'
@homework.allow_late = true
if @homework.late_penalty != params[:homework_late_penalty].to_i
@homework.student_works.where(:work_status => 2).each do |work|
work.late_penalty = params[:homework_late_penalty].to_i
work.save
if params[:homework_allow_late] == '1'
@homework.allow_late = true
if @homework.late_penalty != params[:homework_late_penalty].to_i
@homework.student_works.where(:work_status => 2).each do |work|
work.late_penalty = params[:homework_late_penalty].to_i
work.save
end
end
@homework.late_penalty = params[:homework_late_penalty].to_i
else
@homework.allow_late = false
@homework.late_penalty = 0
end
@homework.late_penalty = params[:homework_late_penalty].to_i
else
@homework.allow_late = false
@homework.late_penalty = 0
end
anonymous_comment = @homework.anonymous_comment
absence_penalty = @homework_detail_manual.absence_penalty
appeal_penalty = @homework_detail_manual.appeal_penalty
if @homework_detail_manual.comment_status < 3
if params[:homework_anonymous_comment]
@homework.anonymous_comment = 0
@homework_detail_manual.evaluation_start = params[:homework_evaluation_start] if params[:homework_evaluation_start]
anonymous_comment = @homework.anonymous_comment
absence_penalty = @homework_detail_manual.absence_penalty
appeal_penalty = @homework_detail_manual.appeal_penalty
if @homework_detail_manual.comment_status < 3
if params[:homework_anonymous_comment]
@homework.anonymous_comment = 0
@homework_detail_manual.evaluation_start = params[:homework_evaluation_start] if params[:homework_evaluation_start]
@homework_detail_manual.evaluation_end = params[:homework_evaluation_end] if params[:homework_evaluation_end]
@homework_detail_manual.evaluation_num = params[:homework_evaluation_num] if params[:homework_evaluation_num]
@homework_detail_manual.absence_penalty = params[:homework_absence_penalty] if params[:homework_absence_penalty]
else
@homework.anonymous_comment = 1
@homework_detail_manual.evaluation_start = nil
@homework_detail_manual.evaluation_end = nil
@homework_detail_manual.evaluation_num = 0
@homework_detail_manual.absence_penalty = 0
end
else
@homework_detail_manual.evaluation_end = params[:homework_evaluation_end] if params[:homework_evaluation_end]
@homework_detail_manual.evaluation_num = params[:homework_evaluation_num] if params[:homework_evaluation_num]
@homework_detail_manual.absence_penalty = params[:homework_absence_penalty] if params[:homework_absence_penalty]
end
if anonymous_comment != @homework.anonymous_comment
@homework_detail_manual.te_proportion = 1
@homework_detail_manual.ta_proportion = 0
@homework_detail_programing.ta_proportion = 0 if @homework_detail_programing
end
if @homework_detail_manual.comment_status < 4
if @homework.anonymous_comment == 0 && params[:homework_anonymous_appeal]
@homework.anonymous_appeal = 1
@homework_detail_manual.appeal_time = params[:homework_appeal_time] if params[:homework_appeal_time]
@homework_detail_manual.appeal_penalty = params[:homework_appeal_penalty] if params[:homework_appeal_penalty]
else
@homework.anonymous_appeal = 0
@homework_detail_manual.appeal_time = nil
@homework_detail_manual.appeal_penalty = 0
end
else
@homework.anonymous_comment = 1
@homework_detail_manual.evaluation_start = nil
@homework_detail_manual.evaluation_end = nil
@homework_detail_manual.evaluation_num = 0
@homework_detail_manual.absence_penalty = 0
end
else
@homework_detail_manual.evaluation_end = params[:homework_evaluation_end] if params[:homework_evaluation_end]
@homework_detail_manual.evaluation_num = params[:homework_evaluation_num] if params[:homework_evaluation_num]
@homework_detail_manual.absence_penalty = params[:homework_absence_penalty] if params[:homework_absence_penalty]
end
if anonymous_comment != @homework.anonymous_comment
@homework_detail_manual.te_proportion = 1
@homework_detail_manual.ta_proportion = 0
@homework_detail_programing.ta_proportion = 0 if @homework_detail_programing
end
if @homework_detail_manual.comment_status < 4
if @homework.anonymous_comment == 0 && params[:homework_anonymous_appeal]
@homework.anonymous_appeal = 1
@homework_detail_manual.appeal_time = params[:homework_appeal_time] if params[:homework_appeal_time]
@homework_detail_manual.appeal_penalty = params[:homework_appeal_penalty] if params[:homework_appeal_penalty]
else
@homework.anonymous_appeal = 0
@homework_detail_manual.appeal_time = nil
@homework_detail_manual.appeal_penalty = 0
end
else
@homework_detail_manual.appeal_time = params[:homework_appeal_time] if params[:homework_appeal_time]
@homework_detail_manual.appeal_penalty = params[:homework_appeal_penalty] if params[:homework_appeal_penalty]
end
if absence_penalty != @homework_detail_manual.absence_penalty && @homework_detail_manual.comment_status >= 4
all_dis_eva = StudentWorksEvaluationDistribution.where(:student_work_id => @homework.student_works.map(&:id))
has_sw_count = all_dis_eva.select("distinct user_id").count
anon_count = all_dis_eva.count / has_sw_count
@homework.student_works.where("work_status != 0").each do |student_work|
absence_penalty_count = student_work.user.student_works_evaluation_distributions.where(:student_work_id => @homework.student_works.map(&:id)).count - student_work.user.student_works_scores.where(:student_work_id => @homework.student_works.map(&:id), :reviewer_role => 3).count
student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0
student_work.save
end
end
if appeal_penalty != @homework_detail_manual.appeal_penalty && @homework_detail_manual.comment_status >= 4
@homework.student_works.each do |student_work|
appeal_penalty_count = student_work.user.student_works_scores.where(:student_work_id => @homework.student_works.map(&:id), :appeal_status => 3).count
student_work.appeal_penalty = appeal_penalty_count > 0 ? appeal_penalty_count * @homework_detail_manual.absence_penalty : 0
student_work.save
end
end
# 助教评分模式有变更 则更新学生分数
if params[:homework_ta_mode] && @homework_detail_manual.ta_mode.to_i != params[:homework_ta_mode].to_i
@homework_detail_manual.ta_mode = params[:ta_mode].to_i
@homework_detail_manual.save
if @homework_detail_manual.ta_mode == 1
if absence_penalty != @homework_detail_manual.absence_penalty && @homework_detail_manual.comment_status >= 4
all_dis_eva = StudentWorksEvaluationDistribution.where(:student_work_id => @homework.student_works.map(&:id))
has_sw_count = all_dis_eva.select("distinct user_id").count
anon_count = all_dis_eva.count / has_sw_count
@homework.student_works.where("work_status != 0").each do |student_work|
ts_score = StudentWorksScore.find_by_sql("SELECT AVG(score) AS score FROM (SELECT * FROM (SELECT * FROM student_works_scores WHERE student_work_id = #{student_work.id} AND reviewer_role = 2 AND score IS NOT NULL ORDER BY created_at DESC) AS t GROUP BY user_id) AS a")
student_work.teaching_asistant_score = ts_score.first.score.nil? ? nil : ts_score.first.score.try(:round, 2).to_f
absence_penalty_count = student_work.user.student_works_evaluation_distributions.where(:student_work_id => @homework.student_works.map(&:id)).count - student_work.user.student_works_scores.where(:student_work_id => @homework.student_works.map(&:id), :reviewer_role => 3).count
student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0
student_work.save
end
else
@homework.student_works.where("work_status != 0").each do |student_work|
ts_score = StudentWorksScore.where("student_work_id = #{student_work.id} AND reviewer_role = 2 AND score IS NOT NULL").order("created_at DESC")
student_work.teaching_asistant_score = ts_score.first.nil? ? nil : ts_score.first.score
end
if appeal_penalty != @homework_detail_manual.appeal_penalty && @homework_detail_manual.comment_status >= 4
@homework.student_works.each do |student_work|
appeal_penalty_count = student_work.user.student_works_scores.where(:student_work_id => @homework.student_works.map(&:id), :appeal_status => 3).count
student_work.appeal_penalty = appeal_penalty_count > 0 ? appeal_penalty_count * @homework_detail_manual.absence_penalty : 0
student_work.save
end
end
end
# 最终成绩组成
if params[:homework_final_mode] && params[:homework_final_mode].to_i != @homework_detail_manual.final_mode
@homework_detail_manual.final_mode = params[:homework_final_mode].to_i
if params[:homework_final_mode].to_i == 0
@homework_detail_manual.te_proportion = params[:te_proportion]
@homework_detail_manual.ta_proportion = params[:ta_proportion]
@homework_detail_programing.ta_proportion = params[:sy_proportion] if @homework_detail_programing
@homework_detail_programing.save if @homework_detail_programing
end
@homework_detail_manual.save if @homework_detail_manual
@homework.save
@homework = HomeworkCommon.find @homework.id
@homework.student_works.where("work_status != 0").each do |student_work|
# set_final_score @homework,student_work
student_work.save
# 助教评分模式有变更 则更新学生分数
if params[:homework_ta_mode] && @homework_detail_manual.ta_mode.to_i != params[:homework_ta_mode].to_i
@homework_detail_manual.ta_mode = params[:ta_mode].to_i
@homework_detail_manual.save
if @homework_detail_manual.ta_mode == 1
@homework.student_works.where("work_status != 0").each do |student_work|
ts_score = StudentWorksScore.find_by_sql("SELECT AVG(score) AS score FROM (SELECT * FROM (SELECT * FROM student_works_scores WHERE student_work_id = #{student_work.id} AND reviewer_role = 2 AND score IS NOT NULL ORDER BY created_at DESC) AS t GROUP BY user_id) AS a")
student_work.teaching_asistant_score = ts_score.first.score.nil? ? nil : ts_score.first.score.try(:round, 2).to_f
student_work.save
end
else
@homework.student_works.where("work_status != 0").each do |student_work|
ts_score = StudentWorksScore.where("student_work_id = #{student_work.id} AND reviewer_role = 2 AND score IS NOT NULL").order("created_at DESC")
student_work.teaching_asistant_score = ts_score.first.nil? ? nil : ts_score.first.score
student_work.save
end
end
end
elsif params[:homework_final_mode] && @homework_detail_manual.final_mode == 0
if (params[:te_proportion] && params[:te_proportion].to_s != @homework_detail_manual.te_proportion.to_s) || (params[:ta_proportion] && params[:ta_proportion].to_s != @homework_detail_manual.ta_proportion.to_s) || (@homework_detail_programing && @homework_detail_programing.ta_proportion.to_s != params[:sy_proportion].to_s)
@homework_detail_manual.te_proportion = params[:te_proportion]
@homework_detail_manual.ta_proportion = params[:ta_proportion]
@homework_detail_programing.ta_proportion = params[:sy_proportion] if @homework_detail_programing
# 最终成绩组成
if params[:homework_final_mode] && params[:homework_final_mode].to_i != @homework_detail_manual.final_mode
@homework_detail_manual.final_mode = params[:homework_final_mode].to_i
if params[:homework_final_mode].to_i == 0
@homework_detail_manual.te_proportion = params[:te_proportion]
@homework_detail_manual.ta_proportion = params[:ta_proportion]
@homework_detail_programing.ta_proportion = params[:sy_proportion] if @homework_detail_programing
@homework_detail_programing.save if @homework_detail_programing
end
@homework_detail_manual.save if @homework_detail_manual
@homework_detail_programing.save if @homework_detail_programing
@homework.save
@homework = HomeworkCommon.find @homework.id
@homework.student_works.where("work_status != 0").each do |student_work|
# set_final_score @homework,student_work
student_work.save
end
elsif params[:homework_final_mode] && @homework_detail_manual.final_mode == 0
if (params[:te_proportion] && params[:te_proportion].to_s != @homework_detail_manual.te_proportion.to_s) || (params[:ta_proportion] && params[:ta_proportion].to_s != @homework_detail_manual.ta_proportion.to_s) || (@homework_detail_programing && @homework_detail_programing.ta_proportion.to_s != params[:sy_proportion].to_s)
@homework_detail_manual.te_proportion = params[:te_proportion]
@homework_detail_manual.ta_proportion = params[:ta_proportion]
@homework_detail_programing.ta_proportion = params[:sy_proportion] if @homework_detail_programing
@homework_detail_manual.save if @homework_detail_manual
@homework_detail_programing.save if @homework_detail_programing
@homework.save
@homework = HomeworkCommon.find @homework.id
@homework.student_works.where("work_status != 0").each do |student_work|
# set_final_score @homework,student_work
student_work.save
end
end
end
end
if @homework.homework_type == 4
@homework.work_efficiency = params[:work_efficiency] ? 1 : 0
if params[:eff_score] != @homework.eff_score
@homework.eff_score = params[:eff_score]
score_change = true
end
if @homework_detail_manual.answer_open_evaluation != params[:answer_open_evaluation].to_i
@homework_detail_manual.answer_open_evaluation = params[:answer_open_evaluation].to_i
score_change = true
end
if @homework_detail_manual.shixun_evaluation != params[:shixun_evaluation].to_i
@homework_detail_manual.shixun_evaluation = params[:shixun_evaluation].to_i
score_change = true
end
if params[:challenge]
score_change = true
params[:challenge].each_with_index do |challenge_id, index|
setting = @homework.homework_challenge_settings.where(:challenge_id => challenge_id).first
if setting
setting.update_attributes(:score => params[:score][index])
else
HomeworkChallengeSetting.create(:homework_common_id => @homework.id, :challenge_id => challenge_id, :shixun_id => @homework.homework_commons_shixuns.shixun_id, :score => params[:score][index])
if @homework.homework_type == 4
@homework.work_efficiency = params[:work_efficiency] ? 1 : 0
if params[:eff_score] != @homework.eff_score
@homework.eff_score = params[:eff_score]
score_change = true
end
if @homework_detail_manual.answer_open_evaluation != params[:answer_open_evaluation].to_i
@homework_detail_manual.answer_open_evaluation = params[:answer_open_evaluation].to_i
score_change = true
end
if @homework_detail_manual.shixun_evaluation != params[:shixun_evaluation].to_i
@homework_detail_manual.shixun_evaluation = params[:shixun_evaluation].to_i
score_change = true
end
if params[:challenge]
score_change = true
params[:challenge].each_with_index do |challenge_id, index|
setting = @homework.homework_challenge_settings.where(:challenge_id => challenge_id).first
if setting
setting.update_attributes(:score => params[:score][index])
else
HomeworkChallengeSetting.create(:homework_common_id => @homework.id, :challenge_id => challenge_id, :shixun_id => @homework.homework_commons_shixuns.shixun_id, :score => params[:score][index])
end
end
@homework.homework_challenge_settings.where("challenge_id not in (#{params[:challenge].join(',')})").destroy_all
end
@homework.homework_challenge_settings.where("challenge_id not in (#{params[:challenge].join(',')})").destroy_all
end
@homework.score_open = params[:homework_score_open] ? 1 : 0
@homework.save!
if score_change
homework_challenge_settings = HomeworkChallengeSetting.where(:homework_common_id => @homework.id)
@homework.student_works.where("work_status != 0").each do |student_work|
set_shixun_final_score student_work, @homework_detail_manual.answer_open_evaluation, homework_challenge_settings
@homework.score_open = params[:homework_score_open] ? 1 : 0
@homework.save!
if score_change
homework_challenge_settings = HomeworkChallengeSetting.where(:homework_common_id => @homework.id)
@homework.student_works.where("work_status != 0").each do |student_work|
set_shixun_final_score student_work, @homework_detail_manual.answer_open_evaluation, homework_challenge_settings
end
# 更新所有学生的效率分
update_student_eff_score HomeworkCommon.where(:id => @homework.id).first
end
# 更新所有学生的效率分
update_student_eff_score HomeworkCommon.where(:id => @homework.id).first
else
@homework.work_public = params[:homework_work_public] ? 1 : 0
@homework.score_open = params[:homework_score_open] ? 1 : 0
@homework.answer_public = params[:homework_answer_public] ? 1 : 0
@homework.comment_public = params[:homework_comment_public] ? 1 : 0
@homework.save!
end
else
@homework.work_public = params[:homework_work_public] ? 1 : 0
@homework.score_open = params[:homework_score_open] ? 1 : 0
@homework.answer_public = params[:homework_answer_public] ? 1 : 0
@homework.comment_public = params[:homework_comment_public] ? 1 : 0
@homework.save!
end
@homework_detail_manual.save
if create_homework_user.present?
if group_id.present? && group_id.size != 0
if group_id.size == @course.course_groups.count
create_works_tiding @homework, @course.student
@homework_detail_manual.save
if create_homework_user.present?
if group_id.present? && group_id.size != 0
if group_id.size == @course.course_groups.count
create_works_tiding @homework, @course.student
else
members = @course.members.where(:course_group_id => group_id)
create_works_tiding @homework, members
end
else
members = @course.members.where(:course_group_id => group_id)
create_works_tiding @homework, members
create_works_tiding @homework, @course.student
end
else
create_works_tiding @homework, @course.student
end
end
redirect_to student_work_index_path(:homework => @homework.id)
@ -929,60 +931,62 @@ class HomeworkCommonController < ApplicationController
end
def publish_homework
if @homework.homework_detail_manual.try(:comment_status) == 0
if params[:group_ids]
if @course.course_groups.where(:id => params[:group_ids].split(",")).count == @course.course_groups.count
@homework.homework_group_settings.destroy_all
@homework.update_attribute("unified_setting", true)
# 发消息
create_works_tiding @homework, @course.student
else
@homework.update_attribute("unified_setting", false)
@course.course_groups.each do |group|
homework_group_setting = @homework.homework_group_settings.where(:course_group_id => group.id).first
unless homework_group_setting
HomeworkGroupSetting.create(:homework_common_id => @homework.id, :course_group_id => group.id, :course_id => @course.id, :publish_time => @homework.publish_time, :end_time => @homework.end_time)
ActiveRecord::Base.transaction do
if @homework.homework_detail_manual.try(:comment_status) == 0
if params[:group_ids]
if @course.course_groups.where(:id => params[:group_ids].split(",")).count == @course.course_groups.count
@homework.homework_group_settings.destroy_all
@homework.update_attribute("unified_setting", true)
# 发消息
create_works_tiding @homework, @course.student
else
@homework.update_attribute("unified_setting", false)
@course.course_groups.each do |group|
homework_group_setting = @homework.homework_group_settings.where(:course_group_id => group.id).first
unless homework_group_setting
HomeworkGroupSetting.create(:homework_common_id => @homework.id, :course_group_id => group.id, :course_id => @course.id, :publish_time => @homework.publish_time, :end_time => @homework.end_time)
end
end
@homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(",")).update_all(:publish_time => Time.now)
@homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(","), :end_time => nil).update_all(:end_time => Time.at(((1.month.since.to_i)/3600.0).ceil * 3600))
# 发消息
members = @course.members.where(:course_group_id => params[:group_ids].split(","))
create_works_tiding @homework, members
end
@homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(",")).update_all(:publish_time => Time.now)
@homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(","), :end_time => nil).update_all(:end_time => Time.at(((1.month.since.to_i)/3600.0).ceil * 3600))
# 发消息
members = @course.members.where(:course_group_id => params[:group_ids].split(","))
create_works_tiding @homework, members
else
@homework.homework_group_settings.destroy_all
create_works_tiding @homework, @course.student
end
else
@homework.homework_group_settings.destroy_all
create_works_tiding @homework, @course.student
end
@homework.update_attribute("publish_time", Time.now)
@homework.update_attribute("publish_time", Time.now)
if @homework.end_time.nil?
@homework.update_attribute("end_time", Time.at(((1.month.since.to_i)/3600.0).ceil * 3600))
elsif HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").count > 0
@homework.update_attribute("end_time", HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").map(&:end_time).max)
end
if @homework.end_time.nil?
@homework.update_attribute("end_time", Time.at(((1.month.since.to_i)/3600.0).ceil * 3600))
elsif HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").count > 0
@homework.update_attribute("end_time", HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").map(&:end_time).max)
end
=begin
if @homework.archive_time.nil?
@homework.update_attribute("archive_time", Time.at(((2.months.since.to_i)/3600.0).ceil * 3600))
end
=end
@homework.homework_detail_manual.update_attribute('comment_status', 1)
@homework.homework_detail_manual.update_attribute('comment_status', 1)
if @homework.course_acts.size == 0
@homework.course_acts << CourseActivity.new(:user_id => @homework.user_id,:course_id => @homework.course_id)
if @homework.course_acts.size == 0
@homework.course_acts << CourseActivity.new(:user_id => @homework.user_id,:course_id => @homework.course_id)
end
else
@homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(",")).update_all(:publish_time => Time.now)
@homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(","), :end_time => nil).update_all(:end_time => Time.at(((1.month.since.to_i)/3600.0).ceil * 3600))
if HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").count > 0
@homework.update_attribute("end_time", HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").map(&:end_time).max)
end
# 发消息
members = @course.members.where(:course_group_id => params[:group_ids].split(","))
create_works_tiding @homework, members
end
else
@homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(",")).update_all(:publish_time => Time.now)
@homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(","), :end_time => nil).update_all(:end_time => Time.at(((1.month.since.to_i)/3600.0).ceil * 3600))
if HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").count > 0
@homework.update_attribute("end_time", HomeworkGroupSetting.where("homework_common_id = #{@homework.id} and end_time is not null").map(&:end_time).max)
if @homework.end_time > Time.now && @homework.homework_detail_manual.try(:comment_status) > 1
@homework.homework_detail_manual.update_attribute("comment_status", 1)
end
# 发消息
members = @course.members.where(:course_group_id => params[:group_ids].split(","))
create_works_tiding @homework, members
end
if @homework.end_time > Time.now && @homework.homework_detail_manual.try(:comment_status) > 1
@homework.homework_detail_manual.update_attribute("comment_status", 1)
end
redirect_to student_work_index_path(:homework => @homework.id)
end
@ -1032,7 +1036,8 @@ class HomeworkCommonController < ApplicationController
def end_homework
time = Time.now
student_works = @homework.student_works.where("0=1")
# if @homework.homework_detail_manual.try(:comment_status) == 1 && @homework.end_time > time
ActiveRecord::Base.transaction do
# if @homework.homework_detail_manual.try(:comment_status) == 1 && @homework.end_time > time
if params[:group_ids]
# @homework.homework_group_settings.where(:course_group_id => params[:group_id]).where("publish_time > '#{Time.now}' or publish_time is null").update_all(:publish_time => time)
@homework.homework_group_settings.where(:course_group_id => params[:group_ids].split(",")).update_all(:end_time => time)
@ -1069,7 +1074,9 @@ class HomeworkCommonController < ApplicationController
# 更新所有学生的效率分
update_student_eff_score HomeworkCommon.where(:id => @homework.id).first
end
# end
# end
end
redirect_to student_work_index_path(:homework => @homework.id)
end

@ -242,14 +242,56 @@ class SubjectsController < ApplicationController
memberships = params[:membership][:user_ids]
memberships.each do |member|
user = User.find(member)
SubjectMember.create!(:user_id => member, :subject_id => @subject.id, :role => 2)
SubjectMember.create!(:user_id => member, :subject_id => @subject.id, :role => 2,
:position => @subject.subject_members.size + 1)
end
end
end
def delete_member
member = @subject.subject_members.where(:user_id => params[:mem_id]).first
member.destroy if member
if User.current.admin?
ActiveRecord::Base.transaction do
member = @subject.subject_members.where(:id => params[:mem_id]).first
if member.present? && member.role != 1
@subject.subject_members.where("position > #{member.position}").update_all("position = position - 1")
member.destroy
end
end
else
render_403
end
end
def up_member_position
if User.current.member_of_subject?(@subject)
ActiveRecord::Base.transaction do
member = @subject.subject_members.where(:id => params[:mem_id]).first
raise "不能再上移了" if member.position == 1
up_member = @subject.subject_members.where(:position => member.position - 1).first
up_member.update_attribute(:position, member.position)
member.update_attribute(:position, member.position - 1)
end
else
render_403
end
end
def down_member_position
if User.current.member_of_subject?(@subject)
ActiveRecord::Base.transaction do
begin
member = @subject.subject_members.where(:id => params[:mem_id]).first
raise "不能再下移了" if member.position == @subject.subject_members.count
down_member = @subject.subject_members.where(:position => member.position + 1).first
down_member.update_attribute(:position, member.position)
member.update_attribute(:position, member.position + 1)
rescue Exception => e
raise ActiveRecord::Rollback
end
end
else
render_403
end
end
def statistics

@ -2559,6 +2559,15 @@ class UsersController < ApplicationController
end
end
@objects_count = @objects.size
# 用户访问自己主页的"我管理的"列表,且是第一页才显示新建入口
page = params[:page] ? params[:page].to_i : 1
@new_icon = @user == User.current && ['a_course', 'a_shixun', 'a_project', 'a_path'].include?(@type) && page == 1
# 用户进自己主页的全部列表时有个新建入口,加一个"new"view层的第一页需要shift这样翻页就没问题啦
@objects = @objects.to_a
@objects.unshift("new") if @new_icon
@objects = paginateHelper @objects, 16
respond_to do |format|

@ -66,4 +66,10 @@ class School < ActiveRecord::Base
dep = departments.where("identifier is not null").first
url = dep.present? ? "/colleges/#{dep.identifier}/statistics" : ""
end
def course_act_time
CourseActivity.find_by_sql("SELECT max(ca.updated_at) as max_update FROM course_activities ca left join courses on ca.course_id =
courses.id LEFT JOIN user_extensions ON courses.tea_id=user_extensions.user_id WHERE
user_extensions.`school_id` = #{self.id}").first.try(:max_update)
end
end

@ -2,7 +2,7 @@ class Subject < ActiveRecord::Base
#status :0 编辑中 1 审核中 2 发布
# belongs_to :user
has_many :users, :through => :subject_members
has_many :subject_members, :dependent => :destroy, :order => "subject_members.id ASC"
has_many :subject_members, :dependent => :destroy, :order => "subject_members.position asc"
has_many :career_stages, :through => :career_stage_subjects
has_many :career_stage_subjects, :dependent => :destroy

@ -65,7 +65,7 @@ class GamesService
# power判断用户是否有权限查看隐藏测试集(TPM管理员平台认证的老师花费金币查看者) -1 表示不能解锁 0 表示需要付费解锁 1表示可以看
# myshixun_manager
myshixun_manager = shixun_manager(shixun, current_user) || (current_user.is_certification_teacher && shixun.test_set_permission)
myshixun_manager = shixun_manager(shixun, current_user) || (current_user.is_certification_teacher)
power = (myshixun_manager || game.test_sets_view ) ? 1 : (shixun.test_set_permission ? 0 : -1)
# 选择题和编程题公共部分
@ -862,7 +862,7 @@ class GamesService
Rails.logger.warn("last_output is #{latest_output}")
# power判断用户是否有权限查看隐藏测试集(TPM管理员平台认证的老师花费金币查看者)
power = (shixun_manager(shixun, current_user) || (current_user.is_certification_teacher && shixun.test_set_permission)) ? 1 : (shixun.test_set_permission ? 0 : -1)
power = (shixun_manager(shixun, current_user) || (current_user.is_certification_teacher)) ? 1 : (shixun.test_set_permission ? 0 : -1)
# 测试集统计及处理
unless qurey_test_sets.blank?
check_power = (power == 1 || game.test_sets_view)

@ -1,6 +1,6 @@
<%= stylesheet_link_tag 'css/public','css/common'%>
<%= content_for(:header_tags) do %>
<%= import_ke(enable_at: false, prettify: false, init_activity: false) %>
<%= import_ke(enable_at: false, prettify: false, init_activity: false) %>
<% end %>
<div xmlns="http://www.w3.org/1999/html">
<div class="edu-back-white ml15 pt20 pb20 clearfix pl30 pr30 mb30">
@ -15,79 +15,94 @@
<div class="color-orange mt15 mb15">
<span class="mr5">*</span>
<a href="https://trustie.educoder.net/help?index=5" class="color-orange">看看帮助中心是否有你想要的答案</a></div>
<%= form_for('new_form',:url => insert_suggest_path(), :html =>{:id => "insert_suggest"}, :method => :post) do |f| %>
<div class="mt10">
<span class="mr5 color-orange font-16">*</span><span class="font-16">问题分类</span>
<div class="font-14 mt10 mb10 ml20 color-dark-grey">
<label class="mr40">
<input type="radio" value="登录注册" class="mr5 magic-radio" name="question_kind" id ="type_1" checked>
<label for="type_1" style="display: inline-block">登录注册</label>
</label>
<label class="mr40">
<input type="radio" value="信息认证" class="mr5 magic-radio" name="question_kind" id ="type_2">
<label for="type_2" style="display: inline-block">信息认证</label>
</label>
<label class="mr40">
<input type="radio" value="实训编程" class="mr5 magic-radio" name="question_kind" id ="type_3">
<label for="type_3" style="display: inline-block">实训编程</label>
</label>
<label class="mr40">
<input type="radio" value="实训课程" class="mr5 magic-radio" name="question_kind" id ="type_4">
<label for="type_4" style="display: inline-block">实训课程</label>
</label>
<label class="mr40">
<input type="radio" value="课堂" class="mr5 magic-radio" name="question_kind" id ="type_5">
<label for="type_5" style="display: inline-block">课堂</label>
</label>
<label class="mr40">
<input type="radio" value="其他" class="mr5 magic-radio" name="question_kind" id ="type_6">
<label for="type_6" style="display: inline-block">其他</label>
</label>
</div>
</div>
<div class="clearfix mt10">
<span class="mr5 color-orange font-16">*</span><span class="font-16">问题描述</span>
<div class="font-14 mt10 ml20 clearfix">
<!--<div id="hidden_div_block_1">
<%= form_for('new_form',:url => insert_suggest_path(), :html =>{:id => "insert_suggest"}, :method => :post) do |f| %>
<div class="mt10">
<span class="mr5 color-orange font-16">*</span><span class="font-16">问题分类</span>
<div class="font-14 mt10 mb10 ml20 color-dark-grey">
<label class="mr40">
<input type="radio" value="登录注册" class="mr5 magic-radio" name="question_kind" id ="type_1" checked>
<label for="type_1" style="display: inline-block">登录注册</label>
</label>
<label class="mr40">
<input type="radio" value="信息认证" class="mr5 magic-radio" name="question_kind" id ="type_2">
<label for="type_2" style="display: inline-block">信息认证</label>
</label>
<label class="mr40">
<input type="radio" value="实训编程" class="mr5 magic-radio" name="question_kind" id ="type_3">
<label for="type_3" style="display: inline-block">实训编程</label>
</label>
<label class="mr40">
<input type="radio" value="实训课程" class="mr5 magic-radio" name="question_kind" id ="type_4">
<label for="type_4" style="display: inline-block">实训课程</label>
</label>
<label class="mr40">
<input type="radio" value="课堂" class="mr5 magic-radio" name="question_kind" id ="type_5">
<label for="type_5" style="display: inline-block">课堂</label>
</label>
<label class="mr40">
<input type="radio" value="其他" class="mr5 magic-radio" name="question_kind" id ="type_6">
<label for="type_6" style="display: inline-block">其他</label>
</label>
</div>
</div>
<div class="clearfix mt10">
<span class="mr5 color-orange font-16">*</span><span class="font-16">问题页面网址</span>
<div class="font-14 mt10 ml20 clearfix">
<input type="text" class="width100 radius4" id="url_content" name ="url" value="<%= @url %>" style="height: 40px;" placeholder="反馈平台问题,请同时填写对应的问题页面链接,以便平台能够及时跟踪解决,谢谢">
</div>
<p class="color-orange ml20 mt5 undis" id="new_memo_url_notice"><i class="fa fa-exclamation-circle mr5"></i>网址不能为空</p>
</div>
<div class="clearfix mt10">
<span class="mr5 color-orange font-16">*</span><span class="font-16">问题描述</span>
<div class="font-14 mt10 ml20 clearfix">
<!--<div id="hidden_div_block_1">
<textarea style="display: none" id="hidden_textarea_1" name ="description"></textarea>
</div>
<%#= hidden_field_tag :asset_id, params[:asset_id],:required => false,:style => 'display:none' %>-->
<textarea class="width100 radius4" id="description" name ="description" style="height: 150px;" placeholder="反馈平台问题,请同时填写对应的问题页面链接,以便平台能够及时跟踪解决,谢谢"></textarea>
</div>
<p class="color-orange ml20 mt5 undis" id="new_memo_content_notice"><i class="fa fa-exclamation-circle mr5"></i>内容不能为空</p>
<!--<div class="mt10">-->
<!--<span class="font-16 ml20">联系方式</span>-->
<!--<div class="font-14 mt10 mb10 ml20 color-dark-grey">-->
<!--<input type="phone" class="font-14 pl10" style="width:89%;height: 40px" placeholder="请留下您的联系方式" name = 'phone'/>-->
<!--</div>-->
<!--</div>-->
<a href="javascript:void(0);" class="defalutSubmitbtn fl ml20 mt10" onclick="insert_suggest()">提交</a>
<% end %>
<textarea class="width100 radius4" id="description" name ="description" style="height: 150px;" placeholder="反馈平台问题,请同时填写对应的问题页面链接,以便平台能够及时跟踪解决,谢谢"></textarea>
</div>
<p class="color-orange ml20 mt5 undis" id="new_memo_content_notice"><i class="fa fa-exclamation-circle mr5"></i>内容不能为空</p>
<!--<div class="mt10">-->
<!--<span class="font-16 ml20">联系方式</span>-->
<!--<div class="font-14 mt10 mb10 ml20 color-dark-grey">-->
<!--<input type="phone" class="font-14 pl10" style="width:89%;height: 40px" placeholder="请留下您的联系方式" name = 'phone'/>-->
<!--</div>-->
<!--</div>-->
<a href="javascript:void(0);" class="defalutSubmitbtn fl ml20 mt10" onclick="insert_suggest()">提交</a>
</div>
<% end %>
</div>
</div>
</div>
<script>
/*sd_create_editor_from_data(1,null,"100%", "Issue");*/
//var suggest_ke;
/*KindEditor.ready(function(K){
$("#hidden_div_block_1").each(function(){
var params = {};
params.kindutil = K;
params.div_form = $(this);
params.placeholder = "请填写具体内容,帮助我们了解您的建议与意见";
params.textarea = $("textarea[name='description']",params.div_form);
params.height = 300;
if(params.textarea.data('init') == undefined) {
memo_content_editor = init_exercise_quetison_editor(params);
//suggest_ke = memo_content_editor;
//new_quetion_editor = params.editor;
params.textarea.data('init', 1);
//params.editor.
}
});
});*/
/*KindEditor.ready(function(K){
$("#hidden_div_block_1").each(function(){
var params = {};
params.kindutil = K;
params.div_form = $(this);
params.placeholder = "请填写具体内容,帮助我们了解您的建议与意见";
params.textarea = $("textarea[name='description']",params.div_form);
params.height = 300;
if(params.textarea.data('init') == undefined) {
memo_content_editor = init_exercise_quetison_editor(params);
//suggest_ke = memo_content_editor;
//new_quetion_editor = params.editor;
params.textarea.data('init', 1);
//params.editor.
}
});
});*/
function regexContent() {
if($("#url_content").val()==""){
$("#new_memo_url_notice").show();
return false;
}
else {
$("#new_memo_url_notice").hide();
}
// KE输入框类被添加了元素导致isEmpty方法失效
if($("#description").val()==""){
$("#new_memo_content_notice").show();

@ -27,7 +27,7 @@
<script>
$.ajax({
url:'<%= help_path() %>',
data: {index: '<%= @index %>'},
data: {index: '<%= @index %>', url: '<%= @url %>'},
type: 'post',
dataType: 'script'
})

@ -297,6 +297,7 @@
$("#test_file_name").show();
}else{
$("#challenge_shixun_update").submit();
// location.reload();
}
}
</script>

@ -1,7 +1,8 @@
$("#task_pass_page").html("<%= j( render :partial => "single_or_multiple_question_show") %>");
var html = '<a href="<%= show_choose_question_shixun_challenge_path(@challenge, :shixun_id => @shixun, :choose_id => @challenge_choose.id) %>" data-remote="true"><%= @challenge_choose.position %>.<%= @challenge_choose.category == 1 ? "单选题" : "多选题" %></a>'
$(".active").html(html);
$(".click_active.active").html(html);
if($(".add_choose_type").length == 0 && $(".click_active").length < 11){
var html_1 ='<a href="<%= new_choose_question_shixun_challenge_path(@challenge, :shixun_id => @shixun) %>" data-remote="true" data-tip-down="新增选择题" class="add_choose_type" onclick="addChooseType(this);">+</a>';
$(".active").after(html_1);
}
$(".click_active.active").after(html_1);
}
$(window).scrollTop(0);

@ -1,23 +1,25 @@
<p class="clearfix edu-back-white">
<span class="column-No">序号</span>
<span class="column-2">单位名称</span>
<span class="column-2">教师</span>
<span class="column-2">学生</span>
<span class="column-1">单位名称</span>
<span class="column-1">教师</span>
<span class="column-1">学生</span>
<span class="column-2">课堂</span>
<span class="column-2">发布实训</span>
<span class="column-2">实训报告</span>
<span class="column-2">最新课堂动态时间</span>
<span class="column-2 fr">使用详情</span>
</p>
<ul class="minH-560 edu-back-white pb20 courselist">
<% @schools.each_with_index do |school, index| %>
<li class="clearfix bor-bottom-greyE" id="major_list">
<span class="column-No major_index"><%= index + 1 %></span>
<span class="column-2"><%= school.name %></span>
<span class="column-2"><%= school.teacher_count %></span>
<span class="column-2"><%= school.student_count %></span>
<span class="column-1"><%= school.name %></span>
<span class="column-1"><%= school.teacher_count %></span>
<span class="column-1"><%= school.student_count %></span>
<span class="column-2"><%= school.course_count %></span>
<span class="column-2"><%= school.shixun_count %></span>
<span class="column-2"><%= school.shixun_report_count %></span>
<span class="column-2"><%= school.course_act_time.present? ? format_time(school.course_act_time) : "--" %></span>
<span class="column-2 fr">
<% if school.statistic_url != "" %>
<a href="<%= school.statistic_url %>" target="_blank" class="color-blue">查看</a>

@ -1,14 +1,45 @@
<p class="font-16 clearfix">教学团队</p>
<% @subject.subject_members.each do |member| %>
<% if member.user %>
<div class="teacherTeamItem clearfix df">
<a href="<%= user_path(member.user) %>" target="_blank" class="fl">
<%= image_tag(url_to_avatar(member.user), :width =>"80", :height => "80", :class => "radius", :alt=>"头像") %>
</a>
<div class="fl ml15 flex1">
<div class="teacherTeamItem clearfix">
<p class="clearfix title-line">
<a href="<%= user_path(member.user) %>" target="_blank" class="fl">
<%= image_tag(url_to_avatar(member.user), :width =>"80", :height => "80", :class => "radius", :alt=>"头像") %>
</a>
<span class="font-18 font-bd"></span>
<span class="fr">
<% if User.current.admin? && member.role != 1 %>
<a class="fl mr20 mt4" data-tip-down="删除" onclick="delete_confirm_box_2('<%= delete_member_subject_path(@subject, :mem_id => member.id) %>', '确定要删除该成员吗?');">
<img src="/images/educoder/icon/del.svg" class="fl mt4 ml4">
</a>
<% end %>
<% if User.current.member_of_subject?(@subject) && member.position > 1 %>
<a data-method="POST" class="fl ring-op-green mr25 mt7" data-remote="true" href="<%= up_member_position_subject_path(@subject, :mem_id => member.id) %>">
<img src="/images/educoder/icon/moveup.svg" data-tip-down="向上移动" class="fl mt2 ml4">
</a>
<% end %>
<% if User.current.member_of_subject?(@subject) && member.position < @subject.subject_members.size %>
<a data-method="POST" class="fl ring-op-green mr25 mt7" data-remote="true" href="<%= down_member_position_subject_path(@subject, :mem_id => member.id) %>">
<img src="/images/educoder/icon/movedown.svg" data-tip-down="向下移动" class="fl mt2 ml4">
</a>
<% end %>
</span>
</p>
<div class=" ml15">
<p class="mb10 mt5"><%= member.user.try(:show_name) %></p>
<div class="clearfix ml3">
<p class="color-grey-9 font-12 fl">
<p class="color-grey-9 font-12">
<!-- <span class="mr10"><%#= member.user.school_name %></span>-->
<span><%= member.user.identity == "学生" ? "" : member.user.identity %></span>
</p>

@ -0,0 +1 @@
$("#subject_members").html("<%= j(render :partial => 'subject_members') %>");

@ -0,0 +1 @@
$("#subject_members").html("<%= j(render :partial => 'subject_members') %>");

@ -15,6 +15,35 @@
<div class="educontent">
<!--我的课堂-->
<div class="square-list clearfix">
<% if @new_icon %>
<!--课堂新建入口-->
<div class="square-Item">
<div class="substance substancepad" >
<a href="/courses/new">
<div class="substancenenew">
<div class="leftten"></div>
<div class="topten"></div>
</div>
</a>
</div>
<div class="edu-txt-center course-bottom">
<div class="inline color-grey-6">
<span class="fl ml10 mr10 squareIconSpan substancefont">
新建课堂
</span>
</div>
</div>
</div>
<% @objects.shift %>
<% end %>
<%#= render :partial => "users/course_item", :locals => {:objects => @objects} %>
<% @objects.each do |object| %>
<% allow_visit = @show_all || object.is_public == 1 || User.current.member_of_course?(object) %>
@ -68,5 +97,37 @@
</div>
</div>
<% else %>
<%= render :partial => "welcome/no_data" %>
<div class="pr padding20-30 clearfix secondNav educontent">
<% if @user == User.current && ['a_course', 'a_shixun', 'a_project', 'a_path'].include?(@type) %>
<!--课堂新建入口-->
<div class="square-Item squarebox">
<div class="substance substancepad" >
<a href="/courses/new">
<div class="substancenenew">
<div class="leftten"></div>
<div class="topten"></div>
</div>
</a>
</div>
<div class="edu-txt-center course-bottom">
<div class="inline color-grey-6">
<span class="fl ml10 mr10 squareIconSpan substancefont">
新建课堂
</span>
</div>
</div>
</div>
<% end %>
<%= render :partial => "welcome/no_data" %>
</div>
<% end %>

@ -15,6 +15,36 @@
<div class="educontent">
<!--我的项目-->
<div class="square-list clearfix">
<% if @new_icon %>
<!--新建项目新建入口-->
<div class="square-Item">
<div class="substance substancepad" >
<a href="/projects/new">
<div class="substancenenew">
<div class="leftten"></div>
<div class="topten"></div>
</div>
</a>
</div>
<div class="edu-txt-center course-bottom">
<div class="inline color-grey-6">
<span class="fl ml10 mr10 squareIconSpan substancefont">
新建项目
</span>
</div>
</div>
</div>
<% @objects.shift %>
<% end %>
<% @objects.each do |object| %>
<% allow_visit = object.is_public || User.current.admin? || User.current.member_of?(object) %>
<div class="square-Item" onclick="open_project(<%= object.id %>, <%= allow_visit %>)" style="cursor: pointer;">
@ -67,5 +97,37 @@
</div>
</div>
<% else %>
<%= render :partial => "welcome/no_data" %>
<div class="pr padding20-30 clearfix secondNav educontent">
<% if @user == User.current && ['a_course', 'a_shixun', 'a_project', 'a_path'].include?(@type) %>
<!--实训新建入口-->
<div class="square-Item squarebox">
<div class="substance substancepad" >
<a href="/projects/new">
<div class="substancenenew">
<div class="leftten"></div>
<div class="topten"></div>
</div>
</a>
</div>
<div class="edu-txt-center course-bottom">
<div class="inline color-grey-6">
<span class="fl ml10 mr10 squareIconSpan substancefont">
新建项目
</span>
</div>
</div>
</div>
<% end %>
<%= render :partial => "welcome/no_data" %>
</div>
<% end %>

@ -34,6 +34,36 @@
<div class="educontent">
<!--我的实训-->
<div class="square-list clearfix">
<% if @new_icon %>
<!--实训新建入口-->
<div class="square-Item">
<div class="substance substancepad" >
<a href="/shixuns/new">
<div class="substancenenew">
<div class="leftten"></div>
<div class="topten"></div>
</div>
</a>
</div>
<div class="edu-txt-center course-bottom">
<div class="inline color-grey-6">
<span class="fl ml10 mr10 squareIconSpan substancefont">
新建实训
</span>
</div>
</div>
</div>
<% @objects.shift %>
<% end %>
<% @objects.each do |object| %>
<div class="square-Item">
<% if object.tag_repertoires.first.present? %>
@ -71,5 +101,36 @@
</div>
</div>
<% else %>
<div class="pr padding20-30 clearfix secondNav educontent">
<% if @user == User.current && ['a_course', 'a_shixun', 'a_project', 'a_path'].include?(@type) %>
<!--实训新建入口-->
<div class="square-Item squarebox">
<div class="substance substancepad" >
<a href="/shixuns/new">
<div class="substancenenew">
<div class="leftten"></div>
<div class="topten"></div>
</div>
</a>
</div>
<div class="edu-txt-center course-bottom">
<div class="inline color-grey-6">
<span class="fl ml10 mr10 squareIconSpan substancefont">
新建实训
</span>
</div>
</div>
</div>
<% end %>
<%= render :partial => "welcome/no_data" %>
</div>
<% end %>

@ -49,6 +49,7 @@
<div class="cl"></div>
<div class="clearfix mt10">
<div nhname='toolbar_container_<%= @target_user.id%>' class="mb10 clearfix fl"></div>
<span class="fl ml5 color-orange none font-12" id="new_message_notice_<%= @target_user.id %>">在问题反馈时,请同时发送问题发生页的网址链接,以便我们高效的为您服务</span>
<a id="new_message_submit_btn_<%= @target_user.id%>" style="display: none" href="javascript:void(0)" class="fr task-btn task-btn-orange">回复</a>
</div>

@ -22,6 +22,37 @@
<div class="educontent">
<!--我的实训路径-->
<div class="square-list clearfix">
<% if @new_icon %>
<!--实训路径新建入口-->
<div class="square-Item">
<div class="substance substancepad" >
<a href="/paths/new">
<div class="substancenenew">
<div class="leftten"></div>
<div class="topten"></div>
</div>
</a>
</div>
<div class="edu-txt-center course-bottom">
<div class="inline color-grey-6">
<span class="fl ml10 mr10 squareIconSpan substancefont">
新建实训课程
</span>
</div>
</div>
</div>
<% @objects.shift %>
<% end %>
<% @objects.each_with_index do |object, index| %>
<div class="square-Item">
<% if object.status < 2 && !User.current.member_of_subject?(object) %>
@ -56,5 +87,33 @@
</div>
</div>
<% else %>
<%= render :partial => "welcome/no_data" %>
<div class="pr padding20-30 clearfix secondNav educontent">
<% if @user == User.current && ['a_course', 'a_shixun', 'a_project', 'a_path'].include?(@type) %>
<!--实训新建入口-->
<div class="square-Item squarebox">
<div class="substance substancepad" >
<a href="/paths/new">
<div class="substancenenew">
<div class="leftten"></div>
<div class="topten"></div>
</div>
</a>
</div>
<div class="edu-txt-center course-bottom">
<div class="inline color-grey-6">
<span class="fl ml10 mr10 squareIconSpan substancefont">
新建实训课程
</span>
</div>
</div>
</div>
<% end %>
<%= render :partial => "welcome/no_data" %>
</div>
<% end %>

@ -6,7 +6,7 @@
</div>
<div class="feedback" tooltips="意见反馈">
<a target="_blank" class="color_white inline" href="<%= help_path(:index => 6) %>">
<a target="_blank" class="color_white inline" href="<%= help_path(:index => 6, :url => request.url) %>">
<i class="iconfont icon-yijianfankui color-white font-22 fl"></i>
</a>
</div>

@ -342,6 +342,8 @@ RedmineApp::Application.routes.draw do ## oauth相关
match 'add_collaborators', :via => [:get, :post]
post 'add_subject_members'
delete 'delete_member'
post 'up_member_position'
post 'down_member_position'
end
collection do

@ -0,0 +1,11 @@
class AddPositionToSubjectMembers < ActiveRecord::Migration
def change
add_column :subject_members, :position, :integer, :default => 1
Subject.all.each do |subject|
subject.subject_members.reorder("id asc").each_with_index do |member, index|
member.update_column('position', index + 1)
end
end
end
end

@ -379,6 +379,7 @@ function sd_create_editor_from_message_data(id){
params.toolbar_container = $("div[nhname='toolbar_container_" + id + "']", params.div_form);
params.cancel_btn = $("#new_message_cancel_btn_" + id);
params.submit_btn = $("#new_message_submit_btn_" + id);
params.notice_msg = $("#new_message_notice_" + id);
params.height = height;
params.width = width;
if (params.textarea.data('init') == undefined) {
@ -432,6 +433,7 @@ function sd_create_message_editor(params){
params.toolbar_container.hide();
this.resize("100%", "30px");
params.submit_btn.hide();
params.notice_msg.hide();
}
$('#mini_comment_section').height('auto');
@ -457,6 +459,7 @@ function sd_create_message_editor(params){
$(".private-list").css("max-height",$("#dialogPanel").height());
params.submit_btn.show();
params.notice_msg.show();
$('#mini_comment_section').height('240px')
},

@ -61,10 +61,10 @@ $(function(){
loadProvince();
if($("#name_loggin_input").length > 0 && $("#name_loggin_input").val().trim() != ""){
//if($("#name_loggin_input").length > 0 && $("#name_loggin_input").val().trim() != ""){
$("#psd_login_btn").addClass("edu-back-blue");
$("#psd_login_btn").attr("disabled", false);
}
//}
});
$(window).resize(function(){

File diff suppressed because it is too large Load Diff

@ -3,6 +3,22 @@
body{font-size:14px; line-height:2.0;background:#fafafa!important;font-family: "微软雅黑","宋体"; color:#05101a;height: 100%;position: relative;
}
html,body{height:100%;}
/*滚动条样式*/
body::-webkit-scrollbar {/*滚动条整体样式*/
width: 8px; /*高宽分别对应横竖滚动条的尺寸*/
height: 8px;
}
body::-webkit-scrollbar-thumb {/*滚动条里面小方块*/
border-radius: 5px;
-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
background: #47494d;
}
body::-webkit-scrollbar-track {/*滚动条里面轨道*/
-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);
border-radius: 0;
background: rgba(0,0,0,0.1);
}
body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td,span{ margin:0; padding:0;}
table,input,textarea,select,button {outline: none;border-radius: 3px; font-family: "微软雅黑","宋体"; font-size:14px;line-height:1.9;border:1px solid #eaeaea;background: #FFFFff; color:#05101A;}
textarea{resize: none;}
@ -170,7 +186,7 @@ input::-ms-clear{display:none;}
/*自定义滚动条宽度*/
::-webkit-scrollbar {width:7px;height:10px;background-color: #F5F5F5; }
::-webkit-scrollbar-track {-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);background-color: #F5F5F5;}
::-webkit-scrollbar-thumb {-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);background-color: #dadada;}
::-webkit-scrollbar-thumb {-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);background-color: #b5b5b5;border-radius: 78px;}
.newContainer{ min-height:100%; height: auto !important; height: 100%; /*IE6不识别min-height*/position: relative;}

Loading…
Cancel
Save