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
@@ -24,7 +24,8 @@ module Decidim
24
24
  return @custom_config if @custom_config
25
25
 
26
26
  @custom_config = Config.new(object.organization)
27
- @custom_config.context_from_component(object.component)
27
+ @custom_config.context_from_component!(object.component)
28
+ @custom_config.application_context!(current_user: object.creator) if object.respond_to?(:creator)
28
29
  @custom_config
29
30
  end
30
31
 
@@ -10,12 +10,12 @@
10
10
  </span>
11
11
  <div class="dropdown-pane" id="export-dropdown" data-dropdown data-auto-focus="true" data-close-on-click="true">
12
12
  <ul class="vertical menu add-components">
13
- <% %w{CSV JSON Excel}.each do |format| %>
13
+ <% %w(CSV JSON Excel).each do |format| %>
14
14
  <li class="exports--format--<%= format.downcase %> exports--registrations">
15
15
  <%= link_to t("decidim.decidim_awesome.admin.admin_accountability.exports.export_as", export_format:
16
- format.upcase), export_admin_accountability_path(export_params.merge(format: format)),
17
- method: :post,
18
- class: "focus-visible:outline-none" %>
16
+ format.upcase), export_admin_accountability_path(export_params.merge(format:)),
17
+ method: :post,
18
+ class: "focus-visible:outline-none" %>
19
19
  </li>
20
20
  <% end %>
21
21
  </ul>
@@ -1,3 +1,3 @@
1
1
  <%= cell("decidim/announcement",
2
- local_assigns[:message].presence || t("decidim.decidim_awesome.admin.admin_authorizations.#{i18n_key}", name: workflow&.fullname, user: user.name),
3
- callout_class: klass) %>
2
+ local_assigns[:message].presence || t("decidim.decidim_awesome.admin.admin_authorizations.#{i18n_key}", name: workflow&.fullname, user: user.name),
3
+ callout_class: klass) %>
@@ -1,5 +1,5 @@
1
1
  <%= cell("decidim/announcement", {
2
- title: t("decidim.decidim_awesome.admin.admin_authorizations.conflict"),
3
- body: t("decidim.decidim_awesome.admin.admin_authorizations.conflict_help_html", user: link_to(conflict.user.name, decidim_admin.officializations_path(q: { name_or_nickname_or_email_cont: conflict.user.email })))
4
- },
5
- callout_class: "alert") %>
2
+ title: t("decidim.decidim_awesome.admin.admin_authorizations.conflict"),
3
+ body: t("decidim.decidim_awesome.admin.admin_authorizations.conflict_help_html", user: link_to(conflict.user.name, decidim_admin.officializations_path(q: { name_or_nickname_or_email_cont: conflict.user.email })))
4
+ },
5
+ callout_class: "alert") %>
@@ -1,10 +1,11 @@
1
1
  <div class="form-defaults">
2
+ <%= callout if defined?(callout) %>
2
3
  <%= decidim_form_for(handler,
3
- builder: Decidim::AuthorizationFormBuilder,
4
- as: "authorization_handler",
5
- url: decidim_admin_decidim_awesome.admin_authorization_path(id: user.id, handler: params[:handler]),
6
- method: :patch,
7
- remote: true) do |form| %>
4
+ builder: Decidim::AuthorizationFormBuilder,
5
+ as: "authorization_handler",
6
+ url: decidim_admin_decidim_awesome.admin_authorization_path(id: user.id, handler: params[:handler]),
7
+ method: :patch,
8
+ remote: true) do |form| %>
8
9
  <% if lookup_context.exists?(handler.to_partial_path, [], true) %>
9
10
  <%= render partial: handler.to_partial_path, locals: { handler:, form: } %>
10
11
  <% else %>
@@ -46,9 +46,9 @@
46
46
  <strong><%= t ".head_tags" %></strong>
47
47
  <ul class="vertical menu">
48
48
  <% {
49
- CSS: "//head/link[@rel='stylesheet'][contains(@href,'decidim_decidim_awesome')]",
50
- JavaScript: "//script[contains(@src,'decidim_decidim_awesome')]"
51
- }.each do |part, xpath| %>
49
+ CSS: "//head/link[@rel='stylesheet'][contains(@href,'decidim_decidim_awesome')]",
50
+ JavaScript: "//script[contains(@src,'decidim_decidim_awesome')]"
51
+ }.each do |part, xpath| %>
52
52
  <li>
53
53
  <%= part %>
54
54
  <% if head.xpath(xpath).count.positive? %>
@@ -66,9 +66,9 @@
66
66
  <strong><%= t ".admin_head_tags" %></strong>
67
67
  <ul class="vertical menu">
