decidim-initiatives 0.30.2 → 0.31.0.rc1

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 (146) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +46 -9
  3. data/app/cells/decidim/initiatives/content_blocks/highlighted_initiatives_settings_form/show.erb +7 -2
  4. data/app/cells/decidim/initiatives/initiative_g_cell.rb +5 -1
  5. data/app/commands/decidim/initiatives/admin/publish_initiative.rb +1 -5
  6. data/app/commands/decidim/initiatives/admin/update_initiative.rb +1 -2
  7. data/app/commands/decidim/initiatives/create_initiative.rb +0 -1
  8. data/app/commands/decidim/initiatives/update_initiative.rb +1 -3
  9. data/app/commands/decidim/initiatives/vote_initiative.rb +1 -11
  10. data/app/controllers/concerns/decidim/initiatives/has_signature_workflow.rb +36 -0
  11. data/app/controllers/concerns/decidim/initiatives/needs_initiative.rb +1 -12
  12. data/app/controllers/decidim/initiatives/admin/initiatives_controller.rb +2 -2
  13. data/app/controllers/decidim/initiatives/admin/initiatives_settings_controller.rb +1 -1
  14. data/app/controllers/decidim/initiatives/admin/initiatives_type_scopes_controller.rb +2 -2
  15. data/app/controllers/decidim/initiatives/admin/initiatives_types_controller.rb +2 -2
  16. data/app/controllers/decidim/initiatives/committee_requests_controller.rb +10 -2
  17. data/app/controllers/decidim/initiatives/create_initiative_controller.rb +84 -18
  18. data/app/controllers/decidim/initiatives/initiative_signatures_controller.rb +133 -42
  19. data/app/controllers/decidim/initiatives/initiative_votes_controller.rb +3 -2
  20. data/app/controllers/decidim/initiatives/initiatives_controller.rb +21 -2
  21. data/app/forms/decidim/initiatives/admin/initiative_form.rb +0 -1
  22. data/app/forms/decidim/initiatives/initiative_form.rb +0 -3
  23. data/app/helpers/decidim/initiatives/application_helper.rb +2 -0
  24. data/app/helpers/decidim/initiatives/initiatives_helper.rb +0 -1
  25. data/app/models/decidim/initiative.rb +7 -31
  26. data/app/models/decidim/initiatives_committee_member.rb +1 -1
  27. data/app/models/decidim/initiatives_type.rb +5 -2
  28. data/app/models/decidim/initiatives_vote.rb +2 -2
  29. data/app/packs/entrypoints/decidim_initiatives.js +1 -1
  30. data/app/packs/entrypoints/decidim_initiatives_admin.scss +1 -1
  31. data/app/packs/src/decidim/initiatives/admin/initiatives_types.js +2 -11
  32. data/app/packs/src/decidim/initiatives/admin/invite_users.js +1 -1
  33. data/app/packs/src/decidim/initiatives/application.js +1 -1
  34. data/app/packs/src/decidim/initiatives/check_code.js +114 -0
  35. data/app/packs/src/decidim/initiatives/initiative_creation_wizard.js +16 -0
  36. data/app/packs/src/decidim/initiatives/scoped_type.js +1 -1
  37. data/app/packs/stylesheets/initiatives.scss +16 -2
  38. data/app/permissions/decidim/initiatives/admin/permissions.rb +1 -4
  39. data/app/permissions/decidim/initiatives/permissions.rb +26 -16
  40. data/app/presenters/decidim/initiative_presenter.rb +12 -6
  41. data/app/presenters/decidim/initiatives/admin_log/initiative_presenter.rb +1 -2
  42. data/app/queries/decidim/initiatives/initiatives_stats_followers_count.rb +14 -0
  43. data/app/queries/decidim/initiatives/initiatives_stats_participants_count.rb +14 -0
  44. data/app/serializers/decidim/initiatives/open_data_initiative_serializer.rb +0 -1
  45. data/app/services/decidim/initiatives/data_encryptor.rb +1 -1
  46. data/app/services/decidim/initiatives/legacy_signature_handler.rb +25 -0
  47. data/app/services/decidim/initiatives/progress_notifier.rb +1 -7
  48. data/app/services/decidim/initiatives/signature_handler.rb +248 -0
  49. data/app/services/decidim/initiatives/status_change_notifier.rb +1 -7
  50. data/app/views/decidim/initiatives/admin/committee_requests/index.html.erb +29 -11
  51. data/app/views/decidim/initiatives/admin/exports/_dropdown.html.erb +17 -20
  52. data/app/views/decidim/initiatives/admin/initiatives/_form.html.erb +7 -13
  53. data/app/views/decidim/initiatives/admin/initiatives/_initiative_attachments.erb +2 -2
  54. data/app/views/decidim/initiatives/admin/initiatives/index.html.erb +76 -47
  55. data/app/views/decidim/initiatives/admin/initiatives_types/_form.html.erb +13 -21
  56. data/app/views/decidim/initiatives/admin/initiatives_types/_initiative_type_scopes.html.erb +28 -12
  57. data/app/views/decidim/initiatives/admin/initiatives_types/index.html.erb +33 -15
  58. data/app/views/decidim/initiatives/create_initiative/_committee_member.html.erb +27 -0
  59. data/app/views/decidim/initiatives/create_initiative/_return_to_initiatives_button.html.erb +3 -0
  60. data/app/views/decidim/initiatives/create_initiative/_send_to_technical_validation_button.html.erb +10 -0
  61. data/app/views/decidim/initiatives/create_initiative/_share_committee_link.html.erb +5 -1
  62. data/app/views/decidim/initiatives/create_initiative/fill_data.html.erb +7 -11
  63. data/app/views/decidim/initiatives/create_initiative/finish.html.erb +16 -13
  64. data/app/views/decidim/initiatives/create_initiative/promotal_committee.html.erb +33 -6
  65. data/app/views/decidim/initiatives/create_initiative/select_initiative_type.html.erb +40 -26
  66. data/app/views/decidim/initiatives/initiative_signatures/_sms_code_form.html.erb +22 -0
  67. data/app/views/decidim/initiatives/initiative_signatures/_sms_phone_number_form.html.erb +13 -0
  68. data/app/views/decidim/initiatives/initiative_signatures/fill_personal_data.html.erb +23 -22
  69. data/app/views/decidim/initiatives/initiative_signatures/finish.html.erb +17 -5
  70. data/app/views/decidim/initiatives/initiative_signatures/sms_code.html.erb +6 -8
  71. data/app/views/decidim/initiatives/initiative_signatures/sms_phone_number.html.erb +3 -8
  72. data/app/views/decidim/initiatives/initiative_signatures/update_buttons_and_counters.js.erb +3 -14
  73. data/app/views/decidim/initiatives/initiative_votes/update_buttons_and_counters.js.erb +3 -14
  74. data/app/views/decidim/initiatives/initiatives/_committee_members.html.erb +1 -1
  75. data/app/views/decidim/initiatives/initiatives/_form.html.erb +1 -3
  76. data/app/views/decidim/initiatives/initiatives/_new_initiative_button.html.erb +10 -3
  77. data/app/views/decidim/initiatives/initiatives/_pending_initiatives.html.erb +5 -0
  78. data/app/views/decidim/initiatives/initiatives/index.html.erb +8 -0
  79. data/app/views/decidim/initiatives/initiatives/show.html.erb +2 -2
  80. data/app/views/layouts/decidim/_initiative_signature_creation_header.html.erb +20 -2
  81. data/app/views/layouts/decidim/admin/_manage_initiatives.html.erb +1 -1
  82. data/app/views/layouts/decidim/initiative_signature_creation.html.erb +3 -1
  83. data/config/assets.rb +2 -2
  84. data/config/locales/ar.yml +0 -45
  85. data/config/locales/bg.yml +0 -54
  86. data/config/locales/ca-IT.yml +99 -51
  87. data/config/locales/ca.yml +99 -51
  88. data/config/locales/cs.yml +93 -54
  89. data/config/locales/de.yml +99 -51
  90. data/config/locales/el.yml +0 -45
  91. data/config/locales/en.yml +99 -51
  92. data/config/locales/es-MX.yml +99 -51
  93. data/config/locales/es-PY.yml +99 -51
  94. data/config/locales/es.yml +99 -51
  95. data/config/locales/eu.yml +99 -51
  96. data/config/locales/fi-plain.yml +99 -51
  97. data/config/locales/fi.yml +99 -51
  98. data/config/locales/fr-CA.yml +44 -51
  99. data/config/locales/fr.yml +44 -51
  100. data/config/locales/ga-IE.yml +0 -17
  101. data/config/locales/gl.yml +0 -41
  102. data/config/locales/hu.yml +0 -54
  103. data/config/locales/id-ID.yml +0 -40
  104. data/config/locales/is-IS.yml +0 -22
  105. data/config/locales/it.yml +0 -53
  106. data/config/locales/ja.yml +98 -49
  107. data/config/locales/lb.yml +0 -50
  108. data/config/locales/lt.yml +0 -56
  109. data/config/locales/lv.yml +0 -46
  110. data/config/locales/nl.yml +0 -47
  111. data/config/locales/no.yml +0 -53
  112. data/config/locales/pl.yml +0 -56
  113. data/config/locales/pt-BR.yml +0 -53
  114. data/config/locales/pt.yml +0 -53
  115. data/config/locales/ro-RO.yml +92 -50
  116. data/config/locales/ru.yml +0 -25
  117. data/config/locales/sk.yml +0 -43
  118. data/config/locales/sl.yml +0 -1
  119. data/config/locales/sv.yml +10 -53
  120. data/config/locales/tr-TR.yml +0 -53
  121. data/config/locales/uk.yml +0 -25
  122. data/config/locales/zh-CN.yml +0 -45
  123. data/config/locales/zh-TW.yml +0 -53
  124. data/db/migrate/20250605104500_remove_hashtag_column_initiatives.rb +7 -0
  125. data/lib/decidim/api/initiative_api_type.rb +3 -0
  126. data/lib/decidim/api/initiative_type.rb +23 -4
  127. data/lib/decidim/exporters/initiative_votes_pdf.rb +1 -1
  128. data/lib/decidim/initiatives/default_signature_authorizer.rb +17 -0
  129. data/lib/decidim/initiatives/engine.rb +17 -14
  130. data/lib/decidim/initiatives/participatory_space.rb +15 -1
  131. data/lib/decidim/initiatives/seeds.rb +1 -2
  132. data/lib/decidim/initiatives/signature_workflow_manifest.rb +176 -0
  133. data/lib/decidim/initiatives/signatures.rb +12 -0
  134. data/lib/decidim/initiatives/test/factories.rb +7 -7
  135. data/lib/decidim/initiatives/test/initiatives_signatures_test_helpers.rb +19 -0
  136. data/lib/decidim/initiatives/validatable_authorizations.rb +83 -0
  137. data/lib/decidim/initiatives/version.rb +1 -1
  138. data/lib/decidim/initiatives.rb +23 -12
  139. metadata +33 -21
  140. data/app/events/decidim/initiatives/endorse_initiative_event.rb +0 -13
  141. data/app/forms/decidim/initiatives/vote_form.rb +0 -208
  142. data/app/packs/src/decidim/initiatives/identity_selector_dialog.js +0 -14
  143. data/app/services/decidim/initiatives/pdf_signature_example.rb +0 -110
  144. data/app/views/decidim/initiatives/initiative_signatures/_wizard_steps.html.erb +0 -15
  145. data/app/views/decidim/initiatives/initiatives/_interactions.html.erb +0 -10
  146. data/app/views/layouts/decidim/_initiative_header.html.erb +0 -27
