faceted_search 3.4.2 → 3.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: b750942971f7fbdc2396c41aca5c1cc755591d7f
4
- data.tar.gz: f98b703d9583718a542af64a9b1817e14652a1c7
2
+ SHA256:
3
+ metadata.gz: 7ae2e8a71d88402a509dfb5ddd82c7de29a8c18ede7d0af7a9523aa8f2eb0482
4
+ data.tar.gz: cc36ce38efdd3f1f9737a08b7a3255743f3733453ef043b4d99f15878d8aa3b8
5
5
  SHA512:
6
- metadata.gz: c4a78168975ef2706de57d3828c29c47e9595b62dc9dc00a4055a909641e4f87904c62837ae287cf26a9b64632392194c8a9d3ac8cb02a6cb5ff9eac1796010d
7
- data.tar.gz: 62c726d3f857c6da83328c44077e78e0f7f75d65a2d75fa16f5fa900fd1e539866cad10f95300bc0d59a70ad2b96edc5e5c5c63bfdb9dce77ed997244afa78eb
6
+ metadata.gz: 531b6d13e425b5bb81a44c20086fa83194cca9a1477c0959f3cc2d1fc6a2f2cc3f49a82f72ff25a5157240fac7ce21cd5c8ee4477e629f6e10e553bca09762c0
7
+ data.tar.gz: a451b716afbf7726bb9437a947e23ec2a84acd440de7b48da2a71c8225195acba8620c3e8c6ce91ef4f8bfeb8cca52d648a0cd847ece7449f4d3b910d7112190
data/README.md CHANGED
@@ -56,6 +56,15 @@ Create a model defining your facets:
56
56
  # children.order(:title)
57
57
  # }
58
58
  # }
59
+
60
+ # Other option, with searchable (SEO) categories
61
+ filter_with_full_tree :categories, {
62
+ habtm: true,
63
+ searchable: true,
64
+ path_pattern: Proc.new { |category_id|
65
+ Rails.application.routes.url_helpers.category_path(category_id)
66
+ }
67
+ }
59
68
  end
60
69
  end
61
70
 
@@ -19,10 +19,17 @@ module FacetedSearch
19
19
  end
20
20
 
21
21
  def path_for(facet, value)
22
- p = path
23
- list.each do |current_facet|
24
- p += current_facet == facet ? current_facet.path_for(value)
25
- : current_facet.path
22
+ if facet.path_pattern?
23
+ p = "#{facet.path_pattern.call(value)}#{path}"
24
+ list.each do |current_facet|
25
+ p += current_facet.path if current_facet != facet
26
+ end
27
+ else
28
+ p = path
29
+ list.each do |current_facet|
30
+ p += current_facet == facet ? current_facet.path_for(value)
31
+ : current_facet.path
32
+ end
26
33
  end
27
34
  p
28
35
  end
@@ -42,6 +49,10 @@ module FacetedSearch
42
49
  @model.table_name
43
50
  end
44
51
 
52
+ def has_params?
53
+ params.values.select(&:present?).any?
54
+ end
55
+
45
56
  protected
46
57
 
47
58
  def filter_with_text(value, options = {})
@@ -13,12 +13,24 @@ module FacetedSearch
13
13
  @options[:title] || name.to_s.humanize.titleize
14
14
  end
15
15
 
16
+ def searchable
17
+ @options[:searchable] || false
18
+ end
19
+
20
+ def path_pattern
21
+ @options[:path_pattern] || false
22
+ end
23
+
24
+ def path_pattern?
25
+ @options.has_key? :path_pattern
26
+ end
27
+
16
28
  def kind
17
29
  self.class.to_s
18
30
  end
19
31
 
20
32
  def path_for(value)
21
- "&facets[#{name}]=#{value}"
33
+ path(value)
22
34
  end
23
35
 
24
36
  def add_scope(scope)
@@ -3,12 +3,14 @@ anchor ||= ''
3
3
  reset ||= 'Reset'