68
68
  <% {
69
- CSS: "//head/link[@rel='stylesheet'][contains(@href,'decidim_admin_decidim_awesome')]",
70
- JavaScript: "//script[contains(@src,'decidim_admin_decidim_awesome')]"
71
- }.each do |part, xpath| %>
69
+ CSS: "//head/link[@rel='stylesheet'][contains(@href,'decidim_admin_decidim_awesome')]",
70
+ JavaScript: "//script[contains(@src,'decidim_admin_decidim_awesome')]"
71
+ }.each do |part, xpath| %>
72
72
  <li>
73
73
  <%= part %>
74
74
  <% if admin_head.xpath(xpath).count.positive? %>
@@ -0,0 +1,19 @@
1
+ <%
2
+ handler_name = local_assigns[:handler_name]
3
+ schema = form.object.options_schema(handler_name)
4
+ attributes = form.object.options_attributes(handler_name)
5
+ %>
6
+
7
+ <%= form.fields_for(:authorization_handlers_options) do |options_form| %>
8
+ <%= options_form.fields_for(handler_name, schema) do |attribute_options_form| %>
9
+ <% attributes.each do |name, attribute| %>
10
+ <%= settings_attribute_input(
11
+ attribute_options_form,
12
+ attribute,
13
+ name,
14
+ "decidim.authorization_handlers.#{handler_name}.fields",
15
+ tabs_prefix: "#{name}_tabs_prefix"
16
+ ) %>
17
+ <% end %>
18
+ <% end %>
19
+ <% end %>
@@ -1,7 +1,7 @@
1
1
  <%= label_tag var do %>
2
2
  <%= t("config.#{var}",
3
- scope: "activemodel.attributes",
4
- id: "<span class='awesome-auto-edit' data-var='#{var}' data-scope='#{scope}' data-key='#{key}'>#{key}</span>").html_safe %>
3
+ scope: "activemodel.attributes",
4
+ id: "<span class='awesome-auto-edit' data-var='#{var}' data-scope='#{scope}' data-key='#{key}'>#{key}</span>").html_safe %>
5
5
 
6
6
  <%= icon_link_to "pencil-line", "#", t("edit_label", scope: "decidim.decidim_awesome.admin.config.form"), class: "awesome-auto-edit", data: { "scope" => "#{scope}" } %>
7
7
 
@@ -5,7 +5,7 @@
5
5
  <span class="label warning"><%= t ".always" %></span>
6
6
  <% end %>
7
7
 
8
- <ul class="constraints-list<%= " inactive" if constraints&.detect{|c| c.settings["participatory_space_manifest"]=="none" } %>">
8
+ <ul class="constraints-list<%= " inactive" if constraints&.find { |c| c.settings["participatory_space_manifest"] == "none" } %>">
9
9
  <% constraints&.each do |constraint| %>
10
10
  <li>
11
11
  <% constraint.settings.reverse_each do |k, val| %>
@@ -13,7 +13,7 @@
13
13
  <% end %>
14
14
 
15
15
  <div class="inline-flex items-center gap-1 ml-10">
16
- <button id="<%= "edit-#{key}-#{constraint.id}" %>" type="button" name="button" class="edit-condition button button__xs button__transparent-secondary" data-dialog-open="<%= "edit-modal-#{key}" %>" data-constraints-url="<%= constraint_path(id: constraint.id, key: key) %>">
16
+ <button id="<%= "edit-#{key}-#{constraint.id}" %>" type="button" name="button" class="edit-condition button button__xs button__transparent-secondary" data-dialog-open="<%= "edit-modal-#{key}" %>" data-constraints-url="<%= constraint_path(id: constraint.id, key:) %>">
17
17
  <%= t ".edit" %>
18
18
  </button>
19
19
 
@@ -23,7 +23,7 @@
23
23
  <% end %>
24
24
  </ul>
25
25
 
26
- <button id="<%= "new-#{key}" %>" type="button" name="button" class="add-condition button button__xs button__secondary" data-dialog-open="<%= "new-modal-#{key}" %>" data-constraints-url="<%= new_constraint_path(key: key) %>">
26
+ <button id="<%= "new-#{key}" %>" type="button" name="button" class="add-condition button button__xs button__secondary" data-dialog-open="<%= "new-modal-#{key}" %>" data-constraints-url="<%= new_constraint_path(key:) %>">
27
27
  <%= icon "add-box-line" %>
28
28
  <%= t ".add_condition" %>
29
29
  </button>
@@ -4,10 +4,11 @@
4
4
 
5
5
  <% form.object.scoped_admins&.each do |key, value| %>
6
6
  <div class="card p-4 scoped_admins_container js-box-container" data-key="<%= key %>">
