Modified: branches/discovery/app/controllers/application.rb (2528 => 2529)
--- branches/discovery/app/controllers/application.rb 2010-11-04 16:14:40 UTC (rev 2528)
+++ branches/discovery/app/controllers/application.rb 2010-11-08 15:44:00 UTC (rev 2529)
@@ -622,23 +622,25 @@
label_selection = nil if label_selection.empty?
checkbox_selection = nil if checkbox_selection.empty?
- label_uri = build_url(params, opts, [:filter, :order, :filter_query], filter[:query_option] => label_selection, "page" => nil)
+ label_uri = build_url(params, opts, [:filter, :order], filter[:query_option] => label_selection, "page" => nil)
- checkbox_uri = build_url(params, opts, [:filter, :order, :filter_query], filter[:query_option] => checkbox_selection, "page" => nil)
+ checkbox_uri = build_url(params, opts, [:filter, :order], filter[:query_option] => checkbox_selection, "page" => nil)
- label = object.filter_label
+ label = object.filter_label.clone
label = visible_name(label) if filter[:visible_name]
label = label.capitalize if filter[:capitalize]
+ plain_label = object.filter_label
+
if params[:filter_query]
label.sub!(Regexp.new("(#{params[:filter_query]})", Regexp::IGNORECASE), '<b>\1</b>')
- puts "new label = #{label}"
end
{
:object => object,
:value => value,
:label => label,
+ :plain_label => plain_label,
:count => object.filter_count,
:checkbox_uri => checkbox_uri,
:label_uri => label_uri,
@@ -687,7 +689,7 @@
end
end
- [ filters, cancel_filter_query_url ]
+ [filters, cancel_filter_query_url]
end
# apply locked filters
@@ -760,24 +762,25 @@
next if opts[:lock_filter] && opts[:lock_filter][filter[:query_option]]
+ current = params[filter[:query_option]] ? params[filter[:query_option]].split(',') : []
+
selected = filter[:objects].select do |x| x[:selected] end
+ current = selected.map do |x| x[:value] end
if selected.length > 0
if params[filter[:query_option]]
- selected_labels = selected.map do |x| x[:label] end
+ selected_labels = selected.map do |x|
+ x[:plain_label] + ' <a href="" + url_for(build_url(params, opts,
+ [:filter, :filter_query, :order], {
+ filter[:query_option] => (current - [x[:value]]).join(",") } )) +
+ '">' + " <img src='' /></a>"
- if selected_labels.length > 1
- sentence = selected_labels[0..-2].join(", ") + " or " + selected_labels[-1]
- else
- sentence = selected_labels[0]
end
- summary << '<span class="filter-in-use"><a href="" +
- url_for(build_url(params, opts, [:filter, :filter_query, :order],
- { filter[:query_option] => nil } )) +
- '"><b>' + filter[:title].capitalize + "</b>: " + sentence +
- " <img src='' /></a></span> "
+ bits = selected_labels.map do |label| label end.join(" <i>or</i> ")
+
+ summary << '<span class="filter-in-use"><b>' + filter[:title].capitalize + "</b>: " + bits + "</span> "
end
end
end
Modified: branches/discovery/app/views/content/_index.rhtml (2528 => 2529)
--- branches/discovery/app/views/content/_index.rhtml 2010-11-04 16:14:40 UTC (rev 2528)
+++ branches/discovery/app/views/content/_index.rhtml 2010-11-08 15:44:00 UTC (rev 2529)
@@ -1,12 +1,8 @@
<div class="pivot">
<div class="left">
- <% if @pivot[:reset_filters_url] %>
- <div class="reset_filters"><%= link_to("Reset filters", @pivot[:reset_filters_url]) -%></div>
- <% end %>
- <% if false %>
+ <div class="category">Search filter terms</div>
<div class="search_filters">
<form action="" url_for(request.query_parameters) -%>" method="GET">
- <div>Search filters:</div>
<div class="filter_search_box">
<input class="query" name="filter_query" value="<%= params[:filter_query] -%>" />
<% @pivot[:filter_query_url].each do |key, value| %>
@@ -21,25 +17,33 @@
</div>
</form>
</div>
- <% end %>
<div class="filters">
<% @pivot[:filters].each do |filter| %>
- <div class="toggle_filter_query">
- <img src="" />
+ <% query_name = "#{filter[:query_option]}_query" %>
+ <% if @pivot[:cancel_filter_query_url] %>
+ <div class="category"><%= filter[:title].capitalize -%> results</div>
+ <% else %>
+ <div class="category">Filter by <%= filter[:title] -%></div>
+ <% end %>
+ <div id="<%= query_name -%>" style="display: <%= @pivot[:cancel_filter_query_url] ? "block" : "none" -%>">
</div>
- <div class="category">Filter by <%= filter[:title] -%></div>
<div class="filter">
<div class="options">
<% filter[:objects].each do |object| %>
<div<%= object[:selected] ? ' class="selected"' : '' -%>>
<input class='checkbox' type='checkbox' <% if object[:selected] %> checked='checked' <% end %> />
- <%= link_to("<div class='count'>#{object[:count]}</div> <div class='label'><span class='truncate'>#{object[:label]}</span></div>", object[:label_uri]) -%>
+ <%= link_to("<div class='count'>#{object[:count]}</div> <div class='label' title='#{h(object[:plain_label])}'><span class='truncate'>#{object[:label]}</span></div>", object[:label_uri]) -%>
</div>
<% end %>
</div>
</div>
<% end %>
</div>
+ <% if @pivot[:cancel_filter_query_url] && @pivot[:filters].empty? %>
+ <div class="no-filter-query-results">
+ Your search did not match any filter terms.
+ </div>
+ <% end %>
</div>
<div class="main">
<div class="sort">
@@ -64,10 +68,23 @@
<% if @pivot[:summary].length > 0 %>
<div class="crumbs"><%= @pivot[:summary] -%></div>
<% end %>
+ <% if @pivot[:reset_filters_url] %>
+ <div class="reset_filters"><%= link_to("Remove all filters", @pivot[:reset_filters_url]) -%></div>
+ <% end %>
</div>
- <div class="results">
- <%= render :partial => "contributions/list", :locals => { :collection => @pivot[:results], :table => true } %>
- </div>
+ <% if @pivot[:results].empty? %>
+ <div class="no-results">
+ <% if @pivot[:summary].length > 0 %>
+ Your search did not produce any results. Try broadening your search by removing filter terms.
+ <% else %>
+ There are no results to show in this category.
+ <% end %>
+ </div>
+ <% else %>
+ <div class="results">
+ <%= render :partial => "contributions/list", :locals => { :collection => @pivot[:results], :table => true } %>
+ </div>
+ <% end %>
<div>
<%= render :partial => "layouts/paginate", :locals => { :collection => @pivot[:results], :sort_by => @pivot_options[:order], :num_options => @pivot_options[:num_options] } %>
</div>
Modified: branches/discovery/public/stylesheets/styles.css (2528 => 2529)
--- branches/discovery/public/stylesheets/styles.css 2010-11-04 16:14:40 UTC (rev 2528)
+++ branches/discovery/public/stylesheets/styles.css 2010-11-08 15:44:00 UTC (rev 2529)
@@ -2062,9 +2062,14 @@
clear: right;
background: #f0f0f0;
border: 1px solid #d8d8d8;
- padding: 4px;
+ padding: 8px;
}
+.pivot .summary DIV {
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+}
+
.pivot .sort {
float: right;
}
@@ -2101,6 +2106,14 @@
background: #d0d0f0;
}
+.pivot .options > DIV.selected {
+ background: #ffe0c0;
+}
+
+.pivot .options > DIV.selected:hover {
+ background: #dfc0a0;
+}
+
.pivot .options > DIV:first-child {
border-top-left-radius: 6px;
border-top-right-radius: 6px;
@@ -2142,7 +2155,7 @@
}
.pivot .filter-in-use A {
- padding-left: 4px;
+ padding-left: 0px;
padding-right: 4px;
text-decoration: none; /* no underline */
}
@@ -2154,7 +2167,7 @@
}
.pivot .filter-in-use:hover {
- background: #f0d0d0;
+/* background: #f0d0d0; */
}
.pivot .pagination {
@@ -2185,7 +2198,21 @@
top: -1px;
}
+.result-count {
+}
+
.truncate {
white-space: nowrap;
}
+.no-filter-query-results {
+ padding-top: 1em;
+ font-style: italic;
+}
+
+.pivot .no-results {
+ padding-top: 2em;
+ padding-bottom: 2em;
+ font-style: italic;
+}
+