diff --git a/app/controllers/packages_controller.rb b/app/controllers/packages_controller.rb index ae0836c..6611b26 100644 --- a/app/controllers/packages_controller.rb +++ b/app/controllers/packages_controller.rb @@ -1,39 +1,12 @@ 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 = query_packages @packages = @packages.paginate(page: params[:page], per_page: 6) render 'packages/index-list.slim' end def grid - index + @packages = query_packages @packages = @packages.paginate(page: params[:page], per_page: 24) render 'packages/index-grid.slim' end @@ -99,4 +72,26 @@ class PackagesController < ApplicationController disposition: 'inline', status: 404 end + + # Return packages matching the criteria given by parameters + def query_packages + packages = Package.includes(:screenshots) + + # text search + if params[:search].present? + logger.debug "Searching for #{params[:search]}" + packages = packages.general_search(params[:search]) + end + + case params[:show] + when 'with' + packages = packages.with_screenshots + logger.debug 'Limiting packages to those with screenshots' + when 'without' + packages = packages.without_screenshots + logger.debug 'Limiting packages to those without screenshots' + end + + return packages + end end