decidim-core 0.13.1 → 0.14.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of decidim-core might be problematic. Click here for more details.

Files changed (236) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/decidim_core_manifest.js +1 -1
  3. data/app/assets/images/decidim/gamification/badges/invitations.svg +117 -0
  4. data/app/assets/javascripts/decidim.js.es6 +4 -1
  5. data/app/assets/javascripts/decidim/ajax_modals.js.es6 +17 -0
  6. data/app/assets/javascripts/decidim/conferences.js.es6 +16 -0
  7. data/app/assets/javascripts/decidim/input_hashtags.js.es6 +115 -0
  8. data/app/assets/javascripts/decidim/input_mentions.js.es6 +2 -3
  9. data/app/assets/javascripts/decidim/vizzs/areachart.js.es6 +226 -0
  10. data/app/assets/javascripts/decidim/vizzs/metrics.js.es6 +26 -0
  11. data/app/assets/javascripts/decidim/vizzs/orgchart.js.es6 +701 -0
  12. data/app/assets/javascripts/decidim/vizzs/renders.js.es6 +11 -0
  13. data/app/assets/stylesheets/decidim/extras/_proposal_form.scss +3 -1
  14. data/app/assets/stylesheets/decidim/layouts/_home.scss +1 -1
  15. data/app/assets/stylesheets/decidim/modules/_areachart.scss +74 -0
  16. data/app/assets/stylesheets/decidim/modules/_badges.scss +116 -0
  17. data/app/assets/stylesheets/decidim/modules/_buttons.scss +5 -0
  18. data/app/assets/stylesheets/decidim/modules/_cards.scss +21 -4
  19. data/app/assets/stylesheets/decidim/modules/_chart-tooltip.scss +42 -0
  20. data/app/assets/stylesheets/decidim/modules/_collapsible-list.scss +12 -8
  21. data/app/assets/stylesheets/decidim/modules/_conference-nav.scss +31 -0
  22. data/app/assets/stylesheets/decidim/modules/_conference-programme.scss +110 -0
  23. data/app/assets/stylesheets/decidim/modules/_conference-speaker.scss +86 -0
  24. data/app/assets/stylesheets/decidim/modules/_conversation.scss +58 -0
  25. data/app/assets/stylesheets/decidim/modules/_help.scss +38 -0
  26. data/app/assets/stylesheets/decidim/modules/_hover-section.scss +29 -0
  27. data/app/assets/stylesheets/decidim/modules/_icons.scss +10 -4
  28. data/app/assets/stylesheets/decidim/modules/_input-hashtags.scss +124 -0
  29. data/app/assets/stylesheets/decidim/modules/_loading-spinner.scss +12 -0
  30. data/app/assets/stylesheets/decidim/modules/_margins.scss +2 -2
  31. data/app/assets/stylesheets/decidim/modules/_modules.scss +15 -0
  32. data/app/assets/stylesheets/decidim/modules/_navbar.scss +9 -0
  33. data/app/assets/stylesheets/decidim/modules/_orgchart.scss +62 -0
  34. data/app/assets/stylesheets/decidim/modules/_status-labels.scss +2 -1
  35. data/app/assets/stylesheets/decidim/modules/_typography.scss +9 -0
  36. data/app/assets/stylesheets/decidim/utils/_helpers.scss +28 -0
  37. data/app/assets/stylesheets/decidim/utils/_mixins.scss +63 -0
  38. data/app/cells/decidim/author/withdraw.erb +1 -1
  39. data/app/cells/decidim/author_cell.rb +1 -1
  40. data/app/cells/decidim/badge/show.erb +36 -0
  41. data/app/cells/decidim/badge_cell.rb +53 -0
  42. data/app/cells/decidim/badges/show.erb +6 -0
  43. data/app/cells/decidim/badges_cell.rb +14 -0
  44. data/app/cells/decidim/card_m/header.erb +1 -1
  45. data/app/cells/decidim/card_m/show.erb +1 -2
  46. data/app/cells/decidim/card_m/top.erb +7 -0
  47. data/app/cells/decidim/card_m_cell.rb +14 -17
  48. data/app/cells/decidim/coauthorships_cell.rb +77 -0
  49. data/app/cells/decidim/collapsible_authors/show.erb +0 -1
  50. data/app/cells/decidim/collapsible_authors_cell.rb +4 -4
  51. data/app/cells/decidim/collapsible_list/show.erb +12 -4
  52. data/app/cells/decidim/collapsible_list_cell.rb +14 -12
  53. data/app/cells/decidim/content_blocks/footer_sub_hero/show.erb +14 -0
  54. data/app/cells/decidim/content_blocks/footer_sub_hero_cell.rb +12 -0
  55. data/app/{views/decidim/pages/home/_hero.html.erb → cells/decidim/content_blocks/hero/show.erb} +4 -4
  56. data/app/cells/decidim/content_blocks/hero_cell.rb +25 -0
  57. data/app/cells/decidim/content_blocks/hero_settings_form/show.erb +7 -0
  58. data/app/cells/decidim/content_blocks/hero_settings_form_cell.rb +13 -0
  59. data/app/cells/decidim/content_blocks/highlighted_content_banner/show.erb +24 -0
  60. data/app/cells/decidim/content_blocks/highlighted_content_banner_cell.rb +16 -0
  61. data/app/{views/decidim/pages/home/_extended.html.erb → cells/decidim/content_blocks/how_to_participate/show.erb} +10 -10
  62. data/app/cells/decidim/content_blocks/how_to_participate_cell.rb +9 -0
  63. data/app/{views/decidim/pages/home/_statistics.html.erb → cells/decidim/content_blocks/stats/show.erb} +2 -2
  64. data/app/cells/decidim/content_blocks/stats_cell.rb +18 -0
  65. data/app/{views/decidim/pages/home/_sub_hero.html.erb → cells/decidim/content_blocks/sub_hero/show.erb} +2 -2
  66. data/app/cells/decidim/content_blocks/sub_hero_cell.rb +17 -0
  67. data/app/cells/decidim/conversation/show.erb +18 -0
  68. data/app/cells/decidim/conversation_cell.rb +23 -0
  69. data/app/cells/decidim/conversation_header/show.erb +17 -0
  70. data/app/cells/decidim/conversation_header_cell.rb +16 -0
  71. data/app/cells/decidim/conversations/show.erb +45 -0
  72. data/app/cells/decidim/conversations_cell.rb +24 -0
  73. data/app/cells/decidim/follow_button/show.erb +3 -3
  74. data/app/cells/decidim/follow_button_cell.rb +1 -5
  75. data/app/cells/decidim/following_cell.rb +1 -7
  76. data/app/cells/decidim/message/show.erb +15 -0
  77. data/app/cells/decidim/message_cell.rb +23 -0
  78. data/app/cells/decidim/new_conversation/show.erb +19 -0
  79. data/app/cells/decidim/new_conversation_cell.rb +19 -0
  80. data/app/cells/decidim/notifications/show.erb +1 -1
  81. data/app/cells/decidim/profile/show.erb +27 -0
  82. data/app/cells/decidim/profile_cell.rb +33 -0
  83. data/app/cells/decidim/profile_sidebar/show.erb +57 -0
  84. data/app/cells/decidim/profile_sidebar_cell.rb +31 -0
  85. data/app/cells/decidim/tos_page_cell.rb +0 -4
  86. data/app/cells/decidim/user_profile/header.erb +1 -1
  87. data/app/controllers/concerns/decidim/action_authorization.rb +13 -38
  88. data/app/controllers/concerns/decidim/needs_permission.rb +15 -6
  89. data/app/controllers/decidim/application_controller.rb +1 -0
  90. data/app/controllers/decidim/authorization_modals_controller.rb +35 -0
  91. data/app/controllers/decidim/components/base_controller.rb +0 -1
  92. data/app/controllers/decidim/devise/invitations_controller.rb +2 -1
  93. data/app/controllers/decidim/messaging/conversations_controller.rb +2 -11
  94. data/app/controllers/decidim/newsletters_controller.rb +4 -6
  95. data/app/controllers/decidim/notifications_controller.rb +4 -0
  96. data/app/controllers/decidim/pages_controller.rb +3 -7
  97. data/app/controllers/decidim/profiles_controller.rb +17 -7
  98. data/app/forms/decidim/notifications_settings_form.rb +1 -1
  99. data/app/forms/decidim/registration_form.rb +1 -1
  100. data/app/helpers/decidim/action_authorization_helper.rb +51 -46
  101. data/app/helpers/decidim/application_helper.rb +18 -0
  102. data/app/helpers/decidim/card_helper.rb +1 -1
  103. data/app/helpers/decidim/cells_helper.rb +6 -2
  104. data/app/helpers/decidim/resource_helper.rb +8 -1
  105. data/app/helpers/decidim/searches_helper.rb +5 -4
  106. data/app/helpers/decidim/traceability_helper.rb +5 -1
  107. data/app/models/decidim/authorization.rb +2 -2
  108. data/app/models/decidim/content_block.rb +144 -0
  109. data/app/models/decidim/gamification/badge_score.rb +13 -0
  110. data/app/models/decidim/messaging/message.rb +1 -1
  111. data/app/models/decidim/messaging/receipt.rb +1 -1
  112. data/app/models/decidim/organization.rb +1 -5
  113. data/app/models/decidim/resource_permission.rb +8 -0
  114. data/app/models/decidim/searchable_resource.rb +1 -1
  115. data/app/models/decidim/user.rb +17 -1
  116. data/app/permissions/decidim/default_permissions.rb +4 -3
  117. data/app/permissions/decidim/permissions.rb +33 -1
  118. data/app/presenters/decidim/hashtag_presenter.rb +32 -0
  119. data/app/presenters/decidim/resource_locator_presenter.rb +13 -0
  120. data/app/presenters/decidim/user_presenter.rb +1 -1
  121. data/app/queries/decidim/messaging/user_conversations.rb +1 -1
  122. data/app/resolvers/decidim/hashtags_resolver.rb +15 -0
  123. data/app/services/decidim/action_authorizer.rb +9 -8
  124. data/app/types/decidim/core/date_time_type.rb +1 -1
  125. data/app/types/decidim/core/hashtag_type.rb +13 -0
  126. data/app/uploaders/decidim/homepage_image_uploader.rb +1 -1
  127. data/app/uploaders/decidim/image_uploader.rb +1 -0
  128. data/app/views/decidim/authorization_modals/show.html.erb +32 -0
  129. data/app/views/decidim/messaging/conversations/create.js.erb +1 -1
  130. data/app/views/decidim/messaging/conversations/index.html.erb +1 -51
  131. data/app/views/decidim/messaging/conversations/new.html.erb +1 -5
  132. data/app/views/decidim/messaging/conversations/show.html.erb +1 -9
  133. data/app/views/decidim/messaging/conversations/update.js.erb +1 -1
  134. data/app/views/decidim/notifications/index.html.erb +1 -0
  135. data/app/views/decidim/pages/decidim_page.html.erb +9 -0
  136. data/app/views/decidim/pages/home.html.erb +12 -16
  137. data/app/views/decidim/pages/index.html.erb +8 -0
  138. data/app/views/decidim/profiles/_user_follow.erb +2 -2
  139. data/app/views/decidim/profiles/show.html.erb +1 -37
  140. data/app/views/decidim/searches/_results.html.erb +1 -1
  141. data/app/views/decidim/shared/_author_reference.html.erb +1 -1
  142. data/app/views/decidim/shared/_authorization_modal.html.erb +1 -0
  143. data/app/views/decidim/shared/_tags.html.erb +1 -1
  144. data/app/views/kaminari/decidim/_page.html.erb +1 -1
  145. data/app/views/layouts/decidim/_application.html.erb +6 -1
  146. data/app/views/layouts/decidim/_edit_link.html.erb +8 -0
  147. data/app/views/layouts/decidim/_impersonation_warning.html.erb +1 -1
  148. data/app/views/layouts/decidim/_user_menu.html.erb +2 -2
  149. data/app/views/layouts/decidim/_wrapper.html.erb +14 -1
  150. data/config/initializers/carrierwave.rb +15 -0
  151. data/config/locales/ca.yml +78 -30
  152. data/config/locales/en.yml +78 -30
  153. data/config/locales/es-PY.yml +78 -30
  154. data/config/locales/es.yml +78 -30
  155. data/config/locales/eu.yml +78 -30
  156. data/config/locales/fi.yml +262 -214
  157. data/config/locales/fr.yml +78 -30
  158. data/config/locales/gl.yml +78 -30
  159. data/config/locales/hu.yml +781 -0
  160. data/config/locales/it.yml +78 -30
  161. data/config/locales/nl.yml +78 -30
  162. data/config/locales/pl.yml +78 -30
  163. data/config/locales/pt-BR.yml +106 -58
  164. data/config/locales/pt.yml +78 -30
  165. data/config/locales/ru.yml +52 -32
  166. data/config/locales/sv.yml +183 -135
  167. data/config/locales/uk.yml +60 -40
  168. data/config/routes.rb +8 -6
  169. data/db/migrate/20180705091019_create_decidim_resource_permissions.rb +12 -0
  170. data/db/migrate/20180706104107_add_nickname_to_managed_users.rb +14 -0
  171. data/db/migrate/20180706111847_fix_result_follows.rb +9 -0
  172. data/db/migrate/20180724103814_add_content_blocks.rb +22 -0
  173. data/db/migrate/20180726112510_create_decidim_hashtags.rb +17 -0
  174. data/db/migrate/20180730071851_add_core_content_blocks.rb +28 -0
  175. data/db/migrate/20180802132147_rename_content_block_options_to_settings.rb +7 -0
  176. data/db/migrate/20180806095628_add_badge_scores.rb +11 -0
  177. data/db/migrate/20180808135006_add_images_to_content_blocks.rb +7 -0
  178. data/db/migrate/20180810092428_move_organization_fields_to_hero_content_block.rb +23 -0
  179. data/db/seeds.rb +10 -2
  180. data/lib/decidim/api/authorable_interface.rb +1 -1
  181. data/lib/decidim/coauthorable.rb +1 -0
  182. data/lib/decidim/content_block_manifest.rb +58 -0
  183. data/lib/decidim/content_block_registry.rb +87 -0
  184. data/lib/decidim/content_parsers.rb +1 -0
  185. data/lib/decidim/content_parsers/hashtag_parser.rb +36 -0
  186. data/lib/decidim/content_processor.rb +11 -0
  187. data/lib/decidim/content_renderers.rb +1 -0
  188. data/lib/decidim/content_renderers/hashtag_renderer.rb +43 -0
  189. data/lib/decidim/core.rb +28 -6
  190. data/lib/decidim/core/api.rb +1 -0
  191. data/lib/decidim/core/engine.rb +52 -1
  192. data/lib/decidim/core/test.rb +3 -0
  193. data/lib/decidim/core/test/factories.rb +32 -17
  194. data/lib/decidim/core/test/shared_examples/authorable_interface_examples.rb +10 -0
  195. data/lib/decidim/core/test/shared_examples/coauthorable.rb +3 -0
  196. data/lib/decidim/core/test/shared_examples/edit_link_shared_examples.rb +30 -0
  197. data/lib/decidim/core/test/shared_examples/has_space_in_mcell_examples.rb +15 -0
  198. data/lib/decidim/core/test/shared_examples/publicable.rb +1 -1
  199. data/lib/decidim/core/test/shared_examples/railtie_examples.rb +15 -0
  200. data/lib/decidim/core/test/shared_examples/scope_helper_examples.rb +1 -0
  201. data/lib/decidim/core/version.rb +1 -1
  202. data/lib/decidim/events/base_event.rb +2 -1
  203. data/lib/decidim/form_builder.rb +9 -3
  204. data/lib/decidim/friendly_dates.rb +1 -1
  205. data/lib/decidim/gamification.rb +109 -0
  206. data/lib/decidim/gamification/badge.rb +54 -0
  207. data/lib/decidim/gamification/badge_earned_event.rb +9 -0
  208. data/lib/decidim/gamification/badge_registry.rb +63 -0
  209. data/lib/decidim/gamification/badge_scorer.rb +118 -0
  210. data/lib/decidim/gamification/badge_status.rb +41 -0
  211. data/lib/decidim/gamification/base_event.rb +40 -0
  212. data/lib/decidim/gamification/level_up_event.rb +9 -0
  213. data/lib/decidim/hashtag.rb +15 -0
  214. data/lib/decidim/hashtaggable.rb +20 -0
  215. data/lib/decidim/query_extensions.rb +10 -0
  216. data/lib/decidim/resource_manifest.rb +10 -0
  217. data/lib/decidim/resourceable.rb +13 -0
  218. data/lib/decidim/search_resource_fields_mapper.rb +8 -3
  219. data/lib/decidim/searchable.rb +8 -0
  220. data/lib/decidim/translatable_attributes.rb +6 -18
  221. data/lib/decidim/view_model.rb +6 -0
  222. data/lib/devise/models/decidim_newsletterable.rb +1 -1
  223. data/vendor/assets/javascripts/d3.js +17813 -0
  224. metadata +125 -27
  225. data/app/cells/decidim/card_m/author.erb +0 -3
  226. data/app/cells/decidim/card_m/authors.erb +0 -9
  227. data/app/views/decidim/messaging/conversations/_message.html.erb +0 -14
  228. data/app/views/decidim/messaging/conversations/_reply.html.erb +0 -11
  229. data/app/views/decidim/messaging/conversations/_show.html.erb +0 -21
  230. data/app/views/decidim/messaging/conversations/_start.html.erb +0 -12
  231. data/app/views/decidim/pages/home/_footer_sub_hero.html.erb +0 -14
  232. data/app/views/decidim/pages/home/_highlighted_content_banner.html.erb +0 -26
  233. data/app/views/decidim/pages/home/_highlighted_processes.html.erb +0 -7
  234. data/app/views/decidim/profiles/_user.html.erb +0 -59
  235. data/app/views/decidim/shared/_action_authorization_modal.html.erb +0 -39
  236. data/app/views/layouts/decidim/_component_authorization_modals.html.erb +0 -5
