Merge branch 'develop' into 'develop'

本周上线内容



See merge request !145
This commit is contained in:
陈晓婷 2017-02-10 14:39:28 +08:00
commit 67333618bb
52 changed files with 2143 additions and 274 deletions

View File

@ -257,7 +257,9 @@ class ContestsController < ApplicationController
def renew
if User.current.admin?
@contest.update_attributes(:is_delete => false)
redirect_to contest_path(@contest)
respond_to do |format|
format.js
end
else
return 404
end

View File

@ -1373,21 +1373,34 @@ class CoursesController < ApplicationController
#统计
def course_statistics
@left_nav_type = 10
# @order = params[:order] ? params[:order] : 'desc'
# if !params[:tab] || params[:tab] == "activity"
# @type = params[:type] ? params[:type] : 'act_score'
# sql = "SELECT (message_num*2 + message_reply_num*1 + news_reply_num*1 + news_num*1 + resource_num*5 + journal_num*1 + homework_journal_num*1) AS act_score,
# message_num, message_reply_num, news_reply_num, news_num, resource_num, journal_num, homework_journal_num, ccs.user_id FROM course_contributor_scores ccs
# JOIN students_for_courses ON students_for_courses.course_id = ccs.course_id AND students_for_courses.student_id = ccs.user_id
# WHERE ccs.course_id = #{@course.id} HAVING act_score != 0 ORDER BY #{@type} #{@order}, act_score #{@order}"
# @members = CourseContributorScore.find_by_sql(sql)
# end
#
# @limit = 20
# @page = params[:page].nil? ? 1 : params['page'].to_i
# @members_count = @members.count
# @mem_pages = Paginator.new @members_count, @limit, @page
# @members = paginateHelper @members, @limit
@order = params[:order] ? params[:order] : 'desc'
@tab = params[:tab] ? params[:tab].to_i : nil
if !params[:tab] || params[:tab] == "1"
@type = params[:type] ? params[:type] : 'act_score'
sql = "SELECT (message_num*2 + message_reply_num*1 + news_reply_num*1 + news_num*1 + resource_num*5 + journal_num*1 + homework_journal_num*1) AS act_score,
message_num, message_reply_num, news_reply_num, news_num, resource_num, journal_num, homework_journal_num, ccs.user_id FROM course_contributor_scores ccs
JOIN students_for_courses ON students_for_courses.course_id = ccs.course_id AND students_for_courses.student_id = ccs.user_id
WHERE ccs.course_id = #{@course.id} HAVING act_score != 0 ORDER BY #{@type} #{@order}, act_score #{@order}"
@members = CourseContributorScore.find_by_sql(sql)
elsif params[:tab] == "2"
@type = params[:type] ? params[:type] : 'total_score'
@members = @course.course_homework_statisticss.reorder("#{@type} #{@order}, total_score #{@order}")
elsif params[:tab] == "3"
@type = params[:type] ? params[:type] : 'project_act_score'
sql = "SELECT (IFNULL(changeset_num, 0)*4 + issue_num*4 + issue_journal_num*1 + attach_num*5 + board_num*2 + board_message_num*1) AS project_act_score,
changeset_num, issue_num, issue_journal_num, attach_num, board_num, board_message_num, pss.project_id FROM project_scores pss
JOIN student_work_projects ON student_work_projects.project_id = pss.project_id AND student_work_projects.course_id = #{@course.id}
GROUP BY pss.project_id ORDER BY #{@type} #{@order}, project_act_score #{@order}"
@members = ProjectScore.find_by_sql(sql)
end
@limit = 20
@page = params[:page].nil? ? 1 : params['page'].to_i
@members_count = @members.count
@mem_pages = Paginator.new @members_count, @limit, @page
@members = paginateHelper @members, @limit
respond_to do |format|
format.js
format.html {render :layout => 'base_courses'}

View File

@ -119,7 +119,7 @@ class FilesController < ApplicationController
@file.publish_time = params[:publish_time]
end
end
if @file.publish_time > Date.today
if @file.publish_time > Time.now
@file.is_publish = 0
else
@file.is_publish = 1
@ -588,15 +588,13 @@ class FilesController < ApplicationController
attachments[:files].each do |attachment|
if params[:publish_time]
if params[:publish_time] == ""
attachment.publish_time = Date.today
attachment.publish_time = Time.now
else
attachment.publish_time = params[:publish_time]
attachment.is_publish = 0
end
else
attachment.publish_time = Date.today
end
if attachment.publish_time > Date.today
attachment.is_publish = 0
attachment.publish_time = Time.now
end
attachment.description = params[:description]
attachment.save
@ -604,7 +602,7 @@ class FilesController < ApplicationController
end
if params[:course_attachment_type] && params[:course_attachment_type].is_a?(Array)
params[:course_attachment_type].each do |type|
tag_name = get_tag_name_by_type_number type
tag_name = get_tag_name_by_type_number type
if !attachments.empty? && attachments[:files] && tag_name != ""
attachments[:files].each do |attachment|
attachment.tag_list.add(tag_name)
@ -614,7 +612,7 @@ class FilesController < ApplicationController
end
else
if params[:course_attachment_type] && params[:course_attachment_type] != "5"
tag_name = get_tag_name_by_type_number params[:course_attachment_type]
tag_name = get_tag_name_by_type_number params[:course_attachment_type]
if !attachments.empty? && attachments[:files] && tag_name != ""
attachments[:files].each do |attachment|
attachment.tag_list.add(tag_name)

View File

@ -97,6 +97,9 @@ class HomeworkCommonController < ApplicationController
st.late_penalty = @homework.late_penalty
st.work_status = 2
st.save
#更新CourseHomeworkStatistics中学生的迟交作品数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, st.user_id)
course_statistics.update_attribute('late_commit_work_num', course_statistics.late_commit_work_num + 1) if course_statistics
end
end
else
@ -105,6 +108,9 @@ class HomeworkCommonController < ApplicationController
st.late_penalty = 0
st.work_status = 1
st.save
#更新CourseHomeworkStatistics中学生的迟交作品数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, st.user_id)
course_statistics.update_attribute('late_commit_work_num', (course_statistics.late_commit_work_num - 1) < 0 ? 0 : (course_statistics.late_commit_work_num - 1)) if course_statistics
end
end
end
@ -134,9 +140,22 @@ class HomeworkCommonController < ApplicationController
end
status = false
if @homework.publish_time <= Date.today && homework_detail_manual.comment_status == 0
if @homework.publish_time > Date.today && homework_detail_manual.comment_status == 1
homework_detail_manual.comment_status = 0
@homework.student_works.destroy_all
#更新CourseHomeworkStatistics中每个学生的未交作品数
@homework.course.student.each do |student|
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, student.student_id)
course_statistics.update_attribute('un_commit_work_num', (course_statistics.un_commit_work_num - 1) < 0 ? 0 : (course_statistics.un_commit_work_num - 1)) if course_statistics
end
elsif @homework.publish_time <= Date.today && homework_detail_manual.comment_status == 0
homework_detail_manual.comment_status = 1
status = true
#更新CourseHomeworkStatistics中每个学生的未交作品数
@homework.course.student.each do |student|
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, student.student_id)
course_statistics.update_attribute('un_commit_work_num', course_statistics.un_commit_work_num + 1) if course_statistics
end
end
eval_start = homework_detail_manual.evaluation_start
if eval_start.nil? || (eval_start <= @homework.end_time && homework_detail_manual.comment_status <= 1)
@ -216,6 +235,36 @@ class HomeworkCommonController < ApplicationController
def destroy
if @homework.destroy
#更新CourseHomeworkStatistics中每个学生的未交作品数、已交作品数、迟交作品数
hw_count = @course.homework_commons.includes(:homework_detail_manual).where("homework_detail_manuals.comment_status > 0").count
homework_ids = @course.homework_commons.empty? ? "(-1)" : "(" + @course.homework_commons.map{|hw| hw.id}.join(",") + ")"
student_works = StudentWork.where("homework_common_id in #{homework_ids} and work_status !=0")
is_eva_homeworks = @course.homework_commons.includes(:homework_detail_manual).where("homework_commons.anonymous_comment = 0 and homework_detail_manuals.comment_status = 2")
is_eva_student_works = StudentWork.where(:homework_common_id => is_eva_homeworks.map{|hw| hw.id})
has_eva_homeworks = @course.homework_commons.includes(:homework_detail_manual).where("homework_commons.anonymous_comment = 0 and homework_detail_manuals.comment_status = 3")
has_eva_student_works = StudentWork.where(:homework_common_id => has_eva_homeworks.map{|hw| hw.id})
@course.student.each do |student|
user = student.student
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, student.student_id)
if user && course_statistics
committed_work_num = user.student_works.where("homework_common_id in #{homework_ids} and work_status != 0").count
un_commit_work_num = (hw_count - committed_work_num) < 0 ? 0 : (hw_count - committed_work_num)
late_commit_work_num = user.student_works.where("homework_common_id in #{homework_ids} and work_status = 2").count
absence_evaluation_work_num = user.student_works_evaluation_distributions.where(:student_work_id => has_eva_student_works.map(&:id)).count -
user.student_works_scores.where(:reviewer_role => 3, :student_work_id => has_eva_student_works.map(&:id)).group_by(&:student_work_id).count
absence_evaluation_work_num = absence_evaluation_work_num < 0 ? 0 : absence_evaluation_work_num
un_evaluation_work_num = user.student_works_evaluation_distributions.where(:student_work_id => is_eva_student_works.map(&:id)).count -
user.student_works_scores.where(:reviewer_role => 3, :student_work_id => is_eva_student_works.map(&:id)).group_by(&:student_work_id).count
un_evaluation_work_num = un_evaluation_work_num < 0 ? 0 : un_evaluation_work_num
appeal_num = user.student_works_scores.where(:student_work_id => student_works.map(&:id), :appeal_status => 3).count
average_score = user.student_works.where(:id => student_works.map(&:id)).select("AVG(student_works.work_score) as score").first ? user.student_works.where(:id => student_works.map(&:id)).select("AVG(student_works.work_score) as score").first.score : 0
total_score = user.student_works.where(:id => student_works.map(&:id)).select("SUM(student_works.work_score) as score").first ? user.student_works.where(:id => student_works.map(&:id)).select("SUM(student_works.work_score) as score").first.score : 0
course_statistics.update_attributes(:committed_work_num => committed_work_num, :un_commit_work_num => un_commit_work_num,
:late_commit_work_num => late_commit_work_num, :absence_evaluation_work_num => absence_evaluation_work_num, :un_evaluation_work_num => un_evaluation_work_num,
:appeal_num => appeal_num, :average_score => average_score, :total_score => total_score)
end
end
respond_to do |format|
format.html {
@hw_status = params[:hw_status].to_i
@ -272,6 +321,10 @@ class HomeworkCommonController < ApplicationController
student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: pro_work.user_id, student_work_id: h.id)
student_works_evaluation_distributions.save
end
#更新CourseHomeworkStatistics中该学生的待匿评数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, pro_work.user_id)
course_statistics.update_attribute('un_evaluation_work_num', course_statistics.un_evaluation_work_num + n) if course_statistics
end
else
student_works.each_with_index do |work, index|
@ -283,6 +336,10 @@ class HomeworkCommonController < ApplicationController
student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: user.id, student_work_id: h.id)
student_works_evaluation_distributions.save
end
#更新CourseHomeworkStatistics中该学生的待匿评数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, user.id)
course_statistics.update_attribute('un_evaluation_work_num', course_statistics.un_evaluation_work_num + n) if course_statistics
end
end
@homework_detail_manual.update_column('comment_status', 2)
@ -315,6 +372,11 @@ class HomeworkCommonController < ApplicationController
absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids} and reviewer_role = 3").count
student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0
student_work.save
#更新CourseHomeworkStatistics中该学生的待匿评数和缺评数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, student_work.user_id)
course_statistics.update_attribute('un_evaluation_work_num', (course_statistics.un_evaluation_work_num - absence_penalty_count) < 0 ? 0 : (course_statistics.un_evaluation_work_num - absence_penalty_count)) if course_statistics
course_statistics.update_attribute('absence_evaluation_work_num', course_statistics.absence_evaluation_work_num + absence_penalty_count) if course_statistics
end
# 未参与匿评的缺评计算

View File

