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
@@ -0,0 +1,20 @@
1
+ <main class="wrapper">
2
+ <div class="row columns">
3
+ <h2 id="results-count" class="section-heading">
4
+ <%= render partial: "count" %>
5
+ </h2>
6
+ </div>
7
+ <div class="row">
8
+ <div class="columns mediumlarge-4 large-3">
9
+ <%= render partial: "filters_small_view" %>
10
+ <div class="card card--secondary show-for-mediumlarge">
11
+ <%= render partial: "filters" %>
12
+ </div>
13
+ </div>
14
+ <div id="results" class="columns mediumlarge-8 large-9">
15
+ <%= render partial: "results" %>
16
+ </div>
17
+ </div>
18
+ </main>
19
+ <%= javascript_include_tag("decidim/filters") %>
20
+ <%= javascript_include_tag "decidim/orders" %>
@@ -0,0 +1,5 @@
1
+ var $results = $('#results');
2
+ var $resultsCount = $('#results-count');
3
+
4
+ $results.html('<%= j(render partial: "results").strip.html_safe %>');
5
+ $resultsCount.html('<%= j(render partial: "count").strip.html_safe %>');
@@ -1,9 +1,7 @@
1
- <div class="address__details">
2
- <% if geolocalizable.respond_to? :location %>
3
- <strong><%= translated_attribute geolocalizable.location %></strong><br />
4
- <% end %>
5
- <span><%= geolocalizable.address %></span><br />
6
- <% if geolocalizable.respond_to? :location_hints %>
7
- <span><%= translated_attribute geolocalizable.location_hints %></span>
8
- <% end %>
9
- </div>
1
+ <% if geolocalizable.respond_to? :location %>
2
+ <strong><%= translated_attribute geolocalizable.location %></strong><br />
3
+ <% end %>
4
+ <span><%= geolocalizable.address %></span><br />
5
+ <% if geolocalizable.respond_to? :location_hints %>
6
+ <span><%= translated_attribute geolocalizable.location_hints %></span>
7
+ <% end %>
@@ -1,6 +1 @@
1
- <div class="row column">
2
- <% callout_class ||= "secondary" %>
3
- <%= content_tag :div, class: "callout announcement mb-sm #{callout_class}" do %>
4
- <%= decidim_sanitize translated_attribute announcement %>
5
- <% end %>
6
- </div>
1
+ <%= cell("decidim/announcement", local_assigns) %>
@@ -1 +1 @@
1
- <%= cell "decidim/author_box", author, extra_classes: ["author-data--small"] %>
1
+ <%= card_for author, context: {extra_classes: ["author-data--small"]} %>
@@ -1,34 +1 @@
1
- <div id="follow-resource">
2
- <% if current_user %>
3
- <% if current_user.follows?(followable) %>
4
- <%= button_to decidim.follow_path, class: "button secondary hollow expanded small button--icon follow-button", params: { follow: { followable_gid: followable.to_sgid.to_s }}, data: { disable: true }, method: :delete, remote: true do %>
5
- <%= icon "bell" %>
6
- <span>
7
- <%= t("follows.destroy.button", scope: "decidim") %>
8
- </span>
9
- <% end %>
10
- <% else %>
11
- <%= button_to decidim.follow_path, class: "button secondary hollow expanded small button--icon follow-button", params: { follow: { followable_gid: followable.to_sgid.to_s }}, data: { disable: true }, remote: true do %>
12
- <%= icon "bell" %>
13
- <span>
14
- <%= t("follows.create.button", scope: "decidim") %>
15
- </span>
16
- <% end %>
17
- <% end %>
18
- <% else %>
19
- <%= button_to(
20
- decidim.follow_path,
21
- class: "button secondary hollow expanded small button--icon follow-button",
22
- params: { follow: { followable_gid: followable.to_sgid.to_s }},
23
- data: { tooltip: true, disable_hover: false },
24
- :'aria-haspopup' => true,
25
- title: t(".sign_in_before_follow"),
26
- disabled: true,
27
- remote: true) do %>
28
- <%= icon "bell" %>
29
- <span>
30
- <%= t("follows.create.button", scope: "decidim") %>
31
- </span>
32
- <% end %>
33
- <% end %>
34
- </div>
1
+ <%= cell "decidim/follow_button", followable, inline: false, context: { current_user: current_user } %>
@@ -5,7 +5,9 @@
5
5
  <div class="address__icon">