@@ -0,0 +1,8 @@
1
+ <% if content_for?(:edit_link) %>
2
+ <div class="topbar__edit__link">
3
+ <%= link_to content_for(:edit_link) do %>
4
+ <%= icon "pencil" %>
5
+ <span><%= t(".edit") %></span>
6
+ <% end %>
7
+ </div>
8
+ <% end %>
@@ -3,7 +3,7 @@
3
3
  <%= t(".description_html", user_name: current_user.name) %>
4
4
  <%= t(".expire_time_html", minutes: impersonation_session_remaining_duration_in_minutes) %>
5
5
  <div class="impersonation-warning__action">
6
- <%= button_to t(".close_session"), decidim_admin.close_session_impersonatable_user_impersonations_path(current_user), class: "button tiny impersonation-bar__button", data: {disable: true } %>
6
+ <%= button_to t(".close_session"), decidim_admin.close_session_impersonatable_user_impersonations_path(current_user), class: "button tiny impersonation-bar__button", data: { disable: true } %>
7
7
  </div>
8
8
  </div>
9
9
  <%= javascript_include_tag "decidim/impersonation" %>
@@ -1,8 +1,8 @@
1
1
  <li><%= link_to t(".profile"), decidim.account_path %></li>
2
2
  <% unless current_user.managed? %>
