mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Adding pagination to the tag search page.
work item: 16924 --HG-- branch : dev
This commit is contained in:
@@ -7,6 +7,7 @@ using Orchard.Logging;
|
|||||||
using Orchard.Tags.Services;
|
using Orchard.Tags.Services;
|
||||||
using Orchard.Tags.ViewModels;
|
using Orchard.Tags.ViewModels;
|
||||||
using Orchard.Themes;
|
using Orchard.Themes;
|
||||||
|
using Orchard.UI.Navigation;
|
||||||
|
|
||||||
namespace Orchard.Tags.Controllers {
|
namespace Orchard.Tags.Controllers {
|
||||||
[ValidateInput(false), Themed]
|
[ValidateInput(false), Themed]
|
||||||
@@ -34,21 +35,24 @@ namespace Orchard.Tags.Controllers {
|
|||||||
return View(model);
|
return View(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult Search(string tagName) {
|
public ActionResult Search(string tagName, Pager pager) {
|
||||||
var tag = _tagService.GetTagByName(tagName);
|
var tag = _tagService.GetTagByName(tagName);
|
||||||
|
|
||||||
if (tag == null) {
|
if (tag == null) {
|
||||||
return RedirectToAction("Index");
|
return RedirectToAction("Index");
|
||||||
}
|
}
|
||||||
|
|
||||||
var list = _shapeFactory.List();
|
var taggedItems = _tagService.GetTaggedContentItems(tag.Id, pager.GetStartIndex(), pager.PageSize)
|
||||||
foreach (var taggedContentItem in _tagService.GetTaggedContentItems(tag.Id)) {
|
.Select(item => _contentManager.BuildDisplay(item, "Summary"));
|
||||||
list.Add(_contentManager.BuildDisplay(taggedContentItem, "Summary"));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
var list = _shapeFactory.List();
|
||||||
|
list.AddRange(taggedItems);
|
||||||
|
|
||||||
|
var totalItemCount = _tagService.GetTaggedContentItemCount(tag.Id);
|
||||||
var viewModel = new TagsSearchViewModel {
|
var viewModel = new TagsSearchViewModel {
|
||||||
TagName = tag.TagName,
|
TagName = tag.TagName,
|
||||||
List = list
|
List = list,
|
||||||
|
Pager = _shapeFactory.Pager(pager).TotalItemCount(totalItemCount)
|
||||||
};
|
};
|
||||||
|
|
||||||
return View(viewModel);
|
return View(viewModel);
|
||||||
|
@@ -9,6 +9,10 @@ namespace Orchard.Tags.Services {
|
|||||||
TagRecord GetTagByName(string tagName);
|
TagRecord GetTagByName(string tagName);
|
||||||
IEnumerable<IContent> GetTaggedContentItems(int tagId);
|
IEnumerable<IContent> GetTaggedContentItems(int tagId);
|
||||||
IEnumerable<IContent> GetTaggedContentItems(int tagId, VersionOptions options);
|
IEnumerable<IContent> GetTaggedContentItems(int tagId, VersionOptions options);
|
||||||
|
IEnumerable<IContent> GetTaggedContentItems(int tagId, int skip, int count);
|
||||||
|
IEnumerable<IContent> GetTaggedContentItems(int tagId, int skip, int count, VersionOptions versionOptions);
|
||||||
|
int GetTaggedContentItemCount(int tagId);
|
||||||
|
int GetTaggedContentItemCount(int tagId, VersionOptions versionOptions);
|
||||||
|
|
||||||
TagRecord CreateTag(string tagName);
|
TagRecord CreateTag(string tagName);
|
||||||
|
|
||||||
|
@@ -119,6 +119,27 @@ namespace Orchard.Tags.Services {
|
|||||||
.Where(c => c != null);
|
.Where(c => c != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IEnumerable<IContent> GetTaggedContentItems(int tagId, int skip, int take) {
|
||||||
|
return GetTaggedContentItems(tagId, skip, take, VersionOptions.Published);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerable<IContent> GetTaggedContentItems(int tagId, int skip, int take, VersionOptions options) {
|
||||||
|
return _contentTagRepository
|
||||||
|
.Fetch(x => x.TagRecord.Id == tagId)
|
||||||
|
.Skip(skip)
|
||||||
|
.Take(take)
|
||||||
|
.Select(t => _orchardServices.ContentManager.Get(t.TagsPartRecord.Id, options))
|
||||||
|
.Where(c => c != null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetTaggedContentItemCount(int tagId) {
|
||||||
|
return GetTaggedContentItemCount(tagId, VersionOptions.Published);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetTaggedContentItemCount(int tagId, VersionOptions options) {
|
||||||
|
return GetTaggedContentItems(tagId, options).Count();
|
||||||
|
}
|
||||||
|
|
||||||
private void TagContentItem(TagsPartRecord tagsPartRecord, string tagName) {
|
private void TagContentItem(TagsPartRecord tagsPartRecord, string tagName) {
|
||||||
var tagRecord = GetTagByName(tagName);
|
var tagRecord = GetTagByName(tagName);
|
||||||
var tagsContentItems = new ContentTagRecord { TagsPartRecord = tagsPartRecord, TagRecord = tagRecord };
|
var tagsContentItems = new ContentTagRecord { TagsPartRecord = tagsPartRecord, TagRecord = tagRecord };
|
||||||
|
@@ -2,5 +2,6 @@
|
|||||||
public class TagsSearchViewModel {
|
public class TagsSearchViewModel {
|
||||||
public string TagName { get; set; }
|
public string TagName { get; set; }
|
||||||
public dynamic List { get; set; }
|
public dynamic List { get; set; }
|
||||||
|
public dynamic Pager { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,11 +1,10 @@
|
|||||||
@model Orchard.Tags.ViewModels.TagsSearchViewModel
|
@model Orchard.Tags.ViewModels.TagsSearchViewModel
|
||||||
|
|
||||||
@{
|
@{
|
||||||
Html.AddTitleParts(T("Tags").ToString());
|
Html.AddTitleParts(T("Tags").ToString());
|
||||||
Html.AddTitleParts(T("Contents tagged with {0}", Model.TagName).ToString());
|
Html.AddTitleParts(T("Contents tagged with {0}", Model.TagName).ToString());
|
||||||
Model.List.Classes.Add("tagged-posts");
|
Model.List.Classes.Add("tagged-posts");
|
||||||
Model.List.Classes.Add("content-items");
|
Model.List.Classes.Add("content-items");
|
||||||
}
|
}
|
||||||
|
|
||||||
<h1 class="page-title">@T("Contents tagged with <span>{0}</span>", Model.TagName)</h1>
|
<h1 class="page-title">@T("Contents tagged with <span>{0}</span>", Model.TagName)</h1>
|
||||||
@Display(Model.List)
|
@Display(Model.List)
|
||||||
|
@Display(Model.Pager)
|
Reference in New Issue
Block a user