6
6
  <%= icon icon_name, width: 40, height: 70 %>
7
7
  </div>
8
- <%= render partial: "decidim/shared/address_details", locals: { geolocalizable: geolocalizable } %>
8
+ <div class="address__details">
9
+ <%= render partial: "decidim/shared/address_details", locals: { geolocalizable: geolocalizable } %>
10
+ </div>
9
11
  </div>
10
12
  <% if Decidim.geocoder.present? %>
11
13
  <div class="address__map">
@@ -1,11 +1 @@
1
- <% if resource.category.present? || has_visible_scopes?(resource) %>
2
- <ul class="tags <%= tags_class_extra %>">
3
- <% if resource.category.present? %>
4
- <li><%= link_to translated_attribute(resource.category.name), resource_locator(resource).index(filter: { category_id: resource.category.id }) %></li>
5
- <% end %>
6
-
7
- <% if has_visible_scopes?(resource) %>
8
- <li><%= link_to translated_attribute(resource.scope.name), resource_locator(resource).index(filter: { scope_id: [resource.scope.id] }) %></li>
9
- <% end %>
10
- </ul>
11
- <% end %>
1
+ <%= cell "decidim/tags", resource, context: {extra_classes: [tags_class_extra]} %>
@@ -1,24 +1,25 @@
1
1
  <%# The container tag
2
- - available local variables
3
- current_page: a page object for the currently displayed page
4
- total_pages: total number of pages
5
- per_page: number of items to fetch per page
6
- remote: data-remote
7
- paginator: the paginator that renders the pagination tags inside -%>
8
- <%= paginator.render do -%>
2
+ - available local variables
3
+ current_page: a page object for the currently displayed page
4
+ total_pages: total number of pages
5
+ per_page: number of items to fetch per page
6
+ remote: data-remote
7
+ paginator: the paginator that renders the pagination tags inside -%>
8
+
9
+ <% if total_pages > 1 %>
9
10
  <ul class="pagination text-center" role="navigation" aria-label="Pagination">
10
- <%= first_page_tag unless current_page.first? %>
11
- <%= prev_page_tag unless current_page.first? %>
12
- <% each_page do |page| -%>
11
+ <%= paginator.first_page_tag unless current_page.first? %>
12
+ <%= paginator.prev_page_tag unless current_page.first? %>
13
+ <% paginator.each_page do |page| -%>
13
14
  <% if page.display_tag? -%>
14
- <%= page_tag page %>
15
+ <%= paginator.page_tag page %>
15
16
  <% elsif !page.was_truncated? -%>
16
- <%= gap_tag %>
17
+ <%= paginator.gap_tag %>
17
18
  <% end -%>
18
19
  <% end -%>
19
20
  <% unless current_page.out_of_range? %>
20
- <%= next_page_tag unless current_page.last? %>
21
- <%= last_page_tag unless current_page.last? %>
21
+ <%= paginator.next_page_tag unless current_page.last? %>
22
+ <%= paginator.last_page_tag unless current_page.last? %>
22
23
  <% end %>
23
24
  </ul>
24
- <% end -%>
25
+ <% end %>
@@ -20,6 +20,7 @@
20
20
  <%= favicon %>
21
21
  <%= stylesheet_link_tag "application", media: "all" %>
22
22
  <%= javascript_include_tag "application" %>
23
+ <%= foundation_datepicker_locale_tag %>
23
24
 
24
25
  <%= render partial: "layouts/decidim/head_extra" %>
25
26
  <%== current_organization.header_snippets if Decidim.enable_html_header_snippets %>