3
- <li><%= link_to t(".public_profile"), decidim.profile_path(current_user.nickname) %></li>
3
+ <li><%= link_to t(".public_profile"), decidim.profile_following_path(current_user.nickname) %></li>
4
4
  <% end %>
5
- <li><%= link_to t(".notifications"), decidim.profile_notifications_path(current_user.nickname) %></li>
5
+ <li><%= link_to t(".notifications"), decidim.notifications_path %></li>
6
6
  <li><%= link_to t(".conversations"), decidim.conversations_path %></li>
7
7
  <li><%= link_to t(".invite_friends"), decidim.account_invitations_path %></li>
8
8
  <% if allowed_to? :read, :admin_dashboard %>
@@ -1,3 +1,15 @@
1
+ <%
2
+ if respond_to?(:current_component) && current_component
3
+ edit_link(
4
+ manage_component_path(current_component),
5
+ :read,
6
+ :component,
7
+ component: current_component,
8
+ current_participatory_space: current_participatory_space
9
+ )
10
+ end
11
+ %>
12
+
1
13
  <div class="off-canvas-wrapper">
2
14
  <div class="off-canvas-wrapper-inner" data-off-canvas-wrapper>
3
15
  <div class="off-canvas position-right hide-for-large" data-position="right"
@@ -37,7 +49,7 @@
37
49
  </div>
38
50
  <% if current_user %>
39
51
  <div class="topbar__dropmenu topbar__user__logged">
40
- <%= link_to decidim.profile_notifications_path(current_user.nickname), class: "topbar__notifications #{current_user.notifications.any? ? "is-active" : ""}" do %>
52
+ <%= link_to decidim.notifications_path, class: "topbar__notifications #{current_user.notifications.any? ? "is-active" : ""}" do %>
41
53
  <%= icon "bell" %>
42
54
  <% end %>
43
55
  <%= link_to decidim.conversations_path, class: "topbar__conversations #{current_user.unread_conversations.any? ? "is-active" : ""}" do %>
@@ -66,6 +78,7 @@
66
78
  </div>
67
79
  </div>
68
80
  <% end %>
81
+ <%= render partial: "layouts/decidim/edit_link" %>
69
82
  </div>
70
83
  </div>
71
84
  <div class="show-for-medium" data-set="nav-holder">
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module CarrierWave
4
+ module MiniMagick
5
+ # this method allow us to specify a quality for our image
6
+ # e.g. <process quality: 60>
7
+ def quality(percentage)
8
+ manipulate! do |img|
9
+ img.quality(percentage.to_s)
10
+ img = yield(img) if block_given?
11
+ img
12
+ end
13
+ end
14
+ end
15
+ end
@@ -20,6 +20,8 @@ ca:
20
20
  models:
21
21
  decidim/attachment_created_event: Adjunt
22
22
  decidim/component_published_event: Component actiu
23
+ decidim/gamification/badge_earned_event: Insígnia obtinguda
24
+ decidim/gamification/level_up_event: Has pujat de nivell
23
25
  decidim/profile_updated_event: Perfil actualitzat
24
26
  activerecord:
25
27
  attributes:
@@ -157,6 +159,31 @@ ca:
157
159
  name: Autorització foo
158
160
  granted_at: Atorgada el %{timestamp}
159
161
  started_at: Iniciat el %{timestamp}
162
+ authorization_modals:
163
+ show:
164
+ expired:
165
+ authorize: Torna a autoritzar amb "%{authorization}"
166
+ explanation: La vostra autorització ha caducat. Per realitzar aquesta acció, heu de tornar a autoritzar-vos amb "%{authorization}".
167
+ title: L'autorització ha caducat
168
+ incomplete:
169
+ cancel: Cancel·lar
170
+ explanation: 'Tot i que actualment estàs autoritzat amb "%{authorization}", necessitem que et tornis a autoritzar perquè no tenim les dades següents:'
171
+ invalid_field: "%{field}"
172
+ reauthorize: Reautoritzar-se
173
+ title: Si us plau, reautoritza't
174
+ missing:
175
+ authorize: Autoritzar amb "%{authorization}"
176
+ explanation: Per dur a terme aquesta acció, ha de disposar de l'autorització "%{authorization}".
177
+ title: Es requereix autorització
178
+ pending:
179
+ explanation: Per realitzar aquesta acció, has d'estar autoritzat/da amb "%{authorization}", però la teva autorització encara està en curs
180
+ resume: Comprova el progrés de l'autorització "%{authorization}"
181
+ title: L'autorització encara està en progrés
182
+ unauthorized:
183
+ explanation: No es pot realitzar aquesta acció ja que alguna de les seves dades d'autorització no coincideixen amb les requerides.
184
+ invalid_field: "El valor %{field} %{value} no és vàlid."
185
+ ok: D'acord
186
+ title: Acció no autoritzada
160
187
  collapsible_list:
161
188
  hidden_elements_count:
162
189
  one: i 1 més
@@ -174,11 +201,25 @@ ca:
174
201
  comments_enabled: Comentaris habilitats
175
202
  dummy_global_attribute_1: Atribut de prova 1
176
203
  dummy_global_attribute_2: Atribut de prova 2
204
+ resources_permissions_enabled: Permisos de recursos habilitats
177
205
  step:
178
206
  comments_blocked: Comentaris bloquejats
179
207
  dummy_step_attribute_1: Atribut de fase de prova 1
180
208
  dummy_step_attribute_2: Atribut de fase de prova 2
181
209
  contact: Contacte
210
+ content_blocks:
211
+ footer_sub_hero:
212
+ name: Peu de pàgina sub-hero
213
+ hero:
214
+ name: Imatge del hero
215
+ highlighted_content_banner:
216
+ name: Bàner de contingut destacat
217
+ how_to_participate:
218
+ name: Com participar
219
+ stats:
220
+ name: Estadístiques de l'organització
221
+ sub_hero:
222
+ name: Bàner de sub-heros
182
223
  core:
183
224
  actions:
184
225
  unauthorized: No tens permís per realitzar aquesta acció
@@ -277,6 +318,17 @@ ca:
277
318
  email_intro: 'Hi ha hagut una actualització a "%{resource_title}". Es pot veure en aquesta pàgina:'
278
319
  email_outro: Has rebut aquesta notificació perquè que segueixes "%{resource_title}". El pots deixar de seguir al link anterior.
279
320
  email_subject: Una actualització a %{resource_title}
