decidim-assemblies 0.31.5 → 0.32.0.rc2

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.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -12
  3. data/app/cells/decidim/assemblies/content_blocks/main_data_cell.rb +1 -0
  4. data/app/commands/decidim/assemblies/admin/create_assembly.rb +4 -4
  5. data/app/commands/decidim/assemblies/admin/duplicate_assembly.rb +1 -2
  6. data/app/commands/decidim/assemblies/admin/update_assembly.rb +3 -3
  7. data/app/controllers/concerns/decidim/assemblies/admin/filterable.rb +6 -2
  8. data/app/controllers/concerns/decidim/assemblies/assembly_breadcrumb.rb +0 -3
  9. data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +2 -2
  10. data/app/controllers/decidim/assemblies/admin/assembly_duplicates_controller.rb +1 -1
  11. data/app/controllers/decidim/assemblies/admin/assembly_imports_controller.rb +1 -1
  12. data/app/controllers/decidim/assemblies/admin/concerns/assembly_admin.rb +1 -0
  13. data/app/controllers/decidim/assemblies/admin/members_controller.rb +14 -0
  14. data/app/controllers/decidim/assemblies/admin/members_csv_imports_controller.rb +22 -0
  15. data/app/controllers/decidim/assemblies/{participatory_space_private_users_controller.rb → members_controller.rb} +2 -2
  16. data/app/forms/decidim/assemblies/admin/assembly_form.rb +9 -6
  17. data/app/helpers/decidim/assemblies/assemblies_helper.rb +2 -2
  18. data/app/helpers/decidim/assemblies/filter_assemblies_helper.rb +2 -1
  19. data/app/models/decidim/assembly.rb +12 -15
  20. data/app/packs/src/decidim/assemblies/controllers/assembly_admin/assembly_admin.test.js +1 -130
  21. data/app/packs/src/decidim/assemblies/controllers/assembly_admin/controller.js +0 -28
  22. data/app/permissions/decidim/assemblies/permissions.rb +9 -9
  23. data/app/presenters/decidim/assemblies/admin_log/assembly_presenter.rb +1 -2
  24. data/app/presenters/decidim/assemblies/assembly_presenter.rb +0 -4
  25. data/app/queries/decidim/assemblies/admin/admin_users.rb +1 -1
  26. data/app/serializers/decidim/assemblies/assembly_importer.rb +10 -13
  27. data/app/serializers/decidim/assemblies/assembly_serializer.rb +1 -1
  28. data/app/serializers/decidim/assemblies/open_data_assembly_serializer.rb +2 -8
  29. data/app/views/decidim/assemblies/admin/assemblies/_assemblies_thead.html.erb +1 -1
  30. data/app/views/decidim/assemblies/admin/assemblies/_assembly_row.html.erb +5 -6
  31. data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +33 -17
  32. data/app/views/decidim/assemblies/admin/assemblies/edit.html.erb +3 -2
  33. data/app/views/decidim/assemblies/admin/assemblies/index.html.erb +2 -1
  34. data/app/views/decidim/assemblies/admin/assemblies/manage_trash.html.erb +2 -2
  35. data/app/views/decidim/assemblies/admin/assemblies/new.html.erb +2 -2
  36. data/app/views/decidim/assemblies/admin/assembly_duplicates/new.html.erb +2 -2
  37. data/app/views/decidim/assemblies/admin/assembly_imports/new.html.erb +2 -2
  38. data/app/views/decidim/assemblies/admin/assembly_user_roles/edit.html.erb +2 -2
  39. data/app/views/decidim/assemblies/admin/assembly_user_roles/index.html.erb +2 -2
  40. data/app/views/decidim/assemblies/admin/assembly_user_roles/new.html.erb +2 -2
  41. data/app/views/decidim/assemblies/assemblies/show.html.erb +9 -3
  42. data/app/views/decidim/assemblies/members/index.html.erb +24 -0
  43. data/config/locales/ar.yml +0 -25
  44. data/config/locales/bg.yml +0 -25
  45. data/config/locales/bs-BA.yml +0 -7
  46. data/config/locales/ca-IT.yml +36 -34
  47. data/config/locales/ca.yml +36 -34
  48. data/config/locales/cs.yml +36 -34
  49. data/config/locales/de.yml +25 -33
  50. data/config/locales/el.yml +0 -25
  51. data/config/locales/en.yml +36 -34
  52. data/config/locales/es-MX.yml +36 -34
  53. data/config/locales/es-PY.yml +36 -34
  54. data/config/locales/es.yml +36 -34
  55. data/config/locales/eu.yml +36 -34
  56. data/config/locales/fi-plain.yml +36 -34
  57. data/config/locales/fi.yml +36 -34
  58. data/config/locales/fr-CA.yml +34 -34
  59. data/config/locales/fr.yml +34 -34
  60. data/config/locales/ga-IE.yml +0 -11
  61. data/config/locales/gl.yml +0 -23
  62. data/config/locales/he-IL.yml +0 -10
  63. data/config/locales/hu.yml +0 -25
  64. data/config/locales/id-ID.yml +0 -21
  65. data/config/locales/is-IS.yml +0 -8
  66. data/config/locales/it.yml +0 -27
  67. data/config/locales/ja.yml +23 -34
  68. data/config/locales/ko.yml +0 -8
  69. data/config/locales/lb.yml +0 -23
  70. data/config/locales/lt.yml +0 -24
  71. data/config/locales/lv.yml +0 -24
  72. data/config/locales/nl.yml +0 -25
  73. data/config/locales/no.yml +0 -25
  74. data/config/locales/pl.yml +0 -25
  75. data/config/locales/pt-BR.yml +4 -27
  76. data/config/locales/pt.yml +0 -27
  77. data/config/locales/ro-RO.yml +2 -24
  78. data/config/locales/ru.yml +0 -14
  79. data/config/locales/sk.yml +36 -34
  80. data/config/locales/sl.yml +0 -10
  81. data/config/locales/sq-AL.yml +0 -16
  82. data/config/locales/sr-CS.yml +0 -7
  83. data/config/locales/sv.yml +16 -28
  84. data/config/locales/tr-TR.yml +0 -25
  85. data/config/locales/uk.yml +0 -14
  86. data/config/locales/zh-CN.yml +0 -24
  87. data/config/locales/zh-TW.yml +0 -25
  88. data/db/data/20260104094930_remove_assemblies_types_references.rb +25 -0
  89. data/db/data/20260111185230_replace_legacy_fields_to_access_mode_for_assemblies.rb +25 -0
  90. data/db/data/20260210195653_move_announcement_to_content_block_on_assemblies.rb +40 -0
  91. data/db/migrate/20180226103942_add_parent_child_relation_to_assemblies.rb +4 -4
  92. data/db/migrate/20190215093700_reset_negative_children_count_counters.rb +6 -2
  93. data/db/migrate/20210310120444_add_followable_counter_cache_to_assemblies.rb +6 -2
  94. data/db/migrate/20251112114736_remove_legacy_images_from_assemblies_module.rb +8 -0
  95. data/db/migrate/20251205120000_add_has_members_to_decidim_assemblies.rb +7 -0
  96. data/db/migrate/20260104093601_remove_assemblies_types.rb +12 -0
  97. data/db/migrate/20260111120000_add_access_mode_to_assemblies.rb +11 -0
  98. data/decidim-assemblies.gemspec +8 -9
  99. data/lib/decidim/api/assembly_type.rb +1 -8
  100. data/lib/decidim/assemblies/admin_engine.rb +10 -4
  101. data/lib/decidim/assemblies/content_blocks/registry_manager.rb +5 -0
  102. data/lib/decidim/assemblies/engine.rb +26 -42
  103. data/lib/decidim/assemblies/menu.rb +5 -5
  104. data/lib/decidim/assemblies/participatory_space.rb +0 -2
  105. data/lib/decidim/assemblies/seeds.rb +1 -2
  106. data/lib/decidim/assemblies/test/factories.rb +8 -20
  107. data/lib/decidim/assemblies/version.rb +1 -1
  108. metadata +25 -30
  109. data/app/cells/decidim/assemblies/assembly_dropdown_metadata_cell.rb +0 -19
  110. data/app/commands/decidim/assemblies/admin/create_assemblies_type.rb +0 -17
  111. data/app/commands/decidim/assemblies/admin/update_assemblies_type.rb +0 -13
  112. data/app/controllers/decidim/assemblies/admin/participatory_space_private_users_controller.rb +0 -22
  113. data/app/controllers/decidim/assemblies/admin/participatory_space_private_users_csv_imports_controller.rb +0 -22
  114. data/app/forms/decidim/assemblies/admin/assemblies_type_form.rb +0 -17
  115. data/app/models/decidim/assemblies_type.rb +0 -27
  116. data/app/presenters/decidim/assemblies/admin_log/assemblies_type_presenter.rb +0 -43
  117. data/app/presenters/decidim/log/value_types/assembly_type_presenter.rb +0 -29
  118. data/app/queries/decidim/assemblies/filtered_assemblies.rb +0 -22
  119. data/app/views/decidim/assemblies/pages/user_profile/_member_of.html.erb +0 -9
  120. data/app/views/decidim/assemblies/participatory_space_private_users/index.html.erb +0 -23
@@ -31,7 +31,6 @@ zh-CN:
31
31
  participatory_processes_ids: 相关的参与进程
32
32
  participatory_scope: 决定的内容
33
33
  participatory_structure: 如何决定
34
- private_space: 私有空间
35
34
  promoted: 高亮
36
35
  published_at: 发布于
37
36
  purpose_of_action: 行动的目的
@@ -73,12 +72,9 @@ zh-CN:
73
72
  edit:
74
73
  update: 更新
75
74
  index:
76
- private: 非公开的
77
- public: 公开的
78
75
  published: 已发布
79
76
  new:
80
77
  create: 创建
81
- title: 新建程序集
82
78
  update:
83
79
  error: 更新这个组件时出现问题。
84
80
  success: 程序更新成功。
@@ -104,8 +100,6 @@ zh-CN:
104
100
  success: 管理员已成功从此组件中移除。
105
101
  edit:
106
102
  update: 更新
107
- index:
108
- assembly_admins_title: 集合管理员
109
103
  new:
110
104
  create: 创建
111
105
  update:
@@ -120,12 +114,10 @@ zh-CN:
120
114
  attachments: 附件
121
115
  components: 组件
122
116
  moderations: 版面
123
- private_users: 成员
124
117
  models:
125
118
  assembly:
126
119
  fields:
127
120
  created_at: 创建于
128
- private: 非公开的
129
121
  promoted: 高亮
130
122
  published: 已发布
131
123
  title: 标题
@@ -147,9 +139,6 @@ zh-CN:
147
139
  admin: 管理员
148
140
  collaborator: 协作者
149
141
  moderator: 版主
150
- titles:
151
- assemblies: 程序集
152
- assemblies_types: 程序集类型
153
142
  admin_log:
154
143
  assembly:
155
144
  create: "%{user_name} 创建了 %{resource_name} 程序集"
@@ -194,9 +183,6 @@ zh-CN:
194
183
  filters:
195
184
  names:
196
185
  all: 所有的
197
- assembly_members:
198
- index:
199
- members: 成员
200
186
  content_blocks:
201
187
  highlighted_assemblies:
202
188
  name: 突出显示的会议
@@ -216,16 +202,8 @@ zh-CN:
216
202
  working_group: 工作组
217
203
  index:
218
204
  title: 程序集
219
- pages:
220
- user_profile:
221
- member_of:
222
- member_of: 成员
223
205
  show:
224
206
  duration: 期限
225
- private_space: 这是一个私人装饰
226
- assembly_members:
227
- index:
228
- title: 成员
229
207
  events:
230
208
  assemblies:
231
209
  create_assembly_member:
@@ -248,8 +226,6 @@ zh-CN:
248
226
  value_types:
249
227
  assembly_presenter:
250
228
  not_found: '在数据库中找不到程序集 (ID: %{id})'
251
- assembly_type_presenter:
252
- not_found: '在数据库中找不到程序集类型 (ID: %{id})'
253
229
  menu:
254
230
  assemblies: 程序集
255
231
  participatory_processes:
@@ -36,7 +36,6 @@ zh-TW:
36
36
  participatory_processes_ids: 相關參與程序
37
37
  participatory_scope: 決定了什麼
38
38
  participatory_structure: 如何決定
39
- private_space: 私人空間
40
39
  promoted: 重點顯示
41
40
  published_at: 發佈於
42
41
  purpose_of_action: 行動目的
@@ -88,12 +87,9 @@ zh-TW:
88
87
  edit:
89
88
  update: 更新
90
89
  index:
91
- private: 不公開
92
- public: 公開
93
90
  published: 已發佈
94
91
  new:
95
92
  create: 創建
96
- title: 新大會
97
93
  update:
98
94
  error: 更新此大會時出現問題
99
95
  success: 此大會成功更新
@@ -119,8 +115,6 @@ zh-TW:
119
115
  success: 管理員已成功從此大會中刪除
120
116
  edit:
121
117
  update: 更新
122
- index:
123
- assembly_admins_title: 大會管理員
124
118
  new:
125
119
  create: 建立
126
120
  update:
@@ -135,12 +129,10 @@ zh-TW:
135
129
  attachments: 附件
136
130
  components: 元件
137
131
  moderations: 版主
138
- private_users: 成員
139
132
  models:
140
133
  assembly:
141
134
  fields:
142
135
  created_at: 建立於
143
- private: 不公開
144
136
  promoted: 重點顯示
145
137
  published: 已發佈
