Beispiel #1
0
        /// <summary>Displays the course page.</summary>
        /// <param name="coursePage">The course page.</param>
        /// <param name="parentControl">The parent control.</param>
        /// <returns></returns>
        public virtual List <Control> DisplayCoursePage(CoursePage coursePage, Control parentControl)
        {
            var controls = new List <Control>();
            var literal  = new RockLiteral
            {
                Text = coursePage.Configuration
            };

            parentControl.Controls.Add(literal);

            controls.Add(literal);
            return(controls);
        }
Beispiel #2
0
        private void DisplayPINs()
        {
            int pinEntityId = EntityTypeCache.Get("Rock.Security.Authentication.PINAuthentication").Id;

            RockContext rockContext     = new RockContext();
            var         userLoginEntity = new EntityTypeService(rockContext).Get(pinEntityId);
            var         userAuthorized  = userLoginEntity.IsAuthorized(Authorization.ADMINISTRATE, CurrentPerson);

            if (userAuthorized)
            {
                lbAdd.Visible = true;
            }

            var pins = new UserLoginService(rockContext).GetByPersonId(Person.Id).Where(ul => ul.EntityTypeId == pinEntityId).ToList();

            phPin.Controls.Clear();
            foreach (var pin in pins)
            {
                var rowPanel = new Panel();
                rowPanel.CssClass = "row rollover-container";
                phPin.Controls.Add(rowPanel);

                var firstPanel = new Panel();
                firstPanel.CssClass = "col-xs-1";
                rowPanel.Controls.Add(firstPanel);

                var secondPanel = new Panel();
                secondPanel.CssClass = "col-xs-10";
                rowPanel.Controls.Add(secondPanel);

                pin.LoadAttributes();
                List <string> purpose = new List <string>();
                if (pin.GetAttributeValue("PINPurpose") != null)
                {
                    var purposeIds = pin.GetAttributeValue("PINPurpose")
                                     .Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries)
                                     .ToList();
                    if (purposeIds.Any())
                    {
                        foreach (var purposeId in purposeIds)
                        {
                            var dvPurpose = DefinedValueCache.Get(purposeId.AsInteger());
                            if (dvPurpose != null)
                            {
                                purpose.Add(dvPurpose.Value);
                            }
                        }
                    }
                    else
                    {
                        purpose.Add("[No Purpose]");
                    }
                }
                else
                {
                    purpose.Add("[No Purpose]");
                }

                RockLiteral rockLiteral = new RockLiteral();
                rockLiteral.Label = pin.UserName;
                rockLiteral.Text  = string.Join(", ", purpose);
                secondPanel.Controls.Add(rockLiteral);

                var thirdPanel = new Panel();
                thirdPanel.CssClass = "col-xs-1 rollover-item";
                rowPanel.Controls.Add(thirdPanel);

                if (userAuthorized)
                {
                    LinkButton lbEdit = new LinkButton();
                    lbEdit.ID     = pin.Guid.ToString();
                    lbEdit.Text   = "<i class='fa fa-pencil'></i>";
                    lbEdit.Click += (s, ee) => EditPin(pin.Id, rockContext);
                    thirdPanel.Controls.Add(lbEdit);
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Shows the readonly details.
        /// </summary>
        /// <param name="eventItem">The event item.</param>
        private void ShowReadonlyDetails(EventItem eventItem)
        {
            SetEditMode(false);

            hfEventItemId.SetValue(eventItem.Id);

            lReadOnlyTitle.Text = eventItem.Name.FormatAsHtmlTitle();

            SetLabels(eventItem);

            string imgTag = GetImageTag(eventItem.PhotoId, 300, 300, false, true);

            if (eventItem.PhotoId.HasValue)
            {
                string imageUrl = ResolveRockUrl(String.Format("~/GetImage.ashx?id={0}", eventItem.PhotoId.Value));
                lImage.Text      = string.Format("<a href='{0}'>{1}</a>", imageUrl, imgTag);
                divImage.Visible = true;
            }
            else
            {
                divImage.Visible = false;
            }

            lSummary.Visible = !string.IsNullOrWhiteSpace(eventItem.Summary);
            lSummary.Text    = eventItem.Summary;

            var calendars = eventItem.EventCalendarItems
                            .Select(c => c.EventCalendar.Name).ToList();

            if (calendars.Any())
            {
                lCalendar.Visible = true;
                lCalendar.Text    = calendars.AsDelimited(", ");
            }
            else
            {
                lCalendar.Visible = false;
            }

            var audiences = eventItem.EventItemAudiences
                            .Select(a => a.DefinedValue.Value).ToList();

            if (audiences.Any())
            {
                lAudiences.Visible = true;
                lAudiences.Text    = audiences.AsDelimited(", ");
            }
            else
            {
                lAudiences.Visible = false;
            }

            phAttributesView.Controls.Clear();
            foreach (var eventCalendarItem in eventItem.EventCalendarItems)
            {
                eventCalendarItem.LoadAttributes();
                if (eventCalendarItem.Attributes.Count > 0)
                {
                    foreach (var attr in eventCalendarItem.Attributes)
                    {
                        string value = eventCalendarItem.GetAttributeValue(attr.Key);
                        if (!string.IsNullOrWhiteSpace(value))
                        {
                            var rl = new RockLiteral();
                            rl.ID    = "attr_" + attr.Key;
                            rl.Label = attr.Value.Name;
                            rl.Text  = attr.Value.FieldType.Field.FormatValueAsHtml(null, value, attr.Value.QualifierValues, false);
                            phAttributesView.Controls.Add(rl);
                        }
                    }
                }
            }
        }
Beispiel #4
0
        private void BuildForm(bool setValues)
        {
            var form = _actionType.WorkflowForm;

            if (setValues)
            {
                var mergeFields = Rock.Web.Cache.GlobalAttributesCache.GetMergeFields(null);
                mergeFields.Add("Action", _action);
                mergeFields.Add("Activity", _activity);
                mergeFields.Add("Workflow", _workflow);
                if (CurrentPerson != null)
                {
                    mergeFields.Add("CurrentPerson", CurrentPerson);
                }

                lheadingText.Text = form.Header.ResolveMergeFields(mergeFields);
                lFootingText.Text = form.Footer.ResolveMergeFields(mergeFields);
            }

            phAttributes.Controls.Clear();
            foreach (var formAttribute in form.FormAttributes.OrderBy(a => a.Order))
            {
                if (formAttribute.IsVisible)
                {
                    var attribute = AttributeCache.Read(formAttribute.AttributeId);

                    string value = attribute.DefaultValue;
                    if (_workflow != null && _workflow.AttributeValues.ContainsKey(attribute.Key) && _workflow.AttributeValues[attribute.Key] != null)
                    {
                        value = _workflow.AttributeValues[attribute.Key].Value;
                    }

                    if (!string.IsNullOrWhiteSpace(formAttribute.PreHtml))
                    {
                        phAttributes.Controls.Add(new LiteralControl(formAttribute.PreHtml));
                    }

                    if (formAttribute.IsReadOnly)
                    {
                        var    field          = attribute.FieldType.Field;
                        string formattedValue = field.FormatValueAsHtml(phAttributes, value, attribute.QualifierValues);

                        if (formAttribute.HideLabel)
                        {
                            phAttributes.Controls.Add(new LiteralControl(formattedValue));
                        }
                        else
                        {
                            RockLiteral lAttribute = new RockLiteral();
                            lAttribute.ID    = "lAttribute_" + formAttribute.Id.ToString();
                            lAttribute.Label = attribute.Name;

                            if (field is Rock.Field.ILinkableFieldType)
                            {
                                string url = ((Rock.Field.ILinkableFieldType)field).UrlLink(value, attribute.QualifierValues);
                                url             = ResolveRockUrl("~").EnsureTrailingForwardslash() + url;
                                lAttribute.Text = string.Format("<a href='{0}' target='_blank'>{1}</a>", url, formattedValue);
                            }
                            else
                            {
                                lAttribute.Text = formattedValue;
                            }

                            phAttributes.Controls.Add(lAttribute);
                        }
                    }
                    else
                    {
                        attribute.AddControl(phAttributes.Controls, value, BlockValidationGroup, setValues, true, formAttribute.IsRequired,
                                             (formAttribute.HideLabel ? string.Empty : attribute.Name));
                    }

                    if (!string.IsNullOrWhiteSpace(formAttribute.PostHtml))
                    {
                        phAttributes.Controls.Add(new LiteralControl(formAttribute.PostHtml));
                    }
                }
            }

            if (form.AllowNotes.HasValue && form.AllowNotes.Value && _workflow != null && _workflow.Id != 0)
            {
                ncWorkflowNotes.EntityId = _workflow.Id;
                ncWorkflowNotes.RebuildNotes(setValues);
                ShowNotes(true);
            }
            else
            {
                ShowNotes(false);
            }

            phActions.Controls.Clear();
            foreach (var action in form.Actions.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries))
            {
                var details = action.Split(new char[] { '^' });
                if (details.Length > 0)
                {
                    // Get the button html
                    string buttonHtml = string.Empty;
                    if (details.Length > 1)
                    {
                        var definedValue = DefinedValueCache.Read(details[1].AsGuid());
                        if (definedValue != null)
                        {
                            buttonHtml = definedValue.GetAttributeValue("ButtonHTML");
                        }
                    }

                    if (string.IsNullOrWhiteSpace(buttonHtml))
                    {
                        buttonHtml = "<a href=\"{{ ButtonLink }}\" onclick=\"{{ ButtonClick }}\" class='btn btn-primary' data-loading-text='<i class=\"fa fa-refresh fa-spin\"></i> {{ ButtonText }}'>{{ ButtonText }}</a>";
                    }

                    var buttonMergeFields = new Dictionary <string, object>();
                    buttonMergeFields.Add("ButtonText", details[0].EscapeQuotes());
                    buttonMergeFields.Add("ButtonClick",
                                          string.Format("if ( Page_ClientValidate('{0}') ) {{ $(this).button('loading'); return true; }} else {{ return false; }}",
                                                        BlockValidationGroup));
                    buttonMergeFields.Add("ButtonLink", Page.ClientScript.GetPostBackClientHyperlink(this, details[0]));

                    buttonHtml = buttonHtml.ResolveMergeFields(buttonMergeFields);

                    phActions.Controls.Add(new LiteralControl(buttonHtml));
                    phActions.Controls.Add(new LiteralControl(" "));
                }
            }
        }
Beispiel #5
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();

            tbFromName       = new RockTextBox();
            tbFromName.ID    = string.Format("tbFromName_{0}", this.ID);
            tbFromName.Label = "From Name";
            Controls.Add(tbFromName);

            lFromName       = new RockLiteral();
            lFromName.ID    = string.Format("lFromName_{0}", this.ID);
            lFromName.Label = "From Name";
            Controls.Add(lFromName);

            ebFromAddress       = new EmailBox();
            ebFromAddress.ID    = string.Format("ebFromAddress_{0}", this.ID);
            ebFromAddress.Label = "From Address";
            Controls.Add(ebFromAddress);

            lFromAddress       = new RockLiteral();
            lFromAddress.ID    = string.Format("lFromAddress_{0}", this.ID);
            lFromAddress.Label = "From Address";
            Controls.Add(lFromAddress);

            ebReplyToAddress       = new EmailBox();
            ebReplyToAddress.ID    = string.Format("ebReplyToAddress_{0}", this.ID);
            ebReplyToAddress.Label = "Reply To Address";
            Controls.Add(ebReplyToAddress);

            tbSubject       = new RockTextBox();
            tbSubject.ID    = string.Format("tbSubject_{0}", this.ID);
            tbSubject.Label = "Subject";
            tbSubject.Help  = "<span class='tip tip-lava'></span>";
            Controls.Add(tbSubject);

            htmlMessage    = new HtmlEditor();
            htmlMessage.ID = string.Format("htmlMessage_{0}", this.ID);
            //htmlMessage.AdditionalConfigurations = "autoParagraph: false,";
            htmlMessage.Help = "<span class='tip tip-lava'></span> <span class='tip tip-html'>";
            this.AdditionalMergeFields.ForEach(m => htmlMessage.MergeFields.Add(m));
            htmlMessage.Label  = "Message";
            htmlMessage.Height = 600;
            Controls.Add(htmlMessage);

            tbTextMessage          = new RockTextBox();
            tbTextMessage.ID       = string.Format("tbTextMessage_{0}", this.ID);
            tbTextMessage.Label    = "Message (Text Version)";
            tbTextMessage.TextMode = TextBoxMode.MultiLine;
            tbTextMessage.Rows     = 5;
            tbTextMessage.CssClass = "span12";
            Controls.Add(tbTextMessage);

            hfAttachments    = new HiddenField();
            hfAttachments.ID = string.Format("hfAttachments_{0}", this.ID);
            Controls.Add(hfAttachments);

            fuAttachments               = new FileUploader();
            fuAttachments.ID            = string.Format("fuAttachments_{0}", this.ID);
            fuAttachments.Label         = "Attachments";
            fuAttachments.FileUploaded += fuAttachments_FileUploaded;
            Controls.Add(fuAttachments);
        }
