From c01f63ba0f544cc9fcdb4fb4b39fbd1a75201876 Mon Sep 17 00:00:00 2001 From: Manoj Kulkarni Date: Sat, 26 Aug 2017 00:31:38 +0530 Subject: [PATCH] #108 Blog owner can now enable or disable comments for blog post --- BlogTemplate/Models/BlogDataStore.cs | 2 + BlogTemplate/Models/Post.cs | 1 + BlogTemplate/Pages/Edit.cshtml | 8 +++ BlogTemplate/Pages/Edit.cshtml.cs | 5 +- BlogTemplate/Pages/New.cshtml | 8 +++ BlogTemplate/Pages/New.cshtml.cs | 3 + BlogTemplate/Pages/Post.cshtml | 83 +++++++++++++++++----------- 7 files changed, 76 insertions(+), 34 deletions(-) diff --git a/BlogTemplate/Models/BlogDataStore.cs b/BlogTemplate/Models/BlogDataStore.cs index 1eb12b8..6699de2 100644 --- a/BlogTemplate/Models/BlogDataStore.cs +++ b/BlogTemplate/Models/BlogDataStore.cs @@ -212,6 +212,7 @@ public void AppendPostInfo(Post post, XElement rootNode) rootNode.Add(new XElement("LastModified", post.LastModified.ToString("o"))); rootNode.Add(new XElement("IsPublic", post.IsPublic.ToString())); rootNode.Add(new XElement("Excerpt", post.Excerpt)); + rootNode.Add(new XElement("EnableComments", post.EnableComments)); } public void SavePost(Post post) @@ -260,6 +261,7 @@ public Post CollectPostInfo(string expectedFilePath) LastModified = DateTimeOffset.Parse(doc.Root.Element("LastModified").Value), IsPublic = Convert.ToBoolean(doc.Root.Element("IsPublic").Value), Excerpt = doc.Root.Element("Excerpt").Value, + EnableComments = Convert.ToBoolean(doc.Root.Element("EnableComments")?.Value), }; post.Comments = GetAllComments(doc); return post; diff --git a/BlogTemplate/Models/Post.cs b/BlogTemplate/Models/Post.cs index 77452a7..e5927c7 100644 --- a/BlogTemplate/Models/Post.cs +++ b/BlogTemplate/Models/Post.cs @@ -23,5 +23,6 @@ public class Post public bool IsPublic { get; set; } public string Excerpt { get; set; } public int ExcerptMaxLength { get; } = 140; + public bool EnableComments { get; set; } } } diff --git a/BlogTemplate/Pages/Edit.cshtml b/BlogTemplate/Pages/Edit.cshtml index fd4f823..23bb09d 100644 --- a/BlogTemplate/Pages/Edit.cshtml +++ b/BlogTemplate/Pages/Edit.cshtml @@ -33,6 +33,14 @@ +
+
+ +
+
diff --git a/BlogTemplate/Pages/Edit.cshtml.cs b/BlogTemplate/Pages/Edit.cshtml.cs index 9502c9c..d74ad32 100644 --- a/BlogTemplate/Pages/Edit.cshtml.cs +++ b/BlogTemplate/Pages/Edit.cshtml.cs @@ -35,6 +35,7 @@ public void OnGet([FromRoute] int id) Title = post.Title, Body = post.Body, Excerpt = post.Excerpt, + EnableComments=post.EnableComments }; if (post == null) @@ -77,7 +78,7 @@ private void UpdatePost(Post post, [FromForm] bool updateSlug, bool wasPublic) post.Title = EditedPost.Title; post.Body = EditedPost.Body; post.Excerpt = EditedPost.Excerpt; - + post.EnableComments = EditedPost.EnableComments; _dataStore.UpdatePost(post, wasPublic); if (updateSlug) { @@ -92,6 +93,8 @@ public class EditedPostModel [Required] public string Body { get; set; } public string Excerpt { get; set; } + [Display(Name = "Enable Comments")] + public bool EnableComments { get; set; } } } } diff --git a/BlogTemplate/Pages/New.cshtml b/BlogTemplate/Pages/New.cshtml index 0c55bcc..189cdf5 100644 --- a/BlogTemplate/Pages/New.cshtml +++ b/BlogTemplate/Pages/New.cshtml @@ -34,6 +34,14 @@
+
+
+ +
+
diff --git a/BlogTemplate/Pages/New.cshtml.cs b/BlogTemplate/Pages/New.cshtml.cs index c5aa921..06967d4 100644 --- a/BlogTemplate/Pages/New.cshtml.cs +++ b/BlogTemplate/Pages/New.cshtml.cs @@ -65,6 +65,7 @@ private void SavePost(NewPostViewModel newPost, bool publishPost) Excerpt = NewPost.Excerpt, Slug = _slugGenerator.CreateSlug(NewPost.Title), LastModified = DateTimeOffset.Now, + EnableComments=NewPost.EnableComments }; if (string.IsNullOrEmpty(post.Excerpt)) @@ -89,6 +90,8 @@ public class NewPostViewModel [Required] public string Body { get; set; } public string Excerpt { get; set; } + [Display(Name ="Enable Comments")] + public bool EnableComments { get; set; } } } } diff --git a/BlogTemplate/Pages/Post.cshtml b/BlogTemplate/Pages/Post.cshtml index 9234809..de64e2b 100644 --- a/BlogTemplate/Pages/Post.cshtml +++ b/BlogTemplate/Pages/Post.cshtml @@ -21,17 +21,19 @@

Edit Post

-

Comments

- @if (Model.Post.Comments.Count == 0) + @if (Model.Post.Comments.Any() || Model.Post.EnableComments) { -

No comments yet. Be the first to comment!

- } - @foreach (var comment in Model.Post.Comments) - { - string cssClass = comment.IsPublic ? "" : "deletedContent"; -
-
- @if (comment.IsPublic) +

Comments

+ @if (Model.Post.Comments.Count == 0) + { +

No comments yet. Be the first to comment!

+ } + @foreach (var comment in Model.Post.Comments) + { + string cssClass = comment.IsPublic ? "" : "deletedContent"; + +
+ @if (comment.IsPublic) {

@comment.AuthorName

@@ -42,9 +44,9 @@
- } - else - { + } + else + {

@comment.AuthorName

@@ -56,41 +58,45 @@
- } -
- + } +
+ + } }
} else {
-

Comments

- @if (Model.Post.Comments.Count == 0) - { -

No comments yet. Be the first to comment!

- } - @foreach (var comment in Model.Post.Comments) + @if (Model.Post.Comments.Any() || Model.Post.EnableComments) { - @if (comment.IsPublic) +

Comments

+ @if (Model.Post.Comments.Count == 0) { -
-
-

@comment.AuthorName

-
@comment.PubDate.ToString("MMM dd, yyyy")
-

@comment.Body

- - -
-
+

No comments yet. Be the first to comment!

+ } + @foreach (var comment in Model.Post.Comments) + { + @if (comment.IsPublic) + { +
+
+

@comment.AuthorName

+
@comment.PubDate.ToString("MMM dd, yyyy")
+

@comment.Body

+ + +
+
+ } } }
}
- @if (Model.Post.IsPublic) + @if (Model.Post.IsPublic && Model.Post.EnableComments) {
@@ -115,4 +121,15 @@
} + @if (!Model.Post.EnableComments) + { +
+
+
+ + Comments are disabled for this post. +
+
+
+ }