decidim-decidim_awesome 0.12.0 → 0.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +45 -0
  3. data/README.md +25 -15
  4. data/Rakefile +12 -0
  5. data/app/cells/concerns/decidim/decidim_awesome/global_menu_cell_override.rb +14 -2
  6. data/app/cells/concerns/decidim/decidim_awesome/proposal_l_cell_override.rb +5 -4
  7. data/app/cells/decidim/decidim_awesome/voting/voting_cards_proposal/show.erb +3 -3
  8. data/app/cells/decidim/decidim_awesome/voting/voting_cards_proposal/vote_block_for.erb +1 -1
  9. data/app/commands/concerns/decidim/decidim_awesome/admin/needs_constraint_helpers.rb +39 -5
  10. data/app/commands/decidim/decidim_awesome/admin/create_authorization_group.rb +42 -0
  11. data/app/commands/decidim/decidim_awesome/admin/create_custom_redirect.rb +10 -14
  12. data/app/commands/decidim/decidim_awesome/admin/create_menu_hack.rb +9 -8
  13. data/app/commands/decidim/decidim_awesome/admin/create_proposal_custom_field.rb +3 -8
  14. data/app/commands/decidim/decidim_awesome/admin/create_scoped_admin.rb +4 -8
  15. data/app/commands/decidim/decidim_awesome/admin/create_scoped_style.rb +3 -7
  16. data/app/commands/decidim/decidim_awesome/admin/destroy_authorization_group.rb +37 -0
  17. data/app/commands/decidim/decidim_awesome/admin/destroy_custom_redirect.rb +10 -9
  18. data/app/commands/decidim/decidim_awesome/admin/destroy_menu_hack.rb +8 -7
  19. data/app/commands/decidim/decidim_awesome/admin/destroy_proposal_custom_field.rb +7 -13
  20. data/app/commands/decidim/decidim_awesome/admin/destroy_scoped_admin.rb +7 -10
  21. data/app/commands/decidim/decidim_awesome/admin/destroy_scoped_style.rb +6 -11
  22. data/app/commands/decidim/decidim_awesome/admin/update_config.rb +12 -1
  23. data/app/commands/decidim/decidim_awesome/admin/update_custom_redirect.rb +11 -11
  24. data/app/commands/decidim/decidim_awesome/admin/update_menu_hack.rb +10 -8
  25. data/app/controllers/concerns/decidim/decidim_awesome/admin/maintenance_context.rb +0 -28
  26. data/app/controllers/concerns/decidim/decidim_awesome/enforce_access_authorizations.rb +49 -0
  27. data/app/controllers/concerns/decidim/decidim_awesome/needs_hashcash.rb +43 -0
  28. data/app/controllers/concerns/decidim/decidim_awesome/not_found_redirect.rb +2 -2
  29. data/app/controllers/decidim/decidim_awesome/admin/admin_authorizations_controller.rb +2 -2
  30. data/app/controllers/decidim/decidim_awesome/admin/checks_controller.rb +0 -4
  31. data/app/controllers/decidim/decidim_awesome/admin/config_controller.rb +2 -1
  32. data/app/controllers/decidim/decidim_awesome/admin/constraints_controller.rb +2 -0
  33. data/app/controllers/decidim/decidim_awesome/admin/custom_redirects_controller.rb +1 -2
  34. data/app/controllers/decidim/decidim_awesome/admin/force_authorizations_controller.rb +44 -0
  35. data/app/controllers/decidim/decidim_awesome/admin/hashcash_controller.rb +39 -0
  36. data/app/controllers/decidim/decidim_awesome/admin/menu_hacks_controller.rb +1 -1
  37. data/app/controllers/decidim/decidim_awesome/admin/{maintenance_controller.rb → private_data_controller.rb} +9 -9
  38. data/app/controllers/decidim/decidim_awesome/required_authorizations_controller.rb +51 -13
  39. data/app/controllers/decidim/decidim_awesome/utils_controller.rb +17 -0
  40. data/app/forms/concerns/decidim/decidim_awesome/proposals/admin/proposal_form_customizations.rb +59 -0
  41. data/app/forms/concerns/decidim/decidim_awesome/proposals/proposal_form_customizations.rb +28 -28
  42. data/app/forms/concerns/decidim/decidim_awesome/proposals/proposal_form_customizations_base.rb +36 -0
  43. data/app/forms/concerns/decidim/decidim_awesome/proposals/proposal_form_override.rb +7 -1
  44. data/app/forms/decidim/decidim_awesome/admin/authorization_group_form.rb +66 -0
  45. data/app/forms/decidim/decidim_awesome/admin/config_form.rb +23 -24
  46. data/app/forms/decidim/decidim_awesome/admin/constraint_form.rb +2 -0
  47. data/app/helpers/concerns/decidim/decidim_awesome/amendments_helper_override.rb +2 -1
  48. data/app/helpers/decidim/decidim_awesome/admin/config_constraints_helpers.rb +21 -18
  49. data/app/helpers/decidim/decidim_awesome/map_helper.rb +4 -2
  50. data/app/models/decidim/decidim_awesome/paper_trail_version.rb +1 -1
  51. data/app/overrides/decidim/assemblies/admin/assemblies/_form/add_visibility_callout.html.erb.deface +3 -0
  52. data/app/overrides/decidim/conferences/admin/conferences/_form/add_visibility_callout.html.erb.deface +3 -0
  53. data/app/overrides/decidim/devise/registrations/new/add_hashcash.html.erb.deface +3 -0
  54. data/app/overrides/decidim/devise/sessions/new/add_hashcash.html.erb.deface +3 -0
  55. data/app/overrides/decidim/participatory_processes/admin/participatory_process_groups/_form/add_visibility_callout.html.erb.deface +3 -0
  56. data/app/overrides/decidim/participatory_processes/admin/participatory_processes/_form/add_visibility_callout.html.erb.deface +3 -0
  57. data/app/overrides/decidim/shared/_login_modal/add_hashcash.html.erb.deface +3 -0
  58. data/app/overrides/layouts/decidim/_head/add_awesome_custom_styles.html.erb.deface +3 -0
  59. data/app/overrides/layouts/decidim/_head/add_awesome_tags.html.erb.deface +0 -2
  60. data/app/packs/entrypoints/decidim_decidim_awesome_hashcash.js +4 -0
  61. data/app/packs/src/decidim/decidim_awesome/admin/auto_edit.js +25 -6
  62. data/app/packs/src/decidim/decidim_awesome/admin/custom_fields_builder.js +4 -2
  63. data/app/packs/src/decidim/decidim_awesome/admin/verifications.js +6 -3
  64. data/app/packs/src/decidim/decidim_awesome/awesome_admin.js +0 -1
  65. data/app/packs/src/decidim/decidim_awesome/awesome_map/api/proposals_fetcher.js +1 -1
  66. data/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/controller.js +1 -1
  67. data/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/proposals_controller.js +1 -1
  68. data/app/packs/src/decidim/decidim_awesome/awesome_map/controls_ui.js +6 -6
  69. data/app/packs/src/decidim/decidim_awesome/awesome_map/load_map.js +1 -1
  70. data/app/packs/src/decidim/decidim_awesome/forms/autosave.js +3 -3
  71. data/app/packs/src/decidim/decidim_awesome/forms/custom_fields_renderer.js +1 -113
  72. data/app/packs/src/decidim/decidim_awesome/proposals/images.js +1 -1
  73. data/app/packs/src/vendor/form_builder_langs/ar-SA.lang +111 -0
  74. data/app/packs/src/vendor/form_builder_langs/ar-TN.lang +94 -0
  75. data/app/packs/src/vendor/form_builder_langs/ca-ES.lang +110 -0
  76. data/app/packs/src/vendor/form_builder_langs/cs-CZ.lang +105 -0
  77. data/app/packs/src/vendor/form_builder_langs/da-DK.lang +110 -0
  78. data/app/packs/src/vendor/form_builder_langs/de-DE.lang +109 -0
  79. data/app/packs/src/vendor/form_builder_langs/el-GR.lang +110 -0
  80. data/app/packs/src/vendor/form_builder_langs/en-US.lang +117 -0
  81. data/app/packs/src/vendor/form_builder_langs/es-ES.lang +103 -0
  82. data/app/packs/src/vendor/form_builder_langs/fa-IR.lang +108 -0
  83. data/app/packs/src/vendor/form_builder_langs/fi-FI.lang +107 -0
  84. data/app/packs/src/vendor/form_builder_langs/fr-FR.lang +117 -0
  85. data/app/packs/src/vendor/form_builder_langs/he-IL.lang +108 -0
  86. data/app/packs/src/vendor/form_builder_langs/hi-IN.lang +110 -0
  87. data/app/packs/src/vendor/form_builder_langs/hu-HU.lang +108 -0
  88. data/app/packs/src/vendor/form_builder_langs/id-ID.lang +110 -0
  89. data/app/packs/src/vendor/form_builder_langs/it-IT.lang +107 -0
  90. data/app/packs/src/vendor/form_builder_langs/ja-JP.lang +108 -0
  91. data/app/packs/src/vendor/form_builder_langs/my-MM.lang +108 -0
  92. data/app/packs/src/vendor/form_builder_langs/nb-NO.lang +94 -0
  93. data/app/packs/src/vendor/form_builder_langs/nl-NL.lang +94 -0
  94. data/app/packs/src/vendor/form_builder_langs/pl-PL.lang +122 -0
  95. data/app/packs/src/vendor/form_builder_langs/pt-BR.lang +110 -0
  96. data/app/packs/src/vendor/form_builder_langs/pu-IN.lang +110 -0
  97. data/app/packs/src/vendor/form_builder_langs/qz-MM.lang +108 -0
  98. data/app/packs/src/vendor/form_builder_langs/ro-RO.lang +94 -0
  99. data/app/packs/src/vendor/form_builder_langs/ru-RU.lang +110 -0
  100. data/app/packs/src/vendor/form_builder_langs/sl-SI.lang +110 -0
  101. data/app/packs/src/vendor/form_builder_langs/th-TH.lang +111 -0
  102. data/app/packs/src/vendor/form_builder_langs/tr-TR.lang +115 -0
  103. data/app/packs/src/vendor/form_builder_langs/uk-UA.lang +108 -0
  104. data/app/packs/src/vendor/form_builder_langs/vi-VN.lang +94 -0
  105. data/app/packs/src/vendor/form_builder_langs/zh-CN.lang +100 -0
  106. data/app/packs/src/vendor/form_builder_langs/zh-TW.lang +94 -0
  107. data/app/packs/src/vendor/hashcash.js +83 -0
  108. data/app/packs/src/vendor/sha1.js +143 -0
  109. data/app/packs/src/vendor/stamp.js +50 -0
  110. data/app/packs/stylesheets/decidim/decidim_awesome/admin/codemirror.scss +6 -1
  111. data/app/packs/stylesheets/decidim/decidim_awesome/admin/constraints.scss +5 -0
  112. data/app/packs/stylesheets/decidim/decidim_awesome/admin/custom_fields.scss +1 -2
  113. data/app/packs/stylesheets/decidim/decidim_awesome/forms/autosave.scss +2 -12
  114. data/app/presenters/decidim/decidim_awesome/private_data_presenter.rb +2 -2
  115. data/app/queries/decidim/decidim_awesome/space_constraint_finder.rb +43 -0
  116. data/app/serializers/concerns/decidim/decidim_awesome/proposals/proposal_serializer_methods.rb +3 -2
  117. data/app/services/decidim/decidim_awesome/access_authorization_service.rb +79 -0
  118. data/app/types/concerns/decidim/decidim_awesome/add_proposal_type_custom_fields.rb +2 -1
  119. data/app/views/decidim/decidim_awesome/admin/admin_accountability/index.html.erb +4 -4
  120. data/app/views/decidim/decidim_awesome/admin/admin_authorizations/callout.html.erb +2 -2
  121. data/app/views/decidim/decidim_awesome/admin/admin_authorizations/conflict.html.erb +4 -4
  122. data/app/views/decidim/decidim_awesome/admin/admin_authorizations/edit.html.erb +6 -5
  123. data/app/views/decidim/decidim_awesome/admin/checks/index.html.erb +6 -6
  124. data/app/views/decidim/decidim_awesome/admin/config/_authorization_options_form.html.erb +19 -0
  125. data/app/views/decidim/decidim_awesome/admin/config/_autoedit_box_label.html.erb +2 -2
  126. data/app/views/decidim/decidim_awesome/admin/config/_constraints.html.erb +3 -3
  127. data/app/views/decidim/decidim_awesome/admin/config/_form_admins.html.erb +4 -3
  128. data/app/views/decidim/decidim_awesome/admin/config/_form_editors.html.erb +1 -1
  129. data/app/views/decidim/decidim_awesome/admin/config/_form_proposal_custom_fields.html.erb +4 -4
  130. data/app/views/decidim/decidim_awesome/admin/config/_form_scoped_styles.html.erb +3 -3
  131. data/app/views/decidim/decidim_awesome/admin/config/_form_surveys.html.erb +40 -2
  132. data/app/views/decidim/decidim_awesome/admin/config/_form_verifications.html.erb +71 -9
  133. data/app/views/decidim/decidim_awesome/admin/constraints/_form.html.erb +5 -4
  134. data/app/views/decidim/decidim_awesome/admin/hashcash/_filters.html.erb +55 -0
  135. data/app/views/decidim/decidim_awesome/admin/hashcash/index.html.erb +33 -0
  136. data/app/views/decidim/decidim_awesome/admin/hashcash/ip_addresses.html.erb +29 -0
  137. data/app/views/decidim/decidim_awesome/admin/hashcash/show.html.erb +42 -0
  138. data/app/views/decidim/decidim_awesome/admin/menu_hacks/index.html.erb +2 -2
  139. data/app/views/decidim/decidim_awesome/admin/{maintenance → private_data}/_private_data.html.erb +2 -2
  140. data/app/views/decidim/decidim_awesome/admin/{maintenance/show.html.erb → private_data/index.html.erb} +2 -3
  141. data/app/views/decidim/decidim_awesome/admin/proposals/_private_body.html.erb +1 -1
  142. data/app/views/decidim/decidim_awesome/admin/shared/_visibility_notice.html.erb +8 -0
  143. data/app/views/decidim/decidim_awesome/amendments/_modal.html.erb +2 -2
  144. data/app/views/decidim/decidim_awesome/hashcash/_hidden_field.html.erb +4 -0
  145. data/app/views/decidim/decidim_awesome/required_authorizations/index.html.erb +14 -4
  146. data/app/views/layouts/decidim/decidim_awesome/_awesome_config.html.erb +2 -2
  147. data/app/views/layouts/decidim/decidim_awesome/admin/maintenance.html.erb +2 -11
  148. data/config/assets.rb +1 -0
  149. data/config/i18n-tasks.yml +2 -0
  150. data/config/locales/ca.yml +100 -37
  151. data/config/locales/cs.yml +100 -36
  152. data/config/locales/de.yml +98 -35
  153. data/config/locales/en.yml +117 -44
  154. data/config/locales/es.yml +100 -36
  155. data/config/locales/eu.yml +34 -39
  156. data/config/locales/fr.yml +77 -31
  157. data/config/locales/ja.yml +99 -36
  158. data/config/locales/sv.yml +49 -0
  159. data/lib/decidim/decidim_awesome/admin_engine.rb +9 -5
  160. data/lib/decidim/decidim_awesome/{authorizator.rb → authorizer.rb} +1 -1
  161. data/lib/decidim/decidim_awesome/awesome.rb +34 -24
  162. data/lib/decidim/decidim_awesome/awesome_helpers.rb +14 -5
  163. data/lib/decidim/decidim_awesome/checksums.yml +26 -40
  164. data/lib/decidim/decidim_awesome/config.rb +18 -7
  165. data/lib/decidim/decidim_awesome/context_analyzers/request_analyzer.rb +1 -1
  166. data/lib/decidim/decidim_awesome/engine.rb +14 -3
  167. data/lib/decidim/decidim_awesome/menu.rb +151 -138
  168. data/lib/decidim/decidim_awesome/middleware/current_config.rb +5 -10
  169. data/lib/decidim/decidim_awesome/test/initializer.rb +5 -2
  170. data/lib/decidim/decidim_awesome/test/shared_examples/config_examples.rb +1 -3
  171. data/lib/decidim/decidim_awesome/test/shared_examples/editor_examples.rb +2 -1
  172. data/lib/decidim/decidim_awesome/test/shared_examples/proposal_form_examples.rb +191 -0
  173. data/lib/decidim/decidim_awesome/test/shared_examples/summary_examples.rb +15 -4
  174. data/lib/decidim/decidim_awesome/version.rb +1 -1
  175. data/lib/tasks/decidim_awesome_upgrade_tasks.rake +4 -1
  176. data/package.json +7 -8
  177. metadata +86 -13
  178. data/app/controllers/concerns/decidim/decidim_awesome/check_login_authorizations.rb +0 -60
  179. data/app/packs/src/decidim/decidim_awesome/admin/verification_selects.js +0 -21
  180. data/config/rubocop/disabled.yml +0 -11
  181. data/config/rubocop/faker.yml +0 -480
  182. data/config/rubocop/rails.yml +0 -88
  183. data/config/rubocop/rspec.yml +0 -65
  184. data/config/rubocop/ruby.yml +0 -1210
