decidim-admin 0.23.6 → 0.24.0.rc1

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

Potentially problematic release.


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

Files changed (177) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/decidim_admin_manifest.js +1 -0
  3. data/app/assets/javascripts/decidim/admin/application.js.es6 +2 -0
  4. data/app/assets/javascripts/decidim/admin/budget_rule_toggler.component.js.es6 +23 -20
  5. data/app/assets/javascripts/decidim/admin/bundle.js +10 -17
  6. data/app/assets/javascripts/decidim/admin/bundle.js.map +1 -1
  7. data/app/assets/javascripts/decidim/admin/form.js.es6 +1 -0
  8. data/app/assets/javascripts/decidim/admin/import_guidance.js.es6 +29 -0
  9. data/app/assets/javascripts/decidim/admin/moderations.js.es6 +24 -0
  10. data/app/assets/javascripts/decidim/admin/proposal_infinite_edit.js.es6 +20 -0
  11. data/app/assets/javascripts/decidim/admin/user_moderations.js +2 -0
  12. data/app/assets/stylesheets/decidim/admin/_variables.scss +9 -0
  13. data/app/assets/stylesheets/decidim/admin/components/_dropdown-menu.scss +3 -0
  14. data/app/assets/stylesheets/decidim/admin/extra/_action-icon.scss +13 -0
  15. data/app/assets/stylesheets/decidim/admin/extra/_block_user.scss +5 -0
  16. data/app/assets/stylesheets/decidim/admin/extra/_title_bar.scss +1 -0
  17. data/app/assets/stylesheets/decidim/admin/modules/_moderations.scss +39 -0
  18. data/app/assets/stylesheets/decidim/admin/modules/_modules.scss +2 -0
  19. data/app/assets/stylesheets/decidim/admin/modules/_reveal.scss +5 -0
  20. data/app/assets/stylesheets/decidim/admin/modules/_secondary-nav.scss +6 -3
  21. data/app/assets/stylesheets/decidim/admin/modules/_user-login.scss +2 -2
  22. data/app/assets/stylesheets/decidim/admin/user_moderations.scss +3 -0
  23. data/app/assets/stylesheets/decidim/admin/utils/_settings.scss +1 -0
  24. data/app/cells/decidim/admin/content_block/show.erb +1 -1
  25. data/app/cells/decidim/admin/content_block_cell.rb +4 -0
  26. data/app/commands/decidim/admin/block_user.rb +70 -0
  27. data/app/commands/decidim/admin/create_import.rb +29 -0
  28. data/app/commands/decidim/admin/create_participatory_space_private_user.rb +1 -1
  29. data/app/commands/decidim/admin/create_static_page.rb +2 -1
  30. data/app/commands/decidim/admin/hide_resource.rb +21 -0
  31. data/app/commands/decidim/admin/impersonate_user.rb +17 -1
  32. data/app/commands/decidim/admin/promote_managed_user.rb +10 -0
  33. data/app/commands/decidim/admin/reorder_content_blocks.rb +6 -3
  34. data/app/commands/decidim/admin/transfer_user.rb +78 -0
  35. data/app/commands/decidim/admin/unblock_user.rb +48 -0
  36. data/app/commands/decidim/admin/unreport_user.rb +46 -0
  37. data/app/commands/decidim/admin/update_organization_appearance.rb +12 -4
  38. data/app/commands/decidim/admin/update_static_page.rb +2 -1
  39. data/app/commands/decidim/admin/verify_user_group.rb +1 -1
  40. data/app/controllers/concerns/decidim/admin/filterable.rb +1 -1
  41. data/app/controllers/concerns/decidim/admin/global_moderation_context.rb +51 -0
  42. data/app/controllers/concerns/decidim/admin/landing_page.rb +105 -0
  43. data/app/controllers/concerns/decidim/admin/landing_page_content_blocks.rb +118 -0
  44. data/app/controllers/concerns/decidim/moderations/admin/filterable.rb +54 -0
  45. data/app/controllers/decidim/admin/block_user_controller.rb +60 -0
  46. data/app/controllers/decidim/admin/components/base_controller.rb +1 -0
  47. data/app/controllers/decidim/admin/conflicts_controller.rb +46 -0
  48. data/app/controllers/decidim/admin/exports_controller.rb +1 -2
  49. data/app/controllers/decidim/admin/global_moderations/reports_controller.rb +18 -0
  50. data/app/controllers/decidim/admin/global_moderations_controller.rb +32 -0
  51. data/app/controllers/decidim/admin/impersonations_controller.rb +1 -1
  52. data/app/controllers/decidim/admin/imports_controller.rb +52 -0
  53. data/app/controllers/decidim/admin/moderated_users_controller.rb +44 -0
  54. data/app/controllers/decidim/admin/moderations/reports_controller.rb +39 -0
  55. data/app/controllers/decidim/admin/moderations_controller.rb +31 -7
  56. data/app/controllers/decidim/admin/officializations_controller.rb +3 -3
  57. data/app/controllers/decidim/admin/organization_homepage_controller.rb +6 -2
  58. data/app/controllers/decidim/admin/static_pages_controller.rb +7 -0
  59. data/app/events/decidim/resource_hidden_event.rb +37 -0
  60. data/app/forms/decidim/admin/block_user_form.rb +25 -0
  61. data/app/forms/decidim/admin/import_form.rb +85 -0
  62. data/app/forms/decidim/admin/organization_appearance_form.rb +1 -2
  63. data/app/forms/decidim/admin/static_page_form.rb +6 -1
  64. data/app/forms/decidim/admin/transfer_user_form.rb +19 -0
  65. data/app/helpers/decidim/admin/application_helper.rb +5 -4
  66. data/app/helpers/decidim/admin/exports_helper.rb +2 -2
  67. data/app/helpers/decidim/admin/filterable_helper.rb +3 -2
  68. data/app/helpers/decidim/admin/imports_helper.rb +43 -0
  69. data/app/helpers/decidim/admin/menu_helper.rb +10 -0
  70. data/app/helpers/decidim/admin/moderations/reports_helper.rb +40 -0
  71. data/app/helpers/decidim/admin/moderations_helper.rb +36 -0
  72. data/app/helpers/decidim/admin/newsletters_helper.rb +4 -10
  73. data/app/helpers/decidim/admin/settings_helper.rb +2 -1
  74. data/app/helpers/decidim/admin/sidebar_menu_helper.rb +13 -0
  75. data/app/helpers/decidim/admin/user_moderations_helper.rb +6 -0
  76. data/app/jobs/decidim/admin/import_participatory_space_private_user_csv_job.rb +1 -1
  77. data/app/jobs/decidim/admin/verify_user_group_from_csv_job.rb +1 -1
  78. data/app/permissions/decidim/admin/permissions.rb +7 -6
  79. data/app/presenters/decidim/admin/dashboard_metric_charts_presenter.rb +1 -1
  80. data/app/presenters/decidim/admin/secondary_menu_presenter.rb +26 -0
  81. data/app/queries/decidim/admin/active_users_counter.rb +1 -2
  82. data/app/queries/decidim/admin/user_filter.rb +1 -2
  83. data/app/views/decidim/admin/area_types/index.html.erb +2 -2
  84. data/app/views/decidim/admin/areas/index.html.erb +1 -1
  85. data/app/views/decidim/admin/attachment_collections/index.html.erb +1 -1
  86. data/app/views/decidim/admin/attachments/index.html.erb +1 -1
  87. data/app/views/decidim/admin/block_user/new.html.erb +22 -0
  88. data/app/views/decidim/admin/categories/index.html.erb +1 -1
  89. data/app/views/decidim/admin/components/_component.html.erb +12 -0
  90. data/app/views/decidim/admin/components/_form.html.erb +1 -1
  91. data/app/views/decidim/admin/conflicts/edit.html.erb +46 -0
  92. data/app/views/decidim/admin/conflicts/index.html.erb +34 -0
  93. data/app/views/decidim/admin/dashboard/show.html.erb +1 -0
  94. data/app/views/decidim/admin/exports/_dropdown.html.erb +1 -1
  95. data/app/views/decidim/admin/imports/_dropdown.html.erb +9 -0
  96. data/app/views/decidim/admin/imports/new.html.erb +57 -0
  97. data/app/views/decidim/admin/moderated_users/_report.html.erb +10 -0
  98. data/app/views/decidim/admin/moderated_users/index.html.erb +78 -0
  99. data/app/views/decidim/admin/moderations/_report.html.erb +1 -1
  100. data/app/views/decidim/admin/moderations/index.html.erb +27 -9
  101. data/app/views/decidim/admin/moderations/reports/index.html.erb +102 -0
  102. data/app/views/decidim/admin/moderations/reports/show.html.erb +62 -0
  103. data/app/views/decidim/admin/newsletters/index.html.erb +1 -1
  104. data/app/views/decidim/admin/newsletters/select_recipients_to_deliver.html.erb +3 -3
  105. data/app/views/decidim/admin/newsletters/show.html.erb +1 -1
  106. data/app/views/decidim/admin/officializations/index.html.erb +13 -4
  107. data/app/views/decidim/admin/organization_appearance/_form.html.erb +0 -4
  108. data/app/views/decidim/admin/organization_appearance/form/_colors.html.erb +1 -1
  109. data/app/views/decidim/admin/organization_appearance/form/_images.html.erb +4 -4
  110. data/app/views/decidim/admin/participatory_space_private_users/index.html.erb +1 -1
  111. data/app/views/decidim/admin/scopes/index.html.erb +1 -1
  112. data/app/views/decidim/admin/shared/landing_page/edit.html.erb +47 -0
  113. data/app/views/decidim/admin/shared/landing_page_content_blocks/edit.html.erb +15 -0
  114. data/app/views/decidim/admin/static_pages/_form.html.erb +6 -0
  115. data/app/views/decidim/admin/static_pages/_topic.html.erb +3 -3
  116. data/app/views/decidim/admin/users/index.html.erb +2 -2
  117. data/app/views/layouts/decidim/admin/_application.html.erb +5 -1
  118. data/app/views/layouts/decidim/admin/_title_bar.html.erb +2 -2
  119. data/app/views/layouts/decidim/admin/global_moderations.html.erb +7 -0
  120. data/app/views/layouts/decidim/admin/newsletters.erb +1 -1
  121. data/app/views/layouts/decidim/admin/pages.html.erb +2 -2
  122. data/app/views/layouts/decidim/admin/settings.html.erb +2 -33
  123. data/app/views/layouts/decidim/admin/users.html.erb +11 -0
  124. data/config/locales/ar.yml +0 -5
  125. data/config/locales/bg.yml +0 -1
  126. data/config/locales/ca.yml +33 -7
  127. data/config/locales/cs.yml +154 -9
  128. data/config/locales/de.yml +150 -5
  129. data/config/locales/el.yml +55 -5
  130. data/config/locales/en.yml +150 -5
  131. data/config/locales/es-MX.yml +42 -7
  132. data/config/locales/es-PY.yml +42 -7
  133. data/config/locales/es.yml +42 -7
  134. data/config/locales/eu.yml +0 -3
  135. data/config/locales/fi-plain.yml +148 -3
  136. data/config/locales/fi.yml +148 -3
  137. data/config/locales/fr-CA.yml +139 -4
  138. data/config/locales/fr.yml +139 -4
  139. data/config/locales/gl.yml +83 -12
  140. data/config/locales/hu.yml +13 -5
  141. data/config/locales/id-ID.yml +0 -3
  142. data/config/locales/is-IS.yml +19 -3
  143. data/config/locales/it.yml +59 -5
  144. data/config/locales/ja.yml +38 -5
  145. data/config/locales/lv.yml +0 -5
  146. data/config/locales/nl.yml +110 -4
  147. data/config/locales/no.yml +13 -7
  148. data/config/locales/pl.yml +159 -14
  149. data/config/locales/pt-BR.yml +0 -3
  150. data/config/locales/pt.yml +0 -5
  151. data/config/locales/ro-RO.yml +121 -133
  152. data/config/locales/ru.yml +0 -3
  153. data/config/locales/sk.yml +0 -5
  154. data/config/locales/sl.yml +0 -1
  155. data/config/locales/sr-CS.yml +0 -3
  156. data/config/locales/sv.yml +51 -5
  157. data/config/locales/tr-TR.yml +81 -4
  158. data/config/locales/uk.yml +0 -3
  159. data/config/locales/zh-CN.yml +0 -5
  160. data/config/routes.rb +21 -1
  161. data/lib/decidim/admin/engine.rb +76 -1
  162. data/lib/decidim/admin/import/creator.rb +82 -0
  163. data/lib/decidim/admin/import/importer.rb +82 -0
  164. data/lib/decidim/admin/import/importer_factory.rb +17 -0
  165. data/lib/decidim/admin/import/readers/base.rb +31 -0
  166. data/lib/decidim/admin/import/readers/csv.rb +23 -0
  167. data/lib/decidim/admin/import/readers/json.rb +25 -0
  168. data/lib/decidim/admin/import/readers/xls.rb +25 -0
  169. data/lib/decidim/admin/import/readers.rb +39 -0
  170. data/lib/decidim/admin/import.rb +12 -0
  171. data/lib/decidim/admin/test/commands/create_attachment_collection_examples.rb +6 -6
  172. data/lib/decidim/admin/test/commands/create_category_examples.rb +6 -6
  173. data/lib/decidim/admin/test/filterable_examples.rb +1 -8
  174. data/lib/decidim/admin/test/manage_moderations_examples.rb +49 -4
  175. data/lib/decidim/admin/version.rb +1 -1
  176. data/lib/decidim/admin.rb +6 -0
  177. metadata +72 -16
