decidim-admin 0.28.3 → 0.29.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (229) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +13 -0
  3. data/app/cells/decidim/admin/content_block_cell.rb +0 -1
  4. data/app/cells/decidim/admin/results_per_page/show.erb +2 -2
  5. data/app/cells/decidim/admin/results_per_page_cell.rb +0 -2
  6. data/app/commands/decidim/admin/create_area.rb +4 -32
  7. data/app/commands/decidim/admin/create_area_type.rb +4 -33
  8. data/app/commands/decidim/admin/create_attachment.rb +5 -4
  9. data/app/commands/decidim/admin/create_attachment_collection.rb +3 -3
  10. data/app/commands/decidim/admin/create_category.rb +4 -37
  11. data/app/commands/decidim/admin/create_component.rb +7 -40
  12. data/app/commands/decidim/admin/create_newsletter.rb +11 -29
  13. data/app/commands/decidim/admin/create_participatory_space_private_user.rb +3 -3
  14. data/app/commands/decidim/admin/create_scope.rb +15 -32
  15. data/app/commands/decidim/admin/create_scope_type.rb +3 -32
  16. data/app/commands/decidim/admin/create_static_page.rb +6 -47
  17. data/app/commands/decidim/admin/create_static_page_topic.rb +4 -26
  18. data/app/commands/decidim/admin/deliver_newsletter.rb +4 -5
  19. data/app/commands/decidim/admin/destroy_area.rb +2 -25
  20. data/app/commands/decidim/admin/destroy_category.rb +4 -29
  21. data/app/commands/decidim/admin/destroy_component.rb +5 -43
  22. data/app/commands/decidim/admin/destroy_newsletter.rb +2 -30
  23. data/app/commands/decidim/admin/destroy_participatory_space_private_user.rb +5 -32
  24. data/app/commands/decidim/admin/destroy_scope.rb +6 -33
  25. data/app/commands/decidim/admin/officialize_user.rb +1 -1
  26. data/app/commands/decidim/admin/participatory_space/create_admin.rb +4 -4
  27. data/app/commands/decidim/admin/process_participatory_space_private_user_import_csv.rb +5 -4
  28. data/app/commands/decidim/admin/promote_managed_user.rb +4 -5
  29. data/app/commands/decidim/admin/unofficialize_user.rb +1 -1
  30. data/app/commands/decidim/admin/update_area.rb +2 -41
  31. data/app/commands/decidim/admin/update_area_type.rb +2 -42
  32. data/app/commands/decidim/admin/update_attachment.rb +10 -7
  33. data/app/commands/decidim/admin/update_attachment_collection.rb +3 -3
  34. data/app/commands/decidim/admin/update_category.rb +2 -45
  35. data/app/commands/decidim/admin/update_component.rb +4 -5
  36. data/app/commands/decidim/admin/update_component_permissions.rb +3 -3
  37. data/app/commands/decidim/admin/{update_external_domain_whitelist.rb → update_external_domain_allowlist.rb} +6 -5
  38. data/app/commands/decidim/admin/update_help_sections.rb +6 -3
  39. data/app/commands/decidim/admin/update_newsletter.rb +8 -8
  40. data/app/commands/decidim/admin/update_organization.rb +9 -53
  41. data/app/commands/decidim/admin/update_organization_appearance.rb +10 -81
  42. data/app/commands/decidim/admin/update_scope.rb +7 -40
  43. data/app/commands/decidim/admin/update_scope_type.rb +2 -42
  44. data/app/commands/decidim/admin/update_static_page.rb +5 -46
  45. data/app/commands/decidim/admin/update_static_page_topic.rb +2 -43
  46. data/app/constraints/decidim/admin/organization_dashboard_constraint.rb +1 -1
  47. data/app/controllers/concerns/decidim/admin/content_blocks/landing_page.rb +2 -2
  48. data/app/controllers/concerns/decidim/admin/filterable.rb +79 -4
  49. data/app/controllers/concerns/decidim/admin/global_moderation_context.rb +1 -1
  50. data/app/controllers/concerns/decidim/admin/needs_admin_tos_accepted.rb +0 -7
  51. data/app/controllers/concerns/decidim/admin/paginable.rb +20 -0
  52. data/app/controllers/concerns/decidim/admin/participatory_space_export.rb +1 -1
  53. data/app/controllers/decidim/admin/application_controller.rb +2 -1
  54. data/app/controllers/decidim/admin/area_types_controller.rb +8 -9
  55. data/app/controllers/decidim/admin/areas_controller.rb +1 -1
  56. data/app/controllers/decidim/admin/authorization_workflows_controller.rb +1 -1
  57. data/app/controllers/decidim/admin/categories_controller.rb +2 -2
  58. data/app/controllers/decidim/admin/component_permissions_controller.rb +1 -1
  59. data/app/controllers/decidim/admin/components_controller.rb +2 -2
  60. data/app/controllers/decidim/admin/concerns/has_attachment_collections.rb +2 -2
  61. data/app/controllers/decidim/admin/concerns/has_attachments.rb +2 -2
  62. data/app/controllers/decidim/admin/concerns/has_private_users.rb +1 -1
  63. data/app/controllers/decidim/admin/concerns/has_private_users_csv_import.rb +1 -1
  64. data/app/controllers/decidim/admin/conflicts_controller.rb +5 -13
  65. data/app/controllers/decidim/admin/help_sections_controller.rb +1 -1
  66. data/app/controllers/decidim/admin/managed_users/promotions_controller.rb +1 -1
  67. data/app/controllers/decidim/admin/moderations/reports_controller.rb +4 -4
  68. data/app/controllers/decidim/admin/moderations_controller.rb +7 -7
  69. data/app/controllers/decidim/admin/newsletter_templates_controller.rb +1 -1
  70. data/app/controllers/decidim/admin/newsletters_controller.rb +5 -5
  71. data/app/controllers/decidim/admin/organization_appearance_controller.rb +1 -1
  72. data/app/controllers/decidim/admin/organization_controller.rb +1 -1
  73. data/app/controllers/decidim/admin/{organization_external_domain_whitelist_controller.rb → organization_external_domain_allowlist_controller.rb} +7 -7
  74. data/app/controllers/decidim/admin/scope_types_controller.rb +7 -8
  75. data/app/controllers/decidim/admin/scopes_controller.rb +1 -1
  76. data/app/controllers/decidim/admin/share_tokens_controller.rb +1 -1
  77. data/app/controllers/decidim/admin/static_page_topics_controller.rb +2 -2
  78. data/app/controllers/decidim/admin/static_pages_controller.rb +2 -2
  79. data/app/forms/decidim/admin/attachment_form.rb +7 -1
  80. data/app/forms/decidim/admin/organization_appearance_form.rb +0 -3
  81. data/app/forms/decidim/admin/{organization_external_domain_whitelist_form.rb → organization_external_domain_allowlist_form.rb} +3 -3
  82. data/app/forms/decidim/admin/organization_form.rb +2 -2
  83. data/app/forms/decidim/admin/static_page_form.rb +0 -1
  84. data/app/helpers/decidim/admin/application_helper.rb +0 -13
  85. data/app/helpers/decidim/admin/filterable_helper.rb +19 -3
  86. data/app/helpers/decidim/admin/moderations/reports_helper.rb +3 -1
  87. data/app/helpers/decidim/admin/newsletters_helper.rb +3 -3
  88. data/app/helpers/decidim/admin/paginable/per_page_helper.rb +22 -0
  89. data/app/jobs/decidim/admin/import_participatory_space_private_user_csv_job.rb +2 -2
  90. data/app/packs/entrypoints/decidim_admin.js +4 -1
  91. data/app/packs/src/decidim/admin/application.js +19 -15
  92. data/app/packs/src/decidim/admin/css_preview.js +39 -0
  93. data/app/packs/src/decidim/admin/form.js +18 -1
  94. data/app/packs/src/decidim/admin/participatory_space_search.js +1 -1
  95. data/app/packs/src/decidim/admin/proposal_infinite_edit.js +2 -2
  96. data/app/packs/src/decidim/admin/sync_radio_buttons.js +27 -0
  97. data/app/packs/src/decidim/admin/text_copy.js +19 -0
  98. data/app/packs/stylesheets/decidim/admin/_cards.scss +1 -1
  99. data/app/packs/stylesheets/decidim/admin/_datepicker.scss +62 -0
  100. data/app/packs/stylesheets/decidim/admin/_item_edit.scss +1 -1
  101. data/app/packs/stylesheets/decidim/admin/_item_show.scss +8 -0
  102. data/app/packs/stylesheets/decidim/admin/_proposal_status.scss +5 -0
  103. data/app/packs/stylesheets/decidim/admin/application.scss +2 -0
  104. data/app/permissions/decidim/admin/permissions.rb +2 -2
  105. data/app/queries/decidim/admin/user_filter.rb +4 -4
  106. data/app/queries/decidim/admin/user_groups_evaluation.rb +1 -1
  107. data/app/views/decidim/admin/attachment_collections/index.html.erb +1 -1
  108. data/app/views/decidim/admin/attachments/_form.html.erb +21 -2
  109. data/app/views/decidim/admin/attachments/index.html.erb +2 -2
  110. data/app/views/decidim/admin/authorization_workflows/index.html.erb +26 -8
  111. data/app/views/decidim/admin/block_user/new.html.erb +1 -1
  112. data/app/views/decidim/admin/categories/index.html.erb +2 -2
  113. data/app/views/decidim/admin/components/_form.html.erb +1 -1
  114. data/app/views/decidim/admin/components/index.html.erb +1 -5
  115. data/app/views/decidim/admin/conflicts/index.html.erb +6 -29
  116. data/app/views/decidim/admin/dashboard/_pending_moderations.html.erb +1 -1
  117. data/app/views/decidim/admin/dashboard/show.html.erb +1 -1
  118. data/app/views/decidim/admin/exports/_dropdown.html.erb +6 -6
  119. data/app/views/decidim/admin/impersonatable_users/index.html.erb +3 -3
  120. data/app/views/decidim/admin/imports/_dropdown.html.erb +5 -7
  121. data/app/views/decidim/admin/imports/new.html.erb +6 -7
  122. data/app/views/decidim/admin/logs/_filters.html.erb +3 -3
  123. data/app/views/decidim/admin/managed_users/promotions/new.html.erb +1 -1
  124. data/app/views/decidim/admin/moderated_users/index.html.erb +2 -2
  125. data/app/views/decidim/admin/moderations/index.html.erb +5 -5
  126. data/app/views/decidim/admin/moderations/reports/index.html.erb +6 -6
  127. data/app/views/decidim/admin/moderations/reports/show.html.erb +4 -4
  128. data/app/views/decidim/admin/newsletter_templates/index.html.erb +2 -2
  129. data/app/views/decidim/admin/newsletter_templates/show.html.erb +7 -7
  130. data/app/views/decidim/admin/newsletters/index.html.erb +1 -1
  131. data/app/views/decidim/admin/newsletters/select_recipients_to_deliver.html.erb +3 -3
  132. data/app/views/decidim/admin/newsletters/show.html.erb +1 -1
  133. data/app/views/decidim/admin/organization/_form.html.erb +3 -3
  134. data/app/views/decidim/admin/organization_appearance/form/_colors.html.erb +0 -3
  135. data/app/views/decidim/admin/organization_appearance/form/_images.html.erb +5 -5
  136. data/app/views/decidim/admin/organization_appearance/form/_minimap.html.erb +3 -3
  137. data/app/views/decidim/admin/{organization_external_domain_whitelist → organization_external_domain_allowlist}/_external_domain.html.erb +4 -4
  138. data/app/views/decidim/admin/{organization_external_domain_whitelist → organization_external_domain_allowlist}/_form.html.erb +2 -2
  139. data/app/views/decidim/admin/{organization_external_domain_whitelist → organization_external_domain_allowlist}/edit.html.erb +2 -2
  140. data/app/views/decidim/admin/participatory_space_private_users/index.html.erb +1 -1
  141. data/app/views/decidim/admin/participatory_space_private_users_csv_imports/new.html.erb +1 -1
  142. data/app/views/decidim/admin/share_tokens/_share_tokens.html.erb +1 -1
  143. data/app/views/decidim/admin/shared/_adjacent_navigation.html.erb +30 -0
  144. data/app/views/decidim/admin/shared/_admin_confirm_modal.html.erb +7 -7
  145. data/app/views/decidim/admin/shared/_filters.html.erb +1 -1
  146. data/app/views/decidim/admin/shared/_gallery.html.erb +1 -1
  147. data/app/views/decidim/admin/shared/landing_page/_content_blocks.html.erb +2 -2
  148. data/app/views/decidim/admin/static_page_topics/index.html.erb +1 -1
  149. data/app/views/decidim/admin/static_pages/_form.html.erb +0 -4
  150. data/app/views/decidim/admin/users_statistics/_users_count.html.erb +2 -2
  151. data/app/views/layouts/decidim/admin/_admin_timeout_modal.html.erb +2 -2
  152. data/app/views/layouts/decidim/admin/_application.html.erb +4 -4
  153. data/app/views/layouts/decidim/admin/_callouts_full.html.erb +1 -1
  154. data/app/views/layouts/decidim/admin/_js_configuration.html.erb +3 -1
  155. data/app/views/layouts/decidim/admin/_title_bar.html.erb +2 -2
  156. data/app/views/layouts/decidim/admin/_title_bar_responsive.html.erb +2 -2
  157. data/config/locales/ar.yml +0 -7
  158. data/config/locales/bg.yml +15 -10
  159. data/config/locales/ca.yml +18 -15
  160. data/config/locales/cs.yml +15 -17
  161. data/config/locales/de.yml +15 -12
  162. data/config/locales/el.yml +0 -12
  163. data/config/locales/en.yml +16 -13
  164. data/config/locales/es-MX.yml +16 -13
  165. data/config/locales/es-PY.yml +16 -13
  166. data/config/locales/es.yml +18 -15
  167. data/config/locales/eu.yml +16 -13
  168. data/config/locales/fi-plain.yml +15 -12
  169. data/config/locales/fi.yml +19 -16
  170. data/config/locales/fr-CA.yml +14 -11
  171. data/config/locales/fr.yml +13 -10
  172. data/config/locales/ga-IE.yml +0 -3
  173. data/config/locales/gl.yml +0 -5
  174. data/config/locales/hu.yml +9 -10
  175. data/config/locales/id-ID.yml +0 -3
  176. data/config/locales/is-IS.yml +0 -3
  177. data/config/locales/it.yml +0 -8
  178. data/config/locales/ja.yml +16 -13
  179. data/config/locales/kaa.yml +0 -3
  180. data/config/locales/ko.yml +0 -6
  181. data/config/locales/lb.yml +0 -8
  182. data/config/locales/lt.yml +0 -13
  183. data/config/locales/lv.yml +0 -3
  184. data/config/locales/nl.yml +0 -8
  185. data/config/locales/no.yml +0 -8
  186. data/config/locales/pl.yml +14 -9
  187. data/config/locales/pt-BR.yml +8 -10
  188. data/config/locales/pt.yml +0 -8
  189. data/config/locales/ro-RO.yml +3 -21
  190. data/config/locales/ru.yml +0 -3
  191. data/config/locales/sk.yml +0 -3
  192. data/config/locales/sq-AL.yml +0 -3
  193. data/config/locales/sr-CS.yml +0 -3
  194. data/config/locales/sv.yml +162 -310
  195. data/config/locales/th-TH.yml +0 -3
  196. data/config/locales/tr-TR.yml +0 -5
  197. data/config/locales/uk.yml +0 -3
  198. data/config/locales/zh-CN.yml +0 -3
  199. data/config/locales/zh-TW.yml +0 -12
  200. data/config/routes.rb +1 -1
  201. data/decidim-admin.gemspec +1 -1
  202. data/lib/decidim/admin/import/creator.rb +1 -1
  203. data/lib/decidim/admin/import/importer_factory.rb +2 -2
  204. data/lib/decidim/admin/menu.rb +4 -4
  205. data/lib/decidim/admin/test/commands/create_attachment_collection_examples.rb +3 -2
  206. data/lib/decidim/admin/test/commands/create_category_examples.rb +4 -2
  207. data/lib/decidim/admin/test/commands/update_attachment_collection_examples.rb +3 -2
  208. data/lib/decidim/admin/test/commands/update_category_examples.rb +3 -2
  209. data/lib/decidim/admin/test/filterable_examples.rb +5 -3
  210. data/lib/decidim/admin/test/filters_participatory_space_user_roles_examples.rb +5 -5
  211. data/lib/decidim/admin/test/invite_participatory_space_admins_shared_examples.rb +1 -1
  212. data/lib/decidim/admin/test/invite_participatory_space_users_shared_context.rb +0 -1
  213. data/lib/decidim/admin/test/manage_attachment_collections_examples.rb +12 -12
  214. data/lib/decidim/admin/test/manage_attachments_examples.rb +52 -28
  215. data/lib/decidim/admin/test/manage_categories_examples.rb +13 -13
  216. data/lib/decidim/admin/test/manage_component_permissions_examples.rb +5 -5
  217. data/lib/decidim/admin/test/manage_hide_content_examples.rb +4 -4
  218. data/lib/decidim/admin/test/manage_moderations_examples.rb +21 -21
  219. data/lib/decidim/admin/test/manage_paginated_collection_examples.rb +5 -5
  220. data/lib/decidim/admin/test/manage_participatory_space_publications_examples.rb +2 -2
  221. data/lib/decidim/admin/version.rb +1 -1
  222. data/lib/decidim/admin.rb +15 -0
  223. metadata +27 -24
  224. data/app/commands/decidim/admin/destroy_share_token.rb +0 -46
  225. data/app/commands/decidim/admin/destroy_static_page.rb +0 -40
  226. data/app/commands/decidim/admin/destroy_static_page_topic.rb +0 -40
  227. data/app/controllers/concerns/decidim/admin/verification_conflicts/filterable.rb +0 -31
  228. data/app/views/layouts/decidim/admin/login.html.erb +0 -19
  229. /data/app/packs/src/decidim/admin/{external_domain_whitelist.js → external_domain_allowlist.js} +0 -0
