fixes #131: Unable to delete pools
This commit is contained in:
@@ -2,6 +2,7 @@ class PoolsController < ApplicationController
|
|||||||
respond_to :html, :xml, :json, :js
|
respond_to :html, :xml, :json, :js
|
||||||
before_filter :member_only, :except => [:index, :show]
|
before_filter :member_only, :except => [:index, :show]
|
||||||
before_filter :moderator_only, :only => [:destroy]
|
before_filter :moderator_only, :only => [:destroy]
|
||||||
|
rescue_from User::PrivilegeError, :with => "static/access_denied"
|
||||||
|
|
||||||
def new
|
def new
|
||||||
@pool = Pool.new
|
@pool = Pool.new
|
||||||
@@ -45,6 +46,9 @@ class PoolsController < ApplicationController
|
|||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@pool = Pool.find(params[:id])
|
@pool = Pool.find(params[:id])
|
||||||
|
if !@pool.deletable_by?(CurrentUser.user)
|
||||||
|
raise User::PrivilegeError
|
||||||
|
end
|
||||||
@pool.destroy
|
@pool.destroy
|
||||||
respond_with(@pool, :notice => "Pool deleted")
|
respond_with(@pool, :notice => "Pool deleted")
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ class Pool < ActiveRecord::Base
|
|||||||
before_validation :normalize_post_ids
|
before_validation :normalize_post_ids
|
||||||
before_validation :initialize_creator, :on => :create
|
before_validation :initialize_creator, :on => :create
|
||||||
after_save :create_version
|
after_save :create_version
|
||||||
|
before_destroy :create_mod_action_for_destroy
|
||||||
attr_accessible :name, :description, :post_ids, :post_id_array, :is_active, :post_count
|
attr_accessible :name, :description, :post_ids, :post_id_array, :is_active, :post_count
|
||||||
|
|
||||||
def self.name_to_id(name)
|
def self.name_to_id(name)
|
||||||
@@ -66,6 +67,14 @@ class Pool < ActiveRecord::Base
|
|||||||
post_ids =~ /(?:\A| )#{post_id}(?:\Z| )/
|
post_ids =~ /(?:\A| )#{post_id}(?:\Z| )/
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def deletable_by?(user)
|
||||||
|
user.is_janitor?
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_mod_action_for_destroy
|
||||||
|
ModAction.create(:description => "deleted pool ##{id} name=#{name} post_ids=#{post_ids}")
|
||||||
|
end
|
||||||
|
|
||||||
def add!(post)
|
def add!(post)
|
||||||
return if contains?(post.id)
|
return if contains?(post.id)
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,9 @@
|
|||||||
<li><%= link_to "Show", pool_path(@pool) %></li>
|
<li><%= link_to "Show", pool_path(@pool) %></li>
|
||||||
<li><%= link_to "Posts", posts_path(:tags => "pool:#{@pool.id}") %></li>
|
<li><%= link_to "Posts", posts_path(:tags => "pool:#{@pool.id}") %></li>
|
||||||
<li><%= link_to "Edit", edit_pool_path(@pool) %></li>
|
<li><%= link_to "Edit", edit_pool_path(@pool) %></li>
|
||||||
|
<% if @pool.deletable_by?(CurrentUser.user) %>
|
||||||
|
<li><%= link_to "Delete", pool_path(@pool), :method => :delete, :confirm => "Are you sure you want to delete this pool?", :remote => true %></li>
|
||||||
|
<% end %>
|
||||||
<li><%= link_to "Order", edit_pool_order_path(@pool) %></li>
|
<li><%= link_to "Order", edit_pool_order_path(@pool) %></li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</menu>
|
</menu>
|
||||||
|
|||||||
1
app/views/pools/destroy.js.erb
Normal file
1
app/views/pools/destroy.js.erb
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Danbooru.notice("Pool deleted");
|
||||||
Reference in New Issue
Block a user