App_Code.Controls.PostPager.PagerTag C# (CSharp) Method

PagerTag() private method

Gets the pager tag.
private PagerTag ( ) : string
return string
        private string PagerTag()
        {
            if (this.Posts == null) return "";

            var retValue = string.Empty;
            var link = string.Format("<li class=\"PagerLink\"><a href=\"{0}\">{{1}}</a></li>", PageUrl());
            const string LinkCurrent = "<li class=\"PagerLinkCurrent\">{0}</li>";
            var linkFirst = string.Format("<li class=\"PagerFirstLink\"><a href=\"{0}\">{{0}}</a></li>", PageUrl());
            const string LinkDisabled = "<li class=\"PagerLinkDisabled\">{0}</li>";

            var postsPerPage = BlogSettings.Instance.PostsPerPage;
            var currentPage = PageIndex();

            var visiblePosts = this.Posts.FindAll(p => p.IsVisible);
            var postCnt = visiblePosts.Count;

            var pagesTotal = postCnt % postsPerPage == 0 ? postCnt / postsPerPage : (postCnt / postsPerPage) + 1;

            if (pagesTotal == 0)
            {
                pagesTotal = 1;
            }

            if (postCnt > 0 && pagesTotal > 1)
            {
                retValue = "<ul id=\"PostPager\">";

                if (currentPage == 1)
                {
                    retValue += string.Format(LinkDisabled, labels.nextPosts);
                }
                else
                {
                    retValue += string.Format(link, currentPage - 1, labels.nextPosts);
                }

                var pages = PageList(pagesTotal, currentPage);
                foreach (var i in pages.Select(page => int.Parse(page.ToString())))
                {
                    if (i == 0)
                    {
                        retValue += "<li class=\"PagerEllipses\">...</li>";
                    }
                    else
                    {
                        if (i == currentPage)
                        {
                            retValue += string.Format(LinkCurrent, i);
                        }
                        else
                        {
                            if (i == 1)
                            {
                                retValue += string.Format(linkFirst, i);
                            }
                            else
                            {
                                retValue += string.Format(link, i, i);
                            }
                        }
                    }
                }

                if (currentPage == pagesTotal)
                {
                    retValue += string.Format(LinkDisabled, labels.previousPosts);
                }
                else
                {
                    retValue += string.Format(link, currentPage + 1, labels.previousPosts);
                }

                retValue += "</ul>";
            }

            return retValue;
        }