@@ -0,0 +1,8 @@
1
+ <% awesome_link = link_to("Decidim Awesome", decidim_admin_decidim_awesome.config_path(:verifications), target: "_blank", data: { external_domain_link: false }) %>
2
+ <% has_constraint = Decidim::DecidimAwesome::SpaceConstraintFinder.new("force_authorization", participatory_space).query.exists? %>
3
+
4
+ <div class="row column">
5
+ <div class="callout <%= has_constraint ? "alert" : "info" %> mt-2">
6
+ <%= t("decidim.decidim_awesome.admin.visibility.#{has_constraint ? "restricted_html" : "info_html"}", awesome_link:) %>
7
+ </div>
8
+ </div>
@@ -7,12 +7,12 @@
7
7
  <div>
8
8
  <div class="instructions">
9
9
  <%= t("decidim.decidim_awesome.amendments.modal.explanation_html",
10
- proposal_link: present(@proposal).proposal_path + "#comments") %>
10
+ proposal_link: present(@proposal).proposal_path + "#comments") %>
11
11
 
12
12
  <% emendations = @proposal.emendations.not_hidden.where(decidim_amendments: { state: Decidim::Amendment.states["evaluating"] }) %>
13
13
  <% if current_component.current_settings&.amendments_visibility == "all" && emendations %>