@@ -0,0 +1,8 @@
1
+ <div class="show-for-medium" data-set="nav-search-holder">
2
+ <div class="topbar__search js-append">
3
+ <%= icon "magnifying-glass", aria_label: t("decidim.search.term_input_placeholder"), role: "img" %>
4
+ <%= form_tag(decidim.search_path, method: :get, id: "form-search_topbar") do %>
5
+ <%= text_field_tag :term, nil, class: "m-none", placeholder: t("decidim.search.term_input_placeholder") %>
6
+ <% end %>
7
+ </div>
8
+ </div>
@@ -2,9 +2,9 @@
2
2
  <% unless current_user.managed? %>
3
3
  <li><%= link_to t(".public_profile"), decidim.profile_path(current_user.nickname) %></li>
4
4
  <% end %>
5
- <li><%= link_to t(".notifications"), decidim.notifications_path %></li>
5
+ <li><%= link_to t(".notifications"), decidim.profile_notifications_path(current_user.nickname) %></li>
6
6
  <li><%= link_to t(".conversations"), decidim.conversations_path %></li>
7
- <% if can? :read, :admin_dashboard %>
7
+ <% if allowed_to? :read, :admin_dashboard %>
8
8
  <li><%= link_to t(".admin_dashboard"), decidim_admin.root_path %></li>
9
9
  <% end %>
10
10
  <li><%= link_to t(".sign_out"), decidim.destroy_user_session_path, method: :delete, class: "sign-out-link" %></li>
@@ -28,6 +28,7 @@
28
28
  <div class="logo-wrapper">
29
29
  <%= render partial: "layouts/decidim/logo", locals: { organization: current_organization } %>
30
30
  </div>
31
+ <%= render partial: "layouts/decidim/topbar_search" %>
31
32
  <%= render partial: "layouts/decidim/language_chooser" %>
32
33
  <div class="hide-for-medium topbar__menu">
33
34
  <button type="button" data-toggle="offCanvas">
@@ -36,7 +37,7 @@
36
37
  </div>
37
38
  <% if current_user %>
38
39
  <div class="topbar__dropmenu topbar__user__logged">
39
- <%= link_to decidim.notifications_path, class: "topbar__notifications #{current_user.notifications.any? ? "is-active" : ""}" do %>
40
+ <%= link_to decidim.profile_notifications_path(current_user.nickname), class: "topbar__notifications #{current_user.notifications.any? ? "is-active" : ""}" do %>
40
41
  <%= icon "bell" %>
41
42
  <% end %>
42
43
  <%= link_to decidim.conversations_path, class: "topbar__conversations #{current_user.unread_conversations.any? ? "is-active" : ""}" do %>
@@ -90,7 +91,7 @@
90
91
  <div class="medium-8 large-6 large-offset-3 column main__footer__nav">
91
92
  <% if current_organization.static_pages.any? %>
92
93
  <ul class="footer-nav">
93
- <% current_organization.static_pages.each do |page| %>
94
+ <% current_organization.static_pages.sorted_by_i18n_title.each do |page| %>
94
95
  <li><%= link_to translated_attribute(page.title), decidim.page_path(page) %></li>
95
96
  <% end %>
96
97
  </ul>
@@ -217,7 +217,7 @@ Devise.setup do |config|
217
217
  # ==> Configuration for :timeoutable
218
218
  # The time you want to timeout the user session without activity. After this
219
219
  # time the user will be asked for credentials again. Default is 30 minutes.
220
- # config.timeout_in = 30.minutes
220
+ config.timeout_in = 1.week
221
221
 
222
222
  # ==> Configuration for :lockable
223
223
  # Defines which strategy will be used to lock an account.
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ if Rails.env.production?
4
+ require "rack/attack"
5
+
6
+ Rails.application.configure do |config|
7
+ config.middleware.use Rack::Attack
8
+ end
9
+
10
+ Rack::Attack.throttle(
11
+ "requests by ip",
12
+ limit: Decidim.throttling_max_requests,
13
+ period: Decidim.throttling_period,
14
+ &:ip
15
+ )
16
+
17
+ # Throttle login attempts for a given email parameter to 6 reqs/minute
18
+ # Return the email as a discriminator on POST /users/sign_in requests
19
+ Rack::Attack.throttle("limit logins per email", limit: 5, period: 60.seconds) do |request|
20
+ request.params["user"]["email"] if request.path == "/users/sign_in" && request.post?
21
+ end
22
+
23
+ # Throttle login attempts for a given email parameter to 6 reqs/minute
24
+ # Return the email as a discriminator on POST /users/sign_in requests
25
+ Rack::Attack.throttle("limit password recovery attempts per email", limit: 5, period: 60.seconds) do |request|
26
+ request.params["user"]["email"] if request.path == "/users/password" && request.post?
27
+ end
28
+ end
@@ -17,6 +17,10 @@ ca:
17
17
  user_group_document_number: Número de document acreditatiu
