From 7c1b86556dbab1592de5aa35595ec176b3303560 Mon Sep 17 00:00:00 2001 From: alan <547533434@qq.com> Date: Wed, 17 Dec 2014 17:36:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E3=80=8A=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E8=AF=84=E5=88=86=E5=BC=B9=E7=AA=97=E3=80=8B=E3=80=8A=E5=AD=A6?= =?UTF-8?q?=E7=94=9F=E5=88=97=E8=A1=A8=E5=A2=9E=E5=8A=A0=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E8=AF=84=E5=88=86=E3=80=8B=E4=B8=A4=E9=A1=B9=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=20Signed-off-by:=20alan=20<547533434@qq.com>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 12 +++- app/helpers/courses_helper.rb | 26 ++++++- app/models/member.rb | 41 +++++++++++ app/models/user.rb | 4 +- app/views/courses/_member_list.html.erb | 53 ++++++++++---- app/views/courses/_show_member_score.html.erb | 58 +++++++++++++++ app/views/courses/show_member_score.js.erb | 3 + app/views/layouts/contest_base.html.erb | 2 +- app/views/layouts/course_base.html.erb | 6 +- .../projects/show_projects_score.html.erb | 71 ------------------- app/views/users/_user_score.html.erb | 2 +- config/locales/zh.yml | 1 + config/routes.rb | 2 + public/stylesheets/course_group.css | 14 ++-- 14 files changed, 192 insertions(+), 103 deletions(-) create mode 100644 app/views/courses/_show_member_score.html.erb create mode 100644 app/views/courses/show_member_score.js.erb delete mode 100644 app/views/projects/show_projects_score.html.erb 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/_member_list.html.erb b/app/views/courses/_member_list.html.erb index 58a0da0b2..25d32716f 100644 --- a/app/views/courses/_member_list.html.erb +++ b/app/views/courses/_member_list.html.erb @@ -1,4 +1,4 @@ -
<%= 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') %> | -
-
|
-
-
|
-