@@ -3,7 +3,6 @@ tr:
3
3
  activemodel:
4
4
  attributes:
5
5
  initiative:
6
- decidim_user_group_id: Yazar
7
6
  description: Açıklama
8
7
  offline_votes: Şahsen imzalar
9
8
  offline_votes_for_scope: '%{scope_name} için şahsen imzalar'
@@ -27,7 +26,6 @@ tr:
27
26
  collect_user_extra_fields: İmzada katılımcıya ait kişisel verileri toplayın
28
27
  custom_signature_end_date_enabled: Yazarların imza toplama süresinin sonunu seçmesine izin ver
29
28
  description: Açıklama
30
- document_number_authorization_handler: İmzalardaki belge numarasını doğrulama yetkisi
31
29
  extra_fields_legal_information: Kişisel verilerin toplanması ile ilgili yasal bilgiler
32
30
  minimum_committee_members: Minimum komite üyesi
33
31
  online_signature_enabled: Çevrimiçi imza etkin
@@ -73,14 +71,11 @@ tr:
73
71
  label: Durum
74
72
  values:
75
73
  accepted: Yeterince imza
76
- created: Oluşturuldu
77
74
  discarded: Yok sayıldı
78
75
  rejected: Yeterince imza yok
79
76
  validating: Teknik doğrulama
80
77
  type_id_eq:
81
78
  label: Tür
82
- search_placeholder:
83
- title_or_description_or_id_string_or_author_name_or_author_nickname_cont: '%{collection} ''ı başlık, açıklama, kimlik veya yazar adına göre arayın.'
84
79
  menu:
85
80
  information: Bilgi
86
81
  initiatives: Girişimler
@@ -227,7 +222,6 @@ tr:
227
222
  edit:
228
223
  update: Güncelle
229
224
  form:
230
- authorizations: Yetkilendirme ayarları
231
225
  options: Seçenekler
232
226
  initiative_type_scopes:
233
227
  title: Girişim türü için kapsamlar
@@ -242,7 +236,6 @@ tr:
242
236
  update: "%{user_name}, %{resource_name} girişimini güncelledi"
243
237
  admin_states:
244
238
  accepted: Yeterince imza
245
- created: Oluşturuldu
246
239
  discarded: Yok sayıldı
247
240
  rejected: Yeterince imza yok
248
241
  validating: Teknik doğrulama
@@ -266,36 +259,19 @@ tr:
266
259
  name: Vurgulanan girişimler
267
260
  create_initiative:
268
261
  fill_data:
269
- back: Geri
270
262
  continue: Devam et
271
263
  fill_data_help: "<ul> <li> Girişiminizin içeriğini inceleyin. Başlığınızı anlamak kolay mı? Girişiminizin amacı açık mı? </li> <li> İmza türünü seçmeniz gerekiyor. Yüz yüze, çevrimiçi veya her ikisinin kombinasyonu </li> <li> Girişimin coğrafi kapsamı nedir? </li> </ul>"
272
- more_information: "(Daha fazla bilgi)"
273
264
  select_area: Bir alan seçin
274
265
  select_scope: Bir kapsam seçin
275
266
  finish:
276
267
  back: Geri
277
- back_to_initiatives: Girişimlere geri dön
278
- confirm: Bir yöneticinin gözden geçirmesi ve yayınlaması için inisiyatif göndereceksiniz. Yayınlandıktan sonra onu düzenleyemezsiniz. Emin misiniz?
279
- edit_my_initiative: Girişimimi düzenle
280
- go_to_my_initiatives: Benim girişimlerime git
281
- more_information: "(Daha fazla bilgi)"
282
- send_my_initiative: Girişimimi teknik doğrulamaya gönder
283
- finish_help:
284
- publish_helper_text: Girişiminizin yayınlanması için gerekli bilgileri tamamlamanız ve bir yöneticinin incelemesi için <strong> teknik doğrulamaya göndermeniz </strong> gerektiğini unutmayın.
285
268
  previous_form:
286
269
  back: Geri
287
- continue: Devam et
288
- promotal_committee:
289
- individual_help_text: Bu tür bir girişim, en az %{committee_size} kişiden (onaylayanlardan) oluşan bir Teşvik Komisyonu gerektirir. Aşağıdaki bağlantıyı bu girişimin parçası olan diğer kişilerle paylaşmalısınız. Kişileriniz bu bağlantıyı aldıklarında, belirtilen adımları izlemeleri gerekecektir.
290
- more_information: "(Daha fazla bilgi)"
291
270
  select_initiative_type:
292
271
  back: Geri
293
272
  choose_html: <strong>%{title}</strong> oluşturmak istiyorum
294
273
  more_information: (Daha fazla bilgi)
295
274
  select: Bu girişimi tanıtmak istiyorum
296
- select_initiative_type_help: Girişimler, kuruluşun genel menfaati savunmak için eylemlerde bulunabilmesi için katılımcıların müdahale edebilecekleri bir araçtır. Hangi girişimi başlatmak istiyorsunuz?
297
- share_committee_link:
298
- invite_to_committee_help: Tanıtım komitesinin bir parçası olacak kişileri davet etmek için bağlantı
299
275
  edit:
300
276
  accept: Girişimi kabul edin
301
277
  back: Geri
@@ -312,26 +288,12 @@ tr:
312
288
  email_outro: Bu bildirimi, %{author_nickname}izlediğiniz için aldınız. Önceki bağlantıyı takip ederek bildirimleri almayı durdurabilirsiniz.
313
289
  email_subject: '%{author_nickname} tarafından yeni girişim'
314
290
  notification_title: <a href="%{resource_path}">%{resource_title} </a> girişimi <a href="%{author_path}">%{author_name} %{author_nickname} </a> tarafından oluşturuldu.
315
- endorse_initiative_event:
316
- email_intro: "Takip ettiğiniz %{author_name} %{author_nickname} aşağıdaki girişimi onayladı, belki sohbete katkıda bulunmak istersiniz:"
317
- email_outro: Bu bildirimi, %{author_nickname}izlediğiniz için aldınız. Önceki bağlantıyı takip ederek bildirimleri almayı durdurabilirsiniz.
318
- email_subject: Girişim %{author_nickname} tarafından onaylandı
319
- notification_title: <a href="%{resource_path}">%{resource_title} </a> girişimi <a href="%{author_path}">%{author_name} %{author_nickname} </a> tarafından onaylandı.
320
291
  initiative_signatures:
321
- fill_personal_data:
322
- continue: Devam et
323
292
  finish:
324
293
  back_to_initiative: Girişime geri dön
325
- sms_code:
326
- continue: Kodu kontrol et ve devam et
327
- help: Telefonunuza gelen SMS'i kontrol edin
328
- sms_phone_number:
329
- continue: Bana bir sms gönder
330
294
  initiative_votes:
331
295
  create:
332
296
  error: Girişimi imzalarken bir hata oluştu.
333
- personal_data:
334
- invalid: Kişisel veriler, yetkilendirme için sağlanan verilerle tutarlı değildir.
335
297
  sms_phone:
336
298
  invalid: Telefon numarası geçersiz veya yetki bekleniyor. Lütfen yetkilerinizi kontrol edin.
337
299
  initiatives:
@@ -360,11 +322,6 @@ tr:
360
322
  initiatives:
361
323
  closed_initiatives_warning: Şu anda açık girişim yok, ancak burada listelenen tüm kapalı girişimleri bulabilirsiniz.
362
324
  no_initiatives_warning: Arama kriterlerinizle eşleşen hiçbir girişim yok.
363
- interactions:
364
- comments_count:
365
- count:
366
- one: Yorum
367
- other: Yorumlar
368
325
  orders:
369
326
  label: 'Girişimleri şuna göre sırala:'
370
327
  most_commented: En çok yorum yapılan
@@ -429,7 +386,6 @@ tr:
429
386
  show:
430
387
  badge_name:
431
388
  accepted: Yeterince imza
432
- created: Oluşturuldu
433
389
  discarded: Yok sayıldı
434
390
  rejected: Yeterince imza yok
435
391
  validating: Teknik doğrulama
@@ -443,20 +399,11 @@ tr:
443
399
  initiatives_type:
444
400
  actions:
445
401
  title: Eylemler
446
- vote: İmza
447
402
  layouts:
448
403
  decidim:
449
404
  initiative_creation_header:
450
405
  fill_data: Oluştur
451
- finish: Bitiş
452
- promotal_committee: Tanıtım komitesi
453
406
  select_initiative_type: Seç
454
- initiative_signature_creation_header:
455
- fill_personal_data: Verilerinizi tamamlayın
456
- finish: Bitiş
457
- sms_code: SMS kodu doğrulama
458
- sms_phone_number: Cep telefonu numarası
459
- title: İşaret %{initiative_title}
460
407
  initiatives:
461
408
  no_initiatives_yet:
462
409
  no_initiatives_yet: Henüz girişim yok!
@@ -3,7 +3,6 @@ uk:
3
3
  activemodel:
4
4
  attributes:
5
5
  initiative:
6
- decidim_user_group_id: Автор
7
6
  description: Опис
8
7
  offline_votes: Підтримка на особистих зустрічах
9
8
  scope_id: Обсяг
@@ -127,7 +126,6 @@ uk:
127
126
  unpublish: "%{user_name} відкинув почин %{resource_name}"
128
127
  update: "%{user_name} оновив почин %{resource_name}"
129
128
  admin_states:
130
- created: Створені
131
129
  discarded: Відкинуті
132
130
  validating: Технічна перевірка
133
131
  application_helper:
@@ -144,39 +142,21 @@ uk:
144
142
  name: Висвітлені почини
145
143
  create_initiative:
146
144
  fill_data:
147
- back: Повернутись
148
145
  continue: Продовжити
149
- more_information: "(Додаткові відомості)"
150
146
  select_scope: Оберіть обсяг
151
147
  finish:
152
148
  back: Повернутись
153
- back_to_initiatives: Повернутися до починів
154
- go_to_my_initiatives: Перейти до моїх починів
155
- more_information: "(Додаткові відомості)"
156
149
  previous_form:
157
150
  back: Повернутись
158
- continue: Продовжити
159
- promotal_committee:
160
- more_information: "(Додаткові відомості)"
161
151
  select_initiative_type:
162
152
  back: Повернутись
163
153
  more_information: (Додаткові відомості)
164
- share_committee_link:
165
- invite_to_committee_help: Посилання для запрошення людей, які увійдуть в робочий гурт з просування
166
154
  events:
167
155
  create_initiative_event:
168
156
  email_intro: "%{author_name} %{author_nickname}, за яким ви стежите, зробив новий почин. Прочитайте його та зробіть свій внесок:"
169
157
  email_outro: Ви отримали це сповіщення, тому що ви стежите за %{author_nickname}. Ви можете відписатися від цих сповіщень, перейшовши за наведеним вище посиланням.
170
158
  email_subject: Новий почин, започаткований %{author_nickname}
171
159
  notification_title: <a href="%{author_path}">%{author_name} %{author_nickname}</a> створив почин <a href="%{resource_path}">%{resource_title}</a>.
172
- endorse_initiative_event:
173
- email_intro: "%{author_name} %{author_nickname}, за яким ви стежите, підтримав наступний почин. Чи не бажаєте ви зробити свій внесок у розмову:"
174
- email_outro: Ви отримали це сповіщення, тому що ви стежите за %{author_nickname}. Ви можете відписатися від цих сповіщень, перейшовши за наведеним вище посиланням.
175
- email_subject: '%{author_nickname} підтримав почин'
176
- notification_title: <a href="%{author_path}">%{author_name} %{author_nickname}</a> підтримав почин <a href="%{resource_path}">%{resource_title}</a>.
177
- initiative_signatures:
178
- fill_personal_data:
179
- continue: Продовжити
180
160
  initiative_votes:
181
161
  create:
182
162
  error: При підписанні цього почину сталися помилки.
@@ -242,15 +222,10 @@ uk:
242
222
  expired: Строк дії яких закінчився
243
223
  menu:
244
224
  initiatives: Почини
245
- resources:
246
- initiatives_type:
247
- actions:
248
- vote: Підписати
249
225
  layouts:
250
226
  decidim:
251
227
  initiative_creation_header:
252
228
  fill_data: Внести
253
- promotal_committee: Робочий гурт з просування
254
229
  select_initiative_type: Обрати
255
230
  initiatives:
256
231
  no_initiatives_yet:
@@ -3,7 +3,6 @@ zh-CN:
3
3
  activemodel:
4
4
  attributes:
5
5
  initiative:
6
- decidim_user_group_id: 作者
7
6
  description: 描述
8
7
  offline_votes: 本人签名
9
8
  offline_votes_for_scope: '%{scope_name} 的本人签名'
@@ -27,7 +26,6 @@ zh-CN:
27
26
  collect_user_extra_fields: 在签名时收集参与者个人数据
28
27
  custom_signature_end_date_enabled: 允许作者选择签名收集期的结束
29
28
  description: 描述
30
- document_number_authorization_handler: 验证签名上的文档编号的授权
31
29
  extra_fields_legal_information: 关于收集个人数据的法律信息
32
30
  minimum_committee_members: 委员会成员的最低人数
33
31
  online_signature_enabled: 启用在线签名
@@ -70,14 +68,11 @@ zh-CN:
70
68
  label: 状态
71
69
  values:
72
70
  accepted: 足够的签名
73
- created: 已创建
74
71
  discarded: 丢弃的
75
72
  rejected: 签名不足
76
73
  validating: 技术验证
77
74
  type_id_eq:
78
75
  label: 类型
79
- search_placeholder:
80
- title_or_description_or_id_string_or_author_name_or_author_nickname_cont: 按标题、描述、ID或作者名称搜索 %{collection}。
81
76
  menu:
82
77
  information: 信息
83
78
  initiatives: 倡议
@@ -218,7 +213,6 @@ zh-CN:
218
213
  edit:
219
214
  update: 更新
220
215
  form:
221
- authorizations: 授权设置
222
216
  options: 备选方案
223
217
  initiative_type_scopes:
224
218
  title: 倡议类型的范围
@@ -233,7 +227,6 @@ zh-CN:
233
227
  update: "%{user_name} 更新了 %{resource_name} 倡议"
234
228
  admin_states:
235
229
  accepted: 足够的签名
236
- created: 已创建
237
230
  discarded: 丢弃的
238
231
  rejected: 签名不足
239
232
  validating: 技术验证
@@ -257,54 +250,30 @@ zh-CN:
257
250
  name: B. 重点倡议
258
251
  create_initiative:
259
252
  fill_data:
260
- back: 后退
261
253
  continue: 继续
262
- more_information: "(更多信息)"
263
254
  select_area: 选择区域
264
255
  select_scope: 选择范围
265
256
  finish:
266
257
  back: 后退
267
- back_to_initiatives: 回到倡议
268
- go_to_my_initiatives: 转到我的倡议
269
- more_information: "(更多信息)"
270
258
  previous_form:
271
259
  back: 后退
272
- continue: 继续
273
- promotal_committee:
274
- more_information: "(更多信息)"
275
260
  select_initiative_type:
276
261
  back: 后退
277
262
  choose_html: 我想要创建 <strong>%{title}</strong>
278
263
  more_information: (更多信息)
279
264
  select: 我想促进这项倡议
280
- share_committee_link:
281
- invite_to_committee_help: 邀请将成为促进委员会成员的人的链接
282
265
  events:
283
266
  create_initiative_event:
284
267
  email_intro: "%{author_name} %{author_nickname},您正在关注这个问题,已经创建了一个新的倡议,查看它并做出贡献:"
285
268
  email_outro: 您收到此通知是因为您正在关注 %{author_nickname}。您可以停止收到跟随上一个链接的通知。
286
269
  email_subject: '%{author_nickname} 的新举措'
287
270
  notification_title: <a href="%{resource_path}">%{resource_title}</a> 倡议是由 <a href="%{author_path}">%{author_name} %{author_nickname}</a> 创建的。
