Пример #1
0
        /// <summary>
        /// Creates the dynamic lava value controls.
        /// </summary>
        public static void CreateDynamicLavaValueControls(
            Dictionary <string, string> lavaFieldsTemplateDictionary,
            Dictionary <string, string> lavaFieldsDefaultDictionary,
            PlaceHolder phLavaFieldsControls)
        {
            phLavaFieldsControls.Controls.Clear();

            foreach (var keyValue in lavaFieldsTemplateDictionary)
            {
                var lavaValueControl = keyValue.Key.EndsWith("Color") ? new ColorPicker() : new RockTextBox()
                {
                    CssClass = "input-width-lg"
                };

                var rcwLavaValue = new RockControlWrapper();
                phLavaFieldsControls.Controls.Add(rcwLavaValue);

                rcwLavaValue.Label = keyValue.Key.SplitCase().Transform(To.TitleCase);
                rcwLavaValue.ID    = "rcwLavaValue_" + keyValue.Key;

                lavaValueControl.ID = "lavaValue_" + keyValue.Key;
                lavaValueControl.AddCssClass("pull-left");
                lavaValueControl.Text = keyValue.Value;
                rcwLavaValue.Controls.Add(lavaValueControl);

                var btnRevertLavaValue = new Literal {
                    ID = "btnRevertLavaValue_" + keyValue.Key
                };
                var defaultValue = lavaFieldsDefaultDictionary.GetValueOrNull(keyValue.Key);
                var visibility   = keyValue.Value != defaultValue ? "visible" : "hidden";
                btnRevertLavaValue.Text = string.Format("<div class='btn js-revertlavavalue' title='Revert to default' data-value-control='{0}' data-default='{1}' style='visibility:{2}'><i class='fa fa-times'></i></div>", lavaValueControl.ClientID, defaultValue, visibility);
                rcwLavaValue.Controls.Add(btnRevertLavaValue);
            }
        }
 private void BindFilter(GroupMember groupMember)
 {
     foreach (var attribute in groupMember.Attributes.Where(a => a.Value.IsGridColumn).Select(a => a.Value).ToList())
     {
         var control = attribute.FieldType.Field.FilterControl(attribute.QualifierValues, "filter_" + attribute.Id.ToString(), false, Rock.Reporting.FilterMode.SimpleFilter);
         if (control != null)
         {
             if (control is IRockControl)
             {
                 var rockControl = ( IRockControl )control;
                 rockControl.Label = attribute.Name;
                 rockControl.Help  = attribute.Description;
                 phFilter.Controls.Add(control);
             }
             else
             {
                 var wrapper = new RockControlWrapper();
                 wrapper.ID    = control.ID + "_wrapper";
                 wrapper.Label = attribute.Name;
                 wrapper.Controls.Add(control);
                 phFilter.Controls.Add(wrapper);
             }
         }
     }
 }
Пример #3
0
        /// <summary>
        /// Called by the ASP.NET page framework to notify server controls that use composition-based implementation to create any child controls they contain in preparation for posting back or rendering.
        /// </summary>
        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            Controls.Clear();

            var selectedNumberGuids = SelectedNumbers; //GetAttributeValue( "FilterCategories" ).SplitDelimitedValues( true ).AsGuidList();
            var definedType         = DefinedTypeCache.Get(new Guid(Rock.SystemGuid.DefinedType.COMMUNICATION_SMS_FROM));

            var smsNumbers = definedType.DefinedValues;

            if (selectedNumberGuids.Any())
            {
                smsNumbers = smsNumbers.Where(v => selectedNumberGuids.Contains(v.Guid)).ToList();
            }

            dvpFrom = new RockDropDownList();
            dvpFrom.SelectedIndex = -1;
            dvpFrom.DataSource    = smsNumbers.Select(v => new
            {
                Description = string.IsNullOrWhiteSpace(v.Description) ? v.Value : v.Description,
                v.Id
            });
            dvpFrom.DataTextField  = "Description";
            dvpFrom.DataValueField = "Id";
            dvpFrom.DataBind();

            dvpFrom.ID       = string.Format("dvpFrom_{0}", this.ID);
            dvpFrom.Label    = "From";
            dvpFrom.Help     = "The number to originate message from (configured under Admin Tools > Communications > SMS Phone Numbers).";
            dvpFrom.Required = true;
            Controls.Add(dvpFrom);

            rcwMessage       = new RockControlWrapper();
            rcwMessage.ID    = string.Format("rcwMessage_{0}", this.ID);
            rcwMessage.Label = "Message";
            rcwMessage.Help  = "<span class='tip tip-lava'></span>";
            Controls.Add(rcwMessage);

            mfpMessage    = new MergeFieldPicker();
            mfpMessage.ID = string.Format("mfpMergeFields_{0}", this.ID);
            mfpMessage.MergeFields.Clear();
            mfpMessage.MergeFields.Add("GlobalAttribute");
            mfpMessage.MergeFields.Add("Rock.Model.Person");
            mfpMessage.CssClass   += " margin-b-sm pull-right";
            mfpMessage.SelectItem += mfpMergeFields_SelectItem;
            rcwMessage.Controls.Add(mfpMessage);

            lblCount          = new Label();
            lblCount.CssClass = "badge margin-all-sm pull-right";
            lblCount.ID       = string.Format("lblCount_{0}", this.ID);
            lblCount.Visible  = this.CharacterLimit > 0;
            rcwMessage.Controls.Add(lblCount);

            tbMessage          = new RockTextBox();
            tbMessage.ID       = string.Format("tbTextMessage_{0}", this.ID);
            tbMessage.TextMode = TextBoxMode.MultiLine;
            tbMessage.Rows     = 3;
            tbMessage.Required = true;
            rcwMessage.Controls.Add(tbMessage);
        }
Пример #4
0
        /// <summary>
        /// Called by the ASP.NET page framework to notify server controls that use composition-based implementation to create any child controls they contain in preparation for posting back or rendering.
        /// </summary>
        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            Controls.Clear();

            ddlFrom       = new RockDropDownList();
            ddlFrom.ID    = string.Format("ddlFrom_{0}", this.ID);
            ddlFrom.Label = "From";
            ddlFrom.Help  = "The number to originate message from (configured under Admin Tools > General Settings > Defined Types > SMS From Values).";
            ddlFrom.BindToDefinedType(DefinedTypeCache.Read(new Guid(Rock.SystemGuid.DefinedType.COMMUNICATION_SMS_FROM)), false, true);
            ddlFrom.Required = true;
            Controls.Add(ddlFrom);

            rcwMessage       = new RockControlWrapper();
            rcwMessage.ID    = string.Format("rcwMessage_{0}", this.ID);
            rcwMessage.Label = "Message";
            rcwMessage.Help  = "<span class='tip tip-lava'></span>";
            Controls.Add(rcwMessage);

            mfpMessage    = new MergeFieldPicker();
            mfpMessage.ID = string.Format("mfpMergeFields_{0}", this.ID);
            mfpMessage.MergeFields.Clear();
            mfpMessage.MergeFields.Add("GlobalAttribute");
            mfpMessage.MergeFields.Add("Rock.Model.Person");
            mfpMessage.CssClass   += " pull-right margin-b-sm";
            mfpMessage.SelectItem += mfpMergeFields_SelectItem;
            rcwMessage.Controls.Add(mfpMessage);

            tbMessage          = new RockTextBox();
            tbMessage.ID       = string.Format("tbTextMessage_{0}", this.ID);
            tbMessage.TextMode = TextBoxMode.MultiLine;
            tbMessage.Rows     = 3;
            tbMessage.Required = true;
            rcwMessage.Controls.Add(tbMessage);
        }