@@ -97,6 +97,3 @@ th:
97
97
  success: ทำลายพื้นที่สำเร็จ
98
98
  edit:
99
99
  title: แก้ไขพื้นที่
100
- organization_external_domain_whitelist:
101
- edit:
102
- update: อัปเดต
@@ -265,7 +265,6 @@ tr:
265
265
  solved: Çözüldü
266
266
  transfer:
267
267
  email: E-Posta
268
- error: Mevcut katılımcıyı yönetilen katılımcıya aktarırken bir sorun oluştu.
269
268
  name: İsim
270
269
  reason: Nedeni
271
270
  success: Aktarım başarıyla tamamlandı.
@@ -604,9 +603,6 @@ tr:
604
603
  layout_appearance_title: Düzen görünümünü düzenle
605
604
  preview: Önizleme
606
605
  omnipresent_banner_appearance_title: Her yerde bulunan banner'ı düzenle
607
- organization_external_domain_whitelist:
608
- edit:
609
- update: Güncelleştirme
610
606
  participatory_space_private_users:
611
607
  create:
612
608
  error: Bu katılımcı alan için özel bir kullanıcı eklenirken bir hata oluştu.
@@ -718,7 +714,6 @@ tr:
718
714
  areas: alanlar
719
715
  authorization_workflows: Doğrulama yöntemleri
