diff --git a/Website.Tests/VIewModels/BlogPostPreviewViewModelTests.cs b/Website.Tests/VIewModels/BlogPostPreviewViewModelTests.cs
index af1e18b..35feefd 100644
--- a/Website.Tests/VIewModels/BlogPostPreviewViewModelTests.cs
+++ b/Website.Tests/VIewModels/BlogPostPreviewViewModelTests.cs
@@ -14,7 +14,7 @@ namespace Website.Tests.VIewModels
Post_Content = new string('a', 1001)
};
var post = new BlogPost(state);
- var vm = new BlogPostPreviewViewModel(post);
+ var vm = new BlogPostSnippetViewModel(post);
vm.Content.Length.Should().Be(1000);
}
@@ -24,7 +24,7 @@ namespace Website.Tests.VIewModels
Post_Content = new string('a', 900)
};
var post = new BlogPost(state);
- var vm = new BlogPostPreviewViewModel(post);
+ var vm = new BlogPostSnippetViewModel(post);
vm.Content.Length.Should().Be(900);
}
}
diff --git a/Website.Tests/VIewModels/BlogPostViewModelTests.cs b/Website.Tests/VIewModels/BlogPostViewModelTests.cs
index 7176239..ebcc691 100644
--- a/Website.Tests/VIewModels/BlogPostViewModelTests.cs
+++ b/Website.Tests/VIewModels/BlogPostViewModelTests.cs
@@ -15,7 +15,7 @@ namespace Website.Tests.VIewModels
Post_Content="# header"
};
var post = new BlogPost(state);
- var vm = new BlogPostViewModel(post);
+ var vm = new BlogPostViewModel(post, false);
vm.ContentHtml.Should().Be("
header
");
}
@@ -26,7 +26,7 @@ namespace Website.Tests.VIewModels
Post_Timestamp = new DateTime(2018, 10, 01, 15, 1, 25)
};
var post = new BlogPost(state);
- var vm = new BlogPostViewModel(post);
+ var vm = new BlogPostViewModel(post, false);
vm.Timestamp.Should().Be("Monday the 1st of October 2018");
}
@@ -37,7 +37,7 @@ namespace Website.Tests.VIewModels
Post_Timestamp = new DateTime(2018, 10, 02, 15, 1, 25)
};
var post = new BlogPost(state);
- var vm = new BlogPostViewModel(post);
+ var vm = new BlogPostViewModel(post, false);
vm.Timestamp.Should().Be("Tuesday the 2nd of October 2018");
}
@@ -48,7 +48,7 @@ namespace Website.Tests.VIewModels
Post_Timestamp = new DateTime(2018, 10, 03, 15, 1, 25)
};
var post = new BlogPost(state);
- var vm = new BlogPostViewModel(post);
+ var vm = new BlogPostViewModel(post, false);
vm.Timestamp.Should().Be("Wednesday the 3rd of October 2018");
}
}
diff --git a/Website/Controllers/BlogController.cs b/Website/Controllers/BlogController.cs
index 8860cf3..3684a40 100644
--- a/Website/Controllers/BlogController.cs
+++ b/Website/Controllers/BlogController.cs
@@ -7,32 +7,29 @@ using Website.Data;
using Website.Models;
using Website.ViewModels;
-namespace Website.Controllers
-{
- public class BlogController : Controller
- {
+namespace Website.Controllers {
+ public class BlogController:Controller {
private const int MaxPostsPerPage = 10;
private readonly BlogRepository _repo;
- public BlogController(BlogRepository repo)
- {
- _repo = repo;
- }
+ public BlogController(BlogRepository repo) => _repo = repo;
- public async Task Page(int page)
- {
+ public async Task Page(int page) {
var offset = (page - 1) * MaxPostsPerPage;
- var posts = (await _repo.GetLatestPostsAsync(MaxPostsPerPage, offset)).Select(p => new BlogPostPreviewViewModel(p));
+ var posts = (await _repo.GetLatestPostsAsync(MaxPostsPerPage, offset)).Select(p => new BlogPostSnippetViewModel(p));
var maxPages = (await _repo.GetCountAsync()) / MaxPostsPerPage;
var model = new BlogViewModel(posts, page, maxPages);
return View(model);
}
- public async Task Entry(string url)
- {
+ public async Task Entry(string url, bool preview = false) {
try {
var post = await _repo.GetPostByUrlAsync(url);
- var model = new BlogPostViewModel(post);
+
+ if (!preview && string.IsNullOrEmpty(post.Content))
+ return NotFound();
+
+ var model = new BlogPostViewModel(post, preview);
return View(model);
} catch (InvalidOperationException) {
return NotFound();
@@ -52,8 +49,7 @@ namespace Website.Controllers
Content = post.Draft
};
return View(model);
- }
- catch (InvalidOperationException) {
+ } catch (InvalidOperationException) {
return NotFound();
}
}
@@ -68,13 +64,13 @@ namespace Website.Controllers
var savedPost = await _repo.SavePost(post);
- return RedirectToAction(nameof(Edit), new{savedPost.Id});
+ return RedirectToAction(nameof(Edit), new { savedPost.Id });
}
[Authorize]
public async Task Manage() {
var posts = await _repo.GetAllPostsAsync();
- var models = posts.OrderByDescending(post => post.Timestamp).Select(post => new BlogPostViewModel(post));
+ var models = posts.OrderByDescending(post => post.Timestamp).Select(post => new BlogPostViewModel(post, false));
return View(models);
}
diff --git a/Website/Controllers/HomeController.cs b/Website/Controllers/HomeController.cs
index 39ad8f5..c661164 100644
--- a/Website/Controllers/HomeController.cs
+++ b/Website/Controllers/HomeController.cs
@@ -17,7 +17,7 @@ namespace Website.Controllers
public async Task Index()
{
var post = await _blogRepo.GetLatestPostAsync();
- var model = new BlogPostPreviewViewModel(post);
+ var model = new BlogPostSnippetViewModel(post);
return View(model);
}
}
diff --git a/Website/ViewModels/BlogPostPreviewViewModel.cs b/Website/ViewModels/BlogPostPreviewViewModel.cs
deleted file mode 100644
index fac0a55..0000000
--- a/Website/ViewModels/BlogPostPreviewViewModel.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using Website.Models;
-
-namespace Website.ViewModels
-{
- public class BlogPostPreviewViewModel:BlogPostViewModel
- {
- public BlogPostPreviewViewModel(BlogPost blogPost) : base(blogPost) => Content = Content.Length < 1000 ? Content : Content.Substring(0, 1000);
- }
-}
\ No newline at end of file
diff --git a/Website/ViewModels/BlogPostSnippetViewModel.cs b/Website/ViewModels/BlogPostSnippetViewModel.cs
new file mode 100644
index 0000000..bda3a3a
--- /dev/null
+++ b/Website/ViewModels/BlogPostSnippetViewModel.cs
@@ -0,0 +1,9 @@
+using Website.Models;
+
+namespace Website.ViewModels
+{
+ public class BlogPostSnippetViewModel:BlogPostViewModel
+ {
+ public BlogPostSnippetViewModel(BlogPost blogPost) : base(blogPost, false) => Content = Content.Length < 1000 ? Content : Content.Substring(0, 1000);
+ }
+}
\ No newline at end of file
diff --git a/Website/ViewModels/BlogPostViewModel.cs b/Website/ViewModels/BlogPostViewModel.cs
index b486c6e..662ea2a 100644
--- a/Website/ViewModels/BlogPostViewModel.cs
+++ b/Website/ViewModels/BlogPostViewModel.cs
@@ -7,12 +7,12 @@ namespace Website.ViewModels
{
public class BlogPostViewModel
{
- public BlogPostViewModel(BlogPost blogPost) {
+ public BlogPostViewModel(BlogPost blogPost, bool preview) {
Id = blogPost.Id;
Title = blogPost.Title;
Timestamp = FormatTimestamp(blogPost.Timestamp);
Url = blogPost.Url;
- Content = blogPost.Content;
+ Content = preview ? blogPost.Draft : blogPost.Content;
}
private static string GetDaySuffix(int day) {
diff --git a/Website/Views/Blog/Manage.cshtml b/Website/Views/Blog/Manage.cshtml
index e7ec58b..dd5b163 100644
--- a/Website/Views/Blog/Manage.cshtml
+++ b/Website/Views/Blog/Manage.cshtml
@@ -5,16 +5,13 @@
}
\ No newline at end of file