Browse Source

自动翻页

懒得勤快 4 năm trước cách đây
mục cha
commit
4114145294

+ 0 - 1
src/Masuit.MyBlogs.Core/Controllers/BaseController.cs

@@ -334,6 +334,5 @@ namespace Masuit.MyBlogs.Core.Controllers
             });
             throw new NotFoundException("文章未找到");
         }
-
     }
 }

+ 36 - 0
src/Masuit.MyBlogs.Core/Controllers/HomeController.cs

@@ -89,6 +89,15 @@ namespace Masuit.MyBlogs.Core.Controllers
             }
 
             CheckPermission(posts.Data);
+            while (posts.CurrentCount < 5 && posts.HasNext)
+            {
+                page++;
+                var tempPage = await postsQuery.Where(p => !p.IsFixedTop).OrderBy((orderBy ?? OrderBy.ModifyDate).GetDisplay() + " desc").ToCachedPagedListAsync<Post, PostDto>(page, size, MapperConfig);
+                CheckPermission(tempPage.Data);
+                posts.Data.AddRange(tempPage.Data);
+                posts.CurrentPage++;
+            }
+
             viewModel.Posts = posts;
             viewModel.PageParams = new Pagination(page, size, posts.TotalCount, orderBy);
             viewModel.SidebarAds = AdsService.GetsByWeightedPrice(2, AdvertiseType.SideBar, Request.Location());