146
138
  title: 標題
@@ -162,9 +154,6 @@ zh-TW:
162
154
  admin: 管理員
163
155
  collaborator: 合作者
164
156
  moderator: 版主
165
- titles:
166
- assemblies: 大會
167
- assemblies_types: 大會類型
168
157
  admin_log:
169
158
  assembly:
170
159
  create: "%{user_name} 建立了 %{resource_name} 大會"
@@ -194,7 +183,6 @@ zh-TW:
194
183
  admin:
195
184
  assemblies:
196
185
  form:
197
- announcement_help: 您在此處輸入的文字將顯示至使用者的正下方大會信息
198
186
  duration: 持續時間
199
187
  duration_help: 如果此大會的持續時間有限,請選擇結束日期。 否則,它將顯示為不確定。
200
188
  images: 圖片
@@ -224,9 +212,6 @@ zh-TW:
224
212
  all: 全部
225
213
  show:
226
214
  title: 關於這個大會
227
- assembly_members:
228
- index:
229
- members: 成員
230
215
  content_blocks:
231
216
  highlighted_assemblies:
232
217
  name: 關注的大會
@@ -248,17 +233,9 @@ zh-TW:
248
233
  title: 大會
249
234
  last_activity:
250
235
  new_assembly: '新大會:'
251
- pages:
252
- user_profile:
253
- member_of:
254
- member_of: 的成員
255
236
  show:
256
237
  duration: 持續時間
257
- private_space: 這是一個私人大會
258
238
  social_networks_title: 訪問大會
259
- assembly_members:
260
- index:
261
- title: 成員
262
239
  events:
263
240
  assemblies:
264
241
  create_assembly_member:
@@ -282,8 +259,6 @@ zh-TW:
282
259
  value_types:
283
260
  assembly_presenter:
284
261
  not_found: '在資料庫中找不到該大會 (ID: %{id})'
285
- assembly_type_presenter:
286
- not_found: '在資料庫中找不到該大會類型 (ID: %{id})'
287
262
  menu:
288
263
  assemblies: 大會
289
264
  participatory_processes:
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RemoveAssembliesTypesReferences < ActiveRecord::Migration[7.2]
4
+ class ActionLog < ApplicationRecord
5
+ self.table_name = :decidim_action_logs
6
+ end
7
+
8
+ class Version < ApplicationRecord
9
+ self.table_name = "versions"
10
+ end
11
+
12
+ class Notification < ApplicationRecord
13
+ self.table_name = "decidim_notifications"
14
+ end
15
+
16
+ def up
17
+ ActionLog.where(resource_type: "Decidim::AssembliesType").delete_all
18
+ Version.where(item_type: "Decidim::AssembliesType").delete_all
19
+ Notification.where(decidim_resource_type: "Decidim::AssembliesType").delete_all
20
+ end
21
+
22
+ def down
23
+ raise ActiveRecord::IrreversibleMigration
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ReplaceLegacyFieldsToAccessModeForAssemblies < ActiveRecord::Migration[7.2]
4
+ def up
5
+ say_with_time "Backfilling assemblies access_mode from legacy flags" do
6
+ Decidim::Assembly.reset_column_information
7
+ Decidim::Assembly.find_each do |assembly|
8
+ mode = if assembly.private_space && !assembly.is_transparent
9
+ :restricted
10
+ elsif assembly.private_space && assembly.is_transparent
11
+ :transparent
12
+ else
13
+ :open
14
+ end
15
+ # Use write_attribute to avoid validations/callbacks
16
+ assembly.write_attribute(:access_mode, Decidim::Assembly.access_modes[mode])
17
+ assembly.save!(validate: false)
18
+ end
19
+ end
20
+ end
21
+
22
+ def down
23
+ raise ActiveRecord::IrreversibleMigration
24
+ end
25
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ class MoveAnnouncementToContentBlockOnAssemblies < ActiveRecord::Migration[7.2]
4
+ class Assembly < ApplicationRecord
5
+ self.table_name = "decidim_assemblies"
6
+ end
7
+
8
+ class ContentBlock < ApplicationRecord
9
+ self.table_name = "decidim_content_blocks"
10
+ end
11
+
12
+ def up
13
+ Assembly.find_each do |assembly|
14
+ announcement = assembly.announcement
15
+ next if announcement.blank? || announcement == {}
16
+
17
+ content_block = ContentBlock.find_or_initialize_by(
18
+ decidim_organization_id: assembly.decidim_organization_id,
19
+ scope_name: :assembly_homepage,
20
+ manifest_name: :announcement,
21
+ scoped_resource_id: assembly.id
22
+ )
23
+
24
+ settings = announcement.each_with_object({}) do |(locale, value), acc|
25
+ next if locale.to_s == "machine_translations"
26
+
27
+ acc["announcement_#{locale}"] = value
28
+ end
29
+
30
+ next if settings.empty?
31
+
32
+ content_block.settings = (content_block.settings || {}).merge(settings)
33
+ content_block.save!
34
+ end
35
+ end
36
+
37
+ def down
38
+ raise ActiveRecord::IrreversibleMigration
39
+ end
40
+ end
@@ -7,10 +7,10 @@ class AddParentChildRelationToAssemblies < ActiveRecord::Migration[5.1]
7
7
  # required so that test suite works in ci env
