decidim-admin 0.23.5 → 0.24.2

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.

Potentially problematic release.


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

Files changed (182) 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 +4 -1
  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/subform_multi_toggler.component.js.es6 +2 -2
  12. data/app/assets/javascripts/decidim/admin/subform_toggler.component.js.es6 +2 -2
  13. data/app/assets/javascripts/decidim/admin/user_moderations.js +2 -0
  14. data/app/assets/stylesheets/decidim/admin/_variables.scss +9 -0
  15. data/app/assets/stylesheets/decidim/admin/components/_dropdown-menu.scss +3 -0
  16. data/app/assets/stylesheets/decidim/admin/extra/_action-icon.scss +13 -0
  17. data/app/assets/stylesheets/decidim/admin/extra/_block_user.scss +5 -0
  18. data/app/assets/stylesheets/decidim/admin/extra/_title_bar.scss +1 -0
  19. data/app/assets/stylesheets/decidim/admin/modules/_moderations.scss +39 -0
  20. data/app/assets/stylesheets/decidim/admin/modules/_modules.scss +2 -0
  21. data/app/assets/stylesheets/decidim/admin/modules/_reveal.scss +5 -0
  22. data/app/assets/stylesheets/decidim/admin/modules/_secondary-nav.scss +6 -3
  23. data/app/assets/stylesheets/decidim/admin/modules/_user-login.scss +2 -2
  24. data/app/assets/stylesheets/decidim/admin/user_moderations.scss +3 -0
  25. data/app/assets/stylesheets/decidim/admin/utils/_settings.scss +1 -0
  26. data/app/cells/decidim/admin/content_block/show.erb +1 -1
  27. data/app/cells/decidim/admin/content_block_cell.rb +4 -0
  28. data/app/commands/decidim/admin/block_user.rb +70 -0
  29. data/app/commands/decidim/admin/create_import.rb +29 -0
  30. data/app/commands/decidim/admin/create_participatory_space_private_user.rb +1 -1
  31. data/app/commands/decidim/admin/create_static_page.rb +2 -1
  32. data/app/commands/decidim/admin/hide_resource.rb +21 -0
  33. data/app/commands/decidim/admin/impersonate_user.rb +17 -1
  34. data/app/commands/decidim/admin/promote_managed_user.rb +10 -0
  35. data/app/commands/decidim/admin/reorder_content_blocks.rb +6 -3
  36. data/app/commands/decidim/admin/transfer_user.rb +78 -0
  37. data/app/commands/decidim/admin/unblock_user.rb +48 -0
  38. data/app/commands/decidim/admin/unreport_user.rb +46 -0
  39. data/app/commands/decidim/admin/update_organization_appearance.rb +12 -4
  40. data/app/commands/decidim/admin/update_static_page.rb +2 -1
  41. data/app/commands/decidim/admin/verify_user_group.rb +1 -1
  42. data/app/controllers/concerns/decidim/admin/filterable.rb +1 -1
  43. data/app/controllers/concerns/decidim/admin/global_moderation_context.rb +47 -0
  44. data/app/controllers/concerns/decidim/admin/landing_page.rb +105 -0
  45. data/app/controllers/concerns/decidim/admin/landing_page_content_blocks.rb +118 -0
  46. data/app/controllers/concerns/decidim/moderations/admin/filterable.rb +54 -0
  47. data/app/controllers/decidim/admin/block_user_controller.rb +60 -0
  48. data/app/controllers/decidim/admin/components/base_controller.rb +1 -0
  49. data/app/controllers/decidim/admin/conflicts_controller.rb +46 -0
  50. data/app/controllers/decidim/admin/exports_controller.rb +1 -2
  51. data/app/controllers/decidim/admin/global_moderations/reports_controller.rb +18 -0
  52. data/app/controllers/decidim/admin/global_moderations_controller.rb +32 -0
  53. data/app/controllers/decidim/admin/impersonations_controller.rb +1 -1
  54. data/app/controllers/decidim/admin/imports_controller.rb +52 -0
  55. data/app/controllers/decidim/admin/moderated_users_controller.rb +44 -0
  56. data/app/controllers/decidim/admin/moderations/reports_controller.rb +39 -0
  57. data/app/controllers/decidim/admin/moderations_controller.rb +31 -7
  58. data/app/controllers/decidim/admin/officializations_controller.rb +3 -3
  59. data/app/controllers/decidim/admin/organization_homepage_controller.rb +6 -2
  60. data/app/controllers/decidim/admin/static_pages_controller.rb +7 -0
  61. data/app/events/decidim/resource_hidden_event.rb +37 -0
  62. data/app/forms/decidim/admin/block_user_form.rb +25 -0
  63. data/app/forms/decidim/admin/import_form.rb +85 -0
  64. data/app/forms/decidim/admin/organization_appearance_form.rb +1 -2
  65. data/app/forms/decidim/admin/static_page_form.rb +6 -1
  66. data/app/forms/decidim/admin/transfer_user_form.rb +19 -0
  67. data/app/helpers/decidim/admin/admin_terms_helper.rb +0 -7
  68. data/app/helpers/decidim/admin/application_helper.rb +5 -4
  69. data/app/helpers/decidim/admin/exports_helper.rb +2 -2
  70. data/app/helpers/decidim/admin/filterable_helper.rb +3 -2
  71. data/app/helpers/decidim/admin/imports_helper.rb +43 -0
  72. data/app/helpers/decidim/admin/menu_helper.rb +10 -0
  73. data/app/helpers/decidim/admin/moderations/reports_helper.rb +40 -0
  74. data/app/helpers/decidim/admin/moderations_helper.rb +36 -0
  75. data/app/helpers/decidim/admin/newsletters_helper.rb +4 -10
  76. data/app/helpers/decidim/admin/settings_helper.rb +2 -1
  77. data/app/helpers/decidim/admin/sidebar_menu_helper.rb +13 -0
  78. data/app/helpers/decidim/admin/user_moderations_helper.rb +6 -0
  79. data/app/jobs/decidim/admin/import_participatory_space_private_user_csv_job.rb +1 -1
  80. data/app/jobs/decidim/admin/verify_user_group_from_csv_job.rb +1 -1
  81. data/app/permissions/decidim/admin/permissions.rb +7 -6
  82. data/app/presenters/decidim/admin/dashboard_metric_charts_presenter.rb +1 -1
  83. data/app/presenters/decidim/admin/secondary_menu_presenter.rb +26 -0
  84. data/app/queries/decidim/admin/active_users_counter.rb +1 -2
  85. data/app/queries/decidim/admin/user_filter.rb +1 -2
  86. data/app/views/decidim/admin/admin_terms/show.html.erb +1 -1
  87. data/app/views/decidim/admin/area_types/index.html.erb +2 -2
  88. data/app/views/decidim/admin/areas/index.html.erb +1 -1
  89. data/app/views/decidim/admin/attachment_collections/index.html.erb +1 -1
  90. data/app/views/decidim/admin/attachments/index.html.erb +1 -1
  91. data/app/views/decidim/admin/block_user/new.html.erb +22 -0
  92. data/app/views/decidim/admin/categories/index.html.erb +1 -1
  93. data/app/views/decidim/admin/components/_component.html.erb +12 -0
  94. data/app/views/decidim/admin/conflicts/edit.html.erb +46 -0
  95. data/app/views/decidim/admin/conflicts/index.html.erb +34 -0
  96. data/app/views/decidim/admin/dashboard/show.html.erb +2 -1
  97. data/app/views/decidim/admin/exports/_dropdown.html.erb +1 -1
  98. data/app/views/decidim/admin/imports/_dropdown.html.erb +9 -0
  99. data/app/views/decidim/admin/imports/new.html.erb +57 -0
  100. data/app/views/decidim/admin/moderated_users/_report.html.erb +10 -0
  101. data/app/views/decidim/admin/moderated_users/index.html.erb +78 -0
  102. data/app/views/decidim/admin/moderations/_report.html.erb +1 -1
  103. data/app/views/decidim/admin/moderations/index.html.erb +28 -9
  104. data/app/views/decidim/admin/moderations/reports/index.html.erb +102 -0
  105. data/app/views/decidim/admin/moderations/reports/show.html.erb +62 -0
  106. data/app/views/decidim/admin/newsletters/index.html.erb +1 -1
  107. data/app/views/decidim/admin/newsletters/select_recipients_to_deliver.html.erb +3 -3
  108. data/app/views/decidim/admin/newsletters/show.html.erb +1 -1
  109. data/app/views/decidim/admin/officializations/index.html.erb +13 -4
  110. data/app/views/decidim/admin/organization_appearance/_form.html.erb +0 -4
  111. data/app/views/decidim/admin/organization_appearance/form/_colors.html.erb +1 -1
  112. data/app/views/decidim/admin/organization_appearance/form/_images.html.erb +4 -4
  113. data/app/views/decidim/admin/participatory_space_private_users/index.html.erb +1 -1
  114. data/app/views/decidim/admin/scopes/index.html.erb +1 -1
  115. data/app/views/decidim/admin/shared/landing_page/edit.html.erb +47 -0
  116. data/app/views/decidim/admin/shared/landing_page_content_blocks/edit.html.erb +15 -0
  117. data/app/views/decidim/admin/static_pages/_form.html.erb +6 -0
  118. data/app/views/decidim/admin/static_pages/_topic.html.erb +3 -3
  119. data/app/views/decidim/admin/users/index.html.erb +2 -2
  120. data/app/views/layouts/decidim/admin/_application.html.erb +6 -1
  121. data/app/views/layouts/decidim/admin/_js_configuration.html.erb +26 -0
  122. data/app/views/layouts/decidim/admin/_title_bar.html.erb +2 -2
  123. data/app/views/layouts/decidim/admin/global_moderations.html.erb +7 -0
  124. data/app/views/layouts/decidim/admin/newsletters.erb +1 -1
  125. data/app/views/layouts/decidim/admin/pages.html.erb +2 -2
  126. data/app/views/layouts/decidim/admin/settings.html.erb +2 -33
  127. data/app/views/layouts/decidim/admin/users.html.erb +11 -0
  128. data/config/locales/ar.yml +0 -5
  129. data/config/locales/bg.yml +0 -1
  130. data/config/locales/ca.yml +150 -4
  131. data/config/locales/cs.yml +151 -5
  132. data/config/locales/de.yml +150 -5
  133. data/config/locales/el.yml +55 -5
  134. data/config/locales/en.yml +151 -5
  135. data/config/locales/es-MX.yml +149 -3
  136. data/config/locales/es-PY.yml +149 -3
  137. data/config/locales/es.yml +149 -3
  138. data/config/locales/eu.yml +0 -3
  139. data/config/locales/fi-plain.yml +149 -3
  140. data/config/locales/fi.yml +149 -3
  141. data/config/locales/fr-CA.yml +146 -4
  142. data/config/locales/fr.yml +146 -4
  143. data/config/locales/gl.yml +120 -5
  144. data/config/locales/hu.yml +13 -5
  145. data/config/locales/id-ID.yml +0 -3
  146. data/config/locales/is-IS.yml +19 -3
  147. data/config/locales/it.yml +59 -5
  148. data/config/locales/ja.yml +59 -5
  149. data/config/locales/lv.yml +0 -5
  150. data/config/locales/nl.yml +113 -4
  151. data/config/locales/no.yml +11 -5
  152. data/config/locales/pl.yml +150 -5
  153. data/config/locales/pt-BR.yml +0 -3
  154. data/config/locales/pt.yml +0 -5
  155. data/config/locales/ro-RO.yml +102 -5
  156. data/config/locales/ru.yml +0 -3
  157. data/config/locales/sk.yml +0 -5
  158. data/config/locales/sl.yml +0 -1
  159. data/config/locales/sr-CS.yml +0 -3
  160. data/config/locales/sv.yml +149 -4
  161. data/config/locales/tr-TR.yml +81 -4
  162. data/config/locales/uk.yml +0 -3
  163. data/config/locales/zh-CN.yml +0 -5
  164. data/config/routes.rb +21 -1
  165. data/lib/decidim/admin.rb +6 -0
  166. data/lib/decidim/admin/engine.rb +76 -1
  167. data/lib/decidim/admin/import.rb +12 -0
  168. data/lib/decidim/admin/import/creator.rb +82 -0
  169. data/lib/decidim/admin/import/importer.rb +82 -0
  170. data/lib/decidim/admin/import/importer_factory.rb +17 -0
  171. data/lib/decidim/admin/import/readers.rb +39 -0
  172. data/lib/decidim/admin/import/readers/base.rb +31 -0
  173. data/lib/decidim/admin/import/readers/csv.rb +23 -0
  174. data/lib/decidim/admin/import/readers/json.rb +25 -0
  175. data/lib/decidim/admin/import/readers/xls.rb +25 -0
  176. data/lib/decidim/admin/test/commands/create_attachment_collection_examples.rb +6 -6
  177. data/lib/decidim/admin/test/commands/create_category_examples.rb +6 -6
  178. data/lib/decidim/admin/test/filterable_examples.rb +1 -8
  179. data/lib/decidim/admin/test/manage_moderations_examples.rb +68 -4
  180. data/lib/decidim/admin/version.rb +1 -1
  181. metadata +71 -15
  182. data/app/assets/javascripts/decidim/admin/gallery.js.es6 +0 -5
