decidim-core 0.11.2 → 0.12.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (238) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/decidim/notifications.js.es6 +8 -6
  3. data/app/assets/javascripts/decidim/user_registrations.js.es6 +25 -1
  4. data/app/assets/stylesheets/decidim/application.scss.erb +4 -0
  5. data/app/assets/stylesheets/decidim/layouts/_home.scss +79 -0
  6. data/app/assets/stylesheets/decidim/modules/_author-avatar.scss +2 -1
  7. data/app/assets/stylesheets/decidim/modules/_cards.scss +82 -38
  8. data/app/assets/stylesheets/decidim/modules/_collapsible-list.scss +16 -0
  9. data/app/assets/stylesheets/decidim/modules/_definition-data.scss +27 -0
  10. data/app/assets/stylesheets/decidim/modules/_fingerprint.scss +8 -0
  11. data/app/assets/stylesheets/decidim/modules/_horizontal-tabs.scss +51 -0
  12. data/app/assets/stylesheets/decidim/modules/_inline-filters.scss +5 -3
  13. data/app/assets/stylesheets/decidim/modules/_margins.scss +6 -4
  14. data/app/assets/stylesheets/decidim/modules/_modules.scss +3 -0
  15. data/app/assets/stylesheets/decidim/modules/_navbar.scss +113 -7
  16. data/app/assets/stylesheets/decidim/modules/_signup.scss +22 -5
  17. data/app/assets/stylesheets/decidim/modules/_toggle.scss +9 -0
  18. data/app/assets/stylesheets/decidim/modules/_typography.scss +5 -1
  19. data/app/assets/stylesheets/decidim/utils/_helpers.scss +42 -0
  20. data/app/assets/stylesheets/decidim/utils/_mixins.scss +6 -0
  21. data/app/assets/stylesheets/decidim/utils/_settings.scss +3 -2
  22. data/app/cells/decidim/announcement/show.erb +11 -0
  23. data/app/cells/decidim/announcement_cell.rb +32 -0
  24. data/app/cells/decidim/author/comments.erb +6 -0
  25. data/app/cells/decidim/author/contact.erb +3 -0
  26. data/app/cells/decidim/author/date.erb +5 -0
  27. data/app/cells/decidim/author/flag.erb +5 -0
  28. data/app/cells/decidim/author/profile.erb +9 -0
  29. data/app/cells/decidim/{profile → author}/profile_inline.erb +1 -1
  30. data/app/cells/decidim/author/show.erb +18 -0
  31. data/app/cells/decidim/author/withdraw.erb +6 -0
  32. data/app/cells/decidim/author_cell.rb +109 -0
  33. data/app/cells/decidim/card/show.erb +18 -16
  34. data/app/cells/decidim/card_cell.rb +17 -4
  35. data/app/cells/decidim/card_m/author.erb +3 -0
  36. data/app/cells/decidim/card_m/badge.erb +1 -0
  37. data/app/cells/decidim/card_m/comments_counter.erb +3 -0
  38. data/app/cells/decidim/card_m/data.erb +0 -0
  39. data/app/cells/decidim/card_m/footer.erb +0 -0
  40. data/app/cells/decidim/card_m/header.erb +17 -0
  41. data/app/cells/decidim/card_m/image.erb +5 -0
  42. data/app/cells/decidim/card_m/label.erb +3 -0
  43. data/app/cells/decidim/card_m/show.erb +24 -0
  44. data/app/cells/decidim/card_m/status.erb +9 -0
  45. data/app/cells/decidim/card_m/tags.erb +0 -0
  46. data/app/cells/decidim/card_m_cell.rb +136 -0
  47. data/app/cells/decidim/collapsible_list/show.erb +20 -0
  48. data/app/cells/decidim/collapsible_list_cell.rb +66 -0
  49. data/app/cells/decidim/fingerprint/show.erb +22 -0
  50. data/app/cells/decidim/fingerprint_cell.rb +17 -0
  51. data/app/cells/decidim/follow_button/show.erb +34 -0
  52. data/app/cells/decidim/follow_button_cell.rb +40 -0
  53. data/app/cells/decidim/followers/show.erb +9 -0
  54. data/app/cells/decidim/followers_cell.rb +18 -0
  55. data/app/cells/decidim/following/show.erb +9 -0
  56. data/app/cells/decidim/following_cell.rb +24 -0
  57. data/app/cells/decidim/notifications/show.erb +48 -0
  58. data/app/cells/decidim/notifications_cell.rb +21 -0
  59. data/app/cells/decidim/progress_bar/show.erb +17 -0
  60. data/app/cells/decidim/progress_bar_cell.rb +68 -0
  61. data/app/cells/decidim/tags/category.erb +1 -0
  62. data/app/cells/decidim/tags/scope.erb +1 -0
  63. data/app/cells/decidim/tags/show.erb +5 -0
  64. data/app/cells/decidim/tags_cell.rb +62 -0
  65. data/app/cells/decidim/tos_page/announcement.erb +2 -0
  66. data/app/cells/decidim/tos_page/refuse_btn_modal.erb +23 -0
  67. data/app/cells/decidim/tos_page/sticky_form.erb +29 -0
  68. data/app/cells/decidim/tos_page_cell.rb +39 -0
  69. data/app/cells/decidim/user_profile/footer.erb +5 -0
  70. data/app/cells/decidim/user_profile/header.erb +20 -0
  71. data/app/cells/decidim/user_profile_cell.rb +26 -0
  72. data/app/commands/decidim/create_omniauth_registration.rb +1 -1
  73. data/app/commands/decidim/create_registration.rb +2 -1
  74. data/app/commands/decidim/search.rb +45 -0
  75. data/app/controllers/concerns/decidim/devise_controllers.rb +15 -12
  76. data/app/controllers/concerns/decidim/http_caching_disabler.rb +21 -0
  77. data/app/controllers/concerns/decidim/impersonate_users.rb +1 -6
  78. data/app/controllers/concerns/decidim/locale_switcher.rb +1 -1
  79. data/app/controllers/concerns/decidim/needs_permission.rb +70 -0
  80. data/app/controllers/concerns/decidim/needs_tos_accepted.rb +42 -0
  81. data/app/controllers/concerns/decidim/participatory_space_context.rb +1 -7
  82. data/app/controllers/concerns/decidim/user_profile.rb +3 -1
  83. data/app/controllers/decidim/account_controller.rb +4 -4
  84. data/app/controllers/decidim/application_controller.rb +17 -8
  85. data/app/controllers/decidim/components/base_controller.rb +14 -9
  86. data/app/controllers/decidim/cookie_policy_controller.rb +0 -2
  87. data/app/controllers/decidim/devise/confirmations_controller.rb +13 -0
  88. data/app/controllers/decidim/devise/invitations_controller.rb +3 -1
  89. data/app/controllers/decidim/devise/omniauth_registrations_controller.rb +9 -3
  90. data/app/controllers/decidim/devise/passwords_controller.rb +1 -1
  91. data/app/controllers/decidim/devise/registrations_controller.rb +1 -7
  92. data/app/controllers/decidim/doorkeeper/authorizations_controller.rb +0 -2
  93. data/app/controllers/decidim/doorkeeper/credentials_controller.rb +0 -1
  94. data/app/controllers/decidim/errors_controller.rb +0 -2
  95. data/app/controllers/decidim/follows_controller.rb +4 -2
  96. data/app/controllers/decidim/locales_controller.rb +1 -1
  97. data/app/controllers/decidim/messaging/conversations_controller.rb +5 -5
  98. data/app/controllers/decidim/newsletters_controller.rb +0 -2
  99. data/app/controllers/decidim/notifications_controller.rb +3 -19
  100. data/app/controllers/decidim/notifications_settings_controller.rb +2 -2
  101. data/app/controllers/decidim/pages_controller.rb +12 -10
  102. data/app/controllers/decidim/profiles_controller.rb +10 -4
  103. data/app/controllers/decidim/reports_controller.rb +14 -1
  104. data/app/controllers/decidim/scopes_controller.rb +3 -3
  105. data/app/controllers/decidim/searches_controller.rb +39 -0
  106. data/app/controllers/decidim/static_map_controller.rb +0 -2
  107. data/app/controllers/decidim/tos_controller.rb +20 -0
  108. data/app/controllers/decidim/widgets_controller.rb +0 -1
  109. data/app/forms/decidim/follow_form.rb +1 -0
  110. data/app/forms/decidim/registration_form.rb +2 -1
  111. data/app/helpers/decidim/card_helper.rb +2 -0
  112. data/app/helpers/decidim/cells_paginate_helper.rb +16 -0
  113. data/app/helpers/decidim/cta_button_helper.rb +1 -1
  114. data/app/helpers/decidim/decidim_form_helper.rb +4 -0
  115. data/app/helpers/decidim/icon_helper.rb +2 -0
  116. data/app/helpers/decidim/resource_helper.rb +1 -2
  117. data/app/helpers/decidim/scopes_helper.rb +17 -10
  118. data/app/helpers/decidim/searches_helper.rb +16 -0
  119. data/app/helpers/decidim/tooltip_helper.rb +12 -0
  120. data/app/models/decidim/organization.rb +10 -0
  121. data/app/models/decidim/permission_action.rb +40 -0
  122. data/app/models/decidim/searchable_resource.rb +37 -0
  123. data/app/models/decidim/static_page.rb +4 -0
  124. data/app/models/decidim/user.rb +39 -3
  125. data/app/permissions/decidim/default_permissions.rb +61 -0
  126. data/app/permissions/decidim/permissions.rb +106 -0
  127. data/app/permissions/decidim/user_manager_permissions.rb +24 -0
  128. data/app/presenters/decidim/admin_log/organization_presenter.rb +2 -1
  129. data/app/presenters/decidim/home_stats_presenter.rb +2 -8
  130. data/app/presenters/decidim/user_presenter.rb +8 -0
  131. data/app/services/decidim/traceability.rb +6 -9
  132. data/app/types/decidim/core/user_type.rb +1 -1
  133. data/app/views/decidim/devise/invitations/edit.html.erb +56 -10
  134. data/app/views/decidim/devise/registrations/new.html.erb +36 -14
  135. data/app/views/decidim/devise/shared/_newsletter_modal.html.erb +25 -0
  136. data/app/views/decidim/follows/update_button.js.erb +2 -2
  137. data/app/views/decidim/messaging/conversations/_message.html.erb +1 -1
  138. data/app/views/{pages → decidim/pages}/decidim_page.html.erb +5 -0
  139. data/app/views/decidim/pages/home.html.erb +17 -0
  140. data/app/views/{pages → decidim/pages}/home/_extended.html.erb +0 -0
  141. data/app/views/{pages → decidim/pages}/home/_footer_sub_hero.html.erb +0 -0
  142. data/app/views/{pages → decidim/pages}/home/_hero.html.erb +0 -0
  143. data/app/views/{pages → decidim/pages}/home/_highlighted_content_banner.html.erb +0 -0
  144. data/app/views/{pages → decidim/pages}/home/_highlighted_processes.html.erb +0 -0
  145. data/app/views/{pages → decidim/pages}/home/_statistics.html.erb +0 -0
  146. data/app/views/{pages → decidim/pages}/home/_sub_hero.html.erb +0 -0
  147. data/app/views/decidim/profiles/_followers.html.erb +5 -0
  148. data/app/views/decidim/profiles/_following.html.erb +5 -0
  149. data/app/views/decidim/profiles/_notifications.html.erb +0 -0
  150. data/app/views/decidim/profiles/_user.html.erb +59 -0
  151. data/app/views/decidim/profiles/_user_follow.erb +32 -0
  152. data/app/views/decidim/profiles/show.html.erb +32 -59
  153. data/app/views/decidim/searches/_count.html.erb +1 -0
  154. data/app/views/decidim/searches/_filters.html.erb +20 -0
  155. data/app/views/decidim/searches/_filters_small_view.html.erb +18 -0
  156. data/app/views/decidim/searches/_results.html.erb +5 -0
  157. data/app/views/decidim/searches/index.html.erb +20 -0
  158. data/app/views/decidim/searches/index.js.erb +5 -0
  159. data/app/views/decidim/shared/_address_details.html.erb +7 -9
  160. data/app/views/decidim/shared/_announcement.html.erb +1 -6
  161. data/app/views/decidim/shared/_author_reference.html.erb +1 -1
  162. data/app/views/decidim/shared/_follow_button.html.erb +1 -34
  163. data/app/views/decidim/shared/_static_map.html.erb +3 -1
  164. data/app/views/decidim/shared/_tags.html.erb +1 -11
  165. data/app/views/kaminari/decidim/_paginator.html.erb +16 -15
  166. data/app/views/layouts/decidim/_head.html.erb +1 -0
  167. data/app/views/layouts/decidim/_topbar_search.html.erb +8 -0
  168. data/app/views/layouts/decidim/_user_menu.html.erb +2 -2
  169. data/app/views/layouts/decidim/_wrapper.html.erb +3 -2
  170. data/config/initializers/devise.rb +1 -1
  171. data/config/initializers/rack_attack.rb +28 -0
  172. data/config/locales/ca.yml +136 -55
  173. data/config/locales/en.yml +135 -54
  174. data/config/locales/es.yml +136 -55
  175. data/config/locales/eu.yml +136 -54
  176. data/config/locales/fi.yml +135 -54
  177. data/config/locales/fr.yml +136 -54
  178. data/config/locales/gl.yml +136 -54
  179. data/config/locales/it.yml +136 -54
  180. data/config/locales/nl.yml +136 -54
  181. data/config/locales/pl.yml +144 -54
  182. data/config/locales/pt-BR.yml +136 -54
  183. data/config/locales/pt.yml +136 -54
  184. data/config/locales/ru.yml +150 -60
  185. data/config/locales/sv.yml +136 -54
  186. data/config/locales/uk.yml +146 -57
  187. data/config/routes.rb +11 -1
  188. data/db/migrate/20180209122819_create_decidim_searchable_resource.rb +21 -0
  189. data/db/migrate/20180508111640_add_tos_version_to_organization.rb +19 -0
  190. data/db/migrate/20180508111710_add_accepted_tos_version_field_to_users.rb +25 -0
  191. data/db/seeds.rb +33 -26
  192. data/lib/decidim/component_manifest.rb +35 -27
  193. data/lib/decidim/content_processor.rb +21 -3
  194. data/lib/decidim/core.rb +27 -16
  195. data/lib/decidim/core/engine.rb +8 -19
  196. data/lib/decidim/core/test.rb +2 -0
  197. data/lib/decidim/core/test/factories.rb +34 -4
  198. data/lib/decidim/core/test/shared_examples/fingerprint_examples.rb +15 -0
  199. data/lib/decidim/core/test/shared_examples/searchable_results_examples.rb +27 -0
  200. data/lib/decidim/core/version.rb +1 -1
  201. data/lib/decidim/events/base_event.rb +5 -1
  202. data/lib/decidim/fingerprint_calculator.rb +42 -0
  203. data/lib/decidim/fingerprintable.rb +63 -0
  204. data/lib/decidim/form_builder.rb +1 -0
  205. data/lib/decidim/manifest_registry.rb +4 -10
  206. data/lib/decidim/participable.rb +4 -0
  207. data/lib/decidim/participatory_space_manifest.rb +36 -0
  208. data/lib/decidim/participatory_space_resourceable.rb +11 -0
  209. data/lib/decidim/resource_manifest.rb +10 -11
  210. data/lib/decidim/resourceable.rb +3 -2
  211. data/lib/decidim/search_resource_fields_mapper.rb +93 -0
  212. data/lib/decidim/searchable.rb +85 -0
  213. data/lib/decidim/settings_manifest.rb +3 -2
  214. data/lib/decidim/traceable.rb +2 -0
  215. data/lib/decidim/view_model.rb +9 -0
  216. data/lib/tasks/decidim_tasks.rake +79 -1
  217. metadata +149 -76
  218. data/app/assets/stylesheets/decidim/extras/_register_form.scss +0 -9
  219. data/app/cells/decidim/author_box/show.erb +0 -10
  220. data/app/cells/decidim/author_box_cell.rb +0 -21
  221. data/app/cells/decidim/profile/show.erb +0 -13
  222. data/app/cells/decidim/profile_cell.rb +0 -17
  223. data/app/controllers/concerns/decidim/needs_authorization.rb +0 -46
  224. data/app/models/decidim/abilities/admin_ability.rb +0 -29
  225. data/app/models/decidim/abilities/base_ability.rb +0 -56
  226. data/app/models/decidim/abilities/everyone_ability.rb +0 -25
  227. data/app/models/decidim/abilities/participatory_process_admin_ability.rb +0 -28
  228. data/app/models/decidim/abilities/participatory_process_collaborator_ability.rb +0 -28
  229. data/app/models/decidim/abilities/participatory_process_moderator_ability.rb +0 -15
  230. data/app/models/decidim/abilities/user_manager_ability.rb +0 -35
  231. data/app/views/decidim/notifications/_notification.html.erb +0 -20
  232. data/app/views/decidim/notifications/index.html.erb +0 -36
  233. data/app/views/decidim/shared/_author.html.erb +0 -21
  234. data/app/views/pages/home.html.erb +0 -17
  235. data/db/migrate/20180613080638_rename_missing_features_to_components.rb +0 -15
  236. data/lib/decidim/abilities.rb +0 -7
  237. data/lib/decidim/abilities/participatory_process_role_ability.rb +0 -60
  238. data/lib/decidim/page_finder.rb +0 -49