8
8
  enable_extension "ltree"
9
9
  rescue StandardError
10
- raise <<-MSG.squish
11
- Decidim requires the ltree extension to be enabled in your PostgreSQL.
12
- You can do so by running `CREATE EXTENSION IF NOT EXISTS "ltree";` on the current DB as a PostgreSQL
13
- super user.
10
+ raise <<~MSG.squish
11
+ Decidim requires the ltree extension to be enabled in your PostgreSQL.
12
+ You can do so by running `CREATE EXTENSION IF NOT EXISTS "ltree";` on the current DB as a PostgreSQL
13
+ super user.
14
14
  MSG
15
15
  end
16
16
  end
@@ -1,8 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class ResetNegativeChildrenCountCounters < ActiveRecord::Migration[5.2]
4
+ class Assembly < ApplicationRecord
5
+ self.table_name = :decidim_assemblies
6
+ end
7
+
4
8
  def change
5
- ids = Decidim::Assembly.unscoped.where("children_count < 0").pluck(:id)
6
- ids.each { |id| Decidim::Assembly.unscoped.reset_counters(id, :children_count) }
9
+ ids = Assembly.unscoped.where("children_count < 0").pluck(:id)
10
+ ids.each { |id| Assembly.unscoped.reset_counters(id, :children_count) }
7
11
  end
8
12
  end
@@ -1,13 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class AddFollowableCounterCacheToAssemblies < ActiveRecord::Migration[5.2]
4
+ class Assembly < ApplicationRecord
5
+ self.table_name = :decidim_assemblies
6
+ end
7
+
4
8
  def change
5
9
  add_column :decidim_assemblies, :follows_count, :integer, null: false, default: 0, index: true
6
10
 
7
11
  reversible do |dir|
8
12
  dir.up do
9
- Decidim::Assembly.reset_column_information
10
- Decidim::Assembly.unscoped.find_each do |record|
13
+ Assembly.reset_column_information
14
+ Assembly.unscoped.find_each do |record|
11
15
  record.class.reset_counters(record.id, :follows)
12
16
  end
13
17
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RemoveLegacyImagesFromAssembliesModule < ActiveRecord::Migration[7.2]
4
+ def change
5
+ remove_column :decidim_assemblies, :hero_image, :string
6
+ remove_column :decidim_assemblies, :banner_image, :string
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddHasMembersToDecidimAssemblies < ActiveRecord::Migration[7.0]
4
+ def change
5
+ add_column :decidim_assemblies, :has_members, :boolean, default: false
6
+ end
7
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RemoveAssembliesTypes < ActiveRecord::Migration[7.0]
4
+ def up
5
+ remove_column :decidim_assemblies, :decidim_assemblies_type_id, if_exists: true
6
+ drop_table :decidim_assemblies_types, if_exists: true
7
+ end
8
+
9
+ def down
10
+ raise ActiveRecord::IrreversibleMigration
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddAccessModeToAssemblies < ActiveRecord::Migration[6.1]
4
+ def up
5
+ add_column :decidim_assemblies, :access_mode, :integer, null: false, default: 0
6
+ end
7
+
8
+ def down
9
+ remove_column :decidim_assemblies, :access_mode
10
+ end
11
+ end
@@ -2,10 +2,9 @@
2
2
 
3
3
  $LOAD_PATH.push File.expand_path("lib", __dir__)
4
4
 
5
- require "decidim/assemblies/version"
6
-
7
5
  Gem::Specification.new do |s|
8
- s.version = Decidim::Assemblies.version
6
+ version = "0.32.0.rc2"
7
+ s.version = version
9
8
  s.authors = ["Josep Jaume Rey Peroy", "Marc Riera Casals", "Oriol Gual Oliva"]
10
9
  s.email = ["josepjaume@gmail.com", "mrc2407@gmail.com", "oriolgual@gmail.com"]
11
10
  s.license = "AGPL-3.0-or-later"
