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]) @packages = @packages.text_search(params[:query])
end end
#if params[:with_screenshots]=='yes' # Limit the packages to those that have approved screenshots.
# # Limit the packages to those that have approved screenshots. # Also eager-load the screenshots.
# # Also eager-load the screenshots. if params[:show]=='onlywith'
@packages = @packages.where("screenshots.approved"=>true) @packages = @packages.where("screenshots.approved"=>true)
#end end
@packages = @packages.page(params[:page]).per(12) @packages = @packages.page(params[:page]).per(12)
end end

View file

@ -3,21 +3,30 @@
Debian Screenshots Debian Screenshots
</a> </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"> <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') %> maxlength:200, class:'form-control') %>
</div> <button type="submit" class="btn btn-default">Submit</button> </div> <button type="submit" class="btn btn-default">Submit</button>
<%= hidden_field_tag('show', params['show']) %>
<% end %> <!-- /form --> <% end %> <!-- /form -->
<div class="navbar-nav btn-group">
<!-- Button group for grid/list view --> <!-- Button group for grid/list view -->
<%= link_to url_for(package_grid_path), {class:"navbar-btn btn btn-default"} do %> <span class="navbar-text">View:</span>
Grid <div class="navbar-nav btn-group">
<% end %> <%= link_to 'Grid', url_for(package_grid_path),
<%= link_to url_for(package_list_path), {class:"navbar-btn btn btn-default"} do %> {class: 'navbar-btn btn btn-default' + (params['display']=='grid' ? ' active' : '')} %>
List <%= link_to 'List', url_for(package_list_path),
<% end %> {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> </div>
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
@ -27,13 +36,17 @@
<div class="container"> <div class="container">
<ul class="pager"> <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>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> </ul>
<% if params[:display]=='grid' %> <% if params[:display]=='grid' %>
<%= render "packages_search_results_grid", object: @packages %> <%= render 'packages_search_results_grid', object: @packages %>
<% else %> <% else %>
<%= render "packages_search_results_list", object: @packages %> <%= render 'packages_search_results_list', object: @packages %>
<% end %> <% end %>
</div> </div>
<pre>
<%= params %>
</pre>

View file

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