photomix/app/controllers/albums_controller.rb

78 lines
2.1 KiB
Ruby
Raw Normal View History

2009-05-22 14:13:46 +02:00
class AlbumsController < ApplicationController
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
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 } ])
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-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-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