18
18
  user_group_name: Nom de l'organització
19
19
  user_group_phone: Telèfon de l'organització
20
+ models:
21
+ decidim/attachment_created_event: Adjunt
22
+ decidim/component_published_event: Component actiu
23
+ decidim/profile_updated_event: Perfil actualitzat
20
24
  activerecord:
21
25
  attributes:
22
26
  decidim/user:
@@ -29,12 +33,23 @@ ca:
29
33
  user_group_document_number: Número de document acreditatiu
30
34
  user_group_name: Nom de l'organització
31
35
  user_group_phone: Telèfon de l'organització
36
+ models:
37
+ decidim/user:
38
+ one: Usuari
39
+ other: Usuaris
40
+ decidim/user_group:
41
+ one: Grup d'usuaris
42
+ other: Grups d'usuaris
32
43
  booleans:
33
44
  'false': 'No'
34
45
  'true': 'Sí'
35
46
  carrierwave:
36
47
  errors:
37
48
  image_too_big: La imatge és massa gran
49
+ date:
50
+ formats:
51
+ decidim_short: "%d/%m/%Y"
52
+ decidim_with_month_name: "%d %B %Y"
38
53
  decidim:
39
54
  account:
40
55
  delete:
@@ -108,7 +123,16 @@ ca:
108
123
  related_documents: Documents relacionats
109
124
  photos:
110
125
  related_photos: Fotos relacionades
126
+ author:
127
+ comments:
128
+ one: comentari
129
+ other: comentaris
111
130
  authorization_handlers:
131
+ another_dummy_authorization_handler:
132
+ explanation: Obté la verificació introduint un número de passaport que comenci per "A"
133
+ fields:
134
+ passport_number: Número de passaport
135
+ name: Una altra autorització d'exemple
112
136
  dummy_authorization_handler:
113
137
  explanation: Verifica't introduint un número de document que finalitzi amb "X"
114
138
  fields:
@@ -128,6 +152,12 @@ ca:
128
152
  name: Autorització foo
129
153
  granted_at: Atorgada el %{timestamp}
130
154
  started_at: Iniciat el %{timestamp}
155
+ collapsible_list:
156
+ hidden_elements_count:
157
+ one: i 1 més
158
+ other: i %{count} més
159
+ see_less: "(veure menys)"
160
+ see_more: "(veure més)"
131
161
  components:
132
162
  dummy:
133
163
  actions:
@@ -161,6 +191,7 @@ ca:
161
191
  new:
162
192
  already_have_an_account?: Ja tens un compte?
163
193
  newsletter: Vull rebre un butlletí ocasional amb informació rellevant
194
+ newsletter_title: Permís de contacte
164
195
  nickname_help: El vostre identificador curt i únic a %{organization}
165
196
  sign_in: Entra
166
197
  sign_up: Registra't
@@ -171,12 +202,19 @@ ca:
171
202
  subtitle: Crea un compte per poder participar en els debats i donar suport a les propostes.
172
203
  terms: els termes i condicions d'ús
173
204
  tos_agreement: En registrar-te acceptes %{link}.
205
+ tos_title: Termes del servei
174
206
  username_help: Nom públic que apareixerà en les teves publicacions. Amb l'objectiu de garantitzar l'anonimat pot ser qualsevol nom.
175
207
  sessions:
176
208
  new:
177
209
  are_you_new?: Ets nou a la plataforma?
178
210
  register: Crea't un compte
179
211
  shared:
212
+ newsletter_modal:
213
+ buttons:
214
+ check: Marca i continua
215
+ uncheck: Deixa desmarcada
216
+ notice: Hola, estàs segur que no vols rebre un butlletí informatiu? Si us plau, avalua tornar a fer clic a la casella de verificació que apareix a continuació. Per a nosaltres és molt important que rebis correus ocasionals per fer anuncis importants, i sempre pots canviar-ho a la pàgina de configuració de les notificacions. Si no marques la casella, és possible que no rebis informació rellevant sobre noves oportunitats de participació dins de la plataforma. Si encara vols evitar rebre butlletins, entenem perfectament la teva decisió. Gràcies per llegir això!
217
+ title: Notificacions de butlletins
180
218
  omniauth_buttons:
181
219
  or: O
182
220
  doorkeeper:
@@ -240,6 +278,18 @@ ca:
240
278
  project: Projectes
241
279
  proposal: propostes
242
280
  result: Resultats
281
+ fingerprint:
282
+ check: Verifica l'empremta digital
283
+ explanation: El text següent és una representació reduïda amb una funció hash d'aquest contingut. És útil per assegurar-se que el contingut no ha estat manipulat, ja que una sola modificació provocaria un valor totalment diferent.
284
+ online_calculator_name: Calculadora MD5 en línia
285
+ replicate_help: Aquesta empremta digital es calcula mitjançant un algoritme de hash SHA256. Per reproduir-lo tu mateix, pots utilitzar una %{online_calculator_link} i copiar-hi les dades d'origen.
286
+ source: Origen
287
+ title: Empremta digital
288
+ value: Valor
289
+ followers:
290
+ no_followers: Encara no hi ha seguidors.
291
+ following:
292
+ no_followings: No segueix cap persona ni res.
243
293
  follows:
244
294
  create:
245
295
  button: Seguir
@@ -318,6 +368,8 @@ ca:
318
368
  success: Has cancel·lat la subscripció amb èxit.
319
369
  token_error: L'enllaç ha caducat.
320
370
  unsubscribe: Anul·la la subscripció
371
+ notifications:
372
+ no_notifications: Encara no hi ha notificacions.
321
373
  notifications_settings:
322
374
  show:
323
375
  email_on_notification: Vull rebre un correu electrònic cada vegada que rebi una notificació.
@@ -332,17 +384,75 @@ ca:
332
384
  rejected: Rebutjades
333
385
  verified: Verificada
334
386
  pages:
387
+ home:
388
+ extended:
389
+ debates: Debats
390
+ debates_explanation: Debat i discuteix, comparteix les teves opinions i enriqueix els temes rellevants.
391
+ how_to_participate: Com participo en un procés?
392
+ meetings: Trobades
393
+ meetings_explanation: Esbrina on i quan pots participar en trobades públiques.
394
+ more_info: Més informació
395
+ proposals: Propostes
396
+ proposals_explanation: Realitza propostes, recolza les ja existents i promociona els canvis que vols veure.
397
+ footer_sub_hero:
398
+ footer_sub_hero_body: Construïm una societat més oberta, transparent i col·laborativa.<br />Uneix-te, participa i decideix.
399
+ footer_sub_hero_headline: Benvinguda i benvingut a la plataforma participativa %{organization}.
400
+ register: Registra't
401
+ hero:
402
+ participate: Participa
403
+ welcome: Benvingut a %{organization}!
404
+ statistics:
405
+ answers_count: Enquestes realitzades
406
+ assemblies_count: Assemblees
407
+ comments_count: Comentaris
408
+ debates_count: Debats
409
+ endorsements_count: Adhesions
410
+ headline: Estat actual de %{organization}
411
+ meetings_count: Trobades
412
+ orders_count: Vots
413
+ pages_count: Pàgines
414
+ processes_count: Processos
415
+ projects_count: Projectes
416
+ proposals_accepted: Propostes acceptades
417
+ proposals_count: Propostes
418
+ results_count: Resultats
419
+ surveys_count: Enquestes
420
+ users_count: Participants
421
+ votes_count: Vots
422
+ sub_hero:
423
+ register: Registra't
335
424
  index:
336
425
  title: Més informació
