<% params = request.params.except(:action, :controller, :model_name) query = params[:query] filter = params[:filter] sort = params[:sort] sort_reverse = params[:sort_reverse] filters_exist = !@properties.select{|property| property[:type] == :boolean}.empty? %> <div id="content-main"> <ul class="object-tools"> <li> <%= link_to("Add #{@abstract_model.pretty_name.downcase}", url(:merb_admin_new, :model_name => @abstract_model.singular_name), :class => "addlink") %> </li> </ul> <div class="<%= filters_exist ? "module filtered" : "module" %>" id="changelist"> <div id="toolbar"> <form id="changelist-search" action="" method="get"> <div> <label for="searchbar"><img src="<%= image_path("icon_searchbox.png") %>" alt="Search" /></label> <input type="text" size="40" name="query" value="<%= query %>" id="searchbar" /> <input type="submit" value="Search" /> <% if query || filter %> <span class="small quiet"><%= @record_count %> <%= @record_count == 1 ? "result" : "results" %> (<%= link_to("#{@abstract_model.count} total", "?") %>)</span> <% end %> <% if filter %> <% filter.each do |name, value| %> <input type="hidden" name="filter[<%= name %>]" value="<%= value %>"/> <% end %> <% end %> </div> </form> </div> <script type="text/javascript">document.getElementById("searchbar").focus();</script> <% if filters_exist %> <div id="changelist-filter"> <h2>Filter</h2> <% @properties.each do |property| %> <% property_type = property[:type] %> <% property_name = property[:name] %> <% property_pretty_name = property[:pretty_name] %> <% if property_type == :boolean %> <h3>By <%= property_pretty_name %></h3> <ul> <li class="<%= filter.nil? || filter[property_name].blank? ? "selected" : nil %>"> <%= link_to("All", "?" + Merb::Parse.params_to_query_string(params.merge(:filter => (filter || {}).reject{|key, value| key.to_sym == property_name}))) %> </li> <li class="<%= filter && filter[property_name] == "true" ? "selected" : nil %>"> <%= link_to("Yes", "?" + Merb::Parse.params_to_query_string(params.merge(:filter => (filter || {}).merge({property_name => "true"})))) %> </li> <li class="<%= filter && filter[property_name] == "false" ? "selected" : nil %>"> <%= link_to("No", "?" + Merb::Parse.params_to_query_string(params.merge(:filter => (filter || {}).merge({property_name => "false"})))) %> </li> </ul> <% end %> <% end %> </div> <% end %> <table cellspacing="0"> <thead> <tr> <% @properties.each do |property| %> <% property_name = property[:name] %> <% property_pretty_name = property[:pretty_name] %> <th class="<%= sort == property_name.to_s ? sort_reverse ? "sorted descending" : "sorted ascending" : nil %>"> <%= link_to(property_pretty_name, "?" + Merb::Parse.params_to_query_string(params.merge(:sort => property_name).reject{|key, value| key.to_sym == :sort_reverse}.merge(sort == property_name.to_s && sort_reverse != "true" ? {:sort_reverse => "true"} : {}))) %> </th> <% end %> </tr> </thead> <tbody> <% @objects.each_with_index do |object, index| %> <tr class="row<%= index % 2 == 0 ? "1" : "2" %>"> <% @properties.each do |property| %> <td> <%= link_to(object_property(object, property), url(:merb_admin_edit, :model_name => @abstract_model.singular_name, :id => object.id)) %> </td> <% end %> </tr> <% end %> </tbody> </table> <p class="paginator"> <% if @page_count.to_i > 1 %> <%= paginate(@current_page, @page_count, :url => "?" + Merb::Parse.params_to_query_string(params)) %> <% end %> <%= @record_count %> <%= @record_count == 1 ? @abstract_model.pretty_name.downcase : @abstract_model.pretty_name.downcase.pluralize %> <% if @page_count.to_i == 2 %> <%= link_to("Show all", "?" + Merb::Parse.params_to_query_string(params.merge(:all => true)), :class => "showall") %> <% end %> </p> </div> </div> <br class="clear" />