@@ -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">
@@ -24,5 +28,6 @@
24
28
  </div>
25
29
  <%= render partial: "layouts/decidim/admin/template_bottom" %>
26
30
  <%= render partial: "decidim/shared/confirm_modal" %>
31
+ <%= render partial: "layouts/decidim/admin/js_configuration" %>
27
32
  </body>
28
33
  </html>
@@ -0,0 +1,26 @@
1
+ <%
2
+ js_configs = {
3
+ icons_path: image_path("decidim/icons.svg"),
4
+ messages: {
5
+ "selfxssWarning": {
6
+ title: t("decidim.security.selfxss_warning.title"),
7
+ description: t("decidim.security.selfxss_warning.description")
8
+ }
9
+ }
10
+ }
11
+ character_messages = {
12
+ "charactersAtLeast": {
13
+ one: t("forms.length_validator.minimum.one", count: "%count%", default: "forms.length_validator.minimum.other"),
14
+ other: t("forms.length_validator.minimum.other", count: "%count%")
15
+ },
16
+ "charactersLeft": {
17
+ one: t("decidim.components.add_comment_form.remaining_characters_1", count: "%count%"),
18
+ other: t("decidim.components.add_comment_form.remaining_characters", count: "%count%")
19
+ }
20
+ }
21
+ %>
22
+
23
+ <script>
24
+ Decidim.config.set(<%== js_configs.to_json %>);
25
+ Decidim.InputCharacterCounter.configureMessages(<%== character_messages.to_json %>);
26
+ </script>
@@ -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 %>
@@ -1,37 +1,6 @@
1
- <% content_for :secondary_nav do %>
2
- <div class="secondary-nav">
3
- <div class="secondary-nav__title">
4
- <%= t ".title" %>
5
- </div>
6
- <ul>
7
- <li <% if is_active_link?(decidim_admin.edit_organization_path) %> class="is-active" <% end %>>
8
- <%= link_to t("menu.configuration", scope: "decidim.admin"), decidim_admin.edit_organization_path %>
9
- </li>
10
- <li <% if is_active_link?(decidim_admin.edit_organization_appearance_path) %> class="is-active" <% end %>>
11
- <%= link_to t("menu.appearance", scope: "decidim.admin"), decidim_admin.edit_organization_appearance_path %>
12
- </li>
13
- <li <% if is_active_link?(decidim_admin.edit_organization_homepage_path, /^\/admin\/organization\/homepage/) %> class="is-active" <% end %>>
14
- <%= link_to t("menu.homepage", scope: "decidim.admin"), decidim_admin.edit_organization_homepage_path %>
15
- </li>
16
- <li <% if is_active_link?(decidim_admin.scopes_path) %> class="is-active" <% end %>>
17
- <%= link_to t("menu.scopes", scope: "decidim.admin"), decidim_admin.scopes_path %>
18
- </li>
19
- <li <% if is_active_link?(decidim_admin.scope_types_path) %> class="is-active" <% end %>>
20
- <%= link_to t("menu.scope_types", scope: "decidim.admin"), decidim_admin.scope_types_path %>
21
- </li>
22
- <li <% if is_active_link?(decidim_admin.areas_path) %> class="is-active" <% end %>>
23
- <%= link_to t("menu.areas", scope: "decidim.admin"), decidim_admin.areas_path %>
24
- </li>
25
- <li <% if is_active_link?(decidim_admin.area_types_path) %> class="is-active" <% end %>>
26
- <%= link_to t("menu.area_types", scope: "decidim.admin"), decidim_admin.area_types_path %>
27
- </li>
28
- <li <% if allowed_to?(:update, :help_sections) && is_active_link?(decidim_admin.help_sections_path) %> class="is-active" <% end %>>
29
- <%= link_to t("menu.help_sections", scope: "decidim.admin"), decidim_admin.help_sections_path %>
30
- </li>
31
- </ul>
32
- </div>
1
+ <% content_for :sidebar_menu_nav do %>
2
+ <%= organization_settings_menu.render(title: t(".title") ) %>
33
3
  <% end %>
34
-
35
4
  <%= render "layouts/decidim/admin/application" do %>
36
5
  <%= yield %>
37
6
  <% end %>
@@ -22,6 +22,17 @@
22
22
  <% if allowed_to? :index, :impersonatable_user %>
23
23
  <li <% if is_active_link?(decidim_admin.impersonatable_users_path) %> class="is-active" <% end %>>
24
24
  <%= link_to t("menu.impersonations", scope: "decidim.admin"), decidim_admin.impersonatable_users_path %>
25
+ <ul>
26
+ <li <% if is_active_link?(decidim_admin.conflicts_path) %> class="is-active" <% end %>>
27
+ <%= %>
28
+ <%= link_to link_to t("title", scope: "decidim.admin.conflicts"), decidim_admin.conflicts_path %>
29
+ </li>
30
+ </ul>
31
+ </li>
32
+ <% end %>
33
+ <% if allowed_to? :index, :moderate_users %>
34
+ <li <% if is_active_link?(decidim_admin.moderated_users_path) %> class="is-active" <% end %>>
35
+ <%= link_to t("menu.reported_users", scope: "decidim.admin"), decidim_admin.moderated_users_path %>
25
36
  </li>
26
37
  <% end %>
27
38
  <li <% if is_active_link?(decidim_admin.authorization_workflows_path) %> class="is-active" <% end %>>
