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;
}