Beispiel #6
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();

            tbFromName           = new RockTextBox();
            tbFromName.ID        = string.Format("tbFromName_{0}", this.ID);
            tbFromName.Label     = "From Name";
            tbFromName.MaxLength = 100;
            Controls.Add(tbFromName);

            lFromName       = new RockLiteral();
            lFromName.ID    = string.Format("lFromName_{0}", this.ID);
            lFromName.Label = "From Name";
            Controls.Add(lFromName);

            ebFromAddress       = new EmailBox();
            ebFromAddress.ID    = string.Format("ebFromAddress_{0}", this.ID);
            ebFromAddress.Label = "From Address";
            Controls.Add(ebFromAddress);

            lFromAddress       = new RockLiteral();
            lFromAddress.ID    = string.Format("lFromAddress_{0}", this.ID);
            lFromAddress.Label = "From Address";
            Controls.Add(lFromAddress);

            ebReplyToAddress       = new EmailBox();
            ebReplyToAddress.ID    = string.Format("ebReplyToAddress_{0}", this.ID);
            ebReplyToAddress.Label = "Reply To Address";
            Controls.Add(ebReplyToAddress);

            tbSubject           = new RockTextBox();
            tbSubject.ID        = string.Format("tbSubject_{0}", this.ID);
            tbSubject.Label     = "Subject";
            tbSubject.Help      = "<span class='tip tip-lava'></span>";
            tbSubject.MaxLength = 100;
            Controls.Add(tbSubject);

            htmlMessage    = new HtmlEditor();
            htmlMessage.ID = string.Format("htmlMessage_{0}", this.ID);
            //htmlMessage.AdditionalConfigurations = "autoParagraph: false,";
            htmlMessage.Help   = "<span class='tip tip-lava'></span> <span class='tip tip-html'>";
            htmlMessage.Label  = "Message";
            htmlMessage.Height = 600;
            Controls.Add(htmlMessage);

            hfAttachments    = new HiddenField();
            hfAttachments.ID = string.Format("hfAttachments_{0}", this.ID);
            Controls.Add(hfAttachments);

            fupEmailAttachments               = new FileUploader();
            fupEmailAttachments.ID            = string.Format("fupEmailAttachments_{0}", this.ID);
            fupEmailAttachments.Label         = "Attachments";
            fupEmailAttachments.FileUploaded += fupEmailAttachments_FileUploaded;
            Controls.Add(fupEmailAttachments);

            ebCcAddress       = new EmailBox();
            ebCcAddress.ID    = string.Format("ebCcAddress_{0}", this.ID);
            ebCcAddress.Label = "CC Address";
            ebCcAddress.Help  = "Any address in this field will be copied on the email sent to every recipient.  Lava can be used to access recipient data. <span class='tip tip-lava'></span>";
            Controls.Add(ebCcAddress);

            ebBccAddress       = new EmailBox();
            ebBccAddress.ID    = string.Format("ebBccAddress{0}", this.ID);
            ebBccAddress.Label = "Bcc Address";
            ebBccAddress.Help  = "Any address in this field will be copied on the email sent to every recipient.  Lava can be used to access recipient data. <span class='tip tip-lava'></span>";
            Controls.Add(ebBccAddress);
        }
        private void ShowView()
        {
            phGroups.Controls.Clear();
            var                groups             = GetGroups();
            RockContext        rockContext        = new RockContext();
            GroupMemberService groupMemberService = new GroupMemberService(rockContext);

            foreach (var group in groups)
            {
                if (!group.IsAuthorized(Authorization.VIEW, CurrentPerson))
                {
                    continue;
                }

                var groupRoleIds = group.GroupType.Roles.Select(r => r.Id).ToList();
                var groupMembers = groupMemberService.GetByGroupIdAndPersonId(group.Id, Person.Id);
                foreach (var groupMember in groupMembers)
                {
                    var incorrectRoleIdAlert = "";
                    if (!groupRoleIds.Contains(groupMember.GroupRoleId))
                    {
                        incorrectRoleIdAlert = string.Format(" <i class='fa fa-exclamation-triangle' title='{0}'></i>",
                                                             group.GroupType.DefaultGroupRoleId);
                    }

                    Literal ltGroup = new Literal();
                    ltGroup.Text = string.Format("<h4>{0} [{1}{2}]</h4>", group.Name, groupMember.GroupRole.Name, incorrectRoleIdAlert);
                    phGroups.Controls.Add(ltGroup);
                    string formattedValue = string.Empty;

                    groupMember.LoadAttributes();
                    var attributeList = groupMember.Attributes.Select(d => d.Value)
                                        .OrderBy(a => a.Order).ThenBy(a => a.Name).ToList();
                    foreach (var attribute in attributeList)
                    {
                        var attributeValue = groupMember.GetAttributeValue(attribute.Key);

                        if (attribute.FieldType.Class == typeof(Rock.Field.Types.ImageFieldType).FullName)
                        {
                            formattedValue = attribute.FieldType.Field.FormatValueAsHtml(phGroups, attributeValue, attribute.QualifierValues, true);
                        }
                        else
                        {
                            formattedValue = attribute.FieldType.Field.FormatValueAsHtml(phGroups, attributeValue, attribute.QualifierValues, false);
                        }

                        if (!string.IsNullOrWhiteSpace(formattedValue))
                        {
                            phGroups.Controls.Add(new RockLiteral {
                                Label = attribute.Name, Text = formattedValue
                            });
                        }

                        if (!string.IsNullOrWhiteSpace(groupMember.Note))
                        {
                            RockLiteral ltNote = new RockLiteral();
                            ltNote.Label = "Note";
                            ltNote.Text  = groupMember.Note;
                            phGroups.Controls.Add(ltNote);
                        }
                    }
                }
            }
        }