@@ -110,6 +119,15 @@ namespace Masuit.MyBlogs.Core.Controllers
             Expression<Func<Post, bool>> where = p => p.Status == Status.Published;
             var posts = await PostService.GetQuery(tag.Split(",").Aggregate(where, (current, s) => current.And(p => Regex.IsMatch(p.Label, s)))).OrderBy($"{nameof(PostDto.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedListAsync<Post, PostDto>(page, size, MapperConfig);
             CheckPermission(posts.Data);
+            while (posts.CurrentCount < 5 && posts.HasNext)
+            {
+                page++;
+                var tempPage = await PostService.GetQuery(tag.Split(",").Aggregate(where, (current, s) => current.And(p => Regex.IsMatch(p.Label, s)))).OrderBy($"{nameof(PostDto.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedListAsync<Post, PostDto>(page, size, MapperConfig);
+                CheckPermission(tempPage.Data);
+                posts.Data.AddRange(tempPage.Data);
+                posts.CurrentPage++;
+            }
+
             var viewModel = await GetIndexPageViewModel();
             ViewBag.Tag = tag;
             viewModel.Posts = posts;
@@ -134,6 +152,15 @@ namespace Masuit.MyBlogs.Core.Controllers
             where = where.And(p => p.Status == Status.Published);
             var posts = await PostService.GetQuery(where).OrderBy($"{nameof(PostDto.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedListAsync<Post, PostDto>(page, size, MapperConfig);
             CheckPermission(posts.Data);
+            while (posts.CurrentCount < 5 && posts.HasNext)
+            {
+                page++;
+                var tempPage = await PostService.GetQuery(where).OrderBy($"{nameof(PostDto.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedListAsync<Post, PostDto>(page, size, MapperConfig);
+                CheckPermission(tempPage.Data);
+                posts.Data.AddRange(tempPage.Data);
+                posts.CurrentPage++;
+            }
+
             var viewModel = await GetIndexPageViewModel();
             ViewBag.Author = author;
             ViewBag.Total = posts.TotalCount;
@@ -158,6 +185,15 @@ namespace Masuit.MyBlogs.Core.Controllers
             var cat = await CategoryService.GetByIdAsync(id) ?? throw new NotFoundException("文章分类未找到");
             var posts = await PostService.GetQuery(p => p.CategoryId == cat.Id && p.Status == Status.Published).OrderBy($"{nameof(PostDto.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedListAsync<Post, PostDto>(page, size, MapperConfig);
             CheckPermission(posts.Data);
+            while (posts.CurrentCount < 5 && posts.HasNext)
+            {
+                page++;
+                var tempPage = await PostService.GetQuery(p => p.CategoryId == cat.Id && p.Status == Status.Published).OrderBy($"{nameof(PostDto.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedListAsync<Post, PostDto>(page, size, MapperConfig);
+                CheckPermission(tempPage.Data);
+                posts.Data.AddRange(tempPage.Data);
+                posts.CurrentPage++;
+            }
+
             var viewModel = await GetIndexPageViewModel();
             viewModel.Posts = posts;
             ViewBag.Category = cat;

+ 10 - 2
src/Masuit.MyBlogs.Core/Controllers/SeminarController.cs

@@ -8,7 +8,6 @@ using Masuit.MyBlogs.Core.Models.Entity;
 using Masuit.MyBlogs.Core.Models.Enum;
 using Masuit.Tools.Systems;
 using Microsoft.AspNetCore.Mvc;
-using System;
 using System.ComponentModel.DataAnnotations;
 using System.Linq;
 using System.Linq.Dynamic.Core;
@@ -45,13 +44,22 @@ namespace Masuit.MyBlogs.Core.Controllers
         {
             var s = await SeminarService.GetByIdAsync(id) ?? throw new NotFoundException("专题未找到");
             var posts = await PostService.GetQuery(p => p.Seminar.Any(x => x.Id == id) && p.Status == Status.Published).OrderBy($"{nameof(Post.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedListAsync<Post, PostDto>(page, size, MapperConfig);
+            CheckPermission(posts.Data);
+            while (posts.CurrentCount < 5 && posts.HasNext)
+            {
+                page++;
+                var tempPage = await PostService.GetQuery(p => p.Seminar.Any(x => x.Id == id) && p.Status == Status.Published).OrderBy($"{nameof(Post.IsFixedTop)} desc,{(orderBy ?? OrderBy.ModifyDate).GetDisplay()} desc").ToCachedPagedListAsync<Post, PostDto>(page, size, MapperConfig);
+                CheckPermission(tempPage.Data);
+                posts.Data.AddRange(tempPage.Data);
+                posts.CurrentPage++;
+            }
+
             ViewBag.Id = s.Id;
             ViewBag.Title = s.Title;
             ViewBag.Desc = s.Description;
             ViewBag.SubTitle = s.SubTitle;
             ViewBag.Ads = AdsService.GetByWeightedPrice(AdvertiseType.ListItem, Request.Location());
             ViewData["page"] = new Pagination(page, size, posts.TotalCount, orderBy);
-            CheckPermission(posts.Data);
             return View(posts);
         }
 

+ 1 - 1
src/Masuit.MyBlogs.Core/Extensions/Firewall/RequestInterceptMiddleware.cs

@@ -83,7 +83,7 @@ namespace Masuit.MyBlogs.Core.Extensions.Firewall
                     }
                     catch
                     {
-                        context.Response.StatusCode = 504;
+                        context.Response.StatusCode = 405;
                         context.Response.ContentType = "text/html; charset=utf-8";
                         return context.Response.WriteAsync("您的浏览器不支持访问本站!", Encoding.UTF8);
                     }

+ 8 - 6
src/Masuit.MyBlogs.Core/Views/Shared/_ArticleListPartial.cshtml

@@ -1,5 +1,4 @@
-@using Masuit.MyBlogs.Core.Models.DTO
-@using Masuit.Tools.Systems
+@using Masuit.Tools.Systems
 @using Masuit.MyBlogs.Core.Common
 @using Masuit.MyBlogs.Core.Models.Enum
 @model Masuit.MyBlogs.Core.Models.ViewModel.HomePageViewModel
@@ -24,10 +23,13 @@
             var list = Model.PostsQueryable.OrderByRandom().Take(5).ToList();
             if (list.Any())
             {
-                <div class="page-header">
-                    <h3>Oops!抱歉~没有找到相关的文章或资源!如果您有相关的结果,您可以 <a asp-controller="Post" asp-action="Publish" class="btn btn-info btn-lg">点击这里</a> 投稿哦!以下是一些随机推荐:</h3>
-                </div>
-                foreach (PostDto post in list)
+                if (Model.Posts.CurrentPage==1) {
+                    <div class="page-header">
+                        <h3>Oops!抱歉~没有找到相关的文章或资源!如果您有相关的结果,您可以 <a asp-controller="Post" asp-action="Publish" class="btn btn-info btn-lg">点击这里</a> 投稿哦!以下是一些随机推荐:</h3>
+                    </div>
+                }
+
+                foreach (var post in list)
                 {
                     await Html.RenderPartialAsync("_ArticleListItem", post);
                 }

+ 2 - 1
src/Masuit.MyBlogs.Core/wwwroot/ng-views/controllers/post.js

@@ -779,12 +779,13 @@ myApp.controller("category", ["$scope", "$http", "NgTableParams", function ($sco
 			}
 		}).catch(swal.noop);
 	}
+
 	self.edit = function (row) {
 		swal({
 			title: '修改分类',
 			html:
 			'<div class="input-group"><span class="input-group-addon">分类名称: </span><input id="name" type="text" class="form-control input-lg" autofocus placeholder="请输入新的分类名" value="'+row.Name+'"></div>' +
-			'<div class="input-group"><span class="input-group-addon">分类描述: </span><input id="desc" type="text" class="form-control input-lg" placeholder="请输入分类描述" value="'+row.Description+'"></div>',
+			'<div class="input-group"><span class="input-group-addon">分类描述: </span><textarea id="desc" type="text" class="form-control input-lg" placeholder="请输入分类描述"" rows="4">'+row.Description+'</textarea></div>',
 			showCloseButton: true,
 			showCancelButton: true,
 			confirmButtonColor: "#DD6B55",