7
- <%= render(partial: "decidim/decidim_awesome/admin/config/autoedit_box_label", locals: { var: "scoped_admins", key: key, scope: "scoped_admin_#{key}", delete_path: decidim_admin_decidim_awesome.scoped_admin_path(key: key) }) %>
8
- <p class="form-error is-visible" id="scoped-admin-error-<%= $key %>"><%= errors[key.to_sym].join("<br>") if errors %></p>
7
+ <%= render(partial: "decidim/decidim_awesome/admin/config/autoedit_box_label", locals: { var: "scoped_admins", key:, scope: "scoped_admin_#{key}", delete_path: decidim_admin_decidim_awesome.scoped_admin_path(key:) }) %>
8
+ <p class="form-error is-visible" id="scoped-admin-error-<%= key %>"><%= errors[key.to_sym].join("<br>") if errors %></p>
9
9
 
10
- <%= select_tag "config[scoped_admins][#{key}]", options_for_select(users_for(value), value), { include_blank: false , class: "multiusers-select", multiple: true, data: { url: decidim_admin_decidim_awesome.users_path } } %>
10
+ <%= hidden_field_tag("config[scoped_admins][#{key}][]") %>
11
+ <%= select_tag "config[scoped_admins][#{key}]", options_for_select(users_for(value), value), { include_blank: false, class: "multiusers-select", multiple: true, data: { url: decidim_admin_decidim_awesome.users_path } } %>
11
12
 
12
13
  <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: "scoped_admin_#{key}", constraints: constraints_for("scoped_admin_#{key}") }) %>
13
14
  </div>
@@ -8,7 +8,7 @@
8
8
  <div class="row column card p-4">
9
9
  <%= form.check_box key, help_text: t("help.#{key}", scope: "decidim.decidim_awesome.admin.config.form") %>
10
10
 
11
- <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: key, constraints: constraints_for(key) }) %>
11
+ <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key:, constraints: constraints_for(key) }) %>
12
12
  </div>
13
13
  <% end %>
14
14
  </div>
@@ -8,9 +8,9 @@
8
8
  <div>
9
9
  <p class="help-text text-alert"><%= t("help.proposal_private_custom_fields", scope: "decidim.decidim_awesome.admin.config.form") %></p>
10
10
  <p class="help-text"><%= t("help.proposal_private_custom_fields_translations",
11
- scope: "decidim.decidim_awesome.admin.config.form",
12
- warning: content_tag(:i, t("decidim.decidim_awesome.proposal_private_custom_fields_disclosure")),
13
- key: content_tag("code", "decidim.decidim_awesome.proposal_private_custom_fields_disclosure")
11
+ scope: "decidim.decidim_awesome.admin.config.form",
12
+ warning: content_tag(:i, t("decidim.decidim_awesome.proposal_private_custom_fields_disclosure")),
13
+ key: content_tag("code", "decidim.decidim_awesome.proposal_private_custom_fields_disclosure")
14
14
  ).html_safe %></p>
15
15
  </div>
16
16
  <% else %>
@@ -22,7 +22,7 @@
22
22
  <% end %>
23
23
  <% form.object.send(config_var)&.each do |key, value| %>
24
24
  <div class="card p-4 proposal_custom_fields_container<%= " private" if priv %> js-box-container" data-key="<%= key %>" data-var="<%= config_var %>">
25
- <%= render("decidim/decidim_awesome/admin/config/autoedit_box_label", var: config_var, key: key, scope: "#{field}_#{key}", delete_path: decidim_admin_decidim_awesome.proposal_custom_field_path(key: key, private: priv)) %>
25
+ <%= render("decidim/decidim_awesome/admin/config/autoedit_box_label", var: config_var, key:, scope: "#{field}_#{key}", delete_path: decidim_admin_decidim_awesome.proposal_custom_field_path(key:, private: priv)) %>
26
26
  <p class="form-error is-visible"><%= errors[key.to_sym].join("<br>") if errors %></p>
27
27
 
28
28
  <%= hidden_field_tag key, value, name: "config[#{config_var}][#{key}]" %>
@@ -11,7 +11,7 @@
11
11
  <%= t("help.scoped_admin_styles_variables", scope: "decidim.decidim_awesome.admin.config.form") %>
12
12
  </p>
13
13
  <p class="colors">
14
- <% ["primary", "secondary", "tertiary", "success", "warning", "alert"].each do |color| %>
14
+ <% %w(primary secondary tertiary success warning alert).each do |color| %>
15
15
  <span class="color-box <%= color %>" style="background-color: <%= current_organization.colors[color] %>"></span>
16
16
  <code>var(--<%= color %>)</code>
17
17
  <% end %>
@@ -23,7 +23,7 @@
23
23
  <%= t("help.scoped_styles_variables", scope: "decidim.decidim_awesome.admin.config.form") %>
