2009-05-22 14:13:46 +02:00
class PhotosController < ApplicationController
2009-06-08 16:16:30 +02:00
2009-06-09 00:30:22 +02:00
before_filter :require_role_admin , :only = > [ :untouched , :upload , :new , :create , :edit , :update , :destroy ]
2009-05-22 21:04:41 +02:00
def index
2009-06-02 00:08:57 +02:00
if params [ :tag_id ]
@photos = Tag . find_by_title ( params [ :tag_id ] ) . photos
2009-06-09 00:30:22 +02:00
elsif params [ :album_id ]
@photos = Album . find ( params [ :album_id ] ) . photos . find ( :all )
2009-06-02 00:08:57 +02:00
elsif params [ :q ]
@photos = Photo . find ( :all , :limit = > 20 , :conditions = > [ " 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 ] + '%' } ] , :include = > :album )
else
2009-06-09 00:30:22 +02:00
@photos = Photo . find ( :all )
2009-06-02 00:08:57 +02:00
end
respond_to do | format |
format . html
format . json { render :json = > @photos }
format . xml { render :xml = > @photos }
end
end
def untouched
2009-06-09 00:30:22 +02:00
if params [ :album_id ]
@album = Album . find ( params [ :album_id ] )
@photos = @album . photos . untouched
else
@photos = Photo . untouched ( )
end
2009-05-22 21:04:41 +02:00
respond_to do | format |
format . html
format . json { render :json = > @photos }
format . xml { render :xml = > @photos }
end
end
def show
@photo = Photo . find ( params [ :id ] )
respond_to do | format |
format . html
format . json { render :json = > @photo }
format . xml { render :xml = > @photo }
end
end
def new
@photo = Photo . new
end
2009-06-09 00:30:22 +02:00
def upload
@album = Album . find ( params [ :album_id ] )
end
2009-05-22 21:04:41 +02:00
def create
2009-06-02 00:08:57 +02:00
respond_to do | format |
@photo = Photo . new ( params [ :photo ] )
if params [ :Filedata ]
@photo . swf_uploaded_data = params [ :Filedata ]
2009-06-03 01:33:39 +02:00
if @photo . save
format . html { render :text = > " FILEID: " + @photo . path_modified_public ( " album " ) }
format . xml { render :nothing = > true }
else
format . html { render :text = > " ERRORS: " + @photo . errors . full_messages . join ( " " ) , :status = > 500 }
format . xml { render :xml = > @photo . errors , :status = > 500 }
end
2009-06-02 00:08:57 +02:00
else
if @photo . save
flash [ :notice ] = 'Created'
format . html { redirect_to ( @photo ) }
format . xml { render :xml = > @photo }
else
format . html { render :action = > " new " }
format . xml { render :xml = > @photo . errors }
end
end
2009-05-22 21:04:41 +02:00
end
end
def edit
@photo = Photo . find ( params [ :id ] )
end
2009-06-09 00:30:22 +02:00
def edit_multiple
if params [ :album_id ]
@photos = Album . find ( params [ :album_id ] ) . photos
else
@photos = Photo . find ( params [ :photo_ids ] )
end
end
2009-05-22 21:04:41 +02:00
def update
@photo = Photo . find ( params [ :id ] )
if @photo . update_attributes ( params [ :photo ] )
2009-06-09 00:30:22 +02:00
flash [ :notice ] = " Photo updated! "
2009-05-22 21:04:41 +02:00
redirect_to @photo
else
render :action = > :edit
end
end
2009-06-09 00:30:22 +02:00
def update_multiple
2009-06-10 01:22:48 +02:00
@photos = params [ :photos ] [ :photo ]
@photos . each do | photo_id |
photo = Photo . find ( photo_id )
photo . update_attributes! ( params [ :photos ] [ :photo ] [ photo_id ] . reject { | k , v | v . blank? } )
2009-06-09 00:30:22 +02:00
end
flash [ :notice ] = " Updated photos! "
redirect_to photos_path
end
2009-05-22 21:04:41 +02:00
2009-06-02 00:08:57 +02:00
def destroy
2009-05-22 21:04:41 +02:00
@photo = Photo . find ( params [ :id ] )
2009-06-02 00:08:57 +02:00
@album = @photo . album
if @photo . destroy
redirect_to @album
2009-05-22 21:04:41 +02:00
else
redirect_to @photo
end
end
2009-05-22 14:13:46 +02:00
end