decidim-admin 0.23.3 → 0.24.1

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

Potentially problematic release.


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

Files changed (178) 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_admin_user_actions.rb +98 -0
  31. data/app/commands/decidim/admin/create_participatory_space_private_user.rb +1 -1
  32. data/app/commands/decidim/admin/create_static_page.rb +2 -1
  33. data/app/commands/decidim/admin/hide_resource.rb +21 -0
  34. data/app/commands/decidim/admin/impersonate_user.rb +17 -1
  35. data/app/commands/decidim/admin/promote_managed_user.rb +10 -0
  36. data/app/commands/decidim/admin/reorder_content_blocks.rb +6 -3
  37. data/app/commands/decidim/admin/transfer_user.rb +78 -0
  38. data/app/commands/decidim/admin/unblock_user.rb +48 -0
  39. data/app/commands/decidim/admin/unreport_user.rb +46 -0
  40. data/app/commands/decidim/admin/update_organization_appearance.rb +12 -4
  41. data/app/commands/decidim/admin/update_static_page.rb +2 -1
  42. data/app/commands/decidim/admin/verify_user_group.rb +1 -1
  43. data/app/controllers/concerns/decidim/admin/filterable.rb +1 -1
  44. data/app/controllers/concerns/decidim/admin/global_moderation_context.rb +47 -0
  45. data/app/controllers/concerns/decidim/admin/landing_page.rb +105 -0
  46. data/app/controllers/concerns/decidim/admin/landing_page_content_blocks.rb +118 -0
  47. data/app/controllers/concerns/decidim/moderations/admin/filterable.rb +54 -0
  48. data/app/controllers/decidim/admin/block_user_controller.rb +60 -0
  49. data/app/controllers/decidim/admin/components/base_controller.rb +1 -0
  50. data/app/controllers/decidim/admin/conflicts_controller.rb +46 -0
  51. data/app/controllers/decidim/admin/exports_controller.rb +1 -2
  52. data/app/controllers/decidim/admin/global_moderations/reports_controller.rb +18 -0
  53. data/app/controllers/decidim/admin/global_moderations_controller.rb +32 -0
  54. data/app/controllers/decidim/admin/impersonations_controller.rb +1 -1
  55. data/app/controllers/decidim/admin/imports_controller.rb +52 -0
  56. data/app/controllers/decidim/admin/moderated_users_controller.rb +44 -0
  57. data/app/controllers/decidim/admin/moderations/reports_controller.rb +39 -0
  58. data/app/controllers/decidim/admin/moderations_controller.rb +31 -7
  59. data/app/controllers/decidim/admin/officializations_controller.rb +3 -3
  60. data/app/controllers/decidim/admin/organization_homepage_controller.rb +6 -2
  61. data/app/controllers/decidim/admin/static_pages_controller.rb +7 -0
  62. data/app/events/decidim/resource_hidden_event.rb +37 -0
  63. data/app/forms/decidim/admin/block_user_form.rb +25 -0
  64. data/app/forms/decidim/admin/import_form.rb +85 -0
  65. data/app/forms/decidim/admin/organization_appearance_form.rb +1 -2
  66. data/app/forms/decidim/admin/static_page_form.rb +6 -1
  67. data/app/forms/decidim/admin/transfer_user_form.rb +19 -0
  68. data/app/helpers/decidim/admin/admin_terms_helper.rb +0 -7
  69. data/app/helpers/decidim/admin/application_helper.rb +5 -4
  70. data/app/helpers/decidim/admin/exports_helper.rb +2 -2
  71. data/app/helpers/decidim/admin/filterable_helper.rb +3 -2
  72. data/app/helpers/decidim/admin/imports_helper.rb +43 -0
  73. data/app/helpers/decidim/admin/menu_helper.rb +10 -0
  74. data/app/helpers/decidim/admin/moderations/reports_helper.rb +40 -0
  75. data/app/helpers/decidim/admin/moderations_helper.rb +36 -0
  76. data/app/helpers/decidim/admin/newsletters_helper.rb +4 -10
  77. data/app/helpers/decidim/admin/settings_helper.rb +2 -1
  78. data/app/helpers/decidim/admin/sidebar_menu_helper.rb +13 -0
  79. data/app/helpers/decidim/admin/user_moderations_helper.rb +6 -0
  80. data/app/jobs/decidim/admin/import_participatory_space_private_user_csv_job.rb +1 -1
  81. data/app/jobs/decidim/admin/verify_user_group_from_csv_job.rb +1 -1
  82. data/app/permissions/decidim/admin/permissions.rb +7 -6
  83. data/app/presenters/decidim/admin/dashboard_metric_charts_presenter.rb +1 -1
  84. data/app/presenters/decidim/admin/secondary_menu_presenter.rb +26 -0
  85. data/app/queries/decidim/admin/active_users_counter.rb +1 -2
  86. data/app/queries/decidim/admin/user_filter.rb +1 -2
  87. data/app/views/decidim/admin/admin_terms/show.html.erb +1 -1
  88. data/app/views/decidim/admin/attachment_collections/index.html.erb +1 -1
  89. data/app/views/decidim/admin/attachments/index.html.erb +1 -1
  90. data/app/views/decidim/admin/block_user/new.html.erb +22 -0
  91. data/app/views/decidim/admin/categories/index.html.erb +1 -1
  92. data/app/views/decidim/admin/components/_component.html.erb +12 -0
  93. data/app/views/decidim/admin/components/_form.html.erb +1 -1
  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 +2 -2
  108. data/app/views/decidim/admin/officializations/index.html.erb +13 -4
  109. data/app/views/decidim/admin/organization_appearance/_form.html.erb +0 -4
  110. data/app/views/decidim/admin/organization_appearance/form/_colors.html.erb +1 -1
  111. data/app/views/decidim/admin/organization_appearance/form/_images.html.erb +4 -4
  112. data/app/views/decidim/admin/participatory_space_private_users/index.html.erb +1 -1
  113. data/app/views/decidim/admin/shared/landing_page/edit.html.erb +47 -0
  114. data/app/views/decidim/admin/shared/landing_page_content_blocks/edit.html.erb +15 -0
  115. data/app/views/decidim/admin/static_pages/_form.html.erb +6 -0
  116. data/app/views/decidim/admin/users/index.html.erb +1 -1
  117. data/app/views/layouts/decidim/admin/_application.html.erb +6 -1
  118. data/app/views/layouts/decidim/admin/_js_configuration.html.erb +26 -0
  119. data/app/views/layouts/decidim/admin/_title_bar.html.erb +2 -2
  120. data/app/views/layouts/decidim/admin/global_moderations.html.erb +7 -0
  121. data/app/views/layouts/decidim/admin/newsletters.erb +1 -1
  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 +150 -4
  127. data/config/locales/cs.yml +155 -9
  128. data/config/locales/de.yml +150 -5
  129. data/config/locales/el.yml +55 -5
  130. data/config/locales/en.yml +151 -5
  131. data/config/locales/es-MX.yml +148 -3
  132. data/config/locales/es-PY.yml +148 -3
  133. data/config/locales/es.yml +148 -3
  134. data/config/locales/eu.yml +0 -3
  135. data/config/locales/fi-plain.yml +149 -3
  136. data/config/locales/fi.yml +149 -3
  137. data/config/locales/fr-CA.yml +139 -4
  138. data/config/locales/fr.yml +139 -4
  139. data/config/locales/gl.yml +127 -5
  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 +46 -5
  145. data/config/locales/lv.yml +0 -5
  146. data/config/locales/nl.yml +120 -4
  147. data/config/locales/no.yml +13 -7
  148. data/config/locales/pl.yml +166 -20
  149. data/config/locales/pt-BR.yml +0 -3
  150. data/config/locales/pt.yml +0 -5
  151. data/config/locales/ro-RO.yml +232 -120
  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 +150 -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.rb +6 -0
  162. data/lib/decidim/admin/engine.rb +76 -1
  163. data/lib/decidim/admin/import.rb +12 -0
  164. data/lib/decidim/admin/import/creator.rb +82 -0
  165. data/lib/decidim/admin/import/importer.rb +82 -0
  166. data/lib/decidim/admin/import/importer_factory.rb +17 -0
  167. data/lib/decidim/admin/import/readers.rb +39 -0
  168. data/lib/decidim/admin/import/readers/base.rb +31 -0
  169. data/lib/decidim/admin/import/readers/csv.rb +23 -0
  170. data/lib/decidim/admin/import/readers/json.rb +25 -0
  171. data/lib/decidim/admin/import/readers/xls.rb +25 -0
  172. data/lib/decidim/admin/test/commands/create_attachment_collection_examples.rb +6 -6
  173. data/lib/decidim/admin/test/commands/create_category_examples.rb +6 -6
  174. data/lib/decidim/admin/test/filterable_examples.rb +1 -8
  175. data/lib/decidim/admin/test/manage_moderations_examples.rb +68 -4
  176. data/lib/decidim/admin/version.rb +1 -1
  177. metadata +72 -15
  178. data/app/assets/javascripts/decidim/admin/gallery.js.es6 +0 -5
@@ -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>
@@ -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 %>
@@ -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>
@@ -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 %>
@@ -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: