//we have two pagers: //The first one can have custom routes //The second one just adds query string parameter public static IHtmlContent Pager <TModel>(this IHtmlHelper <TModel> html, PagerModel model) { if (model.TotalRecords == 0) { return(null); } var localizationService = EngineContext.Current.Resolve <ILocalizationService>(); var links = new StringBuilder(); if (model.ShowTotalSummary && (model.TotalPages > 0)) { links.Append("<li class=\"total-summary page-item\">"); links.Append(string.Format(model.CurrentPageText, model.PageIndex + 1, model.TotalPages, model.TotalRecords)); links.Append("</li>"); } if (model.ShowPagerItems && (model.TotalPages > 1)) { if (model.ShowFirst) { //first page if ((model.PageIndex >= 3) && (model.TotalPages > model.IndividualPagesDisplayedCount)) { model.RouteValues.pageNumber = 1; links.Append("<li class=\"first-page page-item\">"); if (model.UseRouteLinks) { links.Append(html.RouteLink(model.FirstButtonText, model.RouteActionName, model.RouteValues, new { title = localizationService.GetResource("Pager.FirstPageTitle"), @class = "page-link" }).ToHtmlString()); } else { links.Append(html.ActionLink(model.FirstButtonText, model.RouteActionName, model.RouteValues, new { title = localizationService.GetResource("Pager.FirstPageTitle"), @class = "page-link" }).ToHtmlString()); } links.Append("</li>"); } } if (model.ShowPrevious) { //previous page if (model.PageIndex > 0) { model.RouteValues.pageNumber = (model.PageIndex); links.Append("<li class=\"previous-page page-item\">"); if (model.UseRouteLinks) { links.Append(html.RouteLink(model.PreviousButtonText, model.RouteActionName, model.RouteValues, new { title = localizationService.GetResource("Pager.PreviousPageTitle"), @class = "page-link" }).ToHtmlString()); } else { links.Append(html.ActionLink(model.PreviousButtonText, model.RouteActionName, model.RouteValues, new { title = localizationService.GetResource("Pager.PreviousPageTitle"), @class = "page-link" }).ToHtmlString()); } links.Append("</li>"); } } if (model.ShowIndividualPages) { //individual pages int firstIndividualPageIndex = model.GetFirstIndividualPageIndex(); int lastIndividualPageIndex = model.GetLastIndividualPageIndex(); for (int i = firstIndividualPageIndex; i <= lastIndividualPageIndex; i++) { if (model.PageIndex == i) { links.AppendFormat("<li class=\"current-page page-item\"><a class=\"page-link\">{0}</a></li>", (i + 1)); } else { model.RouteValues.pageNumber = (i + 1); links.Append("<li class=\"individual-page page-item\">"); if (model.UseRouteLinks) { links.Append(html.RouteLink((i + 1).ToString(), model.RouteActionName, model.RouteValues, new { title = String.Format(localizationService.GetResource("Pager.PageLinkTitle"), (i + 1)), @class = "page-link" }).ToHtmlString()); } else { links.Append(html.ActionLink((i + 1).ToString(), model.RouteActionName, model.RouteValues, new { title = String.Format(localizationService.GetResource("Pager.PageLinkTitle"), (i + 1)), @class = "page-link" }).ToHtmlString()); } links.Append("</li>"); } } } if (model.ShowNext) { //next page if ((model.PageIndex + 1) < model.TotalPages) { model.RouteValues.pageNumber = (model.PageIndex + 2); links.Append("<li class=\"next-page page-item\">"); if (model.UseRouteLinks) { links.Append(html.RouteLink(model.NextButtonText, model.RouteActionName, model.RouteValues, new { title = localizationService.GetResource("Pager.NextPageTitle"), @class = "page-link" }).ToHtmlString()); } else { links.Append(html.ActionLink(model.NextButtonText, model.RouteActionName, model.RouteValues, new { title = localizationService.GetResource("Pager.NextPageTitle"), @class = "page-link" }).ToHtmlString()); } links.Append("</li>"); } } if (model.ShowLast) { //last page if (((model.PageIndex + 3) < model.TotalPages) && (model.TotalPages > model.IndividualPagesDisplayedCount)) { model.RouteValues.pageNumber = model.TotalPages; links.Append("<li class=\"last-page page-item\">"); if (model.UseRouteLinks) { links.Append(html.RouteLink(model.LastButtonText, model.RouteActionName, model.RouteValues, new { title = localizationService.GetResource("Pager.LastPageTitle"), @class = "page-link" }).ToHtmlString()); } else { links.Append(html.ActionLink(model.LastButtonText, model.RouteActionName, model.RouteValues, new { title = localizationService.GetResource("Pager.LastPageTitle"), @class = "page-link" }).ToHtmlString()); } links.Append("</li>"); } } } var result = links.ToString(); if (!String.IsNullOrEmpty(result)) { result = "<ul class=\"pagination\">" + result + "</ul>"; } return(new HtmlString(result)); }
//we have two pagers: //The first one can have custom routes //The second one just adds query string parameter public static MvcHtmlString Pager <TModel>(this HtmlHelper <TModel> html, PagerModel model) { if (model.TotalRecords == 0) { return(null); } var localizationService = EngineContext.Current.Resolve <ILocalizationService>(); var links = new StringBuilder(); if (model.ShowTotalSummary && (model.TotalPages > 0)) { links.Append("<li>"); links.Append(string.Format(model.CurrentPageText, model.PageIndex + 1, model.TotalPages, model.TotalRecords)); links.Append("</li>"); } if (model.ShowPagerItems && (model.TotalPages > 1)) { if (model.ShowFirst) { if ((model.PageIndex >= 3) && (model.TotalPages > model.IndividualPagesDisplayedCount)) { //if (model.ShowIndividualPages) //{ // links.Append(" "); //} model.RouteValues.page = 1; links.Append("<li>"); if (model.UseRouteLinks) { links.Append(html.RouteLink(model.FirstButtonText, model.RouteActionName, (object)model.RouteValues, new { title = localizationService.GetResource("Pager.FirstPageTitle") })); } else { links.Append(html.ActionLink(model.FirstButtonText, model.RouteActionName, (object)model.RouteValues, new { title = localizationService.GetResource("Pager.FirstPageTitle") })); } links.Append("</li>"); //if ((model.ShowIndividualPages || (model.ShowPrevious && (model.PageIndex > 0))) || model.ShowLast) //{ // links.Append(" ... "); //} } } if (model.ShowPrevious) { if (model.PageIndex > 0) { model.RouteValues.page = (model.PageIndex); links.Append("<li>"); if (model.UseRouteLinks) { links.Append(html.RouteLink(model.PreviousButtonText, model.RouteActionName, (object)model.RouteValues, new { title = localizationService.GetResource("Pager.PreviousPageTitle") })); } else { links.Append(html.ActionLink(model.PreviousButtonText, model.RouteActionName, (object)model.RouteValues, new { title = localizationService.GetResource("Pager.PreviousPageTitle") })); } links.Append("</li>"); //if ((model.ShowIndividualPages || model.ShowLast) || (model.ShowNext && ((model.PageIndex + 1) < model.TotalPages))) //{ // links.Append(" "); //} } } if (model.ShowIndividualPages) { int firstIndividualPageIndex = model.GetFirstIndividualPageIndex(); int lastIndividualPageIndex = model.GetLastIndividualPageIndex(); for (int i = firstIndividualPageIndex; i <= lastIndividualPageIndex; i++) { if (model.PageIndex == i) { links.AppendFormat("<li><span>{0}</span></li>", (i + 1).ToString()); } else { model.RouteValues.page = (i + 1); links.Append("<li>"); if (model.UseRouteLinks) { links.Append(html.RouteLink((i + 1).ToString(), model.RouteActionName, (object)model.RouteValues, new { title = String.Format(localizationService.GetResource("Pager.PageLinkTitle").ToString(), (i + 1).ToString()) })); } else { links.Append(html.ActionLink((i + 1).ToString(), model.RouteActionName, (object)model.RouteValues, new { title = String.Format(localizationService.GetResource("Pager.PageLinkTitle").ToString(), (i + 1).ToString()) })); } links.Append("</li>"); } //if (i < lastIndividualPageIndex) //{ // links.Append(" "); //} } } if (model.ShowNext) { if ((model.PageIndex + 1) < model.TotalPages) { //if (model.ShowIndividualPages) //{ // links.Append(" "); //} model.RouteValues.page = (model.PageIndex + 2); links.Append("<li>"); if (model.UseRouteLinks) { links.Append(html.RouteLink(model.NextButtonText, model.RouteActionName, (object)model.RouteValues, new { title = localizationService.GetResource("Pager.NextPageTitle") })); } else { links.Append(html.ActionLink(model.NextButtonText, model.RouteActionName, (object)model.RouteValues, new { title = localizationService.GetResource("Pager.NextPageTitle") })); } links.Append("</li>"); } } if (model.ShowLast) { if (((model.PageIndex + 3) < model.TotalPages) && (model.TotalPages > model.IndividualPagesDisplayedCount)) { //if (model.ShowIndividualPages || (model.ShowNext && ((model.PageIndex + 1) < model.TotalPages))) //{ // links.Append(" ... "); //} model.RouteValues.page = model.TotalPages; links.Append("<li>"); if (model.UseRouteLinks) { links.Append(html.RouteLink(model.LastButtonText, model.RouteActionName, (object)model.RouteValues, new { title = localizationService.GetResource("Pager.LastPageTitle") })); } else { links.Append(html.ActionLink(model.LastButtonText, model.RouteActionName, (object)model.RouteValues, new { title = localizationService.GetResource("Pager.LastPageTitle") })); } links.Append("</li>"); } } } var result = links.ToString(); if (!String.IsNullOrEmpty(result)) { result = "<ul>" + result + "</ul>"; } return(MvcHtmlString.Create(result)); }
//public static MvcHtmlString BBCodeEditor<TModel>(this HtmlHelper<TModel> html, string name) //{ // var sb = new StringBuilder(128); // sb.Append("<script type=\"text/javascript\">"); // sb.AppendFormat("edToolbar('{0}','/Plugins/Messaging.Forums/Scripts/BBEditor/');", name); // sb.Append("</script>"); // return MvcHtmlString.Create(sb.ToString()); //} public static MvcHtmlString Pager <TModel>(this HtmlHelper <TModel> html, PagerModel model) { if (model.TotalRecords == 0) { return(null); } var localizer = LocalizationUtilities.Resolve(); var links = new StringBuilder(); if (model.ShowTotalSummary && (model.TotalPages > 0)) { links.Append("<li class=\"total-summary\">"); links.Append(string.Format(model.CurrentPageText, model.PageIndex + 1, model.TotalPages, model.TotalRecords)); links.Append("</li>"); } if (model.ShowPagerItems && (model.TotalPages > 1)) { if (model.ShowFirst) { //first page if ((model.PageIndex >= 3) && (model.TotalPages > model.IndividualPagesDisplayedCount)) { model.RouteValues.page = 1; links.Append("<li class=\"first-page\">"); //if (model.UseRouteLinks) //{ // links.Append(html.RouteLink(model.FirstButtonText, model.RouteActionName, model.RouteValues, new { title = localizer(LocalizableStrings.Pager.FirstPageTitle) })); //} //else //{ links.Append(html.ActionLink(model.FirstButtonText, model.RouteActionName, model.RouteValues, new { title = localizer(LocalizableStrings.Pager.FirstPageTitle) })); //} links.Append("</li>"); } } if (model.ShowPrevious) { //previous page if (model.PageIndex > 0) { model.RouteValues.page = (model.PageIndex); links.Append("<li class=\"previous-page\">"); //if (model.UseRouteLinks) //{ // links.Append(html.RouteLink(model.PreviousButtonText, model.RouteActionName, model.RouteValues, new { title = localizer(LocalizableStrings.Pager.PreviousPageTitle) })); //} //else //{ links.Append(html.ActionLink(model.PreviousButtonText, model.RouteActionName, model.RouteValues, new { title = localizer(LocalizableStrings.Pager.PreviousPageTitle) })); //} links.Append("</li>"); } } if (model.ShowIndividualPages) { //individual pages int firstIndividualPageIndex = model.GetFirstIndividualPageIndex(); int lastIndividualPageIndex = model.GetLastIndividualPageIndex(); for (int i = firstIndividualPageIndex; i <= lastIndividualPageIndex; i++) { if (model.PageIndex == i) { links.AppendFormat("<li class=\"current-page\"><span>{0}</span></li>", (i + 1)); } else { model.RouteValues.page = (i + 1); links.Append("<li class=\"individual-page\">"); //if (model.UseRouteLinks) //{ // links.Append(html.RouteLink((i + 1).ToString(), model.RouteActionName, model.RouteValues, new { title = string.Format(localizer(LocalizableStrings.Pager.PageLinkTitle), (i + 1)) })); //} //else //{ links.Append(html.ActionLink((i + 1).ToString(), model.RouteActionName, model.RouteValues, new { title = string.Format(localizer(LocalizableStrings.Pager.PageLinkTitle), (i + 1)) })); //} links.Append("</li>"); } } } if (model.ShowNext) { //next page if ((model.PageIndex + 1) < model.TotalPages) { model.RouteValues.page = (model.PageIndex + 2); links.Append("<li class=\"next-page\">"); //if (model.UseRouteLinks) //{ // links.Append(html.RouteLink(model.NextButtonText, model.RouteActionName, model.RouteValues, new { title = localizer(LocalizableStrings.Pager.NextPageTitle) })); //} //else //{ links.Append(html.ActionLink(model.NextButtonText, model.RouteActionName, model.RouteValues, new { title = localizer(LocalizableStrings.Pager.NextPageTitle) })); //} links.Append("</li>"); } } if (model.ShowLast) { //last page if (((model.PageIndex + 3) < model.TotalPages) && (model.TotalPages > model.IndividualPagesDisplayedCount)) { model.RouteValues.page = model.TotalPages; links.Append("<li class=\"last-page\">"); //if (model.UseRouteLinks) //{ // links.Append(html.RouteLink(model.LastButtonText, model.RouteActionName, model.RouteValues, new { title = localizer(LocalizableStrings.Pager.LastPageTitle) })); //} //else //{ links.Append(html.ActionLink(model.LastButtonText, model.RouteActionName, model.RouteValues, new { title = localizer(LocalizableStrings.Pager.LastPageTitle) })); //} links.Append("</li>"); } } } var result = links.ToString(); if (!string.IsNullOrEmpty(result)) { result = "<ul>" + result + "</ul>"; } return(MvcHtmlString.Create(result)); }
/// <summary> /// Prepare a common pager /// </summary> /// <typeparam name="TModel">Model type</typeparam> /// <param name="html">HTML helper</param> /// <param name="model">Pager model</param> /// <returns> /// A task that represents the asynchronous operation /// The task result contains the pager /// </returns> /// <remarks>We have two pagers: The first one can have custom routes. The second one just adds query string parameter</remarks> public static async Task <IHtmlContent> PagerAsync <TModel>(this IHtmlHelper <TModel> html, PagerModel model) { if (model.TotalRecords == 0) { return(new HtmlString(string.Empty)); } var localizationService = EngineContext.Current.Resolve <ILocalizationService>(); var links = new StringBuilder(); if (model.ShowTotalSummary && (model.TotalPages > 0)) { links.Append("<li class=\"total-summary\">"); links.Append(string.Format(await model.GetCurrentPageTextAsync(), model.PageIndex + 1, model.TotalPages, model.TotalRecords)); links.Append("</li>"); } if (model.ShowPagerItems && (model.TotalPages > 1)) { if (model.ShowFirst) { //first page if ((model.PageIndex >= 3) && (model.TotalPages > model.IndividualPagesDisplayedCount)) { model.RouteValues.pageNumber = 1; links.Append("<li class=\"first-page\">"); if (model.UseRouteLinks) { var link = html.RouteLink(await model.GetFirstButtonTextAsync(), model.RouteActionName, model.RouteValues, new { title = await localizationService.GetResourceAsync("Pager.FirstPageTitle") }); links.Append(await link.RenderHtmlContentAsync()); } else { var link = html.ActionLink(await model.GetFirstButtonTextAsync(), model.RouteActionName, model.RouteValues, new { title = await localizationService.GetResourceAsync("Pager.FirstPageTitle") }); links.Append(await link.RenderHtmlContentAsync()); } links.Append("</li>"); } } if (model.ShowPrevious) { //previous page if (model.PageIndex > 0) { model.RouteValues.pageNumber = model.PageIndex; links.Append("<li class=\"previous-page\">"); if (model.UseRouteLinks) { var link = html.RouteLink(await model.GetPreviousButtonTextAsync(), model.RouteActionName, model.RouteValues, new { title = await localizationService.GetResourceAsync("Pager.PreviousPageTitle") }); links.Append(await link.RenderHtmlContentAsync()); } else { var link = html.ActionLink(await model.GetPreviousButtonTextAsync(), model.RouteActionName, model.RouteValues, new { title = await localizationService.GetResourceAsync("Pager.PreviousPageTitle") }); links.Append(await link.RenderHtmlContentAsync()); } links.Append("</li>"); } } if (model.ShowIndividualPages) { //individual pages var firstIndividualPageIndex = model.GetFirstIndividualPageIndex(); var lastIndividualPageIndex = model.GetLastIndividualPageIndex(); for (var i = firstIndividualPageIndex; i <= lastIndividualPageIndex; i++) { if (model.PageIndex == i) { links.AppendFormat("<li class=\"current-page\"><span>{0}</span></li>", i + 1); } else { model.RouteValues.pageNumber = i + 1; links.Append("<li class=\"individual-page\">"); if (model.UseRouteLinks) { var link = html.RouteLink((i + 1).ToString(), model.RouteActionName, model.RouteValues, new { title = string.Format(await localizationService.GetResourceAsync("Pager.PageLinkTitle"), i + 1) }); links.Append(await link.RenderHtmlContentAsync()); } else { var link = html.ActionLink((i + 1).ToString(), model.RouteActionName, model.RouteValues, new { title = string.Format(await localizationService.GetResourceAsync("Pager.PageLinkTitle"), i + 1) }); links.Append(await link.RenderHtmlContentAsync()); } links.Append("</li>"); } } } if (model.ShowNext) { //next page if ((model.PageIndex + 1) < model.TotalPages) { model.RouteValues.pageNumber = (model.PageIndex + 2); links.Append("<li class=\"next-page\">"); if (model.UseRouteLinks) { var link = html.RouteLink(await model.GetNextButtonTextAsync(), model.RouteActionName, model.RouteValues, new { title = await localizationService.GetResourceAsync("Pager.NextPageTitle") }); links.Append(await link.RenderHtmlContentAsync()); } else { var link = html.ActionLink(await model.GetNextButtonTextAsync(), model.RouteActionName, model.RouteValues, new { title = await localizationService.GetResourceAsync("Pager.NextPageTitle") }); links.Append(await link.RenderHtmlContentAsync()); } links.Append("</li>"); } } if (model.ShowLast) { //last page if (((model.PageIndex + 3) < model.TotalPages) && (model.TotalPages > model.IndividualPagesDisplayedCount)) { model.RouteValues.pageNumber = model.TotalPages; links.Append("<li class=\"last-page\">"); if (model.UseRouteLinks) { var link = html.RouteLink(await model.GetLastButtonTextAsync(), model.RouteActionName, model.RouteValues, new { title = await localizationService.GetResourceAsync("Pager.LastPageTitle") }); links.Append(await link.RenderHtmlContentAsync()); } else { var link = html.ActionLink(await model.GetLastButtonTextAsync(), model.RouteActionName, model.RouteValues, new { title = await localizationService.GetResourceAsync("Pager.LastPageTitle") }); links.Append(await link.RenderHtmlContentAsync()); } links.Append("</li>"); } } } var result = links.ToString(); if (!string.IsNullOrEmpty(result)) { result = "<ul>" + result + "</ul>"; } return(new HtmlString(result)); }
//we have two pagers: //The first one can have custom routes //The second one just adds query string parameter public static IHtmlContent Pager <TModel>(this IHtmlHelper <TModel> html, PagerModel model) { if (model.TotalRecords == 0) { return(new HtmlString("")); } StringBuilder links = new StringBuilder(); if (model.ShowTotalSummary && (model.TotalPages > 0)) { links.Append("<li class=\"total-summary\">"); links.Append(string.Format(model.CurrentPageText, model.PageIndex + 1, model.TotalPages, model.TotalRecords)); links.Append("</li>"); } if (model.ShowPagerItems && (model.TotalPages > 1)) { if (model.ShowFirst) { //first page if ((model.PageIndex >= 3) && (model.TotalPages > model.IndividualPagesDisplayedCount)) { model.RouteValues.pageNumber = 1; links.Append("<li class=\"first-page\">"); if (model.UseRouteLinks) { IHtmlContent link = html.RouteLink(model.FirstButtonText, model.RouteActionName, model.RouteValues, new { title = "ilk Sayfa" }); links.Append(link.ToHtmlString()); } else { IHtmlContent link = html.ActionLink(model.FirstButtonText, model.RouteActionName, model.RouteValues, new { title = "ilk Sayfa" }); links.Append(link.ToHtmlString()); } links.Append("</li>"); } } if (model.ShowPrevious) { //previous page if (model.PageIndex > 0) { model.RouteValues.pageNumber = (model.PageIndex); links.Append("<li class=\"previous-page\">"); if (model.UseRouteLinks) { IHtmlContent link = html.RouteLink(model.PreviousButtonText, model.RouteActionName, model.RouteValues, new { title = "Önceki Sayfa" }); links.Append(link.ToHtmlString()); } else { IHtmlContent link = html.ActionLink(model.PreviousButtonText, model.RouteActionName, model.RouteValues, new { title = "Önceki Sayfa" }); links.Append(link.ToHtmlString()); } links.Append("</li>"); } } if (model.ShowIndividualPages) { //individual pages int firstIndividualPageIndex = model.GetFirstIndividualPageIndex(); int lastIndividualPageIndex = model.GetLastIndividualPageIndex(); for (int i = firstIndividualPageIndex; i <= lastIndividualPageIndex; i++) { if (model.PageIndex == i) { links.AppendFormat("<li class=\"current-page\"><span>{0}</span></li>", (i + 1)); } else { model.RouteValues.pageNumber = (i + 1); links.Append("<li class=\"individual-page\">"); if (model.UseRouteLinks) { IHtmlContent link = html.RouteLink((i + 1).ToString(), model.RouteActionName, model.RouteValues, new { title = $"Sayfa {(i + 1)}" }); links.Append(link.ToHtmlString()); } else { IHtmlContent link = html.ActionLink((i + 1).ToString(), model.RouteActionName, model.RouteValues, new { title = string.Format("Sayfa{0}", (i + 1)) }); links.Append(link.ToHtmlString()); } links.Append("</li>"); } } } if (model.ShowNext) { //next page if ((model.PageIndex + 1) < model.TotalPages) { model.RouteValues.pageNumber = (model.PageIndex + 2); links.Append("<li class=\"next-page\">"); if (model.UseRouteLinks) { IHtmlContent link = html.RouteLink(model.NextButtonText, model.RouteActionName, model.RouteValues, new { title = "Sonraki Sayfa" }); links.Append(link.ToHtmlString()); } else { IHtmlContent link = html.ActionLink(model.NextButtonText, model.RouteActionName, model.RouteValues, new { title = "Sonraki Sayfa" }); links.Append(link.ToHtmlString()); } links.Append("</li>"); } } if (model.ShowLast) { //last page if (((model.PageIndex + 3) < model.TotalPages) && (model.TotalPages > model.IndividualPagesDisplayedCount)) { model.RouteValues.pageNumber = model.TotalPages; links.Append("<li class=\"last-page\">"); if (model.UseRouteLinks) { IHtmlContent link = html.RouteLink(model.LastButtonText, model.RouteActionName, model.RouteValues, new { title = "Son Sayfa" }); links.Append(link.ToHtmlString()); } else { IHtmlContent link = html.ActionLink(model.LastButtonText, model.RouteActionName, model.RouteValues, new { title = "Son Sayfa" }); links.Append(link.ToHtmlString()); } links.Append("</li>"); } } } string result = links.ToString(); if (!string.IsNullOrEmpty(result)) { result = "<ul>" + result + "</ul>"; } return(new HtmlString(result)); }