This commit is contained in:
Toks
2013-06-05 13:09:14 -04:00
parent a9708b9efa
commit 6f2d57882e
5 changed files with 35 additions and 6 deletions

View File

@@ -1,8 +1,8 @@
class ArtistsController < ApplicationController
respond_to :html, :xml, :json
before_filter :member_only, :except => [:index, :show, :banned]
before_filter :builder_only, :only => [:edit_name, :update_name, :destroy]
before_filter :admin_only, :only => [:ban]
before_filter :builder_only, :only => [:edit_name, :update_name]
def new
@artist = Artist.new_with_defaults(params)
@@ -82,6 +82,24 @@ class ArtistsController < ApplicationController
respond_with(@artist)
end
def destroy
@artist = Artist.find(params[:id])
if !@artist.deletable_by?(CurrentUser.user)
raise User::PrivilegeError
end
@artist.update_attribute(:is_active, false)
respond_with(@artist, :notice => "Artist deleted")
end
def undelete
@artist = Artist.find(params[:id])
if !@artist.deletable_by?(CurrentUser.user)
raise User::PrivilegeError
end
@artist.update_attribute(:is_active, true)
respond_with(@artist, :notice => "Artist undeleted")
end
def revert
@artist = Artist.find(params[:id])
@version = ArtistVersion.find(params[:version_id])

View File

@@ -317,8 +317,10 @@ class Artist < ActiveRecord::Base
extend SearchMethods
def status
if is_banned?
if is_banned? && is_active?
"Banned"
elsif is_banned?
"Banned Deleted"
elsif is_active?
"Active"
else
@@ -341,4 +343,8 @@ class Artist < ActiveRecord::Base
def initialize_creator
self.creator_id = CurrentUser.user.id
end
def deletable_by?(user)
user.is_builder?
end
end

View File

@@ -12,9 +12,6 @@
<%= f.input :other_names_comma, :hint => "Separate with commas", :as => :text, :label => "Other names" %>
<%= f.input :group_name %>
<%= f.input :url_string, :label => "URLs", :as => :text, :input_html => {:size => "50x5"} %>
<% if CurrentUser.is_builder? %>
<%= f.input :is_active %>
<% end %>
<%= dtext_field "artist", "notes" %>
<%= f.button :submit, "Submit" %>

View File

@@ -16,8 +16,15 @@
<li><%= link_to "Edit name", edit_name_artist_path(@artist) %></li>
<% end %>
<li><%= link_to "History", artist_versions_path(:search => {:artist_id => @artist.id}) %></li>
<% if @artist.deletable_by?(CurrentUser.user) %>
<% if @artist.is_active? %>
<li><%= link_to "Delete", artist_path(@artist), :method => :delete, :confirm => "Are you sure you want to delete this artist?" %></li>
<% else %>
<li><%= link_to "Undelete", undelete_artist_path(@artist), :method => :post, :confirm => "Are you sure you want to undelete this artist?" %></li>
<% end %>
<% end %>
<% if CurrentUser.is_admin? %>
<%= link_to "Ban", ban_artist_path(@artist), :method => :put, :confirm => "Are you sure you want to ban this artist?" %>
<li><%= link_to "Ban", ban_artist_path(@artist), :method => :put, :confirm => "Are you sure you want to ban this artist?" %></li>
<% end %>
<% end %>
</menu>

View File

@@ -61,6 +61,7 @@ Danbooru::Application.routes.draw do
put :ban
get :edit_name
put :update_name
post :undelete
end
collection do
get :show_or_new