Beispiel #8
0
        /// <summary>
        /// Handles the ItemDataBound event of the rptrGroups control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.Web.UI.WebControls.RepeaterItemEventArgs"/> instance containing the event data.</param>
        protected void rptrGroups_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                var group = e.Item.DataItem as Group;
                if (group != null)
                {
                    HyperLink hlEditGroup = e.Item.FindControl("hlEditGroup") as HyperLink;
                    if (hlEditGroup != null)
                    {
                        hlEditGroup.Visible = _allowEdit;
                        var pageParams = new Dictionary <string, string>();
                        pageParams.Add("PersonId", Person.Id.ToString());
                        pageParams.Add("GroupId", group.Id.ToString());
                        hlEditGroup.NavigateUrl = LinkedPageUrl(AttributeKey.GroupEditPage, pageParams);
                    }

                    var lReorderIcon = e.Item.FindControl("lReorderIcon") as Control;
                    lReorderIcon.Visible = _showReorderIcon;

                    Repeater rptrMembers = e.Item.FindControl("rptrMembers") as Repeater;
                    if (rptrMembers != null)
                    {
                        // use the _bindGroupsRockContext that is created/disposed in BindFamilies()
                        var members = new GroupMemberService(_bindGroupsRockContext).Queryable("GroupRole,Person", true)
                                      .Where(m =>
                                             m.GroupId == group.Id &&
                                             m.PersonId != Person.Id)
                                      .OrderBy(m => m.GroupRole.Order)
                                      .ToList();

                        var groupHeaderLava = GetAttributeValue(AttributeKey.GroupHeaderLava);
                        var groupFooterLava = GetAttributeValue(AttributeKey.GroupFooterLava);

                        if (groupHeaderLava.IsNotNullOrWhiteSpace() || groupFooterLava.IsNotNullOrWhiteSpace())
                        {
                            // add header and footer information
                            var mergeFields = Rock.Lava.LavaHelper.GetCommonMergeFields(this.RockPage, CurrentPerson, new Rock.Lava.CommonMergeFieldsOptions {
                                GetLegacyGlobalMergeFields = false
                            });
                            mergeFields.Add("Group", group);
                            mergeFields.Add("GroupMembers", members);

                            Literal lGroupHeader = e.Item.FindControl("lGroupHeader") as Literal;
                            Literal lGroupFooter = e.Item.FindControl("lGroupFooter") as Literal;

                            lGroupHeader.Text = groupHeaderLava.ResolveMergeFields(mergeFields);
                            lGroupFooter.Text = groupFooterLava.ResolveMergeFields(mergeFields);
                        }

                        var orderedMembers = new List <GroupMember>();

                        if (_IsFamilyGroupType)
                        {
                            // Add adult males
                            orderedMembers.AddRange(members
                                                    .Where(m => m.GroupRole.Guid.Equals(new Guid(Rock.SystemGuid.GroupRole.GROUPROLE_FAMILY_MEMBER_ADULT)) &&
                                                           m.Person.Gender == Gender.Male)
                                                    .OrderByDescending(m => m.Person.Age));

                            // Add adult females
                            orderedMembers.AddRange(members
                                                    .Where(m => m.GroupRole.Guid.Equals(new Guid(Rock.SystemGuid.GroupRole.GROUPROLE_FAMILY_MEMBER_ADULT)) &&
                                                           m.Person.Gender != Gender.Male)
                                                    .OrderByDescending(m => m.Person.Age));

                            // Add non-adults
                            orderedMembers.AddRange(members
                                                    .Where(m => !m.GroupRole.Guid.Equals(new Guid(Rock.SystemGuid.GroupRole.GROUPROLE_FAMILY_MEMBER_ADULT)))
                                                    .OrderByDescending(m => m.Person.Age));
                        }
                        else
                        {
                            orderedMembers = members
                                             .OrderBy(m => m.GroupRole.Order)
                                             .ThenBy(m => m.Person.LastName)
                                             .ThenBy(m => m.Person.NickName)
                                             .ToList();
                        }
                        rptrMembers.ItemDataBound += rptrMembers_ItemDataBound;
                        rptrMembers.DataSource     = orderedMembers;
                        rptrMembers.DataBind();
                    }

                    Repeater rptrAddresses = e.Item.FindControl("rptrAddresses") as Repeater;
                    if (rptrAddresses != null)
                    {
                        rptrAddresses.ItemDataBound += rptrAddresses_ItemDataBound;
                        rptrAddresses.ItemCommand   += rptrAddresses_ItemCommand;
                        rptrAddresses.DataSource     = new GroupLocationService(_bindGroupsRockContext).Queryable("Location,GroupLocationTypeValue")
                                                       .Where(l => l.GroupId == group.Id)
                                                       .OrderBy(l => l.GroupLocationTypeValue.Order)
                                                       .ToList();
                        rptrAddresses.DataBind();
                    }

                    Panel       pnlGroupAttributes    = e.Item.FindControl("pnlGroupAttributes") as Panel;
                    HyperLink   hlShowMoreAttributes  = e.Item.FindControl("hlShowMoreAttributes") as HyperLink;
                    PlaceHolder phGroupAttributes     = e.Item.FindControl("phGroupAttributes") as PlaceHolder;
                    PlaceHolder phMoreGroupAttributes = e.Item.FindControl("phMoreGroupAttributes") as PlaceHolder;

                    if (pnlGroupAttributes != null && hlShowMoreAttributes != null && phGroupAttributes != null && phMoreGroupAttributes != null)
                    {
                        hlShowMoreAttributes.Visible = false;
                        phGroupAttributes.Controls.Clear();
                        phMoreGroupAttributes.Controls.Clear();

                        group.LoadAttributes();
                        var attributes = group.GetAuthorizedAttributes(Authorization.VIEW, CurrentPerson)
                                         .Select(a => a.Value)
                                         .OrderBy(a => a.Order)
                                         .ToList();

                        foreach (var attribute in attributes)
                        {
                            if (attribute.IsAuthorized(Authorization.VIEW, CurrentPerson))
                            {
                                string value = attribute.DefaultValue;
                                if (group.AttributeValues.ContainsKey(attribute.Key) && group.AttributeValues[attribute.Key] != null)
                                {
                                    value = group.AttributeValues[attribute.Key].ValueFormatted;
                                }

                                if (!string.IsNullOrWhiteSpace(value))
                                {
                                    var literalControl = new RockLiteral();
                                    literalControl.ID    = string.Format("familyAttribute_{0}", attribute.Id);
                                    literalControl.Label = attribute.Name;
                                    literalControl.Text  = value;

                                    var div = new HtmlGenericControl("div");
                                    div.AddCssClass("col-md-3 col-sm-6");
                                    div.Controls.Add(literalControl);

                                    if (attribute.IsGridColumn)
                                    {
                                        phGroupAttributes.Controls.Add(div);
                                    }
                                    else
                                    {
                                        hlShowMoreAttributes.Visible = true;
                                        phMoreGroupAttributes.Controls.Add(div);
                                    }
                                }
                            }
                        }

                        pnlGroupAttributes.Visible = phGroupAttributes.Controls.Count > 0 || phMoreGroupAttributes.Controls.Count > 0;
                    }
                }
            }
        }
