Search query and display selection kept across pages and searches

This commit is contained in:
Christoph Haas 2013-11-17 01:07:27 +01:00
parent dead80eb5e
commit 8e9ff1ef80
3 changed files with 38 additions and 25 deletions

View file

@ -6,11 +6,11 @@ class PackagesController < ApplicationController
@packages = @packages.text_search(params[:query])
end
#if params[:with_screenshots]=='yes'
# # Limit the packages to those that have approved screenshots.
# # Also eager-load the screenshots.
# 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
end
@packages = @packages.page(params[:page]).per(12)
end

View file

@ -3,21 +3,30 @@
Debian Screenshots
</a>
<%= form_tag(url_for, method: "get", class: "navbar-form navbar-left form-search", role: "search") do %>
<%= form_tag(url_for, method: 'get', class: 'navbar-form navbar-left form-search', role: 'search') do %>
<div class="form-group">
<%= search_field_tag('query', nil, placeholder:'Search...', size:30,
<%= search_field_tag('query', params['query'], placeholder:'Search...', size:30,
maxlength:200, class:'form-control') %>
</div> <button type="submit" class="btn btn-default">Submit</button>
<%= hidden_field_tag('show', params['show']) %>
<% end %> <!-- /form -->
<div class="navbar-nav btn-group">
<!-- Button group for grid/list view -->
<%= link_to url_for(package_grid_path), {class:"navbar-btn btn btn-default"} do %>
Grid
<% end %>
<%= link_to url_for(package_list_path), {class:"navbar-btn btn btn-default"} do %>
List
<% end %>
<span class="navbar-text">View:</span>
<div class="navbar-nav btn-group">
<%= link_to 'Grid', url_for(package_grid_path),
{class: 'navbar-btn btn btn-default' + (params['display']=='grid' ? ' active' : '')} %>
<%= link_to 'List', url_for(package_list_path),
{class: 'navbar-btn btn btn-default' + (params['display']=='grid' ? '' : ' active')} %>
</div>
<!-- Button group to show packages with screenshots or all packages -->
<span class="navbar-text">Show:</span>
<div class="navbar-nav btn-group">
<%= link_to 'All packages', url_for(params.merge(:show=>'all')),
{class: 'navbar-btn btn btn-default' + (params['show']=='onlywith' ? '' : ' active')} %>
<%= link_to 'Only with screenshots', url_for(params.merge(:show=>'onlywith')),
{class: 'navbar-btn btn btn-default' + (params['show']=='onlywith' ? ' active' : '')} %>
</div>
<ul class="nav navbar-nav navbar-right">
@ -27,13 +36,17 @@
<div class="container">
<ul class="pager">
<li class="previous"><%= link_to_previous_page @packages, raw('&larr; Previous') %></li>
<li class="previous"><%= link_to_previous_page @packages, raw('&larr; Previous'), :params => params %></li>
<li>Page #<%= params[:page] or 1 %></li>
<li class="next"><%= link_to_next_page @packages, raw('Next &rarr;') %></li>
<li class="next"><%= link_to_next_page @packages, raw('Next &rarr;'), :params => params %></li>
</ul>
<% if params[:display]=='grid' %>
<%= render "packages_search_results_grid", object: @packages %>
<%= render 'packages_search_results_grid', object: @packages %>
<% else %>
<%= render "packages_search_results_list", object: @packages %>
<%= render 'packages_search_results_list', object: @packages %>
<% end %>
</div>
<pre>
<%= params %>
</pre>

View file

@ -2,20 +2,20 @@ Debshots::Application.routes.draw do
#get "packages/index"
#get "packages" => "packages#index"
#get "packages/:page/:display" => "packages#index"
#get "packages(/:page(/:display))" => "packages#index", defaults: { page: 1, display: 'grid' }
get "packages/list" => "packages#index", display: 'list', as: :package_list
get "packages" => "packages#index", display: 'grid', as: :package_grid
get 'packages' => 'packages#index', defaults: { display: 'grid' }, as: :package_list
#get "packages/list" => "packages#index", display: 'list', as: :package_list
get 'packages' => 'packages#index', display: 'grid', as: :package_grid
#get "packages(/:display)", to: "packages#index", defaults: { display: 'grid' }
get "packages/with_screenshots"
get "packages/without_screenshots"
get "packages/moderate"
get "welcome/index"
get 'packages/with_screenshots'
get 'packages/without_screenshots'
get 'packages/moderate'
get 'welcome/index'
# The priority is based upon order of creation: first created -> highest priority.
# See how all your routes lay out with "rake routes".
# You can have the root of your site routed with "root"
# root 'welcome#index'
root to: "packages#index"
root to: 'packages#index'
# Example of regular route:
# get 'products/:id' => 'catalog#view'