@@ -17,7 +16,7 @@ Gem::Specification.new do |s|
17
16
  "homepage_uri" => "https://decidim.org",
18
17
  "source_code_uri" => "https://github.com/decidim/decidim"
19
18
  }
20
- s.required_ruby_version = "~> 3.3.0"
19
+ s.required_ruby_version = "~> 3.4.0"
21
20
 
22
21
  s.name = "decidim-assemblies"
23
22
  s.summary = "Decidim assemblies module"
@@ -30,10 +29,10 @@ Gem::Specification.new do |s|
30
29
  end
31
30
  end
32
31
 
33
- s.add_dependency "decidim-core", Decidim::Assemblies.version
32
+ s.add_dependency "decidim-core", version
34
33
 
35
- s.add_development_dependency "decidim-admin", Decidim::Assemblies.version
36
- s.add_development_dependency "decidim-dev", Decidim::Assemblies.version
37
- s.add_development_dependency "decidim-meetings", Decidim::Assemblies.version
38
- s.add_development_dependency "decidim-proposals", Decidim::Assemblies.version
34
+ s.add_development_dependency "decidim-admin", version
35
+ s.add_development_dependency "decidim-dev", version
36
+ s.add_development_dependency "decidim-meetings", version
37
+ s.add_development_dependency "decidim-proposals", version
39
38
  end
@@ -17,8 +17,7 @@ module Decidim
17
17
 
18
18
  description "An assembly"
19
19
 
20
- field :announcement, Decidim::Core::TranslatedFieldType, "Highlighted announcement for this assembly", null: true
21
- field :banner_image, String, "The banner image for this assembly", null: true
20
+ field :access_mode, Decidim::Api::Types::AccessModeEnum, "The access mode of this assembly (open, transparent, or restricted)", null: false
22
21
  field :children, [Decidim::Assemblies::AssemblyType, { null: true }], "Children of this assembly", null: false
23
22
  field :children_count, Integer, "Number of children assemblies", null: true
24
23
  field :closing_date, Decidim::Core::DateType, "Closing date of the assembly", null: true
@@ -36,14 +35,12 @@ module Decidim
36
35
  field :included_at, Decidim::Core::DateType, "Included at", null: true
37
36
  field :instagram_handler, String, "Instagram handler", null: true
38
37
  field :internal_organisation, Decidim::Core::TranslatedFieldType, "Internal organisation of this assembly", null: true
39
- field :is_transparent, Boolean, "If this assembly is transparent", null: true
40
38
  field :local_area, Decidim::Core::TranslatedFieldType, "The organization area of this assembly", null: true
41
39
  field :meta_scope, Decidim::Core::TranslatedFieldType, "The scope metadata of this assembly", null: true
42
40
  field :parent, Decidim::Assemblies::AssemblyType, "The parent assembly of this assembly", null: true
43
41
  field :parents_path, String, "Assembly hierarchy representation", null: true
44
42
  field :participatory_scope, Decidim::Core::TranslatedFieldType, "What is decided on this assembly", null: true
45
43
  field :participatory_structure, Decidim::Core::TranslatedFieldType, "How it is decided on this assembly", null: true
46
- field :private_space, Boolean, "If this assembly is a private space", null: true
47
44
  field :promoted, Boolean, "If this assembly is promoted (therefore in the homepage)", null: true
48
45
  field :published_at, Decidim::Core::DateTimeType, "The time this assembly was published", null: false
49
46
  field :purpose_of_action, Decidim::Core::TranslatedFieldType, "Purpose of action", null: true
@@ -65,10 +62,6 @@ module Decidim
65
62
  def hero_image
66
63
  object.attached_uploader(:hero_image).url
67
64
  end
68
-
69
- def banner_image
70
- object.attached_uploader(:banner_image).url
71
- end
72
65
  end
73
66
  end
74
67
  end
@@ -16,6 +16,8 @@ module Decidim
16
16
  paths["lib/tasks"] = nil
17
17
 
18
18
  routes do
19
+ extend Decidim::Routes::LocaleRedirects
20
+
19
21
  constraints(->(request) { Decidim::Admin::OrganizationDashboardConstraint.new(request).matches? }) do
20
22
  resources :assemblies, param: :slug, except: [:show, :destroy] do
21
23
  resource :publish, controller: "assembly_publications", only: [:create, :destroy]
@@ -81,12 +83,12 @@ module Decidim
81
83
  resources :reports, controller: "moderations/reports", only: [:index, :show]
82
84
  end
83
85
 
84
- resources :participatory_space_private_users, controller: "participatory_space_private_users" do
86
+ resources :members, controller: "members" do
85
87
  member do