@@ -63,7 +63,6 @@ ar:
63
63
  rich_text_editor_in_public_views: إتاحة محرر النص الغني للمشارِكين
64
64
  secondary_color: ثانوي
65
65
  send_welcome_notification: إرسال إشعار بالترحيب
66
- show_statistics: عرض الإحصائيات
67
66
  success_color: نجاح
68
67
  time_zone: المنطقة الزمنية
69
68
  tos_version: شروط وأحكام الخدمة
@@ -137,7 +136,6 @@ ar:
137
136
  accept:
138
137
  success: رائع! لقد قمت بالموافقة على شروط الإستخدام للمدير.
139
138
  actions:
140
- accept: أوافق على شروط المدير هذه
141
139
  are_you_sure: هل أنت متأكد مِن أنك رافض لشروط المدير؟
142
140
  refuse: ارفض شروط المدير
143
141
  title: وافق على شروط وأحكام الإستخدام
@@ -522,7 +520,6 @@ ar:
522
520
  instagram: إينستاجرام
523
521
  social_handlers: التواصل الاجتماعي
524
522
  twitter: تويتر
525
- url: العنوان الشبكي
526
523
  youtube: يوتيوب
527
524
  update:
528
525
  error: حدثت مشكلة أثناء تحديث هذه المؤسسة.
