don't list groups from inactive enrollments in menu
just like we hide inactive enrollments from the "Courses" menu, also hide groups from courses that don't have an active enrollments in the groups portion of the "Courses & Groups" variation of the menu fixes #5797 Change-Id: I91a9fd742b04faab5d97793b6baa17409a4f043a Reviewed-on: https://gerrit.instructure.com/5901 Tested-by: Hudson <hudson@instructure.com> Reviewed-by: Cody Cutrer <cody@instructure.com>
This commit is contained in:
parent
ec1a042a5e
commit
f86aacc138
|
@ -526,26 +526,24 @@ var I18n = I18n || {};
|
|||
|
||||
def menu_groups_locals
|
||||
{
|
||||
:collection => @current_user.cached_current_group_memberships,
|
||||
:collection => @current_user.menu_data[:group_memberships],
|
||||
:collection_size => @current_user.menu_data[:group_memberships_count],
|
||||
:partial => "shared/menu_group_membership",
|
||||
:collection_size => @current_user.cached_current_group_memberships.length,
|
||||
:max_to_show => 8,
|
||||
:more_link_for_over_max => groups_path,
|
||||
:title => t('#menu.current_groups', "Current Groups"),
|
||||
:course_name_counts => @current_user.menu_data[:course_name_counts],
|
||||
:link_text => raw(t('#layouts.menu.view_all_groups', 'View all groups'))
|
||||
}
|
||||
end
|
||||
|
||||
def menu_accounts_locals
|
||||
{
|
||||
:collection => @current_user.accounts,
|
||||
:collection => @current_user.menu_data[:accounts],
|
||||
:collection_size => @current_user.menu_data[:accounts_count],
|
||||
:partial => "shared/menu_account",
|
||||
:collection_size => @current_user.accounts.length,
|
||||
:max_to_show => 8,
|
||||
:more_link_for_over_max => accounts_path,
|
||||
:title => t('#menu.managed_accounts', "Managed Accounts"),
|
||||
:course_name_counts => @current_user.menu_data[:course_name_counts],
|
||||
:link_text => raw(t('#layouts.menu.view_all_accounts', 'View all accounts'))
|
||||
}
|
||||
end
|
||||
|
|
|
@ -105,4 +105,11 @@ class GroupMembership < ActiveRecord::Base
|
|||
end
|
||||
|
||||
def self.serialization_excludes; [:uuid]; end
|
||||
|
||||
# true iff 'active' and the pair of user and group's course match one of the
|
||||
# provided enrollments
|
||||
def active_given_enrollments?(enrollments)
|
||||
state != :requested && state != :deleted &&
|
||||
enrollments.any?{ |e| e.user == self.user && e.course == self.group.context }
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1856,6 +1856,7 @@ class User < ActiveRecord::Base
|
|||
|
||||
def set_menu_data(enrollment_uuid)
|
||||
max_to_show = 8
|
||||
|
||||
coalesced_enrollments = []
|
||||
course_name_counts = {}
|
||||
has_completed_enrollment = false
|
||||
|
@ -1895,11 +1896,22 @@ class User < ActiveRecord::Base
|
|||
end
|
||||
end
|
||||
coalesced_enrollments = coalesced_enrollments.sort_by{|e| e[:sortable] || [999,999, 999] }
|
||||
|
||||
active_enrollments = coalesced_enrollments.map{ |e| e[:enrollment] }
|
||||
cached_group_memberships = self.cached_current_group_memberships
|
||||
coalesced_group_memberships = cached_group_memberships.
|
||||
select{ |gm| gm.active_given_enrollments?(active_enrollments) }.
|
||||
sort_by{ |gm| gm.group.name }
|
||||
|
||||
@menu_data = {
|
||||
:enrollments => coalesced_enrollments,
|
||||
:enrollments_count => cached_enrollments.length,
|
||||
:course_name_counts => course_name_counts,
|
||||
:has_completed_enrollment => has_completed_enrollment,
|
||||
:group_memberships => coalesced_group_memberships,
|
||||
:group_memberships_count => cached_group_memberships.length,
|
||||
:accounts => self.accounts,
|
||||
:accounts_count => self.accounts.length,
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<a href="<%= dashboard_path %>" class="menu-item-title">
|
||||
<%= @current_user.cached_current_group_memberships.empty? ? t('links.courses', "Courses") : t('links.courses_and_groups', "Courses & Groups") -%>
|
||||
<%= @current_user.menu_data[:group_memberships_count].zero? ? t('links.courses', "Courses") : t('links.courses_and_groups', "Courses & Groups") -%>
|
||||
<span class="menu-item-title-icon"></span></a>
|
||||
<div class="menu-item-drop">
|
||||
<table cellspacing="0">
|
||||
|
|
|
@ -54,6 +54,35 @@ describe "enrollment_date_restrictions" do
|
|||
page.css(".past_enrollments li").should be_empty
|
||||
end
|
||||
|
||||
it "should not list groups from inactive enrollments in the menu" do
|
||||
@student = user_with_pseudonym
|
||||
@course1 = course(:course_name => "Course 1", :active_all => 1)
|
||||
e1 = student_in_course(:user => @student, :active_all => 1)
|
||||
@group1 = @course1.groups.create(:name => "Group 1")
|
||||
@group1.add_user(@student)
|
||||
|
||||
@course2 = course(:course_name => "Course 2", :active_all => 1)
|
||||
|
||||
@course.update_attributes(:start_at => 2.days.from_now, :conclude_at => 4.days.from_now, :restrict_enrollments_to_course_dates => true)
|
||||
e2 = student_in_course(:user => @student, :active_all => 1)
|
||||
@group2 = @course2.groups.create(:name => "Group 1")
|
||||
@group2.add_user(@student)
|
||||
|
||||
Enrollment.update_all(["created_at = ?", 1.minute.ago]) # need to make created_at and updated_at different
|
||||
|
||||
user_session(@student, @pseudonym)
|
||||
|
||||
get "/"
|
||||
page = Nokogiri::HTML(response.body)
|
||||
list = page.css(".menu-item-drop-column-list li").to_a
|
||||
# course lis are still there and view all groups should always show up when
|
||||
# there's at least one 'visible' group
|
||||
list.size.should == 4
|
||||
list.select{ |li| li.text =~ /Group 1/ }.should_not be_empty
|
||||
list.select{ |li| li.text =~ /View all groups/ }.should_not be_empty
|
||||
list.select{ |li| li.text =~ /Group 2/ }.should be_empty
|
||||
end
|
||||
|
||||
it "should not show date inactive/completed courses in grades" do
|
||||
@course1 = course(:active_all => 1)
|
||||
@course2 = course(:active_all => 1)
|
||||
|
|
Loading…
Reference in New Issue