86
- post :resend_invitation, to: "participatory_space_private_users#resend_invitation"
88
+ post :resend_invitation, to: "members#resend_invitation"
87
89
  end
88
90
  collection do
89
- resource :participatory_space_private_users_csv_imports, only: [:new, :create], path: "csv_import" do
91
+ resource :members_csv_imports, only: [:new, :create], path: "csv_import" do
90
92
  delete :destroy_all
91
93
  end
92
94
  post :publish_all
@@ -111,7 +113,11 @@ module Decidim
111
113
 
112
114
  initializer "decidim_assemblies_admin.mount_routes" do
113
115
  Decidim::Core::Engine.routes do
114
- mount Decidim::Assemblies::AdminEngine, at: "/admin", as: "decidim_admin_assemblies"
116
+ extend Decidim::Routes::LocaleRedirects
117
+
118
+ scope "/:locale", **locale_scope_options do
119
+ mount Decidim::Assemblies::AdminEngine, at: "/admin", as: "decidim_admin_assemblies"
120
+ end
115
121
  end
116
122
  end
117
123
 
@@ -48,6 +48,11 @@ module Decidim
48
48
  Decidim.content_blocks.register(:assembly_homepage, :announcement) do |content_block|
49
49
  content_block.cell = "decidim/content_blocks/participatory_space_announcement"
50
50
  content_block.public_name_key = "decidim.content_blocks.announcement.name"
51
+ content_block.settings_form_cell = "decidim/content_blocks/announcement_settings_form"
52
+
53
+ content_block.settings do |settings|
54
+ settings.attribute :announcement, type: :text, translated: true, editor: true, required: true
55
+ end
51
56
  end
52
57
 
53
58
  Decidim.content_blocks.register(:assembly_homepage, :main_data) do |content_block|
@@ -15,29 +15,37 @@ module Decidim
15
15
  isolate_namespace Decidim::Assemblies
16
16
 
17
17
  routes do
18
- get "assemblies/:assembly_id", to: redirect { |params, _request|
19
- assembly = Decidim::Assembly.find(params[:assembly_id])
20
- assembly ? "/assemblies/#{assembly.slug}" : "/404"
21
- }, constraints: { assembly_id: /[0-9]+/ }
22
-
23
- get "/assemblies/:assembly_id/f/:component_id", to: redirect { |params, _request|
24
- assembly = Decidim::Assembly.find(params[:assembly_id])
25
- assembly ? "/assemblies/#{assembly.slug}/f/#{params[:component_id]}" : "/404"
26
- }, constraints: { assembly_id: /[0-9]+/ }
27
-
28
- resources :assemblies, only: [:index, :show], param: :slug, path: "assemblies" do
29
- resources :participatory_space_private_users, only: :index, path: "members"
30
- end
18
+ extend Decidim::Routes::LocaleRedirects
19
+
20
+ scope "/:locale", **locale_scope_options do
21
+ get "assemblies/:assembly_id", to: redirect { |params, _request|
22
+ assembly = Decidim::Assembly.find(params[:assembly_id])
23
+ assembly ? "/#{params[:locale]}/assemblies/#{assembly.slug}" : "/404"
24
+ }, constraints: { assembly_id: /[0-9]+/ }
25
+
26
+ get "/assemblies/:assembly_id/f/:component_id", to: redirect { |params, _request|
27
+ assembly = Decidim::Assembly.find(params[:assembly_id])
28
+ assembly ? "/#{params[:locale]}/assemblies/#{assembly.slug}/f/#{params[:component_id]}" : "/404"
29
+ }, constraints: { assembly_id: /[0-9]+/ }
31
30
 
32
- scope "/assemblies/:assembly_slug/f/:component_id" do
33
- Decidim.component_manifests.each do |manifest|
34
- next unless manifest.engine
31
+ resources :assemblies, only: [:index, :show], param: :slug, path: "assemblies" do
32
+ resources :members, only: :index, path: "members"
33
+ end
34
+
35
+ scope "/assemblies/:assembly_slug/f/:component_id" do
36
+ Decidim.component_manifests.each do |manifest|
37
+ next unless manifest.engine
35
38
 
36
- constraints CurrentComponent.new(manifest) do
37
- mount manifest.engine, at: "/", as: "decidim_assembly_#{manifest.name}"
39
+ constraints CurrentComponent.new(manifest) do
40
+ mount manifest.engine, at: "/", as: "decidim_assembly_#{manifest.name}"
41
+ end
38
42
  end
39
43
  end
40
44
  end