Пример #5
0
        /// <summary>
        /// Creates the dynamic lava value controls.
        /// </summary>
        private void CreateDynamicLavaValueControls()
        {
            // Create Controls for LavaFields Values
            Dictionary <string, string> lavaFieldsTemplateDictionary = hfLavaFieldsState.Value.FromJsonOrNull <Dictionary <string, string> >() ?? new Dictionary <string, string>();

            // dictionary of keys and default values from Lava Fields KeyValueList control
            var lavaFieldsDefaultDictionary = kvlMergeFields.Value.AsDictionary();

            phLavaFieldsControls.Controls.Clear();

            btnUpdateTemplatePreview.Visible = lavaFieldsTemplateDictionary.Any();

            foreach (var keyValue in lavaFieldsTemplateDictionary)
            {
                RockTextBox lavaValueControl;
                if (keyValue.Key.EndsWith("Color"))
                {
                    lavaValueControl = new ColorPicker();
                }
                else
                {
                    lavaValueControl = new RockTextBox()
                    {
                        CssClass = "input-width-lg"
                    };
                }

                var rcwLavaValue = new RockControlWrapper();
                phLavaFieldsControls.Controls.Add(rcwLavaValue);

                rcwLavaValue.Label = keyValue.Key.SplitCase().Transform(To.TitleCase);
                rcwLavaValue.ID    = "rcwLavaValue_" + keyValue.Key;

                lavaValueControl.ID = "lavaValue_" + keyValue.Key;
                lavaValueControl.AddCssClass("pull-left");
                lavaValueControl.Text = keyValue.Value;
                rcwLavaValue.Controls.Add(lavaValueControl);

                Literal btnRevertLavaValue = new Literal();
                btnRevertLavaValue.ID = "btnRevertLavaValue_" + keyValue.Key;
                var defaultValue = lavaFieldsDefaultDictionary.GetValueOrNull(keyValue.Key);
                var visibility   = keyValue.Value != defaultValue ? "visible" : "hidden";
                btnRevertLavaValue.Text = string.Format("<i class='btn fa fa-times js-revertlavavalue' title='Revert to default' data-value-control='{0}' data-default='{1}' style='visibility:{2}'></i>", lavaValueControl.ClientID, defaultValue, visibility);
                rcwLavaValue.Controls.Add(btnRevertLavaValue);
            }
        }
Пример #6
0
        /// <summary>
        /// Add the available Attribute fields to the grid filter.
        /// </summary>
        private void AddAttributeFilterFields()
        {
            // Clear the filter controls
            phAttributeFilters.Controls.Clear();

            if (AvailableAttributes != null)
            {
                foreach (var attribute in AvailableAttributes)
                {
                    var control = attribute.FieldType.Field.FilterControl(attribute.QualifierValues, "filter_" + attribute.Id.ToString(), false, Rock.Reporting.FilterMode.SimpleFilter);
                    if (control != null)
                    {
                        if (control is IRockControl)
                        {
                            var rockControl = ( IRockControl )control;
                            rockControl.Label = attribute.Name;
                            rockControl.Help  = attribute.Description;
                            phAttributeFilters.Controls.Add(control);
                        }
                        else
                        {
                            var wrapper = new RockControlWrapper();
                            wrapper.ID    = control.ID + "_wrapper";
                            wrapper.Label = attribute.Name;
                            wrapper.Controls.Add(control);
                            phAttributeFilters.Controls.Add(wrapper);
                        }

                        string savedValue = rFilter.GetUserPreference(attribute.Key);
                        if (!string.IsNullOrWhiteSpace(savedValue))
                        {
                            try
                            {
                                var values = JsonConvert.DeserializeObject <List <string> >(savedValue);
                                attribute.FieldType.Field.SetFilterValues(control, attribute.QualifierValues, values);
                            }
                            catch
                            {
                                // intentionally ignore
                            }
                        }
                    }
                }
            }
        }
        public FilterPickerControl()
        {
            upnlFilters            = new UpdatePanel();
            upnlFilters.UpdateMode = UpdatePanelUpdateMode.Conditional;

            PanelWidget pwFilters = new PanelWidget();

            pwFilters.Title    = "Filters";
            pwFilters.ID       = "pwFilters";
            pwFilters.Expanded = true;

            // Data View picker
            dvDataViewPicker              = new DataViewsPicker();
            dvDataViewPicker.ID           = "dvDataViewPicker";
            dvDataViewPicker.Label        = "Filters";
            dvDataViewPicker.Help         = "Select data views you want to represent in this visulization";
            dvDataViewPicker.AutoPostBack = true;
            dvDataViewPicker.TextChanged += dvDataView_SelectedItem;
            pwFilters.Controls.Add(dvDataViewPicker);

            // Show filter key checkbox
            pwFilters.Controls.Add(new LiteralControl("<div class='row showFilterKey'><div class='col-xs-12'>"));
            cbShowFilterKey         = new RockCheckBox();
            cbShowFilterKey.ID      = "cbShowFilterKey";
            cbShowFilterKey.Label   = "Show Filter Key";
            cbShowFilterKey.Checked = true;
            cbShowFilterKey.Help    = "Show the filter key in the top left hand corner of the chart";
            pwFilters.Controls.Add(cbShowFilterKey);
            pwFilters.Controls.Add(new LiteralControl("</div></div>"));


            RockControlWrapper rcwDatafilters = new RockControlWrapper();

            rptDataFilters                = new Repeater();
            rptDataFilters.ID             = "rptDataFilters";
            rptDataFilters.ItemDataBound += rptDataFilters_ItemDataBound;
            rptDataFilters.ItemTemplate   = new FilterItemTemplate(ListItemType.Item);
            rcwDatafilters.Controls.Add(rptDataFilters);
            pwFilters.Controls.Add(rcwDatafilters);

            upnlFilters.ContentTemplateContainer.Controls.Add(pwFilters);
            Controls.Add(upnlFilters);
        }