720
716
  dashboard: Pano
721
- edit_external_domains: Harici Güvenli Alan
722
717
  edit_landing_page: Sayfa İçeriği
723
718
  edit_organization_appearance: Ana Sayfayı Düzenleme
724
719
  impersonatable_users: Yönetilebilir kullanıcılar
@@ -425,9 +425,6 @@ uk:
425
425
  images:
426
426
  layout_appearance_title: Редагувати зовнішній вигляд шаблону
427
427
  omnipresent_banner_appearance_title: Редагувати всюдисущий банер
428
- organization_external_domain_whitelist:
429
- edit:
430
- update: Оновити
431
428
  participatory_space_private_users:
432
429
  create:
433
430
  error: При спробі додати приватного учасника до цього простору співучасті сталася помилка.
@@ -540,9 +540,6 @@ zh-CN:
540
540
  layout_appearance_title: 编辑布局外观
541
541
  preview: 预览
542
542
  omnipresent_banner_appearance_title: Edit omnipresent banner
543
- organization_external_domain_whitelist:
544
- edit:
545
- update: 更新
546
543
  participatory_space_private_users:
547
544
  create:
548
545
  error: 在这种参与空间中添加私人参与者时出现了问题。
@@ -347,7 +347,6 @@ zh-TW:
347
347
  title: 驗證衝突
