diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index bf964fbaf..63b8294e7 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -318,7 +318,6 @@ class CoursesController < ApplicationController
@canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1'
@role = params[:role]
@course_groups = @course.course_groups if @course.course_groups
- @course_group_id = params[:@course_group_id] unless params[:@course_group_id].nil?
@show_serch = params[:role] == '2'
case params[:role]
when '1'
@@ -340,6 +339,15 @@ class CoursesController < ApplicationController
render_403
end
+ end
+ # 显示每个学生的作业评分详情
+ def show_member_score
+ @member_score = Member.find(params[:member_id]) if params[:member_id]
+ respond_to do |format|
+ format.html {render :layout => 'course_base'}
+ format.js
+ end
+
end
#判断指定用户是否为课程教师
@@ -840,4 +848,6 @@ class CoursesController < ApplicationController
render_404
end
end
+
+
end
diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb
index a1199a55a..6f0265132 100644
--- a/app/helpers/courses_helper.rb
+++ b/app/helpers/courses_helper.rb
@@ -166,9 +166,25 @@ module CoursesHelper
def searchStudent project
#searchPeopleByRoles(project, StudentRoles)
members = []
+
project.members.each do |m|
- members << m if m && m.user && m.user.allowed_to?(:as_student,project)
+ if m && m.user && m.user.allowed_to?(:as_student,project)
+ members << m
+
+ end
+ end
+ members
+ end
+ def search_student_and_score project
+ #searchPeopleByRoles(project, StudentRoles)
+ members = []
+ scores = []
+ project.members.each do |m|
+ if m && m.user && m.user.allowed_to?(:as_student,project)
+ members << m
+
end
+ end
members
end
def searchStudent_by_name project, name
@@ -392,7 +408,13 @@ module CoursesHelper
return teacher_score_for_homework homework
end
end
-
+ def score_for_homework_new homework
+ if teacher_score_for_homework(homework) != 0
+ return teacher_score_for_homework homework
+ else
+ return student_score_for_homework homework
+ end
+ end
#获取作业的互评得分
def student_score_for_homework homework
#member = searchTeacherAndAssistant(homework.bid.courses.first).first#searchPeopleByRoles(homework.bid.courses.first,TeacherRoles).first
diff --git a/app/models/member.rb b/app/models/member.rb
index 716f6a7c5..32d0f5c73 100644
--- a/app/models/member.rb
+++ b/app/models/member.rb
@@ -114,9 +114,50 @@ class Member < ActiveRecord::Base
member
end
+ # 查找每个学生每个作业的评分
+ def student_homework_score
+ teachers = find_course_teachers(self.course)
+
+ score_count = 0
+ homework_scores = HomeworkAttach.find_by_sql("SELECT homework_attaches.bid_id as bid_id, bids.name as name,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach'
+ AND rateable_id = homework_attaches.id AND rater_id IN (#{teachers}) ) AS t_score,
+ (SELECT AVG(stars) FROM seems_rateable_rates WHERE rateable_type = 'HomeworkAttach'
+ AND rateable_id = homework_attaches.id AND rater_id NOT IN (#{teachers})) AS s_score
+ FROM homework_attaches, bids where homework_attaches.user_id = #{self.user_id}
+ and homework_attaches.bid_id IN (SELECT bid_id FROM homework_for_courses where course_id = #{self.course_id}
+ and homework_attaches.bid_id = bids.id)")
+ homework_scores.each do |homework|
+ if !homework.t_score.nil? && homework.t_score != 0
+ score = homework.t_score
+ else
+ if !homework.s_score.nil?
+ score= homework.s_score
+ else
+ score = 0
+ end
+ end
+ score_count = score_count + score
+ end
+ [homework_scores, format("%0.2f", score_count)]
+ end
protected
def validate_role
errors.add_on_empty :role if member_roles.empty? && roles.empty?
end
+
+
+ #获取课程的老师列表
+ def find_course_teachers course
+ searchTeacherAndAssistant(course).map{|teacher| teacher.user_id}.join(",")
+ end
+ def searchTeacherAndAssistant project
+ #searchPeopleByRoles(project, TeacherRoles)
+ members = []
+ project.members.each do |m|
+ members << m if m && m.user && m.user.allowed_to?(:as_teacher,project)
+ end
+ members
+ end
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 70e4e8187..cae5f1aa2 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -90,7 +90,7 @@ class User < Principal
has_many :contesting_projects, :dependent => :destroy
belongs_to :softapplication, :foreign_key => 'id', :dependent => :destroy
##ended by xianbo
-
+
#####fq
has_many :jours, :class_name => 'JournalsForMessage', :dependent => :destroy
has_many :journals_messages, :class_name => 'JournalsForMessage', :foreign_key => "user_id", :dependent => :destroy
@@ -105,7 +105,7 @@ class User < Principal
#has_many :courses, :through => :students_for_courses, :source => :project
has_many :acts, :class_name => 'Activity', :as => :act, :dependent => :destroy
has_many :file_commit, :class_name => 'Attachment', :foreign_key => 'author_id', :conditions => "container_type = 'Project' or container_type = 'Version'"
-####
+####
# added by bai
has_many :join_in_contests, :dependent => :destroy
has_many :news, :foreign_key => 'author_id'
diff --git a/app/views/courses/_groups_name.html.erb b/app/views/courses/_groups_name.html.erb
index ca0fed9c2..e1b138666 100644
--- a/app/views/courses/_groups_name.html.erb
+++ b/app/views/courses/_groups_name.html.erb
@@ -20,7 +20,7 @@
%>
<% end %>
<% if @canShowCode %>
-
+
<% end %>
<%= l(:label_search_member_count) %><%= @result_count %><%= l(:label_member_people) %>
<% end %> - <% members.each do |member| %> --
-diff --git a/app/views/courses/_show_member_score.html.erb b/app/views/courses/_show_member_score.html.erb new file mode 100644 index 000000000..57dd7b2be --- /dev/null +++ b/app/views/courses/_show_member_score.html.erb @@ -0,0 +1,58 @@ + + + +
<%= image_tag(url_to_avatar(@project), :class => 'avatar2') %> | -
-
|
-
-
|
-