321
+ gamification:
322
+ badge_earned:
323
+ email_intro: Enhorabona! Has aconseguit la insígnia "<a href="%{resource_url}">%{badge_name}</a>" (nivell %{current_level}).
324
+ email_outro: Has rebut aquesta notificació perquè has generat activitat al nostre lloc web.
325
+ email_subject: 'Has aconseguit una nova insígnia: %{badge_name}!'
326
+ notification_title: Enhorabona! Has aconseguit la <a href="%{resource_path}">%{badge_name} insígnia</a> (nivell %{current_level}).
327
+ level_up:
328
+ email_intro: Enhorabona! Has arribat al nivell %{current_level} de la insígnia<a href="%{resource_url}">%{badge_name}</a>!
329
+ email_outro: Has rebut aquesta notificació perquè has generat activitat al nostre lloc web.
330
+ email_subject: Has arribat al nivell %{current_level} de la insígnia %{badge_name}!
331
+ notification_title: Enhorabona! Has arribat al nivell %{current_level} de la insígnia<a href="%{resource_path}">%{badge_name}</a>!
280
332
  notification_event:
281
333
  notification_title: S'ha produït un esdeveniment a <a href="%{resource_path}">%{resource_title}</a>.
282
334
  users:
@@ -295,7 +347,8 @@ ca:
295
347
  filters:
296
348
  linked_classes:
297
349
  all: Tots
298
- dummyresource: Recursos de prova
350
+ collaborative_draft: Esborrany de col·laboració
351
+ dummy_resource: Recursos de prova
299
352
  meeting: Trobades
300
353
  project: Projectes
301
354
  proposal: propostes
@@ -326,6 +379,19 @@ ca:
326
379
  errors:
327
380
  error: Hi ha un error en aquest camp.
328
381
  remove_this_file: Eliminar aquest arxiu
382
+ gamification:
383
+ badges:
384
+ invitations:
385
+ description_another: Aquest usuari ha convidat a %{score} usuaris.
386
+ description_own: Has convidat %{score} usuaris.
387
+ explanation: Els usuaris obtenen aquesta distinció invitant altres usuaris.
388
+ name: Invitacions
389
+ next_level_in: Convida a %{score} usuaris més per arribar al següent nivell!
390
+ unearned_another: Aquest usuari encara no ha convidat cap usuari.
391
+ unearned_own: Encara no has convidat cap usuari.
392
+ description: Les insígnies són reconeixements a les accions participatives i al progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, obtindràs diferents distintius.
393
+ level: Nivell %{level}
394
+ reached_top: Has arribat al nivell superior d'aquesta insígnia.
329
395
  invitations:
330
396
  create:
331
397
  error: Hi ha hagut alguns problemes mentre es convidava els teus amics
@@ -378,13 +444,13 @@ ca:
378
444
  create:
379
445
  error: No s'ha iniciat la conversa. Torna-ho a provar més tard
380
446
  index:
447
+ from: Des de
448
+ last_message_html: Últim missatge <strong>fa %{time}</strong>
381
449
  no_conversations: Encara no tens converses
382
- title: Converses
383
- reply:
384
- send: Enviar
385
- title: Respon
386
450
  show:
387
- title: Conversa amb %{usernames}
451
+ conversation_with_html: Conversa amb <strong>%{name}</strong>
452
+ reply: Respon
453
+ send: Enviar
388
454
  start:
389
455
  send: Enviar
390
456
  title: Comença una conversa
@@ -497,6 +563,8 @@ ca:
497
563
  profiles:
498
564
  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
499
565
  show:
566
+ badges: Insígnies
567
+ conversations: Converses
500
568
  followers: Seguidors
501
569
  following: Segueix
502
570
  notifications: Notificacions
@@ -540,30 +608,6 @@ ca:
540
608
  filter_by: Filtra per
541
609
  unfold: Desplegar
542
610
  shared:
543
- action_authorization_modal:
544
- expired:
545
- authorize: Torna a autoritzar amb "%{authorization}"
546
- explanation: La vostra autorització ha caducat. Per realitzar aquesta acció, heu de tornar a autoritzar-vos amb "%{authorization}".
547
- title: L'autorització ha caducat
548
- incomplete:
549
- cancel: Cancel·lar
550
- explanation: 'Tot i que actualment estàs autoritzat amb "%{authorization}", necessitem que et tornis a autoritzar perquè no tenim les dades següents:'
551
- invalid_field: "%{field}"
552
- reauthorize: Reautoritzar-se
553
- title: Si us plau, reautoritza't
554
- missing:
555
- authorize: Autoritzar amb "%{authorization}"
556
- explanation: Per dur a terme aquesta acció, ha de disposar de l'autorització "%{authorization}".
557
- title: Es requereix autorització
558
- pending:
559
- explanation: Per realitzar aquesta acció, has d'estar autoritzat/da amb "%{authorization}", però la teva autorització encara està en curs
560
- resume: Comprova el progrés de l'autorització "%{authorization}"
561
- title: L'autorització encara està en progrés
562
- unauthorized:
563
- explanation: No es pot realitzar aquesta acció ja que alguna de les seves dades d'autorització no coincideixen amb les requerides.
564
- invalid_field: "El valor %{field} %{value} no és vàlid."
565
- ok: D'acord
566
- title: Acció no autoritzada
567
611
  embed_modal:
568
612
  close_window: Tanca la finestra
569
613
  embed: Si us plau, enganxa aquest codi a la teva pàgina