@@ -10,16 +10,21 @@
10
10
  </div>
11
11
  </h2>
12
12
  </div>
13
-
13
+ <%= admin_filter_selector(:moderations) %>
14
14
  <div class="card-section">
15
15
  <div class="table-scroll">
16
16
  <table class="table-list">
17
17
  <thead>
18
18
  <tr>
19
- <th><%= t("models.moderation.fields.reportable", scope: "decidim.moderations") %></th>
19
+ <th><%= t("models.moderation.fields.reportable_id", scope: "decidim.moderations") %></th>
20
+ <th><%= t("models.moderation.fields.reportable_type", scope: "decidim.moderations") %></th>
21
+ <% if !respond_to?(:current_participatory_space) %>
22
+ <th><%= t("models.moderation.fields.participatory_space", scope: "decidim.moderations") %></th>
23
+ <% end %>
24
+ <th><%= sort_link(query, :report_count, t("models.moderation.fields.report_count", scope: "decidim.moderations")) %></th>
20
25
  <th><%= t("models.moderation.fields.reported_content_url", scope: "decidim.moderations") %></th>
21
26
  <th><%= t("models.moderation.fields.reports", scope: "decidim.moderations") %></th>
22
- <th><%= t("models.moderation.fields.report_count", scope: "decidim.moderations") %></th>
27
+ <th><%= sort_link(query, :created_at, t("models.moderation.fields.created_at", scope: "decidim.moderations")) %></th>
23
28
  <% if params[:hidden] %>