@@ -556,7 +553,6 @@ ar:
556
553
  error: حدثت مشكلة في حذف مشارك خاص لهذه المساحة التشاركية.
557
554
  success: المشاركة الفضاء الفضاء وصول المشاركين دمرت بنجاح.
558
555
  index:
559
- import_via_csv: استيراد عبر ملف csv
560
556
  title: المشاركة الفضاء المشارك الخاص
561
557
  new:
562
558
  create: إنشاء
@@ -736,7 +732,6 @@ ar:
736
732
  fields:
737
733
  hidden_at: مخبأة في
738
734
  report_count: عد
739
- reportable: الإبلاغ عنها
740
735
  reported_content_url: تم الإبلاغ عن عنوان URL للمحتوى
741
736
  reports: تقارير
742
737
  visit_url: زيارة العنوان الشبكي
@@ -70,7 +70,6 @@ bg:
70
70
  rich_text_editor_in_public_views: Разреши редактора на rich text за участниците
71
71
  secondary_color: Вторичен
72
72
  send_welcome_notification: Изпращай приветствия
73
- show_statistics: Покажи статистиката
74
73
  success_color: Успешно
75
74
  time_zone: Часова зона
76
75
  tos_version: Версия на условия за ползване
@@ -26,11 +26,15 @@ ca:
26
26
  published_at: Publicat el
27
27
  weight: Pes
28
28
  id: ID
29
+ import:
30
+ user_group_id: Importar com
29
31
  newsletter:
30
32
  body: Cos
31
33
  subject: Assumpte
32
34
  organization:
35
+ admin_terms_of_use_body: Cos del text de condicions d'ús per als administradors
33
36
  alert_color: Alerta
37
+ available_authorizations: Autoritzacions disponibles
34
38
  badges_enabled: Habilitar les ensenyes
35
39
  comments_max_length: Longitud màxima dels comentaris (deixa 0 si vols mantenir la configuració per defecte)
36
40
  cta_button_path: URL del botó d'acció
@@ -41,6 +45,8 @@ ca:
41
45
  enable_omnipresent_banner: Mostrar el banner omnipresent
42
46
  facebook_handler: Nom d'usuari de Facebook
43
47
  favicon: Icona
48
+ force_authentication: Forçar autenticació
49
+ force_users_to_authenticate_before_access_organization: Forçar les usuàries a autenticar-se abans d'accedir a l'organització
44
50
  from: Adreça des d'on s'enviaran els correus electrònics
45
51
  github_handler: Nom d'usuari de GitHub
46
52
  header_snippets: Codi personalitzat a la capçalera
@@ -53,6 +59,7 @@ ca:
53
59
  highlighted_content_banner_image: Imatge
54
60
  highlighted_content_banner_short_description: Breu descripció
55
61
  highlighted_content_banner_title: Títol
62
+ host: Host
56
63
  instagram_handler: Nom d'usuari a Instagram
57
64
  logo: Logotip
58
65
  machine_translation_display_priority: Prioritat al mostrar les traduccions automàtiques
