diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 5fe27a041dc..9520de09378 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -47,7 +47,9 @@ class UsersController < ApplicationController
end
#@prior_enrollments.concat @user.concluded_enrollments.select{|e| e.is_a?(StudentEnrollment) }
- @student_enrollments = @current_enrollments.select{|e| e.is_a?(StudentEnrollment) }
+ @student_enrollments = @current_enrollments.
+ select{ |e| e.is_a?(StudentEnrollment) }.
+ inject({}){ |hash, e| hash[e.course] = e; hash }
@observer_enrollments = @current_enrollments.select{|e| e.is_a?(ObserverEnrollment) && e.associated_user_id }
@observed_enrollments = []
@@ -56,14 +58,16 @@ class UsersController < ApplicationController
end
@observed_enrollments = @observed_enrollments.uniq.compact
- if @current_enrollments.length + @observed_enrollments.length == 1# && @prior_enrollments.empty?
+ @teacher_enrollments = @current_enrollments.select{|e| e.instructor? }
+
+ if @student_enrollments.length + @teacher_enrollments.length + @observed_enrollments.length == 1# && @prior_enrollments.empty?
redirect_to course_grades_url(@current_enrollments.first.course_id)
return
end
- Enrollment.send(:preload_associations, @observed_enrollments, :course)
- @teacher_enrollments = @current_enrollments.select{|e| e.instructor? }
+ Enrollment.send(:preload_associations, @observed_enrollments, :course)
#Enrollment.send(:preload_associations, @prior_enrollments, :course)
+
@course_grade_summaries = {}
@teacher_enrollments.each do |enrollment|
@course_grade_summaries[enrollment.course_id] = Rails.cache.fetch(['computed_avg_grade_for', enrollment.course].cache_key) do
diff --git a/app/stylesheets/user_grades.sass b/app/stylesheets/user_grades.sass
new file mode 100644
index 00000000000..89c788f506b
--- /dev/null
+++ b/app/stylesheets/user_grades.sass
@@ -0,0 +1,22 @@
+.course_details
+ border-collapse: collapse
+ min-width: 400px
+ margin-left: 20px
+ border-spacing: 0
+ th
+ text-align: left
+ tr:hover td
+ background-color: #eee
+ td
+ border-bottom: 1px solid #ccc
+ .course
+ font-size: 1.2em
+ padding: 6px 50px 6px 5px
+ vertical-align: top
+ .percent
+ text-align: right
+ font-size: 1.2em
+ font-weight: bold
+ padding-right: 5px
+ .report
+ padding: 12px
diff --git a/app/views/users/grades.html.erb b/app/views/users/grades.html.erb
index c8fd8d6d25f..f080e1922d7 100644
--- a/app/views/users/grades.html.erb
+++ b/app/views/users/grades.html.erb
@@ -1,7 +1,9 @@
-<% add_crumb(@current_user.short_name, context_url(@current_user, :context_url))
- add_crumb(t('crumbs.grades', 'Grades'), grades_path) %>
-
-<% content_for :page_title, join_title(t(:page_title, "Grades"), @current_user.name) %>
+<%
+ content_for :page_title, join_title(t(:page_title, "Grades"), @current_user.name)
+ add_crumb(@current_user.short_name, context_url(@current_user, :context_url))
+ add_crumb(t('crumbs.grades', 'Grades'), grades_path)
+ jammit_css :user_grades
+%>
<% if false %>
<% #TODO: implement previous courses %>
@@ -11,62 +13,16 @@
<% end %>
<% end %>
-<% js_block do %>
-
-<% end %>
<% unless @student_enrollments.empty? %>
<%= t('titles.current_student_courses', "Courses I'm Taking") %>
-
-<% @student_enrollments.each do |enrollment| %>
+
+<% @student_enrollments.each do |course, enrollment| %>
- <%= enrollment.course.name %> |
+ <%= course.name %> |
- <% if enrollment.course.settings[:hide_final_grade] %>
+ <% if course.settings[:hide_final_grade] %>
--
<% elsif enrollment.computed_current_score %>
<%= enrollment.computed_current_score %>%
@@ -81,7 +37,7 @@ $(document).ready(function() {
<% end %>
<% unless @observed_enrollments.empty? %>
<%= t('linked_student_accounts', 'Linked Student Accounts') %>
-
+
<% @observed_enrollments.each do |enrollment| %>
<%= context_user_name(nil, enrollment.user_id) %>, <%= enrollment.course.name %> |
@@ -101,7 +57,7 @@ $(document).ready(function() {
<% end %>
<% unless @teacher_enrollments.empty? %>
<%= t('current_teacher_courses', "Courses I'm Teaching") %>
-
+
<% @teacher_enrollments.each do |enrollment| %>
<%= enrollment.course.name %> |
diff --git a/config/assets.yml b/config/assets.yml
index a3877a8bf8a..26358fe43a0 100644
--- a/config/assets.yml
+++ b/config/assets.yml
@@ -192,6 +192,8 @@ stylesheets:
- public/javascripts/vendor/slickgrid/slick.grid.css
sub_accounts:
- public/stylesheets/compiled/sub_accounts.css
+ user_grades:
+ - public/stylesheets/compiled/user_grades.css
user_logins:
- public/stylesheets/compiled/user_logins.css
account_settings:
diff --git a/spec/integration/users_controller_spec.rb b/spec/integration/users_controller_spec.rb
index 2ad6ab3f94c..ef2b3dca643 100644
--- a/spec/integration/users_controller_spec.rb
+++ b/spec/integration/users_controller_spec.rb
@@ -203,5 +203,21 @@ describe UsersController do
end
end
end
+
+ describe "#grades" do
+ it "should only list courses once for multiple enrollments" do
+ course_with_student_logged_in(:active_all => true)
+ @first_course = @course
+ add_section("other section")
+ multiple_student_enrollment(@student, @course_section)
+ course_with_student(:user => @student, :active_all => true)
+
+ get grades_url
+ student_grades = Nokogiri::HTML(response.body).css('.student_grades tr')
+ student_grades.length.should == 2
+ student_grades.text.should match /#{@first_course.name}/
+ student_grades.text.should match /#{@course.name}/
+ end
+ end
end
|