24
24
  </p>
25
25
  <p class="colors">
26
- <% ["primary", "secondary", "tertiary", "success", "warning", "alert"].each do |color| %>
26
+ <% %w(primary secondary tertiary success warning alert).each do |color| %>
27
27
  <span class="color-box <%= color %>" style="background-color: <%= current_organization.colors[color] %>"></span>
28
28
  <code>var(--<%= color %>)</code>
29
29
  <% end %>
@@ -32,7 +32,7 @@
32
32
  <% end %>
33
33
  <% form.object.send(config_var)&.each do |key, value| %>
34
34
  <div class="card p-4 scoped_styles_container<%= " private" if admin_styles %> js-box-container" data-key="<%= key %>" data-var="<%= config_var %>">
35
- <%= render("decidim/decidim_awesome/admin/config/autoedit_box_label", var: config_var, key: key, scope: "#{style}_#{key}", delete_path: decidim_admin_decidim_awesome.scoped_style_path(key: key, admin_panel: admin_styles)) %>
35
+ <%= render("decidim/decidim_awesome/admin/config/autoedit_box_label", var: config_var, key:, scope: "#{style}_#{key}", delete_path: decidim_admin_decidim_awesome.scoped_style_path(key:, admin_panel: admin_styles)) %>
36
36
  <p class="form-error is-visible" id="custom-style-error-<%= key %>"><%= errors[key.to_sym].join("<br>") if errors %></p>
37
37
  <%= text_area_tag key, value, name: "config[#{config_var}][#{key}]", rows: 5 %>
38
38
  <%= render("decidim/decidim_awesome/admin/config/constraints", key: "#{style}_#{key}", constraints: constraints_for("#{style}_#{key}")) %>
@@ -2,7 +2,7 @@
2
2
  <% if config_enabled? :auto_save_forms %>
3
3
  <div class="row column">
4
4
  <%= form.check_box :auto_save_forms %>
5
- <span class="help-text mb-4" style="margin-top: -1rem;">
5
+ <span class="help-text mb-4">
6
6
  <%= t("help.auto_save_forms", scope: "decidim.decidim_awesome.admin.config.form") %>
7
7
  </span>
8
8
  <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: :auto_save_forms, constraints: constraints_for(:auto_save_forms) }) %>
@@ -11,9 +11,47 @@
11
11
  <% if config_enabled? :user_timezone %>
12
12
  <div class="row column">
13
13
  <%= form.check_box :user_timezone %>
14
- <span class="help-text mb-4" style="margin-top: -1rem;">
14
+ <span class="help-text mb-4">
15
15
  <%= t("help.user_timezone", scope: "decidim.decidim_awesome.admin.config.form") %>
16
16
  </span>
17
17
  </div>
18
18
  <% end %>
19
+
20
+ <% if config_enabled?(:hashcash_login, :hashcash_signup) %>
21
+ <div class="row column">
22
+ <% if config_enabled? :hashcash_signup %>
23
+ <div>
24
+ <%= form.check_box :hashcash_signup %>
25
+ <span class="help-text mb-4">
26
+ <%= t("help.hashcash_signup", scope: "decidim.decidim_awesome.admin.config.form") %>
27
+ </span>
28
+ </div>
29
+ <div>
30
+ <%= form.number_field :hashcash_signup_bits %>
31
+ <span class="help-text mb-4">
32
+ <%= t("help.hashcash_signup_bits", scope: "decidim.decidim_awesome.admin.config.form", bits: Decidim::DecidimAwesome.hashcash_signup_bits) %>
33
+ </span>
34
+ </div>
35
+ <% end %>
36
+
37
+ <% if config_enabled? :hashcash_login %>
38
+ <div>
39
+ <%= form.check_box :hashcash_login %>
40
+ <span class="help-text mb-4">
41
+ <%= t("help.hashcash_login", scope: "decidim.decidim_awesome.admin.config.form") %>
42
+ </span>
43
+ </div>
44
+ <div>
45
+ <%= form.number_field :hashcash_login_bits %>
46
+ <span class="help-text mb-4">
47
+ <%= t("help.hashcash_login_bits", scope: "decidim.decidim_awesome.admin.config.form", bits: Decidim::DecidimAwesome.hashcash_login_bits) %>
48
+ </span>
49
+ </div>
50
+ <% end %>
51
+
52
+ <p class="help-text pt-0 pb-4 label">
53
+ <%= t("help.hashcash_i18n_key", scope: "decidim.decidim_awesome.admin.config.form", key: "<code>active_hashcash.waiting_label</code>").html_safe %>
54
+ </p>
55
+ </div>
56
+ <% end %>
19
57
  </div>