14
14
  <%= t("decidim.decidim_awesome.amendments.modal.current_amendment_html",
15
- amendment_link: present(emendations&.first).proposal_path) %>
15
+ amendment_link: present(emendations&.first).proposal_path) %>
16
16
  <% end %>
17
17
  </div>
18
18
  </div>
@@ -0,0 +1,4 @@
1
+ <% if defined?(awesome_hashcash_bits) && awesome_hashcash_bits(zone) %>
2
+ <% append_javascript_pack_tag("decidim_decidim_awesome_hashcash") %>
3
+ <%= hashcash_hidden_field_tag %>
4
+ <% end %>
@@ -18,6 +18,11 @@
18
18
  <h2 class="h5 text-secondary">
19
19
  <%= method.fullname %>
20
20
  </h2>
21
+ <% if service.authorization_status(method) != :ok %>
22
+ <p class="text-alert">
23
+ <%= t(".authorization_options_invalid") %>
24
+ </p>
25
+ <% end %>
21
26
  </div>
22
27
  </div>
23
28
  <% end %>
@@ -58,9 +63,14 @@
58
63
  </div>
59
64
 
60
65
  <div class="space-y-8 prose-a:text-secondary mt-8">
61
- <%= translated_attribute(awesome_config[:force_authorization_help_text]).html_safe %>
66
+ <% help = authorization_help_text %>
67
+ <% if help.present? %>
68
+ <%= translated_attribute(help).html_safe %>
69
+ <% end %>
62
70
 