Пример #8
0
        /// <summary>
        /// Called by the ASP.NET page framework to notify server controls that use composition-based implementation to create any child controls they contain in preparation for posting back or rendering.
        /// </summary>
        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            Controls.Clear();

            tbTitle           = new RockTextBox();
            tbTitle.ID        = string.Format("tbTextTitle_{0}", this.ID);
            tbTitle.TextMode  = TextBoxMode.SingleLine;
            tbTitle.Required  = false;
            tbTitle.Label     = "Title";
            tbTitle.MaxLength = 100;
            Controls.Add(tbTitle);


            cbSound       = new RockCheckBox();
            cbSound.ID    = string.Format("cbSound_{0}", this.ID);
            cbSound.Label = "Should make sound?";
            Controls.Add(cbSound);

            rcwMessage       = new RockControlWrapper();
            rcwMessage.ID    = string.Format("rcwMessage_{0}", this.ID);
            rcwMessage.Label = "Message";
            rcwMessage.Help  = "<span class='tip tip-lava'></span>";
            Controls.Add(rcwMessage);

            mfpMessage    = new MergeFieldPicker();
            mfpMessage.ID = string.Format("mfpMergeFields_{0}", this.ID);
            mfpMessage.MergeFields.Clear();
            mfpMessage.MergeFields.Add("GlobalAttribute");
            mfpMessage.MergeFields.Add("Rock.Model.Person");
            mfpMessage.CssClass   += " pull-right margin-b-sm";
            mfpMessage.SelectItem += mfpMergeFields_SelectItem;
            rcwMessage.Controls.Add(mfpMessage);

            tbMessage          = new RockTextBox();
            tbMessage.ID       = string.Format("tbTextMessage_{0}", this.ID);
            tbMessage.TextMode = TextBoxMode.MultiLine;
            tbMessage.Rows     = 3;
            tbMessage.Required = true;
            rcwMessage.Controls.Add(tbMessage);
        }
        /// <summary>
        /// Adds the attribute columns.
        /// </summary>
        private void AddDynamicControls()
        {
            // Clear the filter controls
            phAttributeFilters.Controls.Clear();

            // Remove attribute columns
            foreach (var column in gEventCalendarItems.Columns.OfType <AttributeField>().ToList())
            {
                gEventCalendarItems.Columns.Remove(column);
            }

            // Remove status columns
            foreach (var column in gEventCalendarItems.Columns.OfType <BoundField>()
                     .Where(c =>
                            c.DataField == "Instances" ||
                            c.DataField == "Status" ||
                            c.DataField == "ApprovalStatus")
                     .ToList())
            {
                gEventCalendarItems.Columns.Remove(column);
            }

            // Remove Delete column
            foreach (var column in gEventCalendarItems.Columns.OfType <DeleteField>().ToList())
            {
                gEventCalendarItems.Columns.Remove(column);
            }

            if (AvailableAttributes != null)
            {
                foreach (var attribute in AvailableAttributes)
                {
                    var control = attribute.FieldType.Field.FilterControl(attribute.QualifierValues, "filter_" + attribute.Id.ToString(), false, Rock.Reporting.FilterMode.SimpleFilter);
                    if (control != null)
                    {
                        if (control is IRockControl)
                        {
                            var rockControl = (IRockControl)control;
                            rockControl.Label = attribute.Name;
                            rockControl.Help  = attribute.Description;
                            phAttributeFilters.Controls.Add(control);
                        }
                        else
                        {
                            var wrapper = new RockControlWrapper();
                            wrapper.ID    = control.ID + "_wrapper";
                            wrapper.Label = attribute.Name;
                            wrapper.Controls.Add(control);
                            phAttributeFilters.Controls.Add(wrapper);
                        }

                        string savedValue = rFilter.GetUserPreference(MakeKeyUniqueToEventCalendar(attribute.Key));
                        if (!string.IsNullOrWhiteSpace(savedValue))
                        {
                            try
                            {
                                var values = JsonConvert.DeserializeObject <List <string> >(savedValue);
                                attribute.FieldType.Field.SetFilterValues(control, attribute.QualifierValues, values);
                            }
                            catch { }
                        }
                    }

                    string dataFieldExpression = attribute.Key;
                    bool   columnExists        = gEventCalendarItems.Columns.OfType <AttributeField>().FirstOrDefault(a => a.DataField.Equals(dataFieldExpression)) != null;
                    if (!columnExists)
                    {
                        AttributeField boundField = new AttributeField();
                        boundField.DataField   = dataFieldExpression;
                        boundField.AttributeId = attribute.Id;
                        boundField.HeaderText  = attribute.Name;

                        var attributeCache = Rock.Web.Cache.AttributeCache.Read(attribute.Id);
                        if (attributeCache != null)
                        {
                            boundField.ItemStyle.HorizontalAlign = attributeCache.FieldType.Field.AlignValue;
                        }

                        gEventCalendarItems.Columns.Add(boundField);
                    }
                }
            }

            // Add occurrences Count column
            var occurrencesField = new BadgeField();

            occurrencesField.DangerMin  = int.MaxValue;
            occurrencesField.WarningMin = 0;
            occurrencesField.WarningMax = 0;
            occurrencesField.InfoMin    = 1;
            occurrencesField.InfoMax    = int.MaxValue;
            occurrencesField.DataField  = "Occurrences";
            occurrencesField.HeaderText = "Occurrences";
            occurrencesField.HtmlEncode = false;
            gEventCalendarItems.Columns.Add(occurrencesField);

            // Add Status column
            var statusField = new BoundField();

            statusField.DataField      = "Status";
            statusField.SortExpression = "EventItem.IsActive";
            statusField.HeaderText     = "Status";
            statusField.HtmlEncode     = false;
            gEventCalendarItems.Columns.Add(statusField);

            // Add Approval Status column
            var approvalStatusField = new BoundField();

            approvalStatusField.DataField      = "ApprovalStatus";
            approvalStatusField.SortExpression = "EventItem.IsApproved";
            approvalStatusField.HeaderText     = "Approval Status";
            approvalStatusField.HtmlEncode     = false;
            gEventCalendarItems.Columns.Add(approvalStatusField);

            // Add delete column
            if (_canEdit)
            {
                var deleteField = new DeleteField();
                gEventCalendarItems.Columns.Add(deleteField);
                deleteField.Click += DeleteEventCalendarItem_Click;
            }
        }
Пример #10
0
        /// <summary>
        /// Sets the filters.
        /// </summary>
        private void SetFilters(bool setValues)
        {
            using (var rockContext = new RockContext())
            {
                string sessionKey       = string.Format("ConnectionSearch_{0}", this.BlockId);
                var    searchSelections = Session[sessionKey] as Dictionary <string, string>;
                setValues = setValues && searchSelections != null;

                var connectionType = new ConnectionTypeService(rockContext).Get(GetAttributeValue("ConnectionTypeId").AsInteger());

                if (!GetAttributeValue("DisplayNameFilter").AsBoolean())
                {
                    tbSearchName.Visible = false;
                }

                if (GetAttributeValue("DisplayCampusFilter").AsBoolean())
                {
                    cblCampus.Visible    = true;
                    cblCampus.DataSource = CampusCache.All(GetAttributeValue("DisplayInactiveCampuses").AsBoolean());
                    cblCampus.DataBind();
                }
                else
                {
                    cblCampus.Visible = false;
                }

                if (setValues)
                {
                    if (searchSelections.ContainsKey("tbSearchName"))
                    {
                        tbSearchName.Text = searchSelections["tbSearchName"];
                    }
                    if (searchSelections.ContainsKey("cblCampus"))
                    {
                        var selectedItems = searchSelections["cblCampus"].SplitDelimitedValues().AsIntegerList();
                        cblCampus.SetValues(selectedItems);
                    }
                }
                else if (GetAttributeValue("EnableCampusContext").AsBoolean())
                {
                    var campusEntityType = EntityTypeCache.Read("Rock.Model.Campus");
                    var contextCampus    = RockPage.GetCurrentContext(campusEntityType) as Campus;

                    if (contextCampus != null)
                    {
                        cblCampus.SetValue(contextCampus.Id.ToString());
                    }
                }

                if (GetAttributeValue("DisplayAttributeFilters").AsBoolean())
                {
                    // Parse the attribute filters
                    AvailableAttributes = new List <AttributeCache>();
                    if (connectionType != null)
                    {
                        int entityTypeId = new ConnectionOpportunity().TypeId;
                        foreach (var attributeModel in new AttributeService(new RockContext()).Queryable()
                                 .Where(a =>
                                        a.EntityTypeId == entityTypeId &&
                                        a.EntityTypeQualifierColumn.Equals("ConnectionTypeId", StringComparison.OrdinalIgnoreCase) &&
                                        a.EntityTypeQualifierValue.Equals(connectionType.Id.ToString()) &&
                                        a.AllowSearch == true)
                                 .OrderBy(a => a.Order)
                                 .ThenBy(a => a.Name))
                        {
                            AvailableAttributes.Add(AttributeCache.Read(attributeModel));
                        }
                    }

                    // Clear the filter controls
                    phAttributeFilters.Controls.Clear();

                    if (AvailableAttributes != null)
                    {
                        foreach (var attribute in AvailableAttributes)
                        {
                            string controlId = "filter_" + attribute.Id.ToString();
                            var    control   = attribute.FieldType.Field.FilterControl(attribute.QualifierValues, controlId, false, Rock.Reporting.FilterMode.SimpleFilter);
                            if (control != null)
                            {
                                if (control is IRockControl)
                                {
                                    var rockControl = (IRockControl)control;
                                    rockControl.Label = attribute.Name;
                                    rockControl.Help  = attribute.Description;
                                    phAttributeFilters.Controls.Add(control);
                                }
                                else
                                {
                                    var wrapper = new RockControlWrapper();
                                    wrapper.ID    = control.ID + "_wrapper";
                                    wrapper.Label = attribute.Name;
                                    wrapper.Controls.Add(control);
                                    phAttributeFilters.Controls.Add(wrapper);
                                }

                                if (setValues && searchSelections.ContainsKey(controlId))
                                {
                                    var values = searchSelections[controlId].FromJsonOrNull <List <string> >();
                                    attribute.FieldType.Field.SetFilterValues(control, attribute.QualifierValues, values);
                                }
                            }
                        }
                    }
                }
                else
                {
                    phAttributeFilters.Visible = false;
                }
            }
        }
        private void AddDynamicControls()
        {
            if (AvailableAttributes != null)
            {
                foreach (var attribute in AvailableAttributes)
                {
                    var control = attribute.FieldType.Field.FilterControl(attribute.QualifierValues, "filter_" + attribute.Id.ToString(), false, Rock.Reporting.FilterMode.SimpleFilter);
                    if (control != null)
                    {
                        if (control is IRockControl)
                        {
                            var rockControl = ( IRockControl )control;
                            rockControl.Label = attribute.Name;
                            rockControl.Help  = attribute.Description;
                            phAttributeFilters.Controls.Add(control);
                        }
                        else
                        {
                            var wrapper = new RockControlWrapper();
                            wrapper.ID    = control.ID + "_wrapper";
                            wrapper.Label = attribute.Name;
                            wrapper.Controls.Add(control);
                            phAttributeFilters.Controls.Add(wrapper);
                        }

                        string savedValue = rFilter.GetUserPreference(attribute.Key);
                        if (!string.IsNullOrWhiteSpace(savedValue))
                        {
                            try
                            {
                                var values = JsonConvert.DeserializeObject <List <string> >(savedValue);
                                attribute.FieldType.Field.SetFilterValues(control, attribute.QualifierValues, values);
                            }
                            catch
                            {
                                // intentionally ignore
                            }
                        }
                    }

                    bool columnExists = gList.Columns.OfType <AttributeField>().FirstOrDefault(a => a.AttributeId == attribute.Id) != null;
                    if (!columnExists)
                    {
                        AttributeField boundField = new AttributeField();
                        boundField.DataField   = attribute.Key;
                        boundField.AttributeId = attribute.Id;
                        boundField.HeaderText  = attribute.Name;

                        var attributeCache = Rock.Web.Cache.AttributeCache.Get(attribute.Id);
                        if (attributeCache != null)
                        {
                            boundField.ItemStyle.HorizontalAlign = attributeCache.FieldType.Field.AlignValue;
                        }

                        gList.Columns.Add(boundField);
                    }
                }
            }

            if (CanAddEditDelete)
            {
                var deleteField = new DeleteField();
                deleteField.HeaderText = "&nbsp;";
                deleteField.Visible    = true;
                gList.Columns.Add(deleteField);
                deleteField.Click += gGrid_DeleteClick;
            }
        }
