示例#1
0
        private void DisplayTags(int? ownerId, int entityId)
        {
            // get tags
            var qry = new TagService( new RockContext() )
                .Queryable()
                .Where(t =>
                    t.EntityTypeId == entityId &&
                    (
                        ( t.OwnerPersonAlias == null && !ownerId.HasValue ) ||
                        ( t.OwnerPersonAlias != null && ownerId.HasValue && t.OwnerPersonAlias.PersonId == ownerId.Value )
                    ) )
                .Select(t => new
                {
                    Id = t.Id,
                    Name = t.Name,
                    Count = t.TaggedItems.Count()
                })
                .OrderBy(t => t.Name);

            // create dictionary to group by first letter of name
            Dictionary<char, List<TagSummary>> tagAlphabit = new Dictionary<char, List<TagSummary>>();

            // load alphabit into dictionary
            for (char c = 'A'; c <= 'Z'; c++)
            {
                tagAlphabit.Add(c, new List<TagSummary>());
            }

            tagAlphabit.Add('#', new List<TagSummary>());
            tagAlphabit.Add( '*', new List<TagSummary>() );

            // load tags
            var tags = qry.ToList();

            foreach ( var tag in tags )
            {
                var tagSummary = new TagSummary { Id = tag.Id, Name = tag.Name, Count = tag.Count };
                char key = (char)tag.Name.Substring( 0, 1 ).ToUpper()[0];

                if ( Char.IsNumber( key ) )
                {
                    key = '#';
                }
                else
                {
                    if ( !Char.IsLetter( key ) )
                    {
                        key = '*';
                    }
                }

                tagAlphabit[key].Add(tagSummary);
            }

            // display tags
            StringBuilder tagOutput = new StringBuilder();
            StringBuilder letterOutput = new StringBuilder();

            letterOutput.Append("<ul class='list-inline tag-letterlist'>");
            tagOutput.Append("<ul class='list-unstyled taglist'>");
            foreach (var letterItem in tagAlphabit)
            {
                if (letterItem.Value.Count > 0)
                {
                    letterOutput.Append(String.Format("<li><a href='#{0}'>{0}</a></li>", letterItem.Key.ToString()));

                    // add tags to display
                    tagOutput.Append(String.Format("<li class='clearfix'><h3><a name='{0}'></a>{1}</h3><ul class='list-inline'>", letterItem.Key.ToString(), letterItem.Key.ToString()));

                    foreach (TagSummary tag in letterItem.Value)
                    {
                        Dictionary<string, string> queryString = new Dictionary<string, string>();
                        queryString.Add("tagId", tag.Id.ToString());
                        var detailPageUrl = LinkedPageUrl("DetailPage", queryString);

                        tagOutput.Append(string.Format("<a href='{0}'><span class='tag'>{1} <small>({2})</small></span></a>", detailPageUrl, tag.Name, tag.Count));
                    }

                    tagOutput.Append("</ul></li>");
                }
                else
                {
                    letterOutput.Append(String.Format("<li>{0}</li>", letterItem.Key.ToString()));
                }

            }

            tagOutput.Append("</ul>");
            letterOutput.Append("</ul>");

            // if no tags add message instead
            if ( tags.Count() == 0 )
            {
                tagOutput.Clear();
                tagOutput.Append("<div class='alert alert-info'><h4>Note</h4>No personal tags exist.</div>");
            }

            lTagList.Text = tagOutput.ToString();
            lLetters.Text = letterOutput.ToString();
        }
示例#2
0
        private void DisplayTags(int?ownerId, int entityId)
        {
            // get tags
            var qry = new TagService(new RockContext())
                      .Queryable()
                      .Where(t =>
                             t.EntityTypeId == entityId &&
                             (
                                 (t.OwnerPersonAlias == null && !ownerId.HasValue) ||
                                 (t.OwnerPersonAlias != null && ownerId.HasValue && t.OwnerPersonAlias.PersonId == ownerId.Value)
                             ))
                      .Select(t => new
            {
                Id    = t.Id,
                Name  = t.Name,
                Count = t.TaggedItems.Count()
            })
                      .OrderBy(t => t.Name);

            // create dictionary to group by first letter of name
            Dictionary <char, List <TagSummary> > tagAlphabit = new Dictionary <char, List <TagSummary> >();

            // load alphabit into dictionary
            for (char c = 'A'; c <= 'Z'; c++)
            {
                tagAlphabit.Add(c, new List <TagSummary>());
            }

            tagAlphabit.Add('#', new List <TagSummary>());
            tagAlphabit.Add('*', new List <TagSummary>());

            // load tags
            var tags = qry.ToList();

            foreach (var tag in tags)
            {
                var tagSummary = new TagSummary {
                    Id = tag.Id, Name = tag.Name, Count = tag.Count
                };
                char key = (char)tag.Name.Substring(0, 1).ToUpper()[0];

                if (Char.IsNumber(key))
                {
                    key = '#';
                }
                else
                {
                    if (!Char.IsLetter(key))
                    {
                        key = '*';
                    }
                }

                tagAlphabit[key].Add(tagSummary);
            }

            // display tags
            StringBuilder tagOutput    = new StringBuilder();
            StringBuilder letterOutput = new StringBuilder();

            letterOutput.Append("<ul class='list-inline tag-letterlist'>");
            tagOutput.Append("<ul class='list-unstyled taglist'>");
            foreach (var letterItem in tagAlphabit)
            {
                if (letterItem.Value.Count > 0)
                {
                    letterOutput.Append(String.Format("<li><a href='#{0}'>{0}</a></li>", letterItem.Key.ToString()));

                    // add tags to display
                    tagOutput.Append(String.Format("<li class='clearfix'><h3><a name='{0}'></a>{1}</h3><ul class='list-inline'>", letterItem.Key.ToString(), letterItem.Key.ToString()));

                    foreach (TagSummary tag in letterItem.Value)
                    {
                        Dictionary <string, string> queryString = new Dictionary <string, string>();
                        queryString.Add("tagId", tag.Id.ToString());
                        var detailPageUrl = LinkedPageUrl("DetailPage", queryString);

                        tagOutput.Append(string.Format("<a href='{0}'><span class='tag'>{1} <small>({2})</small></span></a>", detailPageUrl, tag.Name, tag.Count));
                    }

                    tagOutput.Append("</ul></li>");
                }
                else
                {
                    letterOutput.Append(String.Format("<li>{0}</li>", letterItem.Key.ToString()));
                }
            }

            tagOutput.Append("</ul>");
            letterOutput.Append("</ul>");

            // if no tags add message instead
            if (tags.Count() == 0)
            {
                tagOutput.Clear();
                tagOutput.Append("<div class='alert alert-info'><h4>Note</h4>No personal tags exist.</div>");
            }

            lTagList.Text = tagOutput.ToString();
            lLetters.Text = letterOutput.ToString();
        }
示例#3
0
        private void DisplayTags()
        {
            int?ownerId = null;

            if (TagCloudTab == "organization")
            {
                publicTagsCss   = "active";
                personalTagsCss = "";
            }
            else
            {
                ownerId         = CurrentPersonId ?? 0;
                publicTagsCss   = "";
                personalTagsCss = "active";
            }

            // get tags
            var tagQry = new TagService(new RockContext()).Queryable();

            int?entityId = _showEntityType ? ddlEntityType.SelectedValueAsId() : EntityTypeId;

            if (entityId.HasValue && entityId.Value != 0)
            {
                tagQry = tagQry.Where(t => t.EntityTypeId.HasValue && t.EntityTypeId.Value == entityId.Value);
            }

            if (!tglStatus.Checked)
            {
                tagQry = tagQry.Where(t => t.IsActive);
            }

            if (ownerId.HasValue)
            {
                tagQry = tagQry.Where(t => t.OwnerPersonAlias != null && t.OwnerPersonAlias.PersonId == ownerId.Value);
            }

            var qry = tagQry.Select(t => new
            {
                Tag   = t,
                Count = t.TaggedItems.Count()
            })
                      .OrderBy(t => t.Tag.Name);

            // create dictionary to group by first letter of name
            Dictionary <char, List <TagSummary> > tagAlphabit = new Dictionary <char, List <TagSummary> >();

            // load alphabit into dictionary
            for (char c = 'A'; c <= 'Z'; c++)
            {
                tagAlphabit.Add(c, new List <TagSummary>());
            }

            tagAlphabit.Add('#', new List <TagSummary>());
            tagAlphabit.Add('*', new List <TagSummary>());

            // load tags
            var tags = qry.ToList();

            foreach (var tagInfo in tags)
            {
                bool canView =
                    (tagInfo.Tag.OwnerPersonAlias != null && ownerId.HasValue && tagInfo.Tag.OwnerPersonAlias.PersonId == ownerId.Value) ||
                    (tagInfo.Tag.OwnerPersonAlias == null && tagInfo.Tag.IsAuthorized(Rock.Security.Authorization.VIEW, CurrentPerson));

                if (canView)
                {
                    var tagSummary = new TagSummary {
                        Id = tagInfo.Tag.Id, Name = tagInfo.Tag.Name, Count = tagInfo.Count
                    };
                    char key = (char)tagSummary.Name.Substring(0, 1).ToUpper()[0];

                    if (Char.IsNumber(key))
                    {
                        key = '#';
                    }
                    else
                    {
                        if (!Char.IsLetter(key))
                        {
                            key = '*';
                        }
                    }

                    tagAlphabit[key].Add(tagSummary);
                }
            }

            // display tags
            StringBuilder tagOutput    = new StringBuilder();
            StringBuilder letterOutput = new StringBuilder();

            letterOutput.Append("<ul class='list-inline tag-letterlist'>");
            tagOutput.Append("<ul class='list-unstyled taglist'>");
            foreach (var letterItem in tagAlphabit)
            {
                if (letterItem.Value.Count > 0)
                {
                    letterOutput.Append(String.Format("<li><a href='#{0}'>{0}</a></li>", letterItem.Key.ToString()));

                    // add tags to display
                    tagOutput.Append(String.Format("<li class='clearfix'><h3><a name='{0}'></a>{1}</h3><ul class='list-inline'>", letterItem.Key.ToString(), letterItem.Key.ToString()));

                    foreach (TagSummary tag in letterItem.Value)
                    {
                        Dictionary <string, string> queryString = new Dictionary <string, string>();
                        queryString.Add("tagId", tag.Id.ToString());
                        var detailPageUrl = LinkedPageUrl("DetailPage", queryString);

                        tagOutput.Append(string.Format("<a href='{0}'><span class='tag'>{1} <small>({2})</small></span></a>", detailPageUrl, tag.Name, tag.Count));
                    }

                    tagOutput.Append("</ul></li>");
                }
                else
                {
                    letterOutput.Append(String.Format("<li>{0}</li>", letterItem.Key.ToString()));
                }
            }

            tagOutput.Append("</ul>");
            letterOutput.Append("</ul>");

            // if no tags add message instead
            if (tags.Count() == 0)
            {
                tagOutput.Clear();
                tagOutput.Append(string.Format("<div class='alert alert-info'><h4>Note</h4>No {0} tags exist.</div>", TagCloudTab));
            }

            lTagList.Text = tagOutput.ToString();
            lLetters.Text = letterOutput.ToString();
        }