288
- endorse_initiative_event:
289
- email_intro: "%{author_name} %{author_nickname},您正在关注这个问题,已经批准了以下倡议,也许您想要为对话做出贡献:"
290
- email_outro: 您收到此通知是因为您正在关注 %{author_nickname}。您可以停止收到跟随上一个链接的通知。
291
- email_subject: '%{author_nickname} 认可的倡议'
292
- notification_title: <a href="%{resource_path}">%{resource_title}</a> 倡议已被 <a href="%{author_path}">%{author_name} %{author_nickname}</a> 认可。
293
271
  initiative_signatures:
294
- fill_personal_data:
295
- continue: 继续
296
272
  finish:
297
273
  back_to_initiative: 回到倡议
298
- sms_code:
299
- continue: 检查代码并继续
300
- help: 检查手机收到的短信
301
- sms_phone_number:
302
- continue: 给我发送短信
303
274
  initiative_votes:
304
275
  create:
305
276
  error: 在签署该倡议时遇到了问题。
306
- personal_data:
307
- invalid: 个人资料与批准数据不一致。
308
277
  sms_phone:
309
278
  invalid: 电话号码无效或正在等待授权。请检查您的授权。
310
279
  initiatives:
@@ -327,10 +296,6 @@ zh-CN:
327
296
  initiatives:
328
297
  closed_initiatives_warning: 目前没有开放的倡议,但在这里你可以找到列出的所有已关闭的倡议。
329
298
  no_initiatives_warning: 没有符合您搜索条件的倡议。
330
- interactions:
331
- comments_count:
332
- count:
333
- other: 评论
334
299
  orders:
335
300
  label: '对倡议进行排序:'
336
301
  most_commented: 最多评论
@@ -370,7 +335,6 @@ zh-CN:
370
335
  show:
371
336
  badge_name:
372
337
  accepted: 足够的签名
373
- created: 已创建
374
338
  discarded: 丢弃的
375
339
  rejected: 签名不足
376
340
  validating: 技术验证
@@ -384,20 +348,11 @@ zh-CN:
384
348
  initiatives_type:
385
349
  actions:
386
350
  title: 行动
387
- vote: 签名
388
351
  layouts:
389
352
  decidim:
390
353
  initiative_creation_header:
391
354
  fill_data: 创建
392
- finish: 完成
393
- promotal_committee: 宣传委员会
394
355
  select_initiative_type: 选择
395
- initiative_signature_creation_header:
396
- fill_personal_data: 完成您的数据
397
- finish: 完成
398
- sms_code: 短信代码验证
399
- sms_phone_number: 手机号码
400
- title: 签名 %{initiative_title}
401
356
  initiatives:
402
357
  no_initiatives_yet:
403
358
  no_initiatives_yet: 还没有倡议!
@@ -7,9 +7,7 @@ zh-TW:
7
7
  answer_url: 回答 URL
8
8
  area_id: 區域
9
9
  decidim_scope_id: 範圍
10
- decidim_user_group_id: 作者
11
10
  description: 說明
12
- hashtag: 主題標籤
13
11
  offline_votes: 親筆簽名
14
12
  offline_votes_for_scope: '%{scope_name} 的親筆簽名'
15
13
  scope_id: 範圍
@@ -36,7 +34,6 @@ zh-TW:
36
34
  comments_enabled: 啟用評論
37
35
  custom_signature_end_date_enabled: 允許作者選擇結束簽名收集期限
38
36
  description: 說明
39
- document_number_authorization_handler: 授權核准文件編號以驗證簽名
40
37
  extra_fields_legal_information: 關於個人資料蒐集的法律資訊
41
38
  minimum_committee_members: 委員會成員最少人數
42
39
  online_signature_enabled: 啟用線上簽名
@@ -86,14 +83,11 @@ zh-TW:
86
83
  label: 狀態
87
84
  values:
88
85
  accepted: 足夠的簽署數
89
- created: 已建立
90
86
  discarded: 已捨棄
91
87
  rejected: 不足夠的簽署數
92
88
  validating: 技術驗證
93
89
  type_id_eq:
94
90
  label: 類別
95
- search_placeholder:
96
- title_or_description_or_id_string_or_author_name_or_author_nickname_cont: 透過標題、描述、ID 或作者姓名搜尋 %{collection}
97
91
  initiatives_settings:
98
92
  update:
99
93
  success: 倡議設定已成功更新.
@@ -279,7 +273,6 @@ zh-TW:
279
273
  edit:
280
274
  update: 更新
281
275
  form:
282
- authorizations: 權限設置
283
276
  options: 選項
284
277
  initiative_type_scopes:
285
278
  title: 倡議類型範圍
@@ -302,7 +295,6 @@ zh-TW:
302
295
  update: "%{user_name} 更新了 %{resource_name} 倡議類型"
303
296
  admin_states:
304
297
  accepted: 足夠的簽署數
305
- created: 已建立
306
298
  discarded: 已捨棄
307
299
  rejected: 不足夠的簽署數
308
300
  validating: 技術驗證
@@ -331,37 +323,20 @@ zh-TW:
331
323
  name: 重點倡議
332
324
  create_initiative:
333
325
  fill_data:
334
- back: 返回
335
326
  continue: 繼續
336
327
  fill_data_help: "<ul> <li>檢閱您倡議的內容。標題是否易於理解?倡議的目標是否清晰明確?</li> <li>您需要選擇簽名的類型。是現場簽名、線上簽名還是兩者的組合?</li> <li>倡議的地理範圍是什麼?</li> </ul>"