@@ -1,15 +1,77 @@
1
+ <%
2
+ config_var = "force_authorizations"
3
+ field = "force_authorization"
4
+ %>
5
+
1
6
  <div class="form__wrapper row column decidim_awesome-form">
2
- <div class="callout warning"><%= t("help.verifications_html", scope: "decidim.decidim_awesome.admin.config.form") %></div>
7
+ <% if config_enabled?(config_var) %>
8
+ <div class="callout warning">
9
+ <%= t("help.verifications_html", scope: "decidim.decidim_awesome.admin.config.form") %>
10
+ </div>
11
+
12
+ <% form.object.force_authorizations&.each do |key, group| %>
13
+ <% group ||= Decidim::DecidimAwesome::Admin::AuthorizationGroupForm.new %>
3
14
 
4
- <% if config_enabled? :force_authorization_after_login %>
5
- <div>
6
- <%= form.select :force_authorization_after_login, available_authorizations.map {|workflow| [workflow.fullname, workflow.name]}, { include_blank: false }, { multiple: true } %>
7
- <p class="help-text"><%= t("help.force_authorization_after_login", scope: "decidim.decidim_awesome.admin.config.form") %></p>
15
+ <%= form.fields_for "#{config_var}[#{key}]", group do |group_form| %>
16
+ <div class="card p-4 js-box-container force_authorization_container" data-key="<%= key %>" data-var="<%= config_var %>">
17
+ <%= render "decidim/decidim_awesome/admin/config/autoedit_box_label", var: config_var, key:, scope: "#{field}_#{key}", delete_path: decidim_admin_decidim_awesome.force_authorization_path(key:) %>
18
+ <div class="card-section mt-2">
19
+ <div class="row column pt-4 pb-4">
20
+ <h5><%= t("title", scope: "decidim.decidim_awesome.admin.config.form_force_authorizations") %></h5>
21
+ <div class="mt-4 form__wrapper gap-1">
22
+ <%= group_form.collection_check_boxes :authorization_handlers_names, available_authorizations, :name, :description do |builder| %>
23
+ <div>
24
+ <%= builder.label do %>
25
+ <%= safe_join([builder.check_box(data: { group_key: key }), builder.text.to_s], " ") %>
26
+ <% end %>
27
+ <div id="authorization-handler-<%= key %>-<%= builder.value %>" class="authorization-handler my-4 ml-6" style="display: <%= group_form.object.authorization_handlers_names.include?(builder.value) ? "block" : "none" %>;">
28
+ <%= render "decidim/decidim_awesome/admin/config/authorization_options_form", form: group_form, handler_name: builder.value, key: %>
29
+ </div>
30
+ </div>
31
+ <% end %>
32
+ </div>
33
+ </div>
34
+ </div>
8
35
 
9
- <%= form.check_box :force_authorization_with_any_method %>
36
+ <div class="mt-4">
37
+ <%= group_form.translated :editor, :force_authorization_help_text, lines: 10, label: t("force_authorization_help_text", scope: "decidim.decidim_awesome.admin.config.form") %>
38
+ <p class="help-text">
39
+ <%= t("help.force_authorization_help_text", scope: "decidim.decidim_awesome.admin.config.form") %>
40
+ </p>
41
+ </div>
10
42
 
11
- <%= form.translated :editor, :force_authorization_help_text, lines: 10, aria: { label: :force_authorization_help_text } %>
12
- <p class="help-text"><%= t("help.force_authorization_help_text", scope: "decidim.decidim_awesome.admin.config.form") %></p>
13
- </div>
43
+ <div class="mt-4">
44
+ <%= render "decidim/decidim_awesome/admin/config/constraints", key: "#{field}_#{key}", constraints: constraints_for("#{field}_#{key}") || [] %>
45
+ </div>
46
+ </div>
47
+ <% end %>
48
+ <% end %>
49
+
50
+ <%= link_to decidim_admin_decidim_awesome.force_authorizations_path, method: :post, class: "button button__sm button__text-secondary mr-auto" do %>
51
+ <%= icon("add-box-line") %>
52
+ <%= t("new", scope: "decidim.decidim_awesome.admin.config.form_force_authorizations") %>
53
+ <% end %>
14
54
  <% end %>
15
55
  </div>
56
+
57
+ <script>
58
+ document.addEventListener("DOMContentLoaded", function() {
59
+ const checkboxes = document.querySelectorAll(
60
+ "input[type='checkbox'][name*='[authorization_handlers_names]']"
61
+ );
62
+
63
+ checkboxes.forEach((checkbox) => {
64
+ checkbox.addEventListener("change", function() {
65
+ const groupKey = this.dataset.groupKey;
66
+ const handlerId = `authorization-handler-${groupKey}-${this.value}`;
67
+ const handlerElement = document.getElementById(handlerId);
68
+
69
+ if (!handlerElement) {
70
+ return;
71
+ }
72
+
73
+ handlerElement.style.display = this.checked ? "block" : "none";
74
+ });
75
+ });
76
+ });
77
+ </script>
@@ -1,8 +1,9 @@
1
1
  <div class="form__wrapper" id="constraint-form-<%= params[:id] %>">
2
2
 
3
- <%= form.select :participatory_space_manifest, participatory_space_manifests.invert, include_blank: true %>
4
- <%= form.select :participatory_space_slug, participatory_spaces_list(@form.participatory_space_manifest).invert, include_blank: true %>
5
- <%= form.select :component_manifest, component_manifests(@form.participatory_space_manifest).invert, include_blank: true %>
6
- <%= form.select :component_id, components_list(@form.participatory_space_manifest, @form.participatory_space_slug).invert, include_blank: true %>
3
+ <%= form.select :participatory_space_manifest, participatory_space_manifests.invert, include_blank: "---" %>
4
+ <%= form.select :participatory_space_slug, participatory_spaces_list(@form.participatory_space_manifest).invert, include_blank: "---" %>
5
+ <%= form.select :component_manifest, component_manifests(@form.participatory_space_manifest).invert, include_blank: "---" %>
6
+ <%= form.select :component_id, components_list(@form.participatory_space_manifest, @form.participatory_space_slug).invert, include_blank: "---" %>
7
+ <%= form.select :application_context, contexts_list.invert, include_blank: "---" %>
7
8
 
8
9
  </div>