4
4
  %>
5
5
 
6
- <ul class="faceted__facets-selected list-inline">
7
- <% facets.list.each do |facet| %>
8
- <% partial = "#{facet.kind.underscore}/selected" %>
9
- <%= render partial, facet: facet %>
10
- <% end %>
11
- </ul>
6
+ <% if facets.has_params? %>
7
+ <ul class="faceted__facets-selected list-inline">
8
+ <% facets.list.each do |facet| %>
9
+ <% partial = "#{facet.kind.underscore}/selected" %>
10
+ <%= render partial, facet: facet %>
11
+ <% end %>
12
+ </ul>
13
+ <% end %>
12
14
 
13
15
  <ul class="faceted__facets list-unstyled">
14
16
  <% facets.list.each do |facet| %>
@@ -16,7 +18,7 @@ reset ||= 'Reset'
16
18
  <%= render partial, facet: facet, anchor: anchor %>
17
19
  <% end %>
18
20
  <li class="faceted__facet__reinit">
19
- <a href="<%= facets.path%>">
21
+ <a href="<%= facets.path %>" rel="nofollow">
20
22
  <i class="fas fa-ban"></i>
21
23
  <%= reset %>
22
24
  </a>
@@ -0,0 +1,5 @@
1
+ <% if searchable %>
2
+ <%= link_to display_value, path %>
3
+ <% else %>
4
+ <%= link_to display_value, path, rel: 'nofollow' %>
5
+ <% end %>
@@ -1,6 +1,6 @@
1
1
  <li class=" faceted__facet-selected
2
2
  list-inline-item">
3
- <%= link_to path, class: 'badge badge-light' do %>
3
+ <%= link_to path, class: 'badge badge-light', rel: 'nofollow' do %>
4
4
  <% unless title %>
5
5
  <span class="faceted__facet-selected__title d-none">
6
6
  <%= title %>
@@ -14,9 +14,12 @@
14
14
  onclick="window.location.href='<%= path %>'"
15
15
  <%= 'checked' if selected %>
16
16
  />
17
- <%= link_to name, path %>
17
+ <%= render 'faceted_search/link',
18
+ display_value: name,
19
+ path: path,
20
+ searchable: facet.searchable %>
18
21
  </li>
19
22
  <% end %>
20
23
  </ul>
21
24
  </li>
22
- <% end %>
25
+ <% end %>
@@ -4,9 +4,12 @@
4
4
  <ol class="faceted__facet__date list-unstyled">
5
5
  <% facet.values.each do |year| %>
6
6
  <li class="faceted__facet__date__value <%= 'faceted__facet__date__value--selected' if facet.value_selected?(year) %>">
7
- <%= link_to year, facet.facets.path_for(facet, year) + anchor %>
7
+ <%= render 'faceted_search/link',
8
+ display_value: year,
9
+ path: facet.facets.path_for(facet, year) + anchor,
10
+ searchable: facet.searchable %>
8
11
  </li>
9
12
  <% end %>
10
13
  </ol>
11
14
  </li>
12
- <% end %>
15
+ <% end %>
@@ -1,11 +1,10 @@
1
1
  <% values.each do |value| %>
2
- <%
3
- display_value = facet.display_method.call(value)
4
- identifier = value.send facet.find_by
5
- path = facet.facets.path_for(facet, identifier)
6
- %>
2
+ <% identifier = value.send facet.find_by %>
7
3
  <li class="faceted__facet__full_tree__value<%= '--selected' if facet.value_selected?(identifier) %> dd-item <%= 'dd-item--selected' if facet.value_selected?(identifier) %>">
8
- <%= link_to display_value, path %>
4
+ <%= render 'faceted_search/link',
5
+ display_value: facet.display_method.call(value),
6
+ path: facet.facets.path_for(facet, identifier),
7
+ searchable: facet.searchable %>
9
8
  <% child_values = facet.values_with_parent(value.id) %>
10
9
  <% if child_values.any? %>