Пример #12
0
        protected void AddDynamicControls(ContentChannel channel)
        {
            // Remove all columns
            gContentChannelItems.Columns.Clear();
            phAttributeFilters.Controls.Clear();

            if (channel != null)
            {
                // Add Title column
                var titleField = new BoundField();
                titleField.DataField      = "Title";
                titleField.HeaderText     = "Title";
                titleField.SortExpression = "Title";
                gContentChannelItems.Columns.Add(titleField);

                // Add Attribute columns
                int    entityTypeId  = EntityTypeCache.Read(typeof(Rock.Model.ContentChannelItem)).Id;
                string channelId     = channel.Id.ToString();
                string channelTypeId = channel.ContentChannelTypeId.ToString();
                foreach (var attribute in AvailableAttributes)
                {
                    var control = attribute.FieldType.Field.FilterControl(attribute.QualifierValues, "filter_" + attribute.Id.ToString(), false, Rock.Reporting.FilterMode.SimpleFilter);
                    if (control != null)
                    {
                        if (control is IRockControl)
                        {
                            var rockControl = (IRockControl)control;
                            rockControl.Label = attribute.Name;
                            rockControl.Help  = attribute.Description;
                            phAttributeFilters.Controls.Add(control);
                        }
                        else
                        {
                            var wrapper = new RockControlWrapper();
                            wrapper.ID    = control.ID + "_wrapper";
                            wrapper.Label = attribute.Name;
                            wrapper.Controls.Add(control);
                            phAttributeFilters.Controls.Add(wrapper);
                        }

                        string savedValue = gfFilter.GetUserPreference(MakeKeyUniqueToChannel(channel.Id, attribute.Key));
                        if (!string.IsNullOrWhiteSpace(savedValue))
                        {
                            try
                            {
                                var values = JsonConvert.DeserializeObject <List <string> >(savedValue);
                                attribute.FieldType.Field.SetFilterValues(control, attribute.QualifierValues, values);
                            }
                            catch
                            {
                                // intentionally ignore
                            }
                        }
                    }

                    string dataFieldExpression = attribute.Key;
                    bool   columnExists        = gContentChannelItems.Columns.OfType <AttributeField>().FirstOrDefault(a => a.DataField.Equals(dataFieldExpression)) != null;
                    if (!columnExists)
                    {
                        AttributeField boundField = new AttributeField();
                        boundField.DataField   = dataFieldExpression;
                        boundField.AttributeId = attribute.Id;
                        boundField.HeaderText  = attribute.Name;
                        boundField.ItemStyle.HorizontalAlign = attribute.FieldType.Field.AlignValue;
                        gContentChannelItems.Columns.Add(boundField);
                    }
                }

                if (channel.ContentChannelType.IncludeTime)
                {
                    // Add Start column
                    var startField = new DateTimeField();
                    startField.DataField      = "StartDateTime";
                    startField.HeaderText     = channel.ContentChannelType.DateRangeType == ContentChannelDateType.DateRange ? "Start" : "Date";
                    startField.SortExpression = "StartDateTime";
                    gContentChannelItems.Columns.Add(startField);

                    // Expire column
                    if (channel.ContentChannelType.DateRangeType == ContentChannelDateType.DateRange)
                    {
                        var expireField = new DateTimeField();
                        expireField.DataField      = "ExpireDateTime";
                        expireField.HeaderText     = "Expire";
                        expireField.SortExpression = "ExpireDateTime";
                        gContentChannelItems.Columns.Add(expireField);
                    }
                }
                else
                {
                    // Add Start column
                    var startField = new DateField();
                    startField.DataField      = "StartDateTime";
                    startField.HeaderText     = channel.ContentChannelType.DateRangeType == ContentChannelDateType.DateRange ? "Start" : "Date";
                    startField.SortExpression = "StartDateTime";
                    gContentChannelItems.Columns.Add(startField);

                    // Expire column
                    if (channel.ContentChannelType.DateRangeType == ContentChannelDateType.DateRange)
                    {
                        var expireField = new DateField();
                        expireField.DataField      = "ExpireDateTime";
                        expireField.HeaderText     = "Expire";
                        expireField.SortExpression = "ExpireDateTime";
                        gContentChannelItems.Columns.Add(expireField);
                    }
                }

                // Priority column
                var priorityField = new BoundField();
                priorityField.DataField                 = "Priority";
                priorityField.HeaderText                = "Priority";
                priorityField.SortExpression            = "Priority";
                priorityField.DataFormatString          = "{0:N0}";
                priorityField.ItemStyle.HorizontalAlign = HorizontalAlign.Right;
                gContentChannelItems.Columns.Add(priorityField);


                // Status column
                if (channel.RequiresApproval)
                {
                    var statusField = new BoundField();
                    gContentChannelItems.Columns.Add(statusField);
                    statusField.DataField      = "Status";
                    statusField.HeaderText     = "Status";
                    statusField.SortExpression = "Status";
                    statusField.HtmlEncode     = false;
                }

                // Add occurrences Count column
                var occurrencesField = new BoolField();
                occurrencesField.DataField  = "Occurrences";
                occurrencesField.HeaderText = "Event Occurrences";
                gContentChannelItems.Columns.Add(occurrencesField);

                // Add Created By column
                var createdByPersonNameField = new BoundField();
                createdByPersonNameField.DataField  = "CreatedByPersonName";
                createdByPersonNameField.HeaderText = "Created By";
                createdByPersonNameField.HtmlEncode = false;
                gContentChannelItems.Columns.Add(createdByPersonNameField);

                bool canEditChannel = channel.IsAuthorized(Rock.Security.Authorization.EDIT, CurrentPerson);
                gContentChannelItems.Actions.ShowAdd = canEditChannel;
                gContentChannelItems.IsDeleteEnabled = canEditChannel;
                if (canEditChannel)
                {
                    var deleteField = new DeleteField();
                    gContentChannelItems.Columns.Add(deleteField);
                    deleteField.Click += gContentChannelItems_Delete;
                }
            }
        }
