/// <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 ); } }