2009-05-22 14:13:46 +02:00
class AlbumsController < ApplicationController
2009-06-08 16:16:30 +02:00
2009-06-09 00:30:22 +02:00
before_filter :require_role_admin , :only = > [ :untouched , :new , :create , :edit , :update , :destroy ]
2009-05-22 14:13:46 +02:00
def index
2009-06-08 16:16:30 +02:00
if params [ :tag_id ]
2009-06-16 01:22:51 +02:00
@albums = Album . find ( :all , :conditions = > [ " Id IN ( SELECT DISTINCT Photos.ALbum_id FROM Photos WHERE Photos.Id IN ( SELECT Photo_Id FROM Photo_Tags WHERE Photo_Tags.Tag_Id = :q) ) " , { :q = > Tag . find ( params [ :tag_id ] ) . id } ] )
2009-06-08 16:16:30 +02:00
elsif params [ :q ]
@albums = Album . find ( :all , :conditions = > [ " Id IN ( SELECT DISTINCT Photos.Album_Id FROM Photos WHERE Photos.description LIKE :q OR Photos.title LIKE :q OR Photos.Id IN ( SELECT Photo_Id FROM Photo_Tags LEFT OUTER JOIN Tags ON Photo_Tags.Tag_Id = Tags.Id WHERE Tags.Title LIKE :q) ) " , { :q = > '%' + params [ :q ] + '%' } ] )
else
@albums = Album . find ( :all )
end
2009-05-22 14:13:46 +02:00
respond_to do | format |
format . html
format . json { render :json = > @albums }
format . xml { render :xml = > @albums }
end
end
2009-06-03 01:33:39 +02:00
def untouched
@albums = Album . untouched ( )
respond_to do | format |
format . html
format . json { render :json = > @albums }
format . xml { render :xml = > @albums }
end
end
2009-05-22 14:13:46 +02:00
def show
2009-06-16 01:18:42 +02:00
@album = Album . find ( params [ :id ] )
2009-05-22 14:13:46 +02:00
respond_to do | format |
format . html
format . json { render :json = > @album }
format . xml { render :xml = > @album }
2009-05-25 21:39:43 +02:00
format . pdf { render :pdf = > @album . title }
2009-05-22 14:13:46 +02:00
end
end
2009-06-08 16:16:30 +02:00
2009-05-22 21:04:41 +02:00
def new
@album = Album . new
end
def create
@album = Album . new ( params [ :album ] )
2009-06-02 00:08:57 +02:00
@album . path = @album . title
2009-05-22 21:04:41 +02:00
if @album . save
flash [ :notice ] = " Album created! "
redirect_to @album
else
render :action = > :new
end
end
2009-06-08 16:16:30 +02:00
2009-05-22 21:04:41 +02:00
def edit
@album = Album . find ( params [ :id ] )
end
def update
@album = Album . find ( params [ :id ] )
if @album . update_attributes ( params [ :album ] )
2009-06-09 00:30:22 +02:00
flash [ :notice ] = " Album updated! "
2009-05-22 21:04:41 +02:00
redirect_to @album
else
render :action = > :edit
end
end
2009-06-02 00:08:57 +02:00
def destroy
2009-05-22 21:04:41 +02:00
@album = Album . find ( params [ :id ] )
2009-06-02 00:08:57 +02:00
if @album . destroy
redirect_to albums_path
2009-05-22 21:04:41 +02:00
else
redirect_to @album
end
end
2009-05-22 14:13:46 +02:00
end