Beispiel #9
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();

            tbFromName = new RockTextBox();
            tbFromName.ID = string.Format( "tbFromName_{0}", this.ID );
            tbFromName.Label = "From Name";
            Controls.Add( tbFromName );

            lFromName = new RockLiteral();
            lFromName.ID = string.Format( "lFromName_{0}", this.ID );
            lFromName.Label = "From Name";
            Controls.Add( lFromName );

            ebFromAddress = new EmailBox();
            ebFromAddress.ID = string.Format( "ebFromAddress_{0}", this.ID );
            ebFromAddress.Label = "From Address";
            Controls.Add( ebFromAddress );

            lFromAddress = new RockLiteral();
            lFromAddress.ID = string.Format( "lFromAddress_{0}", this.ID );
            lFromAddress.Label = "From Address";
            Controls.Add( lFromAddress );

            ebReplyToAddress = new EmailBox();
            ebReplyToAddress.ID = string.Format( "ebReplyToAddress_{0}", this.ID );
            ebReplyToAddress.Label = "Reply To Address";
            Controls.Add( ebReplyToAddress );

            tbSubject = new RockTextBox();
            tbSubject.ID = string.Format( "tbSubject_{0}", this.ID );
            tbSubject.Label = "Subject";
            tbSubject.Help = "<span class='tip tip-lava'></span>";
            Controls.Add( tbSubject );

            htmlMessage = new HtmlEditor();
            htmlMessage.ID = string.Format( "htmlMessage_{0}", this.ID );
            //htmlMessage.AdditionalConfigurations = "autoParagraph: false,";
            htmlMessage.Help = "<span class='tip tip-lava'></span> <span class='tip tip-html'>";
            this.AdditionalMergeFields.ForEach( m => htmlMessage.MergeFields.Add( m ) );
            htmlMessage.Label = "Message";
            htmlMessage.Height = 600;
            Controls.Add( htmlMessage );

            tbTextMessage = new RockTextBox();
            tbTextMessage.ID = string.Format( "tbTextMessage_{0}", this.ID );
            tbTextMessage.Label = "Message (Text Version)";
            tbTextMessage.TextMode = TextBoxMode.MultiLine;
            tbTextMessage.Rows = 5;
            tbTextMessage.CssClass = "span12";
            Controls.Add( tbTextMessage );

            hfAttachments = new HiddenField();
            hfAttachments.ID = string.Format( "hfAttachments_{0}", this.ID );
            Controls.Add( hfAttachments );

            fuAttachments = new FileUploader();
            fuAttachments.ID = string.Format( "fuAttachments_{0}", this.ID );
            fuAttachments.Label = "Attachments";
            fuAttachments.FileUploaded += fuAttachments_FileUploaded;
            Controls.Add( fuAttachments );
        }
        /// <summary>
        /// Sets the checkin label (Time, Name, PhoneNumber, etc)
        /// </summary>
        /// <param name="rockContext">The rock context.</param>
        /// <param name="personAliasId">The person alias identifier.</param>
        /// <param name="rockLiteral">The rock literal.</param>
        private static void SetCheckinInfoLabel(RockContext rockContext, DateTime?dateTime, int?personAliasId, RockLiteral rockLiteral)
        {
            if (dateTime == null)
            {
                rockLiteral.Visible = false;
            }

            rockLiteral.Text = dateTime.Value.ToShortDateTimeString();

            if (!personAliasId.HasValue)
            {
                return;
            }

            var personAliasService = new PersonAliasService(rockContext);
            var person             = personAliasService.GetSelect(personAliasId.Value, s => s.Person);

            if (person == null)
            {
                return;
            }

            var checkedInByPersonName  = person.FullName;
            var checkedInByPersonPhone = person.GetPhoneNumber(Rock.SystemGuid.DefinedValue.PERSON_PHONE_TYPE_MOBILE.AsGuid());

            rockLiteral.Text = string.Format("{0 } by {1} {2}", dateTime.Value.ToShortDateTimeString(), checkedInByPersonName, checkedInByPersonPhone);
        }