45
+
46
+ get "/assemblies", to: redirect(&locale_redirector("/assemblies"))
47
+
48
+ get "/assemblies/*rest", to: redirect { |params, request| locale_redirector("/assemblies/#{params[:rest]}").call(params, request) }
41
49
  end
42
50
 
43
51
  initializer "decidim_assemblies.mount_routes" do
@@ -54,8 +62,6 @@ module Decidim
54
62
 
55
63
  initializer "decidim_assemblies.register_icons" do
56
64
  Decidim.icons.register(name: "Decidim::Assembly", icon: "government-line", description: "Assembly", category: "activity", engine: :assemblies)
57
- Decidim.icons.register(name: "assembly_type", icon: "group-2-line", description: "Type", category: "assemblies", engine: :assemblies)
58
-
59
65
  Decidim.icons.register(name: "group-2-line", icon: "group-2-line", category: "system", description: "", engine: :assemblies)
60
66
  end
61
67
 
@@ -79,28 +85,6 @@ module Decidim
79
85
  Decidim::Assemblies::Menu.register_home_content_block_menu!
80
86
  end
81
87
 
82
- initializer "decidim_assemblies.view_hooks" do
83
- Decidim.view_hooks.register(:user_profile_bottom, priority: Decidim::ViewHooks::MEDIUM_PRIORITY) do |view_context|
84
- assemblies = OrganizationPublishedAssemblies.new(view_context.current_organization, view_context.current_user)
85
- .query.distinct
86
- .joins(:participatory_space_private_users)
87
- .merge(Decidim::ParticipatorySpacePrivateUser.where(user: view_context.profile_holder))
88
- .reorder(title: :asc)
89
-
90
- next unless assemblies.any?
91
-
92
- # Since this is rendered inside a cell we need to access the parent context in order to render it.
93
- view_context = view_context.controller.view_context
94
-
95
- view_context.render(
96
- partial: "decidim/assemblies/pages/user_profile/member_of",
97
- locals: {
98
- assemblies:
99
- }
100
- )
101
- end
102
- end
103
-
104
88
  initializer "decidim_assemblies.content_blocks" do
105
89
  Decidim::Assemblies::ContentBlocks::RegistryManager.register!
106
90
  end
@@ -122,11 +122,11 @@ module Decidim
122
122
  icon_name: "user-settings-line",
123
123
  if: allowed_to?(:read, :assembly_user_role, assembly: current_participatory_space)
124
124
 
125
- menu.add_item :participatory_space_private_users,
126
- I18n.t("private_users", scope: "decidim.admin.menu.assemblies_submenu"),
127
- decidim_admin_assemblies.participatory_space_private_users_path(current_participatory_space),
128
- icon_name: "spy-line",
129
- if: allowed_to?(:read, :space_private_user, current_participatory_space:)
125
+ menu.add_item :members,
126
+ I18n.t("members", scope: "decidim.admin.menu.assemblies_submenu"),
127
+ decidim_admin_assemblies.members_path(current_participatory_space),
128
+ icon_name: "user-settings-line",
129
+ if: allowed_to?(:read, :space_member, current_participatory_space:)
130
130
 
131
131
  menu.add_item :moderations,
132
132
  I18n.t("moderations", scope: "decidim.admin.menu.assemblies_submenu"),
@@ -13,8 +13,6 @@ Decidim.register_participatory_space(:assemblies) do |participatory_space|
13
13
 
14
14
  participatory_space.query_type = "Decidim::Assemblies::AssemblyType"
15
15
 
16
- participatory_space.breadcrumb_cell = "decidim/assemblies/assembly_dropdown_metadata"
17
-
18
16
  participatory_space.register_resource(:assembly) do |resource|
19
17
  resource.model_class_name = "Decidim::Assembly"
20
18
  resource.card = "decidim/assemblies/assembly"
@@ -60,7 +60,6 @@ module Decidim
60
60
  end,
61
61
  organization:,
62
62
  hero_image: ::Faker::Boolean.boolean(true_ratio: 0.5) ? hero_image : nil, # Keep after organization
63
- banner_image: ::Faker::Boolean.boolean(true_ratio: 0.5) ? banner_image : nil, # Keep after organization
64
63
  promoted: true,
65
64
  published_at: 2.weeks.ago,
66
65
  meta_scope: Decidim::Faker::Localized.word,
@@ -86,7 +85,7 @@ module Decidim
86
85
  internal_organisation: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
87
86
  Decidim::Faker::Localized.paragraph(sentence_count: 3)
88
87
  end,
89
- is_transparent: true,
88
+ access_mode: :open,
90
89
  special_features: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
91
90
  Decidim::Faker::Localized.paragraph(sentence_count: 3)
92
91
  end,