337
- more_information: "(更多資訊)"
338
328
  select_area: 選擇一個地區
339
329
  select_scope: 選擇一個類型
340
330
  finish:
341
331
  back: 返回
342
- back_to_initiatives: 回到倡議
343
- confirm: 您即將發送倡議給管理員進行審核和發佈。一旦發佈,您將無法編輯它。您確定要繼續嗎?"
344
- edit_my_initiative: 編輯我的倡議
345
- go_to_my_initiatives: 前往我的倡議
346
- more_information: "(更多資訊)"
347
- send_my_initiative: 將我的倡議送交技術審核
348
- finish_help:
349
- publish_helper_text: 請記住,要使您的倡議能夠被發佈,您必須填寫必要的資訊並將其<strong>送交技術審核</strong>以供管理員審查。
350
332
  previous_form:
351
333
  back: 返回
352
- continue: 繼續
353
- promotal_committee:
354
- individual_help_text: 這種倡議需要至少 %{committee_size} 人(證明者)組成推廣委員會。您必須與參與該倡議的其他人分享以下鏈接。當您的聯繫人收到此鏈接後,他們將需要按照指示進行相應步驟。
355
- more_information: "(更多資訊)"
356
334
  select_initiative_type:
357
335
  back: 返回
358
336
  choose_html: 我想要創建一個<strong>%{title}</strong>
359
337
  more_information: (更多資訊)
360
338
  select: 我想推動這個倡議
361
- select_initiative_type_help: 倡議是參與者可以通過其來干預,以便組織可以為捍衛公共利益而采取行動的手段。您希望發起哪個倡議?
362
339
  verification_required: 驗證您的帳戶以推動這個倡議
363
- share_committee_link:
364
- invite_to_committee_help: 邀請成為推動委員會成員的人的連結
365
340
  edit:
366
341
  accept: 接受倡議
367
342
  back: 返回
@@ -383,11 +358,6 @@ zh-TW:
383
358
  email_outro: 您收到此通知,是因為您正在關注 %{author_nickname}。您可以使用上面的連結停止接收通知。
384
359
  email_subject: 由 %{author_nickname} 提出的新倡議
385
360
  notification_title: 倡議 <a href="%{resource_path}">%{resource_title}</a> 由 <a href="%{author_path}">%{author_name} %{author_nickname}</a> 提出。
386
- endorse_initiative_event:
387
- email_intro: "\"%{author_name} %{author_nickname} 正在追蹤,並已連署以下倡議,或許你想參與對話:"
388
- email_outro: 您收到此通知,是因為您正在關注 %{author_nickname}。您可以使用上面的連結停止接收通知。
389
- email_subject: 倡議得到 %{author_nickname} 的連署
390
- notification_title: <a href="%{resource_path}">%{resource_title}</a> 倡議已獲 %{author_name} %{author_nickname} 連署。
391
361
  revoke_membership_request:
392
362
  email_intro: "%{author_nickname} 拒絕了您加入 %{resource_title} 倡議發起委員會的申請。"
393
363
  email_outro: '這是您收到的通知,因為您申請參與這個倡議:%{resource_title}。'
@@ -402,23 +372,14 @@ zh-TW:
402
372
  uninitialized: 尚未由管理員設置倡議。
403
373
  initiative_signatures:
404
374
  fill_personal_data:
405
- continue: 繼續
406
375
  help: 以下請填寫您的個人資料以簽署此倡議。
407
376
  finish:
408
377
  back_to_initiative: 回到倡議
409
- sms_code:
410
- continue: 檢查代碼並繼續
411
- help: 請檢查您手機收到的SMS簡訊
412
- sms_phone_number:
413
- continue: 發送簡訊給我
414
- help: 請填寫您驗證過的手機號碼以申請驗證碼.
415
378
  initiative_votes:
416
379
  create:
417
380
  error: 發起倡議的簽署遇到問題。
418
381
  invalid: 提供的資料以簽署此倡議為無效.
419
382
  success_html: 恭喜!<strong> %{title} </strong> 倡議已成功簽署。
420
- personal_data:
421
- invalid: 個人資料與授權提供的資料不一致。
422
383
  sms_code:
423
384
  invalid: 您的驗證碼與我們的不符。請仔細檢查我們發送給您的SMS簡訊。
424
385
  sms_phone:
@@ -449,10 +410,6 @@ zh-TW:
449
410
  initiatives:
450
411
  closed_initiatives_warning: 目前沒有開放中的倡議,但您可以在這裡找到所有已結束的倡議清單。
451
412
  no_initiatives_warning: 沒有符合您的搜尋條件的倡議。
452
- interactions:
453
- comments_count:
454
- count:
455
- other: 評論
456
413
  orders:
457
414
  label: '按照以下方式對倡議進行排序:'
458
415
  most_commented: 最多評論
@@ -517,7 +474,6 @@ zh-TW:
517
474
  show:
518
475
  badge_name:
519
476
  accepted: 足夠的簽署數
520
- created: 已建立
521
477
  discarded: 已捨棄
522
478
  rejected: 簽署數不足
523
479
  validating: 技術驗證
@@ -536,20 +492,11 @@ zh-TW:
536
492
  initiatives_type:
537
493
  actions:
538
494
  title: 操作
539
- vote: 簽署
540
495
  layouts:
541
496
  decidim:
542
497
  initiative_creation_header:
543
498
  fill_data: 建立
544
- finish: 完成
545
- promotal_committee: 推動委員會
546
499
  select_initiative_type: 選擇