@@ -65,17 +72,21 @@ ca:
65
72
  omnipresent_banner_short_description: Breu descripció
66
73
  omnipresent_banner_title: Títol
67
74
  omnipresent_banner_url: URL
75
+ organization_admin_email: Correu electrònic de l'administradora de l'organització
76
+ organization_admin_name: Nom de l'administradora de l'organització
77
+ organization_locales: Idiomes de l'organització
68
78
  primary_color: Primària
69
79
  reference_prefix: prefix de referència
70
80
  rich_text_editor_in_public_views: Habilitar l'editor de text enriquit
71
81
  secondary_color: Secundari
82
+ secondary_hosts: Hosts secundaris
72
83
  send_welcome_notification: Envia la notificació de benvinguda
73
- show_statistics: Mostrar estadístiques
74
84
  success_color: Èxit
75
85
  time_zone: Zona horària
76
86
  tos_version: Versió dels Termes de Servei
77
87
  twitter_handler: Nom d'usuària de Twitter
78
88
  user_groups_enabled: Habilitar grups
89
+ users_registration_mode: Mode registre d'usuàries
79
90
  warning_color: Avís
80
91
  welcome_notification_body: Cos de la notificació de benvinguda
81
92
  welcome_notification_subject: Assumpte de la notificació de benvinguda
@@ -94,6 +105,7 @@ ca:
94
105
  settings:
95
106
  scope_id: Àmbit
96
107
  static_page:
108
+ allow_public_access: Permet l'accés sense autenticació
97
109
  changed_notably: S'han produït canvis notables.
98
110
  content: Contingut
99
111
  organization: Organització
@@ -116,6 +128,10 @@ ca:
116
128
  allowed_file_content_types: Fitxer d'imatge no vàlid
117
129
  official_img_header:
118
130
  allowed_file_content_types: Fitxer d'imatge no vàlid
131
+ new_import:
132
+ attributes:
133
+ file:
134
+ invalid_mime_type: Tipus Mime invàlid
119
135
  activerecord:
120
136
  attributes:
121
137
  decidim/static_page:
@@ -134,21 +150,34 @@ ca:
134
150
  admin:
135
151
  actions:
136
152
  add: Afegir
153
+ attachment:
154
+ new: Nou arxiu adjunt
155
+ attachment_collection:
156
+ new: Nova col·lecció d'arxius adjunts
137
157
  browse: Explorar
158
+ category:
159
+ new: Nova categoria
138
160
  export: Exporta
161
+ import: Importar
139
162
  manage: Gestionar
140
163
  new: Nou %{name}
164
+ newsletter:
165
+ new: Nou butlletí
166
+ participatory_space_private_user:
167
+ new: Nou usuari privat de l'espai participatiu
141
168
  per_page: Per pàgina
142
169
  permissions: Permisos
143
170
  reject: Rebutjar
144
171
  share: Compartir
172
+ user:
173
+ new: Nou usuari
145
174
  verify: Verificar
146
175
  admin_terms_of_use:
147
176
  accept:
148
177
  error: S'ha produït un error en acceptar els Termes i Condicions dell panell d'administració.
149
178
  success: Genial! Has acceptat els Termes i Condicions del panell d'administració.
150
179
  actions:
151
- accept: Estic d'acord amb aquests termes
180
+ accept: Estic d'acord amb els termes següents
152
181
  are_you_sure: Segur que vols rebutjar els Termes i Condicions del panell d'administració?
153
182
  refuse: Rebutjar els termes
154
183
  title: Accepto els Termes i Condicions d'Administració
@@ -227,6 +256,12 @@ ca:
227
256
  autocomplete:
228
257
  no_results: No s'han trobat resultats
229
258
  search_prompt: Escriu com a mínim tres caràcters per cercar
259
+ block_user:
260
+ new:
261
+ action: Bloquejar compte i enviar justificació
262
+ description: El bloqueig d'una usuària deixarà el seu compte inservible, pots facilitar a la teva justificació i directrius les maneres que consideris per tal de desbloquejar a la usuària.
263
+ justification: Justificació
264
+ title: Bloquejar a la usuària %{name}
230
265
  categories:
231
266
  create:
232
267
  error: S'ha produït un error en crear aquesta categoria.
@@ -282,6 +317,21 @@ ca:
282
317
  update:
283
318
  error: S'ha produït un error en actualitzar aquest component.
284
319
  success: El component s'ha actualitzat correctament.
