/// <summary> /// Gets or sets the group. /// </summary> /// <param name="rockContext">The rock context.</param> /// <returns></returns> /// <value> /// The group. /// </value> public Group GetGroup(RockContext rockContext) { EnsureChildControls(); Group result = new Group(); result.Id = _hfGroupTypeId.ValueAsInt(); result.Guid = new Guid(_hfGroupGuid.Value); result.GroupTypeId = _hfGroupTypeId.ValueAsInt(); // get the current InheritedGroupTypeId from the Parent Editor just in case it hasn't been saved to the database CheckinGroupTypeEditor checkinGroupTypeEditor = GetParentGroupTypeEditor(this.Parent); if (checkinGroupTypeEditor != null) { result.GroupType = new GroupType(); result.GroupType.Id = result.GroupTypeId; result.GroupType.Guid = checkinGroupTypeEditor.GroupTypeGuid; result.GroupType.InheritedGroupTypeId = checkinGroupTypeEditor.InheritedGroupTypeId; } result.Name = _tbGroupName.Text; result.LoadAttributes(rockContext); // populate groupLocations with whatever is currently in the grid, with just enough info to repopulate it and save it later result.GroupLocations = new List <GroupLocation>(); foreach (var item in this.Locations) { var groupLocation = new GroupLocation(); groupLocation.LocationId = item.LocationId; groupLocation.Location = new Location { Id = item.LocationId, Name = item.Name, ParentLocationId = item.ParentLocationId }; result.GroupLocations.Add(groupLocation); } result.Groups = new List <Group>(); int childGroupOrder = 0; foreach (CheckinGroupEditor checkinGroupEditor in this.Controls.OfType <CheckinGroupEditor>()) { Group childGroup = checkinGroupEditor.GetGroup(rockContext); childGroup.Order = childGroupOrder++; result.Groups.Add(childGroup); } Rock.Attribute.Helper.GetEditValues(_phGroupAttributes, result); return(result); }
/// <summary> /// Creates the group attribute controls. /// </summary> public void CreateGroupAttributeControls(Group group) { // get the current InheritedGroupTypeId from the Parent Editor just in case it hasn't been saved to the database CheckinGroupTypeEditor checkinGroupTypeEditor = this.Parent as CheckinGroupTypeEditor; if (checkinGroupTypeEditor != null) { group.GroupType = new GroupType(); group.GroupType.Id = group.GroupTypeId; group.GroupType.InheritedGroupTypeId = checkinGroupTypeEditor.InheritedGroupTypeId; } if (group.Attributes == null) { group.LoadAttributes(); } _phGroupAttributes.Controls.Clear(); Rock.Attribute.Helper.AddEditControls(group, _phGroupAttributes, true); }
/// <summary> /// Creates the group type editor controls. /// </summary> /// <param name="groupType">Type of the group.</param> /// <param name="parentControl">The parent control.</param> /// <param name="rockContext">The rock context.</param> /// <param name="createExpanded">if set to <c>true</c> [create expanded].</param> private void CreateGroupTypeEditorControls( GroupType groupType, Control parentControl, RockContext rockContext, bool createExpanded = false ) { CheckinGroupTypeEditor groupTypeEditor = new CheckinGroupTypeEditor(); groupTypeEditor.ID = "GroupTypeEditor_" + groupType.Guid.ToString( "N" ); groupTypeEditor.SetGroupType( groupType.Id, groupType.Guid, groupType.Name, groupType.InheritedGroupTypeId ); groupTypeEditor.AddGroupClick += groupTypeEditor_AddGroupClick; groupTypeEditor.AddGroupTypeClick += groupTypeEditor_AddGroupTypeClick; groupTypeEditor.DeleteCheckinLabelClick += groupTypeEditor_DeleteCheckinLabelClick; groupTypeEditor.AddCheckinLabelClick += groupTypeEditor_AddCheckinLabelClick; groupTypeEditor.DeleteGroupTypeClick += groupTypeEditor_DeleteGroupTypeClick; groupTypeEditor.CheckinLabels = null; if ( createExpanded ) { groupTypeEditor.Expanded = true; } if ( GroupTypeCheckinLabelAttributesState.ContainsKey( groupType.Guid ) ) { groupTypeEditor.CheckinLabels = GroupTypeCheckinLabelAttributesState[groupType.Guid]; } if ( groupTypeEditor.CheckinLabels == null ) { // load CheckInLabels from Database if they haven't been set yet groupTypeEditor.CheckinLabels = new List<CheckinGroupTypeEditor.CheckinLabelAttributeInfo>(); groupType.LoadAttributes( rockContext ); List<string> labelAttributeKeys = CheckinGroupTypeEditor.GetCheckinLabelAttributes( groupType.Attributes, rockContext ).Select( a => a.Key ).ToList(); BinaryFileService binaryFileService = new BinaryFileService( rockContext ); foreach ( string key in labelAttributeKeys ) { var attributeValue = groupType.GetAttributeValue( key ); Guid binaryFileGuid = attributeValue.AsGuid(); var fileName = binaryFileService.Queryable().Where( a => a.Guid == binaryFileGuid ).Select( a => a.FileName ).FirstOrDefault(); if ( fileName != null ) { groupTypeEditor.CheckinLabels.Add( new CheckinGroupTypeEditor.CheckinLabelAttributeInfo { AttributeKey = key, BinaryFileGuid = binaryFileGuid, FileName = fileName } ); } } } parentControl.Controls.Add( groupTypeEditor ); // get the GroupType from the control just in case the InheritedFrom changed var childGroupGroupType = groupTypeEditor.GetCheckinGroupType( rockContext ); foreach ( var childGroup in groupType.Groups.OrderBy( a => a.Order ).ThenBy( a => a.Name ) ) { childGroup.GroupType = childGroupGroupType; CreateGroupEditorControls( childGroup, groupTypeEditor, rockContext, false ); } foreach ( var childGroupType in groupType.ChildGroupTypes .Where( t => t.Guid != groupType.Guid ) .OrderBy( a => a.Order ) .ThenBy( a => a.Name ) ) { CreateGroupTypeEditorControls( childGroupType, groupTypeEditor, rockContext ); } }
/// <summary> /// Creates the group type editor controls. /// </summary> /// <param name="groupType">Type of the group.</param> private void CreateGroupTypeEditorControls( GroupType groupType, Control parentControl, bool forceGroupTypeEditorVisible = false ) { CheckinGroupTypeEditor groupTypeEditor = new CheckinGroupTypeEditor(); groupTypeEditor.ID = "GroupTypeEditor_" + groupType.Guid.ToString( "N" ); groupTypeEditor.SetGroupType( groupType ); groupTypeEditor.AddGroupClick += groupTypeEditor_AddGroupClick; groupTypeEditor.AddGroupTypeClick += groupTypeEditor_AddGroupTypeClick; groupTypeEditor.DeleteCheckinLabelClick += groupTypeEditor_DeleteCheckinLabelClick; groupTypeEditor.AddCheckinLabelClick += groupTypeEditor_AddCheckinLabelClick; groupTypeEditor.DeleteGroupTypeClick += groupTypeEditor_DeleteGroupTypeClick; groupTypeEditor.CheckinLabels = null; groupTypeEditor.ForceContentVisible = forceGroupTypeEditorVisible; if ( GroupTypeCheckinLabelAttributesState.ContainsKey( groupType.Guid ) ) { groupTypeEditor.CheckinLabels = GroupTypeCheckinLabelAttributesState[groupType.Guid]; } if ( groupTypeEditor.CheckinLabels == null ) { // load CheckInLabels from Database if they haven't been set yet groupTypeEditor.CheckinLabels = new List<CheckinGroupTypeEditor.CheckinLabelAttributeInfo>(); groupType.LoadAttributes(); List<string> labelAttributeKeys = CheckinGroupTypeEditor.GetCheckinLabelAttributes( groupType ).Select( a => a.Key ).ToList(); BinaryFileService binaryFileService = new BinaryFileService(); foreach ( string key in labelAttributeKeys ) { var attributeValue = groupType.GetAttributeValue( key ); int binaryFileId = attributeValue.AsInteger() ?? 0; var binaryFile = binaryFileService.Get( binaryFileId ); if ( binaryFile != null ) { groupTypeEditor.CheckinLabels.Add( new CheckinGroupTypeEditor.CheckinLabelAttributeInfo { AttributeKey = key, BinaryFileId = binaryFileId, FileName = binaryFile.FileName } ); } } } parentControl.Controls.Add( groupTypeEditor ); foreach ( var childGroup in groupType.Groups.OrderBy( a => a.Order ).ThenBy( a => a.Name ) ) { // get the GroupType from the control just in case it the InheritedFrom changed childGroup.GroupType = groupTypeEditor.GetCheckinGroupType(); CreateGroupEditorControls( childGroup, groupTypeEditor, false ); } foreach ( var childGroupType in groupType.ChildGroupTypes.OrderBy( a => a.Order ).ThenBy( a => a.Name ) ) { CreateGroupTypeEditorControls( childGroupType, groupTypeEditor ); } }