63
- <p class="prose-a:text-secondary italic">
64
- <%= t(".cancel", link: link_to("#{icon("logout-box-r-line", class: "inline-block").html_safe} #{t(".logout")}".html_safe, decidim.destroy_user_session_path(redirect_url:), method: :delete).html_safe).html_safe %>
65
- </p>
71
+ <% if current_user %>
72
+ <p class="prose-a:text-secondary italic">
73
+ <%= t(".cancel", link: link_to("#{icon("logout-box-r-line", class: "inline-block").html_safe} #{t(".logout")}".html_safe, decidim.destroy_user_session_path(redirect_url:), method: :delete).html_safe).html_safe %>
74
+ </p>
75
+ <% end %>
66
76
  </div>
@@ -4,7 +4,7 @@ window.DecidimAwesome.currentLocale = "<%= current_locale %>";
4
4
  window.DecidimAwesome.version = "<%= Decidim::DecidimAwesome::VERSION %>";
5
5
  window.DecidimAwesome.editorUploaderPath = "<%= decidim_decidim_awesome.editor_images_path %>";
6
6
  window.DecidimAwesome.renameScopeLabelPath = "<%= decidim_admin_decidim_awesome.rename_scope_label_path %>";
7
- window.DecidimAwesome.texts = {
7
+ window.DecidimAwesome.i18n = {
8
8
  "dragAndDropImage": "<%= j t(".drag_and_drop_image") %>",
9
9
  "autosavedSuccess": "<%= j t(".autosaved_success") %>",
10
10
  "autosavedError": "<%= j t(".autosaved_error") %>",
@@ -18,7 +18,7 @@ window.DecidimAwesome.texts = {
18
18
  "selectDeselectAll": "<%= j t(".select_deselect_all") %>",
19
19
  "officialAuthor": "<%= j t("decidim.blogs.models.post.fields.official_blog_post") %>",
20
20
  }
21
- window.DecidimAwesome.formBuilderLangsLocation = "<%= j Decidim::DecidimAwesome.form_builder_langs_location %>";
21
+ window.DecidimAwesome.formBuilderLangsLocation = "<%= decidim_decidim_awesome.form_builder_i18n_path(locale: nil) %>";
22
22
  <% if defined?(questionnaire) && questionnaire&.id %>
23
23
  window.DecidimAwesome.current_questionnaire = "edit_questionnaire_<%= questionnaire.id %>";
24
24
  <% if defined? visitor_already_answered? %>
@@ -1,19 +1,10 @@
1
1
  <%= render "layouts/decidim/decidim_awesome/admin/base" do %>
2
2
  <div class="item_show__header">
3
3
  <h2 class="item_show__header-title">
4
- <%= t("layouts.decidim.decidim_awesome.admin.maintenance.title", title: t(current_view, scope: "layouts.decidim.decidim_awesome.admin.maintenance.titles")) %>
5
-
6
- <% available_views.each do |view, parts| %>
7
- <% next if view == current_view %>
8
-
9
- <%= link_to parts[:path], class: "button button__secondary button__xs tiny button--title" do %>
10
- <%= icon parts[:icon] %>
11
- <%= parts[:title] %>
12
- <% end %>
13
- <% end %>
4
+ <%= t("layouts.decidim.decidim_awesome.admin.maintenance.title", title: t(controller_name, scope: "layouts.decidim.decidim_awesome.admin.maintenance.titles")) %>
14
5
  </h2>
15
6
  </div>
16
- <div class="card">
7
+ <div class="card mb-8">
17
8
  <%= yield %>
18
9
  </div>
19
10
  <% end %>
data/config/assets.rb CHANGED
@@ -8,6 +8,7 @@ Decidim::Webpacker.register_entrypoints(
8
8
  # override the Decidim entry point for decidim so we can define a custom createEditor method
9
9
  decidim_editor: "#{base_path}/app/packs/entrypoints/decidim_editor.js",
10
10
  decidim_decidim_awesome: "#{base_path}/app/packs/entrypoints/decidim_decidim_awesome.js",
11
+ decidim_decidim_awesome_hashcash: "#{base_path}/app/packs/entrypoints/decidim_decidim_awesome_hashcash.js",
11
12
  decidim_admin_decidim_awesome: "#{base_path}/app/packs/entrypoints/decidim_admin_decidim_awesome.js",
12
13
  decidim_admin_decidim_awesome_global: "#{base_path}/app/packs/entrypoints/decidim_admin_decidim_awesome_global.js",
13
14
  decidim_decidim_awesome_map: "#{base_path}/app/packs/entrypoints/decidim_decidim_awesome_map.js",
@@ -12,6 +12,7 @@ data:
12
12
  - "<%= %x[bundle info decidim-blogs --path].chomp %>/config/locales/%{locale}.yml"
13
13
 
14
14
  ignore_unused:
15
+ - "active_hashcash.*"
15
16
  - "decidim.admin.actions.manage"
16
17
  - "decidim.admin.filters.admin_accountability.*"
17
18
  - "decidim.admin.filters.search_placeholder.*"
@@ -19,6 +20,7 @@ ignore_unused:
19
20
  - "activemodel.attributes.custom_redirect.*"
20
21
  - "activemodel.attributes.user.*"
21
22
  - activemodel.attributes.organization.awesome_admins_available_authorizations
23
+ - activemodel.attributes.force_authorization.*
22
24
  - "decidim.components.decidim_awesome.name"
23
25
  - "decidim.components.awesome_iframe.settings.*"
24
26
  - "decidim.components.awesome_map.settings.*"
@@ -1,4 +1,7 @@
1
1
  ca:
2
+ active_hashcash:
3
+ submit_filter: Filtra
4
+ waiting_label: Esperant verificació...
2
5
  activemodel:
3
6
  attributes:
4
7
  config:
@@ -6,10 +9,13 @@ ca:
6
9
  allow_images_in_editors: Permet imatges a l'editor HTML
7
10
  allow_images_in_proposals: Permet imatges a l'editor de propostes
8
11
  allow_videos_in_editors: Permet vídeos a l'editor HTML
12
+ authorization_options_form: Opcions d'autorització
9
13
  auto_save_forms: Desa automàticament els formularis a l'emmagatzematge local
10
- force_authorization_after_login: Forçar autorització després d'iniciat sessió/registre
11
- force_authorization_help_text: Text d'ajuda per la pàgina d'autorització
12
- force_authorization_with_any_method: Permetre l'accés si es concedeix alguna de les autoritzacions (per defecte, totes són necessàries)
14
+ force_authorizations: Grup d'autorització %{id}
15
+ hashcash_login: Activa la protecció HashCash antibot per usuaris existents (inici sessió)
16
+ hashcash_login_bits: Nombre de bits per l'algoritme Hashcash (inici sessió)
17
+ hashcash_signup: Activa la protecció HashCash antibot per usuaris existents (registre)
18
+ hashcash_signup_bits: Nombre de bits per l'algoritme Hashcash (registre)
13
19
  intergram_auto_no_response: Un missatge que s'envia un minut després que la usuària hagi enviat el seu primer missatge i no s'hagi rebut cap resposta
14
20
  intergram_auto_response: Un missatge que s'envia immediatament després que la usuària enviï el seu primer missatge
15
21
  intergram_chat_id: ID de xat
@@ -35,6 +41,7 @@ ca:
35
41
  validate_title_min_length: Nombre de caràcters mínims requerits pel títol de la proposta
36
42
  validate_title_start_with_caps: Força que el text del títol s'inici amb una majúscula
37
43
  constraint:
44
+ application_context: Només per
38
45
  component_id: o específicament a
39
46
  component_manifest: Només en components de tipus
40
47
  participatory_space_manifest: Aplica-ho a espais participatius de tipus
@@ -130,7 +137,7 @@ ca:
130
137
  sort_orders_enabled: Opcions d'ordenació actives
131
138
  voting_cards_box_title: Títol per la cabina de votació
132
139
  voting_cards_box_title_help: L'opció per defecte és 'Votar a aquesta proposta'. Utilitzeu '-' per amagar-la.
133
- voting_cards_instructions: Instruccions d'ajuda en el suport/votació (finestra modal que es pot tancar).
140
+ voting_cards_instructions: Instruccions d'ajuda en el suport/votació (finestra modal que es pot tancar)
134
141
  voting_cards_instructions_help: L'opció per defecte és 'Llegeix les normes de la votació amb atenció per entendre com s'utilitzarà el teu vot per %{organization}"
135
142
  voting_cards_show_abstain: Afegeix l'opció d'abstenció
136
143
  voting_cards_show_modal_help: Mostra la finestra modal d'instruccions/ajuda quan es faci clic al suport
@@ -206,7 +213,10 @@ ca:
206
213
  index:
207
214
  admin_head_tags: Etiquetes Awesome incloses a la capçalera de l'aplicació d'administració
208
215
  decidim-admin: Del mòdul Admin
216
+ decidim-assemblies: Del mòdul Assemblies
217
+ decidim-conferences: Del mòdul Conferences
209
218
  decidim-core: Del mòdul Core
219
+ decidim-participatory_processes: Del mòdul de Participatory Processes
210
220
  decidim-proposals: Del mòdul Proposals
211
221
  decidim_version: Versió de Decidim %{version}
212
222
  errors:
@@ -221,6 +231,7 @@ ca:
221
231
  Pots iniciar el procés ara i es durà a terme en segon pla.
222
232
  start_image_migrations: "\U0001F449 Iniciar el procés de migració ara"
223
233
  config:
234
+ anonymous: Usuaris no identificats
224
235
  caution: 'NOTA: Aquesta funció modifica en gran mesura alguns comportaments predeterminats que podrien provocar resultats inesperats. Utilitzeu-lo amb precaució!'
225
236
  constraints:
226
237
  add_condition: Afegeix una restricció
@@ -229,6 +240,9 @@ ca:
229
240
  delete: Esborra
230
241
  edit: Edita
231
242
  title: 'S''aplica només en aquests casos:'
243
+ create_force_authorization:
244
+ error: Error en crear un nou grup d'autorització! %{error}
245
+ success: Grup d'autorització %{key} creat correctament
232
246
  create_proposal_custom_field:
233
247
  error: Error en crear una nova caixa de "camps personalitzats"! %{error}
234
248
  success: 'Caixa de "camps personalitzats" %{key} creada correctament'
@@ -238,6 +252,9 @@ ca:
238
252
  create_scoped_style:
239
253
  error: Error en crear una nova caixa CSS! %{error}
240
254
  success: Caixa CSS %{key} creada correctament
255
+ destroy_force_authorization:
256
+ error: Error en eliminar el grup d'autorització! %{error}
257
+ success: Grup d'autorització %{key} eliminat correctament
241
258
  destroy_proposal_custom_field:
242
259
  error: Error en eliminar la caixa de "camps personalitzats"! %{error}
243
260
  success: 'Caixa de "camps personalitzats" %{key} eliminada correctament'
@@ -247,6 +264,7 @@ ca:
247
264
  destroy_scoped_style:
248
265
  error: Error en eliminar una caixa CSS! %{error}
249
266
  success: Caixa CSS %{key} eliminada correctament
267
+ force_authorizations: Grups d'autoritzacions
250
268
  form:
251
269
  additional_proposal_sortings:
252
270
  enable_all: Activa totes les opcions d'ordenació addicionals
@@ -256,14 +274,23 @@ ca:
256
274
  errors:
257
275
  incorrect_css: 'El CSS de la caixa #%{key} no és vàlid'
258
276
  incorrect_json: 'La sintaxi JSON de la caixa #%{key} és invàlida'
277
+ force_authorization_help_text: Text d'ajuda per la pàgina d'autorització
259
278
  help:
260
279
  allow_images_in_editors: Això afegirà una icona per pujar arxius a l'editor HTML
261
280
  allow_images_in_proposals: Això permetrà pujar imatges a l'editor de propostes, disponible per qualsevol usuari
262
281
  allow_videos_in_editors: Això afegirà una icona per enllaçar vídeos a l'editor HTML
263
282
  auto_save_forms: Això farà servir l'emmagatzematge local del navegador per desar automàticament les dades introduïdes pels usuaris a les enquestes i altres formularis mentre les omplen. Les dades es restauraran en una futura visita amb el mateix navegador en cas que no s'enviï el formulari. Si s’envia el formulari, s’eliminaran les dades locals. Si els usuaris eliminen les seves dades del navegador, tampoc es restauraran.
264
283
  drag_and_drop_supported: Quan es pugin imatges, es pot fer a través del mètode de "arrossegar i deixar anar". Les imatges seran pujades al servidor i inserides com recursos externs (no es fa servir codificació en línia base64).
265
- force_authorization_after_login: 'Si està habilitat, les usuàries seran redireccionades a la pàgina d''autorització després de l''inici de sessió o registre si algunes de les autoritzacions especificades no són concedides. Això és útil si voleu forçar les usuàries a que es verifiquin a través d''una autorització específica abans que puguin iniciar sessió en qualsevol moment (per exemple: per prevenir spam).'
266
284
  force_authorization_help_text: Afegeix un text personalitzat per explicar per què cal l'autorització. Assegureu-vos també d'afegir un mode de contacte en cas que les usuàries necessitin ajuda.
285
+ hashcash_i18n_key: 'Podeu personalitzar el text del botó que es mostra als usuaris a les pàgines d''iniciar sessió/registre amb la clau i18n %{key}'
286
+ hashcash_login: |
287
+ Protegeix les aplicacions Rails contra bots i atacs de força bruta sense molestar els humans.
288
+ Hashcash és un sistema de prova de treball que requereix que els usuaris resolguin un trencaclosques computacional (realitzat automàticament pel navegador) abans de poder registrar-se.
289
+ hashcash_login_bits: Aquest paràmetre defineix el nombre de bits que l'algoritme Hashcash utilitzarà per generar la prova de treball. Es recomana utilitzar un valor entre 16 (fàcil) i 30 (extremadament difícil) bits. El valor per defecte per als formularis d'inici de sessió és %{bits} bits.
290
+ hashcash_signup: |
291
+ Protegeix les aplicacions Rails contra bots i atacs de força bruta sense molestar els humans.
292
+ Hashcash és un sistema de prova de treball que requereix que els usuaris resolguin un trencaclosques computacional (realitzat automàticament pel navegador) abans de poder registrar-se.
293
+ hashcash_signup_bits: Aquest paràmetre defineix el nombre de bits que l'algoritme Hashcash utilitzarà per generar la prova de treball. Es recomana utilitzar un valor entre 16 (fàcil) i 30 (extremadament difícil) bits. El valor per defecte per als formularis de registre és %{bits} bits.
267
294
  intergram_about: Intergram utilitza el Telegram Messenger per gestionar un widget de xat en viu de suport incrustat a la part inferior de la pàgina.
268
295
  intergram_config: 'Convida a la <a href="https://web.telegram.org/#/im?p=@IntergramBot">@Intergram bot</a> al teu grup o comença un xat amb ella directament. <a href="https://github.com/idoco/intergram#embed-intergram-in-your-website-with-these-2-simple-steps">+ info</a>'
269
296
  original_editor_override: Desde la versió 0.26, és possible (per administradors només) pujar imatges als editors de text enriquit. Per tant, les opcions d'imatges disponibles en aquesta pàgina només afecten a la part pública de la web (les administradores sempre ho tenen activat).
@@ -290,12 +317,20 @@ ca:
290
317
  validate_title_max_marks_together: 'Limiteu el nombre de signes d''interrogació i d''exclamació que es poden escriure junts. És a dir: si és 2, aleshores ''!!!'' no es permetrà al text'
291
318
  validate_title_min_length: El títol sempre és obligatori i aquest número no pot ser zero
292
319
  verifications_html: |
293
- Aquí pots fer alguns ajustaments en el procés de verificació.<br>
294
- <b>NOTA:</b> Tingues en compte que canviar aquests paràmetres pot impedir que algunes usuàries accedeixin a la plataforma. Fes-ho servir amb precaució!<br><br>
295
- Tingues en compte també, que aquests paràmetres s'apliquen a totes les usuàries. Les administradores sempre tindran accés al tauler dadministració.
320
+ Aquí podeu establir restriccions d'accés addicionals a espais o components participatius que obligaran els usuaris a ser verificats abans d'accedir a determinades ubicacions (per exemple: per evitar correu brossa).<br>
321
+ Les restriccions s'apliquen a tots els usuaris, però els administradors sempre tindran accés al tauler /admin.
296
322
  validators:
297
323
  body: Validacions d'entrada per l'usuari en el camp cos de la proposta
298
324
  title: Validacions d'entrada per l'usuari en el camp títol de la proposta
325
+ form_force_authorizations:
326
+ delete: Esborra
327
+ force_authorizations_html: |
328
+ Definiu grups de verificació. Cada grup pot requerir que els usuaris siguin verificats per un o més mètodes per accedir a àrees específiques de la plataforma.
329
+ help: Podeu definir grups de mètodes d'autorització i restringir l'accés en funció d'aquests.
330
+ new: Afegeix un nou grup d'autorització
331
+ remove: Elimina aquest grup d'autorització
332
+ sure_to_remove: Estàs segura que vols eliminar aquest grup d'autoritzacions?
333
+ title: 'Restringeix l''accés amb:'
299
334
  form_proposal_custom_fields:
300
335
  delete: Esborra
301
336
  new: Afegeix una nova caixa de "camps personalitzats"
@@ -342,6 +377,7 @@ ca:
342
377
  update:
343
378
  error: Error actualitzant la configuració! %{error}
344
379
  success: Configuració actualitzada correctament
380
+ user_logged_in: Usuaris amb la sessió iniciada
345
381
  constraints:
346
382
  create:
347
383
  error: Error creant una nova restricció
@@ -398,37 +434,25 @@ ca:
398
434
  update:
399
435
  error: 'Error en actualitzar la redirecció: %{error}'
400
436
  success: Redirecció actualitzada correctament
401
- maintenance:
402
- private_data:
403
- component: Espai / Component
404
- confirm_delete: Segur que voleu suprimir totes les dades privades d'aquest recurs? Aquesta acció no es pot desfer.
405
- delete: Esborrar-ho tot
406
- destroying_private_data: Les dades privades de %{title} s'han programat per ser destruïdes. Si us plau, torneu a comprovar d'aquí a uns minuts.
407
- done: Fet
437
+ hashcash:
438
+ filters:
439
+ ip_addresses: Veure les adreces IP
440
+ stamps: Veure els segells de Hashcash
441
+ index:
442
+ bits: Bits
443
+ created_at: Creada el
408
444
  help_html: |
409
- Aquesta eina permet esborrar totes les dades privades d'un espai o component participatiu concret. Aquesta acció és irreversible i eliminarà totes les dades privades de la base de dades.
445
+ Aquesta pàgina mostra els segells Hashcash que s'han detectat al sistema. Hashcash és un sistema de prova de treball que requereix que els usuaris resolguin un trencaclosques computacional (realitzat automàticament pel navegador) abans de poder registrar-se.
410
446
  <br><br>
411
- <strong>Què es consideren dades privades?</strong>
412
- <br>
413
- Les dades privades són qualsevol informació que no està disponible públicament i només és accessible per als administradors. Això, de moment, inclou la informació del camps personalitzats privats.
414
- <br><br>
415
- <strong>Què passa quan suprimeixo dades privades?</strong>
416
- <br>
417
- Quan suprimiu les dades privades, tota la informació privada de l'espai o component participatiu seleccionat s'eliminarà permanentment de la base de dades. Un registre d'aquesta acció s'emmagatzemarà al sistema amb finalitats d'auditoria (pero no les dades en si).
418
- <br><br>
419
- <strong>Què passa amb les dades públiques?</strong>
420
- <br>
421
- Les dades públiques no es veuran afectades per aquesta acció. Només s'eliminaran les dades privades.
422
- <br><br>
423
- <strong>Hi ha un temps mínim d'espera abans de suprimir les dades privades?</strong>
424
- <br>
425
- Sí, no podeu suprimir dades privades si l'última actualització va ser fa menys de %{time_ago}. Podeu canviar aquesta configuració al fitxer inicialitzador.
426
- items_count: Total afectats
427
- last_date: Última actualització
428
- no_data: No s'han trobat dades privades més antigues que fa %{time_ago}
429
- not_destroyable: Aquest recurs encara no es pot destruir
430
- removing: Eliminant...
431
- time_ago: "fa %{time}"
447
+ Cada entrada d'aquesta llista representa un segell Hashcash que ha estat generat per un usuari cada vegada que s'ha registrat o ha iniciat la sessió.
448
+ ip_address: Adreça IP
449
+ no_data: No s'han trobat segells de Hashcash
450
+ request_path: Ruta de la sol·licitud
451
+ ip_addresses:
452
+ help_html: Aquesta pàgina enumera totes les adreces IP que s'han detectat al sistema, ordenades pel nombre de segells Hashcash que han generat. <br><br> Cada segell és una acció d'inici de sessió o de registre per part d'un usuari. Podeu utilitzar aquesta informació per detectar activitats sospitoses.
453
+ ip_address: Adreça IP
454
+ no_data: No s'han trobat adreces IP
455
+ stamps: Segells hashcash
432
456
  menu:
433
457
  admins: Administradores acotades
434
458
  custom_redirects: Redireccions personalitzades
@@ -436,6 +460,7 @@ ca:
436
460
  livechat: Xat en directe
437
461
  maintenance:
438
462
  checks: Compatibilitat de sistema
463
+ hashcash: Segells hashcash
439
464
  maintenance: Manteniment
440
465
  private_data: Dades privades
441
466
  menu_hacks: Retocs al menú
@@ -472,6 +497,8 @@ ca:
472
497
  title: Bloc de menú global a la home
473
498
  menu:
474
499
  title: Menú principal
500
+ mobile_menu:
501
+ title: Menú mòbil
475
502
  new: Nou ítem
476
503
  remove: Eliminar addició
477
504
  remove_hack: Eliminar retoc
@@ -487,6 +514,37 @@ ca:
487
514
  verification_modal:
488
515
  authorizations_for: Autoritzacions per a %{user}
489
516
  close: Tanca
517
+ private_data:
518
+ private_data:
519
+ component: Espai / Component
520
+ confirm_delete: Segur que voleu suprimir totes les dades privades d'aquest recurs? Aquesta acció no es pot desfer.
521
+ delete: Esborrar-ho tot
522
+ destroying: Les dades privades de %{title} s'han programat per ser destruïdes. Si us plau, torneu a comprovar d'aquí a uns minuts.
523
+ done: Fet
524
+ help_html: |
525
+ Aquesta eina permet esborrar totes les dades privades d'un espai o component participatiu concret. Aquesta acció és irreversible i eliminarà totes les dades privades de la base de dades.
526
+ <br><br>
527
+ <strong>Què es consideren dades privades?</strong>
528
+ <br>
529
+ Les dades privades són qualsevol informació que no està disponible públicament i només és accessible per als administradors. Això, de moment, inclou la informació del camps personalitzats privats.
530
+ <br><br>
531
+ <strong>Què passa quan suprimeixo dades privades?</strong>
532
+ <br>
533
+ Quan suprimiu les dades privades, tota la informació privada de l'espai o component participatiu seleccionat s'eliminarà permanentment de la base de dades. Un registre d'aquesta acció s'emmagatzemarà al sistema amb finalitats d'auditoria (pero no les dades en si).
534
+ <br><br>
535
+ <strong>Què passa amb les dades públiques?</strong>
536
+ <br>
537
+ Les dades públiques no es veuran afectades per aquesta acció. Només s'eliminaran les dades privades.
538
+ <br><br>
539
+ <strong>Hi ha un temps mínim d'espera abans de suprimir les dades privades?</strong>
540
+ <br>
541
+ Sí, no podeu suprimir dades privades si l'última actualització va ser fa menys de %{time_ago}. Podeu canviar aquesta configuració al fitxer inicialitzador.
542
+ items_count: Total afectats
543
+ last_date: Última actualització
544
+ no_data: No s'han trobat dades privades més antigues que fa %{time_ago}
545
+ not_destroyable: Aquest recurs encara no es pot destruir
546
+ removing: Eliminant...
547
+ time_ago: "fa %{time}"
490
548
  proposal_custom_fields:
491
549
  menu:
492
550
  title: Camps públics
@@ -501,6 +559,9 @@ ca:
501
559
  scoped_styles:
502
560
  menu:
503
561
  title: Interfície pública
562
+ visibility:
563
+ info_html: Podeu gestionar restriccions d'accés addicionals mitjançant verificacions amb %{awesome_link}.
564
+ restricted_html: Aquest espai utilitza restriccions d'accés addicionals amb %{awesome_link}.
504
565
  admin_log:
505
566
  component:
506
567
  destroy_private_data: "%{user_name} ha destruït %{count} elements de dades privades per a %{resource_name} a %{space_name}"
@@ -574,6 +635,7 @@ ca:
574
635
  proposal_private_custom_fields_disclosure: Aquesta informació no es publicarà
575
636
  required_authorizations:
576
637
  index:
638
+ authorization_options_invalid: Malauradament, tot i que teniu aquesta autorització, les dades utilitzades per verificar-vos no són vàlides en aquest context.
577
639
  cancel: Això ho faré en un altre moment, %{link}.
578
640
  granted_title: Verificacions concedides
579
641
  logout: deixa'm tancar la sessió
@@ -640,6 +702,7 @@ ca:
640
702
  title: 'Eines de manteniment: %{title}'
641
703
  titles:
642
704
  checks: Anàlisi de compatibilitat amb el sistema
705
+ hashcash: Segells hashcash
643
706
  private_data: Neteja de dades privades
644
707
  awesome_config:
645
708
  amendments: Esmenes