From 82106701225f3de528303a7fefadd80c436dd1a2 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Fri, 2 May 2014 22:45:57 -0700 Subject: [PATCH] event comment delete --- app.rb | 13 +++++++++ migrations/026_add_comment_paranoid_delete.rb | 9 ++++++ models/comment.rb | 1 + public/assets/scripts/news/comment.js | 29 ++++++++++--------- views/_news.erb | 9 ++++-- views/_news_templates.erb | 2 +- 6 files changed, 47 insertions(+), 16 deletions(-) create mode 100644 migrations/026_add_comment_paranoid_delete.rb diff --git a/app.rb b/app.rb index ff659790..10eeff77 100644 --- a/app.rb +++ b/app.rb @@ -896,6 +896,19 @@ post '/event/:event_id/delete' do |event_id| return {result: 'error'}.to_json end +post '/comment/:comment_id/delete' do |comment_id| + require_login + content_type :json + comment = Comment[id: comment_id] + + if comment.event.site == current_site || comment.actioning_site == current_site + comment.delete + return {result: 'success'}.to_json + end + + return {result: 'error'}.to_json +end + def require_admin redirect '/' unless signed_in? && current_site.is_admin end diff --git a/migrations/026_add_comment_paranoid_delete.rb b/migrations/026_add_comment_paranoid_delete.rb new file mode 100644 index 00000000..20e77c5f --- /dev/null +++ b/migrations/026_add_comment_paranoid_delete.rb @@ -0,0 +1,9 @@ +Sequel.migration do + up { + DB.add_column :comments, :is_deleted, :boolean, default: false + } + + down { + DB.drop_column :comments, :is_deleted + } +end \ No newline at end of file diff --git a/models/comment.rb b/models/comment.rb index 12dbf4b8..498e1377 100644 --- a/models/comment.rb +++ b/models/comment.rb @@ -1,4 +1,5 @@ class Comment < Sequel::Model + include Sequel::ParanoidDelete many_to_one :event many_to_one :actioning_site, class: :Site end \ No newline at end of file diff --git a/public/assets/scripts/news/comment.js b/public/assets/scripts/news/comment.js index 530a5b4f..00b0828e 100644 --- a/public/assets/scripts/news/comment.js +++ b/public/assets/scripts/news/comment.js @@ -1,16 +1,19 @@ -var Comment = function(eventId, csrfToken) { - this.eventId = eventId - this.csrfToken = csrfToken -} +var Comment = { + create: function(eventId, csrfToken, form) { + var form = $(form) + var comment = form.find('[name="comment"]').val() + form.remove() -Comment.prototype.create = function(form) { - var self = this - var form = $(form) - var comment = form.find('[name="comment"]').val() - form.remove() + $.post('/event/'+eventId+'/comment', {csrf_token: csrfToken, message: comment}, function(res) { + console.log(res) + location.reload() + }) + }, - $.post('/event/'+this.eventId+'/comment', {csrf_token: this.csrfToken, message: comment}, function(res) { - console.log(res) - }) - + delete: function(commentId, csrfToken) { + $.post('/comment/'+commentId+'/delete', {csrf_token: csrfToken}, function(res) { + console.log(res) + location.reload() + }) + } } \ No newline at end of file diff --git a/views/_news.erb b/views/_news.erb index d4830261..59a689cb 100644 --- a/views/_news.erb +++ b/views/_news.erb @@ -15,13 +15,18 @@
<% event.comments.each do |comment| %> -
+
<%= comment.actioning_site.username %> <%= comment.created_at.ago %>

<%= comment.message %>

- +
+ Like (1) + <% if event.site_id == current_site.id || comment.actioning_site_id == current_site.id %> + Delete + <% end %> +
<% end %>
diff --git a/views/_news_templates.erb b/views/_news_templates.erb index c4514c24..7fb77338 100644 --- a/views/_news_templates.erb +++ b/views/_news_templates.erb @@ -1,5 +1,5 @@