懒得勤快 пре 4 година
родитељ
комит
f3c368eb19

+ 1 - 1
src/Masuit.MyBlogs.Core/Configs/MappingProfile.cs

@@ -49,7 +49,7 @@ namespace Masuit.MyBlogs.Core.Configs
             CreateMap<PostCommand, PostDto>().ReverseMap();
             CreateMap<PostHistoryVersion, PostDto>().ForMember(p => p.CategoryName, e => e.MapFrom(p => p.Category.Name)).ReverseMap();
             CreateMap<Post, PostViewModel>().ForMember(p => p.CategoryName, e => e.MapFrom(p => p.Category.Name)).ForMember(p => p.PostDate, e => e.MapFrom(p => p.PostDate.ToString("yyyy-MM-dd HH:mm:ss"))).ForMember(p => p.ModifyDate, e => e.MapFrom(p => p.ModifyDate.ToString("yyyy-MM-dd HH:mm:ss"))).ReverseMap();
-            CreateMap<Post, PostDataModel>().ForMember(p => p.ModifyDate, e => e.MapFrom(p => p.ModifyDate)).ForMember(p => p.PostDate, e => e.MapFrom(p => p.PostDate)).ForMember(p => p.Status, e => e.MapFrom(p => p.Status.GetDisplay())).ForMember(p => p.ModifyCount, e => e.MapFrom(p => p.PostHistoryVersion.Count)).ForMember(p => p.ViewCount, e => e.MapFrom(p => p.TotalViewCount));
+            CreateMap<Post, PostDataModel>().ForMember(p => p.ModifyDate, e => e.MapFrom(p => p.ModifyDate)).ForMember(p => p.PostDate, e => e.MapFrom(p => p.PostDate)).ForMember(p => p.Status, e => e.MapFrom(p => p.Status.GetDisplay())).ForMember(p => p.ModifyCount, e => e.MapFrom(p => p.PostHistoryVersion.Count)).ForMember(p => p.ViewCount, e => e.MapFrom(p => p.TotalViewCount)).ForMember(p => p.LimitDesc, e => e.MapFrom(p => p.LimitMode > RegionLimitMode.All ? string.Format(p.LimitMode.GetDescription(), p.Regions, p.ExceptRegions) : "无限制"));
 
             CreateMap<SearchDetails, SearchDetailsCommand>().ReverseMap();
             CreateMap<SearchDetails, SearchDetailsDto>().ReverseMap();

+ 12 - 5
src/Masuit.MyBlogs.Core/Controllers/ErrorController.cs

@@ -5,6 +5,7 @@ using Masuit.MyBlogs.Core.Extensions;
 using Masuit.MyBlogs.Core.Extensions.Firewall;
 using Masuit.MyBlogs.Core.Infrastructure.Services.Interface;
 using Masuit.Tools;
+using Masuit.Tools.AspNetCore.Mime;
 using Masuit.Tools.Logging;
 using Masuit.Tools.Security;
 using Masuit.Tools.Strings;
@@ -38,12 +39,18 @@ namespace Masuit.MyBlogs.Core.Controllers
         public ActionResult Index()
         {
             Response.StatusCode = 404;
-            return Request.Method.Equals(HttpMethods.Get) ? View() : Json(new
+            string accept = Request.Headers[HeaderNames.Accept];
+            return true switch
             {
-                StatusCode = 404,
-                Success = false,
-                Message = "页面未找到!"
-            });
+                _ when accept.StartsWith("image") => File("/Assets/images/404/4044.jpg", ContentType.Jpeg),
+                _ when accept.StartsWith("application/json") => Json(new
+                {
+                    StatusCode = 404,
+                    Success = false,
+                    Message = "页面未找到!"
+                }),
+                _ => View()
+            };
         }
 
         /// <summary>

+ 4 - 4
src/Masuit.MyBlogs.Core/Controllers/PostController.cs

@@ -71,8 +71,8 @@ namespace Masuit.MyBlogs.Core.Controllers
             ViewBag.Keyword = post.Keyword + "," + post.Label;
             ViewBag.Desc = await post.Content.GetSummary(200);
             var modifyDate = post.ModifyDate;
-            ViewBag.Next = await PostService.GetFromCacheAsync<DateTime, PostModelBase>(p => p.ModifyDate > modifyDate && (p.Status == Status.Published || CurrentUser.IsAdmin), p => p.ModifyDate);
-            ViewBag.Prev = await PostService.GetFromCacheAsync<DateTime, PostModelBase>(p => p.ModifyDate < modifyDate && (p.Status == Status.Published || CurrentUser.IsAdmin), p => p.ModifyDate, false);
+            ViewBag.Next = await PostService.GetFromCacheAsync<DateTime, PostModelBase>(p => p.ModifyDate > modifyDate && p.LimitMode > RegionLimitMode.All && (p.Status == Status.Published || CurrentUser.IsAdmin), p => p.ModifyDate);
+            ViewBag.Prev = await PostService.GetFromCacheAsync<DateTime, PostModelBase>(p => p.ModifyDate < modifyDate && p.LimitMode > RegionLimitMode.All && (p.Status == Status.Published || CurrentUser.IsAdmin), p => p.ModifyDate, false);
             if (!string.IsNullOrEmpty(kw))
             {
                 ViewData["keywords"] = post.Content.Contains(kw) ? $"['{kw}']" : SearchEngine.LuceneIndexSearcher.CutKeywords(kw).ToJsonString();
@@ -765,8 +765,8 @@ namespace Masuit.MyBlogs.Core.Controllers
 
                 p.ModifyDate = DateTime.Now;
                 var user = HttpContext.Session.Get<UserInfoDto>(SessionKey.UserInfo);
-                p.Modifier = user.NickName;
-                p.ModifierEmail = user.Email;
+                p.Modifier = string.IsNullOrEmpty(post.Modifier) ? user.NickName : post.Modifier;
+                p.ModifierEmail = string.IsNullOrEmpty(post.ModifierEmail) ? user.Email : post.ModifierEmail;
             }
 
             p.IP = ClientIP;

