diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 0fd4cc2c9..1478bceae 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -162,6 +162,7 @@ class CoursesController < ApplicationController @subPage_title = l :label_student_list @canShowCode = User.current.allowed_to?(:as_teacher,@course) && params[:role] != '1' # @is_remote = true + @sort_type = 'score' @score_sort_by = "desc" q = "#{params[:name].strip}" if params[:incourse] @@ -185,9 +186,11 @@ class CoursesController < ApplicationController group.course_id = @course.id group.save end + @sort_type = 'score' + @score_sort_by = "desc" @canShowCode = User.current.allowed_to?(:as_teacher,@course) && params[:role] != '1' @is_remote = true - @members = student_homework_score(0,0, 10,"desc") + @members = student_homework_score(0,0, 10,@score_sort_by) @course_groups = @course.course_groups end @@ -196,7 +199,9 @@ class CoursesController < ApplicationController @subPage_title = l :label_student_list @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1' @is_remote = true - + @sort_type = 'score' + @score_sort_by = "desc" + @members = student_homework_score(0,0, 10,@score_sort_by) @course_groups = @course.course_groups end @@ -281,6 +286,7 @@ class CoursesController < ApplicationController @render_file = 'new_member_list' @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1' @is_remote = true + @sort_type = 'score' @score_sort_by = "desc" if params[:group_id] && params[:group_id] != "0" @group = CourseGroup.find(params[:group_id]) @@ -298,6 +304,7 @@ class CoursesController < ApplicationController @render_file = 'new_member_list' @score_sort_by = "desc" + @sort_type = "score" @canShowCode = User.current.allowed_to?(:as_teacher,@course) && params[:role] != '1' @role = params[:role].nil? ? '2':params[:role] @is_remote = true @@ -312,7 +319,7 @@ class CoursesController < ApplicationController if @course.open_student == 1 || User.current.member_of_course?(@course) @subPage_title = l :label_student_list page = params[:page].nil? ? 0 : (params['page'].to_i - 1) - @all_members = student_homework_score(0,page, 10,"desc") + @all_members = student_homework_score(0,page, 10,@score_sort_by) @members = @all_members else render_403 @@ -350,28 +357,29 @@ class CoursesController < ApplicationController @subPage_title = l :label_student_list @render_file = 'new_member_list' @is_remote = true + @sort_type = params[:sort_type] if params[:sort_type] @score_sort_by = params[:sort_by] if params[:sort_by] @search_name = params[:search_name] if params[:search_name] group_id = params[:group_id] if !@search_name.nil? if group_id == '0' page = params[:page].nil? ? 0 : (params['page'].to_i - 1) - @results = searchmember_by_name(student_homework_score(0,0,0,@score_sort_by), @search_name) + @results = searchmember_by_name(student_homework_score(0,0,0,@score_sort_by,@sort_type), @search_name) @result_count = @results.count # @results = paginateHelper @results, 10 else @group = CourseGroup.find(group_id) - @results = searchmember_by_name(student_homework_score(group_id, 0, 0,@score_sort_by),@search_name) + @results = searchmember_by_name(student_homework_score(group_id, 0, 0,@score_sort_by,@sort_type),@search_name) @result_count = @results.count # @results = paginateHelper @results, 10 end else if group_id == '0' page = params[:page].nil? ? 0 : (params['page'].to_i - 1) - @results = student_homework_score(0,page, 10,@score_sort_by) + @results = student_homework_score(0,page, 10,@score_sort_by,@sort_type) else @group = CourseGroup.find(group_id) - @results = student_homework_score(group_id, 0, 0,@score_sort_by) + @results = student_homework_score(group_id, 0, 0,@score_sort_by,@sort_type) end end end @@ -384,6 +392,15 @@ class CoursesController < ApplicationController end end + # 显示每个学生的作业评分详情 + def show_member_act_score + @member = Member.find(params[:member_id]) if params[:member_id] + respond_to do |format| + format.html {render :layout => 'course_base'} + format.js + end + end + def handle_course courses, activities course_activity_count_array=activities.values() course_array=[] @@ -1149,7 +1166,7 @@ class CoursesController < ApplicationController end end - def student_homework_score(groupid,start_from, nums, score_sort_by) + def student_homework_score(groupid,start_from, nums, score_sort_by, sort_type = 'score') start_from = start_from * nums sql_select = "" if groupid == 0 @@ -1159,11 +1176,13 @@ class CoursesController < ApplicationController WHERE student_works.homework_common_id = homework_commons.id AND homework_commons.course_id = #{@course.id} AND student_works.user_id = members.user_id - ) AS score + ) AS score,(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 ) FROM `course_contributor_scores` AS ccs WHERE ccs.course_id = 577 AND ccs.user_id = members.user_id + ) AS act_score FROM members JOIN students_for_courses ON students_for_courses.student_id = members.user_id AND students_for_courses.course_id = members.course_id - WHERE members.course_id = #{@course.id} ORDER BY score #{score_sort_by}" + WHERE members.course_id = #{@course.id} ORDER BY #{sort_type} #{score_sort_by}" else sql_select = "SELECT members.*,( SELECT SUM(student_works.work_score) @@ -1171,11 +1190,13 @@ class CoursesController < ApplicationController WHERE student_works.homework_common_id = homework_commons.id AND homework_commons.course_id = #{@course.id} AND student_works.user_id = members.user_id - ) AS score + ) AS score,(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 ) FROM `course_contributor_scores` AS ccs WHERE ccs.course_id = 577 AND ccs.user_id = members.user_id + ) AS act_score FROM members JOIN students_for_courses ON students_for_courses.student_id = members.user_id AND students_for_courses.course_id = members.course_id - WHERE members.course_id = #{@course.id} AND members.course_group_id = #{groupid} ORDER BY score #{score_sort_by}" + WHERE members.course_id = #{@course.id} AND members.course_group_id = #{groupid} ORDER BY #{sort_type} #{score_sort_by}" end sql = ActiveRecord::Base.connection() homework_scores = Member.find_by_sql(sql_select) @@ -1225,8 +1246,7 @@ class CoursesController < ApplicationController sheet1[5,i+4] = "第"+(i+1).to_s+"次" end sheet1[5,homeworks.count+4] = "总成绩" - sheet1[5,0] = "排名" - sheet1[5,0] = "排名" + sheet1[5,homeworks.count+5] = "活跃度" count_row = 6 members.each_with_index do |member, i| sheet1[count_row,0]= i+1 @@ -1236,14 +1256,15 @@ class CoursesController < ApplicationController homeworks.each_with_index do |homework, j| student_works = homework.student_works.where("user_id = #{member.user.id}") if student_works.empty? - sheet1[count_row,j+4] = format("%0.2f",0) + sheet1[count_row,j+4] = 0 else final_score = student_works.first.final_score.nil? ? 0 : student_works.first.final_score score = final_score - student_works.first.absence_penalty - student_works.first.late_penalty - sheet1[count_row,j+4] = format("%0.2f",score <0 ? 0:score) + sheet1[count_row,j+4] = score <0 ? 0:score.round(2) end end - sheet1[count_row,homeworks.count+4] = format("%0.2f",member.score.nil? ? 0:member.score.to_s) + sheet1[count_row,homeworks.count+4] = member.score.nil? ? 0:member.score.round(2) + sheet1[count_row,homeworks.count+5] = member.act_score.nil? ? 0:member.act_score count_row += 1 end diff --git a/app/views/courses/_new_member_list.html.erb b/app/views/courses/_new_member_list.html.erb index bf69c3a61..ef8a43d5c 100644 --- a/app/views/courses/_new_member_list.html.erb +++ b/app/views/courses/_new_member_list.html.erb @@ -24,16 +24,24 @@
");
+$('#ajax-modal').parent().css("top","30%").css("left","40%").css("position","fixed").css("border","3px solid #269ac9");
+$('#ajax-modal').parent().addClass("new-watcher");
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index 0feb60098..451d3e0a7 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1060,6 +1060,7 @@ RedmineApp::Application.routes.draw do
match "addgroups", :via => [:post, :get]
match 'deletegroup', :via => [:delete]
match 'show_member_score', :via => [:get]
+ match 'show_member_act_score', :via => [:get]
match 'valid_ajax', :to => 'courses#valid_ajax', :via => :get
post 'join_in/join_group', :to => 'courses#join_group', :as => 'join_group'
delete 'join_in/join_group', :to => 'courses#unjoin_group'
diff --git a/db/migrate/20160517013659_alter_course_contributor_score_default.rb b/db/migrate/20160517013659_alter_course_contributor_score_default.rb
new file mode 100644
index 000000000..488dab848
--- /dev/null
+++ b/db/migrate/20160517013659_alter_course_contributor_score_default.rb
@@ -0,0 +1,52 @@
+class AlterCourseContributorScoreDefault < ActiveRecord::Migration
+ def up
+ change_column :course_contributor_scores, :message_num, :integer, :default => 0
+ change_column :course_contributor_scores, :message_reply_num, :integer, :default => 0
+ change_column :course_contributor_scores, :news_reply_num, :integer, :default => 0
+ change_column :course_contributor_scores, :news_num, :integer, :default => 0
+ change_column :course_contributor_scores, :resource_num, :integer, :default => 0
+ change_column :course_contributor_scores, :journal_num, :integer, :default => 0
+ change_column :course_contributor_scores, :journal_reply_num, :integer, :default => 0
+ change_column :course_contributor_scores, :homework_journal_num, :integer, :default => 0
+ change_column :course_contributor_scores, :total_score, :integer, :default => 0
+
+ count = CourseContributorScore.all.count / 30 + 2
+ transaction do
+ for i in 1 ... count do i
+ CourseContributorScore.page(i).per(30).each do |cs|
+ if cs.message_num.nil?
+ cs.message_num = 0
+ end
+ if cs.message_reply_num.nil?
+ cs.message_reply_num = 0
+ end
+ if cs.news_reply_num.nil?
+ cs.news_reply_num = 0
+ end
+ if cs.news_num.nil?
+ cs.news_num = 0
+ end
+ if cs.resource_num.nil?
+ cs.resource_num = 0
+ end
+ if cs.journal_num.nil?
+ cs.journal_num = 0
+ end
+ if cs.journal_reply_num.nil?
+ cs.journal_reply_num = 0
+ end
+ if cs.homework_journal_num.nil?
+ cs.homework_journal_num = 0
+ end
+ if cs.total_score.nil?
+ cs.total_score = 0
+ end
+ cs.save
+ end
+ end
+ end
+ end
+
+ def down
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index d5334c43c..9b317fd9e 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20160511055221) do
+ActiveRecord::Schema.define(:version => 20160517013659) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
@@ -450,15 +450,15 @@ ActiveRecord::Schema.define(:version => 20160511055221) do
create_table "course_contributor_scores", :force => true do |t|
t.integer "course_id"
t.integer "user_id"
- t.integer "message_num"
- t.integer "message_reply_num"
- t.integer "news_reply_num"
- t.integer "resource_num"
- t.integer "journal_num"
- t.integer "journal_reply_num"
+ t.integer "message_num", :default => 0
+ t.integer "message_reply_num", :default => 0
+ t.integer "news_reply_num", :default => 0
+ t.integer "resource_num", :default => 0
+ t.integer "journal_num", :default => 0
+ t.integer "journal_reply_num", :default => 0
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
- t.integer "total_score"
+ t.integer "total_score", :default => 0
t.integer "homework_journal_num", :default => 0
t.integer "news_num", :default => 0
end
@@ -1107,6 +1107,23 @@ ActiveRecord::Schema.define(:version => 20160511055221) do
t.integer "viewed_count", :default => 0
end
+ create_table "mess", :id => false, :force => true do |t|
+ t.string "课程名"
+ t.integer "课程ID", :default => 0, :null => false
+ t.string "教师姓", :default => "", :null => false
+ t.string "教师名", :limit => 30, :default => "", :null => false
+ t.string "主贴名", :default => "", :null => false
+ t.integer "主贴或回帖ID", :default => 0, :null => false
+ t.integer "回帖对应主贴ID"
+ t.integer "帖子点赞数"
+ t.integer "主贴回复数", :default => 0, :null => false
+ t.text "主贴或回帖内容"
+ t.datetime "发帖时间", :null => false
+ t.integer "发帖或回帖用户ID", :default => 0, :null => false
+ t.string "发帖或回帖用户姓", :default => "", :null => false
+ t.string "发帖或回帖用户名", :limit => 30, :default => "", :null => false
+ end
+
create_table "message_alls", :force => true do |t|
t.integer "user_id"
t.integer "message_id"
@@ -1328,6 +1345,7 @@ ActiveRecord::Schema.define(:version => 20160511055221) do
t.boolean "allow_guest_download", :default => true
t.integer "visits", :default => 0
t.integer "show_mode", :default => 0
+ t.integer "allow_teacher", :default => 0
end
create_table "phone_app_versions", :force => true do |t|
@@ -2043,6 +2061,7 @@ ActiveRecord::Schema.define(:version => 20160511055221) do
t.string "salt", :limit => 64
t.integer "gid"
t.integer "visits", :default => 0
+ t.integer "excellent_teacher", :default => 0
end
add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id"
diff --git a/public/stylesheets/courses.css b/public/stylesheets/courses.css
index 758e59296..cd9f88651 100644
--- a/public/stylesheets/courses.css
+++ b/public/stylesheets/courses.css
@@ -560,6 +560,8 @@ a:hover.st_img { border:1px solid #1c9ec7; }
a:hover.st_add{ color:#ff8e15;}
.classbox_on{ border:1px solid #f8df8c; background:#f6f098; padding:0 3px; float:left; margin-left:15px;}
.classbox_on a{ color:#716cad;}
+.st_list_score {width:105px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis; float:left; vertical-align:middle; font-size:12px; text-align:center;}
+
/* 创建课程courses*/
.courses_input{ border:1px solid #64bdd9; height:16px; width:532px; background:#fff; margin-bottom:10px; padding:5px;}
.courses_input_w{ width:300px;}