24
29
  <th><%= t("models.moderation.fields.hidden_at", scope: "decidim.moderations") %></th>
25
30
  <% end %>
@@ -29,12 +34,21 @@
29
34
  <tbody>
30
35
  <% moderations.each do |moderation| %>
31
36
  <tr data-id="<%= moderation.id %>">
37
+ <td><%= moderation.reportable.id %></td>
32
38
  <td>
33
39
  <%= moderation.reportable.class.name.demodulize %>
34
40
  </td>
41
+ <% if !respond_to?(:current_participatory_space) %>
42
+ <td>
43
+ <%= participatory_space_title_for(moderation.reportable) %>
44
+ </td>
45
+ <% end %>
46
+ <td>
47
+ <%= moderation.report_count %>
48
+ </td>
35
49
  <td>
36
50
  <%=
37
- link_to t("models.moderation.fields.visit_url", scope: "decidim.moderations"), moderation.reportable.reported_content_url
51
+ link_to t("models.moderation.fields.visit_url", scope: "decidim.moderations"), moderation.reportable.reported_content_url, data: { tooltip: true }, aria: { haspopup: true }, title: strip_tags(reported_content_excerpt_for(moderation.reportable, limit: 250))
38
52
  %>
39
53
  </td>
40
54
  <td>
@@ -42,7 +56,7 @@
42
56
  <%= safe_join(reports, ",") %>
43
57
  </td>
44
58
  <td>
45
- <%= moderation.report_count %>
59
+ <%= l(moderation.created_at, format: :long) %>
46
60
  </td>
47
61
  <% if params[:hidden] %>
48
62
  <td>
@@ -50,22 +64,25 @@
50
64
  </td>
51
65
  <% end %>
52
66
  <td class="actions">
