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.
- checksums.yaml +4 -4
- data/README.md +4 -12
- data/app/cells/decidim/assemblies/content_blocks/main_data_cell.rb +1 -0
- data/app/commands/decidim/assemblies/admin/create_assembly.rb +4 -4
- data/app/commands/decidim/assemblies/admin/duplicate_assembly.rb +1 -2
- data/app/commands/decidim/assemblies/admin/update_assembly.rb +3 -3
- data/app/controllers/concerns/decidim/assemblies/admin/filterable.rb +6 -2
- data/app/controllers/concerns/decidim/assemblies/assembly_breadcrumb.rb +0 -3
- data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +2 -2
- data/app/controllers/decidim/assemblies/admin/assembly_duplicates_controller.rb +1 -1
- data/app/controllers/decidim/assemblies/admin/assembly_imports_controller.rb +1 -1
- data/app/controllers/decidim/assemblies/admin/concerns/assembly_admin.rb +1 -0
- data/app/controllers/decidim/assemblies/admin/members_controller.rb +14 -0
- data/app/controllers/decidim/assemblies/admin/members_csv_imports_controller.rb +22 -0
- data/app/controllers/decidim/assemblies/{participatory_space_private_users_controller.rb → members_controller.rb} +2 -2
- data/app/forms/decidim/assemblies/admin/assembly_form.rb +9 -6
- data/app/helpers/decidim/assemblies/assemblies_helper.rb +2 -2
- data/app/helpers/decidim/assemblies/filter_assemblies_helper.rb +2 -1
- data/app/models/decidim/assembly.rb +12 -15
- data/app/packs/src/decidim/assemblies/controllers/assembly_admin/assembly_admin.test.js +1 -130
- data/app/packs/src/decidim/assemblies/controllers/assembly_admin/controller.js +0 -28
- data/app/permissions/decidim/assemblies/permissions.rb +9 -9
- data/app/presenters/decidim/assemblies/admin_log/assembly_presenter.rb +1 -2
- data/app/presenters/decidim/assemblies/assembly_presenter.rb +0 -4
- data/app/queries/decidim/assemblies/admin/admin_users.rb +1 -1
- data/app/serializers/decidim/assemblies/assembly_importer.rb +10 -13
- data/app/serializers/decidim/assemblies/assembly_serializer.rb +1 -1
- data/app/serializers/decidim/assemblies/open_data_assembly_serializer.rb +2 -8
- data/app/views/decidim/assemblies/admin/assemblies/_assemblies_thead.html.erb +1 -1
- data/app/views/decidim/assemblies/admin/assemblies/_assembly_row.html.erb +5 -6
- data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +33 -17
- data/app/views/decidim/assemblies/admin/assemblies/edit.html.erb +3 -2
- data/app/views/decidim/assemblies/admin/assemblies/index.html.erb +2 -1
- data/app/views/decidim/assemblies/admin/assemblies/manage_trash.html.erb +2 -2
- data/app/views/decidim/assemblies/admin/assemblies/new.html.erb +2 -2
- data/app/views/decidim/assemblies/admin/assembly_duplicates/new.html.erb +2 -2
- data/app/views/decidim/assemblies/admin/assembly_imports/new.html.erb +2 -2
- data/app/views/decidim/assemblies/admin/assembly_user_roles/edit.html.erb +2 -2
- data/app/views/decidim/assemblies/admin/assembly_user_roles/index.html.erb +2 -2
- data/app/views/decidim/assemblies/admin/assembly_user_roles/new.html.erb +2 -2
- data/app/views/decidim/assemblies/assemblies/show.html.erb +9 -3
- data/app/views/decidim/assemblies/members/index.html.erb +24 -0
- data/config/locales/ar.yml +0 -25
- data/config/locales/bg.yml +0 -25
- data/config/locales/bs-BA.yml +0 -7
- data/config/locales/ca-IT.yml +36 -34
- data/config/locales/ca.yml +36 -34
- data/config/locales/cs.yml +36 -34
- data/config/locales/de.yml +25 -33
- data/config/locales/el.yml +0 -25
- data/config/locales/en.yml +36 -34
- data/config/locales/es-MX.yml +36 -34
- data/config/locales/es-PY.yml +36 -34
- data/config/locales/es.yml +36 -34
- data/config/locales/eu.yml +36 -34
- data/config/locales/fi-plain.yml +36 -34
- data/config/locales/fi.yml +36 -34
- data/config/locales/fr-CA.yml +34 -34
- data/config/locales/fr.yml +34 -34
- data/config/locales/ga-IE.yml +0 -11
- data/config/locales/gl.yml +0 -23
- data/config/locales/he-IL.yml +0 -10
- data/config/locales/hu.yml +0 -25
- data/config/locales/id-ID.yml +0 -21
- data/config/locales/is-IS.yml +0 -8
- data/config/locales/it.yml +0 -27
- data/config/locales/ja.yml +23 -34
- data/config/locales/ko.yml +0 -8
- data/config/locales/lb.yml +0 -23
- data/config/locales/lt.yml +0 -24
- data/config/locales/lv.yml +0 -24
- data/config/locales/nl.yml +0 -25
- data/config/locales/no.yml +0 -25
- data/config/locales/pl.yml +0 -25
- data/config/locales/pt-BR.yml +4 -27
- data/config/locales/pt.yml +0 -27
- data/config/locales/ro-RO.yml +2 -24
- data/config/locales/ru.yml +0 -14
- data/config/locales/sk.yml +36 -34
- data/config/locales/sl.yml +0 -10
- data/config/locales/sq-AL.yml +0 -16
- data/config/locales/sr-CS.yml +0 -7
- data/config/locales/sv.yml +16 -28
- data/config/locales/tr-TR.yml +0 -25
- data/config/locales/uk.yml +0 -14
- data/config/locales/zh-CN.yml +0 -24
- data/config/locales/zh-TW.yml +0 -25
- data/db/data/20260104094930_remove_assemblies_types_references.rb +25 -0
- data/db/data/20260111185230_replace_legacy_fields_to_access_mode_for_assemblies.rb +25 -0
- data/db/data/20260210195653_move_announcement_to_content_block_on_assemblies.rb +40 -0
- data/db/migrate/20180226103942_add_parent_child_relation_to_assemblies.rb +4 -4
- data/db/migrate/20190215093700_reset_negative_children_count_counters.rb +6 -2
- data/db/migrate/20210310120444_add_followable_counter_cache_to_assemblies.rb +6 -2
- data/db/migrate/20251112114736_remove_legacy_images_from_assemblies_module.rb +8 -0
- data/db/migrate/20251205120000_add_has_members_to_decidim_assemblies.rb +7 -0
- data/db/migrate/20260104093601_remove_assemblies_types.rb +12 -0
- data/db/migrate/20260111120000_add_access_mode_to_assemblies.rb +11 -0
- data/decidim-assemblies.gemspec +8 -9
- data/lib/decidim/api/assembly_type.rb +1 -8
- data/lib/decidim/assemblies/admin_engine.rb +10 -4
- data/lib/decidim/assemblies/content_blocks/registry_manager.rb +5 -0
- data/lib/decidim/assemblies/engine.rb +26 -42
- data/lib/decidim/assemblies/menu.rb +5 -5
- data/lib/decidim/assemblies/participatory_space.rb +0 -2
- data/lib/decidim/assemblies/seeds.rb +1 -2
- data/lib/decidim/assemblies/test/factories.rb +8 -20
- data/lib/decidim/assemblies/version.rb +1 -1
- metadata +25 -30
- data/app/cells/decidim/assemblies/assembly_dropdown_metadata_cell.rb +0 -19
- data/app/commands/decidim/assemblies/admin/create_assemblies_type.rb +0 -17
- data/app/commands/decidim/assemblies/admin/update_assemblies_type.rb +0 -13
- data/app/controllers/decidim/assemblies/admin/participatory_space_private_users_controller.rb +0 -22
- data/app/controllers/decidim/assemblies/admin/participatory_space_private_users_csv_imports_controller.rb +0 -22
- data/app/forms/decidim/assemblies/admin/assemblies_type_form.rb +0 -17
- data/app/models/decidim/assemblies_type.rb +0 -27
- data/app/presenters/decidim/assemblies/admin_log/assemblies_type_presenter.rb +0 -43
- data/app/presenters/decidim/log/value_types/assembly_type_presenter.rb +0 -29
- data/app/queries/decidim/assemblies/filtered_assemblies.rb +0 -22
- data/app/views/decidim/assemblies/pages/user_profile/_member_of.html.erb +0 -9
- data/app/views/decidim/assemblies/participatory_space_private_users/index.html.erb +0 -23
data/config/locales/zh-CN.yml
CHANGED
|
@@ -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:
|
data/config/locales/zh-TW.yml
CHANGED
|
@@ -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
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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 =
|
|
6
|
-
ids.each { |id|
|
|
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
|
-
|
|
10
|
-
|
|
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,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
|
data/decidim-assemblies.gemspec
CHANGED
|
@@ -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
|
-
|
|
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.
|
|
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",
|
|
32
|
+
s.add_dependency "decidim-core", version
|
|
34
33
|
|
|
35
|
-
s.add_development_dependency "decidim-admin",
|
|
36
|
-
s.add_development_dependency "decidim-dev",
|
|
37
|
-
s.add_development_dependency "decidim-meetings",
|
|
38
|
-
s.add_development_dependency "decidim-proposals",
|
|
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 :
|
|
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 :
|
|
86
|
+
resources :members, controller: "members" do
|
|
85
87
|
member do
|
|
86
|
-
post :resend_invitation, to: "
|
|
88
|
+
post :resend_invitation, to: "members#resend_invitation"
|
|
87
89
|
end
|
|
88
90
|
collection do
|
|
89
|
-
resource :
|
|
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
|
-
|
|
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
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
37
|
-
|
|
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 :
|
|
126
|
-
I18n.t("
|
|
127
|
-
decidim_admin_assemblies.
|
|
128
|
-
icon_name: "
|
|
129
|
-
if: allowed_to?(:read, :
|
|
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
|
-
|
|
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,
|