348
348
  transfer:
349
349
  email: 電子郵件
350
- error: 轉移現在參與者到管理參與者時發生錯誤
351
350
  name: 名稱
352
351
  reason: 理由
353
352
  success: 目前的轉換完成
@@ -360,10 +359,6 @@ zh-TW:
360
359
  title: 等待的操作
361
360
  show:
362
361
  view_more_logs: 檢視更多記錄
363
- domain_whitelist:
364
- update:
365
- error: 網址白名單更新失敗
366
- success: 網址白名單更新成功.
367
362
  exports:
368
363
  export_as: "%{name} 成為 %{export_format}"
369
364
  formats:
@@ -430,7 +425,6 @@ zh-TW:
430
425
  report_count_eq: 報告數量等於
431
426
  reported_id_string_or_reported_content_cont: 按報告 Id 或內容搜索%{collection}。
432
427
  title_cont: 按標題搜索%{collection}。
433
- user_name_or_user_email_cont: 按名稱或電子郵件搜索%{collection}。
434
428
  user_name_or_user_nickname_or_user_email_cont: 按電子郵件、姓名或暱稱搜索%{collection}。
435
429
  state_eq:
436
430
  label: 狀態
@@ -809,12 +803,6 @@ zh-TW:
809
803
  layout_appearance_title: 編輯版面外觀
810
804
  preview: 預覽
811
805
  omnipresent_banner_appearance_title: 編輯無處不在的橫幅
812
- organization_external_domain_whitelist:
813
- edit:
814
- update: 更新
815
- form:
816
- add: 新增到白名單
817
- title: 外部域名白名單
818
806
  participatory_space_private_users:
819
807
  create:
820
808
  error: 在此參與空間中添加私人參與者時出現問題。
data/config/routes.rb CHANGED
@@ -7,7 +7,7 @@ Decidim::Admin::Engine.routes.draw do
7
7
  resource :homepage, only: [:edit, :update], controller: "organization_homepage" do