53
-
54
- <% if !moderation.reportable.hidden? && allowed_to?(:unreport, :moderation) %>
67
+ <%= icon_link_to "fullscreen-enter",
68
+ moderation_reports_path(moderation_id: moderation),
69
+ t("actions.expand", scope: "decidim.moderations"),
70
+ class: "action-icon--expand" %>
71
+ <% if !moderation.reportable.hidden? && allowed_to?(:unreport, permission_resource) %>
55
72
  <%= icon_link_to "action-undo",
56
73
  unreport_moderation_path(id: moderation),
57
74
  t("actions.unreport", scope: "decidim.moderations"),
58
75
  class: "action-icon--unreport",
59
76
  method: :put %>
60
77
  <% end %>
61
- <% if !moderation.reportable.hidden? && allowed_to?(:hide, :moderation) %>
78
+ <% if !moderation.reportable.hidden? && allowed_to?(:hide, permission_resource) %>
62
79
  <%= icon_link_to "eye",
63
80
  hide_moderation_path(id: moderation),
64
81
  t("actions.hide", scope: "decidim.moderations"),
65
82
  class: "action-icon--hide",
66
83
  method: :put %>
67
84
  <% end %>
68
- <% if moderation.reportable.hidden? && allowed_to?(:unhide, :moderation) %>
85
+ <% if moderation.reportable.hidden? && allowed_to?(:unhide, permission_resource) %>
69
86
  <%= icon_link_to "eye",
70
87
  unhide_moderation_path(id: moderation),
71
88
  t("actions.unhide", scope: "decidim.moderations"),
@@ -77,6 +94,7 @@
77
94
  <% end %>
78
95
  </tbody>
79
96
  </table>
97
+ <%= paginate moderations, theme: "decidim" %>
80
98
  </div>
81
99
  </div>
82
100
  </div>
