faceted_search 3.4.3 → 3.5.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 314f7d56f3cee1eddd975b931bf6597a784260d705213b7f29d203729e19a72d
4
- data.tar.gz: 99322fc2a4ffe57cec1616676d31c741b5b55f4cdbb77fedf8c9b7043f2e7709
3
+ metadata.gz: bfe8502d648871cd220f592bdc95bc3f954ec25c0ac7efb9ed752bcbcb9e3c94
4
+ data.tar.gz: 34b17bd5ec9c4578a5940171c0fdcf37448856b82ecdba29f2c5d7fbc7a3af87
5
5
  SHA512:
6
- metadata.gz: f5733de35afb7c21be39278fdfca4ad9673ad0d25a4b4e2b02a1e6df288132be23cd2def72c2185412442c2b27fd33f7408d498ce575f17ba6e5505f43f82b62
7
- data.tar.gz: 014defbd9336684eef1c2be946a820355fd01daf63b0f0fb9b91790e21b2d279feaf4745b1d454d1161990b93be73d26a49e5e5a64a7a73a978015122e0f5ec0
6
+ metadata.gz: '09e691bd306610760539e6f252302b1d6a2da4fea4935cba36d3d01833a092d328e73f7290d376d42243cbf7c6f230d1c5dcea17c4a88663e963481920d6d611'
7
+ data.tar.gz: 050f629a5708c6fead7af49e8e3a655451b5fe0a4d15015f090a46f2749a2323e4864805dd008a468f92ff2a8bcea13f8cdb66d6434e9d7d5556d0a632184aee
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,11 +19,19 @@ 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
34
+ p.delete_suffix!(path) if p.end_with?(path)
27
35
  p
28
36
  end
29
37
 
@@ -13,6 +13,18 @@ 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
@@ -18,7 +18,7 @@ reset ||= 'Reset'
18
18
  <%= render partial, facet: facet, anchor: anchor %>
19
19
  <% end %>
20
20
  <li class="faceted__facet__reinit">
21
- <a href="<%= facets.path %>">
21
+ <a href="<%= facets.path %>" rel="nofollow">
22
22
  <i class="fas fa-ban"></i>
23
23
  <%= reset %>
24
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.3'
2
+ VERSION = '3.5.1'
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.3
4
+ version: 3.5.1
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-03-27 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,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
182
  - !ruby/object:Gem::Version
176
183
  version: '0'
177
184
  requirements: []
178
- rubygems_version: 3.1.2
185
+ rubygems_version: 3.1.4
179
186
  signing_key:
180
187
  specification_version: 4
181
188
  summary: Faceted search with Active Record