@@ -0,0 +1,55 @@
1
+ <div class="fcell search mb-4">
2
+ <%= form_tag nil, method: :get, class: "form form-defaults" do %>
3
+ <div class="form__wrapper block bg-gray-5 p-4">
4
+ <div class="grid grid-cols-3 gap-x-4 pt-4">
5
+ <div class="content-end">
6
+ <%= label_tag :created_from do %>
7
+ <%= t("created_at", scope: "decidim.decidim_awesome.admin.hashcash.index") + " ≥" %>
8
+ <%= date_field_tag :created_from, params[:created_from], autocomplete: :off %>
9
+ <% end %>
10
+ </div>
11
+ <div class="content-end">
12
+ <%= label_tag :created_from do %>
13
+ <%= t("created_at", scope: "decidim.decidim_awesome.admin.hashcash.index") + " ≤" %>
14
+ <%= date_field_tag :created_to, params[:created_to], autocomplete: :off %>
15
+ <% end %>
16
+ </div>
17
+ <div class="content-end grid grid-cols-2 gap-x-4 pt-8">
18
+ <div>
19
+ <%= label_tag :bits_from do %>
20
+ <%= t("bits", scope: "decidim.decidim_awesome.admin.hashcash.index") + " ≥" %>
21
+ <%= number_field_tag :bits_from, params[:bits_from], autocomplete: :off %>
22
+ <% end %>
23
+ </div>
24
+ <div>
25
+ <%= label_tag :bits_to do %>
26
+ <%= t("bits", scope: "decidim.decidim_awesome.admin.hashcash.index") + " ≤" %>
27
+ <%= number_field_tag :bits_to, params[:bits_to], autocomplete: :off %>
28
+ <% end %>
29
+ </div>
30
+ </div>
31
+ </div>
32
+
33
+ <div class="grid grid-cols-3 gap-x-4 py-4">
34
+ <div class="content-end">
35
+ <%= label_tag :ip_address_starts_with, t("ip_address", scope: "decidim.decidim_awesome.admin.hashcash.index") %>
36
+ <%= text_field_tag :ip_address_starts_with, params[:ip_address_starts_with], autocomplete: :off %>
37
+ </div>
38
+ <div class="content-end">
39
+ <%= label_tag :request_path_starts_with, t("request_path", scope: "decidim.decidim_awesome.admin.hashcash.index") %>
40
+ <%= text_field_tag :request_path_starts_with, params[:request_path_starts_with], autocomplete: :off %>
41
+ </div>
42
+ <div class="content-end">
43
+ <div class="grid grid-cols-2 gap-x-4 mb-[4px]">
44
+ <%= submit_tag t("active_hashcash.submit_filter"), class: "button button__sm button__secondary" %>
45
+ <% if params[:action] == "index" %>
46
+ <%= link_to t(".ip_addresses"), ip_addresses_hashcashes_path, class: "button button__sm button__transparent-secondary" %>
47
+ <% else %>
48
+ <%= link_to t(".stamps"), hashcashes_path, class: "button button__sm button__transparent-secondary" %>
49
+ <% end %>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ </div>
54
+ <% end %>
55
+ </div>
@@ -0,0 +1,33 @@
1
+ <div class="mb-8">
2
+ <p class="help-text"><%= t(".help_html") %>
3
+ </div>
4
+
5
+ <%= render "filters" %>
6
+
7
+ <% if stamps.empty? %>
8
+ <div class="callout warning"><%= t(".no_data") %></div>
9
+ <% else %>
10
+ <div class="table-scroll">
11
+ <table class="table-list">
12
+ <thead>
13
+ <tr>
14
+ <th><%= t(".created_at") %></th>
15
+ <th><%= t(".ip_address") %></th>
16
+ <th><%= t(".request_path") %></th>
17
+ <th><%= t(".bits") %></th>
18
+ </tr>
19
+ </thead>
20
+
21
+ <tbody>
22
+ <% stamps.each do |stamp| %>
23
+ <tr>
24
+ <td><%= link_to stamp.created_at, hashcash_path(stamp) %></td>
25
+ <td><%= stamp.ip_address %></td>
26
+ <td><%= stamp.request_path %></td>
27
+ <td><%= stamp.bits %></td>
28
+ </tr>
29
+ <% end %>
30
+ </tbody>
31
+ </table>
32
+ </div>
33
+ <% end %>
@@ -0,0 +1,29 @@
1
+ <div class="mb-8">
2
+ <p class="help-text"><%= t(".help_html") %>
3
+ </div>
4
+
5
+ <%= render "filters" %>
6
+
7
+ <% if addresses.empty? %>
8
+ <div class="callout warning"><%= t(".no_data") %></div>
9
+ <% else %>
10
+ <div class="table-scroll">
11
+ <table class="table-list">
12
+ <thead>
13
+ <tr>
14
+ <th><%= t(".ip_address") %></th>
15
+ <th><%= t(".stamps") %></th>
16
+ </tr>
17
+ </thead>
18
+
19
+ <tbody>
20
+ <% addresses.each do |address, count| %>
21
+ <tr>
22
+ <td><%= link_to address, hashcashes_path(ip_address_starts_with: address) %></td>
23
+ <td><%= number_with_delimiter count %></td>
24
+ </tr>
25
+ <% end %>
26
+ </tbody>
27
+ </table>
28
+ </div>
29
+ <% end %>
@@ -0,0 +1,42 @@
1
+ <div>
2
+ <h3 class="h3"><%= stamp %></h3>
3
+ <dl class="divide-y divide-gray-100">
4
+ <div class="px-4 py-6 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0">
5
+ <dt class="font-semibold"><%= stamp.class.human_attribute_name(:created_at) %></dt>
6
+ <dd mt-1 class="sm:col-span-2 sm:mt-0"><%= l stamp.created_at %></dd>
7
+ </div>
8
+
9
+ <div class="px-4 py-6 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0">
10
+ <dt class="font-semibold"><%= stamp.class.human_attribute_name(:resource) %></dt>
11
+ <dd mt-1 class="sm:col-span-2 sm:mt-0"><%= stamp.resource %></dd>
12
+ </div>
13
+ <div class="px-4 py-6 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0">
14
+ <dt class="font-semibold"><%= stamp.class.human_attribute_name(:bits) %></dt>
15
+ <dd mt-1 class="sm:col-span-2 sm:mt-0"><%= stamp.bits %></dd>
16
+ </div>
17
+
18
+ <div class="px-4 py-6 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0">
19
+ <dt class="font-semibold"><%= stamp.class.human_attribute_name(:ip_address) %></dt>
20
+ <dd mt-1 class="sm:col-span-2 sm:mt-0"><%= stamp.ip_address %></dd>
21
+ </div>
22
+
23
+ <div class="px-4 py-6 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0">
24
+ <dt class="font-semibold"><%= stamp.class.human_attribute_name(:request_path) %></dt>
25
+ <dd mt-1 class="sm:col-span-2 sm:mt-0"><%= stamp.request_path %></dd>
26
+ </div>
27
+
28
+ <div class="px-4 py-6 sm:grid sm:grid-cols-3 sm:gap-4 sm:px-0">
29
+ <dt class="font-semibold"><%= stamp.class.human_attribute_name(:context) %></dt>
30
+ <dd mt-1 class="sm:col-span-2 sm:mt-0"><%= stamp.context %></dd>
31
+ </div>
32
+ </dl>
33
+
34
+ <div class="grid grid-cols-4 gap-x-4 mb-[4px]">
35
+ <button class="button button__sm button__transparent-secondary">
36
+ <%= link_to t("decidim.decidim_awesome.admin.hashcash.filters.stamps"), hashcashes_path %>
37
+ </button>
38
+ <button class="button button__sm button__transparent-secondary">
39
+ <%= link_to t("decidim.decidim_awesome.admin.hashcash.filters.ip_addresses"), ip_addresses_hashcashes_path %>
40
+ </button>
41
+ </div>
42
+ </div>
@@ -22,12 +22,12 @@
22
22
  <td><%= item.label %></td>