@ -607,11 +607,20 @@ class StudentWorkController < ApplicationController
anon_count = all_dis_eva.count / has_sw_count
student_work.absence_penalty = @homework.homework_detail_manual.absence_penalty * anon_count
end
#更新CourseHomeworkStatistics中学生的迟交作品数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, User.current.id)
course_statistics.update_attribute('late_commit_work_num', course_statistics.late_commit_work_num + 1) if course_statistics
else
student_work.late_penalty = 0
student_work.work_status = 1
end
if student_work.save
#更新CourseHomeworkStatistics中学生的未交作品数、已交作品数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, User.current.id)
course_statistics.update_attribute('committed_work_num', course_statistics.committed_work_num + 1) if course_statistics
course_statistics.update_attribute('un_commit_work_num', (course_statistics.un_commit_work_num - 1) < 0 ? 0 : (course_statistics.un_commit_work_num - 1)) if course_statistics
if @homework.homework_type == 3
if @homework.homework_detail_group.base_on_project == 1
@student_work_project.student_work_id = student_work.id
@ -627,6 +636,14 @@ class StudentWorkController < ApplicationController
stu_project = StudentWorkProject.new(:homework_common_id => @homework.id, :student_work_id => student_work.id, :project_id => stu_work.project_id == 0 ? -1 : stu_work.project_id, :user_id => members[i].to_i, :is_leader => 0, :course_id => @homework.course_id)
stu_project.save
end
#更新CourseHomeworkStatistics中学生的未交作品数、已交作品数、迟交作品数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, members[i].to_i)
course_statistics.update_attribute('committed_work_num', course_statistics.committed_work_num + 1) if course_statistics
course_statistics.update_attribute('un_commit_work_num', (course_statistics.un_commit_work_num - 1) < 0 ? 0 : (course_statistics.un_commit_work_num - 1)) if course_statistics
if student_work.work_status == 2
course_statistics.update_attribute('late_commit_work_num', course_statistics.late_commit_work_num + 1) if course_statistics
end
end
end
@homework.update_column(:updated_at, Time.now)
@ -676,6 +693,14 @@ class StudentWorkController < ApplicationController
student_work_projects = @homework.student_work_projects.where("student_work_id=? and is_leader =?",@work.id,0)
user_ids = student_work_projects.empty? ? "(-1)" : "(" + student_work_projects.map{|stu|stu.user_id}.join(",") + ")"
student_works = @homework.student_works.where("user_id in #{user_ids}")
student_works.each do |sw|
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, sw.user_id)
if @work.work_status == 2
course_statistics.update_attribute('late_commit_work_num', (course_statistics.late_commit_work_num - 1) < 0 ? 0 : (course_statistics.late_commit_work_num - 1)) if course_statistics
end
course_statistics.update_attribute('committed_work_num', (course_statistics.committed_work_num - 1) < 0 ? 0 : (course_statistics.committed_work_num - 1)) if course_statistics
course_statistics.update_attribute('un_commit_work_num', course_statistics.un_commit_work_num + 1) if course_statistics
end
student_works.delete_all
student_work_projects.delete_all
members = params[:group_member_ids].split(',')
@ -685,6 +710,14 @@ class StudentWorkController < ApplicationController
stu_project = StudentWorkProject.new(:homework_common_id => @homework.id, :student_work_id => @work.id, :project_id => stu_work.project_id == 0 ? -1 : stu_work.project_id, :user_id => members[i].to_i, :is_leader => 0, :course_id => @homework.course_id)
stu_project.save
end
#更新CourseHomeworkStatistics中学生的未交作品数、已交作品数、迟交作品数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, members[i].to_i)
course_statistics.update_attribute('committed_work_num', course_statistics.committed_work_num + 1) if course_statistics
course_statistics.update_attribute('un_commit_work_num', (course_statistics.un_commit_work_num - 1) < 0 ? 0 : (course_statistics.un_commit_work_num - 1)) if course_statistics
if @work.work_status == 2
course_statistics.update_attribute('late_commit_work_num', course_statistics.late_commit_work_num + 1) if course_statistics
end
end
end
@ -736,6 +769,16 @@ class StudentWorkController < ApplicationController
pros = @work.student_work_projects.where("is_leader = 0")
user_ids = pros.empty? ? "(-1)" : "(" + pros.map{|stu|stu.user_id}.join(",") + ")"
student_works = @homework.student_works.where("user_id in #{user_ids}")
#更新CourseHomeworkStatistics中每个学生的未交作品数、已交作品数、迟交作品数
student_works.each do |sw|
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, sw.user_id)
if @work.work_status == 2
course_statistics.update_attribute('late_commit_work_num', (course_statistics.late_commit_work_num - 1) < 0 ? 0 : (course_statistics.late_commit_work_num - 1)) if course_statistics
end
course_statistics.update_attribute('committed_work_num', (course_statistics.committed_work_num - 1) < 0 ? 0 : (course_statistics.committed_work_num - 1)) if course_statistics
course_statistics.update_attribute('un_commit_work_num', course_statistics.un_commit_work_num + 1) if course_statistics
end
student_works.delete_all
pros.delete_all
@ -747,6 +790,14 @@ class StudentWorkController < ApplicationController
end
@work.destroy
else
#更新CourseHomeworkStatistics中学生的已交作品数、迟交作品数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, @work.user_id)
if @work.work_status == 2
course_statistics.update_attribute('late_commit_work_num', (course_statistics.late_commit_work_num - 1) < 0 ? 0 : (course_statistics.late_commit_work_num - 1)) if course_statistics
end
course_statistics.update_attribute('committed_work_num', (course_statistics.committed_work_num - 1) < 0 ? 0 : (course_statistics.committed_work_num - 1)) if course_statistics
course_statistics.update_attribute('un_commit_work_num', course_statistics.un_commit_work_num + 1) if course_statistics
@work.attachments.destroy_all
@work.student_works_scores.destroy_all
@work.course_messages.destroy_all
@ -762,20 +813,44 @@ class StudentWorkController < ApplicationController
end
def delete_work
@work = StudentWork.where("user_id =? and homework_common_id =?", User.current.id, @homework.id).first
@work = StudentWork.where("user_id =? and homework_common_id =? and work_status != 0", User.current.id, @homework.id).first
if @work
@work.destroy
if @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 1
if @homework.homework_type == 3
pros = @work.student_work_projects.where("is_leader = 0")
pros.each do |pro|
pro.destroy
user_ids = pros.empty? ? "(-1)" : "(" + pros.map{|stu|stu.user_id}.join(",") + ")"
student_works = @homework.student_works.where("user_id in #{user_ids}")
#更新CourseHomeworkStatistics中每个学生的已交作品数、迟交作品数
student_works.each do |sw|
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, sw.user_id)
if @work.work_status == 2
course_statistics.update_attribute('late_commit_work_num', (course_statistics.late_commit_work_num - 1) < 0 ? 0 : (course_statistics.late_commit_work_num - 1)) if course_statistics
end
course_statistics.update_attribute('committed_work_num', (course_statistics.committed_work_num - 1) < 0 ? 0 : (course_statistics.committed_work_num - 1)) if course_statistics
course_statistics.update_attribute('un_commit_work_num', course_statistics.un_commit_work_num + 1) if course_statistics
end
student_works.delete_all
pros.delete_all
project = @work.student_work_projects.where("is_leader = 1").first
project.update_attributes(:student_work_id => nil)
elsif @homework.homework_type == 3 && @homework.homework_detail_group.base_on_project == 0
@work.student_work_projects.each do |pro2|
pro2.destroy
if @homework.homework_detail_group.base_on_project == 1
project.update_attributes(:student_work_id => nil)
else
project.destroy
end
@work.destroy
else
#更新CourseHomeworkStatistics中学生的已交作品数、迟交作品数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, @work.user_id)
if @work.work_status == 2
course_statistics.update_attribute('late_commit_work_num', (course_statistics.late_commit_work_num - 1) < 0 ? 0 : (course_statistics.late_commit_work_num - 1)) if course_statistics
end
course_statistics.update_attribute('committed_work_num', (course_statistics.committed_work_num - 1) < 0 ? 0 : (course_statistics.committed_work_num - 1)) if course_statistics
course_statistics.update_attribute('un_commit_work_num', course_statistics.un_commit_work_num + 1) if course_statistics
@work.update_attributes(:work_status => 0, :name => "#{@homework.name}的作品提交", :description => nil, :late_penalty => 0, :commit_time => nil, :project_id => 0)
@work.attachments.destroy_all
@work.course_messages.destroy_all
end
end
redirect_to student_work_index_path(:homework => @homework.id)
@ -786,6 +861,16 @@ class StudentWorkController < ApplicationController
pros = @work.student_work_projects.where("is_leader = 0")
user_ids = pros.empty? ? "(-1)" : "(" + pros.map{|stu|stu.user_id}.join(",") + ")"
student_works = @homework.student_works.where("user_id in #{user_ids}")
#更新CourseHomeworkStatistics中每个学生的已交作品数、迟交作品数
student_works.each do |sw|
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, sw.user_id)
if @work.work_status == 2
course_statistics.update_attribute('late_commit_work_num', (course_statistics.late_commit_work_num - 1) < 0 ? 0 : (course_statistics.late_commit_work_num - 1)) if course_statistics
end
course_statistics.update_attribute('committed_work_num', (course_statistics.committed_work_num - 1) < 0 ? 0 : (course_statistics.committed_work_num - 1)) if course_statistics
course_statistics.update_attribute('un_commit_work_num', course_statistics.un_commit_work_num + 1) if course_statistics
end
student_works.delete_all
pros.delete_all
@ -797,6 +882,14 @@ class StudentWorkController < ApplicationController
end
@work.destroy
else
#更新CourseHomeworkStatistics中学生的已交作品数、迟交作品数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, @work.user_id)
if @work.work_status == 2
course_statistics.update_attribute('late_commit_work_num', (course_statistics.late_commit_work_num - 1) < 0 ? 0 : (course_statistics.late_commit_work_num - 1)) if course_statistics
end
course_statistics.update_attribute('committed_work_num', (course_statistics.committed_work_num - 1) < 0 ? 0 : (course_statistics.committed_work_num - 1)) if course_statistics
course_statistics.update_attribute('un_commit_work_num', course_statistics.un_commit_work_num + 1) if course_statistics
@work.update_attributes(:work_status => 0, :name => "#{@homework.name}的作品提交", :description => nil, :late_penalty => 0, :commit_time => nil, :project_id => 0)
@work.attachments.destroy_all
@work.course_messages.destroy_all
@ -835,6 +928,10 @@ class StudentWorkController < ApplicationController
@new_score.student_work_id = @work.id
if @is_teacher && !@new_score.score.nil? && @work.work_status == 0
@work.update_attributes(:work_status => 1, :commit_time => Time.now)
#更新CourseHomeworkStatistics中学生的已交作品数、未交作品数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, @work.user_id)
course_statistics.update_attribute('committed_work_num', course_statistics.committed_work_num + 1) if course_statistics
course_statistics.update_attribute('un_commit_work_num', (course_statistics.un_commit_work_num - 1) < 0 ? 0 : (course_statistics.un_commit_work_num - 1)) if course_statistics
end
if User.current.admin?
@new_score.reviewer_role = 1
@ -884,7 +981,13 @@ class StudentWorkController < ApplicationController
if @is_group_leader
add_score_to_member @work, @homework, @new_score
end
end
#更新CourseHomeworkStatistics中该学生的待匿评数, 只计算第一次评分
if User.current.student_works_scores.where(:student_work_id => @work.id, :reviewer_role => 3).count == 1
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, student_work.user_id)
course_statistics.update_attribute('un_evaluation_work_num', (course_statistics.un_evaluation_work_num - 1) < 0 ? 0 : (course_statistics.un_evaluation_work_num - 1)) if course_statistics
end
end
@homework.update_column('updated_at', Time.now)
update_course_activity(@homework.class,@homework.id)
update_user_activity(@homework.class,@homework.id)
@ -1178,11 +1281,18 @@ class StudentWorkController < ApplicationController
score_appeal.applied_messages.update_all(:status => params[:status].to_i == 2 ? 3 : (params[:status].to_i == 3 ? 1 : 2))
if params[:status].to_i == 3 || params[:status].to_i == 4
homework = @student_work_score.student_work.homework_common
course = homework.course
if params[:status].to_i == 3
# 申诉成功后 扣匿评学生的违规匿评扣分
sw = homework.student_works.where("user_id = #{@student_work_score.user_id}").first
sw.update_attribute("appeal_penalty", homework.homework_detail_manual.appeal_penalty + sw.appeal_penalty)
#申诉成功,匿评学生的被申诉记录加一
course_homework_statistics = CourseHomeworkStatistics.where(:user_id => @student_work_score.user_id, :course_id => course.id).first
if course_homework_statistics
course_homework_statistics.update_attribute('appeal_num', course_homework_statistics.appeal_num + 1)
end
# 申诉成功 重新计算申诉者的匿评分
work = @student_work_score.student_work
if work.student_works_scores.where("reviewer_role = 3 AND appeal_status != 3").count > 0
@ -1193,7 +1303,6 @@ class StudentWorkController < ApplicationController
end
@student_work_score.student_work.save
end
course = homework.course
CourseMessage.create(:user_id => @student_work_score.user_id, :course_id => course.id, :viewed => false,:course_message_id=> score_appeal.id,:course_message_type=>'StudentWorksScoresAppeal',:status=>params[:status].to_i,:apply_result =>User.current.id)
CourseMessage.create(:user_id => score_appeal.user_id, :course_id => course.id, :viewed => false,:course_message_id=> score_appeal.id,:course_message_type=>'StudentWorksScoresAppeal',:status=>params[:status].to_i,:apply_result =>User.current.id)
end
@ -1368,6 +1477,14 @@ class StudentWorkController < ApplicationController
stu_project = StudentWorkProject.new(:homework_common_id => @homework.id, :student_work_id => student_work.id, :project_id => stu_work.project_id == 0 ? -1 : stu_work.project_id, :user_id => params[:member_id][i].to_i, :is_leader => 0, :course_id => @homework.course_id)
stu_project.save
end
#更新CourseHomeworkStatistics中学生的未交作品数、已交作品数、迟交作品数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, params[:member_id][i].to_i)
course_statistics.update_attribute('committed_work_num', course_statistics.committed_work_num + 1) if course_statistics
course_statistics.update_attribute('un_commit_work_num', (course_statistics.un_commit_work_num - 1) < 0 ? 0 : (course_statistics.un_commit_work_num - 1)) if course_statistics
if student_work.work_status == 2
course_statistics.update_attribute('late_commit_work_num', course_statistics.late_commit_work_num + 1) if course_statistics
end
end
end
@ -1378,6 +1495,14 @@ class StudentWorkController < ApplicationController
work = StudentWork.where("homework_common_id = #{@homework.id} and user_id = #{sp.user_id}").first
sp.destroy
if work
#更新CourseHomeworkStatistics中学生的未交作品数、已交作品数、迟交作品数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(@homework.course_id, work.user_id)
if student_work.work_status == 2
course_statistics.update_attribute('late_commit_work_num', (course_statistics.late_commit_work_num - 1) < 0 ? 0 : (course_statistics.late_commit_work_num - 1)) if course_statistics
end
course_statistics.update_attribute('committed_work_num', (course_statistics.committed_work_num - 1) < 0 ? 0 : (course_statistics.committed_work_num - 1)) if course_statistics
course_statistics.update_attribute('un_commit_work_num', course_statistics.un_commit_work_num + 1) if course_statistics
work.destroy
end
end