@@ -0,0 +1,102 @@
1
+ <div class="card">
2
+ <div class="card-divider">
3
+ <h2 class="card-title">
4
+ <%= link_to "#{t("title", scope: "decidim.admin.moderations.index")} > ", moderations_path %>
5
+ <%= t(".title") %>
6
+ </h2>
7
+ </div>
8
+ <div class="card-section moderation-details">
9
+ <div class="callout warning">
10
+ <%= icon "info" %>
11
+ <span class="callout-text"><%= t(".callout_html", icon: icon("flag")) %></span>
12
+ </div>
13
+ <dl>
14
+ <dt><%= t("models.moderation.fields.reported_content_url", scope: "decidim.moderations") %></dt>
15
+ <dd><%= link_to moderation.reportable.reported_content_url, moderation.reportable.reported_content_url, target: "_blank" %></dd>
16
+
17
+ <dt><%= t("models.moderation.fields.reportable_id", scope: "decidim.moderations") %></dt>
18
+ <dd><%= moderation.reportable.id %></dd>
19
+
20
+ <% if translatable_resource?(moderation.reportable) %>
21
+ <dt><%= t(".content_original_language") %></dt>
22
+ <dd><%= locale_name moderation.reportable.content_original_language %> </dd>
23
+ <% end %>
24
+
25
+ <dt>
26
+ <%= t(".reported_content") %>
27
+ <% if translatable_resource?(moderation.reportable) %>
28
+ <button
29
+ class="toggle-content"
30
+ data-see-original-button-label="<%= t(".see_original") %>"
31
+ data-see-current-button-label="<%= t(".see_current") %>">
32
+ <%= t(".see_original") %>
33
+ </button>
34
+ <% end %>
35
+ </dt>
36
+ <dd class="reported-content">
37
+ <div class="current">
38
+ <%= reported_content_for moderation.reportable %>
39
+ </div>
40
+ <% if translatable_resource?(moderation.reportable) %>
41
+ <div class="original">
42
+ <%= reported_content_for moderation.reportable, locale: moderation.reportable.content_original_language %>
43
+ </div>
44
+ <% end %>
45
+ </dd>
46
+
47
+ <dt><%= t(".author") %></dt>
48
+ <dd>
49
+ <%= reportable_author_name(moderation.reportable) %>
50
+ </dd>
51
+
52
+ <dt><%= t("models.moderation.fields.reportable_type", scope: "decidim.moderations") %></dt>
53
+ <dd><%= moderation.reportable.class.name.demodulize %></dd>
54
+
55
+ <dt><%= t("models.moderation.fields.created_at", scope: "decidim.moderations") %></dt>
56
+ <dd><%= l(moderation.created_at, format: :long) %></dd>
57
+
58
+ <dt><%= t(".participatory_space") %></dt>
59
+ <dd><%= translated_attribute moderation.participatory_space.title %></dd>
60
+ </div>
61
+ </dl>
62
+ <div class="table-scroll">
63
+ <table class="table-list">
64
+ <thead>
65
+ <tr>
66
+ <th><%= t("models.report.fields.reason", scope: "decidim.moderations") %></th>
67
+ <th><%= t("models.report.fields.locale", scope: "decidim.moderations") %></th>
68
+ <th><%= t("models.report.fields.details", scope: "decidim.moderations") %></th>
69
+ <th class="actions"><%= t("actions.title", scope: "decidim.moderations") %></th>
70
+ </tr>
71
+ </thead>
72
+ <tbody>
73
+ <% reports.each do |report| %>
74
+ <tr data-id="<%= report.id %>">
75
+ <td><%= t("decidim.admin.moderations.report.reasons.#{report.reason}") %></td>
76
+ <td><%= report.locale.present? ? locale_name(report.locale) : "" %></td>
77
+ <td><%= report.details&.truncate(250) %></td>
78
+ <td class="actions">
79
+ <%= icon_link_to "fullscreen-enter",
80
+ moderation_report_path(moderation_id: moderation, id: report.id),
81
+ t("actions.expand", scope: "decidim.moderations"),
82
+ class: "action-icon--expand" %>
83
+ </td>
84
+ </tr>
85
+ <% end %>
86
+ </tbody>
87
+ </table>
88
+ </div>
89
+ </div>
90
+ </div>
91
+
92
+ <div class="button--double form-general-submit">
93
+ <% if !moderation.reportable.hidden? && allowed_to?(:unreport, permission_resource) %>
94
+ <%= link_to t("actions.unreport", scope: "decidim.moderations"), unreport_moderation_path(id: moderation), method: :put, class: "button" %>
95
+ <% end %>
96
+ <% if !moderation.reportable.hidden? && allowed_to?(:hide, permission_resource) %>
97
+ <%= link_to t("actions.hide", scope: "decidim.moderations"), hide_moderation_path(id: moderation), method: :put, class: "button alert" %>
98
+ <% end %>
99
+ <% if moderation.reportable.hidden? && allowed_to?(:unhide, permission_resource) %>
100
+ <%= link_to t("actions.unhide", scope: "decidim.moderations"), unhide_moderation_path(id: moderation), method: :put, class: "button alert" %>
101
+ <% end %>
102
+ </div>
@@ -0,0 +1,62 @@
1
+ <div class="card">
2
+ <div class="card-divider">
3
+ <h2 class="card-title">
4
+ <%= link_to "#{t("title", scope: "decidim.admin.moderations.index")} > ", moderations_path %>
5
+ <%= link_to "#{t("title", scope: "decidim.admin.moderations.reports.index")} > ", moderation_reports_path %>
6
+ <%= t(".title") %>
7
+ </h2>
8
+ </div>
9
+
10
+ <div class="card-section moderation-details">
11
+ <dl>
12
+ <dt><%= t(".report_language") %></dt>
13
+ <dd><%= locale_name @report.locale %></dd>
14
+
15
+ <% if translatable_resource?(moderation.reportable) %>
16
+ <dt><%= t("content_original_language", scope: "decidim.admin.moderations.reports.index") %></dt>
17
+ <dd><%= locale_name moderation.reportable.content_original_language %> </dd>
18
+ <% end %>
19
+
20
+ <dt>
21
+ <%= t("reported_content", scope: "decidim.admin.moderations.reports.index") %>
22
+ <% if translatable_resource?(moderation.reportable) %>
23
+ <button
24
+ class="toggle-content"
25
+ data-see-original-button-label="<%= t("see_original", scope: "decidim.admin.moderations.reports.index") %>"
26
+ data-see-current-button-label="<%= t("see_current", scope: "decidim.admin.moderations.reports.index") %>">
27
+ <%= t("see_original", scope: "decidim.admin.moderations.reports.index") %>
28
+ </button>
29
+ <% end %>
30
+ </dt>
31
+ <dd class="reported-content">
32
+ <div class="current">
33
+ <%= reported_content_for moderation.reportable, locale: @report.locale %>
34
+ </div>
35
+ <% if translatable_resource?(moderation.reportable) %>
36
+ <div class="original">
37
+ <%= reported_content_for moderation.reportable, locale: moderation.reportable.content_original_language %>
38
+ </div>
39
+ <% end %>
40
+ </dd>
41
+
42
+ <dt><%= t(".report_reason") %></dt>
43
+ <dd><%= t("decidim.admin.moderations.report.reasons.#{@report.reason}") %></dd>
44
+
45
+ <dt><%= t(".report_details") %></dt>
46
+ <dd><%= @report.details %>
47
+ </div>
48
+ </dl>
49
+ </div>
50
+ </div>
51
+
52
+ <div class="button--double form-general-submit">
53
+ <% if !moderation.reportable.hidden? && allowed_to?(:unreport, permission_resource) %>
54
+ <%= link_to t("actions.unreport", scope: "decidim.moderations"), unreport_moderation_path(id: moderation), method: :put, class: "button" %>
55
+ <% end %>
56
+ <% if !moderation.reportable.hidden? && allowed_to?(:hide, permission_resource) %>
57
+ <%= link_to t("actions.hide", scope: "decidim.moderations"), hide_moderation_path(id: moderation), method: :put, class: "button alert" %>
58
+ <% end %>
59
+ <% if moderation.reportable.hidden? && allowed_to?(:unhide, permission_resource) %>
60
+ <%= link_to t("actions.unhide", scope: "decidim.moderations"), unhide_moderation_path(id: moderation), method: :put, class: "button alert" %>
61
+ <% end %>
62
+ </div>
@@ -8,7 +8,7 @@
8
8
  <strong class="subscribed_title"><%= t("newsletters.index.subscribed_count", scope: "decidim.admin") %></strong>
9
9
  <span class="subscribed_count"><%= recipients_count_query %></span>
10
10
  <% if allowed_to? :create, :newsletter %>
11
- <%= link_to t("actions.new", scope: "decidim.admin", name: t("models.newsletter.name", scope: "decidim.admin").downcase), [:newsletter_templates], class: "button tiny button--title new" %>
11
+ <%= link_to t("actions.newsletter.new", scope: "decidim.admin"), ["newsletter_templates"], class: "button tiny button--title new" %>
12
12
  <% end %>
13
13
  </div>
14
14
  </div>
@@ -5,7 +5,7 @@
5
5
  <h2 class="card-title"><%= t ".title" %></h2>
6
6
  </div>
7
7
  <div class="card-section">
8
- <%= cell("decidim/announcement", newsletter_attention_callout_args) %>
8
+ <%= cell("decidim/announcement", newsletter_attention_callout_announcement, callout_class: "warning") %>
9
9
 
10
10
  <div class="card">
11
11
  <div class="card-divider">
@@ -61,11 +61,11 @@
61
61
  </div>