8
8
  resources :content_blocks, only: [:edit, :update, :destroy, :create], controller: "organization_homepage_content_blocks"
9
9
  end
10
- resource :external_domain_whitelist, only: [:edit, :update], controller: "organization_external_domain_whitelist"
10
+ resource :external_domain_allowlist, only: [:edit, :update], controller: "organization_external_domain_allowlist"
11
11
 
12
12
  member do
13
13
  get :users
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  "homepage_uri" => "https://decidim.org",
20
20
  "source_code_uri" => "https://github.com/decidim/decidim"
21
21
  }
22
- s.required_ruby_version = "~> 3.1.0"
22
+ s.required_ruby_version = "~> 3.2.0"
23
23
 
24
24
  s.name = "decidim-admin"
25
25
  s.summary = "Decidim organization administration"
@@ -12,7 +12,7 @@ module Decidim
12
12
  # own creator or this default will be used.
13
13
  class Creator
14
14
  class << self
15
- # Retuns the resource class to be created with the provided data.
15
+ # Returns the resource class to be created with the provided data.
16
16
  def resource_klass
17
17
  raise NotImplementedError, "#{self.class.name} does not define resource class"
18
18
  end
@@ -5,11 +5,11 @@ module Decidim
5
5
  module Import
6
6
  # A factory class providing easier way to create new importers.
7
7
  class ImporterFactory
8
- def self.build(file, mime_type, **keyword_args)
8
+ def self.build(file, mime_type, **)
9
9
  reader = Readers.search_by_mime_type(mime_type)
10
10
  raise NotImplementedError, "No reader implemented for mime type: #{mime_type}" if reader.nil?
11
11
 
12
- Importer.new(file:, reader:, **keyword_args)
12
+ Importer.new(file:, reader:, **)
13
13
  end
14
14
  end
15
15
  end
@@ -192,9 +192,9 @@ module Decidim
192
192
  position: 1.6,
193
193
  if: allowed_to?(:update, :help_sections)
194
194
 
195
- menu.add_item :external_domain_whitelist,
196
- I18n.t("menu.external_domain_whitelist", scope: "decidim.admin"),
197
- decidim_admin.edit_organization_external_domain_whitelist_path,
195
+ menu.add_item :external_domain_allowlist,
196
+ I18n.t("menu.external_domain_allowlist", scope: "decidim.admin"),
197
+ decidim_admin.edit_organization_external_domain_allowlist_path,
198
198
  icon_name: "computer-line",
199
199
  position: 1.7,
200
200
  if: allowed_to?(:update, :organization, organization: current_organization)
@@ -270,7 +270,7 @@ module Decidim
270
270
  decidim/admin/scope_types
271
271
  decidim/admin/areas decidim/admin/area_types
272
272
  decidim/admin/help_sections
273
- decidim/admin/organization_external_domain_whitelist
273
+ decidim/admin/organization_external_domain_allowlist
274
274
  ),
275
275
  []
276
276
  ],
@@ -25,10 +25,11 @@ module Decidim
25
25
  form_params,
26
26
  collection_for:
27
27
  ).with_context(
28
- current_organization: organization
28
+ current_organization: organization,
29
+ current_user: user
29
30
  )
30
31
  end
31
- let(:command) { described_class.new(form, collection_for, user) }
32
+ let(:command) { described_class.new(form, collection_for) }
32
33
 
33
34
  describe "when the form is not valid" do
34
35
  before do
@@ -22,10 +22,12 @@ module Decidim
22
22
  form_params,
23
23
  current_participatory_space: participatory_space
24
24
  ).with_context(
25
- current_organization: organization
25
+ current_organization: organization,
26
+ current_participatory_space: participatory_space,
27
+ current_user: user
26
28
  )
27
29
  end
28
- let(:command) { described_class.new(form, participatory_space, user) }
30
+ let(:command) { described_class.new(form) }
29
31
 
30
32
  describe "when the form is not valid" do
31
33
  before do
@@ -26,10 +26,11 @@ module Decidim
26
26
  form_params,
27
27
  collection_for:
28
28
  ).with_context(
29
- current_organization: organization
29
+ current_organization: organization,
30
+ current_user: user
30
31
  )
31
32
  end
32
- let(:command) { described_class.new(attachment_collection, form, user) }
33
+ let(:command) { described_class.new(attachment_collection, form) }
33
34
 
34
35
  describe "when the form is not valid" do
35
36
  before do
@@ -23,10 +23,11 @@ module Decidim
23
23
  form_params,
24
24
  current_participatory_space: participatory_space
25
25
  ).with_context(
26
- current_organization: organization
26
+ current_organization: organization,
27
+ current_user: user
27
28
  )
28
29
  end
29
- let(:command) { described_class.new(category, form, user) }
30
+ let(:command) { described_class.new(form, category) }
30
31
 
31
32
  describe "when the form is not valid" do
32
33
  before do
@@ -11,13 +11,15 @@ shared_context "with filterable context" do
11
11
  within(".filters__section") do
12
12
  find_link("Filter").hover
13
13
  find_link(options).hover
14
- click_link(filter, href: /q/)
14
+ within ".submenu > .is-active > .submenu" do
15
+ click_on(filter)
16
+ end
15
17
  end
16
18
  end
17
19
 
18
20
  def remove_applied_filter(filter)
19
21
  within("[data-applied-filters-tags] .label", text: /#{filter}/i) do
20
- click_link("Cancel")
22
+ click_on("Cancel")
21
23
  end
22
24
  end
23
25
 
@@ -50,7 +52,7 @@ shared_context "with filterable context" do
50
52
  before { apply_filter(options, filter) }
51
53
 
52
54
  it { expect(page).to have_content(in_filter) }
53
- it { expect(page).not_to have_content(not_in_filter) }
55
+ it { expect(page).to have_no_content(not_in_filter) }
54
56
 
55
57
  it_behaves_like "searching by text" do
56
58
  let(:text) { in_filter }
@@ -14,7 +14,7 @@ shared_examples "sortable participatory space user roles" do
14
14
  let(:sort_by) { "name asc" }
15
15
 
16
16
  it "displays the result" do
17
- expect(page).not_to have_content(user.name)
17
+ expect(page).to have_no_content(user.name)
18
18
  end
19
19
  end
20
20
  end
@@ -32,7 +32,7 @@ shared_examples "sortable participatory space user roles" do
32
32
  let(:sort_by) { "email asc" }
33
33
 
34
34
  it "displays the result" do
35
- expect(page).not_to have_content(user.name)
35
+ expect(page).to have_no_content(user.name)
36
36
  end
37
37
  end
38
38
  end
@@ -50,7 +50,7 @@ shared_examples "sortable participatory space user roles" do
50
50
  let(:sort_by) { "last_sign_in_at asc" }
51
51
 
52
52
  it "displays the result" do
53
- expect(page).not_to have_content(user.name)
53
+ expect(page).to have_no_content(user.name)
54
54
  end
55
55
  end
56
56
  end
@@ -68,7 +68,7 @@ shared_examples "sortable participatory space user roles" do
68
68
  let(:sort_by) { "invitation_accepted_at asc" }
69
69
 
70
70
  it "displays the result" do
71
- expect(page).not_to have_content(user.name)
71
+ expect(page).to have_no_content(user.name)
72
72
  end
73
73
  end
74
74
  end
@@ -86,7 +86,7 @@ shared_examples "sortable participatory space user roles" do
86
86
  let(:sort_by) { "role asc" }
87
87
 
88
88
  it "displays the result" do
89
- expect(page).not_to have_content(user.name)
89
+ expect(page).to have_no_content(user.name)
90
90
  end
91
91
  end
92
92
  end
@@ -17,7 +17,7 @@ shared_examples "inviting participatory space admins" do |check_private_space: t
17
17
  expect(page).to have_content("Categories")
18
18
  expect(page).to have_content("Attachments")
19
19
  expect(page).to have_content(space_admins_label)
20
- expect(page).not_to have_content("Private participants") if participatory_space.respond_to?(:private_space)
20
+ expect(page).to have_no_content("Private participants") if participatory_space.respond_to?(:private_space)
21
21
  expect(page).to have_content("Moderations")
22
22
  end
23
23
  end
@@ -18,7 +18,6 @@ shared_context "when inviting participatory space users" do
18
18
  fill_in "Email", with: email
19
19
  select role, from: "Role"
20
20
  click_on "Create"
21
- expect(page).to have_content("successfully added")
22
21
  logout :user
23
22
  end
24
23
 
@@ -16,16 +16,16 @@ shared_examples "manage attachment collections examples" do
16
16
 
17
17
  it "can view an attachment collection details" do
18
18
  within "#attachment_collections table" do
19
- click_link "Edit"
19
+ click_on "Edit"
20
20
  end
21
21
 
22
- expect(page).to have_selector("input#attachment_collection_name_en[value='#{translated(attachment_collection.name, locale: :en)}']")
23
- expect(page).to have_selector("input#attachment_collection_weight[value='#{attachment_collection.weight}']")
24
- expect(page).to have_selector("input#attachment_collection_description_en[value='#{translated(attachment_collection.description, locale: :en)}']")
22
+ expect(page).to have_css("input#attachment_collection_name_en[value='#{translated(attachment_collection.name, locale: :en)}']")
23
+ expect(page).to have_css("input#attachment_collection_weight[value='#{attachment_collection.weight}']")
24
+ expect(page).to have_css("input#attachment_collection_description_en[value='#{translated(attachment_collection.description, locale: :en)}']")
25
25
  end
26
26
 
27
27
  it "can add attachment collections to a process" do
28
- click_link "New attachment folder"
28
+ click_on "New attachment folder"
29
29
 
30
30
  within ".new_attachment_collection" do
31
31
  fill_in_i18n(
@@ -55,8 +55,8 @@ shared_examples "manage attachment collections examples" do
55
55
 
56
56
  it "can update an attachment collection" do
57
57
  within "#attachment_collections" do
58
- within find("tr", text: translated(attachment_collection.name)) do
59
- click_link "Edit"
58
+ within "tr", text: translated(attachment_collection.name) do
59
+ click_on "Edit"
60
60
  end
61
61
  end
62
62
 
@@ -89,14 +89,14 @@ shared_examples "manage attachment collections examples" do
89
89
  end
90
90
 
91
91
  it "can delete the attachment collection" do
92
- within find("tr", text: translated(attachment_collection2.name)) do
93
- accept_confirm { click_link "Delete" }
92
+ within "tr", text: translated(attachment_collection2.name) do
93
+ accept_confirm { click_on "Delete" }
94
94
  end
95
95
 
96
96
  expect(page).to have_admin_callout("successfully")
97
97
 
98
98
  within "#attachment_collections table" do
99
- expect(page).not_to have_content(translated(attachment_collection2.name))
99
+ expect(page).to have_no_content(translated(attachment_collection2.name))
100
100
  end
101
101
  end
102
102
  end
@@ -109,8 +109,8 @@ shared_examples "manage attachment collections examples" do
109
109
  end
110
110
 
111
111
  it "cannot delete it" do
112
- within find("tr", text: translated(attachment_collection.name)) do
113
- expect(page).not_to have_selector("a.action-icon--remove")
112
+ within "tr", text: translated(attachment_collection.name) do
113
+ expect(page).to have_no_css("a.action-icon--remove")
114
114
  end
115
115
  end
116
116
  end
@@ -19,30 +19,18 @@ shared_examples "manage attachments examples" do
19
19
 
20
20
  it "can view an attachment details" do
21
21
  within "#attachments table" do
22
- click_link "Edit"
22
+ click_on "Edit"
23
23
  end
24
24
 
25
- expect(page).to have_selector("input#attachment_title_en[value='#{translated(attachment.title, locale: :en)}']")
26
- expect(page).to have_selector("input#attachment_description_en[value='#{translated(attachment.description, locale: :en)}']")
27
- expect(page).to have_selector("input#attachment_weight[value='#{attachment.weight}']")
25
+ expect(page).to have_css("input#attachment_title_en[value='#{translated(attachment.title, locale: :en)}']")
26
+ expect(page).to have_css("input#attachment_description_en[value='#{translated(attachment.description, locale: :en)}']")
27
+ expect(page).to have_css("input#attachment_weight[value='#{attachment.weight}']")
28
28
  expect(page).to have_select("attachment_attachment_collection_id", selected: translated(attachment_collection.name, locale: :en))
29
-
30
- # The image's URL changes every time it is requested because the disk
31
- # service generates a unique URL based on the expiry time of the link.
32
- # This expiry time is calculated at the time when the URL is requested
33
- # which is why it changes every time to different URL. This changes the
34
- # JSON encoded file identifier which includes the expiry time as well as
35
- # the digest of the URL because the digest is calculated based on the
36
- # passed data.
37
- filename = attachment.file.blob.filename
38
- within %([data-active-uploads] [data-filename="#{filename}"]) do
39
- src = page.find("img")["src"]
40
- expect(src).to be_blob_url(attachment.file.blob)
41
- end
29
+ expect(page).to have_css("img[src~='#{attachment.url}']")
42
30
  end
43
31
 
44
32
  it "can add attachments without a collection to a process" do
45
- click_link "New attachment"
33
+ click_on "New attachment"
46
34
 
47
35
  within ".new_attachment" do
48
36
  fill_in_i18n(
@@ -75,8 +63,44 @@ shared_examples "manage attachments examples" do
75
63
  end
76
64
  end
77
65
 
66
+ it "can add attachments with a link to a process" do
67
+ click_on "New attachment"
68
+
69
+ within ".new_attachment" do
70
+ fill_in_i18n(
71
+ :attachment_title,
72
+ "#attachment-title-tabs",
73
+ en: "Very Important Document",
74
+ es: "Documento Muy Importante",
75
+ ca: "Document Molt Important"
76
+ )
77
+
78
+ fill_in_i18n(
79
+ :attachment_description,
80
+ "#attachment-description-tabs",
81
+ en: "This document contains important information",
82
+ es: "Este documento contiene información importante",
83
+ ca: "Aquest document conté informació important"
84
+ )
85
+ end
86
+
87
+ within ".new_attachment" do
88
+ find_by_id("trigger-link").click
89
+
90
+ fill_in "attachment[link]", with: "https://example.com/docs.pdf"
91
+
92
+ find("*[type=submit]").click
93
+ end
94
+
95
+ expect(page).to have_admin_callout("successfully")
96
+
97
+ within "#attachments table" do
98
+ expect(page).to have_text("Very Important Document")
99
+ end
100
+ end
101
+
78
102
  it "can add attachments within a collection to a process" do
79
- click_link "New attachment"
103
+ click_on "New attachment"
80
104
 
81
105
  within ".new_attachment" do
82
106
  fill_in_i18n(
@@ -114,9 +138,9 @@ shared_examples "manage attachments examples" do
114
138
 
115
139
  it "can remove an attachment from a collection" do
116
140
  within "#attachments" do
117
- within find("tr", text: translated(attachment.title)) do
141
+ within "tr", text: translated(attachment.title) do
118
142
  expect(page).to have_text(translated(attachment_collection.name, locale: :en))
119
- click_link "Edit"
143
+ click_on "Edit"
120
144
  end
121
145
  end
122
146
 
@@ -127,26 +151,26 @@ shared_examples "manage attachments examples" do
127
151
  end
128
152
 
129
153
  within "#attachments" do
130
- within find("tr", text: translated(attachment.title)) do
131
- expect(page).not_to have_text(translated(attachment_collection.name, locale: :en))
154
+ within "tr", text: translated(attachment.title) do
155
+ expect(page).to have_no_text(translated(attachment_collection.name, locale: :en))
132
156
  end
133
157
  end
134
158
  end
135
159
 
136
160
  it "can delete an attachment from a process" do
137
- within find("tr", text: translated(attachment.title)) do
138
- accept_confirm { click_link "Delete" }
161
+ within "tr", text: translated(attachment.title) do
162
+ accept_confirm { click_on "Delete" }
139
163
  end
140
164
 
141
165
  expect(page).to have_admin_callout("successfully")
142
166
 
143
- expect(page).not_to have_content(translated(attachment.title, locale: :en))
167
+ expect(page).to have_no_content(translated(attachment.title, locale: :en))
144
168
  end
145
169
 
146
170
  it "can update an attachment" do
147
171
  within "#attachments" do
148
- within find("tr", text: translated(attachment.title)) do
149
- click_link "Edit"
172
+ within "tr", text: translated(attachment.title) do
173
+ click_on "Edit"
150
174
  end
151
175
  end
152
176
 
@@ -10,17 +10,17 @@ shared_examples "manage categories examples" do
10
10
 
11
11
  it "can view a category detail" do
12
12
  within "#categories table" do
13
- click_link translated(category.name, locale: :en)
13
+ click_on translated(category.name, locale: :en)
14
14
  end
15
15
 
16
- expect(page).to have_selector("input#category_name_en[value='#{translated(category.name, locale: :en)}']")
17
- expect(page).to have_selector("input#category_weight[value='#{category.weight}']")
16
+ expect(page).to have_css("input#category_name_en[value='#{translated(category.name, locale: :en)}']")
17
+ expect(page).to have_css("input#category_weight[value='#{category.weight}']")
18
18
 
19
19
  expect(page).to have_select(id: "category_parent_id")
20
20
  end
21
21
 
22
22
  it "creates a new category" do
23
- click_link "New category"
23
+ click_on "New category"
24
24
 
25
25
  within ".new_category" do
26
26
  fill_in_i18n(
@@ -44,8 +44,8 @@ shared_examples "manage categories examples" do
44
44
 
45
45
  it "updates a category" do
46
46
  within "#categories" do
47
- within find("tr", text: translated(category.name)) do
48
- click_link "Edit"
47
+ within "tr", text: translated(category.name) do
48
+ click_on "Edit"
49
49
  end
50
50
  end
51
51
 
@@ -79,14 +79,14 @@ shared_examples "manage categories examples" do
79
79
  end
80
80
 
81
81
  it "deletes a category" do
82
- within find("tr", text: translated(category2.name)) do
83
- accept_confirm { click_link "Delete" }
82
+ within "tr", text: translated(category2.name) do
83
+ accept_confirm { click_on "Delete" }
84
84
  end
85
85
 
86
86
  expect(page).to have_admin_callout("successfully")
87
87
 
88
88
  within "#categories table" do
89
- expect(page).not_to have_content(translated(category2.name))
89
+ expect(page).to have_no_content(translated(category2.name))
90
90
  end
91
91
  end
92
92
  end
@@ -99,8 +99,8 @@ shared_examples "manage categories examples" do
99
99
  end
100
100
 
101
101
  it "deletes a category" do
102
- within find("tr", text: translated(category2.name)) do
103
- accept_confirm { click_link "Delete" }
102
+ within "tr", text: translated(category2.name) do
103
+ accept_confirm { click_on "Delete" }
104
104
  end
105
105
 
106
106
  expect(page).to have_admin_callout("problem deleting")
@@ -119,8 +119,8 @@ shared_examples "manage categories examples" do
119
119
  it "cannot delete it" do
120
120
  visit current_path
121
121
 
122
- within find("tr", text: translated(category.name)) do
123
- expect(page).not_to have_selector("a.action-icon--remove")
122
+ within "tr", text: translated(category.name) do
123
+ expect(page).to have_no_css("a.action-icon--remove")
124
124
  end
125
125
  end
126
126
  end
@@ -23,7 +23,7 @@ shared_examples "Managing component permissions" do
23
23
  context "when setting permissions" do
24
24
  before do
25
25
  within ".component-#{component.id}" do
26
- click_link "Permissions"
26
+ click_on "Permissions"
27
27
  end
28
28
  end
29
29
 
@@ -54,7 +54,7 @@ shared_examples "Managing component permissions" do
54
54
  before do
55
55
  allow_any_instance_of(Decidim::Admin::PermissionsForm).to receive(:valid?).and_return(false)
56
56
  within ".component-#{component.id}" do
57
- click_link "Permissions"
57
+ click_on "Permissions"
58
58
  end
59
59
  within "#components form" do
60
60
  within ".foo-permission" do
@@ -85,7 +85,7 @@ shared_examples "Managing component permissions" do
85
85
  )
86
86
 
87
87
  within ".component-#{component.id}" do
88
- click_link "Permissions"
88
+ click_on "Permissions"
89
89
  end
90
90
  end
91
91
 
@@ -120,7 +120,7 @@ shared_examples "Managing component permissions" do
120
120
  )
121
121
 
122
122
  within ".component-#{component.id}" do
123
- click_link "Permissions"
123
+ click_on "Permissions"
124
124
  end
125
125
  end
126
126
 
@@ -206,7 +206,7 @@ shared_examples "Managing component permissions" do
206
206
  let(:component_settings) { { resources_permissions_enabled: false } }
207
207
 
208
208
  it "does not show the resource permissions settings" do
209
- expect(page).not_to have_content(resource.title)
209
+ expect(page).to have_no_content(resource.title)
210
210
  end
211
211
  end
212
212
 
@@ -19,7 +19,7 @@ shared_examples "hideable resource during block" do
19
19
  visit reportable_path
20
20
 
21
21
  within ".profile__actions-secondary", match: :first do
22
- click_button(I18n.t("decidim.shared.flag_modal.report"))
22
+ click_on(I18n.t("decidim.shared.flag_modal.report"))
23
23
  end
24
24
  within ".flag-modal" do
25
25
  find(:css, "input[name='report[block]']").set(true)
@@ -31,7 +31,7 @@ shared_examples "hideable resource during block" do
31
31
  within ".flag-modal" do
32
32
  find(:css, "input[name='report[hide]']").set(true)
33
33
  end
34
- click_button I18n.t("decidim.shared.flag_user_modal.block")
34
+ click_on I18n.t("decidim.shared.flag_user_modal.block")
35
35
  expect(page).to have_current_path(decidim_admin.new_user_block_path(user_id: reportable.id, hide: true))
36
36
  end
37
37
 
@@ -46,12 +46,12 @@ shared_examples "hideable resource during block" do
46
46
  within ".flag-modal" do
47
47
  find(:css, "input[name='report[hide]']").set(true)
48
48
  end
49
- click_button I18n.t("decidim.shared.flag_user_modal.block")
49
+ click_on I18n.t("decidim.shared.flag_user_modal.block")
50
50
  expect(page).to have_current_path(decidim_admin.new_user_block_path(user_id: reportable.id, hide: true))
51
51
 
52
52
  fill_in :block_user_justification, with: "This user is a spammer" * 2 # to have at least 15 chars
53
53
 
54
- click_button I18n.t("decidim.admin.block_user.new.action")
54
+ click_on I18n.t("decidim.admin.block_user.new.action")
55
55
 
56
56
  expect(content.reload).to be_hidden
57
57