View File

@ -1373,6 +1373,12 @@ class UsersController < ApplicationController
homework_detail_manual.comment_status = 0
else
homework_detail_manual.comment_status = 1
#更新CourseHomeworkStatistics中每个学生的未交作品数
homework.course.student.each do |student|
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(homework.course_id, student.student_id)
course_statistics.update_attribute('un_commit_work_num', course_statistics.un_commit_work_num + 1) if course_statistics
end
end
homework_detail_manual.evaluation_start = params[:evaluation_start].blank? ? homework.end_time + 7 : params[:evaluation_start]
homework_detail_manual.evaluation_end = params[:evaluation_end].blank? ? homework_detail_manual.evaluation_start + 7 : params[:evaluation_end]

View File

@ -324,7 +324,7 @@ module ApplicationHelper
# 获取项目/课程总分
# 发布缺陷 4分 回复缺陷 1分 提交一次 4分 讨论帖子 2分 回复帖子 1分 发布新闻 1分
def static_project_score obj
score = obj.issue_num * 4 + obj.issue_journal_num + (obj.changeset_num||0) * 4 + obj.board_num * 2 + obj.board_message_num + obj.news_num + obj.attach_num * 5
score = obj.issue_num * 4 + obj.issue_journal_num + (obj.changeset_num||0) * 4 + obj.board_num * 2 + obj.board_message_num + obj.attach_num * 5
end
# 获取组织成员中文名字

View File

@ -108,6 +108,14 @@ module UsersHelper
end
end
# 当前用户在某个作业中的待匿评数
def homework_evaluation_num homework
student_works = homework.student_works.has_committed
count = User.current.student_works_evaluation_distributions.where(:student_work_id => student_works.map(&:id)).count -
User.current.student_works_scores.where(:reviewer_role => 3, :student_work_id => student_works.map(&:id)).group_by(&:student_work_id).count
count
end
# 获取消息角色
def applied_project_message_type role
case role

View File

@ -55,7 +55,7 @@ class Course < ActiveRecord::Base
has_many :student_works, :through => :homework_commons, :dependent => :destroy
has_many :course_groups, :dependent => :destroy
#has_many :course_homework_statistics, :dependent => :destroy
has_many :course_homework_statisticss, :dependent => :destroy
# 课程动态
has_many :course_acts, :class_name => 'CourseActivity',:as =>:course_act ,:dependent => :destroy

View File

@ -0,0 +1,6 @@
class CourseHomeworkStatistics < ActiveRecord::Base
# attr_accessible :title, :body
belongs_to :user
belongs_to :course
end

View File

@ -19,6 +19,7 @@ class StudentWork < ActiveRecord::Base
before_destroy :delete_praise
before_save :set_program_score, :set_src
after_save :update_avg_sum_score
after_create :act_as_message
acts_as_attachable
@ -173,6 +174,20 @@ class StudentWork < ActiveRecord::Base
end
end
#更新course_homework_statistics中的avg_score和total_score
def update_avg_sum_score
course_homework_statistics = CourseHomeworkStatistics.where(:user_id => self.user_id, :course_id => self.homework_common.course_id).first
if course_homework_statistics
course = self.homework_common.course
homework_ids = course.homework_commons.empty? ? "(-1)" : "(" + course.homework_commons.map{|hw| hw.id}.join(",") + ")"
student_works = StudentWork.where("homework_common_id in #{homework_ids} and work_status !=0")
user = self.user
average_score = user.student_works.where(:id => student_works.map(&:id)).select("AVG(student_works.work_score) as score").first ? user.student_works.where(:id => student_works.map(&:id)).select("AVG(student_works.work_score) as score").first.score : 0
total_score = user.student_works.where(:id => student_works.map(&:id)).select("SUM(student_works.work_score) as score").first ? user.student_works.where(:id => student_works.map(&:id)).select("SUM(student_works.work_score) as score").first.score : 0
course_homework_statistics.update_attributes(:average_score => average_score, :total_score => total_score)
end
end
# status == 0 : delay
def act_as_message
if self.work_status != 0 && self.created_at > self.homework_common.end_time + 1

View File

@ -40,38 +40,36 @@ class StudentsForCourse < ActiveRecord::Base
#加入班级时创建一条记录
def create_course_homework_statistic
# if CourseHomeworkStatistic.where(:user_id => self.student_id, :course_id => self.course_id).count == 0
# course = self.course
# user = self.student
# hw_count = course.homework_commons.count
# homework_ids = course.homework_commons.empty? ? "(-1)" : "(" + course.homework_commons.map{|hw| hw.id}.join(",") + ")"
# student_works = StudentWork.where("homework_common_id in #{homework_ids}")
# is_eva_homeworks = course.homework_commons.includes(:homework_detail_manual).where("homework_commons.anonymous_comment = 0 and homework_detail_manuals.comment_status = 2")
# is_eva_student_works = StudentWork.where(:homework_common_id => is_eva_homeworks.map{|hw| hw.id})
# has_eva_homeworks = course.homework_commons.includes(:homework_detail_manual).where("homework_commons.anonymous_comment = 0 and homework_detail_manuals.comment_status = 3")
# has_eva_student_works = StudentWork.where(:homework_common_id => has_eva_homeworks.map{|hw| hw.id})
# course.student.each do |student|
# user = student.student
# if user
# committed_work_num = user.student_works.where("homework_common_id in #{homework_ids} and work_status != 0").count
# un_commit_work_num = hw_count - committed_work_num
# late_commit_work_num = user.student_works.where("homework_common_id in #{homework_ids} and work_status = 2").count
# absence_evaluation_work_num = user.student_works_evaluation_distributions.where(:student_work_id => has_eva_student_works.map(&:id)).count -
# user.student_works_scores.where(:reviewer_role => 3, :student_work_id => has_eva_student_works.map(&:id)).group_by(&:student_work_id).count
# un_evaluation_work_num = user.student_works_evaluation_distributions.where(:student_work_id => is_eva_student_works.map(&:id)).count -
# user.student_works_scores.where(:reviewer_role => 3, :student_work_id => is_eva_student_works.map(&:id)).group_by(&:student_work_id).count
# appeal_num = user.student_works_scores.where(:student_work_id => student_works.map(&:id), :appeal_status => 3).count
# average_score = user.student_works.where(:id => student_works.map(&:id)).select("AVG(student_works.work_score) as score").first ? user.student_works.where(:id => student_works.map(&:id)).select("SUM(student_works.work_score) as score").first.score : 0
# total_score = user.student_works.where(:id => student_works.map(&:id)).select("SUM(student_works.work_score) as score").first ? user.student_works.where(:id => student_works.map(&:id)).select("SUM(student_works.work_score) as score").first.score : 0
# CourseHomeworkStatistic.create(:course_id => course.id, :user_id => user.id, :committed_work_num => committed_work_num, :un_commit_work_num => un_commit_work_num,
# :late_commit_work_num => late_commit_work_num, :absence_evaluation_work_num => absence_evaluation_work_num, :un_evaluation_work_num => un_evaluation_work_num,
# :appeal_num => appeal_num, :average_score => average_score, :total_score => total_score)
# end
# end
# end
if CourseHomeworkStatistic.where(:user_id => self.student_id, :course_id => self.course_id).count == 0
course = self.course
user = self.student
hw_count = course.homework_commons.includes(:homework_detail_manual).where("homework_detail_manuals.comment_status > 0").count
homework_ids = course.homework_commons.empty? ? "(-1)" : "(" + course.homework_commons.map{|hw| hw.id}.join(",") + ")"
student_works = StudentWork.where("homework_common_id in #{homework_ids} and work_status !=0")
is_eva_homeworks = course.homework_commons.includes(:homework_detail_manual).where("homework_commons.anonymous_comment = 0 and homework_detail_manuals.comment_status = 2")
is_eva_student_works = StudentWork.where(:homework_common_id => is_eva_homeworks.map{|hw| hw.id})
has_eva_homeworks = course.homework_commons.includes(:homework_detail_manual).where("homework_commons.anonymous_comment = 0 and homework_detail_manuals.comment_status = 3")
has_eva_student_works = StudentWork.where(:homework_common_id => has_eva_homeworks.map{|hw| hw.id})
committed_work_num = user.student_works.where("homework_common_id in #{homework_ids} and work_status != 0").count
un_commit_work_num = (hw_count - committed_work_num) < 0 ? 0 : (hw_count - committed_work_num)
late_commit_work_num = user.student_works.where("homework_common_id in #{homework_ids} and work_status = 2").count
absence_evaluation_work_num = user.student_works_evaluation_distributions.where(:student_work_id => has_eva_student_works.map(&:id)).count -
user.student_works_scores.where(:reviewer_role => 3, :student_work_id => has_eva_student_works.map(&:id)).group_by(&:student_work_id).count
absence_evaluation_work_num = absence_evaluation_work_num < 0 ? 0 : absence_evaluation_work_num
un_evaluation_work_num = user.student_works_evaluation_distributions.where(:student_work_id => is_eva_student_works.map(&:id)).count -
user.student_works_scores.where(:reviewer_role => 3, :student_work_id => is_eva_student_works.map(&:id)).group_by(&:student_work_id).count
un_evaluation_work_num = un_evaluation_work_num < 0 ? 0 : un_evaluation_work_num
appeal_num = user.student_works_scores.where(:student_work_id => student_works.map(&:id), :appeal_status => 3).count
average_score = user.student_works.where(:id => student_works.map(&:id)).select("AVG(student_works.work_score) as score").first ? user.student_works.where(:id => student_works.map(&:id)).select("AVG(student_works.work_score) as score").first.score : 0
total_score = user.student_works.where(:id => student_works.map(&:id)).select("SUM(student_works.work_score) as score").first ? user.student_works.where(:id => student_works.map(&:id)).select("SUM(student_works.work_score) as score").first.score : 0
CourseHomeworkStatistic.create(:course_id => course.id, :user_id => user.id, :committed_work_num => committed_work_num, :un_commit_work_num => un_commit_work_num,
:late_commit_work_num => late_commit_work_num, :absence_evaluation_work_num => absence_evaluation_work_num, :un_evaluation_work_num => un_evaluation_work_num,
:appeal_num => appeal_num, :average_score => average_score, :total_score => total_score)
end
end
def delete_course_homework_statistic
#CourseHomeworkStatistic.where(:user_id => self.student_id, :course_id => self.course_id).destroy_all
CourseHomeworkStatistic.where(:user_id => self.student_id, :course_id => self.course_id).destroy_all
end
end

View File

@ -183,7 +183,7 @@ class User < Principal
# 课程贡献榜
has_many :course_contributor_scores, :dependent => :destroy
#has_many :course_homework_statistics, :dependent => :destroy
has_many :course_homework_statisticss, :dependent => :destroy
######added by nie
has_many :project_infos, :dependent => :destroy

View File

@ -37,7 +37,7 @@
<p>= <%= (project_score.changeset_num||0) * 4 %>
+ <%= project_score.issue_num * 4 + project_score.issue_journal_num %> + <%= project_score.attach_num * 5 %>
+ <%= project_score.board_num * 2 + project_score.board_message_num + project_score.news_num %></p>
+ <%= project_score.board_num * 2 + project_score.board_message_num %></p>
<% end %>
</div>
</div>

View File

@ -37,7 +37,7 @@
<p>= <%= (project_score.changeset_num||0) * 4 %>
+ <%= project_score.issue_num * 4 + project_score.issue_journal_num %> + <%= project_score.attach_num * 5 %>
+ <%= project_score.board_num * 2 + project_score.board_message_num + project_score.news_num %></p>
+ <%= project_score.board_num * 2 + project_score.board_message_num %></p>
<% end %>
</div>
</div>

View File

