debshots/app/controllers/packages_controller.rb

77 lines
2 KiB
Ruby

class PackagesController < ApplicationController
def index
@packages = Package.includes(:screenshots)
if params[:query]
@packages = @packages.text_search(params[:query])
end
unless params[:search].blank?
logger.debug "Searching for #{params[:search]}"
@packages = @packages.general_search(params[:search])
end
# Limit the packages to those that have approved screenshots.
# Also eager-load the screenshots.
if params[:show]=='onlywith'
@packages = @packages.where("screenshots.approved"=>true)
end
if params[:show]=='with'
@packages = @packages.with_screenshots
logger.debug 'Limiting packages to those with screenshots'
elsif params[:show]=='without'
@packages = @packages.without_screenshots
logger.debug 'Limiting packages to those without screenshots'
end
end
def list
index
@packages = @packages.paginate(page: params[:page], per_page: 6)
render 'packages/index-list.slim'
end
def grid
index
@packages = @packages.paginate(page: params[:page], per_page: 24)
render 'packages/index-grid.slim'
end
def details
@package = Package.find_by(name: params[:name])
end
def moderate
# TODO
end
def upload
raise "name not given" unless params[:name]
@package = Package.find_by(name: params[:name])
end
def upload_image
# raise
#render text: params[:image].to_json
#render text: params.to_json
@package = Package.find_by(name: params[:name])
# @new_screenshot = @package.screenshots.create(image: params[:image])
params[:screenshot][:image].each do |img|
@package.screenshots.create(image: img)
end
#raise
#@package.save
#new_screenshot.image = params[:image]
#render text: "File has been uploaded successfully"
redirect_to package_path
end
def delete_screenshot
@screenshot = Screenshot.find_by(id: params[:id])
@screenshot.destroy
redirect_to package_path
end
end