Пример #13
0
        /// <summary>
        /// Called by the ASP.NET page framework to notify server controls that use composition-based implementation to create any child controls they contain in preparation for posting back or rendering.
        /// </summary>
        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            Controls.Clear();

            tbTitle = new RockTextBox
            {
                ID        = string.Format("tbTextTitle_{0}", this.ID),
                TextMode  = TextBoxMode.SingleLine,
                Required  = false,
                Label     = "Title",
                MaxLength = 100
            };
            Controls.Add(tbTitle);

            rcwMessage = new RockControlWrapper
            {
                ID    = string.Format("rcwMessage_{0}", this.ID),
                Label = "Message",
                Help  = "<span class='tip tip-lava'></span>"
            };
            Controls.Add(rcwMessage);

            mfpMessage = new MergeFieldPicker
            {
                ID = string.Format("mfpMergeFields_{0}", this.ID)
            };
            mfpMessage.MergeFields.Clear();
            mfpMessage.MergeFields.Add("GlobalAttribute");
            mfpMessage.MergeFields.Add("Rock.Model.Person");
            mfpMessage.CssClass   += " pull-right margin-b-sm";
            mfpMessage.SelectItem += mfpMergeFields_SelectItem;
            rcwMessage.Controls.Add(mfpMessage);

            lblCount = new Label
            {
                CssClass = "badge margin-all-sm pull-right",
                ID       = $"{nameof( lblCount )}_{ID}"
            };
            rcwMessage.Controls.Add(lblCount);

            tbMessage = new RockTextBox
            {
                ID       = string.Format("tbTextMessage_{0}", this.ID),
                TextMode = TextBoxMode.MultiLine,
                Rows     = 3
            };
            rcwMessage.Controls.Add(tbMessage);

            iupPushImage = new ImageUploader
            {
                ID      = $"{nameof( iupPushImage )}_{ID}",
                Label   = "Image",
                Help    = "We recommend an image size of 1038x520.",
                Visible = false // Images aren't used during push yet, so don't show.
            };

            rcwMessage.Controls.Add(iupPushImage);

            rbOpenAction = CreateOpenActionRadioList();
            rcwMessage.Controls.Add(rbOpenAction);

            ddlMobileApplications = CreateMobileApplicationDropDownList();
            rcwMessage.Controls.Add(ddlMobileApplications);

            htmlAdditionalDetails = new HtmlEditor
            {
                ID     = $"{nameof( htmlAdditionalDetails )}_{ID}",
                Label  = "Additional Details",
                Height = 300
            };

            rcwMessage.Controls.Add(htmlAdditionalDetails);

            ppMobilePage = new PagePicker
            {
                ID    = $"{nameof( ppMobilePage )}_{ID}",
                Label = "Mobile Page"
            };

            rcwMessage.Controls.Add(ppMobilePage);

            kvlQuerystring = new KeyValueList
            {
                ID          = $"{nameof( kvlQuerystring )}_{ID}",
                Label       = "Mobile Page Query String",
                KeyPrompt   = "Key",
                ValuePrompt = "Value"
            };

            rcwMessage.Controls.Add(kvlQuerystring);

            urlLink = new UrlLinkBox
            {
                ID    = $"{nameof( urlLink )}_{ID}",
                Label = "URL"
            };

            rcwMessage.Controls.Add(urlLink);
        }
Пример #14
0
        /// <summary>
        /// Adds the attribute columns.
        /// </summary>
        private void AddDynamicControls()
        {
            // Clear the filter controls
            phAttributeFilters.Controls.Clear();

            // Remove attribute columns
            foreach (var column in gWorkflows.Columns.OfType <AttributeField>().ToList())
            {
                gWorkflows.Columns.Remove(column);
            }

            if (AvailableAttributes != null)
            {
                foreach (var attribute in AvailableAttributes)
                {
                    var control = attribute.FieldType.Field.FilterControl(attribute.QualifierValues, "filter_" + attribute.Id.ToString(), false, Rock.Reporting.FilterMode.SimpleFilter);
                    if (control != null)
                    {
                        if (control is IRockControl)
                        {
                            var rockControl = ( IRockControl )control;
                            rockControl.Label = attribute.Name;
                            rockControl.Help  = attribute.Description;
                            phAttributeFilters.Controls.Add(control);
                        }
                        else
                        {
                            var wrapper = new RockControlWrapper();
                            wrapper.ID    = control.ID + "_wrapper";
                            wrapper.Label = attribute.Name;
                            wrapper.Controls.Add(control);
                            phAttributeFilters.Controls.Add(wrapper);
                        }
                    }


                    string dataFieldExpression = attribute.Key;
                    bool   columnExists        = gWorkflows.Columns.OfType <AttributeField>().FirstOrDefault(a => a.DataField.Equals(dataFieldExpression)) != null;
                    if (!columnExists)
                    {
                        AttributeField boundField = new AttributeField();
                        boundField.DataField   = dataFieldExpression;
                        boundField.AttributeId = attribute.Id;
                        boundField.HeaderText  = attribute.Name;
                        boundField.Condensed   = false;

                        var attributeCache = Rock.Web.Cache.AttributeCache.Get(attribute.Id);
                        if (attributeCache != null)
                        {
                            boundField.ItemStyle.HorizontalAlign = attributeCache.FieldType.Field.AlignValue;
                        }

                        gWorkflows.Columns.Add(boundField);
                    }
                }
            }

            var dateField = new DateTimeField();

            gWorkflows.Columns.Add(dateField);
            dateField.DataField           = "CreatedDateTime";
            dateField.SortExpression      = "CreatedDateTime";
            dateField.HeaderText          = "Created";
            dateField.FormatAsElapsedTime = true;

            var statusField = new BoundField();

            gWorkflows.Columns.Add(statusField);
            statusField.DataField        = "Status";
            statusField.SortExpression   = "Status";
            statusField.HeaderText       = "Status";
            statusField.DataFormatString = "<span class='label label-info'>{0}</span>";
            statusField.HtmlEncode       = false;

            var stateField = new CallbackField();

            gWorkflows.Columns.Add(stateField);
            stateField.DataField          = "IsCompleted";
            stateField.SortExpression     = "CompletedDateTime";
            stateField.HeaderText         = "State";
            stateField.HtmlEncode         = false;
            stateField.OnFormatDataValue += (sender, e) =>
            {
                if (( bool )e.DataValue)
                {
                    e.FormattedValue = "<span class='label label-default'>Completed</span>";
                }
                else
                {
                    e.FormattedValue = "<span class='label label-success'>Active</span>";
                }
            };
        }
