Files
fetsite/app/controllers/galleries_controller.rb
Thomas Blazek 9c6038d6dd Gallery show enhancements
a) Worked on better pagination, knows now 25, 50, 100  and "all"
b) Viewer always shows ALL pictures, sorted to fit the order of the
pagination
2015-01-16 12:10:02 +01:00

122 lines
3.6 KiB
Ruby

class GalleriesController < ApplicationController
before_filter {@toolbar_elements=[]}
load_and_authorize_resource
# GET /galleries
# GET /galleries.json
def index
@galleries = Gallery.all
@toolbar_elements << {:hicon => 'icon-plus', :text => I18n.t('fotos.new-gallery'), :path => new_gallery_path } if can? :new, Gallery
respond_to do |format|
format.html # index.html.erb
format.json { render json: @galleries }
end
end
# GET /galleries/1
# GET /galleries/1.json
def show
@gallery = Gallery.find(params[:id])
@pppage_array = [ 25 , 50 , 100, "all"] #defines number & size of picture chunks
@pppage = 0 #starting index of pppage_array
if !params[:pppage].nil? && params[:pppage].to_i <= 2 && params[:pppage].to_i >= 0
@pppage = params[:pppage].to_i
end
@page = params[:page].nil? ? 1 : params[:page].to_i
# @fotos = Foto.where(:gallery_id => params[:id]).limit(@pppage_array[@pppage]).offset(@pppage_array[@pppage]*(@page-1))
@fotos = Foto.where(:gallery_id => params[:id])
if @pppage_array[@pppage] != "all"
@fotos_p = @fotos.page(@page).per(@pppage_array[@pppage])
@fotos_n = @fotos- @fotos_p
@foto_ind = @fotos.find_index(@fotos_p.first)
@fotos_n = @fotos_n.rotate(@foto_ind)
@pages = (Foto.where(:gallery_id => params[:id]).count/(@pppage_array[@pppage])+1)
else
@fotos_p = @fotos
@fotos_n = []
@pages = 1
end
@showind=[]
# Hier ausrechnen welche angezeigt werden sollen
@toolbar_elements << {:hicon=>'icon-plus', :text=> I18n.t('fotos.new-fotos'), :path=>new_gallery_foto_path(@gallery)}
@toolbar_elements << {:hicon=>'icon-pencil', :text => I18n.t('common.edit'), :path=>edit_gallery_path(@gallery)}
@toolbar_elements << {:hicon=>'icon-arrow-left', :text=>I18n.t('common.back'), :path=>galleries_path()}
respond_to do |format|
format.html # show.html.erb
format.json { render json: @gallery }
end
end
# GET /galleries/new
# GET /galleries/new.json
def new
@gallery = Gallery.new
@foto = Foto.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @gallery }
end
end
# GET /galleries/1/edit
def edit
@gallery = Gallery.find(params[:id])
@fotos_old = @gallery.fotos
end
# POST /galleries
# POST /galleries.json
def create
@gallery = Gallery.new(params[:gallery])
@foto = Foto.new
respond_to do |format|
if @gallery.save
format.html { redirect_to @gallery, notice: 'Gallery was successfully created.' }
format.json { render json: @gallery, status: :created, location: @gallery }
else
format.html { render action: "new" }
format.json { render json: @gallery.errors, status: :unprocessable_entity }
end
end
end
# PUT /galleries/1
# PUT /galleries/1.json
def update
@gallery = Gallery.find(params[:id])
@foto = Foto.new
respond_to do |format|
if @gallery.update_attributes(params[:gallery])
Foto.where(:gallery_id=>nil).each do |tbd|
tbd.destroy
end
format.html { redirect_to @gallery, notice: 'Gallery was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @gallery.errors, status: :unprocessable_entity }
end
end
end
# DELETE /galleries/1
# DELETE /galleries/1.json
def destroy
@gallery = Gallery.find(params[:id])
@gallery.destroy
respond_to do |format|
format.html { redirect_to galleries_url }
format.json { head :no_content }
end
end
end