decidim-admin 0.28.0 → 0.28.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.
- checksums.yaml +4 -4
- data/app/cells/decidim/admin/content_block_cell.rb +1 -1
- data/app/commands/decidim/admin/destroy_category.rb +1 -1
- data/app/controllers/decidim/admin/application_controller.rb +2 -1
- data/app/controllers/decidim/admin/area_types_controller.rb +1 -1
- data/app/controllers/decidim/admin/authorization_workflows_controller.rb +5 -1
- data/app/controllers/decidim/admin/conflicts_controller.rb +23 -0
- data/app/controllers/decidim/admin/impersonatable_users_controller.rb +3 -1
- data/app/controllers/decidim/admin/impersonations_controller.rb +1 -0
- data/app/controllers/decidim/admin/managed_users/impersonation_logs_controller.rb +2 -0
- data/app/controllers/decidim/admin/moderated_users_controller.rb +10 -0
- data/app/controllers/decidim/admin/moderations_controller.rb +10 -0
- data/app/controllers/decidim/admin/officializations_controller.rb +2 -0
- data/app/controllers/decidim/admin/organization_controller.rb +7 -4
- data/app/controllers/decidim/admin/scope_types_controller.rb +1 -1
- data/app/controllers/decidim/admin/static_page_topics_controller.rb +10 -0
- data/app/controllers/decidim/admin/user_groups_controller.rb +2 -0
- data/app/controllers/decidim/admin/users_controller.rb +2 -0
- data/app/events/decidim/resource_hidden_event.rb +5 -1
- data/app/helpers/decidim/admin/admin_terms_helper.rb +1 -1
- data/app/helpers/decidim/admin/filterable_helper.rb +1 -1
- data/app/packs/entrypoints/decidim_admin_overrides.scss +2 -0
- data/app/packs/images/decidim/admin/.keep +0 -0
- data/app/packs/src/decidim/admin/application.js +14 -1
- data/app/packs/src/decidim/admin/choose_language.js +2 -0
- data/app/packs/src/decidim/admin/dynamic_fields.component.js +2 -1
- data/app/packs/src/decidim/admin/participatory_space_search.js +1 -1
- data/app/packs/stylesheets/decidim/admin/_filters.scss +1 -1
- data/app/packs/stylesheets/decidim/admin/_legacy_foundation.scss +10 -0
- data/app/packs/stylesheets/decidim/admin/_sidebar-menu.scss +4 -4
- data/app/packs/stylesheets/decidim/admin/_tabs.scss +6 -0
- data/app/packs/stylesheets/decidim/admin/decidim_application.scss +5 -0
- data/app/views/decidim/admin/admin_terms/show.html.erb +2 -2
- data/app/views/decidim/admin/area_types/edit.html.erb +2 -2
- data/app/views/decidim/admin/area_types/index.html.erb +2 -2
- data/app/views/decidim/admin/area_types/new.html.erb +2 -2
- data/app/views/decidim/admin/areas/edit.html.erb +2 -2
- data/app/views/decidim/admin/areas/index.html.erb +2 -2
- data/app/views/decidim/admin/areas/new.html.erb +2 -2
- data/app/views/decidim/admin/attachment_collections/edit.html.erb +2 -2
- data/app/views/decidim/admin/attachment_collections/index.html.erb +2 -2
- data/app/views/decidim/admin/attachment_collections/new.html.erb +2 -2
- data/app/views/decidim/admin/attachments/edit.html.erb +2 -2
- data/app/views/decidim/admin/attachments/index.html.erb +2 -2
- data/app/views/decidim/admin/attachments/new.html.erb +2 -2
- data/app/views/decidim/admin/authorization_workflows/index.html.erb +2 -2
- data/app/views/decidim/admin/block_user/new.html.erb +3 -4
- data/app/views/decidim/admin/categories/edit.html.erb +2 -2
- data/app/views/decidim/admin/categories/index.html.erb +7 -3
- data/app/views/decidim/admin/categories/new.html.erb +2 -2
- data/app/views/decidim/admin/components/edit.html.erb +2 -2
- data/app/views/decidim/admin/components/index.html.erb +2 -2
- data/app/views/decidim/admin/components/new.html.erb +2 -2
- data/app/views/decidim/admin/conflicts/index.html.erb +2 -2
- data/app/views/decidim/admin/dashboard/show.html.erb +2 -2
- data/app/views/decidim/admin/help_sections/_form.html.erb +2 -2
- data/app/views/decidim/admin/impersonatable_users/index.html.erb +2 -2
- data/app/views/decidim/admin/impersonations/new.html.erb +2 -2
- data/app/views/decidim/admin/imports/new.html.erb +2 -2
- data/app/views/decidim/admin/managed_users/impersonation_logs/index.html.erb +2 -2
- data/app/views/decidim/admin/managed_users/promotions/new.html.erb +2 -2
- data/app/views/decidim/admin/moderated_users/index.html.erb +2 -2
- data/app/views/decidim/admin/moderations/index.html.erb +2 -2
- data/app/views/decidim/admin/moderations/reports/index.html.erb +2 -2
- data/app/views/decidim/admin/moderations/reports/show.html.erb +2 -2
- data/app/views/decidim/admin/newsletter_templates/index.html.erb +5 -6
- data/app/views/decidim/admin/newsletter_templates/show.html.erb +16 -12
- data/app/views/decidim/admin/newsletters/edit.html.erb +2 -2
- data/app/views/decidim/admin/newsletters/index.html.erb +2 -2
- data/app/views/decidim/admin/newsletters/new.html.erb +2 -2
- data/app/views/decidim/admin/newsletters/select_recipients_to_deliver.html.erb +13 -9
- data/app/views/decidim/admin/newsletters/show.html.erb +29 -26
- data/app/views/decidim/admin/officializations/index.html.erb +1 -1
- data/app/views/decidim/admin/officializations/new.html.erb +2 -2
- data/app/views/decidim/admin/organization/_form.html.erb +5 -3
- data/app/views/decidim/admin/organization/edit.html.erb +2 -2
- data/app/views/decidim/admin/organization_appearance/edit.html.erb +2 -2
- data/app/views/decidim/admin/organization_external_domain_whitelist/edit.html.erb +2 -2
- data/app/views/decidim/admin/participatory_space_private_users/index.html.erb +2 -2
- data/app/views/decidim/admin/participatory_space_private_users/new.html.erb +2 -2
- data/app/views/decidim/admin/resource_permissions/edit.html.erb +2 -2
- data/app/views/decidim/admin/scope_types/edit.html.erb +2 -2
- data/app/views/decidim/admin/scope_types/index.html.erb +2 -2
- data/app/views/decidim/admin/scope_types/new.html.erb +2 -2
- data/app/views/decidim/admin/scopes/edit.html.erb +2 -2
- data/app/views/decidim/admin/scopes/index.html.erb +2 -2
- data/app/views/decidim/admin/scopes/new.html.erb +2 -2
- data/app/views/decidim/admin/shared/_filters.html.erb +1 -1
- data/app/views/decidim/admin/shared/_js-callout.html.erb +2 -2
- data/app/views/decidim/admin/shared/landing_page/_content_blocks.html.erb +2 -2
- data/app/views/decidim/admin/shared/landing_page_content_blocks/edit.html.erb +2 -2
- data/app/views/decidim/admin/static_page_topics/edit.html.erb +2 -2
- data/app/views/decidim/admin/static_page_topics/index.html.erb +2 -2
- data/app/views/decidim/admin/static_page_topics/new.html.erb +2 -2
- data/app/views/decidim/admin/static_pages/edit.html.erb +2 -2
- data/app/views/decidim/admin/static_pages/index.html.erb +2 -2
- data/app/views/decidim/admin/static_pages/new.html.erb +2 -2
- data/app/views/decidim/admin/user_groups/index.html.erb +2 -2
- data/app/views/decidim/admin/user_groups_csv_verifications/new.html.erb +2 -2
- data/app/views/decidim/admin/users/index.html.erb +2 -2
- data/app/views/decidim/admin/users/new.html.erb +2 -2
- data/app/views/layouts/decidim/admin/_breadcrumb.html.erb +1 -1
- data/app/views/layouts/decidim/admin/_header.html.erb +4 -0
- data/app/views/layouts/decidim/admin/_js_configuration.html.erb +1 -0
- data/app/views/layouts/decidim/admin/_sidebar_menu.html.erb +2 -2
- data/config/assets.rb +1 -0
- data/config/locales/ar.yml +11 -8
- data/config/locales/bg.yml +1025 -3
- data/config/locales/ca.yml +4 -1
- data/config/locales/cs.yml +6 -8
- data/config/locales/de.yml +15 -12
- data/config/locales/el.yml +2 -12
- data/config/locales/en.yml +4 -1
- data/config/locales/es-MX.yml +11 -8
- data/config/locales/es-PY.yml +11 -8
- data/config/locales/es.yml +20 -17
- data/config/locales/eu.yml +8 -5
- data/config/locales/fi-plain.yml +4 -1
- data/config/locales/fi.yml +6 -3
- data/config/locales/fr-CA.yml +5 -2
- data/config/locales/fr.yml +4 -1
- data/config/locales/ga-IE.yml +2 -4
- data/config/locales/gl.yml +8 -7
- data/config/locales/he-IL.yml +50 -0
- data/config/locales/hu.yml +36 -6
- data/config/locales/id-ID.yml +5 -0
- data/config/locales/is-IS.yml +5 -0
- data/config/locales/it.yml +8 -9
- data/config/locales/ja.yml +8 -4
- data/config/locales/ko.yml +774 -0
- data/config/locales/lb.yml +8 -10
- data/config/locales/lt.yml +3 -14
- data/config/locales/lv.yml +8 -0
- data/config/locales/nl.yml +7 -9
- data/config/locales/no.yml +20 -9
- data/config/locales/pl.yml +74 -4
- data/config/locales/pt-BR.yml +50 -12
- data/config/locales/pt.yml +8 -10
- data/config/locales/ro-RO.yml +2 -13
- data/config/locales/ru.yml +5 -0
- data/config/locales/sk.yml +5 -0
- data/config/locales/sl.yml +5 -0
- data/config/locales/sq-AL.yml +490 -0
- data/config/locales/sr-CS.yml +5 -0
- data/config/locales/sv.yml +7 -9
- data/config/locales/th-TH.yml +101 -0
- data/config/locales/tr-TR.yml +11 -0
- data/config/locales/uk.yml +5 -0
- data/config/locales/zh-CN.yml +5 -0
- data/config/locales/zh-TW.yml +3 -11
- data/decidim-admin.gemspec +43 -0
- data/lib/decidim/admin/engine.rb +1 -25
- data/lib/decidim/admin/menu.rb +13 -4
- data/lib/decidim/admin/test/admin_participatory_space_access_examples.rb +27 -0
- data/lib/decidim/admin/test/commands/destroy_category_examples.rb +9 -0
- data/lib/decidim/admin/test/invite_participatory_space_admins_shared_examples.rb +180 -0
- data/lib/decidim/admin/test/invite_participatory_space_collaborators_shared_examples.rb +67 -0
- data/lib/decidim/admin/test/invite_participatory_space_moderators_shared_examples.rb +77 -0
- data/lib/decidim/admin/test/invite_participatory_space_users_shared_context.rb +33 -0
- data/lib/decidim/admin/test/manage_attachment_collections_examples.rb +12 -11
- data/lib/decidim/admin/test/manage_categories_examples.rb +11 -8
- data/lib/decidim/admin/test/manage_hide_content_examples.rb +4 -0
- data/lib/decidim/admin/test.rb +1 -0
- data/lib/decidim/admin/version.rb +1 -1
- metadata +20 -13
- data/app/mailers/decidim/admin/application_mailer.rb +0 -12
- data/config/environment.rb +0 -3
data/config/locales/tr-TR.yml
CHANGED
|
@@ -131,6 +131,7 @@ tr:
|
|
|
131
131
|
actions:
|
|
132
132
|
add: Eklemek
|
|
133
133
|
browse: Araştır
|
|
134
|
+
manage: yönetme
|
|
134
135
|
per_page: Sayfa başına
|
|
135
136
|
permissions: İzinler
|
|
136
137
|
reject: reddetmek
|
|
@@ -200,6 +201,7 @@ tr:
|
|
|
200
201
|
block_user:
|
|
201
202
|
new:
|
|
202
203
|
action: Hesabı engelle ve uyarı mesjı gönder
|
|
204
|
+
already_reported_html: Bu işleme devam ederek katılımcıların tüm içeriklerini de gizleyebilirsiniz.
|
|
203
205
|
justification: Gerekçe
|
|
204
206
|
title: '%{name} Kullanıcısını Engelle'
|
|
205
207
|
categories:
|
|
@@ -365,6 +367,7 @@ tr:
|
|
|
365
367
|
help_sections: Yardım bölümleri
|
|
366
368
|
homepage: Anasayfa
|
|
367
369
|
impersonations: impersonations
|
|
370
|
+
manage: yönetme
|
|
368
371
|
moderation: Küresel denetimler
|
|
369
372
|
newsletters: Haber bültenleri
|
|
370
373
|
participants: Katılımcılar
|
|
@@ -601,6 +604,9 @@ tr:
|
|
|
601
604
|
layout_appearance_title: Düzen görünümünü düzenle
|
|
602
605
|
preview: Önizleme
|
|
603
606
|
omnipresent_banner_appearance_title: Her yerde bulunan banner'ı düzenle
|
|
607
|
+
organization_external_domain_whitelist:
|
|
608
|
+
edit:
|
|
609
|
+
update: Güncelleştirme
|
|
604
610
|
participatory_space_private_users:
|
|
605
611
|
create:
|
|
606
612
|
error: Bu katılımcı alan için özel bir kullanıcı eklenirken bir hata oluştu.
|
|
@@ -800,3 +806,8 @@ tr:
|
|
|
800
806
|
errors:
|
|
801
807
|
messages:
|
|
802
808
|
invalid_json: Geçersiz JSON
|
|
809
|
+
layouts:
|
|
810
|
+
decidim:
|
|
811
|
+
admin:
|
|
812
|
+
global_moderations:
|
|
813
|
+
title: Küresel denetimler
|
data/config/locales/uk.yml
CHANGED
|
@@ -92,6 +92,7 @@ uk:
|
|
|
92
92
|
actions:
|
|
93
93
|
add: Додати
|
|
94
94
|
browse: Переглянути
|
|
95
|
+
manage: Керувати
|
|
95
96
|
permissions: Права
|
|
96
97
|
reject: Відхилити
|
|
97
98
|
verify: Підтвердити
|
|
@@ -272,6 +273,7 @@ uk:
|
|
|
272
273
|
configuration: Конфігурація
|
|
273
274
|
homepage: Домашня сторінка
|
|
274
275
|
impersonations: Виступи в ролі учасника
|
|
276
|
+
manage: Керувати
|
|
275
277
|
newsletters: Розсилання новин
|
|
276
278
|
scope_types: Різновиди обсягу
|
|
277
279
|
scopes: Обсяги
|
|
@@ -423,6 +425,9 @@ uk:
|
|
|
423
425
|
images:
|
|
424
426
|
layout_appearance_title: Редагувати зовнішній вигляд шаблону
|
|
425
427
|
omnipresent_banner_appearance_title: Редагувати всюдисущий банер
|
|
428
|
+
organization_external_domain_whitelist:
|
|
429
|
+
edit:
|
|
430
|
+
update: Оновити
|
|
426
431
|
participatory_space_private_users:
|
|
427
432
|
create:
|
|
428
433
|
error: При спробі додати приватного учасника до цього простору співучасті сталася помилка.
|
data/config/locales/zh-CN.yml
CHANGED
|
@@ -125,6 +125,7 @@ zh-CN:
|
|
|
125
125
|
actions:
|
|
126
126
|
add: 添加
|
|
127
127
|
browse: 浏览
|
|
128
|
+
manage: 管理
|
|
128
129
|
per_page: 每页
|
|
129
130
|
permissions: 权限
|
|
130
131
|
reject: 拒绝
|
|
@@ -336,6 +337,7 @@ zh-CN:
|
|
|
336
337
|
help_sections: 帮助部分
|
|
337
338
|
homepage: 主页
|
|
338
339
|
impersonations: 影像
|
|
340
|
+
manage: 管理
|
|
339
341
|
newsletters: 新闻通讯
|
|
340
342
|
participants: 参加者
|
|
341
343
|
scope_types: 范围类型
|
|
@@ -538,6 +540,9 @@ zh-CN:
|
|
|
538
540
|
layout_appearance_title: 编辑布局外观
|
|
539
541
|
preview: 预览
|
|
540
542
|
omnipresent_banner_appearance_title: Edit omnipresent banner
|
|
543
|
+
organization_external_domain_whitelist:
|
|
544
|
+
edit:
|
|
545
|
+
update: 更新
|
|
541
546
|
participatory_space_private_users:
|
|
542
547
|
create:
|
|
543
548
|
error: 在这种参与空间中添加私人参与者时出现了问题。
|
data/config/locales/zh-TW.yml
CHANGED
|
@@ -182,6 +182,7 @@ zh-TW:
|
|
|
182
182
|
export: 全部匯出
|
|
183
183
|
export-selection: 匯出選擇
|
|
184
184
|
import: 匯入
|
|
185
|
+
manage: 管理
|
|
185
186
|
newsletter:
|
|
186
187
|
new: 新電子報
|
|
187
188
|
participatory_space_private_user:
|
|
@@ -281,7 +282,6 @@ zh-TW:
|
|
|
281
282
|
block_user:
|
|
282
283
|
new:
|
|
283
284
|
action: 封鎖帳號並且發送理由
|
|
284
|
-
already_reported_html: 繼續操作也會隱藏所有參與者內容, <a href="%{link}">封鎖這個帳號</a>。
|
|
285
285
|
description: 封鎖一個使用者會讓他的帳號無法使用,可以在此提供建議說明如何取消封鎖
|
|
286
286
|
justification: 理由
|
|
287
287
|
title: 封鎖使用者 %{name}
|
|
@@ -356,15 +356,11 @@ zh-TW:
|
|
|
356
356
|
user_name: 使用者
|
|
357
357
|
dashboard:
|
|
358
358
|
pending_moderations:
|
|
359
|
-
anouncement:
|
|
360
|
-
other: 有 %{count} 個操作等待中
|
|
361
359
|
goto_moderation: 前往全域管理
|
|
362
360
|
title: 等待的操作
|
|
363
361
|
show:
|
|
364
362
|
view_more_logs: 檢視更多記錄
|
|
365
363
|
domain_whitelist:
|
|
366
|
-
form:
|
|
367
|
-
domain_too_short: 網址太短
|
|
368
364
|
update:
|
|
369
365
|
error: 網址白名單更新失敗
|
|
370
366
|
success: 網址白名單更新成功.
|
|
@@ -543,12 +539,13 @@ zh-TW:
|
|
|
543
539
|
appearance: 外觀
|
|
544
540
|
area_types: 區域類型
|
|
545
541
|
areas: 區域
|
|
542
|
+
components: 组件
|
|
546
543
|
configuration: 配置
|
|
547
544
|
content: 被檢舉的內容
|
|
548
|
-
external_domain_whitelist: 允許的外部域名
|
|
549
545
|
help_sections: 幫助部分
|
|
550
546
|
homepage: 首頁
|
|
551
547
|
impersonations: 模擬登錄
|
|
548
|
+
manage: 管理
|
|
552
549
|
moderation: 全局審查
|
|
553
550
|
newsletters: 電子報
|
|
554
551
|
participants: 參與者
|
|
@@ -815,11 +812,6 @@ zh-TW:
|
|
|
815
812
|
organization_external_domain_whitelist:
|
|
816
813
|
edit:
|
|
817
814
|
update: 更新
|
|
818
|
-
external_domain:
|
|
819
|
-
down: 向下
|
|
820
|
-
external_domain: 外部網域
|
|
821
|
-
remove: 移除
|
|
822
|
-
up: 往上
|
|
823
815
|
form:
|
|
824
816
|
add: 新增到白名單
|
|
825
817
|
title: 外部域名白名單
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
$LOAD_PATH.push File.expand_path("lib", __dir__)
|
|
4
|
+
|
|
5
|
+
# Maintain your gem's version:
|
|
6
|
+
require "decidim/admin/version"
|
|
7
|
+
|
|
8
|
+
# Describe your gem and declare its dependencies:
|
|
9
|
+
Gem::Specification.new do |s|
|
|
10
|
+
s.version = Decidim::Admin.version
|
|
11
|
+
s.authors = ["Josep Jaume Rey Peroy", "Marc Riera Casals", "Oriol Gual Oliva"]
|
|
12
|
+
s.email = ["josepjaume@gmail.com", "mrc2407@gmail.com", "oriolgual@gmail.com"]
|
|
13
|
+
s.license = "AGPL-3.0"
|
|
14
|
+
s.homepage = "https://decidim.org"
|
|
15
|
+
s.metadata = {
|
|
16
|
+
"bug_tracker_uri" => "https://github.com/decidim/decidim/issues",
|
|
17
|
+
"documentation_uri" => "https://docs.decidim.org/",
|
|
18
|
+
"funding_uri" => "https://opencollective.com/decidim",
|
|
19
|
+
"homepage_uri" => "https://decidim.org",
|
|
20
|
+
"source_code_uri" => "https://github.com/decidim/decidim"
|
|
21
|
+
}
|
|
22
|
+
s.required_ruby_version = "~> 3.1.0"
|
|
23
|
+
|
|
24
|
+
s.name = "decidim-admin"
|
|
25
|
+
s.summary = "Decidim organization administration"
|
|
26
|
+
s.description = "Organization administration to manage a single organization."
|
|
27
|
+
|
|
28
|
+
s.files = Dir.chdir(__dir__) do
|
|
29
|
+
`git ls-files -z`.split("\x0").select do |f|
|
|
30
|
+
(File.expand_path(f) == __FILE__) ||
|
|
31
|
+
f.start_with?(*%w(app/ config/ db/ lib/ Rakefile README.md))
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
s.add_dependency "active_link_to", "~> 1.0"
|
|
36
|
+
s.add_dependency "decidim-core", Decidim::Admin.version
|
|
37
|
+
s.add_dependency "devise", "~> 4.7"
|
|
38
|
+
s.add_dependency "devise-i18n", "~> 1.2"
|
|
39
|
+
s.add_dependency "devise_invitable", "~> 2.0", ">= 2.0.9"
|
|
40
|
+
|
|
41
|
+
s.add_development_dependency "decidim-dev", Decidim::Admin.version
|
|
42
|
+
s.add_development_dependency "decidim-participatory_processes", Decidim::Admin.version
|
|
43
|
+
end
|
data/lib/decidim/admin/engine.rb
CHANGED
|
@@ -57,39 +57,15 @@ module Decidim
|
|
|
57
57
|
Mime::Type.register Decidim::Admin::Import::Readers::XLSX::MIME_TYPE, :xlsx
|
|
58
58
|
end
|
|
59
59
|
|
|
60
|
-
initializer "decidim_admin.
|
|
60
|
+
initializer "decidim_admin.menu" do
|
|
61
61
|
Decidim::Admin::Menu.register_admin_global_moderation_menu!
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
initializer "decidim_admin.workflows_menu" do
|
|
65
62
|
Decidim::Admin::Menu.register_workflows_menu!
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
initializer "decidim_admin.impersonate_menu" do
|
|
69
63
|
Decidim::Admin::Menu.register_impersonate_menu!
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
initializer "decidim_admin.static_pages_menu" do
|
|
73
64
|
Decidim::Admin::Menu.register_admin_static_pages_menu!
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
initializer "decidim_admin.user_menu" do
|
|
77
65
|
Decidim::Admin::Menu.register_admin_user_menu!
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
initializer "decidim_admin.scopes_menu" do
|
|
81
66
|
Decidim::Admin::Menu.register_admin_scopes_menu!
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
initializer "decidim_admin.areas_menu" do
|
|
85
67
|
Decidim::Admin::Menu.register_admin_areas_menu!
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
initializer "decidim_admin.settings_menu" do
|
|
89
68
|
Decidim::Admin::Menu.register_admin_settings_menu!
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
initializer "decidim_admin.menu" do
|
|
93
69
|
Decidim::Admin::Menu.register_admin_menu!
|
|
94
70
|
end
|
|
95
71
|
|
data/lib/decidim/admin/menu.rb
CHANGED
|
@@ -8,7 +8,7 @@ module Decidim
|
|
|
8
8
|
moderations_count = Decidim::Admin::ModerationStats.new(current_user).count_content_moderations
|
|
9
9
|
|
|
10
10
|
caption = I18n.t("menu.content", scope: "decidim.admin")
|
|
11
|
-
caption += content_tag(:span, moderations_count, class:
|
|
11
|
+
caption += content_tag(:span, moderations_count, class: "component-counter")
|
|
12
12
|
|
|
13
13
|
menu.add_item :moderations,
|
|
14
14
|
caption.html_safe,
|
|
@@ -20,7 +20,7 @@ module Decidim
|
|
|
20
20
|
user_reports = Decidim::Admin::ModerationStats.new(current_user).count_user_pending_reports
|
|
21
21
|
|
|
22
22
|
caption = I18n.t("menu.reported_users", scope: "decidim.admin")
|
|
23
|
-
caption += content_tag(:span, user_reports, class:
|
|
23
|
+
caption += content_tag(:span, user_reports, class: "component-counter")
|
|
24
24
|
|
|
25
25
|
menu.add_item :moderated_users,
|
|
26
26
|
caption.html_safe,
|
|
@@ -168,13 +168,22 @@ module Decidim
|
|
|
168
168
|
decidim_admin.scopes_path,
|
|
169
169
|
icon_name: "price-tag-3-line",
|
|
170
170
|
position: 1.3,
|
|
171
|
-
if: allowed_to?(:read, :scope)
|
|
171
|
+
if: allowed_to?(:read, :scope),
|
|
172
|
+
active: [%w(
|
|
173
|
+
decidim/admin/scopes
|
|
174
|
+
decidim/admin/scope_types
|
|
175
|
+
), []]
|
|
176
|
+
|
|
172
177
|
menu.add_item :areas,
|
|
173
178
|
I18n.t("menu.areas", scope: "decidim.admin"),
|
|
174
179
|
decidim_admin.areas_path,
|
|
175
180
|
icon_name: "layout-masonry-line",
|
|
176
181
|
position: 1.5,
|
|
177
|
-
if: allowed_to?(:read, :area)
|
|
182
|
+
if: allowed_to?(:read, :area),
|
|
183
|
+
active: [%w(
|
|
184
|
+
decidim/admin/areas
|
|
185
|
+
decidim/admin/area_types
|
|
186
|
+
), []]
|
|
178
187
|
|
|
179
188
|
menu.add_item :help_sections,
|
|
180
189
|
I18n.t("menu.help_sections", scope: "decidim.admin"),
|
|
@@ -15,6 +15,23 @@ shared_examples "showing the unauthorized error message" do
|
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
+
shared_examples "admin participatory space edit button" do
|
|
19
|
+
context "and visits the participatory space public page" do
|
|
20
|
+
before do
|
|
21
|
+
switch_to_host(organization.host)
|
|
22
|
+
login_as role, scope: :user
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "shows the admin bar with the Edit button" do
|
|
26
|
+
visit participatory_space_path
|
|
27
|
+
|
|
28
|
+
within "#admin-bar" do
|
|
29
|
+
expect(page).to have_link("Edit", href: target_path)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
18
35
|
shared_examples "admin participatory space access" do
|
|
19
36
|
before do
|
|
20
37
|
switch_to_host(organization.host)
|
|
@@ -31,6 +48,16 @@ shared_examples "admin participatory space access" do
|
|
|
31
48
|
context "when the user has the role" do
|
|
32
49
|
let(:user) { role }
|
|
33
50
|
|
|
51
|
+
context "and visits the root path" do
|
|
52
|
+
it "shows the admin bar" do
|
|
53
|
+
visit decidim.root_path
|
|
54
|
+
|
|
55
|
+
within "#admin-bar" do
|
|
56
|
+
expect(page).to have_link("Admin dashboard", href: "/admin/")
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
34
61
|
context "and has permission" do
|
|
35
62
|
before do
|
|
36
63
|
visit target_path
|
|
@@ -19,6 +19,15 @@ module Decidim
|
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
+
context "when the category is being used by a resource" do
|
|
23
|
+
let(:component) { create(:dummy_component, participatory_space:) }
|
|
24
|
+
let!(:resource) { create(:dummy_resource, component:, category:) }
|
|
25
|
+
|
|
26
|
+
it "broadcasts invalid" do
|
|
27
|
+
expect { command.call }.to broadcast(:invalid)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
22
31
|
context "when the category is not empty" do
|
|
23
32
|
let!(:subcategory) { create :subcategory, parent: category }
|
|
24
33
|
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
shared_examples "inviting participatory space admins" do |check_private_space: true, check_landing_page: true|
|
|
4
|
+
let(:role) { "Administrator" }
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
switch_to_host organization.host
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
shared_examples "sees public space menu" do
|
|
11
|
+
it "can access all sections" do
|
|
12
|
+
within_admin_sidebar_menu do
|
|
13
|
+
expect(page).to have_content(about_this_space_label)
|
|
14
|
+
expect(page).to have_content("Landing page") if check_landing_page
|
|
15
|
+
expect(page).to have_content("Phases") if participatory_space.is_a?(Decidim::ParticipatoryProcess)
|
|
16
|
+
expect(page).to have_content("Components")
|
|
17
|
+
expect(page).to have_content("Categories")
|
|
18
|
+
expect(page).to have_content("Attachments")
|
|
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)
|
|
21
|
+
expect(page).to have_content("Moderations")
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
shared_examples "sees private space menu" do
|
|
27
|
+
it "can access all sections" do
|
|
28
|
+
within_admin_sidebar_menu do
|
|
29
|
+
expect(page).to have_content(about_this_space_label)
|
|
30
|
+
expect(page).to have_content("Landing page") if check_landing_page
|
|
31
|
+
expect(page).to have_content("Phases") if participatory_space.is_a?(Decidim::ParticipatoryProcess)
|
|
32
|
+
expect(page).to have_content("Components")
|
|
33
|
+
expect(page).to have_content("Categories")
|
|
34
|
+
expect(page).to have_content("Attachments")
|
|
35
|
+
expect(page).to have_content(space_admins_label)
|
|
36
|
+
expect(page).to have_content("Private participants") if participatory_space.respond_to?(:private_space)
|
|
37
|
+
expect(page).to have_content("Moderations")
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
context "when the user does not exist" do
|
|
43
|
+
before do
|
|
44
|
+
perform_enqueued_jobs { invite_user }
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "asks for a password and nickname and redirects to the admin dashboard" do
|
|
48
|
+
visit last_email_link
|
|
49
|
+
|
|
50
|
+
within "form.new_user" do
|
|
51
|
+
fill_in :invitation_user_nickname, with: "caballo_loco"
|
|
52
|
+
fill_in :invitation_user_password, with: "decidim123456789"
|
|
53
|
+
check :invitation_user_tos_agreement
|
|
54
|
+
find("*[type=submit]").click
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
expect(page).to have_current_path "/admin/admin_terms/show"
|
|
58
|
+
|
|
59
|
+
visit decidim_admin.admin_terms_show_path
|
|
60
|
+
|
|
61
|
+
find_button("I agree with the terms").click
|
|
62
|
+
|
|
63
|
+
click_on space_sidebar_label
|
|
64
|
+
|
|
65
|
+
within "div.table-scroll" do
|
|
66
|
+
expect(page).to have_i18n_content(participatory_space.title)
|
|
67
|
+
within "tr", text: translated(participatory_space.title) do
|
|
68
|
+
click_on translated(participatory_space.title)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
context "when the user does not exist" do
|
|
74
|
+
before do
|
|
75
|
+
perform_enqueued_jobs { invite_user }
|
|
76
|
+
|
|
77
|
+
visit last_email_link
|
|
78
|
+
|
|
79
|
+
within "form.new_user" do
|
|
80
|
+
fill_in :invitation_user_nickname, with: "caballo_loco"
|
|
81
|
+
fill_in :invitation_user_password, with: "decidim123456789"
|
|
82
|
+
check :invitation_user_tos_agreement
|
|
83
|
+
find("*[type=submit]").click
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
expect(page).to have_current_path "/admin/admin_terms/show"
|
|
87
|
+
|
|
88
|
+
visit decidim_admin.admin_terms_show_path
|
|
89
|
+
|
|
90
|
+
find_button("I agree with the terms").click
|
|
91
|
+
|
|
92
|
+
click_on space_sidebar_label
|
|
93
|
+
|
|
94
|
+
within "div.table-scroll" do
|
|
95
|
+
expect(page).to have_i18n_content(participatory_space.title)
|
|
96
|
+
within "tr", text: translated(participatory_space.title) do
|
|
97
|
+
click_on translated(participatory_space.title)
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
context "and is a public space" do
|
|
103
|
+
it_behaves_like "sees public space menu"
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
if check_private_space
|
|
107
|
+
context "and is a private space" do
|
|
108
|
+
let(:participatory_space) { private_participatory_space }
|
|
109
|
+
|
|
110
|
+
it_behaves_like "sees private space menu"
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
context "when the user already exists" do
|
|
117
|
+
let(:email) { "administrator@example.org" }
|
|
118
|
+
|
|
119
|
+
let!(:administrator) do
|
|
120
|
+
create(:user, :confirmed, :admin_terms_accepted, email:, organization:)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
before do
|
|
124
|
+
perform_enqueued_jobs { invite_user }
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
it "redirects the administrator to the admin dashboard" do
|
|
128
|
+
login_as administrator, scope: :user
|
|
129
|
+
|
|
130
|
+
visit decidim_admin.root_path
|
|
131
|
+
|
|
132
|
+
click_on space_sidebar_label
|
|
133
|
+
|
|
134
|
+
within "div.table-scroll" do
|
|
135
|
+
expect(page).to have_i18n_content(participatory_space.title)
|
|
136
|
+
expect(page).to have_i18n_content(participatory_space.title)
|
|
137
|
+
within "tr", text: translated(participatory_space.title) do
|
|
138
|
+
click_on translated(participatory_space.title)
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
it "selects the user role in the form" do
|
|
144
|
+
edit_user(administrator.name)
|
|
145
|
+
|
|
146
|
+
expect(page).to have_select("Role", selected: "Administrator")
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
context "when user exists in the organization" do
|
|
150
|
+
before do
|
|
151
|
+
perform_enqueued_jobs { invite_user }
|
|
152
|
+
login_as administrator, scope: :user
|
|
153
|
+
|
|
154
|
+
visit decidim_admin.root_path
|
|
155
|
+
|
|
156
|
+
click_on space_sidebar_label
|
|
157
|
+
|
|
158
|
+
within "div.table-scroll" do
|
|
159
|
+
expect(page).to have_i18n_content(participatory_space.title)
|
|
160
|
+
expect(page).to have_i18n_content(participatory_space.title)
|
|
161
|
+
within "tr", text: translated(participatory_space.title) do
|
|
162
|
+
click_on translated(participatory_space.title)
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
context "and is a public space" do
|
|
168
|
+
it_behaves_like "sees public space menu"
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
if check_private_space
|
|
172
|
+
context "and is a private space" do
|
|
173
|
+
let(:participatory_space) { private_participatory_space }
|
|
174
|
+
|
|
175
|
+
it_behaves_like "sees private space menu"
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
shared_examples "inviting participatory space collaborators" do
|
|
4
|
+
let(:role) { "Collaborator" }
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
switch_to_host organization.host
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
context "when the user does not exist" do
|
|
11
|
+
before do
|
|
12
|
+
perform_enqueued_jobs { invite_user }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "asks for a password and nickname and redirects to the admin dashboard" do
|
|
16
|
+
visit last_email_link
|
|
17
|
+
|
|
18
|
+
within "form.new_user" do
|
|
19
|
+
fill_in :invitation_user_nickname, with: "caballo_loco"
|
|
20
|
+
fill_in :invitation_user_password, with: "decidim123456789"
|
|
21
|
+
check :invitation_user_tos_agreement
|
|
22
|
+
find("*[type=submit]").click
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
expect(page).to have_current_path "/admin/admin_terms/show"
|
|
26
|
+
|
|
27
|
+
visit decidim_admin.admin_terms_show_path
|
|
28
|
+
find_button("I agree with the terms").click
|
|
29
|
+
|
|
30
|
+
click_on space_sidebar_label
|
|
31
|
+
|
|
32
|
+
within "div.table-scroll" do
|
|
33
|
+
expect(page).to have_i18n_content(participatory_space.title)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
context "when the user already exists" do
|
|
39
|
+
let(:email) { "collaborator@example.org" }
|
|
40
|
+
|
|
41
|
+
let!(:collaborator) do
|
|
42
|
+
create(:user, :confirmed, :admin_terms_accepted, email:, organization:)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
before do
|
|
46
|
+
perform_enqueued_jobs { invite_user }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "redirects the collaborator to the admin dashboard" do
|
|
50
|
+
login_as collaborator, scope: :user
|
|
51
|
+
|
|
52
|
+
visit decidim_admin.root_path
|
|
53
|
+
|
|
54
|
+
click_on space_sidebar_label
|
|
55
|
+
|
|
56
|
+
within "div.table-scroll" do
|
|
57
|
+
expect(page).to have_i18n_content(participatory_space.title)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "selects the user role in the form" do
|
|
62
|
+
edit_user(collaborator.name)
|
|
63
|
+
|
|
64
|
+
expect(page).to have_select("Role", selected: "Collaborator")
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
shared_examples "inviting participatory space moderators" do
|
|
4
|
+
before do
|
|
5
|
+
switch_to_host organization.host
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
context "when the user does not exist" do
|
|
9
|
+
before do
|
|
10
|
+
perform_enqueued_jobs { invite_user }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "asks for a password and nickname and redirects to the admin dashboard" do
|
|
14
|
+
visit last_email_link
|
|
15
|
+
|
|
16
|
+
within "form.new_user" do
|
|
17
|
+
fill_in :invitation_user_nickname, with: "caballo_loco"
|
|
18
|
+
fill_in :invitation_user_password, with: "decidim123456789"
|
|
19
|
+
check :invitation_user_tos_agreement
|
|
20
|
+
find("*[type=submit]").click
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
expect(page).to have_current_path "/admin/admin_terms/show"
|
|
24
|
+
|
|
25
|
+
visit decidim_admin.admin_terms_show_path
|
|
26
|
+
find_button("I agree with the terms").click
|
|
27
|
+
|
|
28
|
+
click_on space_sidebar_label
|
|
29
|
+
|
|
30
|
+
within "div.table-scroll" do
|
|
31
|
+
expect(page).to have_i18n_content(participatory_space.title)
|
|
32
|
+
click_on "Moderate"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
within "div.process-title-content-breadcrumb-container-left" do
|
|
36
|
+
expect(page).to have_css("span.process-title-content-breadcrumb", text: "Moderations")
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
context "when the user already exists" do
|
|
42
|
+
let(:email) { "moderator@example.org" }
|
|
43
|
+
|
|
44
|
+
let!(:moderator) do
|
|
45
|
+
create(:user, :confirmed, :admin_terms_accepted, email:, organization:)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
before do
|
|
49
|
+
perform_enqueued_jobs { invite_user }
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "redirects the moderator to the admin dashboard" do
|
|
53
|
+
login_as moderator, scope: :user
|
|
54
|
+
|
|
55
|
+
visit decidim_admin.root_path
|
|
56
|
+
|
|
57
|
+
click_on space_sidebar_label
|
|
58
|
+
|
|
59
|
+
within "div.table-scroll" do
|
|
60
|
+
expect(page).to have_i18n_content(participatory_space.title)
|
|
61
|
+
within "tr", text: translated(participatory_space.title) do
|
|
62
|
+
click_on "Moderate"
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
within "div.process-title-content-breadcrumb-container-left" do
|
|
67
|
+
expect(page).to have_css("span.process-title-content-breadcrumb", text: "Moderations")
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "selects the user role in the form" do
|
|
72
|
+
edit_user(moderator.name)
|
|
73
|
+
|
|
74
|
+
expect(page).to have_select("Role", selected: "Moderator")
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|