示例#1
0
        /// <summary>
        /// Creates the control(s) necessary for prompting user for a new value
        /// </summary>
        /// <param name="configurationValues">The configuration values.</param>
        /// <param name="id"></param>
        /// <returns>
        /// The control
        /// </returns>
        public override System.Web.UI.Control EditControl(Dictionary <string, ConfigurationValue> configurationValues, string id)
        {
            var eventCalendarPicker = new EventCalendarPicker {
                ID = id
            };

            if (EventCalendarCache.All().Any())
            {
                return(eventCalendarPicker);
            }

            return(null);
        }
示例#2
0
        /// <summary>
        /// Gets the filter value control.
        /// </summary>
        /// <param name="configurationValues">The configuration values.</param>
        /// <param name="id">The identifier.</param>
        /// <param name="required">if set to <c>true</c> [required].</param>
        /// <param name="filterMode">The filter mode.</param>
        /// <returns></returns>
        public override Control FilterValueControl(Dictionary <string, ConfigurationValue> configurationValues, string id, bool required, FilterMode filterMode)
        {
            var cbList = new RockCheckBoxList();

            cbList.ID = string.Format("{0}_cbList", id);
            cbList.AddCssClass("js-filter-control");
            cbList.RepeatDirection = RepeatDirection.Horizontal;

            var eventCalendarList = EventCalendarCache.All();

            if (eventCalendarList.Any())
            {
                foreach (var eventCalendar in eventCalendarList)
                {
                    ListItem listItem = new ListItem(eventCalendar.Name, eventCalendar.Guid.ToString());
                    cbList.Items.Add(listItem);
                }

                return(cbList);
            }

            return(null);
        }
示例#3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EventCalendarPicker" /> class.
 /// </summary>
 public EventCalendarPicker()
     : base()
 {
     Label          = "EventCalendar";
     EventCalendars = EventCalendarCache.All();
 }