11
10
  <ol class="dd-list">
@@ -8,9 +8,12 @@
8
8
  display_value = facet.display_method.call(value)
9
9
  %>
10
10
  <li class="faceted__facet__list__value <%= 'faceted__facet__list__value--selected' if facet.value_selected?(identifier) %>">
11
- <%= link_to display_value, facet.facets.path_for(facet, identifier) + anchor %>
11
+ <%= render 'faceted_search/link',
12
+ display_value: display_value,
13
+ path: facet.facets.path_for(facet, identifier) + anchor,
14
+ searchable: facet.searchable %>
12
15
  </li>
13
16
  <% end %>
14
17
  </ol>
15
18
  </li>
16
- <% end %>
19
+ <% end %>
@@ -12,7 +12,10 @@
12
12
  onclick="window.location.href='<%= path %>'"
13
13
  <%= 'checked' if selected %>
14
14
  />
15
- <%= link_to identifier, path %>
15
+ <%= render 'faceted_search/link',
16
+ display_value: identifier,
17
+ path: path,
18
+ searchable: facet.searchable %>
16
19
  </li>
17
20
  <% end %>
18
21
  </ul>
@@ -9,7 +9,7 @@
9
9
  path = facet.facets.path_for(facet, identifier)
10
10
  %>
11
11
  <div class="faceted__facet__tree__back">
12
- <%= link_to path do %>
12
+ <%= link_to path, rel: 'nofollow' do %>
13
13
  <i class="fas fa-arrow-left"></i> <%= display_value %>
14
14
  <% end %>
15
15
  </div>
@@ -23,10 +23,13 @@
23
23
  path = facet.facets.path_for(facet, identifier)
24
24
  %>
25
25
  <li class="faceted__facet__tree__value">
26
- <%= link_to display_value, path %>
26
+ <%= render 'faceted_search/link',
27
+ display_value: display_value,
28
+ path: path,
29
+ searchable: facet.searchable %>
27
30
  </li>
28
31
  <% end %>
29
32
  </ol>
30
33
  </div>
31
34
  </li>
32
- <% end %>
35
+ <% end %>
@@ -1,3 +1,3 @@
1
1
  module FacetedSearch
2
- VERSION = '3.4.2'
2
+ VERSION = '3.5.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faceted_search
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.2
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arnaud Levy
@@ -10,22 +10,28 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-01-14 00:00:00.000000000 Z
13
+ date: 2021-05-27 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - "~>"
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: 5.2.0
22
+ - - "<"
20
23
  - !ruby/object:Gem::Version
21
- version: 5.2.2
24
+ version: '7'
22
25
  type: :runtime
23
26
  prerelease: false
24
27
  version_requirements: !ruby/object:Gem::Requirement
25
28
  requirements:
26
- - - "~>"
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: 5.2.0
32
+ - - "<"
27
33
  - !ruby/object:Gem::Version
28
- version: 5.2.2
34
+ version: '7'
29
35
  - !ruby/object:Gem::Dependency
30
36
  name: font-awesome-sass
31
37
  requirement: !ruby/object:Gem::Requirement
@@ -134,6 +140,7 @@ files:
134
140
  - app/models/faceted_search/facets/text.rb
135
141
  - app/models/faceted_search/facets/tree.rb
136
142
  - app/views/faceted_search/_facets.html.erb
143
+ - app/views/faceted_search/_link.html.erb
137
144
  - app/views/faceted_search/facets/_facet-selected.html.erb
138
145
  - app/views/faceted_search/facets/checkboxes/_all.html.erb
139
146
  - app/views/faceted_search/facets/checkboxes/_selected.html.erb
@@ -175,8 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
182
  - !ruby/object:Gem::Version
176
183
  version: '0'
177
184
  requirements: []
178
- rubyforge_project:
179
- rubygems_version: 2.6.11
185
+ rubygems_version: 3.1.4
180
186
  signing_key:
181
187
  specification_version: 4
182
188
  summary: Faceted search with Active Record