547
- initiative_signature_creation_header:
548
- fill_personal_data: 填寫您的資料
549
- finish: 完成
550
- sms_code: SMS短訊代碼驗證碼
551
- sms_phone_number: 行動電話號碼
552
- title: 簽名 %{initiative_title}
553
500
  initiatives:
554
501
  no_initiatives_yet:
555
502
  no_initiatives_yet: 尚無倡議!
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RemoveHashtagColumnInitiatives < ActiveRecord::Migration[7.1]
4
+ def change
5
+ remove_column :decidim_initiatives, :hashtag, :string, if_exists: true
6
+ end
7
+ end
@@ -8,8 +8,11 @@ module Decidim
8
8
  graphql_name "InitiativeType"
9
9
  description "An initiative type"
10
10
 
11
+ field :attachments_enabled, GraphQL::Types::Boolean, "Enable attachments on initiative types", null: true
11
12
  field :banner_image, GraphQL::Types::String, "Banner image", null: true
12
13
  field :collect_user_extra_fields, GraphQL::Types::Boolean, "Collect participant personal data on signature", null: true
14
+ field :comments_enabled, GraphQL::Types::Boolean, "Enable comments on initiative types", null: true
15
+ field :custom_signature_end_date_enabled, GraphQL::Types::Boolean, "Enable participants to set custom signature end date", null: true
13
16
  field :description, Decidim::Core::TranslatedFieldType, "This is the initiative type description", null: true
14
17
  field :extra_fields_legal_information, GraphQL::Types::String, "Legal information about the collection of personal data", null: true
15
18
  field :id, GraphQL::Types::ID, "The internal ID for this initiative type", null: false
@@ -9,13 +9,19 @@ module Decidim
9
9
  implements Decidim::Core::AttachableInterface
10
10
  implements Decidim::Initiatives::InitiativeTypeInterface
11
11
  implements Decidim::Core::TimestampsInterface
12
+ implements Decidim::Core::FollowableInterface
13
+ implements Decidim::Core::ReferableInterface
14
+ implements Decidim::Comments::CommentableInterface
12
15
 
13
16
  description "A initiative"
14
17
 
18
+ field :answer, Decidim::Core::TranslatedFieldType, "The answer of the initiative", null: true
19
+ field :answer_url, GraphQL::Types::String, "The answer url of the initiative", null: true
20
+ field :answered_at, Decidim::Core::DateTimeType, "The date this initiative was answered", null: true
15
21
  field :author, Decidim::Core::AuthorInterface, "The initiative author", null: false
16
22
  field :committee_members, [Decidim::Initiatives::InitiativeCommitteeMemberType, { null: true }], "The committee members list", null: true
17
23
  field :description, Decidim::Core::TranslatedFieldType, "The description of this initiative.", null: true
18
- field :hashtag, GraphQL::Types::String, "The hashtag for this initiative", null: true
24
+ field :first_progress_notification_at, Decidim::Core::DateTimeType, "The date when the first progress notification was sent ", null: true
19
25
  field :initiative_supports_count, GraphQL::Types::Int,
20
26
  description: "The number of supports in this initiative",
21
27
  method: :online_votes_count,
@@ -28,15 +34,28 @@ module Decidim
28
34
  field :offline_votes, GraphQL::Types::Int, "The number of offline votes in this initiative", method: :offline_votes_count, null: true
29
35
  field :online_votes, GraphQL::Types::Int, "The number of online votes in this initiative", method: :online_votes_count, null: true
30
36
  field :published_at, Decidim::Core::DateTimeType, "The time this initiative was published", null: false
31
- field :reference, GraphQL::Types::String, "Reference prefix for this initiative", null: false
37
+ field :second_progress_notification_at, Decidim::Core::DateTimeType, "The date when the second progress notification was sent", null: true
32
38
  field :signature_end_date, Decidim::Core::DateType, "The signature end date", null: false
33
39
  field :signature_start_date, Decidim::Core::DateType, "The signature start date", null: false
34
40
  field :signature_type, GraphQL::Types::String, "Signature type of the initiative", null: true
35
41
  field :slug, GraphQL::Types::String, "The slug of the initiative", null: false
36
42
  field :state, GraphQL::Types::String, "Current status of the initiative", null: true
43
+ field :url, GraphQL::Types::String, "The URL of this initiative", null: true
37
44
 
38
- def author
39
- object.user_group || object.author
45
+ def url
46
+ Decidim::EngineRouter.main_proxy(object).initiative_url(object)
47
+ end
48
+
49
+ def answer
50
+ return unless object.answered?
51
+
52
+ object.answer
53
+ end
54
+
55
+ def answer_url
56
+ return unless object.answered?
57
+
58
+ object.answer_url
40
59
  end
41
60
  end
42
61
  end
@@ -148,7 +148,7 @@ module Decidim
148
148
  end
149
149
 
150
150
  def encryptor
151
- @encryptor ||= Decidim::Initiatives::DataEncryptor.new(secret: "personal user metadata")
151
+ @encryptor ||= Decidim::Initiatives::DataEncryptor.new(secret: Decidim::Initiatives.signature_handler_encryption_secret)
152
152
  end
153
153
 
154
154
  def truncate(text, length = 50)
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Initiatives
5
+ class DefaultSignatureAuthorizer < Decidim::Verifications::DefaultActionAuthorizer
6
+ #
7
+ # Initializes the DefaultActionAuthorizer class.
8
+ #
9
+ # authorization - The existing authorization record to be evaluated. Can be nil.
10
+ # options - A hash with options related only to the current authorization process.
11
+ #
12
+ def initialize(authorization, options = {})
13
+ super(authorization, options, nil, nil)
14
+ end
15
+ end
16
+ end
17
+ end