320
+ conflicts:
321
+ attempts: Intents
322
+ 'false': 'No'
323
+ managed_user_name: Usuari gestionat
324
+ solved: Resolt
325
+ title: Conflictes de verificacions
326
+ transfer:
327
+ email: Correu electrònic
328
+ error: S¡ha produït un error en transferir la participant actual a la participant gestionada.
329
+ name: Nom
330
+ reason: Raó
331
+ success: La transferència s'ha completat correctament.
332
+ title: Transferir
333
+ 'true': 'Sí'
334
+ user_name: Usuària
285
335
  dashboard:
286
336
  show:
287
337
  view_more_logs: Veure més registres
@@ -298,6 +348,9 @@ ca:
298
348
  category_id_eq:
299
349
  label: Categoria
300
350
  filter_label: Filtre
351
+ moderations:
352
+ reportable_type_string_eq:
353
+ label: Tipus
301
354
  officialized_at_null:
302
355
  label: Estat
303
356
  values:
@@ -318,9 +371,16 @@ ca:
318
371
  search_label: Cercar
319
372
  search_placeholder:
320
373
  name_or_nickname_or_email_cont: Buscar %{collection} per correu electrònic, nom o àlies.
374
+ reported_id_string_or_reported_content_cont: Cercar %{collection} per id o contingut reportable.
321
375
  title_cont: Buscar %{collection} per títol.
322
376
  state_eq:
323
377
  label: Estat
378
+ forms:
379
+ file_help:
380
+ import:
381
+ explanation: 'Instruccions per a l''arxiu:'
382
+ message_1: Estan suportats els arxius CSV, JSON i Excel (.xls)
383
+ message_2: Pels arxius CSV, el separador entre columnes ha de ser un punt i coma (";")
324
384
  help_sections:
325
385
  error: S'ha produït un error en actualitzar les seccions d'ajuda
326
386
  form:
@@ -359,6 +419,24 @@ ca:
359
419
  impersonate_existing_managed_user: Gestionar la participant "%{name}"
360
420
  impersonate_existing_user: Gestionar la participant "%{name}"
361
421
  impersonate_new_managed_user: Gestionar una nova participant
422
+ imports:
423
+ creators:
424
+ proposalcreator: Creador de la proposta
425
+ error: S'ha produït un error durant la importació
426
+ help:
427
+ proposalcreator: L'arxiu ha d'incloure els noms de columna title/en i body/en (o un altre idioma de preferència per exemple, title/ca i body/ca). També s'admeten les columnes scope/id i category/id.
428
+ import_from_file: Importar d'un arxiu
429
+ invalid_lines: S'ha trobat un error al recurs número %{invalid_lines}
430
+ new:
431
+ accepted_mime_types:
432
+ csv: csv
433
+ json: json
434
+ xls: xls
435
+ actions:
436
+ back: Tornar
437
+ file_legend: Afegir un arxiu d'importació que serà processat.
438
+ import: Importar
439
+ notice: "%{number} %{resource_name} importat correctament"
362
440
  logs:
363
441
  logs_list:
364
442
  no_logs_yet: Encara no hi ha cap registre d'activitat
@@ -382,8 +460,10 @@ ca:
382
460
  help_sections: Seccions d'ajuda
383
461
  homepage: Pàgina d'inici
384
462
  impersonations: Impersonacions
463
+ moderation: Moderacions globals
385
464
  newsletters: Butlletins
386
465
  participants: Participants
466
+ reported_users: Usuàries reportades
387
467
  scope_types: Tipus d'àmbit
388
468
  scopes: Àmbits
389
469
  settings: Configuració
@@ -471,6 +551,26 @@ ca:
471
551
  phone: Telèfon
472
552
  state: Estat
473
553
  users_count: Nombre de participants
554
+ moderated_users:
555
+ index:
556
+ actions:
557
+ block: Bloquejar usuària
558
+ title: Accions
559
+ unblock: Desbloquejar usuària
560
+ unreport: Desfer denúncia
561
+ name: Nom
562
+ nickname: Àlies
563
+ reason: Raó
564
+ reports: Número de denúncies
565
+ title: Llistant usuàries reportades
566
+ report:
567
+ reasons:
568
+ does_not_belong: No pertany
569
+ offensive: Ofensiu
570
+ spam: Spam
571
+ tabs:
572
+ blocked: Bloquejat
573
+ unblocked: No bloquejat
474
574
  moderations:
475
575
  index:
476
576
  title: Moderacions
@@ -479,6 +579,21 @@ ca:
479
579
  does_not_belong: No pertany
480
580
  offensive: Ofensiu
481
581
  spam: Contingut no desitjat
