decidim-core 0.12.0.pre → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/commands/decidim/search.rb +2 -0
- data/app/controllers/decidim/searches_controller.rb +1 -1
- data/app/views/decidim/pages/home/_highlighted_content_banner.html.erb +1 -1
- data/app/views/decidim/searches/_results.html.erb +1 -1
- data/app/views/decidim/searches/index.html.erb +6 -0
- data/config/locales/es-PY.yml +668 -0
- data/config/locales/fr.yml +25 -25
- data/config/locales/ru.yml +28 -27
- data/config/locales/uk.yml +21 -21
- data/db/migrate/20180613080638_rename_missing_features_to_components.rb +15 -0
- data/lib/decidim/core.rb +1 -1
- data/lib/decidim/core/engine.rb +1 -0
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/has_private_users.rb +1 -1
- data/lib/decidim/resourceable.rb +22 -0
- data/lib/decidim/search_resource_fields_mapper.rb +25 -0
- data/lib/decidim/searchable.rb +37 -10
- metadata +24 -8
data/lib/decidim/searchable.rb
CHANGED
@@ -18,11 +18,16 @@ module Decidim
|
|
18
18
|
|
19
19
|
included do
|
20
20
|
has_many :searchable_resources, class_name: "Decidim::SearchableResource", inverse_of: :resource, foreign_key: :resource_id, dependent: :destroy
|
21
|
-
after_create
|
22
|
-
after_update :update_index_for_search_resource
|
21
|
+
# after_create and after_update callbacks are dynamically setted in `searchable_fields` method.
|
23
22
|
|
24
|
-
# Public: after_create callback to index the model as a SearchableResource.
|
23
|
+
# Public: after_create callback to index the model as a SearchableResource, if configured so.
|
25
24
|
#
|
25
|
+
def try_add_to_index_as_search_resource
|
26
|
+
return unless self.class.search_resource_fields_mapper.index_on_create?(self)
|
27
|
+
add_to_index_as_search_resource
|
28
|
+
end
|
29
|
+
|
30
|
+
# Forces the model to be indexed for the first time.
|
26
31
|
def add_to_index_as_search_resource
|
27
32
|
fields = self.class.search_resource_fields_mapper.mapped(self)
|
28
33
|
fields[:i18n].keys.each do |locale|
|
@@ -32,10 +37,18 @@ module Decidim
|
|
32
37
|
|
33
38
|
# Public: after_update callback to update index information of the model.
|
34
39
|
#
|
35
|
-
def
|
36
|
-
|
37
|
-
|
38
|
-
|
40
|
+
def try_update_index_for_search_resource
|
41
|
+
if self.class.search_resource_fields_mapper.index_on_update?(self)
|
42
|
+
if searchable_resources.empty?
|
43
|
+
add_to_index_as_search_resource
|
44
|
+
else
|
45
|
+
fields = self.class.search_resource_fields_mapper.mapped(self)
|
46
|
+
searchable_resources.each do |sr|
|
47
|
+
sr.update(contents_to_searchable_resource_attributes(fields, sr.locale))
|
48
|
+
end
|
49
|
+
end
|
50
|
+
elsif searchable_resources.any?
|
51
|
+
searchable_resources.clear
|
39
52
|
end
|
40
53
|
end
|
41
54
|
|
@@ -66,8 +79,8 @@ module Decidim
|
|
66
79
|
@search_resource_indexable_fields
|
67
80
|
end
|
68
81
|
|
69
|
-
# Declares the searchable fields for this instance.
|
70
|
-
#
|
82
|
+
# Declares the searchable fields for this instance and, optionally, some conditions.
|
83
|
+
# `declared_fields` must be a Hash that follow the following format:
|
71
84
|
# {
|
72
85
|
# scope_id: { scope: :id },
|
73
86
|
# participatory_space: { feature: :participatory_space },
|
@@ -76,9 +89,23 @@ module Decidim
|
|
76
89
|
# C: :somehow_relevant_field,
|
77
90
|
# D: [:description, :address]
|
78
91
|
# }
|
79
|
-
|
92
|
+
#
|
93
|
+
# `conditions` must be a Hash that only accepts a boolean or a Proc that will be evaluated on runtime and returns a boolean for the following keys:
|
94
|
+
# - index_on_create: Whether to index, or not, the current searchabe when it is created. Defaults to true.
|
95
|
+
# - index_on_update: Whether to index, or not, the current searchabe when it is updated. Defaults to true.
|
96
|
+
#
|
97
|
+
def searchable_fields(declared_fields, conditions = {})
|
80
98
|
@search_resource_indexable_fields = SearchResourceFieldsMapper.new(declared_fields)
|
81
99
|
Decidim::Searchable.searchable_resources[name] = self unless Decidim::Searchable.searchable_resources.has_key?(name)
|
100
|
+
conditions = { index_on_create: true, index_on_update: true }.merge(conditions)
|
101
|
+
if conditions[:index_on_create]
|
102
|
+
after_create :try_add_to_index_as_search_resource
|
103
|
+
@search_resource_indexable_fields.set_index_condition(:create, conditions[:index_on_create])
|
104
|
+
end
|
105
|
+
if conditions[:index_on_update]
|
106
|
+
after_update :try_update_index_for_search_resource
|
107
|
+
@search_resource_indexable_fields.set_index_condition(:update, conditions[:index_on_update])
|
108
|
+
end
|
82
109
|
end
|
83
110
|
end
|
84
111
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.0
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep Jaume Rey Peroy
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-06-
|
13
|
+
date: 2018-06-13 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: active_link_to
|
@@ -242,6 +242,20 @@ dependencies:
|
|
242
242
|
- - "~>"
|
243
243
|
- !ruby/object:Gem::Version
|
244
244
|
version: '4.3'
|
245
|
+
- !ruby/object:Gem::Dependency
|
246
|
+
name: kaminari
|
247
|
+
requirement: !ruby/object:Gem::Requirement
|
248
|
+
requirements:
|
249
|
+
- - "~>"
|
250
|
+
- !ruby/object:Gem::Version
|
251
|
+
version: '1.0'
|
252
|
+
type: :runtime
|
253
|
+
prerelease: false
|
254
|
+
version_requirements: !ruby/object:Gem::Requirement
|
255
|
+
requirements:
|
256
|
+
- - "~>"
|
257
|
+
- !ruby/object:Gem::Version
|
258
|
+
version: '1.0'
|
245
259
|
- !ruby/object:Gem::Dependency
|
246
260
|
name: loofah
|
247
261
|
requirement: !ruby/object:Gem::Requirement
|
@@ -594,28 +608,28 @@ dependencies:
|
|
594
608
|
requirements:
|
595
609
|
- - '='
|
596
610
|
- !ruby/object:Gem::Version
|
597
|
-
version: 0.12.0
|
611
|
+
version: 0.12.0
|
598
612
|
type: :runtime
|
599
613
|
prerelease: false
|
600
614
|
version_requirements: !ruby/object:Gem::Requirement
|
601
615
|
requirements:
|
602
616
|
- - '='
|
603
617
|
- !ruby/object:Gem::Version
|
604
|
-
version: 0.12.0
|
618
|
+
version: 0.12.0
|
605
619
|
- !ruby/object:Gem::Dependency
|
606
620
|
name: decidim-dev
|
607
621
|
requirement: !ruby/object:Gem::Requirement
|
608
622
|
requirements:
|
609
623
|
- - '='
|
610
624
|
- !ruby/object:Gem::Version
|
611
|
-
version: 0.12.0
|
625
|
+
version: 0.12.0
|
612
626
|
type: :development
|
613
627
|
prerelease: false
|
614
628
|
version_requirements: !ruby/object:Gem::Requirement
|
615
629
|
requirements:
|
616
630
|
- - '='
|
617
631
|
- !ruby/object:Gem::Version
|
618
|
-
version: 0.12.0
|
632
|
+
version: 0.12.0
|
619
633
|
description: Adds core features so other engines can hook into the framework.
|
620
634
|
email:
|
621
635
|
- josepjaume@gmail.com
|
@@ -1186,6 +1200,7 @@ files:
|
|
1186
1200
|
- config/initializers/rack_attack.rb
|
1187
1201
|
- config/locales/ca.yml
|
1188
1202
|
- config/locales/en.yml
|
1203
|
+
- config/locales/es-PY.yml
|
1189
1204
|
- config/locales/es.yml
|
1190
1205
|
- config/locales/eu.yml
|
1191
1206
|
- config/locales/fi.yml
|
@@ -1298,6 +1313,7 @@ files:
|
|
1298
1313
|
- db/migrate/20180323102631_change_event_name_and_class_to_rename_to_publish_proposal_event.rb
|
1299
1314
|
- db/migrate/20180508111640_add_tos_version_to_organization.rb
|
1300
1315
|
- db/migrate/20180508111710_add_accepted_tos_version_field_to_users.rb
|
1316
|
+
- db/migrate/20180613080638_rename_missing_features_to_components.rb
|
1301
1317
|
- db/seeds.rb
|
1302
1318
|
- db/seeds/homepage_image.jpg
|
1303
1319
|
- lib/decidim/api/attachable_interface.rb
|
@@ -1465,9 +1481,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1465
1481
|
version: '0'
|
1466
1482
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1467
1483
|
requirements:
|
1468
|
-
- - "
|
1484
|
+
- - ">="
|
1469
1485
|
- !ruby/object:Gem::Version
|
1470
|
-
version:
|
1486
|
+
version: '0'
|
1471
1487
|
requirements: []
|
1472
1488
|
rubyforge_project:
|
1473
1489
|
rubygems_version: 2.7.6
|