62
62
  <% end %>
63
63
 
64
- <%= cell("decidim/announcement", newsletter_recipients_count_callout_args) %>
64
+ <%= cell("decidim/announcement", newsletter_recipients_count_callout_announcement, callout_class: "warning") %>
65
65
 
66
66
  <div class="button--double form-general-submit">
67
67
  <% if allowed_to?(:update, :newsletter, newsletter: @newsletter) && !@newsletter.sent? %>
68
- <%= link_to t("actions.edit", scope: "decidim.admin"), [:edit, @newsletter], class: "button" %>
68
+ <%= link_to t("actions.edit", scope: "decidim.admin"), ["edit", @newsletter], class: "button" %>
69
69
  <% end %>
70
70
  <% unless @newsletter.sent? %>
71
71
  <%= f.submit t(".deliver"), class: "button alert", data: { confirm: t(".confirm_deliver") } %>
@@ -17,7 +17,7 @@
17
17
  <div class="button--double form-general-submit">
18
18
  <% if allowed_to?(:update, :newsletter, newsletter: @newsletter) %>
19
19
  <% if !@newsletter.sent? %>
20
- <%= link_to t("actions.edit", scope: "decidim.admin"), [:edit, @newsletter], class: "button" %>
20
+ <%= link_to t("actions.edit", scope: "decidim.admin"), ["edit", @newsletter], class: "button" %>
21
21
  <% end %>
22
22
  <% unless @newsletter.sent? %>
23
23
  <%= link_to t(".select_recipients_to_deliver"), select_recipients_to_deliver_newsletter_path(@newsletter), class: "button alert" %>
@@ -8,11 +8,12 @@
8
8
  <table class="table-list">
9
9
  <thead>
10
10
  <tr>
11
- <th><%= t(".name") %></th>
12
- <th><%= t(".nickname") %></th>
13
- <th><%= t(".created_at") %></th>
14
- <th><%= t(".status") %></th>
11
+ <th><%= sort_link(query, :name, t(".name"), default_order: :desc) %></th>
12
+ <th><%= sort_link(query, :nickname, t(".nickname"), default_order: :desc) %></th>
13
+ <th><%= sort_link(query, :created_at, t(".created_at"), default_order: :desc) %></th>
14
+ <th><%= sort_link(query, :officialized_at, t(".status"), default_order: :desc) %></th>
15
15
  <th><%= t(".badge") %></th>
16
+ <th><%= sort_link(query, :user_moderation_report_count, t(".reports"), default_order: :desc) %></th>
16
17
  <th><%= t(".actions") %></th>
17
18
  </tr>
18
19
  </thead>
@@ -29,8 +30,16 @@
29
30
  <td><%= l user.created_at, format: :short %></td>
30
31
  <td><%= user.officialized? ? t(".officialized") : t(".not_officialized") %></td>
31
32
  <td><%= translated_attribute(user.officialized_as) %></td>
33
+ <td><%= user.report_count %></td>
32
34
 
33
35
  <td class="table-list__actions">
36
+ <% if allowed_to?(:block, :admin_user) %>
37
+ <% if user.blocked? %>
38
+ <%= icon_link_to "ban", user_block_path(user_id: user.id), t(".unblock"), class: "action-icon action-icon--disabled", method: :delete %>
39
+ <% else %>
40
+ <%= icon_link_to "ban", new_user_block_path(user_id: user.id), t(".block"), class: "action-icon action-icon" %>
41
+ <% end %>
42
+ <% end %>
34
43
  <% if allowed_to? :show_email, :user, user: user %>
35
44
  <%= icon_link_to "envelope-open", show_email_officialization_path(user_id: user.id), t(".show_email"), class: "action-icon action-icon--show-email", data: { full_name: user.name, toggle: "show-email-modal" } %>
36
45
  <% end %>
@@ -5,10 +5,6 @@
5
5
  <h2 class="card-title"><%= t ".homepage_appearance_title" %></h2>
6
6
  </div>
7
7
  <div class="card-section">
8
- <div class="row column">
9
- <%= form.check_box :show_statistics %>
10
- </div>
11
-
12
8
  <div class="row column">
13
9
  <%= form.translated :editor, :description %>
14
10
  </div>
@@ -13,7 +13,7 @@
13
13
  <%= form.color_field :highlight_alternative_color, value: current_organization.colors["highlight-alternative"] %>
14
14
  </div>
15
15
 
16
- <% if true %>
16
+ <% if Decidim.enable_html_header_snippets %>
17
17
  <div class="row column">
18
18
  <%= form.text_area :header_snippets %>
19
19
  <p class="help-text"><%= t(".header_snippets_help") %></p>
@@ -11,19 +11,19 @@
11
11
 
12
12
  <div class="organization-images">
13
13
  <div class="preview">
14
- <%= form.upload :favicon, dimensions_info: current_organization.favicon.dimensions_info, extension_whitelist: current_organization.favicon.extension_whitelist %>
14
+ <%= form.upload :favicon, dimensions_info: current_organization.favicon.dimensions_info, extension_allowlist: current_organization.favicon.extension_allowlist %>
15
15
  </div>
16
16
 
17
17
  <div class="preview">
18
- <%= form.upload :logo, dimensions_info: current_organization.logo.dimensions_info, extension_whitelist: current_organization.favicon.extension_whitelist %>
18
+ <%= form.upload :logo, dimensions_info: current_organization.logo.dimensions_info, extension_allowlist: current_organization.favicon.extension_allowlist %>
19
19
  </div>
20
20
 
21
21
  <div class="preview">
22
- <%= form.upload :official_img_header, dimensions_info: current_organization.official_img_header.dimensions_info, extension_whitelist: current_organization.favicon.extension_whitelist %>
22
+ <%= form.upload :official_img_header, dimensions_info: current_organization.official_img_header.dimensions_info, extension_allowlist: current_organization.favicon.extension_allowlist %>
23
23
  </div>
24
24
 
25
25
  <div class="preview">
26
- <%= form.upload :official_img_footer, dimensions_info: current_organization.official_img_footer.dimensions_info, extension_whitelist: current_organization.favicon.extension_whitelist %>
26
+ <%= form.upload :official_img_footer, dimensions_info: current_organization.official_img_footer.dimensions_info, extension_allowlist: current_organization.favicon.extension_allowlist %>
27
27
  </div>
28
28
  </div>
29
29
  </div>
@@ -4,7 +4,7 @@
4
4
  <%= t(".title") %>
5
5
  <% if allowed_to? :create, :space_private_user %>
6
6
  <%= link_to t(".import_via_csv"), new_participatory_space_private_users_csv_import_path, class: "button tiny button--title import" %>
7
- <%= link_to t("actions.new", scope: "decidim.admin", name: t("models.participatory_space_private_user.name", scope: "decidim.admin")), url_for(action: :new), class: "button tiny button--title new" %>
7
+ <%= link_to t("actions.participatory_space_private_user.new", scope: "decidim.admin"), url_for(action: :new), class: "button tiny button--title new" %>
8
8
  <% end %>
9
9
  </h2>
10
10
  </div>
@@ -32,7 +32,7 @@
32
32
  <%= icon_link_to "zoom-in", scope_scopes_path(scope), t("actions.browse", scope: "decidim.admin"), class: "action-icon--browse", method: :get, data: {} %>
33
33
 
34
34
  <% if allowed_to? :update, :scope, scope: scope %>
35
- <%= icon_link_to "pencil", [:edit, scope], t("actions.edit", scope: "decidim.admin"), class: "action-icon--edit", method: :get, data: {} %>
35
+ <%= icon_link_to "pencil", ["edit", scope], t("actions.edit", scope: "decidim.admin"), class: "action-icon--edit", method: :get, data: {} %>
36
36
  <% end %>
37
37
 
38
38
  <% if allowed_to? :destroy, :scope, scope: scope %>
@@ -0,0 +1,47 @@
1
+ <div class="grid-container full">
2
+ <div class="grid-x grid-margin-x card-grid">
3
+ <div class="cell small-6">
4
+ <div class="card">
5
+ <div class="card-section">
6
+ <h5><%= active_content_blocks_title %></h5>
7
+
8
+ <ul class="draggable-list js-connect js-list-actives" data-sort-url="<%= resource_sort_url %>">
9
+ <% active_blocks.each do |content_block| %>
10
+ <%= cell resource_content_block_cell, content_block %>
11
+ <% end %>
12
+ </ul>
13
+ </div>
14
+ </div>
15
+ </div>
16
+
17
+ <div class="cell small-6">
18
+ <div class="card">
19
+ <div class="card-section">
20
+ <h5><%= inactive_content_blocks_title %></h5>
21
+
22
+ <ul class="draggable-list js-connect js-list-availables">
23
+ <% inactive_blocks.each do |content_block_or_manifest| %>
24
+ <%= cell resource_content_block_cell, content_block_or_manifest %>
25
+ <% end %>
26
+ </ul>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </div>
32
+
33
+ <script>
34
+ document.addEventListener("dragend", function (event) {
35
+ var activeBlocks = Array.prototype.slice.call(document.querySelectorAll(".js-list-actives li"));
36
+ var activeBlocksManifestName = activeBlocks.map(block => block.dataset.contentBlockManifestName);
37
+ var sortUrl = document.querySelector(".js-list-actives").dataset.sortUrl;
38
+ var target = event.target;
39
+
40
+ $.ajax({
41
+ method: "PUT",
42
+ url: sortUrl,
43
+ contentType: "application/json",
44
+ data: JSON.stringify({ manifests: activeBlocksManifestName })
45
+ });
46
+ })
47
+ </script>
@@ -0,0 +1,15 @@
1
+ <%= decidim_form_for(@form, html: { class: "form edit_content_block" }, url: resource_landing_page_content_block_path) do |form| %>
2
+ <div class="card">
3
+ <div class="card-divider">
4
+ <h2 class="card-title"><%= t content_block.public_name_key %></h2>
5
+ </div>
6
+
7
+ <div class="card-section">
8
+ <%= cell content_block.settings_form_cell, form, content_block: content_block %>
9
+ </div>
10
+ </div>
11
+
12
+ <div class="button--double form-general-submit">
13
+ <%= form.submit submit_button_text %>
14
+ </div>
15
+ <% end %>
@@ -27,3 +27,9 @@
27
27
  <div class="row column">
28
28
  <%= form.check_box :show_in_footer %>
29
29
  </div>
30
+
31
+ <% if form.object.control_public_access? %>
32
+ <div class="row column">
33
+ <%= form.check_box :allow_public_access %>
34
+ </div>
35
+ <% end %>
@@ -5,7 +5,7 @@
5
5
  <% if topic %>
6
6
  <%= translated_attribute(topic.title) %>
7
7
  <%= link_to t(".destroy"), [topic], class: "button tiny button--title destroy", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
8
- <%= link_to t(".edit"), [:edit, topic], class: "button tiny button--title new" %>
8
+ <%= link_to t(".edit"), ["edit", topic], class: "button tiny button--title new" %>
9
9
  <% else %>
10
10
  <%= t(".without_topic") %>
11
11
  <% end %>
@@ -28,7 +28,7 @@
28
28
  <% pages.each do |page| %>
29
29
  <tr>
30
30
  <td>
31
- <%= link_to translated_attribute(page.title), [:edit, page] %><br>
31
+ <%= link_to translated_attribute(page.title), ["edit", page] %><br>
32
32
  </td>