Пример #15
0
        /// <summary>
        /// Adds the attribute columns.
        /// </summary>
        private void AddDynamicControls()
        {
            // Clear the filter controls
            phAttributeFilters.Controls.Clear();

            // Remove attribute columns
            foreach (var column in gGroupMembers.Columns.OfType <AttributeField>().ToList())
            {
                gGroupMembers.Columns.Remove(column);
            }

            if (AvailableAttributes != null)
            {
                foreach (var attribute in AvailableAttributes)
                {
                    var control = attribute.FieldType.Field.FilterControl(attribute.QualifierValues, "filter_" + attribute.Id.ToString(), false);
                    if (control != null)
                    {
                        if (control is IRockControl)
                        {
                            var rockControl = (IRockControl)control;
                            rockControl.Label = attribute.Name;
                            rockControl.Help  = attribute.Description;
                            phAttributeFilters.Controls.Add(control);
                        }
                        else
                        {
                            var wrapper = new RockControlWrapper();
                            wrapper.ID    = control.ID + "_wrapper";
                            wrapper.Label = attribute.Name;
                            wrapper.Controls.Add(control);
                            phAttributeFilters.Controls.Add(wrapper);
                        }

                        string savedValue = rFilter.GetUserPreference(MakeKeyUniqueToGroup(attribute.Key));
                        if (!string.IsNullOrWhiteSpace(savedValue))
                        {
                            try
                            {
                                var values = JsonConvert.DeserializeObject <List <string> >(savedValue);
                                attribute.FieldType.Field.SetFilterValues(control, attribute.QualifierValues, values);
                            }
                            catch { }
                        }
                    }

                    string dataFieldExpression = attribute.Key;
                    bool   columnExists        = gGroupMembers.Columns.OfType <AttributeField>().FirstOrDefault(a => a.DataField.Equals(dataFieldExpression)) != null;
                    if (!columnExists)
                    {
                        AttributeField boundField = new AttributeField();
                        boundField.DataField      = dataFieldExpression;
                        boundField.HeaderText     = attribute.Name;
                        boundField.SortExpression = string.Empty;

                        var attributeCache = Rock.Web.Cache.AttributeCache.Read(attribute.Id);
                        if (attributeCache != null)
                        {
                            boundField.ItemStyle.HorizontalAlign = attributeCache.FieldType.Field.AlignValue;
                        }

                        gGroupMembers.Columns.Add(boundField);
                    }
                }
            }

            // Add Link to Profile Page Column
            if (!string.IsNullOrEmpty(GetAttributeValue("PersonProfilePage")))
            {
                AddPersonProfileLinkColumn();
            }

            // Add delete column
            var deleteField = new DeleteField();

            gGroupMembers.Columns.Add(deleteField);
            deleteField.Click += DeleteGroupMember_Click;
        }
        /// <summary>
        /// Adds the attribute columns.
        /// </summary>
        private void AddDynamicControls()
        {
            // Clear the filter controls
            phAttributeFilters.Controls.Clear();

            // Remove attribute columns
            foreach (var column in gConnectionOpportunities.Columns.OfType <AttributeField>().ToList())
            {
                gConnectionOpportunities.Columns.Remove(column);
            }

            if (AvailableAttributes != null)
            {
                foreach (var attribute in AvailableAttributes)
                {
                    var control = attribute.FieldType.Field.FilterControl(attribute.QualifierValues, "filter_" + attribute.Id.ToString(), false, Rock.Reporting.FilterMode.SimpleFilter);
                    if (control != null)
                    {
                        if (control is IRockControl)
                        {
                            var rockControl = (IRockControl)control;
                            rockControl.Label = attribute.Name;
                            rockControl.Help  = attribute.Description;
                            phAttributeFilters.Controls.Add(control);
                        }
                        else
                        {
                            var wrapper = new RockControlWrapper();
                            wrapper.ID    = control.ID + "_wrapper";
                            wrapper.Label = attribute.Name;
                            wrapper.Controls.Add(control);
                            phAttributeFilters.Controls.Add(wrapper);
                        }

                        string savedValue = rFilter.GetUserPreference(MakeKeyUniqueToConnectionType(attribute.Key));
                        if (!string.IsNullOrWhiteSpace(savedValue))
                        {
                            try
                            {
                                var values = JsonConvert.DeserializeObject <List <string> >(savedValue);
                                attribute.FieldType.Field.SetFilterValues(control, attribute.QualifierValues, values);
                            }
                            catch { }
                        }
                    }

                    string dataFieldExpression = attribute.Key;
                    bool   columnExists        = gConnectionOpportunities.Columns.OfType <AttributeField>().FirstOrDefault(a => a.DataField.Equals(dataFieldExpression)) != null;
                    if (!columnExists)
                    {
                        AttributeField boundField = new AttributeField();
                        boundField.DataField   = dataFieldExpression;
                        boundField.AttributeId = attribute.Id;
                        boundField.HeaderText  = attribute.Name;

                        var attributeCache = Rock.Web.Cache.AttributeCache.Read(attribute.Id);
                        if (attributeCache != null)
                        {
                            boundField.ItemStyle.HorizontalAlign = attributeCache.FieldType.Field.AlignValue;
                        }

                        gConnectionOpportunities.Columns.Add(boundField);
                    }
                }
            }
        }
Пример #17
0
        /// <summary>
        /// Adds the attribute columns.
        /// </summary>
        private void AddDynamicControls()
        {
            // Clear the filter controls
            phAttributeFilters.Controls.Clear();

            // Remove attribute columns
            foreach (var column in gWorkflows.Columns.OfType <AttributeField>().ToList())
            {
                gWorkflows.Columns.Remove(column);
            }

            if (AvailableAttributes != null)
            {
                foreach (var attribute in AvailableAttributes)
                {
                    var control = attribute.FieldType.Field.FilterControl(attribute.QualifierValues, "filter_" + attribute.Id.ToString(), false);
                    if (control is IRockControl)
                    {
                        var rockControl = (IRockControl)control;
                        rockControl.Label = attribute.Name;
                        rockControl.Help  = attribute.Description;
                        phAttributeFilters.Controls.Add(control);
                    }
                    else
                    {
                        var wrapper = new RockControlWrapper();
                        wrapper.ID    = control.ID + "_wrapper";
                        wrapper.Label = attribute.Name;
                        wrapper.Controls.Add(control);
                        phAttributeFilters.Controls.Add(wrapper);
                    }

                    string savedValue = gfWorkflows.GetUserPreference(MakeKeyUniqueToType(attribute.Key));
                    if (!string.IsNullOrWhiteSpace(savedValue))
                    {
                        try
                        {
                            var values = JsonConvert.DeserializeObject <List <string> >(savedValue);
                            attribute.FieldType.Field.SetFilterValues(control, attribute.QualifierValues, values);
                        }
                        catch { }
                    }

                    string dataFieldExpression = attribute.Key;
                    bool   columnExists        = gWorkflows.Columns.OfType <AttributeField>().FirstOrDefault(a => a.DataField.Equals(dataFieldExpression)) != null;
                    if (!columnExists)
                    {
                        AttributeField boundField = new AttributeField();
                        boundField.DataField      = dataFieldExpression;
                        boundField.HeaderText     = attribute.Name;
                        boundField.SortExpression = string.Empty;

                        var attributeCache = Rock.Web.Cache.AttributeCache.Read(attribute.Id);
                        if (attributeCache != null)
                        {
                            boundField.ItemStyle.HorizontalAlign = attributeCache.FieldType.Field.AlignValue;
                        }

                        gWorkflows.Columns.Add(boundField);
                    }
                }
            }

            var dateField = new DateTimeField();

            gWorkflows.Columns.Add(dateField);
            dateField.DataField           = "CreatedDateTime";
            dateField.SortExpression      = "CreatedDateTime";
            dateField.HeaderText          = "Created";
            dateField.FormatAsElapsedTime = true;

            var statusField = new BoundField();

            gWorkflows.Columns.Add(statusField);
            statusField.DataField      = "Status";
            statusField.SortExpression = "Status";
            statusField.HeaderText     = "Status";
            statusField.HtmlEncode     = false;

            var stateField = new BoundField();

            gWorkflows.Columns.Add(stateField);
            stateField.DataField      = "State";
            stateField.SortExpression = "CompletedDateTime";
            stateField.HeaderText     = "State";
            stateField.HtmlEncode     = false;

            var manageField = new EditField();

            gWorkflows.Columns.Add(manageField);
            manageField.IconCssClass = "fa fa-edit";
            manageField.Click       += gWorkflows_Manage;

            var deleteField = new DeleteField();

            gWorkflows.Columns.Add(deleteField);
            deleteField.Click += gWorkflows_Delete;
        }
        /// <summary>
        /// Sets the filters.
        /// </summary>
        private void SetFilters(bool setValues)
        {
            using (var rockContext = new RockContext())
            {
                string sessionKey       = string.Format("ConnectionSearch_{0}", this.BlockId);
                var    searchSelections = Session[sessionKey] as Dictionary <string, string>;
                setValues = setValues && searchSelections != null;

                var connectionType = new ConnectionTypeService(rockContext).Get(GetAttributeValue(AttributeKey.ConnectionTypeId).AsInteger());

                if (!GetAttributeValue(AttributeKey.DisplayNameFilter).AsBoolean())
                {
                    tbSearchName.Visible = false;
                }

                if (GetAttributeValue(AttributeKey.DisplayCampusFilter).AsBoolean())
                {
                    cblCampus.Visible    = true;
                    cblCampus.DataSource = CampusCache.All(GetAttributeValue(AttributeKey.DisplayInactiveCampuses).AsBoolean());
                    cblCampus.DataBind();
                }
                else
                {
                    cblCampus.Visible = false;
                }

                if (setValues)
                {
                    if (searchSelections.ContainsKey("tbSearchName"))
                    {
                        tbSearchName.Text = searchSelections["tbSearchName"];
                    }
                    if (searchSelections.ContainsKey("cblCampus"))
                    {
                        var selectedItems = searchSelections["cblCampus"].SplitDelimitedValues().AsIntegerList();
                        cblCampus.SetValues(selectedItems);
                    }
                }
                else if (GetAttributeValue(AttributeKey.EnableCampusContext).AsBoolean())
                {
                    var campusEntityType = EntityTypeCache.Get("Rock.Model.Campus");
                    var contextCampus    = RockPage.GetCurrentContext(campusEntityType) as Campus;

                    if (contextCampus != null)
                    {
                        cblCampus.SetValue(contextCampus.Id.ToString());
                    }
                }

                if (GetAttributeValue(AttributeKey.DisplayAttributeFilters).AsBoolean())
                {
                    // Parse the attribute filters
                    AvailableAttributes = new List <AttributeCache>();
                    if (connectionType != null)
                    {
                        int entityTypeId = new ConnectionOpportunity().TypeId;
                        foreach (var attributeModel in new AttributeService(new RockContext()).Queryable()
                                 .Where(a =>
                                        a.EntityTypeId == entityTypeId &&
                                        a.EntityTypeQualifierColumn.Equals("ConnectionTypeId", StringComparison.OrdinalIgnoreCase) &&
                                        a.EntityTypeQualifierValue.Equals(connectionType.Id.ToString()) &&
                                        a.AllowSearch == true)
                                 .OrderBy(a => a.Order)
                                 .ThenBy(a => a.Name))
                        {
                            AvailableAttributes.Add(AttributeCache.Get(attributeModel));
                        }
                    }

                    // Clear the filter controls
                    phAttributeFilters.Controls.Clear();

                    if (AvailableAttributes != null)
                    {
                        foreach (var attribute in AvailableAttributes)
                        {
                            string controlId = "filter_" + attribute.Id.ToString();
                            var    control   = attribute.FieldType.Field.FilterControl(attribute.QualifierValues, controlId, false, Rock.Reporting.FilterMode.SimpleFilter);
                            if (control != null)
                            {
                                if (control is IRockControl)
                                {
                                    var rockControl = ( IRockControl )control;
                                    rockControl.Label = attribute.Name;
                                    rockControl.Help  = attribute.Description;
                                    phAttributeFilters.Controls.Add(control);
                                }
                                else
                                {
                                    var wrapper = new RockControlWrapper();
                                    wrapper.ID    = control.ID + "_wrapper";
                                    wrapper.Label = attribute.Name;
                                    wrapper.Controls.Add(control);
                                    phAttributeFilters.Controls.Add(wrapper);
                                }

                                if (setValues && searchSelections.ContainsKey(controlId))
                                {
                                    var values = searchSelections[controlId].FromJsonOrNull <List <string> >();
                                    attribute.FieldType.Field.SetFilterValues(control, attribute.QualifierValues, values);
                                }
                            }
                        }
                    }
                }
                else
                {
                    phAttributeFilters.Visible = false;
                }

                if (connectionType != null)
                {
                    int entityTypeId    = new ConnectionOpportunity().TypeId;
                    var attributeOneKey = GetAttributeValue(AttributeKey.AttributeOneKey);
                    var attributeTwoKey = GetAttributeValue(AttributeKey.AttributeTwoKey);

                    if (!string.IsNullOrWhiteSpace(attributeOneKey))
                    {
                        if (!string.IsNullOrWhiteSpace(attributeTwoKey))
                        {
                            pnlAttributeOne.CssClass = "col-sm-6";
                        }
                        else
                        {
                            pnlAttributeOne.CssClass = "col-sm-12";
                        }

                        AttributeOne = AttributeCache.Get(new AttributeService(new RockContext()).Queryable()
                                                          .FirstOrDefault(a =>
                                                                          a.EntityTypeId == entityTypeId &&
                                                                          a.EntityTypeQualifierColumn.Equals("ConnectionTypeId", StringComparison.OrdinalIgnoreCase) &&
                                                                          a.EntityTypeQualifierValue.Equals(connectionType.Id.ToString()) &&
                                                                          a.Key == attributeOneKey));
                    }

                    if (!string.IsNullOrWhiteSpace(attributeTwoKey))
                    {
                        if (!string.IsNullOrWhiteSpace(attributeOneKey))
                        {
                            pnlAttributeTwo.CssClass = "col-sm-6";
                        }
                        else
                        {
                            pnlAttributeTwo.CssClass = "col-sm-12";
                        }

                        AttributeTwo = AttributeCache.Get(new AttributeService(new RockContext()).Queryable()
                                                          .FirstOrDefault(a =>
                                                                          a.EntityTypeId == entityTypeId &&
                                                                          a.EntityTypeQualifierColumn.Equals("ConnectionTypeId", StringComparison.OrdinalIgnoreCase) &&
                                                                          a.EntityTypeQualifierValue.Equals(connectionType.Id.ToString()) &&
                                                                          a.Key == attributeTwoKey));
                    }
                }

                if (AttributeOne != null)
                {
                    phAttributeOne.Controls.Clear();
                    AttributeOne.AddControl(phAttributeOne.Controls, string.Empty, string.Empty, true, true, false);
                    var control = phAttributeOne.Controls[0] as DropDownList;
                    if (control != null)
                    {
                        control.EnableViewState       = true;
                        control.AutoPostBack          = true;
                        control.SelectedIndexChanged += new EventHandler(ddlAttributeOne_SelectedIndexChanged);
                    }
                    else
                    {
                        var          theseControls = phAttributeOne.Controls[0] as DropDownList;
                        DropDownList ddl           = new DropDownList();
                        string[]     theseValues   = AttributeOne.QualifierValues.Values.ElementAt(0).Value.Split(',');
                        if (theseValues.Count() == 1 && theseValues[0] == "rb")
                        {
                            theseValues = AttributeOne.QualifierValues.Values.ElementAt(1).Value.Split(',');
                        }
                        foreach (string nameValue in theseValues)
                        {
                            string[] nameAndValue = nameValue.Split(new char[] { '^' });

                            if (nameAndValue.Length == 2)
                            {
                                ddl.Items.Add(new ListItem(nameAndValue[1].Trim(), nameAndValue[0].Trim()));
                            }
                        }

                        ddl.Items.Insert(0, new ListItem(String.Empty, String.Empty));
                        ddl.SelectedIndex = 0;
                        ddl.CssClass      = "form-control";
                        var attributeOneLabel = new HtmlGenericContainer("label");
                        attributeOneLabel.InnerHtml = AttributeOne.Name;
                        attributeOneLabel.CssClass  = "control-label";

                        phAttributeOne.Controls.Clear();
                        phAttributeOne.Controls.Add(new Literal()
                        {
                            Text = "<div class='form-group rock-drop-down-list'>"
                        });
                        phAttributeOne.Controls.Add(attributeOneLabel);
                        phAttributeOne.Controls.Add(ddl);
                        phAttributeOne.Controls.Add(new Literal()
                        {
                            Text = "</div>"
                        });

                        var newDdl = phAttributeOne.Controls[2] as DropDownList;

                        newDdl.EnableViewState       = true;
                        newDdl.AutoPostBack          = true;
                        newDdl.SelectedIndexChanged += new EventHandler(ddlAttributeOne_SelectedIndexChanged);
                    }
                }

                if (AttributeTwo != null)
                {
                    phAttributeTwo.Controls.Clear();
                    AttributeTwo.AddControl(phAttributeTwo.Controls, string.Empty, string.Empty, true, true, false);
                    var control = phAttributeTwo.Controls[0] as DropDownList;
                    if (control != null)
                    {
                        control.EnableViewState       = true;
                        control.AutoPostBack          = true;
                        control.SelectedIndexChanged += new EventHandler(ddlAttributeTwo_SelectedIndexChanged);
                    }
                    else
                    {
                        var          theseControls = phAttributeTwo.Controls[0] as DropDownList;
                        DropDownList ddl           = new DropDownList();
                        string[]     theseValues   = AttributeTwo.QualifierValues.Values.ElementAt(0).Value.Split(',');
                        if (theseValues.Count() == 1 && theseValues[0] == "rb")
                        {
                            theseValues = AttributeTwo.QualifierValues.Values.ElementAt(1).Value.Split(',');
                        }

                        foreach (string nameValue in theseValues)
                        {
                            string[] nameAndValue = nameValue.Split(new char[] { '^' });

                            if (nameAndValue.Length == 2)
                            {
                                ddl.Items.Add(new ListItem(nameAndValue[1].Trim(), nameAndValue[0].Trim()));
                            }
                        }

                        ddl.Items.Insert(0, new ListItem(String.Empty, String.Empty));
                        ddl.SelectedIndex = 0;
                        ddl.CssClass      = "form-control";
                        var attributeTwoLabel = new HtmlGenericContainer("label");
                        attributeTwoLabel.InnerHtml = AttributeTwo.Name;
                        attributeTwoLabel.CssClass  = "control-label";

                        phAttributeTwo.Controls.Clear();
                        phAttributeTwo.Controls.Add(new Literal()
                        {
                            Text = "<div class='form-group rock-drop-down-list'>"
                        });
                        phAttributeTwo.Controls.Add(attributeTwoLabel);
                        phAttributeTwo.Controls.Add(ddl);
                        phAttributeTwo.Controls.Add(new Literal()
                        {
                            Text = "</div>"
                        });

                        var newDdl = phAttributeTwo.Controls[2] as DropDownList;

                        newDdl.EnableViewState       = true;
                        newDdl.AutoPostBack          = true;
                        newDdl.SelectedIndexChanged += new EventHandler(ddlAttributeTwo_SelectedIndexChanged);
                    }
                }
            }
        }
