decidim-accountability 0.27.9 → 0.28.0.rc4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/cells/decidim/accountability/content_blocks/highlighted_results_cell.rb +3 -8
- data/app/cells/decidim/accountability/highlighted_results/show.erb +3 -1
- data/app/cells/decidim/accountability/highlighted_results_for_component/show.erb +19 -19
- data/app/cells/decidim/accountability/highlighted_results_for_component_cell.rb +29 -6
- data/app/cells/decidim/accountability/project/show.erb +11 -0
- data/app/cells/decidim/accountability/project/timeline.erb +22 -0
- data/app/cells/decidim/accountability/project_cell.rb +75 -0
- data/app/cells/decidim/accountability/result_activity_cell.rb +1 -4
- data/app/cells/decidim/accountability/result_card_cell.rb +21 -0
- data/app/cells/decidim/accountability/result_cell.rb +2 -2
- data/app/cells/decidim/accountability/result_l/extra_data.erb +3 -0
- data/app/cells/decidim/accountability/result_l_cell.rb +30 -0
- data/app/cells/decidim/accountability/result_metadata/project_aside.erb +6 -0
- data/app/cells/decidim/accountability/result_metadata/show_footer.erb +11 -0
- data/app/cells/decidim/accountability/result_metadata/versions.erb +1 -0
- data/app/cells/decidim/accountability/result_metadata_cell.rb +136 -0
- data/app/cells/decidim/accountability/results/show.erb +7 -0
- data/app/cells/decidim/accountability/results_cell.rb +14 -0
- data/app/cells/decidim/accountability/status/show.erb +9 -0
- data/app/cells/decidim/accountability/status/status.erb +16 -0
- data/app/cells/decidim/accountability/status_cell.rb +91 -0
- data/app/commands/decidim/accountability/admin/import_projects_to_accountability.rb +37 -0
- data/app/controllers/concerns/decidim/accountability/admin/filterable.rb +2 -2
- data/app/controllers/decidim/accountability/admin/import_results_controller.rb +18 -6
- data/app/controllers/decidim/accountability/admin/projects_import_controller.rb +31 -0
- data/app/controllers/decidim/accountability/admin/results_controller.rb +4 -5
- data/app/controllers/decidim/accountability/admin/statuses_controller.rb +3 -3
- data/app/controllers/decidim/accountability/admin/timeline_entries_controller.rb +3 -3
- data/app/controllers/decidim/accountability/results_controller.rb +20 -2
- data/app/events/decidim/accountability/proposal_linked_event.rb +18 -1
- data/app/events/decidim/accountability/result_progress_updated_event.rb +18 -2
- data/app/forms/decidim/accountability/admin/import_results_form.rb +22 -0
- data/app/forms/decidim/accountability/admin/result_import_projects_form.rb +51 -0
- data/app/helpers/decidim/accountability/admin/application_helper.rb +1 -0
- data/app/helpers/decidim/accountability/application_helper.rb +43 -2
- data/app/helpers/decidim/accountability/breadcrumb_helper.rb +10 -0
- data/app/jobs/decidim/accountability/admin/import_projects_job.rb +72 -0
- data/app/mailers/decidim/accountability/import_projects_mailer.rb +25 -0
- data/app/models/decidim/accountability/result.rb +1 -1
- data/app/packs/entrypoints/decidim_accountability.js +4 -1
- data/app/packs/entrypoints/decidim_accountability_admin_imports.js +3 -0
- data/app/packs/images/decidim/accountability/breadcrumb_arrow.svg +3 -0
- data/app/packs/src/decidim/accountability/admin/imports.js +15 -0
- data/app/packs/stylesheets/accountability.scss +169 -0
- data/app/permissions/decidim/accountability/admin/permissions.rb +17 -6
- data/app/presenters/decidim/accountability/admin_log/result_presenter.rb +2 -2
- data/app/presenters/decidim/accountability/admin_log/status_presenter.rb +2 -2
- data/app/presenters/decidim/accountability/admin_log/timeline_entry_presenter.rb +2 -2
- data/app/queries/decidim/accountability/metrics/results_metric_manage.rb +1 -1
- data/app/services/decidim/accountability/results_calculator.rb +1 -1
- data/app/services/decidim/accountability/results_csv_importer.rb +2 -2
- data/app/views/decidim/accountability/admin/import_results/new.html.erb +27 -23
- data/app/views/decidim/accountability/admin/projects_import/new.html.erb +45 -0
- data/app/views/decidim/accountability/admin/results/_form.html.erb +46 -46
- data/app/views/decidim/accountability/admin/results/edit.html.erb +18 -7
- data/app/views/decidim/accountability/admin/results/index.html.erb +102 -91
- data/app/views/decidim/accountability/admin/results/new.html.erb +18 -8
- data/app/views/decidim/accountability/admin/shared/_subnav.html.erb +1 -1
- data/app/views/decidim/accountability/admin/statuses/_form.html.erb +15 -17
- data/app/views/decidim/accountability/admin/statuses/edit.html.erb +16 -6
- data/app/views/decidim/accountability/admin/statuses/index.html.erb +33 -36
- data/app/views/decidim/accountability/admin/statuses/new.html.erb +16 -6
- data/app/views/decidim/accountability/admin/timeline_entries/_form.html.erb +12 -14
- data/app/views/decidim/accountability/admin/timeline_entries/edit.html.erb +17 -6
- data/app/views/decidim/accountability/admin/timeline_entries/index.html.erb +35 -34
- data/app/views/decidim/accountability/admin/timeline_entries/new.html.erb +17 -6
- data/app/views/decidim/accountability/import_projects_mailer/import.html.erb +2 -0
- data/app/views/decidim/accountability/results/_home_categories.html.erb +28 -73
- data/app/views/decidim/accountability/results/_linked_results.html.erb +3 -12
- data/app/views/decidim/accountability/results/_project.html.erb +29 -0
- data/app/views/decidim/accountability/results/_projects_aside.html.erb +40 -0
- data/app/views/decidim/accountability/results/_scope_filters.html.erb +27 -27
- data/app/views/decidim/accountability/results/_search.html.erb +15 -9
- data/app/views/decidim/accountability/results/_stats_box.html.erb +3 -3
- data/app/views/decidim/accountability/results/home.html.erb +34 -8
- data/app/views/decidim/accountability/results/index.html.erb +15 -15
- data/app/views/decidim/accountability/results/index.js.erb +3 -0
- data/app/views/decidim/accountability/results/show.html.erb +9 -10
- data/app/views/decidim/accountability/versions/show.html.erb +13 -10
- data/app/views/decidim/participatory_spaces/_result.html.erb +4 -4
- data/config/assets.rb +2 -2
- data/config/locales/ar.yml +23 -61
- data/config/locales/bg.yml +0 -96
- data/config/locales/ca.yml +54 -31
- data/config/locales/cs.yml +58 -29
- data/config/locales/da.yml +1 -36
- data/config/locales/de.yml +59 -36
- data/config/locales/el.yml +62 -29
- data/config/locales/en.yml +55 -31
- data/config/locales/es-MX.yml +52 -29
- data/config/locales/es-PY.yml +52 -29
- data/config/locales/es.yml +55 -32
- data/config/locales/eu.yml +53 -30
- data/config/locales/fi-plain.yml +51 -28
- data/config/locales/fi.yml +54 -31
- data/config/locales/fr-CA.yml +51 -28
- data/config/locales/fr.yml +52 -29
- data/config/locales/ga-IE.yml +0 -4
- data/config/locales/gl.yml +0 -41
- data/config/locales/hu.yml +41 -29
- data/config/locales/id-ID.yml +1 -30
- data/config/locales/is-IS.yml +0 -32
- data/config/locales/it.yml +0 -43
- data/config/locales/ja.yml +55 -39
- data/config/locales/kaa.yml +20 -1
- data/config/locales/ko.yml +0 -188
- data/config/locales/lb.yml +1 -42
- data/config/locales/lt.yml +60 -41
- data/config/locales/lv.yml +1 -36
- data/config/locales/nl.yml +0 -41
- data/config/locales/no.yml +8 -49
- data/config/locales/pl.yml +17 -61
- data/config/locales/pt-BR.yml +41 -29
- data/config/locales/pt.yml +0 -42
- data/config/locales/ro-RO.yml +39 -66
- data/config/locales/ru.yml +1 -30
- data/config/locales/si-LK.yml +0 -4
- data/config/locales/sk.yml +1 -40
- data/config/locales/sl.yml +0 -11
- data/config/locales/sq-AL.yml +82 -7
- data/config/locales/sr-CS.yml +1 -30
- data/config/locales/sv.yml +36 -51
- data/config/locales/th-TH.yml +0 -140
- data/config/locales/tr-TR.yml +9 -75
- data/config/locales/uk.yml +1 -28
- data/config/locales/zh-CN.yml +1 -36
- data/config/locales/zh-TW.yml +52 -43
- data/lib/decidim/accountability/admin_engine.rb +3 -2
- data/lib/decidim/accountability/component.rb +4 -99
- data/lib/decidim/accountability/engine.rb +9 -1
- data/lib/decidim/accountability/result_serializer.rb +1 -1
- data/lib/decidim/accountability/seeds.rb +115 -0
- data/lib/decidim/accountability/test/factories.rb +18 -29
- data/lib/decidim/accountability/version.rb +1 -1
- data/lib/decidim/api/result_type.rb +1 -0
- metadata +62 -51
- data/app/cells/decidim/accountability/content_blocks/highlighted_results/elements.erb +0 -5
- data/app/cells/decidim/accountability/content_blocks/highlighted_results/heading.erb +0 -1
- data/app/cells/decidim/accountability/result_m/data.erb +0 -23
- data/app/cells/decidim/accountability/result_m/footer.erb +0 -22
- data/app/cells/decidim/accountability/result_m/tags.erb +0 -1
- data/app/cells/decidim/accountability/result_m_cell.rb +0 -37
- data/app/events/decidim/accountability/base_result_event.rb +0 -29
- data/app/packs/stylesheets/decidim/accountability/_accountability.scss +0 -4
- data/app/packs/stylesheets/decidim/accountability/accountability/_cards.scss +0 -11
- data/app/packs/stylesheets/decidim/accountability/accountability/_categories.scss +0 -121
- data/app/packs/stylesheets/decidim/accountability/accountability/_lines_breadcrumb.scss +0 -37
- data/app/packs/stylesheets/decidim/accountability/accountability/_results.scss +0 -148
- data/app/views/decidim/accountability/admin/results/proposals_picker.html.erb +0 -1
- data/app/views/decidim/accountability/result_widgets/show.html.erb +0 -2
- data/app/views/decidim/accountability/results/_home_header.html.erb +0 -23
- data/app/views/decidim/accountability/results/_results_leaf.html.erb +0 -47
- data/app/views/decidim/accountability/results/_results_parent.html.erb +0 -32
- data/app/views/decidim/accountability/results/_show_leaf.html.erb +0 -81
- data/app/views/decidim/accountability/results/_show_parent.html.erb +0 -30
- data/app/views/decidim/accountability/results/_stats.html.erb +0 -15
- data/app/views/decidim/accountability/results/_timeline.html.erb +0 -30
- data/app/views/decidim/accountability/versions/index.html.erb +0 -12
- data/config/locales/he-IL.yml +0 -219
- data/decidim-accountability.gemspec +0 -38
data/config/locales/zh-CN.yml
CHANGED
@@ -35,8 +35,6 @@ zh-CN:
|
|
35
35
|
confirm_destroy: 您确定要删除此 %{name} 吗?
|
36
36
|
destroy: 删除
|
37
37
|
edit: 编辑
|
38
|
-
import_csv: 导入 CSV
|
39
|
-
new: 新建 %{name}
|
40
38
|
preview: 预览
|
41
39
|
timeline_entries: 项目进化
|
42
40
|
title: 行动
|
@@ -46,23 +44,12 @@ zh-CN:
|
|
46
44
|
import_results:
|
47
45
|
new:
|
48
46
|
import: 导入
|
49
|
-
title: 从 CSV 导入结果
|
50
|
-
imports:
|
51
|
-
create:
|
52
|
-
success: 该文件已经开始导入。您将在几分钟内收到一封电子邮件,其导入的结果将会被导入。
|
53
47
|
models:
|
54
48
|
result:
|
55
49
|
name: 结果
|
56
50
|
status:
|
57
51
|
name: 状态
|
58
|
-
timeline_entry:
|
59
|
-
name: 时间线条目
|
60
52
|
results:
|
61
|
-
create:
|
62
|
-
invalid: 创建此结果时出现问题
|
63
|
-
success: 结果已成功创建
|
64
|
-
destroy:
|
65
|
-
success: 结果删除成功
|
66
53
|
edit:
|
67
54
|
title: 编辑结果
|
68
55
|
update: 更新结果
|
@@ -71,18 +58,10 @@ zh-CN:
|
|
71
58
|
new:
|
72
59
|
create: 创建结果
|
73
60
|
title: 新结果
|
74
|
-
update:
|
75
|
-
invalid: 更新此结果时出现问题
|
76
|
-
success: 结果已成功更新
|
77
61
|
shared:
|
78
62
|
subnav:
|
79
63
|
statuses: Statuses
|
80
64
|
statuses:
|
81
|
-
create:
|
82
|
-
invalid: 创建此状态时出现问题
|
83
|
-
success: 状态创建成功
|
84
|
-
destroy:
|
85
|
-
success: 状态删除成功
|
86
65
|
edit:
|
87
66
|
title: 编辑状态
|
88
67
|
update: 更新状态
|
@@ -91,15 +70,7 @@ zh-CN:
|
|
91
70
|
new:
|
92
71
|
create: 创建状态
|
93
72
|
title: 新状态
|
94
|
-
update:
|
95
|
-
invalid: 更新此状态时出现问题
|
96
|
-
success: 状态已更新
|
97
73
|
timeline_entries:
|
98
|
-
create:
|
99
|
-
invalid: 创建此条目时出错
|
100
|
-
success: 条目创建成功
|
101
|
-
destroy:
|
102
|
-
success: 条目删除成功
|
103
74
|
edit:
|
104
75
|
title: 编辑条目
|
105
76
|
update: 更新条目
|
@@ -108,9 +79,6 @@ zh-CN:
|
|
108
79
|
new:
|
109
80
|
create: 创建条目
|
110
81
|
title: 新建条目
|
111
|
-
update:
|
112
|
-
invalid: 更新此条目时出错
|
113
|
-
success: 条目已成功更新
|
114
82
|
admin_log:
|
115
83
|
result:
|
116
84
|
create: "%{user_name} 在 %{resource_name} 创建了结果 %{space_name}"
|
@@ -122,12 +90,9 @@ zh-CN:
|
|
122
90
|
import_mailer:
|
123
91
|
import:
|
124
92
|
errors: 错误
|
125
|
-
errors_present: 导入结果时出现问题
|
126
93
|
row_number: 行
|
127
94
|
subject: 成功导入结果
|
128
95
|
success: 成功导入结果。您可以在管理界面查看结果。
|
129
|
-
last_activity:
|
130
|
-
new_result_at_html: "<span>在 %{link}的新结果</span>"
|
131
96
|
models:
|
132
97
|
result:
|
133
98
|
fields:
|
@@ -151,7 +116,6 @@ zh-CN:
|
|
151
116
|
other: "%{count} 个结果"
|
152
117
|
filters:
|
153
118
|
all: 所有的
|
154
|
-
scopes: 范围
|
155
119
|
home:
|
156
120
|
categories_label: 类别管理
|
157
121
|
subcategories_label: 子类别
|
@@ -165,6 +129,7 @@ zh-CN:
|
|
165
129
|
stats:
|
166
130
|
attendees: 参与者
|
167
131
|
back_to_resource: 返回结果
|
132
|
+
comments: 评论
|
168
133
|
contributions: 二. 捐款
|
169
134
|
last_edited_by: 最后编辑者
|
170
135
|
last_updated_at: 最后更新于
|
data/config/locales/zh-TW.yml
CHANGED
@@ -8,6 +8,7 @@ zh-TW:
|
|
8
8
|
decidim_scope_id: 範圍
|
9
9
|
description: 說明
|
10
10
|
end_date: 結束日期
|
11
|
+
meetings_ids: 包含的會議
|
11
12
|
progress: 進度
|
12
13
|
project_ids: 包含的專案
|
13
14
|
proposals: 包含的建議
|
@@ -38,8 +39,6 @@ zh-TW:
|
|
38
39
|
confirm_destroy: 確定要刪除 %{name} ?
|
39
40
|
destroy: 刪除
|
40
41
|
edit: 編輯
|
41
|
-
import_csv: 匯入CSV
|
42
|
-
new: 新增 %{name}
|
43
42
|
preview: 預覽
|
44
43
|
timeline_entries: 專案評估
|
45
44
|
title: 操作
|
@@ -52,43 +51,53 @@ zh-TW:
|
|
52
51
|
download_export: 匯出成 CSV
|
53
52
|
import: 匯入
|
54
53
|
info: |
|
55
|
-
<p
|
54
|
+
<p>建議透過下面步驟:</p>
|
56
55
|
<ol>
|
57
|
-
<li><a href='%{link_new_status}' target='_blank'
|
58
|
-
<li
|
56
|
+
<li><a href='%{link_new_status}' target='_blank'>建立結果的狀態</a></li>
|
57
|
+
<li><a href='%{link_new_result}' target='_blank'>手動建立至少一個結果</a> 在這個管理介面,這樣一來在匯入前可以先理解需要填寫的格式</li>
|
59
58
|
<li>%{link_export_csv}</li>
|
60
|
-
<li
|
59
|
+
<li>下載後在電腦調整,只能夠調整 CSV 檔案的下面欄位:
|
61
60
|
<ul>
|
62
|
-
<li><b>category/id:</b>
|
63
|
-
<li><b>scope/id:</b>
|
64
|
-
<li><b>parent/id:</b>
|
65
|
-
<li><b>title/en:</b>
|
66
|
-
<li><b>description/en:</b>
|
67
|
-
<li><b>start_date:</b>
|
68
|
-
<li><b>end_date:</b>
|
69
|
-
<li><b>status/id:</b>
|
70
|
-
<li><b>progress:</b>
|
71
|
-
<li><b>proposals_ids:</b>
|
61
|
+
<li><b>category/id:</b> 類別編號</li>
|
62
|
+
<li><b>scope/id:</b> 範圍編號</li>
|
63
|
+
<li><b>parent/id:</b> 上層編號 (相關結果),選填</li>
|
64
|
+
<li><b>title/en:</b> 英文標題,這會依據語言設定不同</li>
|
65
|
+
<li><b>description/en:</b> 英文說明,這會依據語言設定不同</li>
|
66
|
+
<li><b>start_date:</b> 結果開始執行時間 (格式 YYYY-MM-DD)</li>
|
67
|
+
<li><b>end_date:</b> 結果結束執行時間 (格式 YYYY-MM-DD)</li>
|
68
|
+
<li><b>status/id:</b> 這個結果的狀態編號</li>
|
69
|
+
<li><b>progress:</b> 執行率百分比 (從 0 到 100) </li>
|
70
|
+
<li><b>proposals_ids:</b> 相關提案的內部編號 (逗點分隔),會自動轉換為 <span class='attribute-name'>proposal_url</span></li>
|
72
71
|
</ul>
|
73
72
|
</li>
|
74
73
|
</ol>
|
75
|
-
title: 從 CSV 匯入結果
|
76
74
|
imports:
|
77
75
|
create:
|
78
|
-
success: 檔案開始匯入,執行完成後會寄發 email
|
76
|
+
success: 檔案開始匯入,執行完成後會寄發 email 說明匯入結果.
|
79
77
|
models:
|
80
78
|
result:
|
81
79
|
name: 結果
|
82
80
|
status:
|
83
81
|
name: 狀態
|
84
|
-
|
85
|
-
|
82
|
+
projects_import:
|
83
|
+
create:
|
84
|
+
invalid: 匯入專案到結果時發生錯誤,請確實依照說明小心操作,以及確認已經選擇要實做的專案
|
85
|
+
new:
|
86
|
+
create: 匯入
|
87
|
+
import_all_selected_projects: 匯入所有選擇的專案來實現
|
88
|
+
new_items:
|
89
|
+
other: "%{count} 個專案將匯入"
|
90
|
+
no_components: 在這個參與空間沒有預算元件來匯入專案到結果
|
91
|
+
origin_component_id: 原始元件
|
92
|
+
select_component: 選擇一個元件
|
93
|
+
success:
|
94
|
+
other: "%{count} 個專案已經排程匯入,完成後會寄送 email 通知."
|
86
95
|
results:
|
87
96
|
create:
|
88
|
-
invalid:
|
89
|
-
success:
|
97
|
+
invalid: 建立結果時發生錯誤.
|
98
|
+
success: 結果成功建立.
|
90
99
|
destroy:
|
91
|
-
success:
|
100
|
+
success: 結果成功刪除.
|
92
101
|
edit:
|
93
102
|
title: 編輯結果
|
94
103
|
update: 更新結果
|
@@ -98,17 +107,17 @@ zh-TW:
|
|
98
107
|
create: 建立結果
|
99
108
|
title: 新增結果
|
100
109
|
update:
|
101
|
-
invalid:
|
102
|
-
success:
|
110
|
+
invalid: 更新結果時發生錯誤.
|
111
|
+
success: 結果成功更新.
|
103
112
|
shared:
|
104
113
|
subnav:
|
105
114
|
statuses: 狀態
|
106
115
|
statuses:
|
107
116
|
create:
|
108
|
-
invalid:
|
109
|
-
success:
|
117
|
+
invalid: 建立狀態時發生錯誤.
|
118
|
+
success: 狀態成功建立.
|
110
119
|
destroy:
|
111
|
-
success:
|
120
|
+
success: 狀態成功刪除.
|
112
121
|
edit:
|
113
122
|
title: 編輯狀態
|
114
123
|
update: 更新狀態
|
@@ -118,14 +127,14 @@ zh-TW:
|
|
118
127
|
create: 新增狀態
|
119
128
|
title: 新狀態
|
120
129
|
update:
|
121
|
-
invalid:
|
122
|
-
success:
|
130
|
+
invalid: 更新狀態時發生錯誤.
|
131
|
+
success: 狀態成功更新.
|
123
132
|
timeline_entries:
|
124
133
|
create:
|
125
|
-
invalid:
|
126
|
-
success:
|
134
|
+
invalid: 建立資料時發生錯誤.
|
135
|
+
success: 資料成功建立.
|
127
136
|
destroy:
|
128
|
-
success:
|
137
|
+
success: 資料成功刪除.
|
129
138
|
edit:
|
130
139
|
title: 編輯資料
|
131
140
|
update: 更新資料
|
@@ -135,8 +144,8 @@ zh-TW:
|
|
135
144
|
create: 建立資料
|
136
145
|
title: 新資料
|
137
146
|
update:
|
138
|
-
invalid:
|
139
|
-
success:
|
147
|
+
invalid: 更新資料時發生錯誤.
|
148
|
+
success: 資料成功更新.
|
140
149
|
admin_log:
|
141
150
|
result:
|
142
151
|
create: "%{user_name} 建立結果 %{resource_name} 在 %{space_name}"
|
@@ -155,18 +164,22 @@ zh-TW:
|
|
155
164
|
not_found: '資料庫中找不到上一層 (ID: %{id})'
|
156
165
|
content_blocks:
|
157
166
|
highlighted_results:
|
158
|
-
dates: 日期
|
159
167
|
results: 結果
|
160
|
-
unspecified: 未指定
|
161
168
|
import_mailer:
|
162
169
|
import:
|
163
170
|
errors: 錯誤
|
164
|
-
errors_present:
|
171
|
+
errors_present: 匯入結果時發生錯誤.
|
165
172
|
row_number: 列
|
166
173
|
subject: 結果匯入成功
|
167
174
|
success: 結果匯入成功,在管理介面可以檢視。
|
175
|
+
import_projects_mailer:
|
176
|
+
import:
|
177
|
+
added_projects:
|
178
|
+
other: "從專案匯入 %{count} 個結果"
|
179
|
+
subject: 專案匯入成功
|
180
|
+
success: 在元件 %{component_name} 成功匯入專案到結果,可以在管理介面檢視。
|
168
181
|
last_activity:
|
169
|
-
|
182
|
+
new_result: '新結果:'
|
170
183
|
models:
|
171
184
|
result:
|
172
185
|
fields:
|
@@ -189,16 +202,12 @@ zh-TW:
|
|
189
202
|
fields:
|
190
203
|
entry_date: 日期
|
191
204
|
title: 標題
|
192
|
-
result_m:
|
193
|
-
executed: 已執行
|
194
|
-
view: 檢視
|
195
205
|
results:
|
196
206
|
count:
|
197
207
|
results_count:
|
198
208
|
other: "%{count} 個結果"
|
199
209
|
filters:
|
200
210
|
all: 全部
|
201
|
-
scopes: 範圍
|
202
211
|
home:
|
203
212
|
categories_label: 類別
|
204
213
|
subcategories_label: 子類別
|
@@ -16,10 +16,11 @@ module Decidim
|
|
16
16
|
resources :results, except: [:show] do
|
17
17
|
get :proposals_picker, on: :collection
|
18
18
|
|
19
|
-
resources :attachment_collections
|
20
|
-
resources :attachments
|
19
|
+
resources :attachment_collections, except: [:show]
|
20
|
+
resources :attachments, except: [:show]
|
21
21
|
resources :timeline_entries, except: [:show]
|
22
22
|
end
|
23
|
+
resources :projects_import, only: [:new, :create]
|
23
24
|
get :import_results, to: "import_results#new"
|
24
25
|
post :import_results, to: "import_results#create"
|
25
26
|
root to: "results#index"
|
@@ -1,17 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "decidim/components/namer"
|
4
|
-
|
5
3
|
Decidim.register_component(:accountability) do |component|
|
6
4
|
component.engine = Decidim::Accountability::Engine
|
7
5
|
component.admin_engine = Decidim::Accountability::AdminEngine
|
8
6
|
component.icon = "media/images/decidim_accountability.svg"
|
7
|
+
component.icon_key = "bar-chart-line"
|
9
8
|
component.stylesheet = "decidim/accountability/accountability"
|
10
9
|
component.permissions_class_name = "Decidim::Accountability::Permissions"
|
11
10
|
component.query_type = "Decidim::Accountability::AccountabilityType"
|
12
11
|
|
13
12
|
component.on(:before_destroy) do |instance|
|
14
|
-
raise StandardError, "
|
13
|
+
raise StandardError, "Cannot remove this component" if Decidim::Accountability::Result.where(component: instance).any?
|
15
14
|
end
|
16
15
|
|
17
16
|
# These actions permissions can be configured in the admin panel
|
@@ -71,102 +70,8 @@ Decidim.register_component(:accountability) do |component|
|
|
71
70
|
end
|
72
71
|
|
73
72
|
component.seeds do |participatory_space|
|
74
|
-
|
75
|
-
organization: participatory_space.organization,
|
76
|
-
email: "admin@example.org"
|
77
|
-
)
|
78
|
-
|
79
|
-
params = {
|
80
|
-
name: Decidim::Components::Namer.new(participatory_space.organization.available_locales, :accountability).i18n_name,
|
81
|
-
manifest_name: :accountability,
|
82
|
-
published_at: Time.current,
|
83
|
-
participatory_space: participatory_space,
|
84
|
-
settings: {
|
85
|
-
intro: Decidim::Faker::Localized.wrapped("<p>", "</p>") { Decidim::Faker::Localized.sentence(word_count: 4) },
|
86
|
-
categories_label: Decidim::Faker::Localized.word,
|
87
|
-
subcategories_label: Decidim::Faker::Localized.word,
|
88
|
-
heading_parent_level_results: Decidim::Faker::Localized.word,
|
89
|
-
heading_leaf_level_results: Decidim::Faker::Localized.word,
|
90
|
-
scopes_enabled: true,
|
91
|
-
scope_id: participatory_space.scope&.id
|
92
|
-
}
|
93
|
-
}
|
94
|
-
|
95
|
-
component = Decidim.traceability.perform_action!("publish", Decidim::Component, admin_user, visibility: "all") do
|
96
|
-
Decidim::Component.create!(params)
|
97
|
-
end
|
98
|
-
|
99
|
-
5.times do |i|
|
100
|
-
Decidim::Accountability::Status.create!(
|
101
|
-
component: component,
|
102
|
-
name: Decidim::Faker::Localized.word,
|
103
|
-
key: "status_#{i}"
|
104
|
-
)
|
105
|
-
end
|
106
|
-
|
107
|
-
3.times do
|
108
|
-
parent_category = participatory_space.categories.sample
|
109
|
-
categories = [parent_category]
|
73
|
+
require "decidim/accountability/seeds"
|
110
74
|
|
111
|
-
|
112
|
-
categories << Decidim::Category.create!(
|
113
|
-
name: Decidim::Faker::Localized.sentence(word_count: 5),
|
114
|
-
description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
115
|
-
Decidim::Faker::Localized.paragraph(sentence_count: 3)
|
116
|
-
end,
|
117
|
-
parent: parent_category,
|
118
|
-
participatory_space: participatory_space
|
119
|
-
)
|
120
|
-
end
|
121
|
-
|
122
|
-
categories.each do |category|
|
123
|
-
result = Decidim.traceability.create!(
|
124
|
-
Decidim::Accountability::Result,
|
125
|
-
admin_user,
|
126
|
-
{
|
127
|
-
component: component,
|
128
|
-
scope: participatory_space.organization.scopes.sample,
|
129
|
-
category: category,
|
130
|
-
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
131
|
-
description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
132
|
-
Decidim::Faker::Localized.paragraph(sentence_count: 3)
|
133
|
-
end
|
134
|
-
},
|
135
|
-
visibility: "all"
|
136
|
-
)
|
137
|
-
|
138
|
-
Decidim::Comments::Seed.comments_for(result)
|
139
|
-
|
140
|
-
3.times do
|
141
|
-
child_result = Decidim.traceability.create!(
|
142
|
-
Decidim::Accountability::Result,
|
143
|
-
admin_user,
|
144
|
-
{
|
145
|
-
component: component,
|
146
|
-
parent: result,
|
147
|
-
start_date: Time.zone.today,
|
148
|
-
end_date: Time.zone.today + 10,
|
149
|
-
status: Decidim::Accountability::Status.all.sample,
|
150
|
-
progress: rand(1..100),
|
151
|
-
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
152
|
-
description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
153
|
-
Decidim::Faker::Localized.paragraph(sentence_count: 3)
|
154
|
-
end
|
155
|
-
},
|
156
|
-
visibility: "all"
|
157
|
-
)
|
158
|
-
|
159
|
-
rand(0..5).times do |i|
|
160
|
-
child_result.timeline_entries.create!(
|
161
|
-
entry_date: child_result.start_date + i.days,
|
162
|
-
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
163
|
-
description: Decidim::Faker::Localized.paragraph(sentence_count: 1)
|
164
|
-
)
|
165
|
-
end
|
166
|
-
|
167
|
-
Decidim::Comments::Seed.comments_for(child_result)
|
168
|
-
end
|
169
|
-
end
|
170
|
-
end
|
75
|
+
Decidim::Accountability::Seeds.new(participatory_space:).call
|
171
76
|
end
|
172
77
|
end
|
@@ -12,11 +12,19 @@ module Decidim
|
|
12
12
|
|
13
13
|
routes do
|
14
14
|
resources :results, only: [:index, :show] do
|
15
|
-
resources :versions, only: [:show
|
15
|
+
resources :versions, only: [:show]
|
16
16
|
end
|
17
17
|
root to: "results#home"
|
18
18
|
end
|
19
19
|
|
20
|
+
initializer "decidim_accountability.register_icons" do
|
21
|
+
Decidim.icons.register(name: "Decidim::Accountability::Result", icon: "briefcase-2-line", description: "Result / project (Accountability)", category: "activity",
|
22
|
+
engine: :accountability)
|
23
|
+
|
24
|
+
Decidim.icons.register(name: "focus-2-line", icon: "focus-2-line", category: "system", description: "", engine: :accountability)
|
25
|
+
Decidim.icons.register(name: "briefcase-2-line", icon: "briefcase-2-line", category: "system", description: "", engine: :accountability)
|
26
|
+
end
|
27
|
+
|
20
28
|
initializer "decidim_accountability.view_hooks" do
|
21
29
|
Decidim.view_hooks.register(:participatory_space_highlighted_elements, priority: Decidim::ViewHooks::LOW_PRIORITY) do |view_context|
|
22
30
|
view_context.cell("decidim/accountability/highlighted_results", view_context.current_participatory_space)
|
@@ -0,0 +1,115 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "decidim/components/namer"
|
4
|
+
|
5
|
+
module Decidim
|
6
|
+
module Accountability
|
7
|
+
class Seeds
|
8
|
+
attr_reader :participatory_space
|
9
|
+
|
10
|
+
def initialize(participatory_space:)
|
11
|
+
@participatory_space = participatory_space
|
12
|
+
end
|
13
|
+
|
14
|
+
def call
|
15
|
+
admin_user = Decidim::User.find_by(
|
16
|
+
organization: participatory_space.organization,
|
17
|
+
email: "admin@example.org"
|
18
|
+
)
|
19
|
+
|
20
|
+
params = {
|
21
|
+
name: Decidim::Components::Namer.new(participatory_space.organization.available_locales, :accountability).i18n_name,
|
22
|
+
manifest_name: :accountability,
|
23
|
+
published_at: Time.current,
|
24
|
+
participatory_space:,
|
25
|
+
settings: {
|
26
|
+
intro: Decidim::Faker::Localized.wrapped("<p>", "</p>") { Decidim::Faker::Localized.sentence(word_count: 4) },
|
27
|
+
categories_label: Decidim::Faker::Localized.word,
|
28
|
+
subcategories_label: Decidim::Faker::Localized.word,
|
29
|
+
heading_parent_level_results: Decidim::Faker::Localized.word,
|
30
|
+
heading_leaf_level_results: Decidim::Faker::Localized.word,
|
31
|
+
scopes_enabled: true,
|
32
|
+
scope_id: participatory_space.scope&.id
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
component = Decidim.traceability.perform_action!("publish", Decidim::Component, admin_user, visibility: "all") do
|
37
|
+
Decidim::Component.create!(params)
|
38
|
+
end
|
39
|
+
|
40
|
+
5.times do |i|
|
41
|
+
Decidim::Accountability::Status.create!(
|
42
|
+
component:,
|
43
|
+
name: Decidim::Faker::Localized.word,
|
44
|
+
key: "status_#{i}"
|
45
|
+
)
|
46
|
+
end
|
47
|
+
|
48
|
+
3.times do
|
49
|
+
parent_category = participatory_space.categories.sample
|
50
|
+
categories = [parent_category]
|
51
|
+
|
52
|
+
2.times do
|
53
|
+
categories << Decidim::Category.create!(
|
54
|
+
name: Decidim::Faker::Localized.sentence(word_count: 5),
|
55
|
+
description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
56
|
+
Decidim::Faker::Localized.paragraph(sentence_count: 3)
|
57
|
+
end,
|
58
|
+
parent: parent_category,
|
59
|
+
participatory_space:
|
60
|
+
)
|
61
|
+
end
|
62
|
+
|
63
|
+
categories.each do |category|
|
64
|
+
result = Decidim.traceability.create!(
|
65
|
+
Decidim::Accountability::Result,
|
66
|
+
admin_user,
|
67
|
+
{
|
68
|
+
component:,
|
69
|
+
scope: participatory_space.organization.scopes.sample,
|
70
|
+
category:,
|
71
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
72
|
+
description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
73
|
+
Decidim::Faker::Localized.paragraph(sentence_count: 3)
|
74
|
+
end
|
75
|
+
},
|
76
|
+
visibility: "all"
|
77
|
+
)
|
78
|
+
|
79
|
+
Decidim::Comments::Seed.comments_for(result)
|
80
|
+
|
81
|
+
3.times do
|
82
|
+
child_result = Decidim.traceability.create!(
|
83
|
+
Decidim::Accountability::Result,
|
84
|
+
admin_user,
|
85
|
+
{
|
86
|
+
component:,
|
87
|
+
parent: result,
|
88
|
+
start_date: Time.zone.today,
|
89
|
+
end_date: Time.zone.today + 10,
|
90
|
+
status: Decidim::Accountability::Status.all.sample,
|
91
|
+
progress: rand(1..100),
|
92
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
93
|
+
description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
94
|
+
Decidim::Faker::Localized.paragraph(sentence_count: 3)
|
95
|
+
end
|
96
|
+
},
|
97
|
+
visibility: "all"
|
98
|
+
)
|
99
|
+
|
100
|
+
rand(0..5).times do |i|
|
101
|
+
child_result.timeline_entries.create!(
|
102
|
+
entry_date: child_result.start_date + i.days,
|
103
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
104
|
+
description: Decidim::Faker::Localized.paragraph(sentence_count: 1)
|
105
|
+
)
|
106
|
+
end
|
107
|
+
|
108
|
+
Decidim::Comments::Seed.comments_for(child_result)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "decidim/components/namer"
|
3
4
|
require "decidim/faker/localized"
|
4
5
|
require "decidim/dev"
|
5
6
|
|
@@ -8,19 +9,16 @@ require "decidim/participatory_processes/test/factories"
|
|
8
9
|
|
9
10
|
FactoryBot.define do
|
10
11
|
factory :accountability_component, parent: :component do
|
11
|
-
|
12
|
-
skip_injection { false }
|
13
|
-
end
|
14
|
-
name { generate_component_name(participatory_space.organization.available_locales, :accountability, skip_injection: skip_injection) }
|
12
|
+
name { Decidim::Components::Namer.new(participatory_space.organization.available_locales, :accountability).i18n_name }
|
15
13
|
manifest_name { :accountability }
|
16
|
-
participatory_space { create(:participatory_process, :with_steps, organization:
|
14
|
+
participatory_space { create(:participatory_process, :with_steps, organization:) }
|
17
15
|
settings do
|
18
16
|
{
|
19
|
-
intro:
|
20
|
-
categories_label:
|
21
|
-
subcategories_label:
|
22
|
-
heading_parent_level_results:
|
23
|
-
heading_leaf_level_results:
|
17
|
+
intro: Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title },
|
18
|
+
categories_label: Decidim::Faker::Localized.word,
|
19
|
+
subcategories_label: Decidim::Faker::Localized.word,
|
20
|
+
heading_parent_level_results: Decidim::Faker::Localized.word,
|
21
|
+
heading_leaf_level_results: Decidim::Faker::Localized.word,
|
24
22
|
scopes_enabled: true,
|
25
23
|
scope_id: participatory_space.scope&.id
|
26
24
|
}
|
@@ -28,36 +26,27 @@ FactoryBot.define do
|
|
28
26
|
end
|
29
27
|
|
30
28
|
factory :status, class: "Decidim::Accountability::Status" do
|
31
|
-
|
32
|
-
skip_injection { false }
|
33
|
-
end
|
34
|
-
component { create(:accountability_component, skip_injection: skip_injection) }
|
29
|
+
component { create(:accountability_component) }
|
35
30
|
sequence(:key) { |n| "status_#{n}" }
|
36
|
-
name {
|
37
|
-
description {
|
31
|
+
name { Decidim::Faker::Localized.word }
|
32
|
+
description { generate_localized_title }
|
38
33
|
progress { rand(1..100) }
|
39
34
|
end
|
40
35
|
|
41
36
|
factory :result, class: "Decidim::Accountability::Result" do
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
component { create(:accountability_component, skip_injection: skip_injection) }
|
46
|
-
title { generate_localized_title(:result_title, skip_injection: skip_injection) }
|
47
|
-
description { generate_localized_description(:result_description, skip_injection: skip_injection) }
|
37
|
+
component { create(:accountability_component) }
|
38
|
+
title { generate_localized_title }
|
39
|
+
description { Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title } }
|
48
40
|
start_date { "12/7/2017" }
|
49
41
|
end_date { "30/9/2017" }
|
50
|
-
status { create :status, component:
|
42
|
+
status { create :status, component: }
|
51
43
|
progress { rand(1..100) }
|
52
44
|
end
|
53
45
|
|
54
46
|
factory :timeline_entry, class: "Decidim::Accountability::TimelineEntry" do
|
55
|
-
|
56
|
-
skip_injection { false }
|
57
|
-
end
|
58
|
-
result { create(:result, skip_injection: skip_injection) }
|
47
|
+
result { create(:result) }
|
59
48
|
entry_date { "12/7/2017" }
|
60
|
-
title { generate_localized_title
|
61
|
-
description { generate_localized_title
|
49
|
+
title { generate_localized_title }
|
50
|
+
description { generate_localized_title }
|
62
51
|
end
|
63
52
|
end
|