33
33
  <td>
34
34
  <%= l page.created_at, format: :short %>
@@ -40,7 +40,7 @@
40
40
  </td>
41
41
  <td class="table-list__actions">
42
42
  <% if allowed_to? :update, :static_page, static_page: page %>
43
- <%= icon_link_to "pencil", [:edit, page], t("actions.edit", scope: "decidim.admin"), class: "action-icon--edit" %>
43
+ <%= icon_link_to "pencil", ["edit", page], t("actions.edit", scope: "decidim.admin"), class: "action-icon--edit" %>
44
44
  <% end %>
45
45
 
46
46
  <%= icon_link_to "eye", decidim.page_path(page), t("actions.view", scope: "decidim.admin.static_pages"), class: "action-icon--preview" %>
@@ -3,7 +3,7 @@
3
3
  <h2 class="card-title">
4
4
  <%= t "decidim.admin.titles.users" %>
5
5
  <% if allowed_to? :create, :admin_user %>
6
- <%= link_to t("actions.new", scope: "decidim.admin", name: t("models.user.name", scope: "decidim.admin")), [:new, :user], class: "button tiny button--title" %>
6
+ <%= link_to t("actions.user.new", scope: "decidim.admin"), ["new", "user"], class: "button tiny button--title" %>
7
7
  <% end %>
8
8
  </h2>
9
9
  </div>
@@ -46,7 +46,7 @@
46
46
  <td><%= l user.created_at, format: :short %></td>
47
47
  <td class="table-list__actions">
48
48
  <% if allowed_to?(:invite, :admin_user, user: user) && user.invited_to_sign_up? %>
49
- <%= icon_link_to "reload", [:resend_invitation, user], t("actions.resend_invitation", scope: "decidim.admin"), class: "resend-invitation", method: :post %>
49
+ <%= icon_link_to "reload", ["resend_invitation", user], t("actions.resend_invitation", scope: "decidim.admin"), class: "resend-invitation", method: :post %>
50
50
  <% end %>
51
51
 
52
52
  <% if allowed_to? :destroy, :admin_user, user: user %>
@@ -1,3 +1,5 @@
1
+ <% add_decidim_page_title(t("titles.panel", scope: "decidim.admin")) %>
2
+ <% add_decidim_page_title(current_organization.name) %>
1
3
  <!doctype html>
2
4
  <html class="no-js" lang="<%= I18n.locale %>">
3
5
  <head>
@@ -7,15 +9,17 @@
7
9
  <meta name="copyright" content="">
8
10
  <meta name="description" content="">
9
11
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
10
- <title><%= title %></title>
12
+ <title><%= decidim_page_title %></title>
11
13
  <%= render partial: "layouts/decidim/admin/header" %>
12
14
  <%= foundation_datepicker_locale_tag %>
13
15
  </head>
14
16
  <body>
17
+ <%= render partial: "layouts/decidim/timeout_modal" %>
15
18
  <%= render partial: "layouts/decidim/admin/template_top" %>
16
19
  <div class="layout-nav">
17
20
  <%= main_menu.render %>
18
21
  <%= yield :secondary_nav if content_for? :secondary_nav %>
22
+ <%= yield :sidebar_menu_nav if content_for? :sidebar_menu_nav %>
19
23
  </div>
20
24
  <div class="layout-content">
21
25
  <div class="container">
@@ -2,9 +2,9 @@
2
2
  <a href="#menu" class="menu-trigger"><%= icon "menu" %></a>
3
3
  <%= link_to decidim.root_path, class: "logo", target: "_blank" do %>
4
4
  <% if current_organization.logo.present? %>
5
- <%= image_tag current_organization.logo.url, alt: title %>
5
+ <%= image_tag current_organization.logo.url, alt: current_organization.name %>
6
6
  <% else %>
7
- <%= title %>
7
+ <%= current_organization.name %>
8
8
  <% end %>
9
9
  <% end %>
10
10
  <div class='tool-bar'>
@@ -0,0 +1,7 @@
1
+ <% content_for :sidebar_menu_nav do %>
2
+ <%= global_moderation_menu.render(title: t(".title" )) %>
3
+ <% end %>
4
+
5
+ <%= render "layouts/decidim/admin/application" do %>
6
+ <%= yield %>
7
+ <% end %>
@@ -4,7 +4,7 @@
4
4
  <%= t ".title" %>
5
5
  </div>
6
6
  <div class="secondary-nav__actions">
7
- <%= link_to t("actions.new", scope: "decidim.admin", name: t("models.newsletter.name", scope: "decidim.admin")), [:newsletter_templates], class: "button expanded small new" %>
7
+ <%= link_to t("actions.newsletter.new", scope: "decidim.admin"), ["newsletter_templates"], class: "button expanded small new" %>
8
8
  </div>
9
9
  </div>
10
10
  <% end %>
@@ -4,8 +4,8 @@
4
4
  <%= t "decidim.admin.titles.static_pages" %>
5
5
  </div>
6
6
  <div class="secondary-nav__actions">
7
- <%= link_to t("static_page_topics.new.create", scope: "decidim.admin"), [:new, :static_page_topic], class: "button expanded small new" %>
8
- <%= link_to t("static_pages.new.create", scope: "decidim.admin"), [:new, :static_page], class: "button expanded small new" %>
7
+ <%= link_to t("static_page_topics.new.create", scope: "decidim.admin"), ["new", "static_page_topic"], class: "button expanded small new" %>
8
+ <%= link_to t("static_pages.new.create", scope: "decidim.admin"), ["new", "static_page"], class: "button expanded small new" %>
9
9
  </div>
10
10
  </div>
11
11
  <% end %>