Пример #19
0
        /// <summary>
        /// Called by the ASP.NET page framework to notify server controls that use composition-based implementation to create any child controls they contain in preparation for posting back or rendering.
        /// </summary>
        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            Controls.Clear();

            ddlFrom = new RockDropDownList();
            ddlFrom.ID = string.Format( "ddlFrom_{0}", this.ID );
            ddlFrom.Label = "From";
            ddlFrom.Help = "The number to originate message from (configured under Admin Tools > General Settings > Defined Types > SMS From Values).";
            ddlFrom.BindToDefinedType( DefinedTypeCache.Read( new Guid( Rock.SystemGuid.DefinedType.COMMUNICATION_SMS_FROM ) ), false, true );
            Controls.Add( ddlFrom );

            rcwMessage = new RockControlWrapper();
            rcwMessage.ID = string.Format( "rcwMessage_{0}", this.ID );
            rcwMessage.Label = "Message";
            Controls.Add( rcwMessage );

            mfpMessage = new MergeFieldPicker();
            mfpMessage.ID = string.Format( "mfpMergeFields_{0}", this.ID );
            mfpMessage.MergeFields.Clear();
            mfpMessage.MergeFields.Add( "GlobalAttribute" );
            mfpMessage.MergeFields.Add( "Rock.Model.Person" );
            mfpMessage.CssClass += " pull-right margin-b-sm";
            mfpMessage.SelectItem += mfpMergeFields_SelectItem;
            rcwMessage.Controls.Add( mfpMessage );

            tbMessage = new RockTextBox();
            tbMessage.ID = string.Format( "tbTextMessage_{0}", this.ID );
            tbMessage.TextMode = TextBoxMode.MultiLine;
            tbMessage.Rows = 3;
            rcwMessage.Controls.Add( tbMessage );
        }
Пример #20
0
        /// <summary>
        /// Adds the attribute columns.
        /// </summary>
        private void AddDynamicControls()
        {
            // Clear the filter controls
            phAttributeFilters.Controls.Clear();

            // Remove attribute columns
            foreach (var column in gWorkflows.Columns.OfType <AttributeField>().ToList())
            {
                gWorkflows.Columns.Remove(column);
            }

            if (AvailableAttributes != null)
            {
                foreach (var attribute in AvailableAttributes)
                {
                    var control = attribute.FieldType.Field.FilterControl(attribute.QualifierValues, "filter_" + attribute.Id.ToString(), false, Rock.Reporting.FilterMode.SimpleFilter);
                    if (control != null)
                    {
                        if (control is IRockControl)
                        {
                            var rockControl = (IRockControl)control;
                            rockControl.Label = attribute.Name;
                            rockControl.Help  = attribute.Description;
                            phAttributeFilters.Controls.Add(control);
                        }
                        else
                        {
                            var wrapper = new RockControlWrapper();
                            wrapper.ID    = control.ID + "_wrapper";
                            wrapper.Label = attribute.Name;
                            wrapper.Controls.Add(control);
                            phAttributeFilters.Controls.Add(wrapper);
                        }
                    }

                    string savedValue = gfWorkflows.GetUserPreference(MakeKeyUniqueToType(attribute.Key));
                    if (!string.IsNullOrWhiteSpace(savedValue))
                    {
                        try
                        {
                            var values = JsonConvert.DeserializeObject <List <string> >(savedValue);
                            attribute.FieldType.Field.SetFilterValues(control, attribute.QualifierValues, values);
                        }
                        catch { }
                    }

                    string dataFieldExpression = attribute.Key;
                    bool   columnExists        = gWorkflows.Columns.OfType <AttributeField>().FirstOrDefault(a => a.DataField.Equals(dataFieldExpression)) != null;
                    if (!columnExists)
                    {
                        AttributeField boundField = new AttributeField();
                        boundField.DataField   = dataFieldExpression;
                        boundField.AttributeId = attribute.Id;
                        boundField.HeaderText  = attribute.Name;
                        boundField.Condensed   = false;

                        var attributeCache = Rock.Web.Cache.AttributeCache.Read(attribute.Id);
                        if (attributeCache != null)
                        {
                            boundField.ItemStyle.HorizontalAlign = attributeCache.FieldType.Field.AlignValue;
                        }

                        gWorkflows.Columns.Add(boundField);
                    }
                }
            }

            var dateField = new DateTimeField();

            gWorkflows.Columns.Add(dateField);
            dateField.DataField           = "CreatedDateTime";
            dateField.SortExpression      = "CreatedDateTime";
            dateField.HeaderText          = "Created";
            dateField.FormatAsElapsedTime = true;

            var statusField = new BoundField();

            gWorkflows.Columns.Add(statusField);
            statusField.DataField        = "Status";
            statusField.SortExpression   = "Status";
            statusField.HeaderText       = "Status";
            statusField.DataFormatString = "<span class='label label-info'>{0}</span>";
            statusField.HtmlEncode       = false;

            var stateField = new CallbackField();

            gWorkflows.Columns.Add(stateField);
            stateField.DataField          = "IsCompleted";
            stateField.SortExpression     = "CompletedDateTime";
            stateField.HeaderText         = "State";
            stateField.HtmlEncode         = false;
            stateField.OnFormatDataValue += (sender, e) =>
            {
                if ((bool)e.DataValue)
                {
                    e.FormattedValue = "<span class='label label-default'>Completed</span>";
                }
                else
                {
                    e.FormattedValue = "<span class='label label-success'>Active</span>";
                }
            };

            if (_canView)
            {
                var manageField = new LinkButtonField();
                gWorkflows.Columns.Add(manageField);
                manageField.CssClass = "btn btn-default btn-sm fa fa-file-text-o";
                manageField.Click   += gWorkflows_Manage;
            }

            if (_canEdit)
            {
                var deleteField = new DeleteField();
                gWorkflows.Columns.Add(deleteField);
                deleteField.Click += gWorkflows_Delete;
            }
        }