@@ -603,6 +647,7 @@ ca:
603
647
  invitation_instructions:
604
648
  accept: Acceptar invitació
605
649
  accept_until: Aquesta invitació caducarà el dia %{due_date}.
650
+ decline: Declina la invitació
606
651
  hello: Hola %{email},
607
652
  ignore: |-
608
653
  Si no vols acceptar la invitació, si us plau, ignora aquest correu electrònic.<br />
@@ -654,6 +699,8 @@ ca:
654
699
  description_html: "Aquest lloc web fa servir cookies pròpies i de tercers per millorar l’experiència de navegació, i oferir continguts i serveis d’interès.\nEn continuar la navegació entenem que s’accepta la nostra política de cookies. Per a més informació consulta %{link}."
655
700
  link_label: aquí
656
701
  ok: Hi estic d'acord
702
+ edit_link:
703
+ edit: Edita
657
704
  footer:
658
705
  made_with_open_source: Web feta amb <a target="_blank" href="https://github.com/decidim/decidim">programari lliure</a>.
659
706
  header:
@@ -721,6 +768,7 @@ ca:
721
768
  formats:
722
769
  day_of_month: "%b %d"
723
770
  day_of_week: "%a"
771
+ day_of_week_long: "%a %e"
724
772
  day_of_year: "%d/%m/%y"
725
773
  decidim_day_of_year: "%d %B %Y"
726
774
  decidim_short: "%d/%m/%Y %H:%M"
@@ -21,6 +21,8 @@ en:
21
21
  models:
22
22
  decidim/attachment_created_event: Attachment
23
23
  decidim/component_published_event: Active component
24
+ decidim/gamification/badge_earned_event: Badge earned
25
+ decidim/gamification/level_up_event: You've leveled up
24
26
  decidim/profile_updated_event: Profile updated
25
27
  activerecord:
26
28
  attributes:
@@ -158,6 +160,31 @@ en:
158
160
  name: Foo authorization
159
161
  granted_at: Granted at %{timestamp}
160
162
  started_at: Started at %{timestamp}
163
+ authorization_modals:
164
+ show:
165
+ expired:
166
+ authorize: Reauthorize with "%{authorization}"
167
+ explanation: Your authorization has expired. In order to perform this action, you need to be reauthorized with "%{authorization}".
168
+ title: Authorization has expired
169
+ incomplete:
170
+ cancel: Cancel
171
+ explanation: 'Even though you''re currently authorized with "%{authorization}", we need you to reauthorize because we lack the following data:'
172
+ invalid_field: "%{field}"
173
+ reauthorize: Reauthorize
174
+ title: Please reauthorize
175
+ missing:
176
+ authorize: Authorize with "%{authorization}"
177
+ explanation: In order to perform this action, you need to be authorized with "%{authorization}".
178
+ title: Authorization required
179
+ pending:
180
+ explanation: In order to perform this action, you need to be authorized with "%{authorization}", but your authorization is still in progress
181
+ resume: Check your "%{authorization}" authorization progress
182
+ title: Authorization is still in progress
183
+ unauthorized:
184
+ explanation: Sorry, you can't perform this action as some of your authorization data doesn't match.
185
+ invalid_field: "%{field} value %{value} isn't valid."
186
+ ok: Ok
187
+ title: Not authorized
161
188
  collapsible_list:
162
189
  hidden_elements_count:
163
190
  one: and 1 more
@@ -175,11 +202,25 @@ en:
175
202
  comments_enabled: Comments enabled
176
203
  dummy_global_attribute_1: Dummy Attribute 1
177
204
  dummy_global_attribute_2: Dummy Attribute 2
205
+ resources_permissions_enabled: Resources permissions enabled
178
206
  step:
179
207
  comments_blocked: Comments blocked
180
208
  dummy_step_attribute_1: Dummy Step Attribute 1
181
209
  dummy_step_attribute_2: Dummy Step Attribute 2
182
210
  contact: Contact
211
+ content_blocks:
212
+ footer_sub_hero:
213
+ name: Footer sub hero banner
214
+ hero:
215
+ name: Hero image
216
+ highlighted_content_banner:
217
+ name: Highlighted content banner
218
+ how_to_participate:
219
+ name: How to participate
220
+ stats:
221
+ name: Organization stats
222
+ sub_hero:
223
+ name: Sub hero banner
183
224
  core:
184
225
  actions:
185
226
  unauthorized: You are not authorized to perform this action
@@ -282,6 +323,17 @@ en:
282
323
  email_intro: 'There has been an update to "%{resource_title}". You can see it from this page:'
283
324
  email_outro: You have received this notification because you are following "%{resource_title}". You can unfollow it from the previous link.
284
325
  email_subject: An update to %{resource_title}
326
+ gamification:
327
+ badge_earned:
328
+ email_intro: Great job! You've earned the <a href="%{resource_url}">%{badge_name} badge</a> (level %{current_level}).
329
+ email_outro: You have received this notification because you made activity on our website.
330
+ email_subject: 'You''ve earned a new badge: %{badge_name}!'
331
+ notification_title: Great job! You've earned the <a href="%{resource_path}">%{badge_name} badge</a> (level %{current_level}).
332
+ level_up:
333
+ email_intro: Great job! You've reached level %{current_level} on the <a href="%{resource_url}">%{badge_name} badge</a>!
334
+ email_outro: You have received this notification because you made activity on our website.
335
+ email_subject: You've reached level %{current_level} on the %{badge_name} badge!
336
+ notification_title: Great job! You've reached level %{current_level} on the <a href="%{resource_path}">%{badge_name} badge</a>!
285
337
  notification_event:
286
338
  notification_title: An event occured to <a href="%{resource_path}">%{resource_title}</a>.
287
339
  users:
@@ -300,7 +352,8 @@ en:
300
352
  filters:
301
353
  linked_classes:
302
354
  all: All
303
- dummyresource: Dummy resources
355
+ collaborative_draft: Collaborative draft
356
+ dummy_resource: Dummy resources
304
357
  meeting: Meetings
305
358
  project: Projects
306
359
  proposal: Proposals
@@ -331,6 +384,19 @@ en:
331
384
  errors:
332
385
  error: There's an error in this field.
333
386
  remove_this_file: Remove this file
387
+ gamification:
388
+ badges:
389
+ invitations:
390
+ description_another: This user has invited %{score} users.
391
+ description_own: You have invited %{score} users.
392
+ explanation: Users get this badge by inviting other users.
393
+ name: Invitations
394
+ next_level_in: Invite %{score} more users to reach the next level!
395
+ unearned_another: This user hasn't invited any user yet.
396
+ unearned_own: You have invited no users yet.
397
+ description: Badges are recognitions to participant actions and progress in the platform. As you start discovering, participating and interacting in the platform, you will earn different badges.
398
+ level: Level %{level}
399
+ reached_top: You've reached the top level for this badge.
334
400
  invitations:
335
401
  create:
336
402
  error: There were some problems while inviting your friends
@@ -383,13 +449,13 @@ en:
383
449
  create:
384
450
  error: Conversation not started. Try again later
385
451
  index:
452
+ from: From
453
+ last_message_html: Last message <strong>%{time} ago</strong>
386
454
  no_conversations: You have no conversations yet
387
- title: Conversations
388
- reply:
389
- send: Send
390
- title: Reply
391
455
  show:
392
- title: Conversation with %{usernames}
456
+ conversation_with_html: Conversation with <strong>%{name}</strong>
457
+ reply: Reply
458
+ send: Send
393
459
  start:
394
460
  send: Send
395
461
  title: Start a conversation
@@ -502,6 +568,8 @@ en:
502
568
  profiles:
503
569
  default_officialization_text: This participant is publicly verified, his/her name or role has been verified to correspond with his/her real name and role
504
570
  show:
571
+ badges: Badges
572
+ conversations: Conversations
505
573
  followers: Followers
506
574
  following: Follows
507
575
  notifications: Notifications
@@ -545,30 +613,6 @@ en:
545
613
  filter_by: Filter by
546
614
  unfold: Unfold
547
615
  shared:
548
- action_authorization_modal:
549
- expired:
550
- authorize: Reauthorize with "%{authorization}"
551
- explanation: Your authorization has expired. In order to perform this action, you need to be reauthorized with "%{authorization}".
552
- title: Authorization has expired
553
- incomplete:
554
- cancel: Cancel
555
- explanation: 'Even though you''re currently authorized with "%{authorization}", we need you to reauthorize because we lack the following data:'
556
- invalid_field: "%{field}"
557
- reauthorize: Reauthorize
558
- title: Please reauthorize
559
- missing:
560
- authorize: Authorize with "%{authorization}"
561
- explanation: In order to perform this action, you need to be authorized with "%{authorization}".
562
- title: Authorization required
563
- pending:
564
- explanation: In order to perform this action, you need to be authorized with "%{authorization}", but your authorization is still in progress
565
- resume: Check your "%{authorization}" authorization progress
566
- title: Authorization is still in progress
567
- unauthorized:
568
- explanation: Sorry, you can't perform this action as some of your authorization data doesn't match.
569
- invalid_field: "%{field} value %{value} isn't valid."
570
- ok: Ok
571
- title: Not authorized
572
616
  embed_modal:
573
617
  close_window: Close window
574
618
  embed: Please paste this code in your page
@@ -608,6 +652,7 @@ en:
608
652
  invitation_instructions:
609
653
  accept: Accept invitation
610
654
  accept_until: This invitation will be due in %{due_date}.
655
+ decline: Decline invitation
611
656
  hello: Hello %{email},
612
657
  ignore: |-
613
658
  If you don't want to accept the invitation, please ignore this email.<br />
@@ -659,6 +704,8 @@ en:
659
704
  description_html: This site uses cookies. By continuing to browse the site, you agree to our use of cookies. Find out more about it %{link}.
660
705
  link_label: here
661
706
  ok: I agree
707
+ edit_link:
708
+ edit: Edit
662
709
  footer:
663
710
  made_with_open_source: Website made with <a target="_blank" href="https://github.com/decidim/decidim">free software</a>.
664
711
  header:
@@ -726,6 +773,7 @@ en:
726
773
  formats:
727
774
  day_of_month: "%b %d"
728
775
  day_of_week: "%a"
776
+ day_of_week_long: "%a %e"
729
777
  day_of_year: "%d.%m.%y"
730
778
  decidim_day_of_year: "%d %B %Y"
731
779
  decidim_short: "%d/%m/%Y %H:%M"