/// <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); } } } }
/// <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); }
/// <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); }
/// <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); } }
/// <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); }
/// <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; } }
/// <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 = " "; deleteField.Visible = true; gList.Columns.Add(deleteField); deleteField.Click += gGrid_DeleteClick; } }
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; } } }
/// <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); }
/// <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>"; } }; }
/// <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); } } } }
/// <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); } } } }
/// <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 ); }
/// <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; } }