blacklight_facet_extras 0.0.1pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +93 -0
- data/Rakefile +5 -0
- data/VERSION +1 -0
- data/app/views/catalog/_facet_limit.html.erb +35 -0
- data/app/views/catalog/_facet_partials/_pivot.html.erb +47 -0
- data/app/views/catalog/_facet_partials/_query.html.erb +35 -0
- data/app/views/catalog/_facet_partials/_range.html.erb +40 -0
- data/app/views/catalog/_hierarchical_constraints_element.html.erb +39 -0
- data/assets/javascripts/blacklight_facet_extras.js +0 -0
- data/assets/stylesheets/blacklight_facet_extras.css +0 -0
- data/blacklight_facet_extras.gemspec +24 -0
- data/lib/blacklight_facet_extras/controller_extension.rb +9 -0
- data/lib/blacklight_facet_extras/engine.rb +14 -0
- data/lib/blacklight_facet_extras/facet_item.rb +11 -0
- data/lib/blacklight_facet_extras/filter/controller_extension.rb +19 -0
- data/lib/blacklight_facet_extras/filter/view_helper_extension.rb +18 -0
- data/lib/blacklight_facet_extras/filter.rb +4 -0
- data/lib/blacklight_facet_extras/hierarchy/controller_extension.rb +39 -0
- data/lib/blacklight_facet_extras/hierarchy/view_helper_extension.rb +43 -0
- data/lib/blacklight_facet_extras/hierarchy.rb +6 -0
- data/lib/blacklight_facet_extras/pivot/controller_extension.rb +35 -0
- data/lib/blacklight_facet_extras/pivot/view_helper_extension.rb +53 -0
- data/lib/blacklight_facet_extras/pivot.rb +19 -0
- data/lib/blacklight_facet_extras/query/controller_extension.rb +41 -0
- data/lib/blacklight_facet_extras/query/view_helper_extension.rb +24 -0
- data/lib/blacklight_facet_extras/query.rb +4 -0
- data/lib/blacklight_facet_extras/range/controller_extension.rb +43 -0
- data/lib/blacklight_facet_extras/range/view_helper_extension.rb +39 -0
- data/lib/blacklight_facet_extras/range.rb +19 -0
- data/lib/blacklight_facet_extras/route_sets.rb +3 -0
- data/lib/blacklight_facet_extras/tag/controller_extension.rb +41 -0
- data/lib/blacklight_facet_extras/tag/view_helper_extension.rb +3 -0
- data/lib/blacklight_facet_extras/tag.rb +4 -0
- data/lib/blacklight_facet_extras/version.rb +10 -0
- data/lib/blacklight_facet_extras/view_helper_extension.rb +14 -0
- data/lib/blacklight_facet_extras.rb +34 -0
- metadata +105 -0
data/README.rdoc
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
BlacklightFacetExtras: Blacklight plugin that exposes Solr facet parameters (range, query, tagging + exclusions, etc) to Blacklight
|
2
|
+
|
3
|
+
= Description
|
4
|
+
|
5
|
+
BlacklightFacetExtras adds some ugly parsing and manipulating to the Blacklight solr configuration and solr parameter parsing, but seems to get the job done, more or less.
|
6
|
+
|
7
|
+
= Requirements
|
8
|
+
|
9
|
+
A Rails app using the Blacklight plugin (tested against post-version 2.7).
|
10
|
+
|
11
|
+
= Installation
|
12
|
+
|
13
|
+
This is a plugin, not a gem (because the structure was copied from existing plugins; in theory, it should be possible to make this a gem in the future).
|
14
|
+
|
15
|
+
A couple different ways to get the source into your vendor/plugins directory.
|
16
|
+
|
17
|
+
Go into your application directory, and run:
|
18
|
+
|
19
|
+
./script/plugin install git://github.com/cbeer/blacklight_facet_extras.git
|
20
|
+
|
21
|
+
Later you can run ./script/plugin update blacklight_facet_extras if you like.
|
22
|
+
|
23
|
+
Requires git installed on your system. There are other ways to get the plugin in there too.
|
24
|
+
|
25
|
+
OR
|
26
|
+
cd $your_app/vendor/plugins
|
27
|
+
git clone git://github.com/cbeer/blacklight_facet_extras.git
|
28
|
+
|
29
|
+
= Configuration
|
30
|
+
|
31
|
+
config[:facets] = {
|
32
|
+
:field_names => [
|
33
|
+
"format",
|
34
|
+
"dc_date_year_i",
|
35
|
+
"timestamp_query",
|
36
|
+
"author"
|
37
|
+
],
|
38
|
+
:labels => {
|
39
|
+
"format" => "display_partial",
|
40
|
+
"dc_date_year_i" => "Year",
|
41
|
+
"timestamp_query" => "Published"
|
42
|
+
}
|
43
|
+
:rangex => {
|
44
|
+
"dc_date_year_i" => { # turns dc_date_year_i into a range facet
|
45
|
+
:start => 1940,
|
46
|
+
:end => 2010,
|
47
|
+
:gap => 10
|
48
|
+
}
|
49
|
+
},
|
50
|
+
:tag => {
|
51
|
+
"format" => { # turns format into a OR'ed set of facets
|
52
|
+
:ex => "format"
|
53
|
+
}
|
54
|
+
},
|
55
|
+
:query => {
|
56
|
+
"timestamp_query" => { # the facet "Published" may contain two values, the results of these queries:
|
57
|
+
'this week' => 'timestamp:[NOW-7DAY TO *]'
|
58
|
+
'this week' => 'timestamp:[NOW-1MONTH TO *]'
|
59
|
+
}
|
60
|
+
},
|
61
|
+
:pivot => {
|
62
|
+
"author" => ["author", "title"]
|
63
|
+
},
|
64
|
+
:filter => {
|
65
|
+
"subject" => lambda { |value| value =~ /--/ },
|
66
|
+
"date" => lambda { |value| Chronic.parse(value) rescue value }
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
== Injection
|
71
|
+
|
72
|
+
This plugin assumes it is in a Blacklight Rails app, uses Blacklight methods, Rails methods, and standard ruby module includes to inject it's behaviors into the app.
|
73
|
+
|
74
|
+
You can turn off this injection if you like, although it will make the plugin less (or non-) functional unless you manually do similar injection. See lib/blacklight_facet_extras.rb#inject! to see exactly what's going on.
|
75
|
+
|
76
|
+
In any initializer, you can set:
|
77
|
+
|
78
|
+
BlacklightFacetExtras.omit_inject = true
|
79
|
+
|
80
|
+
to turn off all injection. The plugin will be completely non-functional if you do this, of course. But perhaps you could try to re-use some of it's classes in a non-Blacklight, highly hacked Blacklight, or even non-Rails application this way.
|
81
|
+
|
82
|
+
You can also turn off injection of individual components, which could be more useful:
|
83
|
+
|
84
|
+
BlacklightFacetExtras.omit_inject = {
|
85
|
+
:view_helpers => false,
|
86
|
+
:controller_mixin => false
|
87
|
+
}
|
88
|
+
|
89
|
+
= Tests
|
90
|
+
|
91
|
+
There are none. This is bad I know, sorry.
|
92
|
+
|
93
|
+
|
data/Rakefile
ADDED
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.1pre1
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<%- # required to pass in local :solr_field
|
2
|
+
# optional :display_heading parameter, sometimes set to false
|
3
|
+
# by plugins that might re-use this inside something else.
|
4
|
+
display_heading = true unless local_assigns.has_key?(:display_heading)
|
5
|
+
-%>
|
6
|
+
|
7
|
+
<% display_facet = facet_values_for(solr_field) %>
|
8
|
+
<% if display_facet && display_facet.items.length > 0 %>
|
9
|
+
<% if display_heading %>
|
10
|
+
<h3><%= facet_field_labels[solr_field] -%></h3>
|
11
|
+
<% end %>
|
12
|
+
<ul>
|
13
|
+
<% paginator =
|
14
|
+
Blacklight::Solr::FacetPaginator.new(display_facet.items,
|
15
|
+
:limit => facet_limit_for(solr_field))
|
16
|
+
%>
|
17
|
+
|
18
|
+
<% paginator.items.each do |item| -%>
|
19
|
+
<li>
|
20
|
+
<% if facet_in_params?( solr_field, item.value ) %>
|
21
|
+
<%= render_selected_facet_value(solr_field, item) %>
|
22
|
+
<% else %>
|
23
|
+
<%= render_facet_value(solr_field, item) %>
|
24
|
+
<% end -%>
|
25
|
+
</li>
|
26
|
+
|
27
|
+
<% end %>
|
28
|
+
|
29
|
+
<% if(paginator.has_next?) %>
|
30
|
+
<li class="more_facets_link"><%= link_to('more »', params.merge(:id => solr_field, :action=>"facet"), :class => "more_facets_link") %></li>
|
31
|
+
<% end %>
|
32
|
+
|
33
|
+
</ul>
|
34
|
+
|
35
|
+
<% end %>
|
@@ -0,0 +1,47 @@
|
|
1
|
+
<%- # required to pass in local :solr_field
|
2
|
+
# optional :display_heading parameter, sometimes set to false
|
3
|
+
# by plugins that might re-use this inside something else.
|
4
|
+
display_heading = true unless local_assigns.has_key?(:display_heading)
|
5
|
+
-%>
|
6
|
+
|
7
|
+
<% display_facet = solr_pivot_to_a(solr_field) %>
|
8
|
+
<% if display_facet && display_facet.items.length > 0 %>
|
9
|
+
<% if display_heading %>
|
10
|
+
<h3><%= facet_field_labels[solr_field] -%></h3>
|
11
|
+
<% end %>
|
12
|
+
<ul>
|
13
|
+
<% paginator =
|
14
|
+
Blacklight::Solr::FacetPaginator.new(display_facet.items,
|
15
|
+
:limit => facet_limit_for(solr_field))
|
16
|
+
%>
|
17
|
+
<% paginator.items.each do |item| -%>
|
18
|
+
<li>
|
19
|
+
<% if facet_in_params?( solr_field, item.value ) %>
|
20
|
+
<%= render_selected_facet_value(solr_field, item) %>
|
21
|
+
<% else %>
|
22
|
+
<%= render_facet_value(solr_field, item) %>
|
23
|
+
<% end -%>
|
24
|
+
|
25
|
+
<% if item.facets.length > 0 %>
|
26
|
+
<ul>
|
27
|
+
<% item.facets.each do |pivot| %>
|
28
|
+
<li>
|
29
|
+
<% if facet_in_params?( pivot.field, pivot.value ) %>
|
30
|
+
<%= render_selected_facet_value(pivot.field, pivot) %>
|
31
|
+
<% else %>
|
32
|
+
<%= render_facet_value(pivot.field, pivot) %>
|
33
|
+
<% end -%>
|
34
|
+
</li>
|
35
|
+
<% end %>
|
36
|
+
</ul>
|
37
|
+
<% end %>
|
38
|
+
</li>
|
39
|
+
<% end %>
|
40
|
+
|
41
|
+
<% if(paginator.has_next?) %>
|
42
|
+
<li class="more_facets_link"><%= link_to('more »', params.merge(:id => solr_field, :action=>"facet"), :class => "more_facets_link") %></li>
|
43
|
+
<% end %>
|
44
|
+
|
45
|
+
</ul>
|
46
|
+
<% end %>
|
47
|
+
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<%- # required to pass in local :solr_field
|
2
|
+
# optional :display_heading parameter, sometimes set to false
|
3
|
+
# by plugins that might re-use this inside something else.
|
4
|
+
display_heading = true unless local_assigns.has_key?(:display_heading)
|
5
|
+
-%>
|
6
|
+
|
7
|
+
<% display_facet = solr_query_to_a(solr_field) %>
|
8
|
+
<% if display_facet && display_facet.items.length > 0 %>
|
9
|
+
<% if display_heading %>
|
10
|
+
<h3><%= facet_field_labels[solr_field] -%></h3>
|
11
|
+
<% end %>
|
12
|
+
<ul>
|
13
|
+
<% paginator =
|
14
|
+
Blacklight::Solr::FacetPaginator.new(display_facet.items,
|
15
|
+
:limit => facet_limit_for(solr_field))
|
16
|
+
%>
|
17
|
+
|
18
|
+
<% paginator.items.each do |item| -%>
|
19
|
+
<li>
|
20
|
+
<% if facet_in_params?( solr_field, item.value ) %>
|
21
|
+
<%= render_selected_facet_value(solr_field, item) %>
|
22
|
+
<% else %>
|
23
|
+
<%= render_facet_value(solr_field, item) %>
|
24
|
+
<% end -%>
|
25
|
+
</li>
|
26
|
+
|
27
|
+
<% end %>
|
28
|
+
|
29
|
+
<% if(paginator.has_next?) %>
|
30
|
+
<li class="more_facets_link"><%= link_to('more »', params.merge(:id => solr_field, :action=>"facet"), :class => "more_facets_link") %></li>
|
31
|
+
<% end %>
|
32
|
+
|
33
|
+
</ul>
|
34
|
+
|
35
|
+
<% end %>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<%- # required to pass in local :solr_field
|
2
|
+
# optional :display_heading parameter, sometimes set to false
|
3
|
+
# by plugins that might re-use this inside something else.
|
4
|
+
display_heading = true unless local_assigns.has_key?(:display_heading)
|
5
|
+
-%>
|
6
|
+
|
7
|
+
<% display_facet = solr_range_to_a(solr_field) %>
|
8
|
+
<% if (display_facet && display_facet.items.length > 0) or (params[:f] and params[:f][solr_field]) %>
|
9
|
+
<% if display_heading %>
|
10
|
+
<h3><%= facet_field_labels[solr_field] -%></h3>
|
11
|
+
<% end %>
|
12
|
+
<ul>
|
13
|
+
<% paginator =
|
14
|
+
Blacklight::Solr::FacetPaginator.new(display_facet.items,
|
15
|
+
:limit => facet_limit_for(solr_field))
|
16
|
+
%>
|
17
|
+
|
18
|
+
<% params[:f][solr_field].select { |x| x =~ /\[(\d+) TO (\d+)\]/ }.map { |x| r = x.scan(/\[(\d+) TO (\d+)\]/).first; BlacklightFacetExtras::Range::FacetItem.new("#{r.first} - #{r.last}", @response.total, { :from => r.first, :to => r.last}) }.each do |item| -%>
|
19
|
+
<li>
|
20
|
+
<%= render_selected_facet_value(solr_field, item) %>
|
21
|
+
</li>
|
22
|
+
<% end if params[:f] and params[:f][solr_field] -%>
|
23
|
+
<% paginator.items.each do |item| -%>
|
24
|
+
<li>
|
25
|
+
<% if facet_in_params?( solr_field, item.value ) %>
|
26
|
+
<%= render_selected_facet_value(solr_field, item) %>
|
27
|
+
<% else %>
|
28
|
+
<%= render_facet_value(solr_field, item) %>
|
29
|
+
<% end -%>
|
30
|
+
</li>
|
31
|
+
|
32
|
+
<% end %>
|
33
|
+
|
34
|
+
<% if(paginator.has_next?) %>
|
35
|
+
<li class="more_facets_link"><%= link_to('more »', params.merge(:id => solr_field, :action=>"facet"), :class => "more_facets_link") %></li>
|
36
|
+
<% end %>
|
37
|
+
|
38
|
+
</ul>
|
39
|
+
|
40
|
+
<% end %>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<%- # local params:
|
2
|
+
# label
|
3
|
+
# value
|
4
|
+
# options =>
|
5
|
+
# :remove => url for a remove constraint link
|
6
|
+
# :classes => array of classes to add to container span
|
7
|
+
options ||= {}
|
8
|
+
options[:escape_label] = true unless options.has_key?(:escape_label)
|
9
|
+
options[:escape_value] = true unless options.has_key?(:escape_value)
|
10
|
+
-%>
|
11
|
+
|
12
|
+
<span class="appliedFilter constraint <%= options[:classes].join(" ") if options[:classes] %>">
|
13
|
+
<%- unless label.blank? -%>
|
14
|
+
<span class="filterName"><%= options[:escape_label] ? h(label) : label %></span>
|
15
|
+
<%- end -%>
|
16
|
+
|
17
|
+
<% asdf = [] %>
|
18
|
+
<% value.split("/").each do |v| %>
|
19
|
+
<%- unless v.blank? -%>
|
20
|
+
<span class="filterValue"><%= options[:escape_value] ? h(v) : v %></span>
|
21
|
+
<%- end -%>
|
22
|
+
<%- unless options[:remove].blank? -%>
|
23
|
+
<% accessible_remove_label =
|
24
|
+
if label.blank?
|
25
|
+
"Remove constraint #{options[:escape_value] ? h(v) : v}"
|
26
|
+
else
|
27
|
+
"Remove constraint #{options[:escape_value] ? h(v) : v}: #{options[:escape_value] ? h(v) : v}"
|
28
|
+
end
|
29
|
+
%>
|
30
|
+
<%= link_to(accessible_remove_label,
|
31
|
+
options[:remove].gsub(/=(#{Regexp.escape(CGI::escape(asdf.join("/")))})[^&]+/, "=#{CGI::escape(asdf.join("/"))}"), # FIXME: Ugh.
|
32
|
+
:class=>'btnRemove imgReplace',
|
33
|
+
:alt=>'remove'
|
34
|
+
) %>
|
35
|
+
<% asdf << v %>
|
36
|
+
<% end %>
|
37
|
+
<%- end -%>
|
38
|
+
</span>
|
39
|
+
|
File without changes
|
File without changes
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.join(File.dirname(__FILE__), "lib/blacklight_facet_extras/version")
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "blacklight_facet_extras"
|
6
|
+
s.version = BlacklightFacetExtras::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.authors = ["Chris Beer"]
|
9
|
+
s.email = ["chris_beer@wgbh.org"]
|
10
|
+
s.homepage = "http://projectblacklight.org/"
|
11
|
+
s.summary = "Blacklight facet extras plugin"
|
12
|
+
|
13
|
+
s.rubyforge_project = "blacklight"
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
|
21
|
+
s.add_dependency "rails", "~> 3.0"
|
22
|
+
s.add_dependency "blacklight"
|
23
|
+
end
|
24
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'blacklight'
|
2
|
+
require 'blacklight_facet_extras'
|
3
|
+
require 'rails'
|
4
|
+
|
5
|
+
module BlacklightFacetExtras
|
6
|
+
class Engine < Rails::Engine
|
7
|
+
config.to_prepare do
|
8
|
+
unless BlacklightFacetExtras.omit_inject[:routes]
|
9
|
+
Blacklight::Routes.send(:include, BlacklightFacetExtras::RouteSets)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# Meant to be applied on top of a controller that implements
|
2
|
+
# Blacklight::SolrHelper. Will inject filter limiting behaviors
|
3
|
+
# to solr parameters creation.
|
4
|
+
module BlacklightFacetExtras::Filter::ControllerExtension
|
5
|
+
def self.included(some_class)
|
6
|
+
some_class.send :include,BlacklightFacetExtras::ControllerExtension
|
7
|
+
some_class.helper_method :facet_filter_config
|
8
|
+
some_class.helper BlacklightFacetExtras::Filter::ViewHelperExtension
|
9
|
+
end
|
10
|
+
def facet_filter_config(solr_field)
|
11
|
+
config = blacklight_filter_config[solr_field] || false
|
12
|
+
config = {} if config == true
|
13
|
+
config
|
14
|
+
end
|
15
|
+
|
16
|
+
def blacklight_filter_config
|
17
|
+
Blacklight.config[:facet][:filter] || {}
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module BlacklightFacetExtras::Filter::ViewHelperExtension
|
2
|
+
def facet_values_for(solr_field)
|
3
|
+
config = facet_filter_config(solr_field)
|
4
|
+
facet_field = super(solr_field)
|
5
|
+
return facet_field unless config
|
6
|
+
|
7
|
+
items = facet_field.items.map do |i|
|
8
|
+
value = config.call(i.value)
|
9
|
+
value = i.value if value === true
|
10
|
+
next unless value
|
11
|
+
BlacklightFacetExtras::FacetItem.new(i.value, i.hits, :display_label => value)
|
12
|
+
end
|
13
|
+
|
14
|
+
facet_field.items.replace(items)
|
15
|
+
|
16
|
+
facet_field
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# Meant to be applied on top of a controller that implements
|
2
|
+
# Blacklight::SolrHelper. Will inject hierarchy limiting behaviors
|
3
|
+
# to solr parameters creation.
|
4
|
+
module BlacklightFacetExtras::Hierarchy::ControllerExtension
|
5
|
+
def self.included(some_class)
|
6
|
+
some_class.send :include,BlacklightFacetExtras::ControllerExtension
|
7
|
+
some_class.helper_method :facet_hierarchy_config
|
8
|
+
some_class.helper_method :blacklight_hierarchy_config
|
9
|
+
some_class.solr_search_params_logic << :add_hierarchy_facets_to_solr
|
10
|
+
some_class.helper BlacklightFacetExtras::Hierarchy::ViewHelperExtension
|
11
|
+
end
|
12
|
+
def add_hierarchy_facets_to_solr(solr_parameters, user_parameters)
|
13
|
+
blacklight_hierarchy_config.each do |k, config|
|
14
|
+
|
15
|
+
fq = (solr_parameters[:fq] || []).select { |x| x.starts_with? "{!raw f=#{k}}" }.first.to_s
|
16
|
+
|
17
|
+
value = fq.gsub("{!raw f=#{k}}", "")
|
18
|
+
solr_parameters[:fq].delete(fq)
|
19
|
+
|
20
|
+
if value.blank?
|
21
|
+
solr_parameters[:"f.#{k}.facet.prefix"] ||= "1/"
|
22
|
+
else
|
23
|
+
solr_parameters[:fq] << "{!raw f=#{k}}#{value.count("/") + 1}/#{value}"
|
24
|
+
solr_parameters[:"f.#{k}.facet.prefix"] ||= "#{value.count("/") + 2}/#{value}/"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
solr_parameters
|
29
|
+
end
|
30
|
+
def facet_hierarchy_config(solr_field)
|
31
|
+
config = blacklight_hierarchy_config[solr_field] || false
|
32
|
+
config = {} if config == true
|
33
|
+
config
|
34
|
+
end
|
35
|
+
|
36
|
+
def blacklight_hierarchy_config
|
37
|
+
Blacklight.config[:facet][:hierarchy] || {}
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module BlacklightFacetExtras::Hierarchy::ViewHelperExtension
|
2
|
+
def facet_values_for(solr_field)
|
3
|
+
config = facet_hierarchy_config(solr_field)
|
4
|
+
facet_field = super(solr_field)
|
5
|
+
return facet_field unless config
|
6
|
+
|
7
|
+
items = facet_field.items.map do |i|
|
8
|
+
value = i.value.split('/').last
|
9
|
+
BlacklightFacetExtras::FacetItem.new(i.value.split("/", 2).last, i.hits, :display_label => value)
|
10
|
+
end
|
11
|
+
|
12
|
+
facet_field.items.replace(items)
|
13
|
+
|
14
|
+
facet_field
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_facet_params field, value
|
18
|
+
p = super(field, value)
|
19
|
+
p[:f][field] = [p[:f][field].last] if facet_hierarchy_config(field)
|
20
|
+
p
|
21
|
+
end
|
22
|
+
|
23
|
+
def remove_facet_params(field, value, source_params=params)
|
24
|
+
p = super(field, value, source_params)
|
25
|
+
|
26
|
+
if facet_hierarchy_config(field)
|
27
|
+
hierarchy = value.split("/")
|
28
|
+
hierarchy.pop
|
29
|
+
unless hierarchy.empty?
|
30
|
+
p[:f][field] ||= []
|
31
|
+
p[:f][field] << hierarchy.join("/")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
p
|
35
|
+
end
|
36
|
+
|
37
|
+
def render_constraint_element(label, value, options = {})
|
38
|
+
return super(label, value, options) unless options[:classes].any? { |x| blacklight_hierarchy_config.keys.map { |y| "filter-#{y.parameterize}" }.include? x }
|
39
|
+
|
40
|
+
return ''.html_safe if value.blank?
|
41
|
+
render(:partial => "catalog/hierarchical_constraints_element", :locals => {:label => label, :value => value, :options => options})
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
|
2
|
+
# Meant to be applied on top of a controller that implements
|
3
|
+
# Blacklight::SolrHelper. Will inject pivot limiting behaviors
|
4
|
+
# to solr parameters creation.
|
5
|
+
module BlacklightFacetExtras::Pivot::ControllerExtension
|
6
|
+
def self.included(some_class)
|
7
|
+
some_class.send :include,BlacklightFacetExtras::ControllerExtension
|
8
|
+
some_class.helper_method :facet_pivot_config
|
9
|
+
some_class.solr_search_params_logic << :add_pivot_facets_to_solr
|
10
|
+
some_class.helper BlacklightFacetExtras::Pivot::ViewHelperExtension
|
11
|
+
end
|
12
|
+
def add_pivot_facets_to_solr(solr_parameters, user_parameters)
|
13
|
+
|
14
|
+
blacklight_pivot_config.each do |k, config|
|
15
|
+
solr_parameters[:"facet.field"].select { |x| x == k }.each do |x|
|
16
|
+
solr_parameters[:"facet.field"].delete x
|
17
|
+
end if solr_parameters[:"facet.field"]
|
18
|
+
|
19
|
+
solr_parameters[:"facet.pivot"] ||= []
|
20
|
+
solr_parameters[:"facet.pivot"] << config.join(",")
|
21
|
+
end
|
22
|
+
|
23
|
+
solr_parameters
|
24
|
+
end
|
25
|
+
|
26
|
+
def facet_pivot_config(solr_field)
|
27
|
+
config = blacklight_pivot_config[solr_field] || false
|
28
|
+
config = {} if config == true
|
29
|
+
config
|
30
|
+
end
|
31
|
+
|
32
|
+
def blacklight_pivot_config
|
33
|
+
Blacklight.config[:facet][:pivot] || {}
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module BlacklightFacetExtras::Pivot::ViewHelperExtension
|
2
|
+
|
3
|
+
def render_facet_limit(solr_field)
|
4
|
+
config = facet_pivot_config(solr_field)
|
5
|
+
if ( config )
|
6
|
+
render(:partial => "catalog/_facet_partials/pivot", :locals=> {:solr_field => solr_field })
|
7
|
+
else
|
8
|
+
super(solr_field)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
def solr_pivot_to_a(solr_field)
|
12
|
+
config = facet_pivot_config(solr_field)
|
13
|
+
return RSolr::Ext::Response::Facets::FacetField.new(solr_field, []) unless config and @response and @response["facet_counts"] and @response["facet_counts"]["facet_pivot"] and @response["facet_counts"]["facet_pivot"]
|
14
|
+
|
15
|
+
arr = []
|
16
|
+
pivot_field = config.join(",")
|
17
|
+
|
18
|
+
data = @response["facet_counts"]["facet_pivot"][pivot_field]
|
19
|
+
return RSolr::Ext::Response::Facets::FacetField.new(solr_field, []) unless data
|
20
|
+
|
21
|
+
data.each do |parent|
|
22
|
+
item = BlacklightFacetExtras::Pivot::FacetItem.new(parent['value'], parent['count'], :field => solr_field)
|
23
|
+
|
24
|
+
item.facets ||= []
|
25
|
+
parent['pivot'].each do |child|
|
26
|
+
label = child['value'].split(" / ").last
|
27
|
+
|
28
|
+
|
29
|
+
item.facets << BlacklightFacetExtras::Pivot::FacetItem.new(child['value'], child['count'], :display_label => label, :field => child['field'], :parent => item)
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
arr << item
|
34
|
+
end
|
35
|
+
|
36
|
+
RSolr::Ext::Response::Facets::FacetField.new(solr_field, arr)
|
37
|
+
end
|
38
|
+
|
39
|
+
def render_facet_value(facet_solr_field, item, options ={})
|
40
|
+
if item.is_a? BlacklightFacetExtras::Pivot::FacetItem
|
41
|
+
p = add_facet_params_and_redirect(item.field || facet_solr_field, item.value)
|
42
|
+
|
43
|
+
if item.parent
|
44
|
+
p[:f][item.parent.field] ||= []
|
45
|
+
p[:f][item.parent.field].push(item.parent.value)
|
46
|
+
end
|
47
|
+
|
48
|
+
(link_to_unless(options[:suppress_link], item.display_label || item.value , p, :class=>"facet_select label") + " " + render_facet_count(item.hits)).html_safe
|
49
|
+
else
|
50
|
+
super(facet_solr_field, item, options ={})
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module BlacklightFacetExtras::Pivot
|
2
|
+
autoload :ControllerExtension, 'blacklight_facet_extras/pivot/controller_extension'
|
3
|
+
autoload :ViewHelperExtension, 'blacklight_facet_extras/pivot/view_helper_extension'
|
4
|
+
class FacetItem < RSolr::Ext::Response::Facets::FacetItem
|
5
|
+
attr_accessor :display_label
|
6
|
+
attr_accessor :facets
|
7
|
+
attr_accessor :field
|
8
|
+
attr_accessor :parent
|
9
|
+
|
10
|
+
def initialize value, hits, opts = {}
|
11
|
+
super(value, hits)
|
12
|
+
@display_label = opts[:display_label]
|
13
|
+
@field = opts[:field]
|
14
|
+
@parent = opts[:parent]
|
15
|
+
@facets = opts[:facets]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
# Meant to be applied on top of a controller that implements
|
3
|
+
# Blacklight::SolrHelper. Will inject query limiting behaviors
|
4
|
+
# to solr parameters creation.
|
5
|
+
module BlacklightFacetExtras::Query::ControllerExtension
|
6
|
+
def self.included(some_class)
|
7
|
+
some_class.send :include,BlacklightFacetExtras::ControllerExtension
|
8
|
+
some_class.solr_search_params_logic << :add_query_facets_to_solr
|
9
|
+
some_class.helper_method :facet_query_config
|
10
|
+
some_class.helper BlacklightFacetExtras::Query::ViewHelperExtension
|
11
|
+
end
|
12
|
+
def add_query_facets_to_solr(solr_parameters, user_parameters)
|
13
|
+
blacklight_query_config.each do |k, config|
|
14
|
+
solr_parameters[:fq].select { |x| x.starts_with?("{!raw f=#{k}}") }.each do |x|
|
15
|
+
v = solr_parameters[:fq].delete x
|
16
|
+
value = v.gsub("{!raw f=#{k}}", "")
|
17
|
+
value = config[value] if config[value]
|
18
|
+
solr_parameters[:fq] << value
|
19
|
+
end if solr_parameters[:fq]
|
20
|
+
|
21
|
+
solr_parameters[:"facet.field"].select { |x| x == k }.each do |x|
|
22
|
+
solr_parameters[:"facet.field"].delete x
|
23
|
+
end if solr_parameters[:"facet.field"]
|
24
|
+
|
25
|
+
solr_parameters[:"facet.query"] ||= []
|
26
|
+
config.each do |label, query|
|
27
|
+
solr_parameters[:"facet.query"] << query
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def facet_query_config(solr_field)
|
33
|
+
config = blacklight_query_config[solr_field] || false
|
34
|
+
config = {} if config == true
|
35
|
+
config
|
36
|
+
end
|
37
|
+
|
38
|
+
def blacklight_query_config
|
39
|
+
Blacklight.config[:facet][:query] || {}
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module BlacklightFacetExtras::Query::ViewHelperExtension
|
2
|
+
|
3
|
+
def render_facet_limit(solr_field)
|
4
|
+
config = facet_query_config(solr_field)
|
5
|
+
if ( config )
|
6
|
+
render(:partial => "catalog/_facet_partials/query", :locals=> {:solr_field => solr_field })
|
7
|
+
else
|
8
|
+
super(solr_field)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def solr_query_to_a(solr_field)
|
13
|
+
config = facet_query_config(solr_field)
|
14
|
+
return RSolr::Ext::Response::Facets::FacetField.new(solr_field, []) unless config and @response and @response["facet_counts"] and @response["facet_counts"]["facet_queries"] and @response["facet_counts"]["facet_queries"]
|
15
|
+
|
16
|
+
arr = []
|
17
|
+
config.each do |display_label, query|
|
18
|
+
next unless @response["facet_counts"]["facet_queries"][query] and @response["facet_counts"]["facet_queries"][query] > 0 and @response["facet_counts"]["facet_queries"][query] < @response.total
|
19
|
+
arr << RSolr::Ext::Response::Facets::FacetItem.new(display_label,@response["facet_counts"]["facet_queries"][query])
|
20
|
+
end
|
21
|
+
|
22
|
+
RSolr::Ext::Response::Facets::FacetField.new(solr_field, arr)
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
|
2
|
+
# Meant to be applied on top of a controller that implements
|
3
|
+
# Blacklight::SolrHelper. Will inject range limiting behaviors
|
4
|
+
# to solr parameters creation.
|
5
|
+
module BlacklightFacetExtras::Range::ControllerExtension
|
6
|
+
def self.included(some_class)
|
7
|
+
some_class.send :include,BlacklightFacetExtras::ControllerExtension
|
8
|
+
some_class.solr_search_params_logic << :add_range_facets_to_solr
|
9
|
+
some_class.helper_method :facet_range_config
|
10
|
+
some_class.helper BlacklightFacetExtras::Range::ViewHelperExtension
|
11
|
+
end
|
12
|
+
def add_range_facets_to_solr(solr_parameters, user_parameters)
|
13
|
+
solr_parameters['facet.range.other'] = 'all'
|
14
|
+
blacklight_range_config.each do |k, config|
|
15
|
+
solr_parameters['facet.range'] = k
|
16
|
+
|
17
|
+
solr_parameters[:fq] ||= []
|
18
|
+
fq = solr_parameters[:fq].select { |x| x.starts_with?("{!raw f=#{k}}") and x =~ /\[.* TO .*\]/ }.map { |x| solr_parameters[:fq].delete(x) }.map { |x| x.gsub("{!raw f=#{k}}", "") }.map { |x| x.scan(/\[(.*) TO (.*)\]/).first }
|
19
|
+
|
20
|
+
range_start = fq.map { |x| x.first }.max
|
21
|
+
range_end = fq.map { |x| x.last }.min
|
22
|
+
range_gap = ((range_end.to_i - range_start.to_i) / (facet_limit_for(k) || 10)) if range_start and range_end
|
23
|
+
|
24
|
+
|
25
|
+
solr_parameters["f.#{k}.facet.range.start"] = range_start || config[:start]
|
26
|
+
solr_parameters["f.#{k}.facet.range.end"] = range_end || config[:end]
|
27
|
+
solr_parameters["f.#{k}.facet.range.gap"] = range_gap || config[:gap]
|
28
|
+
solr_parameters["f.#{k}.facet.mincount"] = config[:mincount] if config[:mincount]
|
29
|
+
|
30
|
+
solr_parameters[:fq] << "#{k}:[#{range_start} TO #{range_end}]" if range_start and range_end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def facet_range_config(solr_field)
|
35
|
+
config = blacklight_range_config[solr_field] || false
|
36
|
+
config = {} if config == true
|
37
|
+
config
|
38
|
+
end
|
39
|
+
|
40
|
+
def blacklight_range_config
|
41
|
+
Blacklight.config[:facet][:rangex] || {}
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module BlacklightFacetExtras::Range::ViewHelperExtension
|
2
|
+
|
3
|
+
def render_facet_limit(solr_field)
|
4
|
+
config = facet_range_config(solr_field)
|
5
|
+
if ( config )
|
6
|
+
render(:partial => "catalog/_facet_partials/range", :locals=> {:solr_field => solr_field })
|
7
|
+
else
|
8
|
+
super(solr_field)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
def solr_range_to_a(solr_field)
|
12
|
+
config = facet_range_config(solr_field)
|
13
|
+
return RSolr::Ext::Response::Facets::FacetField.new(solr_field,[]) unless config and @response and @response["facet_counts"] and @response["facet_counts"]["facet_ranges"] and @response["facet_counts"]["facet_ranges"][solr_field]
|
14
|
+
|
15
|
+
data = @response["facet_counts"]["facet_ranges"][solr_field]
|
16
|
+
|
17
|
+
arr = []
|
18
|
+
|
19
|
+
arr << BlacklightFacetExtras::Range::FacetItem.new("before", data[:before], :from => '*', :to => data[:start]) if data[:before] > 0
|
20
|
+
|
21
|
+
last = 0
|
22
|
+
range = data[:counts].each_slice(2).map { |value, hits| BlacklightFacetExtras::Range::FacetItem.new(value,hits) }
|
23
|
+
|
24
|
+
if range.length > 1
|
25
|
+
|
26
|
+
range.each_cons(2) do |item, peek|
|
27
|
+
item.from = item.value
|
28
|
+
item.to = peek.value
|
29
|
+
item.display_label = "#{item.from} - #{item.to}"
|
30
|
+
arr << item
|
31
|
+
end
|
32
|
+
|
33
|
+
arr << range.last.tap { |x| x.from = x.value; x.to = data[:end]; x.display_label = "#{x.from} - #{x.to}" }
|
34
|
+
end
|
35
|
+
|
36
|
+
arr << BlacklightFacetExtras::Range::FacetItem.new("after", data[:after], :from => data[:end], :to => '*') if data[:after] > 0
|
37
|
+
RSolr::Ext::Response::Facets::FacetField.new(solr_field, arr)
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module BlacklightFacetExtras::Range
|
2
|
+
autoload :ControllerExtension, 'blacklight_facet_extras/range/controller_extension'
|
3
|
+
autoload :ViewHelperExtension, 'blacklight_facet_extras/range/view_helper_extension'
|
4
|
+
class FacetItem < BlacklightFacetExtras::FacetItem
|
5
|
+
attr_accessor :from, :to
|
6
|
+
|
7
|
+
def initialize value, hits, opts = {}
|
8
|
+
super(value, hits, opts = {})
|
9
|
+
@from = opts[:from]
|
10
|
+
@to = opts[:to]
|
11
|
+
end
|
12
|
+
|
13
|
+
def value
|
14
|
+
return"[#{self.from} TO #{self.to}]" if self.from and self.to
|
15
|
+
super
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
# Meant to be applied on top of a controller that implements
|
3
|
+
# Blacklight::SolrHelper. Will inject tag limiting behaviors
|
4
|
+
# to solr parameters creation.
|
5
|
+
module BlacklightFacetExtras::Tag::ControllerExtension
|
6
|
+
def self.included(some_class)
|
7
|
+
some_class.send :include,BlacklightFacetExtras::ControllerExtension
|
8
|
+
some_class.solr_search_params_logic << :add_tag_facets_to_solr
|
9
|
+
some_class.helper_method :facet_tag_config
|
10
|
+
some_class.helper BlacklightFacetExtras::Tag::ViewHelperExtension
|
11
|
+
end
|
12
|
+
def add_tag_facets_to_solr(solr_parameters, user_parameters)
|
13
|
+
blacklight_tag_config.each do |k, config|
|
14
|
+
|
15
|
+
|
16
|
+
values = []
|
17
|
+
if solr_parameters[:fq]
|
18
|
+
solr_parameters[:fq].select { |x| x.starts_with?("{!raw f=#{k}}") }.each do |x|
|
19
|
+
values << solr_parameters[:fq].delete(x)
|
20
|
+
end
|
21
|
+
solr_parameters[:fq] << "{!tag=#{config[:ex]}} #{values.map { |x| "_query_:\"#{x}\""}.join(" OR ") }" unless values.empty?
|
22
|
+
end
|
23
|
+
|
24
|
+
solr_parameters[:"facet.field"].each_with_index.select { |value, index| value == k }.each do |value, index|
|
25
|
+
solr_parameters[:"facet.field"][index] = "{!ex=#{config[:ex]}}#{value}"
|
26
|
+
end if solr_parameters[:"facet.field"]
|
27
|
+
end
|
28
|
+
|
29
|
+
solr_parameters
|
30
|
+
end
|
31
|
+
|
32
|
+
def facet_tag_config(solr_field)
|
33
|
+
config = blacklight_tag_config[solr_field] || false
|
34
|
+
config = {} if config == true
|
35
|
+
config
|
36
|
+
end
|
37
|
+
|
38
|
+
def blacklight_tag_config
|
39
|
+
Blacklight.config[:facet][:tag] || {}
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module BlacklightFacetExtras::ViewHelperExtension
|
2
|
+
def render_facet_value(facet_solr_field, item, options ={})
|
3
|
+
if item.respond_to? :display_label
|
4
|
+
(link_to_unless(options[:suppress_link], item.display_label || item.value , add_facet_params_and_redirect(facet_solr_field, item.value), :class=>"facet_select label") + " " + render_facet_count(item.hits)).html_safe
|
5
|
+
else
|
6
|
+
super(facet_solr_field, item, options ={})
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def facet_values_for(solr_field)
|
11
|
+
@response.facets.detect {|f| f.name == solr_field}
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# BlacklightFacetExtras
|
2
|
+
|
3
|
+
module BlacklightFacetExtras
|
4
|
+
autoload :ControllerExtension, 'blacklight_facet_extras/controller_extension'
|
5
|
+
autoload :ViewHelperExtension, 'blacklight_facet_extras/view_helper_extension'
|
6
|
+
autoload :RouteSets, 'blacklight_facet_extras/route_sets'
|
7
|
+
|
8
|
+
autoload :FacetItem, 'blacklight_facet_extras/facet_item'
|
9
|
+
autoload :Filter, 'blacklight_facet_extras/filter'
|
10
|
+
autoload :Hierarchy, 'blacklight_facet_extras/hierarchy'
|
11
|
+
autoload :Pivot, 'blacklight_facet_extras/pivot'
|
12
|
+
autoload :Range, 'blacklight_facet_extras/range'
|
13
|
+
autoload :Query, 'blacklight_facet_extras/query'
|
14
|
+
autoload :Tag, 'blacklight_facet_extras/tag'
|
15
|
+
|
16
|
+
require 'blacklight_facet_extras/version'
|
17
|
+
require 'blacklight_facet_extras/engine'
|
18
|
+
|
19
|
+
@omit_inject = {}
|
20
|
+
def self.omit_inject=(value)
|
21
|
+
value = Hash.new(true) if value == true
|
22
|
+
@omit_inject = value
|
23
|
+
end
|
24
|
+
def self.omit_inject ; @omit_inject ; end
|
25
|
+
|
26
|
+
def self.inject!
|
27
|
+
end
|
28
|
+
|
29
|
+
# Add element to array only if it's not already there
|
30
|
+
def self.safe_arr_add(array, element)
|
31
|
+
array << element unless array.include?(element)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: blacklight_facet_extras
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1pre1
|
5
|
+
prerelease: 5
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Chris Beer
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-09-06 00:00:00.000000000 -04:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rails
|
17
|
+
requirement: &2153125440 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ~>
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3.0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: *2153125440
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: blacklight
|
28
|
+
requirement: &2153124860 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: *2153124860
|
37
|
+
description:
|
38
|
+
email:
|
39
|
+
- chris_beer@wgbh.org
|
40
|
+
executables: []
|
41
|
+
extensions: []
|
42
|
+
extra_rdoc_files: []
|
43
|
+
files:
|
44
|
+
- README.rdoc
|
45
|
+
- Rakefile
|
46
|
+
- VERSION
|
47
|
+
- app/views/catalog/_facet_limit.html.erb
|
48
|
+
- app/views/catalog/_facet_partials/_pivot.html.erb
|
49
|
+
- app/views/catalog/_facet_partials/_query.html.erb
|
50
|
+
- app/views/catalog/_facet_partials/_range.html.erb
|
51
|
+
- app/views/catalog/_hierarchical_constraints_element.html.erb
|
52
|
+
- assets/javascripts/blacklight_facet_extras.js
|
53
|
+
- assets/stylesheets/blacklight_facet_extras.css
|
54
|
+
- blacklight_facet_extras.gemspec
|
55
|
+
- lib/blacklight_facet_extras.rb
|
56
|
+
- lib/blacklight_facet_extras/controller_extension.rb
|
57
|
+
- lib/blacklight_facet_extras/engine.rb
|
58
|
+
- lib/blacklight_facet_extras/facet_item.rb
|
59
|
+
- lib/blacklight_facet_extras/filter.rb
|
60
|
+
- lib/blacklight_facet_extras/filter/controller_extension.rb
|
61
|
+
- lib/blacklight_facet_extras/filter/view_helper_extension.rb
|
62
|
+
- lib/blacklight_facet_extras/hierarchy.rb
|
63
|
+
- lib/blacklight_facet_extras/hierarchy/controller_extension.rb
|
64
|
+
- lib/blacklight_facet_extras/hierarchy/view_helper_extension.rb
|
65
|
+
- lib/blacklight_facet_extras/pivot.rb
|
66
|
+
- lib/blacklight_facet_extras/pivot/controller_extension.rb
|
67
|
+
- lib/blacklight_facet_extras/pivot/view_helper_extension.rb
|
68
|
+
- lib/blacklight_facet_extras/query.rb
|
69
|
+
- lib/blacklight_facet_extras/query/controller_extension.rb
|
70
|
+
- lib/blacklight_facet_extras/query/view_helper_extension.rb
|
71
|
+
- lib/blacklight_facet_extras/range.rb
|
72
|
+
- lib/blacklight_facet_extras/range/controller_extension.rb
|
73
|
+
- lib/blacklight_facet_extras/range/view_helper_extension.rb
|
74
|
+
- lib/blacklight_facet_extras/route_sets.rb
|
75
|
+
- lib/blacklight_facet_extras/tag.rb
|
76
|
+
- lib/blacklight_facet_extras/tag/controller_extension.rb
|
77
|
+
- lib/blacklight_facet_extras/tag/view_helper_extension.rb
|
78
|
+
- lib/blacklight_facet_extras/version.rb
|
79
|
+
- lib/blacklight_facet_extras/view_helper_extension.rb
|
80
|
+
has_rdoc: true
|
81
|
+
homepage: http://projectblacklight.org/
|
82
|
+
licenses: []
|
83
|
+
post_install_message:
|
84
|
+
rdoc_options: []
|
85
|
+
require_paths:
|
86
|
+
- lib
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - ! '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>'
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: 1.3.1
|
99
|
+
requirements: []
|
100
|
+
rubyforge_project: blacklight
|
101
|
+
rubygems_version: 1.6.2
|
102
|
+
signing_key:
|
103
|
+
specification_version: 3
|
104
|
+
summary: Blacklight facet extras plugin
|
105
|
+
test_files: []
|