@ -18,6 +18,8 @@
:width => '84%',
:height => 300,
:minHeight=> 300,
:placeholder => "例如:参赛要求,参与方法,赛事日程,奖项设置等",
:afterCreate => "eval(function() {alert(000)})",
:class => 'fl ml5 w690',
:input_html => { :id => 'contest_description',
:class => 'courses_text fl',
@ -62,7 +64,11 @@
//配置-信息提交
function submit_edit_contest(id) {
if(/^\s*<\w*\s*\w*\=\"\w*\"\s*\w*\=\"\w*\:\s*\#\d*\;\s*\w*\-\w*\:\s*\w*\;\"\>[\u4e00-\u9fa5]*[\uFF1A][\u4e00-\u9fa5]*[\uFF0C][\u4e00-\u9fa5]*[\uFF0C][\u4e00-\u9fa5]*[\uFF0C][\u4e00-\u9fa5]*<\/\w*\>\s*$/.test(contest_setting_editor.html())){
contest_setting_editor.html('');
}
contest_setting_editor.sync();
if (regex_contest_name()) {
$("#edit_contest_" + id).submit();
}

View File

@ -13,7 +13,7 @@
<% if !@contest.is_delete %>
<a href="javascript:void(0);" class="postOptionLink" onclick="delete_confirm_box_2('<%=contest_path(@contest) %>', '您确定要删除该竞赛吗?<br/>删除后可联系系统管理员进行恢复')">删除</a>
<% else %>
<%=link_to "恢复竞赛", renew_contest_path(@contest), :class => "postOptionLink" %>
<%=link_to "恢复竞赛", renew_contest_path(@contest), :remote => true, :class => "postOptionLink" %>
<% end %>
</li>
</ul>

View File

@ -0,0 +1 @@
notice_box_redirect('<%= contest_path(@contest) %>', '恢复成功!');

View File

@ -0,0 +1,92 @@
<% if @members.count != 0 %>
<table class="muban_table clearfix mb15 t-center" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th class="table-td-w30" >姓名</th>
<th class="table-td-w10">
<%= link_to '已交作品', course_statistics_course_path(@course, :tab => 2, :type => 'committed_work_num', :order => (@order == "desc" ? "asc" : "desc")), method: 'get', remote: true, :style => 'color:#000000;'%>
<% if @type == "committed_work_num" && @order == 'desc' %>
<a href="javascript:" class= "sy_sortupbtn"></a>
<% elsif @type == "committed_work_num" && @order == 'asc' %>
<a href="javascript:" class= "sy_sortdownbtn"></a>
<% end %>
</th>
<th class="table-td-w10">
<%= link_to '未交作品', course_statistics_course_path(@course, :tab => 2, :type => 'un_commit_work_num', :order => (@order == "desc" ? "asc" : "desc")), method: 'get', remote: true, :style => 'color:#000000;'%>
<% if @type == "un_commit_work_num" && @order == 'desc' %>
<a href="javascript:" class= "sy_sortupbtn"></a>
<% elsif @type == "un_commit_work_num" && @order == 'asc' %>
<a href="javascript:" class= "sy_sortdownbtn"></a>
<% end %>
</th>
<th class="table-td-w10">
<%= link_to '迟交作品', course_statistics_course_path(@course, :tab => 2, :type => 'late_commit_work_num', :order => (@order == "desc" ? "asc" : "desc")), method: 'get', remote: true, :style => 'color:#000000;'%>
<% if @type == "late_commit_work_num" && @order == 'desc' %>
<a href="javascript:" class= "sy_sortupbtn"></a>
<% elsif @type == "late_commit_work_num" && @order == 'asc' %>
<a href="javascript:" class= "sy_sortdownbtn"></a>
<% end %>
</th>
<th class="table-td-w10">
<%= link_to '匿评缺评', course_statistics_course_path(@course, :tab => 2, :type => 'absence_evaluation_work_num', :order => (@order == "desc" ? "asc" : "desc")), method: 'get', remote: true, :style => 'color:#000000;'%>
<% if @type == "absence_evaluation_work_num" && @order == 'desc' %>
<a href="javascript:" class= "sy_sortupbtn"></a>
<% elsif @type == "absence_evaluation_work_num" && @order == 'asc' %>
<a href="javascript:" class= "sy_sortdownbtn"></a>
<% end %>
</th>
<th class="table-td-w10">
<%= link_to '被申诉', course_statistics_course_path(@course, :tab => 2, :type => 'appeal_num', :order => (@order == "desc" ? "asc" : "desc")), method: 'get', remote: true, :style => 'color:#000000;'%>
<% if @type == "appeal_num" && @order == 'desc' %>
<a href="javascript:" class= "sy_sortupbtn"></a>
<% elsif @type == "appeal_num" && @order == 'asc' %>
<a href="javascript:" class= "sy_sortdownbtn"></a>
<% end %>
</th>
<th class="table-td-w10">
<%= link_to '平均分', course_statistics_course_path(@course, :tab => 2, :type => 'average_score', :order => (@order == "desc" ? "asc" : "desc")), method: 'get', remote: true, :style => 'color:#000000;'%>
<% if @type == "average_score" && @order == 'desc' %>
<a href="javascript:" class= "sy_sortupbtn"></a>
<% elsif @type == "average_score" && @order == 'asc' %>
<a href="javascript:" class= "sy_sortdownbtn"></a>
<% end %>
</th>
<th class="table-td-w10">
<%= link_to '英雄榜', course_statistics_course_path(@course, :tab => 2, :type => 'total_score', :order => (@order == "desc" ? "asc" : "desc")), method: 'get', remote: true, :style => 'color:#000000;'%>
<% if @type == "total_score" && @order == 'desc' %>
<a href="javascript:" class= "sy_sortupbtn"></a>
<% elsif @type == "total_score" && @order == 'asc' %>
<a href="javascript:" class= "sy_sortdownbtn"></a>
<% end %>
</th>
</tr>
</thead>
<tbody>
<% boo = !(User.current.allowed_to?(:as_teacher,@course) || User.current.admin?) && course_has_score_open_common_homework(@course) %>
<% @members.each do |member| %>
<% is_hidden = boo && User.current.id != member.user_id %>
<tr>
<td><%= link_to member.user.show_name, user_path(member.user), :class => 'course_class_users_st_name' %></td>
<td><%= member.committed_work_num %></td>
<td><%= member.un_commit_work_num %></td>
<td><%= member.late_commit_work_num %></td>
<td><%= member.absence_evaluation_work_num %></td>
<td><%= member.appeal_num %></td>
<td><%= is_hidden ? '**' : (member.average_score.nil? ? 0 : format("%.1f", member.average_score < 0 ? 0 : member.average_score)) %></td>
<td><%= is_hidden ? '**' : (member.total_score.nil? ? 0 : format("%.1f", member.total_score < 0 ? 0 : member.total_score)) %></td>
</tr>
<% end %>
</tbody>
</table>
<div style="text-align:center;">
<div class="pages" style="width:auto; display:inline-block;">
<ul id="homework_pository_ref_pages">
<%= pagination_links_full @mem_pages, @members_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true%>
</ul>
<div class="cl"></div>
</div>
</div>
<% else%>
<div class="icons_tishi"><img src="/images/sy/icons_smile.png" width="110" height="110" alt="" ></div>
<p class="sy_tab_con_p">没有数据可以显示!</p>
<% end %>

View File

@ -0,0 +1,108 @@
<% if @members.count != 0 %>
<table class="muban_table clearfix mb15 t-center" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th class="table-td-w30">项目名称</th>
<th class="table-td-w10">
<%= link_to '发布资源', course_statistics_course_path(@course, :tab => 3, :type => 'attach_num', :order => (@order == "desc" ? "asc" : "desc")), method: 'get', remote: true, :style => 'color:#000000;'%>
<% if @type == "attach_num" && @order == 'desc' %>
<a href="javascript:" class= "sy_sortupbtn"></a>
<% elsif @type == "attach_num" && @order == 'asc' %>
<a href="javascript:" class= "sy_sortdownbtn"></a>
<% end %>
</th>
<th class="table-td-w10">
<%= link_to '提交次数', course_statistics_course_path(@course, :tab => 3, :type => 'changeset_num', :order => (@order == "desc" ? "asc" : "desc")), method: 'get', remote: true, :style => 'color:#000000;'%>
<% if @type == "changeset_num" && @order == 'desc' %>
<a href="javascript:" class= "sy_sortupbtn"></a>
<% elsif @type == "changeset_num" && @order == 'asc' %>
<a href="javascript:" class= "sy_sortdownbtn"></a>
<% end %>
</th>
<th class="table-td-w10-5">
<%= link_to '发布Issue', course_statistics_course_path(@course, :tab => 3, :type => 'issue_num', :order => (@order == "desc" ? "asc" : "desc")), method: 'get', remote: true, :style => 'color:#000000;'%>
<% if @type == "issue_num" && @order == 'desc' %>
<a href="javascript:" class= "sy_sortupbtn"></a>
<% elsif @type == "issue_num" && @order == 'asc' %>
<a href="javascript:" class= "sy_sortdownbtn"></a>
<% end %>
</th>
<th class="table-td-w10-5">
<%= link_to 'Issue回复', course_statistics_course_path(@course, :tab => 3, :type => 'issue_journal_num', :order => (@order == "desc" ? "asc" : "desc")), method: 'get', remote: true, :style => 'color:#000000;'%>
<% if @type == "issue_journal_num" && @order == 'desc' %>
<a href="javascript:" class= "sy_sortupbtn"></a>
<% elsif @type == "issue_journal_num" && @order == 'asc' %>
<a href="javascript:" class= "sy_sortdownbtn"></a>
<% end %>
</th>
<th class="table-td-w10">
<%= link_to '发布帖子', course_statistics_course_path(@course, :tab => 3, :type => 'board_num', :order => (@order == "desc" ? "asc" : "desc")), method: 'get', remote: true, :style => 'color:#000000;'%>
<% if @type == "board_num" && @order == 'desc' %>
<a href="javascript:" class= "sy_sortupbtn"></a>
<% elsif @type == "board_num" && @order == 'asc' %>
<a href="javascript:" class= "sy_sortdownbtn"></a>
<% end %>
</th>
<th class="table-td-w10">
<%= link_to '帖子回复', course_statistics_course_path(@course, :tab => 3, :type => 'board_message_num', :order => (@order == "desc" ? "asc" : "desc")), method: 'get', remote: true, :style => 'color:#000000;'%>
<% if @type == "board_message_num" && @order == 'desc' %>
<a href="javascript:" class= "sy_sortupbtn"></a>
<% elsif @type == "board_message_num" && @order == 'asc' %>
<a href="javascript:" class= "sy_sortdownbtn"></a>
<% end %>
</th>
<th class="table-td-w9">
<%= link_to '活跃度', course_statistics_course_path(@course, :tab => 3, :type => 'project_act_score', :order => (@order == "desc" ? "asc" : "desc")), method: 'get', remote: true, :style => 'color:#000000;'%>
<% if @type == "project_act_score" && @order == 'desc' %>
<a href="javascript:" class= "sy_sortupbtn"></a>
<% elsif @type == "project_act_score" && @order == 'asc' %>
<a href="javascript:" class= "sy_sortdownbtn"></a>
<% end %>
</th>
</tr>
</thead>
<tbody>
<% @members.each do |member| %>
<tr>
<td>
<%= link_to member.project.name, project_path(member.project_id), :class => 'new_project_title_width fl ml5' %>
<span class="<%= member.project.is_public ? 'syllabus_class_open' : 'syllabus_class_private' %> fl ml5 syllabus_class_property"><%= member.project.is_public ? '公开' : '私有' %></span>
</td>
<td><%= member.attach_num %></td>
<td><%= member.changeset_num || 0 %></td>
<td><%= member.issue_num %></td>
<td><%= member.issue_journal_num %></td>
<td><%= member.board_num %></td>
<td><%= member.board_message_num %></td>
<td class="pr">
<span><%= member.project_act_score %></span>
<div class="st_tips_box_inner undis" style="text-align:left;">
<em></em>
<span></span>
<p>发布资源数*5=<%= member.attach_num %>*5=<%= member.attach_num.to_i * 5 %><br/>
代码提交数*2=<%= member.changeset_num %>*2=<%= member.changeset_num.to_i * 2 %><br/>
发布Issue数*1=<%= member.issue_num %>*1=<%= member.issue_num.to_i * 1 %><br/>
Issue回复数*1=<%= member.issue_journal_num %>*1=<%= member.issue_journal_num.to_i * 1 %><br/>
发布帖子数*1=<%= member.board_num %>*1=<%= member.board_num.to_i * 1 %><br/>
回复帖子数*1=<%= member.board_message_num %>*1=<%= member.board_message_num.to_i * 1 %><br/>
总得分:<%= member.project_act_score %>
</p>
</div>
</td>
</tr>
<% end %>
</tbody>
</table>
<div style="text-align:center;">
<div class="pages" style="width:auto; display:inline-block;">
<ul id="homework_pository_ref_pages">
<%= pagination_links_full @mem_pages, @members_count, :per_page_links => false, :remote => @is_remote, :flag => true, :is_new => true%>
</ul>
<div class="cl"></div>
</div>
</div>
<% else %>
<div class="icons_tishi"><img src="/images/sy/icons_smile.png" width="110" height="110" alt="" ></div>
<p class="sy_tab_con_p">没有数据可以显示!</p>
<% end %>

View File

@ -64,9 +64,4 @@
<li>
<%=link_to "分班", course_member_path(@course, :role => 2) %>
</li>
<% end %>
<% if show_nav?(0) %>
<li>
<a href="<%=course_statistics_course_path(@course) %>">统计</a>
</li>
<% end %>

View File

@ -1,5 +1,88 @@
<div class="sy_class_r ml10">
<div class="icons_tishi"><img src="../../images/sy/icons_smile.png" width="110" height="110" alt="" ></div>
<p class="sy_tab_con_p">统计功能即将上线,届时我们一起享受教育大数据的红利吧!</p>
<div style="height:400px;"></div>
</div><!--sy_class_r end-->
<h3 class="game-setting-h3"><span class="ml15"></span>统计</h3>
<div class="game-setting-tab">
<ul id="game-setting-tab-nav">
<li id="game-setting-tab-nav-1" onclick="HoverLi(1);">
<a href="javascript:void(0);" >活跃度</a>
</li>
<li id="game-setting-tab-nav-2" onclick="HoverLi(2);">
<a href="javascript:void(0);" >英雄榜</a>
</li>
<li id="game-setting-tab-nav-3" onclick="HoverLi(3);">
<a href="javascript:void(0);" >项目活跃度</a>
</li>
<div class="cl"></div>
</ul>
<div id="game-setting-content-1" class="undis">
<div class="alert alert-blue mt10 ml10 mr10 mb10" style="width: 703px;">
活跃度总分 = 资源发布数 * 权值(5分) + 发帖数 * 权值(2分) + 帖子回复数 * 权值(1分) + 通知发布数 * 权值(1分) + <br/>通知回复数 * 权值(1分) + 作业回复数 * 权值(1分) + 班级留言数 * 权值(1分)
</div>
<div class="clear ml10 mr10" id="act_table_<%=@course.id %>">
<% if @tab.nil? || @tab == 1 %>
<%=render :partial => 'act_table' %>
<% end %>
</div>
</div><!--issues_list_content_1 end-->
<div id="game-setting-content-2" class="undis">
<div class="alert alert-blue mt10 ml10 mr10 mb10" style="width: 703px;">
每个同学作业的得分总和
</div>
<div class="clear ml10 mr10" id="hero_table_<%=@course.id %>">
<% if @tab == 2 %>
<%=render :partial => 'hero_table' %>
<% end %>
</div>
</div><!--issues_list_content_2 end-->
<div id="game-setting-content-3" class="undis">
<div class="alert alert-blue mt10 ml10 mr10 mb10" style="width: 703px;">
项目活跃度 = 发布资源数 * 权值(5分) + 代码提交数 * 权值(4分) + 发布Issue数 * 权值(4分) + Issue回复数 * 权值(1分) + <br/>发布帖子数 * 权值(2分) + 回复帖子数 * 权值(1分)
</div>
<div class=" clear ml10 mr10" >
<!--<div class="mb10 clear">-->
<!--<label class=" fl mt5 c_grey02">&nbsp;选择作业&nbsp;&nbsp;:&nbsp;</label>-->
<!--<select class=" fl newupload_select w150" style="width:150px; height:30px; background:#fff;">-->
<!--<option>全部</option>-->
<!--<option>第一作业</option>-->
<!--<option>第二次作业</option>-->
<!--</select>-->
<!--</div>-->
<div id="project_table_<%=@course.id %>">
<% if @tab == 3 %>
<%=render :partial => 'project_table' %>
<% end %>
</div>
</div>
</div><!--issues_list_content_3 end-->
</div><!--issues_con_list end-->
</div><!--sy_class_r end-->
<div class="cl"></div>
<script type="text/javascript">
$(function(){
<% if @tab.nil? %>
g('game-setting-content-1').className='dis';
g('game-setting-tab-nav-1').className='game-setting-nav-hover';
<% else %>
g('game-setting-content-<%= @tab %>').className='dis';
g('game-setting-tab-nav-<%= @tab %>').className='game-setting-nav-hover';
<% end %>
});
function g(o){
return document.getElementById(o);
}
function HoverLi(n){
for(var i=1;i<=3;i++){
g('game-setting-tab-nav-'+i).className='';
g('game-setting-content-'+i).className='undis';
}
g('game-setting-content-'+n).className='dis';
g('game-setting-tab-nav-'+n).className='game-setting-nav-hover';
$.get('<%= course_statistics_course_path() %>'+'?tab='+n);
}
</script>

View File

@ -1,5 +1,7 @@
<% if !params[:tab] || params[:tab] == "activity" %>
<% if !params[:tab] || params[:tab] == "1" %>
$("#act_table_<%=@course.id %>").html("<%= escape_javascript(render :partial => 'act_table')%>");
<% else %>
<% elsif params[:tab] == "2" %>
$("#hero_table_<%=@course.id %>").html("<%= escape_javascript(render :partial => 'hero_table')%>");
<% elsif params[:tab] == "3" %>
$("#project_table_<%=@course.id %>").html("<%= escape_javascript(render :partial => 'project_table')%>");
<% end %>

View File

@ -55,11 +55,7 @@
<% eu = ExerciseUser.where("exercise_id=? and user_id=? and status=?",exercise.id, User.current.id, true).first %>
<div>
<%= link_to (index.to_i+1).to_s+". "+exercise_name, exercise_path(exercise.id), :title => "#{exercise_name}", :class => "polls_title polls_title_st fl c_dblue "%>
<% if exercise.exercise_status == 1 %>
<span class="exercise_status_nop fl"></span>
<% elsif exercise.exercise_status == 2 %>
<span class="exercise_status_pub fl"></span>
<% else %>
<% if exercise.exercise_status == 3 %>
<span class="exercise_status_end fl"></span>
<% end%>
<% if eu && exercise.end_time >= eu.created_at %>

View File

@ -1,38 +1,41 @@
<script src="/javascripts/i18n/jquery.ui.datepicker-zh-CN.js" type="text/javascript"></script>
<span class="uploadText mb10" style="margin-top: -20px;">发布设置</span>
<!--<div class="resourcePopupClose"> <a href="javascript:void(0);" class="resourceClose"></a></div>-->
<%= form_tag(republish_file_course_file_path(@course,@file), :multipart => true,:remote => !ie8?,:name=>"upload_form") do %>
<div class="mb10">
<label class="fl c_dark f14" style="margin-top: 4px;">延期发布:</label>
<div class="calendar_div fl">
<input type="text" name="publish_time" id="attachment_publish_time" placeholder="发布日期" class="InputBox fl W120 calendar_input" readonly="readonly" value="<%=@file.publish_time %>">
<%#= calendar_for('attachment_publish_time')%>
<script src="/javascripts/jquery.datetimepicker.js" type="text/javascript"></script>
<div id="muban_popup_box" style="width:300px;">
<div class="muban_popup_top">
<h3 class="fl">发布设置</h3>
<a href="javascript:void(0);" class="muban_icons_close fr" onclick="$('#datetimepicker_mask').datetimepicker('destroy');"></a>
<div class="cl"></div>
</div>
<div class="muban_popup_con clear mt15" style="margin-left: 47px;">
<%= form_tag(republish_file_course_file_path(@course,@file), :multipart => true,:remote => !ie8?,:name=>"upload_form") do %>
<div class="mb10">
<label class="fl c_dark f14" style="margin-top: 4px;">延期发布:</label>
<div class="calendar_div fl">
<input type="text" name="publish_time" id="datetimepicker_mask" placeholder="发布时间" style="width: 130px;" class="InputBox fl calendar_input" value="<%=format_time(@file.publish_time) %>">
<%#= calendar_for('attachment_publish_time')%>
</div>
<span class="fl c_red" style="margin-top: 4px;" id="publish_time_notice"></span>
<div class="cl"></div>
</div>
<a href="javascript:void(0);" class="fr sy_btn_blue" style="margin-right: 95px;" id="submit_file" onclick="submit_republish_file();">确定</a>
<a href="javascript:void(0);" class="fr sy_btn_grey mr5" onclick="$('#datetimepicker_mask').datetimepicker('destroy');hideModal();">取消</a>
<% end %>
</div>
<span class="fl c_red" style="margin-top: 4px;" id="publish_time_notice"></span>
<div class="cl"></div>
</div>
<!--<div class="mt15"> <span class="f14 fontGrey3 mr10">延期发布:</span>
<input type="text" name="" placeholder="请输入0-50数值" class="markInput" />
</div>-->
<div>
<div class="courseSendSubmit"><a href="javascript:void(0);" onclick="submit_republish_file()" class="sendSourceText" id="submit_file">确定</a></div>
<div class="courseSendCancel"><a href="javascript:void(0);" onclick="hideModal()" class="sendSourceText linkGrey6">取消</a></div>
</div>
<% end %>
<div class="cl"></div>
<script>
function regex_publish_time()
{
var myDate = new Date();
if($.trim($("#attachment_publish_time").val()) == "")
if($.trim($("#datetimepicker_mask").val()) == "")
{
$("#publish_time_notice").text("发布日期不能为空");
$("#publish_time_notice").text("发布时间不能为空");
return false;
} else{
var publish_time = Date.parse($("#attachment_publish_time").val());
if(Date.parse(formate_date(myDate)) > publish_time)
var publish_time = Date.parse($("#datetimepicker_mask").val());
if(Date.parse(formate_time(myDate)) > publish_time)
{
$("#publish_time_notice").text("发布日期不能小于当前日期");
$("#publish_time_notice").text("发布时间不能小于当前时间");
return false;
}
else
@ -45,11 +48,17 @@
function submit_republish_file()
{
if(regex_publish_time()) {
$('#submit_file').parent().parent().submit();
$('#submit_file').parent().submit();
}
}
$(function(){
var datepickerOptions={dateFormat: 'yy-mm-dd', firstDay: 0, showOn: 'button', buttonImageOnly: true, buttonImage: '/images/public_icon.png', showButtonPanel: true, showWeek: true, showOtherMonths: true, selectOtherMonths: true};
$('#attachment_publish_time').datepicker(datepickerOptions);
$('#datetimepicker_mask').datetimepicker({
allowBlank:true,
lang:'ch',
format:'Y-m-d H:i',
formatTime:'H:i',
formatDate:'Y-m-d',
validateOnBlur:false
});
});
</script>

View File

@ -1,6 +1,6 @@
<span class="add_attachment" data-containerid="<%= container.id %>">
<% checkBox = (@course.present? && @course.is_public?) ? 'public' : 'private'%>
<button name="button" class="sub_btn" onclick="_file<%=container.id %>.click()" onmouseover="this.focus()" style="<%= ie8? ? 'display:none' : ''%>" type="button" ><%= l(:label_browse) %></button>
<button name="button" class="sub_btn" onclick="_file<%=container.id %>.click()" onmouseover="this.focus()" style="<%= ie8? ? 'display:none' : ''%>" type="button" >文件浏览</button>
<%= file_field_tag 'attachments[dummy][file]',
:id => "_file#{container.id}",
:class => ie8? ? '':'file_selector',
@ -26,8 +26,7 @@
<span id="upload_file_count<%=container.id %>">
<%= l(:label_no_file_uploaded)%>
</span>
(<%= l(:label_max_size) %>:
<%= number_to_human_size(Setting.attachment_max_size.to_i.kilobytes) %>)
<span class="fr c_blue" style="margin-right: <%= container.class.to_s == 'Course' ? 58 : 45 %>px;">单个文件最大限制:<%= number_to_human_size(Setting.attachment_max_size.to_i.kilobytes) %></span>
<div class="cl"></div>
<div>
<span id="attachments_fields<%= container.id %>" data-containerid="<%= container.id %>" xmlns="http://www.w3.org/1999/html">

View File

@ -41,12 +41,8 @@
function project_files_upload()
{
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'files/upload_project_files',:locals => {:project => @project, :project_attachment_type => 1}) %>');
showModal('ajax-modal', '513px');
$('#ajax-modal').siblings().remove();
$('#ajax-modal').before("<a href='javascript:void(0)' onclick='hideModal()' style='margin-left: 480px;'><img src='/images/bid/close.png' width='26px' height='26px' /></a>");
$('#ajax-modal').parent().css("top","40%").css("left","36%").css("border","3px solid #269ac9");
$('#ajax-modal').parent().addClass("popbox_polls");
var htmlvalue = '<%= escape_javascript(render :partial => 'files/upload_project_files',:locals => {:project => @project,:project_attachment_type => 1}) %>';
pop_box_new(htmlvalue, 450, 275);
}
</script>

View File

@ -24,7 +24,7 @@
<%end %>
</span>
<% if file.is_publish == 0 %>
<span class="grey_homework_btn_cir ml5"><%=file.publish_time %>&nbsp;&nbsp;0点发布</span>
<span class="grey_homework_btn_cir ml5"><%= format_time file.publish_time %>点发布</span>
<% end %>
</div>
<div class="mt5">

View File

@ -1,50 +1,75 @@
<script src="/javascripts/i18n/jquery.ui.datepicker-zh-CN.js" type="text/javascript"></script>
<div id="popbox_upload" class="mb10" style="margin-top: -30px;color:#15bccf; font-size:16px;">
<div class="upload_con">
<h2 style="text-align: center"><%= l(:label_upload_files)%></h2>
<div class="upload_box">
<script src="/javascripts/jquery.datetimepicker.js" type="text/javascript"></script>
<div id="muban_popup_box" style="width:450px;">
<div class="muban_popup_top">
<h3 class="fl">上传资源</h3>
<a href="javascript:void(0);" class="muban_icons_close fr" onclick="$('#datetimepicker_mask').datetimepicker('destroy');"></a>
<div class="cl"></div>
</div>
<div class="muban_popup_con clear mt15 ml55">
<div class="">
<%= error_messages_for 'attachment' %>
<div id="network_issue" style="color: red; display: none;"><%= l(:label_file_upload_error_messages)%></div>
<%= form_tag(course_files_path(course), :multipart => true,:remote => !ie8?,:name=>"upload_form") do %>
<input type="hidden" name="in_course_toolbar" value="Y">
<!--<p class="c_grey fr mt10 mr5">-->
<div class="c_dark">
<input name="course_attachment_type[]" type="checkbox" value="1" checked class="c_dark" >课件</input>&nbsp;<span class="c_grey">|</span>&nbsp;
<input name="course_attachment_type[]" type="checkbox" value="2" class="c_dblue">软件</input>&nbsp;<span class="c_grey">|</span>&nbsp;
<input name="course_attachment_type[]" type="checkbox" value="3" class="c_dblue">媒体</input>&nbsp;<span class="c_grey">|</span>&nbsp;
<input name="course_attachment_type[]" type="checkbox" value="4" class="c_dblue">代码</input>&nbsp;<span class="c_grey">|</span>&nbsp;
<input name="course_attachment_type[]" type="checkbox" value="6" class="c_dblue">论文</input>&nbsp;<span class="c_grey">|</span>&nbsp;
<input name="course_attachment_type[]" type="checkbox" value="5" class="c_dblue">其他</input></a>
</div>
<ul class="c_dark mt10 mb10 f14 attachment_type_ul">
<li class="fl">
<input id="atta_type_1" name="course_attachment_type[]" type="checkbox" value="1" checked class="fl" />
<label for="atta_type_1" class="c_grey fl ml5">课件&nbsp;|&nbsp;</label>
</li>
<li class="fl">
<input id="atta_type_2" name="course_attachment_type[]" type="checkbox" value="2" class="fl"/>
<label for="atta_type_2" class="c_grey fl ml5">软件&nbsp;|&nbsp;</label>
</li>
<li class="fl">
<input id="atta_type_3" name="course_attachment_type[]" type="checkbox" value="3" class="fl"/>
<label for="atta_type_3" class="c_grey fl ml5">媒体&nbsp;|&nbsp;</label>
</li>
<li class="fl">
<input id="atta_type_4" name="course_attachment_type[]" type="checkbox" value="4" class="fl"/>
<label for="atta_type_4" class="c_grey fl ml5">代码&nbsp;|&nbsp;</label>
</li>
<li class="fl">
<input id="atta_type_5" name="course_attachment_type[]" type="checkbox" value="5" class="fl"/>
<label for="atta_type_5" class="c_grey fl ml5">论文&nbsp;|&nbsp;</label>
</li>
<li class="fl">
<input id="atta_type_6" name="course_attachment_type[]" type="checkbox" value="6" class="fl"/>
<label for="atta_type_6" class="c_grey fl ml5">其他</label>
</li>
</ul>
<div class="cl"></div>
<div>
<div class="mb10">
<%= render :partial => 'files/new_style_attachment_list',:locals => {:container => course} %>
</div>
<div class="cl"></div>
<div class="mb5">
<% if User.current.allowed_to?(:as_teacher,course) %>
<div class="mb10">
<label class="fl c_dark f14" style="margin-top: 4px;">延期发布:</label>
<div class="calendar_div fl ml10">
<input type="text" name="publish_time" id="datetimepicker_mask" placeholder="发布时间(可选)" style="width: 130px;" class="InputBox fl calendar_input" readonly="readonly">
</div>
<div class="cl"></div>
<span class="c_red f12" style="margin-top: 4px;" id="publish_time_notice"></span>
<div class="cl"></div>
</div>
<% end %>
<div class="mb10">
<label class="fl c_dark f14" style="margin-top: 4px;">附件描述:</label>
<div class="fl">
<input type="text" name="description" placeholder="文件描述" class="InputBox fl W160">
<div class="fl ml10">
<textarea name="description" placeholder="介绍一下您的资源,让它得到更多人的青睐吧~" style="width: 249px; height: 60px; font-size: 12px;" class="InputBox fl"></textarea>
</div>
<div class="cl"></div>
</div>
<% if User.current.allowed_to?(:as_teacher,course) %>
<div class="mb5">
<label class="fl c_dark f14" style="margin-top: 4px;">延期发布:</label>
<div class="calendar_div fl">
<input type="text" name="publish_time" id="attachment_publish_time" placeholder="发布日期(可选)" class="InputBox fl W120 calendar_input" readonly="readonly">
<%#= calendar_for('attachment_publish_time')%>
</div>
<span class="fl c_red f12" style="margin-top: 4px;" id="publish_time_notice"></span>
<div class="cl"></div>
</div>
<% end %>
<a href="javascript:void(0);" class=" fr courseSendCancel mr40" onclick="hideModal();"><%= l(:button_cancel)%></a>
<a id="submit_resource" href="javascript:void(0);" class="c_white courseSendSubmit fr" onclick="submit_course_resource();"><%= l(:button_confirm)%></a>
<%#= submit_tag '确定',:onclick=>'submit_course_resource();',:onfocus=>'this.blur()',:id=>'submit_resource',:class=>'sendSourceText fr' %>
<% end %>
<a href="javascript:void(0);" class="fr sy_btn_blue" style="margin-right: 59px;" id="submit_resource" onclick="submit_course_resource();">确定</a>
<a href="javascript:void(0);" class="fr sy_btn_grey mr5" onclick="$('#datetimepicker_mask').datetimepicker('destroy');hideModal();">取消</a>
<div class="cl"></div>
<% end %>
</div>
</div>
@ -57,16 +82,15 @@
function regex_publish_time()
{
var myDate = new Date();
if($.trim($("#attachment_publish_time").val()) == "")
if($.trim($("#datetimepicker_mask").val()) == "")
{
return true;
} else{
var publish_time = Date.parse($("#attachment_publish_time").val());
if(Date.parse(formate_date(myDate)) > publish_time)
var publish_time = Date.parse($("#datetimepicker_mask").val());
if(Date.parse(formate_time(myDate)) > publish_time)
{
$("#publish_time_notice").text("发布日期不能小于当前日期");
$("#publish_time_notice").text("发布时间不能小于当前时间");
return false;
}
else
{
@ -86,7 +110,13 @@
<% end %>
}
$(function(){
var datepickerOptions={dateFormat: 'yy-mm-dd', firstDay: 0, showOn: 'button', buttonImageOnly: true, buttonImage: '/images/public_icon.png', showButtonPanel: true, showWeek: true, showOtherMonths: true, selectOtherMonths: true};
$('#attachment_publish_time').datepicker(datepickerOptions);
$('#datetimepicker_mask').datetimepicker({
allowBlank:true,
lang:'ch',
format:'Y-m-d H:i',
formatTime:'H:i',
formatDate:'Y-m-d',
validateOnBlur:false
});
});
</script>

View File

@ -1,38 +1,61 @@
<div id="muban_popup_box" style="width:450px;">
<div class="muban_popup_top">
<h3 class="fl">上传资源</h3>
<a href="javascript:void(0);" class="muban_icons_close fr"></a>
<div class="cl"></div>
</div>
<div id="popbox_upload" class="mb10" style="margin-top: -30px;color:#15bccf; font-size:16px;">
<div class="upload_con">
<h2 style="text-align: center"><%= l(:label_upload_files)%></h2>
<div class="upload_box">
<div class="muban_popup_con clear mt15 ml40">
<div class="">
<%= error_messages_for 'attachment' %>
<div id="network_issue" style="color: red; display: none;"><%= l(:label_file_upload_error_messages)%></div>
<%= form_tag(project_files_path(project), :multipart => true, :remote => !ie8?, :name=>"upload_form") do %>
<input type="hidden" name="in_project_toolbar" value="Y">
<!--<p class="c_grey fr mt10 mr5">-->
<div class="c_dark">
<input name="project_attachment_type[]" type="checkbox" value="1" checked class="c_dblue">软件版本</input>&nbsp;<span class="c_grey">|</span>&nbsp;
<input name="project_attachment_type[]" type="checkbox" value="2" class="c_dblue">文档</input>&nbsp;<span class="c_grey">|</span>&nbsp;
<input name="project_attachment_type[]" type="checkbox" value="3" class="c_dblue">代码</input>&nbsp;<span class="c_grey">|</span>&nbsp;
<input name="project_attachment_type[]" type="checkbox" value="4" class="c_dblue">媒体</input>&nbsp;<span class="c_grey">|</span>&nbsp;
<input name="project_attachment_type[]" type="checkbox" value="5" class="c_dblue">论文</input>&nbsp;<span class="c_grey">|</span>&nbsp;
<input name="project_attachment_type[]" type="checkbox" value="6" class="c_dblue">其他</input></a>
</div>
<ul class="c_dark mt10 mb10 f14 attachment_type_ul">
<li class="fl">
<input id="atta_type_1" name="project_attachment_type[]" type="checkbox" value="1" checked class="fl" />
<label for="atta_type_1" class="c_grey fl ml5">软件版本&nbsp;|&nbsp;</label>
</li>
<li class="fl">
<input id="atta_type_2" name="project_attachment_type[]" type="checkbox" value="2" class="fl"/>
<label for="atta_type_2" class="c_grey fl ml5">文档&nbsp;|&nbsp;</label>
</li>
<li class="fl">
<input id="atta_type_3" name="project_attachment_type[]" type="checkbox" value="3" class="fl"/>
<label for="atta_type_3" class="c_grey fl ml5">代码&nbsp;|&nbsp;</label>
</li>
<li class="fl">
<input id="atta_type_4" name="project_attachment_type[]" type="checkbox" value="4" class="fl"/>
<label for="atta_type_4" class="c_grey fl ml5">媒体&nbsp;|&nbsp;</label>
</li>
<li class="fl">
<input id="atta_type_5" name="project_attachment_type[]" type="checkbox" value="5" class="fl"/>
<label for="atta_type_5" class="c_grey fl ml5">论文&nbsp;|&nbsp;</label>
</li>
<li class="fl">
<input id="atta_type_6" name="project_attachment_type[]" type="checkbox" value="6" class="fl"/>
<label for="atta_type_6" class="c_grey fl ml5">其他</label>
</li>
</ul>
<div class="cl"></div>
<div>
<div class="mb10">
<%= render :partial => 'files/new_style_attachment_list',:locals => {:container => project} %>
</div>
<div class="cl"></div>
<div class="mb5">
<label class="fl c_dark f14" style="margin-top: 4px;">文件描述:</label>
<div class="fl">
<input type="text" name="description" placeholder="文件描述" class="InputBox fl W160">
<div class="mb10">
<label class="fl c_dark f14" style="margin-top: 4px;">附件描述:</label>
<div class="fl ml10">
<textarea name="description" placeholder="介绍一下您的资源,让它得到更多人的青睐吧~" style="width: 276px; height: 60px; font-size: 12px;" class="InputBox fl"></textarea>
</div>
<div class="cl"></div>
</div>
<a href="javascript:void(0);" class="fr grey_btn mr40 f14 ml10" onclick="hideModal();"><%= l(:button_cancel)%></a>
<!--<a id="submit_resource" href="javascript:void(0);" class="blue_btn fr" onclick="submit_resource();"><%#= l(:button_confirm)%></a>-->
<%= submit_tag '确定',:onclick=>'submit_resource();', :onfocus=>'this.blur()', :id=>'submit_resource', :class=>'sendSourceText fr' %>
<a href="javascript:void(0);" class="fr sy_btn_blue" style="margin-right: 47px;" id="submit_resource" onclick="submit_resource();" onfocus="this.blur()">确定</a>
<a href="javascript:void(0);" class="fr sy_btn_grey mr5" onclick="hideModal();">取消</a>
<div class="cl"></div>
<% end %>
</div>

View File

@ -1,9 +1,2 @@
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'files/hidden_file',:locals => {:course => @course,:course_attachment_type => 1}) %>');
showModal('ajax-modal', '311px');
$('#ajax-modal').siblings().remove();
$('#ajax-modal').before("<a href='javascript:void(0)' onclick='hideModal()' style='margin-left: 290px;' class='resourceClose'></a>");
$('#ajax-modal').parent().css("top","").css("left","").css("border","3px solid #269ac9");
$('#ajax-modal').parent().addClass("popbox_polls").removeClass("resourceUploadPopup popbox");
//与更新版本弹窗js冲突新增样式代码
$('#ajax-modal').parent().css({"border":"3px solid #269ac9", "padding":"4px"});
$('#ajax-modal').css({"padding":"","min-height":""});
var htmlvalue = '<%= escape_javascript(render :partial => 'files/hidden_file',:locals => {:course => @course,:course_attachment_type => 1}) %>';
pop_box_new(htmlvalue, 300, 140);

View File

@ -124,13 +124,10 @@
<%= render :partial => 'layouts/group_children_list', :locals => {:course => @course, :is_teacher => is_teacher} %>
</div>
<% end %>
<% statistics_count = 0 %>
<% unless show_nav?(statistics_count) %>
<li id="sy_10" class="sy_icons_st">
<a href="<%=course_statistics_course_path(@course) %>">统计<span></span></a>
<!--<a href="javascript:void(0);" class="sy_class_add"></a>-->
</li>
<% end %>
<li id="sy_010" class="sy_icons_st">
<a href="<%=course_statistics_course_path(@course) %>">统计</a>
<!--<a href="javascript:void(0);" class="sy_class_add"></a>-->
</li>
<%# 工具栏展开 %>
<% if @course.homework_commons.count == 0 || @course.news.count == 0 || course_file_num == 0 || course_poll_count == 0 || @course.exercises.count == 0 ||
course_feedback_count == 0 || @course.exercises.count == 0 || (@course.boards.first ? @course.boards.first.topics.count : 0) == 0 || statistics_count == 0%>
@ -243,15 +240,8 @@
});
//资源库上传附件
function course_files_upload(){
$('#ajax-modal').html('<%= escape_javascript(render :partial => 'files/upload_course_files',:locals => {:course => @course,:course_attachment_type => 1}) %>');
showModal('ajax-modal', '513px');
$('#ajax-modal').siblings().remove();
$('#ajax-modal').before("<a href='javascript:void(0)' onclick='hideModal()' style='margin-left: 480px;'><img src='/images/bid/close.png' width='26px' height='26px' /></a>");
$('#ajax-modal').parent().css("top","").css("left","").css("border","3px solid #269ac9");
$('#ajax-modal').parent().addClass("popbox_polls");
//与更新版本弹窗js冲突新增样式代码
$('#ajax-modal').parent().css({"border":"3px solid #269ac9", "padding":"4px"});
$('#ajax-modal').css("padding","");
var htmlvalue = '<%= escape_javascript(render :partial => 'files/upload_course_files',:locals => {:course => @course,:course_attachment_type => 1}) %>';
pop_box_new(htmlvalue, 450, 275);
}
// 鼠标经过的时候显示内容
function message_titile_show(obj,e)

View File

@ -37,7 +37,7 @@
<p>= <%= (project_score.changeset_num||0) * 4 %>
+ <%= project_score.issue_num * 4 + project_score.issue_journal_num %> + <%= project_score.attach_num * 5 %>
+ <%= project_score.board_num * 2 + project_score.board_message_num + project_score.news_num %></p>
+ <%= project_score.board_num * 2 + project_score.board_message_num %></p>
<% end %>
</div>
</div>

View File

@ -24,15 +24,18 @@
<% end%>
<div class="cl"></div>
<li >
<span class="tit_fb ">编程代码:</span>
<div class="showHworkP break_word"><pre id="work-src_<%= work.id%>" style="display: none;"><%= work.description if work.description%></pre><div class="fontGrey2 font_cus" id="work-code_<%= work.id%>">
<li>
<span class="tit_fb">编程代码:</span>
<div class="showHworkP break_word">
<pre id="work-src_<%= work.id%>" style="display: none;"><%= work.description if work.description%></pre>
<div class="fontGrey2 font_cus" id="work-code_<%= work.id%>">
</div>
</div>
<div class="cl"></div>
</li>
<li class="mt10 fl">
<div class="cl"></div>
<li class="mt10">
<span class="tit_fb ">
测试结果:
</span>
@ -52,50 +55,65 @@
<%= test.results.first %>
</div>
<% else %>
<div class="ProResultTable " >
<ul class="ProResultUl " >
<div class="ProResultTable">
<div class="ProResultUl">
<% test.results.reverse.each_with_index do |x, i| %>
<% unless x.nil? %>
<li >
<span class="w60 T_C">测试<%=test.results.size-i%></span>
<% if x["status"].to_i != 0 %>
<% if x["status"].to_i == 2 %>
<span class="w60 c_red">超时!</span>
<% else %>
<span class="w60 c_red">测试错误!</span>
<% end %>
<span class="w60">您的输出:</span>
<span class="width120"><pre style="white-space: pre-wrap; margin-right: 15px;"><%=x["result"].force_encoding("UTF-8")%> </pre></span>
<span class="w60">正确输出:</span>
<% unless x.nil? %>
<%= %>
<div>
<span class="w60 T_C">测试<%=test.results.size-i%></span>
<% if x["status"].to_i != 0 %>
<% if x["status"].to_i == 2 %>
<span class="w60 c_red">超时!</span>
<% else %>
<span class="w60 c_red">测试错误!</span>
<% end %>
<span style="width: 340px; padding-left: 20px;">
<a href="javascript:void(0)" class="linkBlue test_result_link_expand">查看</a>
</span>
<span class="width120"><pre style="white-space: pre-wrap; margin-right: 15px;"><%=x["output"].force_encoding("UTF-8")%></pre></span>
<span class="w50">耗时:</span>
<span class="w80"><pre><%=x["time_used"]==0?1:x["time_used"]%>毫秒</pre></span>
<div class="cl"></div>
<% else %>
<span class="w60 c_green">测试正确!</span>
<span style="width:360px;">&nbsp;</span>
<span class="w50">耗时:</span>
<span class="w80"><pre><%=x["time_used"]==0?1:x["time_used"]%>毫秒</pre></span>
<div class="cl"></div>
<% end %>
</li>
<% end %>
<span class="w50">耗时:</span>
<span class="w80"><pre><%=x["time_used"]==0?1:x["time_used"]%>毫秒</pre></span>
<div class="cl"></div>
<% else %>
<span class="w60 c_green">测试正确!</span>
<span style="width:360px;">&nbsp;</span>
<span class="w50">耗时:</span>
<span class="w80"><pre><%=x["time_used"]==0?1:x["time_used"]%>毫秒</pre></span>
<div class="cl"></div>
<% end %>
</div>
<% if x["status"].to_i != 0 %>
<div class="none test_result_block">
<div style="max-height: 350px; overflow: auto;">
<span style="width: 120px;">&nbsp;</span>
<span class="w60">您的输出:</span>
<span class="width120"><pre style="white-space: pre-wrap; margin-right: 15px;"><%=x["result"].force_encoding("UTF-8")%> </pre></span>
<span class="w60">正确输出:</span>
<span class="width120"><pre style="white-space: pre-wrap; margin-right: 15px;"><%=x["output"].force_encoding("UTF-8")%></pre></span>
</div>
<div class="cl"></div>
<p class="text_c c_blue">
<a href="javascript:void(0);" class="test_result_link_hidden linkBlue">收起</a>
</p>
</div>
<% end %>
<% end %>
<% end %>
</ul>
</div>
</div>
<% end %>
<% end %>
</div>
<div class="cl"></div>
</li>
<li >
<li>
<% if @is_teacher || (@homework.homework_detail_manual.comment_status == 2 && work.user != User.current )%>
<!-- 老师 || 开启匿评状态 && 不是当前用户自己的作品 -->
<div id="add_student_score_<%= work.id%>" class="mt10 evaluation">
<ul id="add_student_score_<%= work.id%>" class="mt10 evaluation">
<%= render :partial => 'add_score',:locals => {:work => work,:score => score,:is_member_work => false}%>
</div>
</ul>
<% end%>
<div class="cl"></div>
</li>
@ -119,6 +137,12 @@
<% if defined?(is_focus) && is_focus.to_i == 1 %>
$("#upload_revise_attachment").click();
<% end %>
$(".test_result_link_expand").on('click', function(){
$(this).parent().parent().next().toggle();
});
$(".test_result_link_hidden").on('click', function(){
$(this).parent().parent().toggle();
});
});
function show_upload(){
var htmlvalue = "<%= escape_javascript( render :partial => 'student_work/upload_attachment' ,:locals => {:work=>work})%>";

View File

@ -6,35 +6,35 @@
<th style="width:40px"></th>
<th><li class="fl ml5">作业标题</li></th>
<th style="width:160px">来源</th>
<th style="width:80px">类型</th>
<th style="width:80px">未评</th>
<th style="width:120px">截止剩余时间</th>
</tr>
</thead>
<tbody>
<% @anonymous_evaluation.each do |ae| %>
<tr>
<th class="homepageTabAvatar">
<td class="homepageTabAvatar">
<%= link_to image_tag(url_to_avatar(ae.user), :width => "30", :height => "30"), user_path(ae.user), :target => '_blank' %>
</th>
<th>
</td>
<td>
<li class="homepageTabTitle">
<%= link_to ae.name.to_s, student_work_index_url(:homework => ae.id, :tab => 2), :target => "_blank", :class => "homepageTabTitle fl ml5" %>
</li>
</th>
<th>
</td>
<td>
<li class="homepageTabProjectName ml5">
<%= link_to ae.course.try(:name), course_path(ae.course), :class => "homepageTabTitle ml5", :target => "_blank"%>
<li>
</th>
<th>
</td>
<td>
<li class="homepageTabAuthor ml5" >
<%= homework_type_tip(ae.homework_type) %>
<%= homework_evaluation_num(ae) %>
</li>
</th>
<th>
</td>
<td>
<li class="homepageTabTime ml5" >
<% end_time = ae.end_time.to_time.to_i + 24*60*60 - 1 %>
<% if end_time > Time.now.to_i %>
<% end_time = ae.homework_detail_manual.evaluation_end.to_time.to_i + 24*60*60 - 1 %>
<% if end_time > Time.now.to_i %>
<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> 分
@ -42,7 +42,7 @@
<span class="c_red">已截止</span>
<% end %>
</li>
</th>
</td>
</tr>
<% end %>
</tbody>

View File

@ -0,0 +1,8 @@
class ChangeAttachmentColumn < ActiveRecord::Migration
def up
change_column :attachments, :publish_time, :datetime
end
def down
end
end

View File

@ -0,0 +1,53 @@
class CreateCourseHomeworkStatistics < ActiveRecord::Migration
def change
create_table :course_homework_statistics do |t|
t.references :user
t.references :course
t.integer :committed_work_num, :default => 0
t.integer :un_commit_work_num, :default => 0
t.integer :late_commit_work_num, :default => 0
t.integer :absence_evaluation_work_num, :default => 0
t.integer :un_evaluation_work_num, :default => 0
t.integer :appeal_num, :default => 0
t.float :average_score, :default => 0
t.float :total_score, :default => 0
t.timestamps
end
count =Course.all.count / 30 + 2
transaction do
for i in 1 ... count do i
Course.page(i).per(30).each do |course|
hw_count = course.homework_commons.includes(:homework_detail_manual).where("homework_detail_manuals.comment_status > 0").count
homework_ids = course.homework_commons.empty? ? "(-1)" : "(" + course.homework_commons.map{|hw| hw.id}.join(",") + ")"
student_works = StudentWork.where("homework_common_id in #{homework_ids} and work_status !=0")
is_eva_homeworks = course.homework_commons.includes(:homework_detail_manual).where("homework_commons.anonymous_comment = 0 and homework_detail_manuals.comment_status = 2")
is_eva_student_works = StudentWork.where(:homework_common_id => is_eva_homeworks.map{|hw| hw.id})
has_eva_homeworks = course.homework_commons.includes(:homework_detail_manual).where("homework_commons.anonymous_comment = 0 and homework_detail_manuals.comment_status = 3")
has_eva_student_works = StudentWork.where(:homework_common_id => has_eva_homeworks.map{|hw| hw.id})
course.student.each do |student|
user = student.student
if user
committed_work_num = user.student_works.where("homework_common_id in #{homework_ids} and work_status != 0").count
un_commit_work_num = (hw_count - committed_work_num) < 0 ? 0 : (hw_count - committed_work_num)
late_commit_work_num = user.student_works.where("homework_common_id in #{homework_ids} and work_status = 2").count
absence_evaluation_work_num = user.student_works_evaluation_distributions.where(:student_work_id => has_eva_student_works.map(&:id)).count -
user.student_works_scores.where(:reviewer_role => 3, :student_work_id => has_eva_student_works.map(&:id)).group_by(&:student_work_id).count
absence_evaluation_work_num = absence_evaluation_work_num < 0 ? 0 : absence_evaluation_work_num
un_evaluation_work_num = user.student_works_evaluation_distributions.where(:student_work_id => is_eva_student_works.map(&:id)).count -
user.student_works_scores.where(:reviewer_role => 3, :student_work_id => is_eva_student_works.map(&:id)).group_by(&:student_work_id).count
un_evaluation_work_num = un_evaluation_work_num < 0 ? 0 : un_evaluation_work_num
appeal_num = user.student_works_scores.where(:student_work_id => student_works.map(&:id), :appeal_status => 3).count
average_score = user.student_works.where(:id => student_works.map(&:id)).select("AVG(student_works.work_score) as score").first ? user.student_works.where(:id => student_works.map(&:id)).select("AVG(student_works.work_score) as score").first.score : 0
total_score = user.student_works.where(:id => student_works.map(&:id)).select("SUM(student_works.work_score) as score").first ? user.student_works.where(:id => student_works.map(&:id)).select("SUM(student_works.work_score) as score").first.score : 0
CourseHomeworkStatistics.create(:course_id => course.id, :user_id => user.id, :committed_work_num => committed_work_num, :un_commit_work_num => un_commit_work_num,
:late_commit_work_num => late_commit_work_num, :absence_evaluation_work_num => absence_evaluation_work_num, :un_evaluation_work_num => un_evaluation_work_num,
:appeal_num => appeal_num, :average_score => average_score, :total_score => total_score)
end
end
end
end
end
end
end

View File

@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
ActiveRecord::Schema.define(:version => 20170120021457) do
ActiveRecord::Schema.define(:version => 20170209020934) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
@ -196,7 +196,7 @@ ActiveRecord::Schema.define(:version => 20170120021457) do
t.integer "copy_from"
t.integer "quotes"
t.integer "is_publish", :default => 1
t.date "publish_time"
t.datetime "publish_time"
end
add_index "attachments", ["author_id"], :name => "index_attachments_on_author_id"

View File

@ -32,6 +32,10 @@ namespace :homework_evaluation do
student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: pro_work.user_id, student_work_id: h.id)
student_works_evaluation_distributions.save
end
#更新CourseHomeworkStatistics中该学生的待匿评数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(homework_common.course_id, pro_work.user_id)
course_statistics.update_attribute('un_evaluation_work_num', course_statistics.un_evaluation_work_num + n) if course_statistics
end
else
student_works.each_with_index do |work, index|
@ -43,6 +47,10 @@ namespace :homework_evaluation do
student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: user.id, student_work_id: h.id)
student_works_evaluation_distributions.save
end
#更新CourseHomeworkStatistics中该学生的待匿评数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(homework_common.course_id, user.id)
course_statistics.update_attribute('un_evaluation_work_num', course_statistics.un_evaluation_work_num + n) if course_statistics
end
end
homework_detail_manual.update_column('comment_status', 2)
@ -87,6 +95,11 @@ namespace :homework_evaluation do
absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids} and reviewer_role = 3").count
student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * homework_detail_manual.absence_penalty : 0
student_work.save
#更新CourseHomeworkStatistics中该学生的待匿评数和缺评数
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(homework_common.course_id, student_work.user_id)
course_statistics.update_attribute('un_evaluation_work_num', (course_statistics.un_evaluation_work_num - absence_penalty_count) < 0 ? 0 : (course_statistics.un_evaluation_work_num - absence_penalty_count)) if course_statistics
course_statistics.update_attribute('absence_evaluation_work_num', course_statistics.absence_evaluation_work_num + absence_penalty_count) if course_statistics
end
# 未参与匿评

View File

@ -26,6 +26,13 @@ namespace :homework_publishtime do
ActiveRecord::Base.connection.execute sql
end
end
#更新CourseHomeworkStatistics中每个学生的未交作品数
homework.course.student.each do |student|
course_statistics = CourseHomeworkStatistics.find_by_course_id_and_user_id(homework.course_id, student.student_id)
course_statistics.update_attribute('un_commit_work_num', course_statistics.un_commit_work_num + 1) if course_statistics
end
course = homework.course
course.members.each do |m|
homework.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => course.id, :viewed => false, :status => nil)

View File

@ -236,6 +236,7 @@ function _getBasePath() {
// End of modification by Macrow
K.basePath = _getBasePath();
K.options = {
placeholder : '',
designMode : true,
fullscreenMode : false,
filterMode : true,
@ -4783,6 +4784,9 @@ function _bindTabEvent() {
function _bindFocusEvent() {
var self = this;
K(self.edit.textarea[0], self.edit.win).focus(function(e) {
if(/^\s*<\w*\s*\w*\=\"\w*\"\s*\w*\=\"\w*\:\s*\#\d*\;\s*\w*\-\w*\:\s*\w*\;\"\>[\u4e00-\u9fa5]*[\uFF1A][\u4e00-\u9fa5]*[\uFF0C][\u4e00-\u9fa5]*[\uFF0C][\u4e00-\u9fa5]*[\uFF0C][\u4e00-\u9fa5]*<\/\w*\>\s*$/.test(self.edit.html())){
self.edit.html('');
}
if(typeof self.options.enable_at === 'function'){
self.options.enable_at();
}
@ -4790,6 +4794,9 @@ function _bindFocusEvent() {
self.afterFocus.call(self, e);
}
}).blur(function(e) {
if(self.isEmpty()) {
self.edit.html("<span id='hint' style='color:#999999;font-size:12px;'>" + self.placeholder + "</span>");
}
if (self.afterBlur) {
self.afterBlur.call(self, e);
}
@ -5168,11 +5175,14 @@ KEditor.prototype = {
}
self.afterCreate();
if (self.options.afterCreate) {
if (typeof self.options.afterCreate == 'string'){
self.options.afterCreate = eval(self.options.afterCreate);
}
if (typeof self.options.afterCreate == 'string'){
self.options.afterCreate = eval(self.options.afterCreate);
}
self.options.afterCreate.call(self);
}
if (self.placeholder != "" && self.edit.html() == "") {
self.edit.html("<span id='hint' style='color:#999999;font-size:12px;'>" + self.placeholder + "</span>");
}
}
});
//statusbar.removeClass('statusbar').addClass('ke-statusbar')

View File

@ -1775,7 +1775,7 @@ function notice_box(str){
//提示框:只有一个确定按钮,点击跳转
function notice_box_redirect(url, str){
var htmlvalue = '<div id="muban_popup_box" style="width:300px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+
var htmlvalue = '<div id="muban_popup_box" style="width:300px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="'+ url +'" class="muban_icons_close fr"></a></div>'+
'<div class="clear mt15"><p class="text_c f14">' + str + '</p><div class="cl"></div>'+
'<a href="'+ url +'" class="fr sy_btn_blue mt10 mr10" style="margin-right: 124px;">确定</a></div></div>';
pop_box_new(htmlvalue, 300, 140);

View File

@ -842,6 +842,23 @@ function formate_date(date){
return str;
}
function formate_time(time){
var str = "";
var year = time.getFullYear();
var month = time.getMonth() + 1;
var day = time.getDate();
var hour = time.getHours();
var min = time.getMinutes();
if(month < 10) {
month = '0' + month;
}
if(day < 10) {
day = '0' + day;
}
str = year + '-' + month + '-' + day + ' ' + hour + ':' + min;
return str;
}
//验证发送到课程
function regex_course_id(){
var course_id = $("#course_id").val();

File diff suppressed because one or more lines are too long

View File

@ -179,6 +179,23 @@ function formate_date(date){
return str;
}
function formate_time(time){
var str = "";
var year = time.getFullYear();
var month = time.getMonth() + 1;
var day = time.getDate();
var hour = time.getHours();
var min = time.getMinutes();
if(month < 10) {
month = '0' + month;
}
if(day < 10) {
day = '0' + day;
}
str = year + '-' + month + '-' + day + ' ' + hour + ':' + min;
return str;
}
//验证发送到课程
function regex_course_id(){
var course_id = $("#course_id").val();

View File

@ -112,7 +112,7 @@ h4{ font-size:14px;}/*color:#3b3b3b;*/
.w108 {width:108px;}.w125{width:125px;}.w128{ width:128px;}.w130{ width:130px;}.w140{ width:140px;}.w145{ width:145px;}.w150{ width:150px;}
.w160{width:160px !important;}.w170{width:170px;}.w180{width:180px;}.w186{ width:186px;}.w190{width: 190px;}.w196{ width:196px;}.w200{width: 200px;}.w210{ width:210px;}
.w230{width:230px !important;}.w235{ width:235px !important;}.w265{ width: 265px;}.w270{ width: 270px;}.w280{ width:280px;}.w289{ width:289px !important;}.w290{ width:290px !important;}
.w300{ width:300px !important;}.w305{ width:305px;}.w350 {width:350px;}.w362 {width:362px;}.h400{height:400px !important;}.w430{ width:430px;}
.w300{ width:300px !important;}.w305{ width:305px;}.w350 {width:350px;}.w360 {width:360px;}.w362 {width:362px;}.h400{height:400px !important;}.w430{ width:430px;}
.W440{ width:440px;}.w450 {width:450px;}.w455{width:455px !important;}.w459{ width:459px;}.w460{ width:460px;}.w465{width:465px !important;}
.w490{width:490px;}.w536{ width:536px;}.w543{ width:543px;}.w557{ width:557px;}.w570 {width:570px !important;}.w576{ width:576px;}.w590{ width:590px !important;}
.w607 {width:607px;}.w664{ width:664px;}.w683{ width:683px;}.w610{ width:610px;}.w600{ width:600px !important;}.w603{ width:603px !important;}

View File

@ -31,7 +31,7 @@ a.remove-upload {background: url(/images/delete.png) no-repeat 1px 50%;width: 1p
a.FilesName{ max-width:540px;overflow:hidden; white-space:nowrap; text-overflow:ellipsis; display:block;}
a.FilesName02{ max-width:665px;overflow:hidden; white-space:nowrap; text-overflow:ellipsis; display:block;}
.ProResultUl span { display:block; float:left;}
.ProResultUl li{ line-height:35px; border-bottom:1px solid #dddddd; }
.ProResultUl>div{ line-height:35px; border-bottom:1px solid #dddddd; }
.DateBorder{border:1px solid #d9d9d9; border-left:none; padding:7px 6px 6px 6px;}
a.UsersEditBtn{ display:block; width:55px; height:20px; border:1px solid #6d6d6d; color:#fff; background:#888888 url(/images/homepage_icon.png) -11px -35px no-repeat; padding-left:25px; line-height:1.9;-moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px;}
a:hover.UsersEditBtn{ color:#484848; background:#888888 url(/images/homepage_icon2.png) -11px -74px no-repeat;}
@ -327,6 +327,7 @@ a.work_list_tit{width:580px; display:block; overflow:hidden; font-size:14px; f
.evaluation{position: relative;}
.evaluation_submit{position: absolute;right: 0px;bottom: 0px;}
.student_work_search{background-color: #3b94d6;color: white !important;padding: 2px 7px;margin-left: 10px;cursor: pointer; }
.test_result_block{border-bottom: 1px solid #dddddd; line-height: 35px;}
/* 与我相关 */
a.about_me{text-align:center;font-size:16px; color:#3b94d6; margin:10px 0 0 10px;}
a:hover.about_me{ color:#0781b4;}
@ -524,12 +525,14 @@ a.banner-course-notice {position: absolute; font-size: 12px; line-height: 20px;
.game-setting-h3{ width: 100%; height: 40px; line-height: 40px; font-size: 14px; color: #666; font-weight: normal; background: #fff; border-bottom: 10px solid #eaebec;}
.t-center{ text-align: center;}
.table-td-w20{ width: 18%;}
.table-td-w9{ width: 9%;}
.table-td-w10{ width: 10%;}
.table-td-w10-5{ width: 10.5%;}
.table-td-w30{ width: 30%;}
.new_project_title_width {font-size: 14px;color: #666; max-width: 180px;font-weight: normal;white-space: nowrap;overflow: hidden; text-overflow: ellipsis;}
.new_project_title_width {font-size: 12px;color: #666; max-width: 170px;font-weight: normal;white-space: nowrap;overflow: hidden; text-overflow: ellipsis;}
.syllabus_class_property { font-size: 12px; padding: 0 5px;border-radius: 3px;line-height: 14px;}
.syllabus_class_private {color: #ff4a1b;border: 1px solid #ff4a1b;}
.syllabus_class_open { color: #7dd26c; border: 1px solid #7dd26c;}
.st_tips_box_inner{ position: absolute;line-height: 2.0;padding: 5px 10px; white-space: nowrap; background-color: #fff; left:100px; top: -5px; box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5);}
.st_tips_box_inner span { display: block; border-width: 10px;position: absolute;top: 15px; left: -18px; border-style: dashed solid dashed dashed;border-color: transparent #fff transparent transparent;font-size: 0;line-height: 0;}
.course_class_users_st_name{ display: inline-block;width:120px; overflow:hidden;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.course_class_users_st_name{ display: inline-block;width:120px; overflow:hidden;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

View File

@ -7,7 +7,6 @@ a:hover.muban_icons_close{background: url(/images/sy/sy_icons_close.png) -40px 0
#muban_popup_box input,#muban_popup_box select{ border:1px solid #c8c8c8; height: 28px; color: #888;}
#muban_popup_box label.pop_box_label{width: 100px; text-align: right; display: inline-block;}
input.radio-width90{ width: 90px; }
#muban_popup_box input,#muban_popup_box select{ border:1px solid #c8c8c8; height: 28px; color: #888;}
#muban_popup_box label.pop_box_label_l {width: 100px; text-align: left; display: inline-block;}
/*模板表格 20161013byLB*/
.muban_table{ width:100%; background:#fff; border:1px solid #e5e5e5; border-bottom: none; }

View File

@ -941,4 +941,6 @@ a.syllabusbox_a_blue{ color:#3b94d6;}
.patner-box li{ float: left; margin:0px 10px 20px; height: 40px; border:1px solid #ddd; padding:10px 5px;}
.patner-box li:hover{border:1px solid #ccc;}
.patner-box li:hover{border:1px solid #ccc;}
.attachment_type_ul li label{line-height: 28px;}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,6 @@
FactoryGirl.define do
factory :course_homework_statistic, :class => 'CourseHomeworkStatistics' do
end
end

View File

@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe CourseHomeworkStatistics, :type => :model do
pending "add some examples to (or delete) #{__FILE__}"
end