23
23
  <td><%= item.url %></td>
24
24
  <td><%= item.position %></td>
25
- <td><%= target_options.invert[item.try(:target)||""] %></td>
25
+ <td><%= target_options.invert[item.try(:target) || ""] %></td>
26
26
  <td><%= visibility_options.invert[item.try(:visibility)] %></td>
27
27
  <td class="table-list__actions">
28
28
  <%= icon_link_to "pencil-line", decidim_admin_decidim_awesome.edit_menu_hack_path(params[:menu_id], md5(item.url)), t(".edit"), class: "action-icon--edit" %>
29
29
  <% if item.respond_to?(:overrided?) %>
30
- <%= icon_link_to "close-circle-line", decidim_admin_decidim_awesome.menu_hack_path(params[:menu_id], md5(item.url)), t(".remove#{'_hack' if item.overrided?}"), method: :delete, class: "action-icon--remove", data: { confirm: t(".confirm_destroy") } %>
30
+ <%= icon_link_to "close-circle-line", decidim_admin_decidim_awesome.menu_hack_path(params[:menu_id], md5(item.url)), t(".remove#{"_hack" if item.overrided?}"), method: :delete, class: "action-icon--remove", data: { confirm: t(".confirm_destroy") } %>
31
31
  <% else %>
32
32
  <span class="action-icon">
33
33
  <%= icon "close-circle-line", class: "action-icon action-icon--disabled", role: "img" %>
@@ -5,7 +5,7 @@
5
5
  <% if collection.empty? %>
6
6
  <div class="callout warning"><%= t(".no_data", time_ago:) %></div>
7
7
  <% else %>
8
- <div class="table-scroll autorefresh" data-url="<%= maintenance_path(:private_data).split("?").first %>">
8
+ <div class="table-scroll autorefresh" data-url="<%= private_data_path.split("?").first %>">
9
9
  <table class="table-list">
10
10
  <thead>
11
11
  <tr>
@@ -27,7 +27,7 @@
27
27
  <% if item.locked? %>
28
28
  <span class="loading-spinner primary" title="<%= t(".removing") %>"></span>
29
29
  <% elsif item.destroyable? %>
30
- <%= link_to destroy_private_data_maintenance_path(:private_data, resource_id: item), method: :delete, class: "button button__primary button__xs tiny", data: { confirm: t(".confirm_delete") } do %>
30
+ <%= link_to private_datum_path(item), method: :delete, class: "button button__primary button__xs tiny", data: { confirm: t(".confirm_delete") } do %>
31
31
  <%= icon "delete-bin-line" %>
32
32
  <%= t(".delete") %>
33
33
  <% end %>
@@ -1,5 +1,5 @@
1
- <div class="card-section section_<%= current_view %>">
2
- <%= render current_view %>
1
+ <div class="card-section section_private_data">
2
+ <%= render "private_data" %>
3
3
  </div>
4
4
 
5
5
  <script>
@@ -41,4 +41,3 @@
41
41
  });
42
42
  });
43
43
  </script>
44
- </script>
@@ -12,7 +12,7 @@
12
12
  <div class="date_info">
13
13
  <%= t("decidim.decidim_awesome.admin.proposal_custom_fields.private_data_last_update", time_ago: time_ago_in_words(proposal.extra_fields.private_body_updated_at)) if proposal.extra_fields.private_body.present? %>
14
14
  <%= t("decidim.decidim_awesome.admin.proposal_custom_fields.private_data_last_remove", time_ago: time_ago_in_words(proposal.extra_fields.private_body_updated_at)) if proposal.extra_fields.private_body.blank? %>
15
- <%= link_to t("decidim.decidim_awesome.admin.proposal_custom_fields.remove_private_data"), decidim_admin_decidim_awesome.maintenance_path(:private_data) if proposal.extra_fields.private_body_updated_at && proposal.extra_fields.private_body_updated_at < Decidim::DecidimAwesome.private_data_expiration_time.ago %>
15
+ <%= link_to t("decidim.decidim_awesome.admin.proposal_custom_fields.remove_private_data"), decidim_admin_decidim_awesome.private_data_path if proposal.extra_fields.private_body_updated_at && proposal.extra_fields.private_body_updated_at < Decidim::DecidimAwesome.private_data_expiration_time.ago %>
16
16
  </div>
17
17
  <% end %>
18
18
  </div>