/// <summary> /// Creates the control(s) necessary for prompting user for a new value ( as Guid ) /// </summary> /// <param name="configurationValues">The configuration values.</param> /// <param name="id"></param> /// <returns> /// The control /// </returns> public override Control EditControl(Dictionary <string, ConfigurationValue> configurationValues, string id) { // If there are no configuration values then set to legacy defaults if (!configurationValues.Any()) { return(new LocationPicker { ID = id, AllowedPickerModes = LocationPickerMode.All }); } // Default allowed location picker modes is all LocationPickerMode allowedPickerModes = LocationPickerMode.All; // Get the selected current picker mode, use address if there isn't one specified. This is the mode the picker will start with unless the location specifies a different location type. var currentPickerMode = configurationValues[CURRENT_PICKER_MODE].Value.ConvertToEnumOrNull <LocationPickerMode>() ?? LocationPickerMode.Address; string[] allowedPickerModesConfig = null; if (configurationValues[ALLOWED_PICKER_MODES].Value.IsNotNullOrWhiteSpace()) { allowedPickerModesConfig = configurationValues[ALLOWED_PICKER_MODES].Value.Split(','); } if (allowedPickerModesConfig != null && allowedPickerModesConfig.Any()) { allowedPickerModes = LocationPickerMode.None; foreach (var allowedPickerMode in allowedPickerModesConfig) { allowedPickerModes |= allowedPickerMode.ConvertToEnum <LocationPickerMode>(); } } return(new LocationPicker { ID = id, CurrentPickerMode = currentPickerMode, AllowedPickerModes = allowedPickerModes }); }
/// <summary> /// logic to setup the groups location entry panel /// </summary> /// <param name="group">The group.</param> private void ConfigureGroupLocationControls(Group group) { var rockContext = new RockContext(); ddlMember.Items.Clear(); var groupType = GroupTypeCache.Read(group.GroupTypeId); if (groupType != null) { // only allow editing groups with single locations if (!groupType.AllowMultipleLocations) { GroupLocationPickerMode groupTypeModes = groupType.LocationSelectionMode; if (groupTypeModes != GroupLocationPickerMode.None) { // Set the location picker modes allowed based on the group type's allowed modes LocationPickerMode modes = LocationPickerMode.None; if ((groupTypeModes & GroupLocationPickerMode.Named) == GroupLocationPickerMode.Named) { modes = modes | LocationPickerMode.Named; } if ((groupTypeModes & GroupLocationPickerMode.Address) == GroupLocationPickerMode.Address) { modes = modes | LocationPickerMode.Address; } if ((groupTypeModes & GroupLocationPickerMode.Point) == GroupLocationPickerMode.Point) { modes = modes | LocationPickerMode.Point; } if ((groupTypeModes & GroupLocationPickerMode.Polygon) == GroupLocationPickerMode.Polygon) { modes = modes | LocationPickerMode.Polygon; } bool displayMemberTab = (groupTypeModes & GroupLocationPickerMode.GroupMember) == GroupLocationPickerMode.GroupMember; bool displayOtherTab = modes != LocationPickerMode.None; ulNav.Visible = displayOtherTab && displayMemberTab; pnlMemberSelect.Visible = displayMemberTab; pnlLocationSelect.Visible = displayOtherTab && !displayMemberTab; if (displayMemberTab) { var personService = new PersonService(rockContext); Guid previousLocationType = Rock.SystemGuid.DefinedValue.GROUP_LOCATION_TYPE_PREVIOUS.AsGuid(); foreach (GroupMember member in new GroupMemberService(rockContext).GetByGroupId(group.Id)) { foreach (Group family in personService.GetFamilies(member.PersonId)) { foreach (GroupLocation familyGroupLocation in family.GroupLocations .Where(l => l.IsMappedLocation && !l.GroupLocationTypeValue.Guid.Equals(previousLocationType))) { ListItem li = new ListItem( string.Format("{0} {1} ({2})", member.Person.FullName, familyGroupLocation.GroupLocationTypeValue.Value, familyGroupLocation.Location.ToString()), string.Format("{0}|{1}", familyGroupLocation.Location.Id, member.PersonId)); ddlMember.Items.Add(li); } } } } if (displayOtherTab) { locpGroupLocation.AllowedPickerModes = modes; } ddlLocationType.DataSource = groupType.LocationTypeValues.ToList(); ddlLocationType.DataBind(); LocationTypeTab = (displayMemberTab && ddlMember.Items.Count > 0) ? MEMBER_LOCATION_TAB_TITLE : OTHER_LOCATION_TAB_TITLE; var groupLocation = group.GroupLocations.FirstOrDefault(); if (groupLocation != null && groupLocation.Location != null) { if (displayOtherTab) { locpGroupLocation.CurrentPickerMode = locpGroupLocation.GetBestPickerModeForLocation(groupLocation.Location); locpGroupLocation.MapStyleValueGuid = GetAttributeValue("MapStyle").AsGuid(); if (groupLocation.Location != null) { locpGroupLocation.Location = new LocationService(rockContext).Get(groupLocation.Location.Id); } } if (displayMemberTab && ddlMember.Items.Count > 0 && groupLocation.GroupMemberPersonAliasId.HasValue) { LocationTypeTab = MEMBER_LOCATION_TAB_TITLE; int?personId = new PersonAliasService(rockContext).GetPersonId(groupLocation.GroupMemberPersonAliasId.Value); if (personId.HasValue) { ddlMember.SetValue(string.Format("{0}|{1}", groupLocation.LocationId, personId.Value)); } } else if (displayOtherTab) { LocationTypeTab = OTHER_LOCATION_TAB_TITLE; } ddlLocationType.SetValue(groupLocation.GroupLocationTypeValueId); } else { LocationTypeTab = (displayMemberTab && ddlMember.Items.Count > 0) ? MEMBER_LOCATION_TAB_TITLE : OTHER_LOCATION_TAB_TITLE; } rptLocationTypes.DataSource = _tabs; rptLocationTypes.DataBind(); ShowSelectedPane(); } } else { lContent.Text = "<div class='alert alert-warning'>This editor only allows editing groups with a single location.</div>"; } } }
private void LoadControls() { if (_group != null) { ltTitle.Text = "Recommit To Lead Group"; tbName.Text = _group.Name; cpCampus.SetValue(_group.CampusId); _group.LoadAttributes(); } else { _group = new Group() { Id = 0, GroupTypeId = _groupType.Id }; tbName.Text = _person.LastName + " Home"; ltTitle.Text = "Lead New Group"; } //Load schedule control if (_groupType.AllowedScheduleTypes != ScheduleType.None) { rblSchedule.Items.Clear(); ListItem liNone = new ListItem("None", "0"); liNone.Selected = _group != null && (_group.Schedule == null || _group.Schedule.ScheduleType == ScheduleType.None); rblSchedule.Items.Add(liNone); if (_groupType != null && (_groupType.AllowedScheduleTypes & ScheduleType.Weekly) == ScheduleType.Weekly) { ListItem li = new ListItem("Weekly", "1"); li.Selected = _group != null && _group.Schedule != null && _group.Schedule.ScheduleType == ScheduleType.Weekly; rblSchedule.Items.Add(li); } if (_groupType != null && (_groupType.AllowedScheduleTypes & ScheduleType.Custom) == ScheduleType.Custom) { ListItem li = new ListItem("Custom", "2"); li.Selected = _group != null && _group.Schedule != null && _group.Schedule.ScheduleType == ScheduleType.Custom; rblSchedule.Items.Add(li); } if (_groupType != null && (_groupType.AllowedScheduleTypes & ScheduleType.Named) == ScheduleType.Named) { ListItem li = new ListItem("Named", "4"); li.Selected = _group != null && _group.Schedule != null && _group.Schedule.ScheduleType == ScheduleType.Named; rblSchedule.Items.Add(li); } if (_group.Schedule != null) { //Load values into schedule controls switch (_group.Schedule.ScheduleType) { case ScheduleType.None: break; case ScheduleType.Weekly: dowWeekly.SelectedDayOfWeek = _group.Schedule.WeeklyDayOfWeek; timeWeekly.Text = _group.Schedule.WeeklyTimeOfDay.ToString(); rblSchedule.SelectedValue = "1"; break; case ScheduleType.Custom: sbSchedule.iCalendarContent = _group.Schedule.iCalendarContent; rblSchedule.SelectedValue = "2"; break; case ScheduleType.Named: spSchedule.SetValue(_group.ScheduleId); rblSchedule.SelectedValue = "4"; break; default: break; } UpdateScheduleDisplay(); } BindGrid(); } else { rblSchedule.Visible = false; } //Load location GroupLocationPickerMode groupTypeModes = _groupType.LocationSelectionMode; if (groupTypeModes != GroupLocationPickerMode.None) { // Set the location picker modes allowed based on the group type's allowed modes LocationPickerMode modes = LocationPickerMode.None; if ((groupTypeModes & GroupLocationPickerMode.Address) == GroupLocationPickerMode.Address) { modes = modes | LocationPickerMode.Address; } lopAddress.AllowedPickerModes = modes; } var meetingLocationDv = DefinedValueCache.Get(Rock.SystemGuid.DefinedValue.GROUP_LOCATION_TYPE_MEETING_LOCATION); var homeLocationDv = DefinedValueCache.Get(Rock.SystemGuid.DefinedValue.GROUP_LOCATION_TYPE_HOME); var groupLocation = _group.GroupLocations.Where(gl => gl.GroupLocationTypeValueId == meetingLocationDv.Id || gl.GroupLocationTypeValueId == homeLocationDv.Id || gl.GroupLocationTypeValueId == null).FirstOrDefault(); if (groupLocation != null) { lopAddress.Location = groupLocation.Location; } _group.LoadAttributes(); if (_group.Attributes != null && _group.Attributes.Any()) { Rock.Attribute.Helper.AddEditControls(_group, phAttributes, true, null, _group.Attributes.Where(a => !a.Value.IsGridColumn).Select(a => a.Key).ToList(), false); } else { pnlFilters.Visible = false; } tbDescription.Visible = GetAttributeValue("ShowDescription").AsBoolean(); tbDescription.Text = _group.Description; btnSave.Text = GetAttributeValue("SaveText"); SaveViewState(); }
/// <summary> /// Gs the locations_ show edit. /// </summary> /// <param name="locationGuid">The location unique identifier.</param> protected void gLocations_ShowEdit(Guid locationGuid) { var rockContext = new RockContext(); ddlMember.Items.Clear(); int?groupTypeId = this.CurrentGroupTypeId; if (groupTypeId.HasValue) { var groupType = GroupTypeCache.Read(groupTypeId.Value); if (groupType != null) { GroupLocationPickerMode groupTypeModes = groupType.LocationSelectionMode; if (groupTypeModes != GroupLocationPickerMode.None) { // Set the location picker modes allowed based on the group type's allowed modes LocationPickerMode modes = LocationPickerMode.None; if ((groupTypeModes & GroupLocationPickerMode.Named) == GroupLocationPickerMode.Named) { modes = modes | LocationPickerMode.Named; } if ((groupTypeModes & GroupLocationPickerMode.Address) == GroupLocationPickerMode.Address) { modes = modes | LocationPickerMode.Address; } if ((groupTypeModes & GroupLocationPickerMode.Point) == GroupLocationPickerMode.Point) { modes = modes | LocationPickerMode.Point; } if ((groupTypeModes & GroupLocationPickerMode.Polygon) == GroupLocationPickerMode.Polygon) { modes = modes | LocationPickerMode.Polygon; } bool displayMemberTab = (groupTypeModes & GroupLocationPickerMode.GroupMember) == GroupLocationPickerMode.GroupMember; bool displayOtherTab = modes != LocationPickerMode.None; ulNav.Visible = displayOtherTab && displayMemberTab; pnlMemberSelect.Visible = displayMemberTab; pnlLocationSelect.Visible = displayOtherTab && !displayMemberTab; if (displayMemberTab) { int?leaderId = lppLeader.PersonId; if (leaderId != null) { var personService = new PersonService(rockContext); Guid previousLocationType = Rock.SystemGuid.DefinedValue.GROUP_LOCATION_TYPE_PREVIOUS.AsGuid(); var leader = personService.Get(lppLeader.PersonId.Value); foreach (Group family in personService.GetFamilies(leaderId.Value)) { foreach (GroupLocation familyGroupLocation in family.GroupLocations .Where(l => l.IsMappedLocation && !l.GroupLocationTypeValue.Guid.Equals(previousLocationType))) { ListItem li = new ListItem( string.Format("{0} {1} ({2})", leader.FullName, familyGroupLocation.GroupLocationTypeValue.Value, familyGroupLocation.Location.ToString()), string.Format("{0}|{1}", familyGroupLocation.Location.Id, leader.Id)); ddlMember.Items.Add(li); } } } } if (displayOtherTab) { locpGroupLocation.AllowedPickerModes = modes; locpGroupLocation.CurrentPickerMode = locpGroupLocation.GetBestPickerModeForLocation(null); } ddlLocationType.DataSource = groupType.LocationTypeValues.ToList(); ddlLocationType.DataBind(); var groupLocation = GroupLocationsState.FirstOrDefault(l => l.Guid.Equals(locationGuid)); if (groupLocation != null && groupLocation.Location != null) { if (displayOtherTab) { locpGroupLocation.CurrentPickerMode = locpGroupLocation.GetBestPickerModeForLocation(groupLocation.Location); locpGroupLocation.MapStyleValueGuid = GetAttributeValue("MapStyle").AsGuid(); if (groupLocation.Location != null) { locpGroupLocation.Location = new LocationService(rockContext).Get(groupLocation.Location.Id); } } if (displayMemberTab && ddlMember.Items.Count > 0 && groupLocation.GroupMemberPersonAliasId.HasValue) { LocationTypeTab = MEMBER_LOCATION_TAB_TITLE; int?personId = new PersonAliasService(rockContext).GetPersonId(groupLocation.GroupMemberPersonAliasId.Value); if (personId.HasValue) { ddlMember.SetValue(string.Format("{0}|{1}", groupLocation.LocationId, personId.Value)); } } else if (displayOtherTab) { LocationTypeTab = OTHER_LOCATION_TAB_TITLE; } ddlLocationType.SetValue(groupLocation.GroupLocationTypeValueId); spSchedules.SetValues(groupLocation.Schedules); hfAddLocationGroupGuid.Value = locationGuid.ToString(); } else { hfAddLocationGroupGuid.Value = string.Empty; LocationTypeTab = (displayMemberTab && ddlMember.Items.Count > 0) ? MEMBER_LOCATION_TAB_TITLE : OTHER_LOCATION_TAB_TITLE; } rptLocationTypes.DataSource = _tabs; rptLocationTypes.DataBind(); ShowSelectedPane(); ShowDialog("Locations", true); } } } }