+ 2 - 2
src/Masuit.MyBlogs.Core/Masuit.MyBlogs.Core.csproj

@@ -53,10 +53,10 @@
         <PackageReference Include="PanGu.HighLight" Version="1.0.0" />
         <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="5.0.1" />
         <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="5.0.1" />
-        <PackageReference Include="System.Linq.Dynamic.Core" Version="1.2.10" />
+        <PackageReference Include="System.Linq.Dynamic.Core" Version="1.2.11" />
         <PackageReference Include="TimeZoneConverter" Version="3.5.0" />
         <PackageReference Include="WilderMinds.RssSyndication" Version="1.7.0" />
-        <PackageReference Include="Z.EntityFramework.Plus.EFCore" Version="5.2.3" />
+        <PackageReference Include="Z.EntityFramework.Plus.EFCore" Version="5.2.4" />
     </ItemGroup>
     <ItemGroup>
         <Content Update="appsettings.json">

+ 2 - 0
src/Masuit.MyBlogs.Core/Models/DTO/PostCommand.cs

@@ -27,6 +27,8 @@ namespace Masuit.MyBlogs.Core.Models.DTO
         /// </summary>
         [Required, MaxLength(24, ErrorMessage = "作者名最长支持24个字符!"), MinLength(2, ErrorMessage = "作者名最少2个字符!")]
         public string Author { get; set; }
+        public string Modifier { get; set; }
+        public string ModifierEmail { get; set; }
 
         /// <summary>
         /// 内容

+ 6 - 0
src/Masuit.MyBlogs.Core/Models/ViewModel/PostDataModel.cs

@@ -75,5 +75,11 @@ namespace Masuit.MyBlogs.Core.Models.ViewModel
         /// 同时浏览人数
         /// </summary>
         public int Online { get; set; }
+
+        /// <summary>
+        /// 限制描述
+        /// </summary>
+        public string LimitDesc { get; set; }
+
     }
 }

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