示例#4
0
        /// <summary>
        /// Adds test data for Events that can be used to test inherited attributes.
        /// </summary>
        private static void InitializeInheritedAttributesTestData()
        {
            var rockContext = new RockContext();

            var EventCalendarPublicId   = EventCalendarCache.All().First(x => x.Name == "Public").Id;
            var EventCalendarInternalId = EventCalendarCache.All().First(x => x.Name == "Internal").Id;

            // Add Attributes for Calendars.
            // EventItem Attributes are defined per Calendar, so they are directly associated with the EventCalendarItem entity.
            // The Attributes collection for the EventItem shows the collection of attributes inherited from the EventCalendarItems associated with the event.
            var attributeService = new AttributeService(rockContext);
            var textFieldTypeId  = FieldTypeCache.GetId(SystemGuid.FieldType.TEXT.AsGuid()).GetValueOrDefault();

            // Add Attribute A for Internal Calendar.
            var attributeAInternal = attributeService.Get(InternalCalendarAttribute1Guid.AsGuid());

            if (attributeAInternal != null)
            {
                attributeService.Delete(attributeAInternal);
                rockContext.SaveChanges();
            }
            attributeAInternal = new Rock.Model.Attribute();
            attributeAInternal.EntityTypeId = EntityTypeCache.GetId(typeof(EventCalendarItem));
            attributeAInternal.EntityTypeQualifierColumn = "EventCalendarId";
            attributeAInternal.EntityTypeQualifierValue  = EventCalendarInternalId.ToString();
            attributeAInternal.Name        = InternalCalendarAttribute1Key;
            attributeAInternal.Key         = InternalCalendarAttribute1Key;
            attributeAInternal.Guid        = InternalCalendarAttribute1Guid.AsGuid();
            attributeAInternal.FieldTypeId = textFieldTypeId;

            attributeService.Add(attributeAInternal);
            rockContext.SaveChanges();

            // Add Attribute A for Public Calendar.
            var attributeAPublic = attributeService.Get(PublicCalendarAttribute1Guid.AsGuid());

            if (attributeAPublic != null)
            {
                attributeService.Delete(attributeAPublic);
                rockContext.SaveChanges();
            }
            attributeAPublic = new Rock.Model.Attribute();
            attributeAPublic.EntityTypeId = EntityTypeCache.GetId(typeof(EventCalendarItem));
            attributeAPublic.EntityTypeQualifierColumn = "EventCalendarId";
            attributeAPublic.EntityTypeQualifierValue  = EventCalendarPublicId.ToString();
            attributeAPublic.Name        = PublicCalendarAttribute1Key;
            attributeAPublic.Key         = PublicCalendarAttribute1Key;
            attributeAPublic.Guid        = PublicCalendarAttribute1Guid.AsGuid();
            attributeAPublic.FieldTypeId = textFieldTypeId;

            attributeService.Add(attributeAPublic);
            rockContext.SaveChanges();

            // Create a new Event: "Event A".
            // This event exists in the Internal and Public calendars.
            var eventItemService = new EventItemService(rockContext);

            var eventA = eventItemService.Get(EventAGuid.AsGuid());

            if (eventA != null)
            {
                eventItemService.Delete(eventA);
                rockContext.SaveChanges();
            }
            eventA      = new EventItem();
            eventA.Name = "Event A";
            eventA.Guid = EventAGuid.AsGuid();
            var eventACalendarInternal = new EventCalendarItem {
                EventCalendarId = EventCalendarInternalId, Guid = EventACalendarInternalGuid.AsGuid()
            };
            var eventACalendarPublic = new EventCalendarItem {
                EventCalendarId = EventCalendarPublicId, Guid = EventACalendarPublicGuid.AsGuid()
            };

            eventA.EventCalendarItems.Add(eventACalendarInternal);
            eventA.EventCalendarItems.Add(eventACalendarPublic);

            eventItemService.Add(eventA);

            rockContext.SaveChanges();

            // Create a new Event: "Event B".
            // This event exists in the Internal calendar only.
            // This event is created manually, to set the ID of Event B to match an Event Calendar Item associated with Event A.
            // The purpose is to create an EventItem and an EventCalendarItem that have an identical ID,
            // so we can verify that Attribute values for parent and child entities are correctly differentiated
            // by Entity Type when they are collated for inherited attributes.
            var eventB = eventItemService.Get(EventBGuid.AsGuid());

            if (eventB != null)
            {
                eventItemService.Delete(eventB);
                rockContext.SaveChanges();
            }

            var matchedID = eventACalendarInternal.Id;

            var sql = @"
SET IDENTITY_INSERT [EventItem] ON
;
INSERT INTO [EventItem] (Id, Name, Guid, IsActive)
VALUES (@p0, @p1, @p2, 1)
;
SET IDENTITY_INSERT [EventItem] OFF
;
";

            rockContext.Database.ExecuteSqlCommand(sql, matchedID, "Event B", EventBGuid.AsGuid());

            eventB = eventItemService.Get(EventBGuid.AsGuid());
            var eventBCalendarInternal = new EventCalendarItem {
                EventCalendarId = EventCalendarInternalId, Guid = EventBCalendarInternalGuid.AsGuid()
            };
            var eventBCalendarPublic = new EventCalendarItem {
                EventCalendarId = EventCalendarPublicId, Guid = EventBCalendarPublicGuid.AsGuid()
            };

            eventB.EventCalendarItems.Add(eventBCalendarInternal);
            eventB.EventCalendarItems.Add(eventBCalendarPublic);

            rockContext.SaveChanges();

            // Set Attribute Values.
            rockContext = new RockContext();
            AttributeCache.Clear();

            // Set Attribute Values for Event B.
            eventBCalendarPublic.LoadAttributes(rockContext);
            eventBCalendarPublic.SetAttributeValue(PublicCalendarAttribute1Key, "Event B Public");
            eventBCalendarPublic.SaveAttributeValues(rockContext);

            rockContext.SaveChanges();

            // Set Attribute Values for Event A
            eventACalendarInternal.LoadAttributes(rockContext);
            eventACalendarInternal.SetAttributeValue(InternalCalendarAttribute1Key, "Event A Internal");
            eventACalendarInternal.SaveAttributeValues(rockContext);

            eventACalendarPublic.LoadAttributes(rockContext);
            eventACalendarPublic.SetAttributeValue(PublicCalendarAttribute1Key, "Event A Public");
            eventACalendarPublic.SaveAttributeValues(rockContext);

            rockContext.SaveChanges();
        }