426
+ terms_and_conditions:
427
+ accept:
428
+ error: S'ha produït un error en acceptar els Termes i Condicions.
429
+ success: Genial! Has acceptat els Termes i Condicions.
430
+ form:
431
+ agreement: Accepto aquests termes
432
+ legend: Accepto els termes i condicions
433
+ refuse:
434
+ modal_body: Si no acceptes, no podràs utilitzar la plataforma, pots <a href="%{data_portability_path}">descarregar les teves dades</a> i / o <a href="%{delete_path}">esborrar el teu compte de</a>.
435
+ modal_btn_continue: Acceptar els termes i continuar
436
+ modal_btn_exit: Ho revisaré més tard
437
+ modal_button: Rebutjar els termes
438
+ modal_title: Confirmes que no vols acceptar els Termes i Condicions actualitzats?
439
+ required_review:
440
+ alert: Hem actualitzat els nostres Termes de Servei, si us plau, revisa'ls.
441
+ body: Si us plau dedica un moment a revisar l'actualització dels nostres Termes de Servei. En cas contrari, no podràs utilitzar la plataforma.
442
+ title: 'Obligatori: revisa l''actualització de les nostres Condicions d''Ús'
337
443
  participatory_space_private_users:
338
444
  not_allowed: No tens permís per visualitzar aquest contingut
339
445
  profile:
340
446
  deleted: Usuari eliminat
447
+ view: Veure
341
448
  profiles:
342
449
  default_officialization_text: Aquesta persona participant està verificada públicament. S'ha verificat que el seu nom o la seva funció es correspon amb el seu nom i funció reals
343
450
  show:
344
- about_me: Sobre mi
345
- personal_url: Lloc web personal
451
+ followers: Seguidors
452
+ following: Segueix
453
+ notifications: Notificacions
454
+ user:
455
+ edit_profile: Edita el perfil
346
456
  reported_mailer:
347
457
  hide:
348
458
  hello: Hola %{name},
@@ -366,6 +476,20 @@ ca:
366
476
  title: Seleccioneu %{field}
367
477
  prompt: Seleccioneu un àmbit
368
478
  scopes: Àmbits
479
+ search:
480
+ filter:
481
+ all: Tot
482
+ component: Component
483
+ results_found_for_term: '%{count} resultats de la cerca: "%{term}"'
484
+ term_input_placeholder: Cerca
485
+ searches:
486
+ filters:
487
+ search: Cerca
488
+ filters_small_view:
489
+ close_modal: Tanca el modal
490
+ filter: Filtre
491
+ filter_by: Filtra per
492
+ unfold: Desplegar
369
493
  shared:
370
494
  action_authorization_modal:
371
495
  expired:
@@ -391,8 +515,6 @@ ca:
391
515
  invalid_field: "El valor %{field} %{value} no és vàlid."
392
516
  ok: D'acord
393
517
  title: Acció no autoritzada
394
- author:
395
- deleted: Usuari eliminat
396
518
  embed_modal:
397
519
  close_window: Tanca la finestra
398
520
  embed: Si us plau, enganxa aquest codi a la teva pàgina
@@ -424,17 +546,18 @@ ca:
424
546
  devise:
425
547
  invitations:
426
548
  edit:
427
- header: Establir la contrasenya
549
+ header: Acabar de crear el teu compte
428
550
  nickname_help: El teu identificador únic a %{organization}.
429
551
  submit_button: Desa
552
+ subtitle: Si acceptes la invitació, si us plau, estableix el teu nom d'usuari/a i contrasenya.
430
553
  mailer:
431
554
  invitation_instructions:
432
555
  accept: Acceptar invitació
433
556
  accept_until: Aquesta invitació caducarà el dia %{due_date}.
434
557
  hello: Hola %{email},
435
558
  ignore: |-
436
- Si no vols acceptar la invitació, ignora aquest correu.<br />
437
- El teu compte no es crearà fins que no accedeixis a l'enllaç de sota i triïs la teva contrasenya.
559
+ Si no vols acceptar la invitació, si us plau, ignora aquest correu electrònic.<br />
560
+ El teu compte no es crearà fins que no accedeixis a l'enllaç anterior i estableixis el teu nom d'usuari/a i contrasenya.
438
561
  invited_you_as_admin: "%{invited_by} t'ha convidat com a administrador de %{application}. Pots acceptar-ho a través de l'enllaç següent."