@@ -48,8 +48,7 @@ module Decidim
48
48
 
49
49
  scope = manifest.resource_scope(component)
50
50
  scope = scope.where("#{self.class.table_name}.id != ?", id) if manifest.model_class == self.class
51
-
52
- scope
51
+ scope.includes(:component).where.not(decidim_components: { published_at: nil })
53
52
  end
54
53
 
55
54
  # Links the given resources to this model, replaces any previous links with the same name.
@@ -81,6 +80,8 @@ module Decidim
81
80
  end
82
81
  end
83
82
  end
83
+
84
+ delegate :resource_manifest, to: :class
84
85
  end
85
86
 
86
87
  class_methods do
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ # A class with the responsibility to mapp fields between a Searchable and a SearchableResource.
5
+ class SearchResourceFieldsMapper
6
+ #
7
+ # Declared fields may be of types:
8
+ # - Hash for deep associations.
9
+ # - Array each element should be a text field symbol, all values will be concatenated.
10
+ # - Symbol when mapping is direct.
11
+ #
12
+ # @param declared_fields: A Hash with the mappings between a SearchableResource attributes and
13
+ # any given model. Mapped fields are:
14
+ # - scope_id: The field where the scope is setted in the model, if any.
15
+ # - participatory_space: The field where the ParticipatorySpace is setted in the model.
16
+ # - datetime: The field that describes where in time the model is placed.
17
+ # - A, B, C, D: Weighted text fields.
18
+ #
19
+ # Example value for declared_fields param:
20
+ # {scope_id: :decidim_scope_id,
21
+ # participatory_space: { component: :participatory_space },
22
+ # A: :title,
23
+ # D: [:description, :address],
24
+ # datetime: :start_time}
25
+ #
26
+ def initialize(declared_fields)
27
+ @declared_fields = declared_fields.with_indifferent_access
28
+ end
29
+
30
+ def mapped(resource)
31
+ fields = map_common_fields(resource)
32
+ fields[:i18n] = map_i18n_fields(resource)
33
+ fields
34
+ end
35
+
36
+ private
37
+
38
+ def map_common_fields(resource)
39
+ participatory_space = read_field(resource, @declared_fields, :participatory_space)
40
+ @organization = participatory_space.organization
41
+ {
42
+ decidim_scope_id: read_field(resource, @declared_fields, :scope_id),
43
+ decidim_participatory_space_id: participatory_space.id,
44
+ decidim_participatory_space_type: participatory_space.class.name,
45
+ decidim_organization_id: @organization.id,
46
+ datetime: read_field(resource, @declared_fields, :datetime)
47
+ }
48
+ end
49
+
50
+ def read_field(resource, fields, field_name)
51
+ if fields[field_name].is_a?(Hash)
52
+ fields = fields[field_name]
53
+ parent_field_name = fields.keys.first
54
+ intermediate_model = resource.send(parent_field_name.to_sym)
55
+ read_field(intermediate_model, fields, parent_field_name)
56
+ else
57
+ value_field = fields[field_name]
58
+ return unless value_field
59
+
60
+ if value_field.is_a?(Array)
61
+ value_field.collect do |vfield_name|
62
+ raise ArgumentError, "nested fields not supported for translations" if vfield_name.is_a?(Hash)
63
+ resource.send(vfield_name.to_sym)
64
+ end
65
+ else
66
+ value_field = value_field.to_sym
67
+ resource.send(value_field) unless value_field.nil? || !resource.respond_to?(value_field)
68
+ end
69
+ end
70
+ end
71
+
72
+ def map_i18n_fields(resource)
73
+ i18n = {}
74
+ @organization.available_locales.each do |locale|
75
+ content_a = read_i18n_field(resource, locale, :A)
76
+ content_b = read_i18n_field(resource, locale, :B)
77
+ content_c = read_i18n_field(resource, locale, :C)
78
+ content_d = read_i18n_field(resource, locale, :D)
79
+ i18n[locale] = { A: content_a, B: content_b, C: content_c, D: content_d }
80
+ end
81
+ i18n
82
+ end
83
+
84
+ def read_i18n_field(resource, locale, field_name)
85
+ content = read_field(resource, @declared_fields, field_name)
86
+ return if content.nil?
87
+ content = Array.wrap(content).collect do |item|
88
+ item.is_a?(Hash) ? item[locale] : item
89
+ end
90
+ content.respond_to?(:join) ? content.join(" ") : content
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/concern"
4
+ require "decidim/search_resource_fields_mapper"
5
+
6
+ module Decidim
7
+ # A concern with the features needed when you want a model to be searchable.
8
+ module Searchable
9
+ extend ActiveSupport::Concern
10
+
11
+ @searchable_resources = {}
12
+
13
+ # Public: a Hash of searchable resources where keys are class names, and values
14
+ # are the class instance for the resources.
15
+ def self.searchable_resources
16
+ @searchable_resources
17
+ end
18
+
19
+ included do
20
+ has_many :searchable_resources, class_name: "Decidim::SearchableResource", inverse_of: :resource, foreign_key: :resource_id, dependent: :destroy
21
+ after_create :add_to_index_as_search_resource
22
+ after_update :update_index_for_search_resource
23
+
24
+ # Public: after_create callback to index the model as a SearchableResource.
25
+ #
26
+ def add_to_index_as_search_resource
27
+ fields = self.class.search_resource_fields_mapper.mapped(self)
28
+ fields[:i18n].keys.each do |locale|
29
+ Decidim::SearchableResource.create(contents_to_searchable_resource_attributes(fields, locale))
30
+ end
31
+ end
32
+
33
+ # Public: after_update callback to update index information of the model.
34
+ #
35
+ def update_index_for_search_resource
36
+ fields = self.class.search_resource_fields_mapper.mapped(self)
37
+ searchable_resources.each do |sr|
38
+ sr.update(contents_to_searchable_resource_attributes(fields, sr.locale))
39
+ end
40
+ end
41
+
42
+ private
43
+
44
+ def contents_to_searchable_resource_attributes(fields, locale)
45
+ contents = fields[:i18n][locale]
46
+ content_a = I18n.transliterate(contents[:A] || "")
47
+ content_b = I18n.transliterate(contents[:B] || "")
48
+ content_c = I18n.transliterate(contents[:C] || "")
49
+ content_d = I18n.transliterate(contents[:D] || "")
50
+ {
51
+ content_a: content_a, content_b: content_b, content_c: content_c, content_d: content_d,
52
+ locale: locale,
53
+ datetime: fields[:datetime],
54
+ decidim_scope_id: fields[:decidim_scope_id],
55
+ decidim_participatory_space_id: fields[:decidim_participatory_space_id],
56
+ decidim_participatory_space_type: fields[:decidim_participatory_space_type],
57
+ decidim_organization_id: fields[:decidim_organization_id],
58
+ resource: self
59
+ }
60
+ end
61
+ end
62
+
63
+ class_methods do
64
+ def search_resource_fields_mapper
65
+ raise "`searchable_fields` should be declared when including Searchable" unless defined?(@search_resource_indexable_fields)
66
+ @search_resource_indexable_fields
67
+ end
68
+
69
+ # Declares the searchable fields for this instance.
70
+ # Must be a Hash that follow the following format:
71
+ # {
72
+ # scope_id: { scope: :id },
73
+ # participatory_space: { feature: :participatory_space },
74
+ # A: :title,
75
+ # B: :sub_title,
76
+ # C: :somehow_relevant_field,
77
+ # D: [:description, :address]
78
+ # }
79
+ def searchable_fields(declared_fields)
80
+ @search_resource_indexable_fields = SearchResourceFieldsMapper.new(declared_fields)
81
+ Decidim::Searchable.searchable_resources[name] = self unless Decidim::Searchable.searchable_resources.has_key?(name)
82
+ end
83
+ end
84
+ end
85
+ end
@@ -55,10 +55,10 @@ module Decidim
55
55
  manifest.attributes.each do |name, attribute|
56
56
  if attribute.translated?
57
57
  translatable_attribute name, attribute.type_class, default: attribute.default_value
58
- validates name, translatable_presence: true
58
+ validates name, translatable_presence: true if attribute.required
59
59
  else
60
60
  attribute name, attribute.type_class, default: attribute.default_value
61
- validates name, presence: true
61
+ validates name, presence: true if attribute.required
62
62
  end
63
63
  end
64
64
  end
@@ -85,6 +85,7 @@ module Decidim
85
85
  attribute :default
86
86
  attribute :translated, Boolean, default: false
87
87
  attribute :editor, Boolean, default: false
88
+ attribute :required, Boolean, default: true
88
89
 
89
90
  validates :type, inclusion: { in: TYPES.keys }
90
91
 
@@ -2,6 +2,8 @@
2
2
 
3
3
  require "active_support/concern"
4
4
 
5
+ require_dependency "paper_trail/frameworks/active_record"
6
+
5
7
  module Decidim
6
8
  # A concern that adds traceabilty capability to the given model. Including this
7
9
  # allows you the keep track of changes in the model attributes and changes authorship.
@@ -5,5 +5,14 @@ module Decidim
5
5
  include ActionView::Helpers::TranslationHelper
6
6
  include ::Cell::Translation
7
7
  include Decidim::ResourceHelper
8
+ include Decidim::ScopesHelper
9
+ include ActionController::Helpers
10
+ include Decidim::ActionAuthorization
11
+ include Decidim::ActionAuthorizationHelper
12
+ include Decidim::ReplaceButtonsHelper
13
+
14
+ def current_user
15
+ context[:current_user]
16
+ end
8
17
  end
9
18
  end
@@ -2,5 +2,83 @@
2
2
 
3
3
  namespace :decidim do
4
4
  desc "Install migrations from Decidim to the app."
5
- task upgrade: ["railties:install:migrations"]
5
+ task upgrade: [:choose_target_plugins, :"railties:install:migrations"]
6
+
7
+ desc "Setup environment so that only decidim migrations are installed."
8
+ task :choose_target_plugins do
9
+ ENV["FROM"] = %w(
10
+ decidim
11
+ decidim_accountability
12
+ decidim_admin
13
+ decidim_assemblies
14
+ decidim_blogs
15
+ decidim_budgets
16
+ decidim_comments
17
+ decidim_consultations
18
+ decidim_debates
19
+ decidim_initiatives
20
+ decidim_meetings
21
+ decidim_pages
22
+ decidim_participatory_processes
23
+ decidim_proposals
24
+ decidim_sortitions
25
+ decidim_surveys
26
+ decidim_system
27
+ decidim_verifications
28
+ ).join(",")
29
+ end
30
+
31
+ # RightToBeForgotten ------
32
+ #
33
+ # Load a single CSV file with user_ids list, and deletes all
34
+ # User records that exists and are not deleted in DB
35
+ #
36
+ # cmd: $ RAILS_ENV=<environment> bundle exec rails decidim:right_to_be_forgotten [FILE_PATH=<relative path to CSV file>]
37
+ #
38
+ # CSV file must be located within project root path
39
+ #
40
+ desc "Deletes User records by ID using a CSV file"
41
+ task right_to_be_forgotten: :environment do
42
+ log = ActiveSupport::Logger.new(Rails.root.join("log", "right_to_be_forgotten.log"))
43
+ begin
44
+ path = ENV["FILE_PATH"].presence || "tmp/forgotten_users.csv" # Good file
45
+ file_path = Rails.root.join(path)
46
+ csv_data = CSV.read(file_path, headers: false)
47
+ users_count = csv_data.size
48
+ puts "RightToBeForgotten: ------------------- #{Time.current}"
49
+ log.info "RightToBeForgotten: ------------------- #{Time.current}"
50
+ csv_data.each.with_index(1) do |row, index|
51
+ # Each row, first element must be ID, others are useless
52
+ user_id = row.first.presence || ""
53
+ next unless user_id =~ /^\d+$/ # ID must be numeric only
54
+
55
+ if (user = Decidim::User.find_by(id: user_id))
56
+ if user.deleted?
57
+ puts " #{index}/#{users_count} - [#{user_id}] User already deleted"
58
+ log.info " #{index}/#{users_count} - [#{user_id}] User already deleted"
59
+ else
60
+ puts " #{index}/#{users_count} !! [#{user_id}] DELETING USER"
61
+ log.info " #{index}/#{users_count} !! [#{user_id}] DELETING USER"
62
+ Decidim::DestroyAccount.call(user, Decidim::DeleteAccountForm.from_params({})) # Delete user!
63
+ end
64
+ else
65
+ puts " #{index}/#{users_count} - [#{user_id}] User not found"
66
+ log.info " #{index}/#{users_count} - [#{user_id}] User not found"
67
+ end
68
+ end
69
+ rescue CSV::MalformedCSVError
70
+ puts " ERROR: [Malformed CSV] #{path}"
71
+ log.info " ERROR: [Malformed CSV] #{path}"
72
+ rescue Errno::ENOENT
73
+ puts " ERROR: [File not found] #{path}"
74
+ log.info " ERROR: [File not found] #{path}"
75
+ rescue StandardError => e
76
+ puts " ERROR: [Unexpected error] #{e.message}"
77
+ log.info " ERROR: [Unexpected error] #{e.message}"
78
+ ensure
79
+ puts "RightToBeForgotten: Log file created at log/right_to_be_forgotten.log"
80
+ puts "RightToBeForgotten: --------------- END #{Time.current}"
81
+ log.info "RightToBeForgotten: --------------- END #{Time.current}"
82
+ end
83
+ end
6
84
  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.11.2
4
+ version: 0.12.0.pre
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 00:00:00.000000000 Z
13
+ date: 2018-06-06 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: active_link_to
@@ -40,20 +40,6 @@ dependencies:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '8.0'
43
- - !ruby/object:Gem::Dependency
44
- name: cancancan
45
- requirement: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '2.0'
50
- type: :runtime
51
- prerelease: false
52
- version_requirements: !ruby/object:Gem::Requirement
53
- requirements:
54
- - - "~>"
55
- - !ruby/object:Gem::Version
56
- version: '2.0'
57
43
  - !ruby/object:Gem::Dependency
58
44
  name: carrierwave
59
45
  requirement: !ruby/object:Gem::Requirement
@@ -88,14 +74,14 @@ dependencies:
88
74
  requirements:
89
75
  - - "~>"
90
76
  - !ruby/object:Gem::Version
91
- version: 0.0.8
77
+ version: 0.0.9
92
78
  type: :runtime
93
79
  prerelease: false
94
80
  version_requirements: !ruby/object:Gem::Requirement
95
81
  requirements:
96
82
  - - "~>"
97
83
  - !ruby/object:Gem::Version
98
- version: 0.0.8
84
+ version: 0.0.9
99
85
  - !ruby/object:Gem::Dependency
100
86
  name: date_validator
101
87
  requirement: !ruby/object:Gem::Requirement
@@ -228,20 +214,6 @@ dependencies:
228
214
  - - "~>"
229
215
  - !ruby/object:Gem::Version
230
216
  version: '1.4'
231
- - !ruby/object:Gem::Dependency
232
- name: high_voltage
233
- requirement: !ruby/object:Gem::Requirement
234
- requirements:
235
- - - "~>"
236
- - !ruby/object:Gem::Version
237
- version: 3.0.0
238
- type: :runtime
239
- prerelease: false
240
- version_requirements: !ruby/object:Gem::Requirement
241
- requirements:
242
- - - "~>"
243
- - !ruby/object:Gem::Version
244
- version: 3.0.0
245
217
  - !ruby/object:Gem::Dependency
246
218
  name: invisible_captcha
247
219
  requirement: !ruby/object:Gem::Requirement
@@ -366,14 +338,14 @@ dependencies:
366
338
  requirements:
367
339
  - - "~>"
368
340
  - !ruby/object:Gem::Version
369
- version: '8.0'
341
+ version: '9.0'
370
342
  type: :runtime
371
343
  prerelease: false
372
344
  version_requirements: !ruby/object:Gem::Requirement
373
345
  requirements:
374
346
  - - "~>"
375
347
  - !ruby/object:Gem::Version
376
- version: '8.0'
348
+ version: '9.0'
377
349
  - !ruby/object:Gem::Dependency
378
350
  name: pg
379
351
  requirement: !ruby/object:Gem::Requirement
@@ -394,6 +366,26 @@ dependencies:
394
366
  - - "<"
395
367
  - !ruby/object:Gem::Version
396
368
  version: '2'
369
+ - !ruby/object:Gem::Dependency
370
+ name: pg_search
371
+ requirement: !ruby/object:Gem::Requirement
372
+ requirements:
373
+ - - "~>"
374
+ - !ruby/object:Gem::Version
375
+ version: '2.1'
376
+ - - ">="
377
+ - !ruby/object:Gem::Version
378
+ version: 2.1.0
379
+ type: :runtime
380
+ prerelease: false
381
+ version_requirements: !ruby/object:Gem::Requirement
382
+ requirements:
383
+ - - "~>"
384
+ - !ruby/object:Gem::Version
385
+ version: '2.1'
386
+ - - ">="
387
+ - !ruby/object:Gem::Version
388
+ version: 2.1.0
397
389
  - !ruby/object:Gem::Dependency
398
390
  name: premailer-rails
399
391
  requirement: !ruby/object:Gem::Requirement
@@ -409,25 +401,39 @@ dependencies:
409
401
  - !ruby/object:Gem::Version
410
402
  version: '1.9'
411
403
  - !ruby/object:Gem::Dependency
412
- name: rails
404
+ name: rack-attack
413
405
  requirement: !ruby/object:Gem::Requirement
414
406
  requirements:
415
407
  - - "~>"
416
408
  - !ruby/object:Gem::Version
417
- version: '5.1'
409
+ version: 5.2.0
410
+ type: :runtime
411
+ prerelease: false
412
+ version_requirements: !ruby/object:Gem::Requirement
413
+ requirements:
414
+ - - "~>"
415
+ - !ruby/object:Gem::Version
416
+ version: 5.2.0
417
+ - !ruby/object:Gem::Dependency
418
+ name: rails
419
+ requirement: !ruby/object:Gem::Requirement
420
+ requirements:
421
+ - - ">="
422
+ - !ruby/object:Gem::Version
423
+ version: '5.2'
418
424
  - - "<"
419
425
  - !ruby/object:Gem::Version
420
- version: 5.2.x
426
+ version: 6.0.x
421
427
  type: :runtime
422
428
  prerelease: false
423
429
  version_requirements: !ruby/object:Gem::Requirement
424
430
  requirements:
425
- - - "~>"
431
+ - - ">="
426
432
  - !ruby/object:Gem::Version
427
- version: '5.1'
433
+ version: '5.2'
428
434
  - - "<"
429
435
  - !ruby/object:Gem::Version
430
- version: 5.2.x
436
+ version: 6.0.x
431
437
  - !ruby/object:Gem::Dependency
432
438
  name: rails-i18n
433
439
  requirement: !ruby/object:Gem::Requirement
@@ -588,28 +594,28 @@ dependencies:
588
594
  requirements:
589
595
  - - '='
590
596
  - !ruby/object:Gem::Version
591
- version: 0.11.2
597
+ version: 0.12.0.pre
592
598
  type: :runtime
593
599
  prerelease: false
594
600
  version_requirements: !ruby/object:Gem::Requirement
595
601
  requirements:
596
602
  - - '='
597
603
  - !ruby/object:Gem::Version
598
- version: 0.11.2
604
+ version: 0.12.0.pre
599
605
  - !ruby/object:Gem::Dependency
600
606
  name: decidim-dev
601
607
  requirement: !ruby/object:Gem::Requirement
602
608
  requirements:
603
609
  - - '='
604
610
  - !ruby/object:Gem::Version
605
- version: 0.11.2
611
+ version: 0.12.0.pre
606
612
  type: :development
607
613
  prerelease: false
608
614
  version_requirements: !ruby/object:Gem::Requirement
609
615
  requirements:
610
616
  - - '='
611
617
  - !ruby/object:Gem::Version
612
- version: 0.11.2
618
+ version: 0.12.0.pre
613
619
  description: Adds core features so other engines can hook into the framework.
614
620
  email:
615
621
  - josepjaume@gmail.com
@@ -678,7 +684,6 @@ files:
678
684
  - app/assets/stylesheets/decidim/extras/_proposal_form.scss
679
685
  - app/assets/stylesheets/decidim/extras/_quill.scss
680
686
  - app/assets/stylesheets/decidim/extras/_reference.scss
681
- - app/assets/stylesheets/decidim/extras/_register_form.scss
682
687
  - app/assets/stylesheets/decidim/extras/_results-per-page.scss
683
688
  - app/assets/stylesheets/decidim/extras/_social_icons_mini.scss
684
689
  - app/assets/stylesheets/decidim/extras/_status-labels.scss
@@ -704,10 +709,12 @@ files:
704
709
  - app/assets/stylesheets/decidim/modules/_extra.scss
705
710
  - app/assets/stylesheets/decidim/modules/_filter-tags.scss
706
711
  - app/assets/stylesheets/decidim/modules/_filters.scss
712
+ - app/assets/stylesheets/decidim/modules/_fingerprint.scss
707
713
  - app/assets/stylesheets/decidim/modules/_flag.scss
708
714
  - app/assets/stylesheets/decidim/modules/_footer.scss
709
715
  - app/assets/stylesheets/decidim/modules/_forms.scss
710
716
  - app/assets/stylesheets/decidim/modules/_help.scss
717
+ - app/assets/stylesheets/decidim/modules/_horizontal-tabs.scss
711
718
  - app/assets/stylesheets/decidim/modules/_icons.scss
712
719
  - app/assets/stylesheets/decidim/modules/_inline-filters.scss
713
720
  - app/assets/stylesheets/decidim/modules/_input-mentions.scss
@@ -738,6 +745,7 @@ files:
738
745
  - app/assets/stylesheets/decidim/modules/_tags.scss
739
746
  - app/assets/stylesheets/decidim/modules/_timeline.scss
740
747
  - app/assets/stylesheets/decidim/modules/_title-action.scss
748
+ - app/assets/stylesheets/decidim/modules/_toggle.scss
741
749
  - app/assets/stylesheets/decidim/modules/_typography.scss
742
750
  - app/assets/stylesheets/decidim/modules/_user-form.scss
743
751
  - app/assets/stylesheets/decidim/modules/_video.scss
@@ -748,13 +756,56 @@ files:
748
756
  - app/assets/stylesheets/decidim/utils/_mixins.scss
749
757
  - app/assets/stylesheets/decidim/utils/_settings.scss
750
758
  - app/assets/stylesheets/decidim/utils/_toggle-expand.scss
751
- - app/cells/decidim/author_box/show.erb
752
- - app/cells/decidim/author_box_cell.rb
759
+ - app/cells/decidim/announcement/show.erb
760
+ - app/cells/decidim/announcement_cell.rb
761
+ - app/cells/decidim/author/comments.erb
762
+ - app/cells/decidim/author/contact.erb
763
+ - app/cells/decidim/author/date.erb
764
+ - app/cells/decidim/author/flag.erb
765
+ - app/cells/decidim/author/profile.erb
766
+ - app/cells/decidim/author/profile_inline.erb
767
+ - app/cells/decidim/author/show.erb
768
+ - app/cells/decidim/author/withdraw.erb
769
+ - app/cells/decidim/author_cell.rb
753
770
  - app/cells/decidim/card/show.erb
754
771
  - app/cells/decidim/card_cell.rb
755
- - app/cells/decidim/profile/profile_inline.erb
756
- - app/cells/decidim/profile/show.erb
757
- - app/cells/decidim/profile_cell.rb
772
+ - app/cells/decidim/card_m/author.erb
773
+ - app/cells/decidim/card_m/badge.erb
774
+ - app/cells/decidim/card_m/comments_counter.erb
775
+ - app/cells/decidim/card_m/data.erb
776
+ - app/cells/decidim/card_m/footer.erb
777
+ - app/cells/decidim/card_m/header.erb
778
+ - app/cells/decidim/card_m/image.erb
779
+ - app/cells/decidim/card_m/label.erb
780
+ - app/cells/decidim/card_m/show.erb
781
+ - app/cells/decidim/card_m/status.erb
782
+ - app/cells/decidim/card_m/tags.erb
783
+ - app/cells/decidim/card_m_cell.rb
784
+ - app/cells/decidim/collapsible_list/show.erb
785
+ - app/cells/decidim/collapsible_list_cell.rb
786
+ - app/cells/decidim/fingerprint/show.erb
787
+ - app/cells/decidim/fingerprint_cell.rb
788
+ - app/cells/decidim/follow_button/show.erb
789
+ - app/cells/decidim/follow_button_cell.rb
790
+ - app/cells/decidim/followers/show.erb
791
+ - app/cells/decidim/followers_cell.rb
792
+ - app/cells/decidim/following/show.erb
793
+ - app/cells/decidim/following_cell.rb
794
+ - app/cells/decidim/notifications/show.erb
795
+ - app/cells/decidim/notifications_cell.rb
796
+ - app/cells/decidim/progress_bar/show.erb
797
+ - app/cells/decidim/progress_bar_cell.rb
798
+ - app/cells/decidim/tags/category.erb
799
+ - app/cells/decidim/tags/scope.erb
800
+ - app/cells/decidim/tags/show.erb
801
+ - app/cells/decidim/tags_cell.rb
802
+ - app/cells/decidim/tos_page/announcement.erb
803
+ - app/cells/decidim/tos_page/refuse_btn_modal.erb
804
+ - app/cells/decidim/tos_page/sticky_form.erb
805
+ - app/cells/decidim/tos_page_cell.rb
806
+ - app/cells/decidim/user_profile/footer.erb
807
+ - app/cells/decidim/user_profile/header.erb
808
+ - app/cells/decidim/user_profile_cell.rb
758
809
  - app/commands/decidim/create_follow.rb
759
810
  - app/commands/decidim/create_omniauth_registration.rb
760
811
  - app/commands/decidim/create_registration.rb
@@ -765,6 +816,7 @@ files:
765
816
  - app/commands/decidim/invite_user_again.rb
766
817
  - app/commands/decidim/messaging/reply_to_conversation.rb
767
818
  - app/commands/decidim/messaging/start_conversation.rb
819
+ - app/commands/decidim/search.rb
768
820
  - app/commands/decidim/unsubscribe_settings.rb
769
821
  - app/commands/decidim/update_account.rb
770
822
  - app/commands/decidim/update_notifications_settings.rb
@@ -773,10 +825,12 @@ files:
773
825
  - app/controllers/concerns/decidim/devise_controllers.rb
774
826
  - app/controllers/concerns/decidim/filter_resource.rb
775
827
  - app/controllers/concerns/decidim/form_factory.rb
828
+ - app/controllers/concerns/decidim/http_caching_disabler.rb
776
829
  - app/controllers/concerns/decidim/impersonate_users.rb
777
830
  - app/controllers/concerns/decidim/locale_switcher.rb
778
- - app/controllers/concerns/decidim/needs_authorization.rb
779
831
  - app/controllers/concerns/decidim/needs_organization.rb
832
+ - app/controllers/concerns/decidim/needs_permission.rb
833
+ - app/controllers/concerns/decidim/needs_tos_accepted.rb
780
834
  - app/controllers/concerns/decidim/paginable.rb
781
835
  - app/controllers/concerns/decidim/participatory_space_context.rb
782
836
  - app/controllers/concerns/decidim/payload_info.rb
@@ -808,7 +862,9 @@ files:
808
862
  - app/controllers/decidim/profiles_controller.rb
809
863
  - app/controllers/decidim/reports_controller.rb
810
864
  - app/controllers/decidim/scopes_controller.rb
865
+ - app/controllers/decidim/searches_controller.rb
811
866
  - app/controllers/decidim/static_map_controller.rb
867
+ - app/controllers/decidim/tos_controller.rb
812
868
  - app/controllers/decidim/widgets_controller.rb
813
869
  - app/events/decidim/profile_updated_event.rb
814
870
  - app/forms/decidim/account_form.rb
@@ -830,6 +886,7 @@ files:
830
886
  - app/helpers/decidim/attachments_helper.rb
831
887
  - app/helpers/decidim/authorization_form_helper.rb
832
888
  - app/helpers/decidim/card_helper.rb
889
+ - app/helpers/decidim/cells_paginate_helper.rb
833
890
  - app/helpers/decidim/component_path_helper.rb
834
891
  - app/helpers/decidim/cookies_helper.rb
835
892
  - app/helpers/decidim/cta_button_helper.rb
@@ -854,6 +911,8 @@ files:
854
911
  - app/helpers/decidim/resource_reference_helper.rb
855
912
  - app/helpers/decidim/sanitize_helper.rb
856
913
  - app/helpers/decidim/scopes_helper.rb
914
+ - app/helpers/decidim/searches_helper.rb
915
+ - app/helpers/decidim/tooltip_helper.rb
857
916
  - app/helpers/decidim/traceability_helper.rb
858
917
  - app/helpers/decidim/translations_helper.rb
859
918
  - app/helpers/decidim/user_profile_helper.rb
@@ -873,13 +932,6 @@ files:
873
932
  - app/mailers/decidim/notification_mailer.rb
874
933
  - app/mailers/decidim/reported_mailer.rb
875
934
  - app/middleware/decidim/current_organization.rb
876
- - app/models/decidim/abilities/admin_ability.rb
877
- - app/models/decidim/abilities/base_ability.rb
878
- - app/models/decidim/abilities/everyone_ability.rb
879
- - app/models/decidim/abilities/participatory_process_admin_ability.rb
880
- - app/models/decidim/abilities/participatory_process_collaborator_ability.rb
881
- - app/models/decidim/abilities/participatory_process_moderator_ability.rb
882
- - app/models/decidim/abilities/user_manager_ability.rb
883
935
  - app/models/decidim/action_log.rb
884
936
  - app/models/decidim/application_record.rb
885
937
  - app/models/decidim/area.rb
@@ -905,14 +957,19 @@ files:
905
957
  - app/models/decidim/participatory_process_user_role.rb
906
958
  - app/models/decidim/participatory_space_link.rb
907
959
  - app/models/decidim/participatory_space_private_user.rb
960
+ - app/models/decidim/permission_action.rb
908
961
  - app/models/decidim/report.rb
909
962
  - app/models/decidim/resource_link.rb
910
963
  - app/models/decidim/scope.rb
911
964
  - app/models/decidim/scope_type.rb
965
+ - app/models/decidim/searchable_resource.rb
912
966
  - app/models/decidim/static_page.rb
913
967
  - app/models/decidim/user.rb
914
968
  - app/models/decidim/user_group.rb
915
969
  - app/models/decidim/user_group_membership.rb
970
+ - app/permissions/decidim/default_permissions.rb
971
+ - app/permissions/decidim/permissions.rb
972
+ - app/permissions/decidim/user_manager_permissions.rb
916
973
  - app/presenters/decidim/admin_log/area_presenter.rb
917
974
  - app/presenters/decidim/admin_log/component_presenter.rb
918
975
  - app/presenters/decidim/admin_log/moderation_presenter.rb
@@ -1014,6 +1071,7 @@ files:
1014
1071
  - app/views/decidim/devise/registrations/new.html.erb
1015
1072
  - app/views/decidim/devise/sessions/new.html.erb
1016
1073
  - app/views/decidim/devise/shared/_links.html.erb
1074
+ - app/views/decidim/devise/shared/_newsletter_modal.html.erb
1017
1075
  - app/views/decidim/devise/shared/_omniauth_buttons.html.erb
1018
1076
  - app/views/decidim/devise/shared/_omniauth_buttons_mini.html.erb
1019
1077
  - app/views/decidim/doorkeeper/authorizations/new.html.erb
@@ -1036,20 +1094,37 @@ files:
1036
1094
  - app/views/decidim/newsletters/show.html.erb
1037
1095
  - app/views/decidim/newsletters/unsubscribe.html.erb
1038
1096
  - app/views/decidim/notification_mailer/event_received.html.erb
1039
- - app/views/decidim/notifications/_notification.html.erb
1040
- - app/views/decidim/notifications/index.html.erb
1041
1097
  - app/views/decidim/notifications_settings/show.html.erb
1042
1098
  - app/views/decidim/own_user_groups/index.html.erb
1099
+ - app/views/decidim/pages/decidim_page.html.erb
1100
+ - app/views/decidim/pages/home.html.erb
1101
+ - app/views/decidim/pages/home/_extended.html.erb
1102
+ - app/views/decidim/pages/home/_footer_sub_hero.html.erb
1103
+ - app/views/decidim/pages/home/_hero.html.erb
1104
+ - app/views/decidim/pages/home/_highlighted_content_banner.html.erb
1105
+ - app/views/decidim/pages/home/_highlighted_processes.html.erb
1106
+ - app/views/decidim/pages/home/_statistics.html.erb
1107
+ - app/views/decidim/pages/home/_sub_hero.html.erb
1043
1108
  - app/views/decidim/pages/index.html.erb
1109
+ - app/views/decidim/profiles/_followers.html.erb
1110
+ - app/views/decidim/profiles/_following.html.erb
1111
+ - app/views/decidim/profiles/_notifications.html.erb
1112
+ - app/views/decidim/profiles/_user.html.erb
1113
+ - app/views/decidim/profiles/_user_follow.erb
1044
1114
  - app/views/decidim/profiles/show.html.erb
1045
1115
  - app/views/decidim/reported_mailer/hide.html.erb
1046
1116
  - app/views/decidim/reported_mailer/report.html.erb
1047
1117
  - app/views/decidim/scopes/_scopes_picker_input.html.erb
1048
1118
  - app/views/decidim/scopes/picker.html.erb
1119
+ - app/views/decidim/searches/_count.html.erb
1120
+ - app/views/decidim/searches/_filters.html.erb
1121
+ - app/views/decidim/searches/_filters_small_view.html.erb
1122
+ - app/views/decidim/searches/_results.html.erb
1123
+ - app/views/decidim/searches/index.html.erb
1124
+ - app/views/decidim/searches/index.js.erb
1049
1125
  - app/views/decidim/shared/_action_authorization_modal.html.erb
1050
1126
  - app/views/decidim/shared/_address_details.html.erb
1051
1127
  - app/views/decidim/shared/_announcement.html.erb
1052
- - app/views/decidim/shared/_author.html.erb
1053
1128
  - app/views/decidim/shared/_author_reference.html.erb
1054
1129
  - app/views/decidim/shared/_comments.html.erb
1055
1130
  - app/views/decidim/shared/_component_announcement.html.erb
@@ -1097,25 +1172,18 @@ files:
1097
1172
  - app/views/layouts/decidim/_mailer_logo.html.erb
1098
1173
  - app/views/layouts/decidim/_omnipresent_banner.html.erb
1099
1174
  - app/views/layouts/decidim/_social_media_links.html.erb
1175
+ - app/views/layouts/decidim/_topbar_search.html.erb
1100
1176
  - app/views/layouts/decidim/_user_menu.html.erb
1101
1177
  - app/views/layouts/decidim/_wrapper.html.erb
1102
1178
  - app/views/layouts/decidim/application.html.erb
1103
1179
  - app/views/layouts/decidim/mailer.html.erb
1104
1180
  - app/views/layouts/decidim/user_profile.html.erb
1105
1181
  - app/views/layouts/decidim/widget.html.erb
1106
- - app/views/pages/decidim_page.html.erb
1107
- - app/views/pages/home.html.erb
1108
- - app/views/pages/home/_extended.html.erb
1109
- - app/views/pages/home/_footer_sub_hero.html.erb
1110
- - app/views/pages/home/_hero.html.erb
1111
- - app/views/pages/home/_highlighted_content_banner.html.erb
1112
- - app/views/pages/home/_highlighted_processes.html.erb
1113
- - app/views/pages/home/_statistics.html.erb
1114
- - app/views/pages/home/_sub_hero.html.erb
1115
1182
  - config/initializers/devise.rb
1116
1183
  - config/initializers/foundation_rails_helper.rb
1117
1184
  - config/initializers/invisible_captcha.rb
1118
1185
  - config/initializers/mail_previews.rb
1186
+ - config/initializers/rack_attack.rb
1119
1187
  - config/locales/ca.yml
1120
1188
  - config/locales/en.yml
1121
1189
  - config/locales/es.yml
@@ -1218,6 +1286,7 @@ files:
1218
1286
  - db/migrate/20180130093153_add_action_log.rb
1219
1287
  - db/migrate/20180206143340_fix_reference_for_all_resources.rb
1220
1288
  - db/migrate/20180206183235_create_participatory_space_private_users.rb
1289
+ - db/migrate/20180209122819_create_decidim_searchable_resource.rb
1221
1290
  - db/migrate/20180215104821_create_decidim_area_types.rb
1222
1291
  - db/migrate/20180215104945_create_decidim_areas.rb
1223
1292
  - db/migrate/20180221101934_fix_nickname_index.rb
@@ -1227,11 +1296,10 @@ files:
1227
1296
  - db/migrate/20180308113207_doorkeeper_models.rb
1228
1297
  - db/migrate/20180314085339_rename_maximum_votes_per_proposal_to_threshold_per_proposal.rb
1229
1298
  - db/migrate/20180323102631_change_event_name_and_class_to_rename_to_publish_proposal_event.rb
1230
- - db/migrate/20180613080638_rename_missing_features_to_components.rb
1299
+ - db/migrate/20180508111640_add_tos_version_to_organization.rb
1300
+ - db/migrate/20180508111710_add_accepted_tos_version_field_to_users.rb
1231
1301
  - db/seeds.rb
1232
1302
  - db/seeds/homepage_image.jpg
1233
- - lib/decidim/abilities.rb
1234
- - lib/decidim/abilities/participatory_process_role_ability.rb
1235
1303
  - lib/decidim/api/attachable_interface.rb
1236
1304
  - lib/decidim/api/author_interface.rb
1237
1305
  - lib/decidim/api/authorable_interface.rb
@@ -1268,6 +1336,7 @@ files:
1268
1336
  - lib/decidim/core/test/shared_examples/comments_examples.rb
1269
1337
  - lib/decidim/core/test/shared_examples/component_type.rb
1270
1338
  - lib/decidim/core/test/shared_examples/errors.rb
1339
+ - lib/decidim/core/test/shared_examples/fingerprint_examples.rb
1271
1340
  - lib/decidim/core/test/shared_examples/follows_examples.rb
1272
1341
  - lib/decidim/core/test/shared_examples/has_attachment_collections.rb
1273
1342
  - lib/decidim/core/test/shared_examples/has_attachments.rb
@@ -1283,6 +1352,7 @@ files:
1283
1352
  - lib/decidim/core/test/shared_examples/reports_examples.rb
1284
1353
  - lib/decidim/core/test/shared_examples/scopable_interface_examples.rb
1285
1354
  - lib/decidim/core/test/shared_examples/scope_helper_examples.rb
1355
+ - lib/decidim/core/test/shared_examples/searchable_results_examples.rb
1286
1356
  - lib/decidim/core/test/shared_examples/simple_event.rb
1287
1357
  - lib/decidim/core/test/shared_examples/user_localised_email_examples.rb
1288
1358
  - lib/decidim/core/version.rb
@@ -1303,6 +1373,8 @@ files:
1303
1373
  - lib/decidim/faker/localized.rb
1304
1374
  - lib/decidim/file_zipper.rb
1305
1375
  - lib/decidim/filter_form_builder.rb
1376
+ - lib/decidim/fingerprint_calculator.rb
1377
+ - lib/decidim/fingerprintable.rb
1306
1378
  - lib/decidim/followable.rb
1307
1379
  - lib/decidim/form_builder.rb
1308
1380
  - lib/decidim/friendly_dates.rb
@@ -1321,7 +1393,6 @@ files:
1321
1393
  - lib/decidim/messaging.rb
1322
1394
  - lib/decidim/newsletter_encryptor.rb
1323
1395
  - lib/decidim/nicknamizable.rb
1324
- - lib/decidim/page_finder.rb
1325
1396
  - lib/decidim/participable.rb
1326
1397
  - lib/decidim/participatory_space_context_manifest.rb
1327
1398
  - lib/decidim/participatory_space_manifest.rb
@@ -1334,6 +1405,8 @@ files:
1334
1405
  - lib/decidim/resourceable.rb
1335
1406
  - lib/decidim/scopable.rb
1336
1407
  - lib/decidim/scopable_component.rb
1408
+ - lib/decidim/search_resource_fields_mapper.rb
1409
+ - lib/decidim/searchable.rb
1337
1410
  - lib/decidim/settings_manifest.rb
1338
1411
  - lib/decidim/stats_registry.rb
1339
1412
  - lib/decidim/traceable.rb
@@ -1392,9 +1465,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
1392
1465
  version: '0'
1393
1466
  required_rubygems_version: !ruby/object:Gem::Requirement
1394
1467
  requirements:
1395
- - - ">="
1468
+ - - ">"
1396
1469
  - !ruby/object:Gem::Version
1397
- version: '0'
1470
+ version: 1.3.1
1398
1471
  requirements: []
1399
1472
  rubyforge_project:
1400
1473
  rubygems_version: 2.7.6