pundit: convert user feedbacks to pundit.

Allow users to delete feedbacks they've given to other users, not just
mods.
This commit is contained in:
evazion
2020-03-17 05:52:38 -05:00
parent 565a6572a7
commit 4cd0b2cbfe
9 changed files with 95 additions and 87 deletions

View File

@@ -1,6 +1,6 @@
<% content_for(:secondary_links) do %>
<% if CurrentUser.is_gold? %>
<% if @user_feedback %>
<% if policy(UserFeedback.new).create? %>
<% if @user_feedback.present? && policy(@user_feedback).create? %>
<%= subnav_link_to "New", new_user_feedback_path(:user_feedback => {:user_id => @user_feedback.user_id}) %>
<% elsif params[:search] && params[:search][:user_id] %>
<%= subnav_link_to "New", new_user_feedback_path(:user_feedback => {:user_id => params[:search][:user_id]}) %>

View File

@@ -10,9 +10,7 @@
<%= edit_form_for(@user_feedback) do |f| %>
<%= f.input :category, :collection => ["positive", "neutral", "negative"], :include_blank => false %>
<%= dtext_field "user_feedback", "body" %>
<% if @user_feedback.deletable_by?(CurrentUser.user) %>
<%= f.input :is_deleted, label: "Deleted" %>
<% end %>
<%= f.input :is_deleted, label: "Deleted" %>
<%= f.button :submit, "Submit" %>
<%= dtext_preview_button "user_feedback", "body" %>
<% end %>

View File

@@ -7,7 +7,7 @@
<%= f.input :creator_name, input_html: { value: params.dig(:search, :creator_name), "data-autocomplete": "user" } %>
<%= f.input :body_matches, label: "Message", input_html: { value: params.dig(:search, :body_matches) } %>
<%= f.input :category, collection: %w[positive negative neutral], include_blank: true, selected: params.dig(:search, :category) %>
<% if CurrentUser.is_moderator? %>
<% if policy(UserFeedback).can_view_deleted? %>
<%= f.input :is_deleted, label: "Deleted", collection: %w[Yes No], include_blank: true, selected: params.dig(:search, :is_deleted) %>
<% end %>
<%= f.submit "Search" %>
@@ -24,9 +24,9 @@
</div>
<%= render "application/update_notice", record: feedback, interval: 0.minutes %>
<% end %>
<% if CurrentUser.is_moderator? %>
<% if policy(UserFeedback).can_view_deleted? %>
<% t.column "Status" do |feedback| %>
<%= "deleted" if feedback.is_deleted? %>
<%= "Deleted" if feedback.is_deleted? %>
<% end %>
<% end %>
<% t.column "Category" do |feedback| %>
@@ -38,12 +38,12 @@
<div><%= time_ago_in_words_tagged(feedback.created_at) %></div>
<% end %>
<% t.column column: "control" do |feedback| %>
<% if feedback.editable_by?(CurrentUser.user) %>
<%= link_to "edit", edit_user_feedback_path(feedback) %>
<% if feedback.deletable_by?(CurrentUser.user) && !feedback.is_deleted? %>
| <%= link_to "delete", user_feedback_path(feedback), method: :put, remote: true, "data-params": "user_feedback[is_deleted]=true", "data-confirm": "Are you sure you want to delete this user feedback?" %>
<% elsif feedback.deletable_by?(CurrentUser.user) && feedback.is_deleted? %>
| <%= link_to "undelete", user_feedback_path(feedback), method: :put, remote: true, "data-params": "user_feedback[is_deleted]=false" %>
<% if policy(feedback).update? %>
<%= link_to "Edit", edit_user_feedback_path(feedback) %>
<% if feedback.is_deleted? %>
| <%= link_to "Undelete", user_feedback_path(feedback), method: :put, remote: true, "data-params": "user_feedback[is_deleted]=false" %>
<% else %>
| <%= link_to "Delete", user_feedback_path(feedback), method: :put, remote: true, "data-params": "user_feedback[is_deleted]=true", "data-confirm": "Are you sure you want to delete this user feedback?" %>
<% end %>
<% end %>
<% end %>

View File

@@ -17,7 +17,7 @@
</li>
</ul>
<% if @user_feedback.editable_by?(CurrentUser.user) %>
<% if policy(@user_feedback).update? %>
<p><%= link_to "Edit", edit_user_feedback_path(@user_feedback) %></p>
<% end %>
</div>