439
562
  invited_you_as_private_user: "%{invited_by} t'ha convidat com a usuari privat de %{application}. Podeu acceptar-lo a través de l'enllaç següent."
440
563
  someone_invited_you: Algú t'ha convidat a %{application}. Pots acceptar-ho a través de l'enllaç següent.
@@ -457,17 +580,15 @@ ca:
457
580
  public: La teva informació pública.
458
581
  errors:
459
582
  messages:
460
- content_type_whitelist_error: El tipus de fitxer no és vàlid
583
+ content_type_whitelist_error: el tipus de fitxer no és vàlid
461
584
  cycle_detected: Un dels pares de l'àmbit d'aplicació no pot ser un dels seus descendents
462
585
  file_size_is_less_than_or_equal_to: la mida del fitxer ha de ser menor que o igual a %{count}
463
- invalid_manifest: Arxiu de manifest invàlid
464
- invalid_participatory_process: Procés participatiu invàlid
465
- long_words: Conté paraules que són massa llargues
466
- must_start_with_caps: Ha de començar amb majúscules
586
+ long_words: conté paraules que són massa llargues
587
+ must_start_with_caps: ha de començar amb majúscules
467
588
  nesting_too_deep: no pot estar dins d'una subcategoria
468
- too_many_marks: Està utilitzant massa símbols d'exclamació o interrogació
469
- too_much_caps: Està utilitzant massa majúscules
470
- too_short: És massa curt
589
+ too_many_marks: hi ha massa signes de puntuació
590
+ too_much_caps: hi ha massa majúscules
591
+ too_short: és massa curt
471
592
  forms:
472
593
  required: Obligatori
473
594
  invisible_captcha:
@@ -492,8 +613,6 @@ ca:
492
613
  expire_time_html: La vostra sessió caducarà en <b><span class="minutes">%{minutes}</span> minutes</b>.
493
614
  notifications_dashboard:
494
615
  mark_all_as_read: Marca tots com a llegits
495
- no_notifications: Encara no hi ha notificacions.
496
- title: Notificacions
497
616
  user_menu:
498
617
  admin_dashboard: Tauler d'administració
499
618
  conversations: Converses
@@ -512,44 +631,6 @@ ca:
512
631
  see_more: Veure més
513
632
  locale:
514
633
  name: Català
515
- pages:
516
- home:
517
- extended:
518
- debates: Debats
519
- debates_explanation: Debat i discuteix, comparteix les teves opinions i enriqueix els temes rellevants.
520
- how_to_participate: Com participo en un procés?
521
- meetings: Trobades
522
- meetings_explanation: Esbrina on i quan pots participar en trobades públiques.
523
- more_info: Més informació
524
- proposals: propostes
525
- proposals_explanation: Realitza propostes, recolza les ja existents i promociona els canvis que vols veure.
526
- footer_sub_hero:
527
- footer_sub_hero_body: Construïm una societat més oberta, transparent i col·laborativa.<br />Uneix-te, participa i decideix.
528
- footer_sub_hero_headline: Benvinguda i benvingut a la plataforma participativa %{organization}.
529
- register: Registra't
530
- hero:
531
- participate: Participa
532
- welcome: Benvingut a %{organization}!
533
- statistics:
534
- answers_count: Enquestes realitzades
535
- assemblies_count: Assemblees
536
- comments_count: Comentaris
537
- debates_count: Debats
538
- endorsements_count: Adhesions
539
- headline: Estat actual de %{organization}
540
- meetings_count: Trobades
541
- orders_count: Vots
542
- pages_count: Pàgines
543
- processes_count: Processos
544
- projects_count: Projectes
545
- proposals_accepted: Propostes acceptades
546
- proposals_count: propostes
547
- results_count: Resultats
548
- surveys_count: Enquestes
549
- users_count: Participants
550
- votes_count: Suports
551
- sub_hero:
552
- register: Registre
553
634
  social_share_button:
554
635
  delicious: Delicious
555
636
  douban: Douban