582
+ reports:
583
+ index:
584
+ author: Autor(s)
585
+ callout_html: Un contingut apareix al panell de moderació quan ha estat reportat per una usuària (pot ser qualsevol amb un compte registrat) fent clic en la icona %{icon} al costat de l'element.
586
+ content_original_language: Idioma original del contingut
587
+ participatory_space: Espai de participació
588
+ reported_content: Contingut reportat
589
+ see_current: Veure actual
590
+ see_original: Veure original
591
+ title: Informes de moderació
592
+ show:
593
+ report_details: Detalls del motiu
594
+ report_language: Idioma de l'informe
595
+ report_reason: Motiu
596
+ title: Detalls de l'informe
482
597
  newsletter_templates:
483
598
  index:
484
599
  preview_template: Previsualitzar
@@ -544,6 +659,9 @@ ca:
544
659
  error: S'ha produït un error en actualitzar aquest butlletí.
545
660
  success: Butlletí actualitzat correctament. Si us plau, revisa'l abans d'enviar-lo.
546
661
  officializations:
662
+ block:
663
+ error: S'ha produït un error en bloquejar a la participant
664
+ success: Participant bloqueada correctament
547
665
  create:
548
666
  success: La participant s'ha oficialitzat correctament
549
667
  destroy:
@@ -551,6 +669,7 @@ ca:
551
669
  index:
552
670
  actions: Accions
553
671
  badge: Insígnia
672
+ block: Bloquejar usuària
554
673
  created_at: Creat el
555
674
  name: Nom
556
675
  nickname: Àlies
@@ -558,8 +677,10 @@ ca:
558
677
  officialize: Oficialitza
559
678
  officialized: Oficialitzada
560
679
  reofficialize: Torna a oficialitzar
680
+ reports: Informes
561
681
  show_email: Mostra l'adreça de correu
562
682
  status: Estat
683
+ unblock: Desbloquejar usuària
563
684
  unofficialize: Des-oficialitzar
564
685
  new:
565
686
  badge: Insígnia d'oficialització
@@ -573,6 +694,9 @@ ca:
573
694
  hidden: ocult
574
695
  show: Mostra
575
696
  title: Mostra l'adreça de correu electrònic de la participant
697
+ unblock:
698
+ error: S'ha produït un error al desbloquejar a la participant
699
+ success: Participant desbloquejada correctament
576
700
  organization:
577
701
  edit:
578
702
  title: Edita organització
@@ -619,7 +743,7 @@ ca:
619
743
  error: S'ha produït un error en eliminar una participant participada d'aquest espai participatiu.
620
744
  success: L'accés de la participant a l'espai de participació privat s'ha eliminat correctament.
621
745
  index:
622
- import_via_csv: Importar via csv
746
+ import_via_csv: Importar des de CSV
623
747
  title: Participant de l'espai participatiu privat
624
748
  new:
625
749
  create: Crear
@@ -742,6 +866,7 @@ ca:
742
866
  impersonatable_users: Participants que es poden gestionar
743
867
  impersonations: Gestió de participants
744
868
  metrics: Mètriques
869
+ panel: Administradora
745
870
  participants: Participants
746
871
  scope_types: Tipus d'àmbit
747
872
  scopes: Àmbits
@@ -805,8 +930,19 @@ ca:
805
930
  errors:
806
931
  impersonate_user:
807
932
  reason: Has d'indicar un motiu per a la gestió d'una participant no gestionada
933
+ metrics:
934
+ blocked_users:
935
+ object: usuàries bloquejades
936
+ title: Usuàries bloquejades
937
+ reported_users:
938
+ object: usuàries reportades
939
+ title: Usuàries reportades
940
+ user_reports:
941
+ object: informes d'usuari
942
+ title: Informes d'usuari
808
943
  moderations:
809
944
  actions:
945
+ expand: Expandir
810
946
  hidden: Ocults
811
947
  hide: Amagar
812
948
  not_hidden: No ocult
@@ -827,18 +963,28 @@ ca:
827
963
  models:
828
964
  moderation:
829
965
  fields:
966
+ created_at: Data de creació
830
967
  hidden_at: Data d'ocultació
968
+ participatory_space: Espai de participació
831
969
  report_count: Recompte
832
- reportable: Tipus
970
+ reportable_id: Id
971
+ reportable_type: Tipus
833
972
  reported_content_url: URL contingut del contingut reportat
834
973
  reports: Denúncies
835
974
  visit_url: Visiteu l'URL
975
+ report:
976
+ fields:
977
+ details: Detalls del motiu
978
+ locale: Idioma
979
+ reason: Motiu
836
980
  errors:
837
981
  messages:
838
982
  invalid_json: JSON no vàlid
839
983
  layouts:
840
984
  decidim:
841
985
  admin:
986
+ global_moderations:
987
+ title: Moderacions globals
842
988
  newsletters:
843
989
  title: Butlletins
844
990
  settings: