70 lines
1.6 KiB
Ruby
70 lines
1.6 KiB
Ruby
class Authors < Application
|
|
def index
|
|
@authors = Author.find :all, :order => 'name ASC'
|
|
@secondary_title = 'Authors'
|
|
display @authors
|
|
end
|
|
|
|
def show
|
|
@author = Author.find_by_name(params[:id])
|
|
raise NotFound unless @author
|
|
@secondary_title = "#{@author.name}'s page"
|
|
display @author
|
|
end
|
|
|
|
def new
|
|
only_provides :html
|
|
@author = Author.new
|
|
@secondary_title = "It's better than herpes!"
|
|
render
|
|
end
|
|
|
|
def edit
|
|
only_provides :html
|
|
@author = Author.find_by_name(params[:id])
|
|
raise NotFound unless @author
|
|
render
|
|
end
|
|
|
|
def create
|
|
@author = Author.new(params[:author])
|
|
@invitation = Invitation.find_by_code params[:invitation_code]
|
|
if @invitation.nil?
|
|
flash[:notice] = 'You are not invited, you will need to try again later.'
|
|
render :new
|
|
elsif @author.save
|
|
flash[:notice] = 'Great success!'
|
|
@invitation.destroy
|
|
redirect url(:author, :id => @author.name)
|
|
else
|
|
render :new
|
|
end
|
|
end
|
|
|
|
def update
|
|
@author = Author.find_by_name(params[:id])
|
|
raise NotFound unless @author
|
|
if @author.update_attributes(params[:author])
|
|
flash[:notice] = 'Great success!'
|
|
redirect url(:author, :id => @author.name)
|
|
else
|
|
raise BadRequest
|
|
end
|
|
end
|
|
|
|
def delete
|
|
@author = Author.find_by_name(params[:id])
|
|
raise NotFound unless @author
|
|
if @author.destroy
|
|
flash[:notice] = 'The author was destroyed.'
|
|
if @author.id == session[:author_id]
|
|
redirect url(:delete_session, :id => session[:author_id])
|
|
else
|
|
redirect url(:author)
|
|
end
|
|
else
|
|
raise BadRequest
|
|
end
|
|
end
|
|
end
|