@@ -244,7 +244,7 @@ myApp.controller("writeblog", ["$scope", "$http", "$timeout","$location", functi
 		Keyword:""
 	};
 	
-	$scope.post.Author = $scope.user.NickName || $scope.user.Username;
+	$scope.post.Author =$scope.user.NickName || $scope.user.Username;
 	$scope.post.Email = $scope.user.Email;
 	var refer = $location.search()['refer'];
     if (refer) {

+ 22 - 4
src/Masuit.MyBlogs.Core/wwwroot/ng-views/views/post/edit.html

@@ -81,7 +81,23 @@
         </div>
     </div>
     <div class="row">
-        <div class="col-md-3 col-sm-6">
+        <div class="col-md-3">
+            <div class="input-group">
+                <span class="input-group-addon">作者:</span>
+                <div class="fg-line">
+                    <input type="text" class="form-control" ng-model="post.Modifier">
+                </div>
+            </div>
+        </div>
+        <div class="col-md-3">
+            <div class="input-group">
+                <span class="input-group-addon">作者邮箱:</span>
+                <div class="fg-line">
+                    <input type="text" class="form-control" ng-model="post.ModifierEmail">
+                </div>
+            </div>
+        </div>
+        <div class="col-md-3">
             <div class="input-group">
                 <div class="input-group-addon">
                     <label class="checkbox checkbox-inline m-r-20">
@@ -117,9 +133,11 @@
                 </span>
             </div>
         </div>
-        <div ng-class="{true:'col-md-3',false:'col-md-6'}[post.LimitMode>2]" ng-if="post.LimitMode>0">
+    </div>
+    <div class="row">
+        <div class="col-md-6" ng-if="post.LimitMode>0">
             <div class="input-group">
-                <span class="input-group-addon">限制地区:</span>
+                <span class="input-group-addon">{{post.LimitMode%2==1?"可见":"不可见"}}地区:</span>
                 <div class="fg-line">
                     <input type="text" class="form-control" placeholder="江苏,苏州,移动,AS2333,DMIT,支持地区、运营商、ASN、机房名称" ng-model="post.Regions">
                 </div>
@@ -128,7 +146,7 @@
                 </span>
             </div>
         </div>
-        <div class="col-md-3" ng-if="post.LimitMode==3||post.LimitMode==4">
+        <div class="col-md-6" ng-if="post.LimitMode==3||post.LimitMode==4">
             <div class="input-group">
                 <span class="input-group-addon">排除地区:</span>
                 <div class="fg-line">

+ 3 - 0
src/Masuit.MyBlogs.Core/wwwroot/ng-views/views/post/postlist.html

@@ -85,6 +85,9 @@
             <td data-title="'状态'">
                 {{row.Status}}
             </td>
+            <td data-title="'是否限区'" ng-if="aclMode">
+                {{row.LimitDesc}}
+            </td>
             <td data-title="'禁止评论'" ng-if="aclMode">
                 <label class="el-switch">
                     <input type="checkbox" name="switch" ng-checked="row.DisableComment">

+ 33 - 9
src/Masuit.MyBlogs.Core/wwwroot/ng-views/views/post/writeblog.html

@@ -58,7 +58,7 @@
                 </div>
             </div>
         </div>
-        <div class="col-md-4 col-sm-6">
+        <div class="col-md-3 col-sm-6">
             <div class="input-group">
                 <span class="input-group-addon"><label for="Label">标签:</label></span>
                 <div class="ui fluid multiple search selection dropdown tags">
@@ -71,7 +71,7 @@
                 </div>
             </div>
         </div>
-        <div class="col-md-5 col-sm-6">
+        <div class="col-md-3 col-sm-6">
             <div class="input-group">
                 <span class="input-group-addon"><label for="keyword">文章关键词:</label></span>
                 <div class="ui fluid multiple search selection dropdown keyword">
@@ -82,8 +82,6 @@
                 </div>
             </div>
         </div>
-    </div>
-    <div class="row">
         <div class="col-md-3 col-sm-6">
             <div class="input-group">
                 <span class="input-group-addon"><label for="seminar">专题:</label></span>
@@ -97,7 +95,25 @@
                 </div>
             </div>
         </div>
-        <div class="col-md-5 text-right">
+    </div>
+    <div class="row">
+        <div class="col-md-3">
+            <div class="input-group">
+                <span class="input-group-addon">作者:</span>
+                <div class="fg-line">
+                    <input type="text" class="form-control" ng-model="post.Author">
+                </div>
+            </div>
+        </div>
+        <div class="col-md-3">
+            <div class="input-group">
+                <span class="input-group-addon">作者邮箱:</span>
+                <div class="fg-line">
+                    <input type="text" class="form-control" ng-model="post.Email">
+                </div>
+            </div>
+        </div>
+        <div class="col-md-3 text-right">
             <div class="input-group">
                 <span class="input-group-addon">
                     <label class="checkbox checkbox-inline m-r-20">
@@ -120,7 +136,7 @@
                 <input type="text" class="workinput wicon" id="timespan" ng-model="post.timespan" readonly="readonly" ng-if="post.schedule" />
             </div>
         </div>
-        <div class="col-md-4">
+        <div class="col-md-3">
             <div class="input-group">
                 <span class="input-group-addon" id="sizing-addon2">按地区投放:</span><select ng-model="post.LimitMode" ng-init="post.LimitMode = 0" class="form-control">
                     <option ng-value="0" selected="selected">不限</option>
@@ -129,17 +145,22 @@
                     <option ng-value="3">指定地区可见但排除在内的这些地区</option>
                     <option ng-value="4">指定地区不可见但排除在内的这些地区</option>
                 </select>
-                <span class="input-group-btn">
+                <span class="input-group-btn" ng-if="(post.LimitMode||0)==0">
                     <button type="button" class="btn btn-info" ng-click="submit(post)">发布</button>
                 </span>
             </div>
         </div>
-        <div ng-class="{true:'col-md-6',false:'col-md-12'}[post.LimitMode>2]" ng-if="post.LimitMode>0">
+    </div>
+    <div class="row">
+        <div class="col-md-6" ng-if="post.LimitMode>0">
             <div class="input-group">
-                <span class="input-group-addon">限制地区:</span>
+                <span class="input-group-addon">{{post.LimitMode%2==1?"可见":"不可见"}}地区:</span>
                 <div class="fg-line">
                     <input type="text" class="form-control" placeholder="江苏,苏州,移动,AS2333,DMIT,支持地区、运营商、ASN、机房名称" ng-model="post.Regions">
                 </div>
+                <span class="input-group-btn" ng-if="post.LimitMode<3">
+                    <button type="button" class="btn btn-info waves-effect" ng-click="submit(post)">发布</button>
+                </span>
             </div>
         </div>
         <div class="col-md-6" ng-if="post.LimitMode==3||post.LimitMode==4">
@@ -148,6 +169,9 @@
                 <div class="fg-line">
                     <input type="text" class="form-control" placeholder="江苏,苏州,移动,AS2333,DMIT,支持地区、运营商、ASN、机房名称" ng-model="post.ExceptRegions">
                 </div>
+                <span class="input-group-btn">
+                    <button type="button" class="btn btn-info waves-effect" ng-click="submit(post)">发布</button>
+                </span>
             </div>
         </div>
     </div>