/// <summary> /// Returns breadcrumbs specific to the block that should be added to navigation /// based on the current page reference. This function is called during the page's /// oninit to load any initial breadcrumbs /// </summary> /// <param name="pageReference">The page reference.</param> /// <returns></returns> public override List <BreadCrumb> GetBreadCrumbs(PageReference pageReference) { var breadCrumbs = new List <BreadCrumb>(); int?groupMemberId = PageParameter(pageReference, "GroupMemberId").AsIntegerOrNull(); if (groupMemberId != null) { GroupMember groupMember = new GroupMemberService(new RockContext()).Get(groupMemberId.Value); if (groupMember != null) { var parentPageReference = PageReference.GetParentPageReferences(this.RockPage, this.PageCache, pageReference).LastOrDefault(); if (parentPageReference != null) { var groupIdParam = parentPageReference.QueryString["GroupId"].AsIntegerOrNull(); if (!groupIdParam.HasValue || groupIdParam.Value != groupMember.GroupId) { // if the GroupMember's Group isn't included in the breadcrumbs, make sure to add the Group to the breadcrumbs so we know which group the group member is in breadCrumbs.Add(new BreadCrumb(groupMember.Group.Name, true)); } } breadCrumbs.Add(new BreadCrumb(groupMember.Person.FullName, pageReference)); } else { breadCrumbs.Add(new BreadCrumb("New Group Member", pageReference)); } } else { // don't show a breadcrumb if we don't have a pageparam to work with } return(breadCrumbs); }