decidim-core 0.27.4 → 0.27.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/activity_cell.rb +2 -2
  3. data/app/cells/decidim/card_cell.rb +2 -2
  4. data/app/cells/decidim/card_m/top.erb +1 -1
  5. data/app/cells/decidim/card_m_cell.rb +1 -1
  6. data/app/cells/decidim/scopes_picker/scope_picker_values.erb +1 -1
  7. data/app/cells/decidim/tags_cell.rb +3 -1
  8. data/app/cells/decidim/upload_modal/modal.erb +4 -1
  9. data/app/cells/decidim/upload_modal_cell.rb +8 -4
  10. data/app/cells/decidim/user_profile_cell.rb +1 -1
  11. data/app/cells/decidim/version_cell.rb +1 -1
  12. data/app/cells/decidim/versions_list_cell.rb +1 -1
  13. data/app/commands/decidim/create_omniauth_registration.rb +2 -4
  14. data/app/commands/decidim/endorse_resource.rb +2 -0
  15. data/app/commands/decidim/messaging/reply_to_conversation.rb +3 -0
  16. data/app/commands/decidim/messaging/start_conversation.rb +3 -0
  17. data/app/commands/decidim/search.rb +1 -1
  18. data/app/commands/decidim/unendorse_resource.rb +1 -1
  19. data/app/controllers/concerns/decidim/devise_authentication_methods.rb +36 -0
  20. data/app/controllers/concerns/decidim/force_authentication.rb +6 -2
  21. data/app/controllers/concerns/decidim/paginable.rb +1 -1
  22. data/app/controllers/decidim/devise/omniauth_registrations_controller.rb +1 -22
  23. data/app/controllers/decidim/devise/registrations_controller.rb +1 -1
  24. data/app/controllers/decidim/devise/sessions_controller.rb +1 -24
  25. data/app/controllers/decidim/links_controller.rb +1 -1
  26. data/app/controllers/decidim/searches_controller.rb +1 -1
  27. data/app/controllers/decidim/user_timeline_controller.rb +1 -1
  28. data/app/controllers/decidim/widgets_controller.rb +6 -0
  29. data/app/events/decidim/welcome_notification_event.rb +6 -9
  30. data/app/forms/decidim/account_form.rb +1 -1
  31. data/app/forms/decidim/notifications_settings_form.rb +0 -8
  32. data/app/forms/decidim/registration_form.rb +1 -1
  33. data/app/helpers/decidim/cells_paginate_helper.rb +1 -1
  34. data/app/helpers/decidim/check_boxes_tree_helper.rb +4 -4
  35. data/app/helpers/decidim/decidim_form_helper.rb +1 -0
  36. data/app/helpers/decidim/newsletters_helper.rb +83 -16
  37. data/app/helpers/decidim/omniauth_helper.rb +2 -0
  38. data/app/helpers/decidim/resource_helper.rb +3 -1
  39. data/app/helpers/decidim/sanitize_helper.rb +9 -0
  40. data/app/helpers/decidim/short_link_helper.rb +1 -1
  41. data/app/helpers/decidim/user_profile_helper.rb +7 -2
  42. data/app/jobs/decidim/download_your_data_export_job.rb +2 -1
  43. data/app/jobs/decidim/open_data_job.rb +2 -0
  44. data/app/mailers/decidim/messaging/conversation_mailer.rb +3 -72
  45. data/app/models/decidim/push_notification_message.rb +39 -0
  46. data/app/models/decidim/user.rb +9 -1
  47. data/app/packs/images/decidim/icons.svg +1 -1
  48. data/app/packs/images/decidim/vendor/social-share-button/x.svg +6 -0
  49. data/app/packs/src/decidim/autocomplete.js +11 -2
  50. data/app/packs/src/decidim/data_picker.js +1 -0
  51. data/app/packs/src/decidim/direct_uploads/upload_field.js +6 -4
  52. data/app/packs/src/decidim/direct_uploads/upload_modal.js +10 -8
  53. data/app/packs/src/decidim/direct_uploads/uploader.js +4 -1
  54. data/app/packs/src/decidim/geocoding/attach_input.js +4 -1
  55. data/app/packs/src/decidim/geocoding/provider/here.js +17 -21
  56. data/app/packs/src/decidim/geocoding/provider/photon.js +1 -1
  57. data/app/packs/src/decidim/input_hashtags.js +1 -1
  58. data/app/packs/src/decidim/input_mentions.js +1 -1
  59. data/app/packs/src/decidim/input_multiple_mentions.js +1 -1
  60. data/app/packs/src/decidim/utilities/text.js +17 -0
  61. data/app/packs/src/decidim/vizzs/index.js +1 -1
  62. data/app/packs/stylesheets/decidim/_variables.scss +1 -1
  63. data/app/packs/stylesheets/decidim/plugins/leaflet.scss +118 -114
  64. data/app/packs/stylesheets/decidim/vendor/_social_share_button.scss +4 -0
  65. data/app/presenters/decidim/admin_log/oauth_application_resource_presenter.rb +1 -1
  66. data/app/presenters/decidim/notification_to_mailer_presenter.rb +9 -0
  67. data/app/services/decidim/events_manager.rb +6 -0
  68. data/app/services/decidim/push_notification_message_sender.rb +36 -0
  69. data/app/services/decidim/send_push_notification.rb +22 -8
  70. data/app/views/decidim/devise/registrations/new.html.erb +2 -2
  71. data/app/views/decidim/notifications_digest_mailer/_email_content.html.erb +7 -0
  72. data/app/views/decidim/notifications_settings/show.html.erb +1 -1
  73. data/app/views/decidim/scopes/_scopes_picker_input.html.erb +1 -1
  74. data/app/views/decidim/searches/_filters.html.erb +3 -1
  75. data/app/views/decidim/shared/_address_details.html.erb +2 -2
  76. data/app/views/decidim/shared/_share_modal.html.erb +1 -1
  77. data/app/views/decidim/shared/participatory_space_filters/_filters.html.erb +1 -1
  78. data/app/views/layouts/decidim/_js_configuration.html.erb +1 -0
  79. data/app/views/layouts/decidim/_social_media_links.html.erb +2 -2
  80. data/config/locales/ar.yml +12 -16
  81. data/config/locales/bg.yml +77 -15
  82. data/config/locales/ca.yml +34 -30
  83. data/config/locales/cs.yml +18 -14
  84. data/config/locales/de.yml +62 -58
  85. data/config/locales/el.yml +11 -16
  86. data/config/locales/en.yml +5 -1
  87. data/config/locales/eo.yml +2 -3
  88. data/config/locales/es-MX.yml +15 -11
  89. data/config/locales/es-PY.yml +15 -11
  90. data/config/locales/es.yml +30 -26
  91. data/config/locales/eu.yml +500 -342
  92. data/config/locales/fi-plain.yml +7 -3
  93. data/config/locales/fi.yml +21 -17
  94. data/config/locales/fr-CA.yml +17 -13
  95. data/config/locales/fr.yml +12 -8
  96. data/config/locales/ga-IE.yml +5 -5
  97. data/config/locales/gl.yml +5 -19
  98. data/config/locales/he-IL.yml +1 -0
  99. data/config/locales/hu.yml +63 -23
  100. data/config/locales/id-ID.yml +4 -19
  101. data/config/locales/is-IS.yml +4 -2
  102. data/config/locales/it.yml +15 -17
  103. data/config/locales/ja.yml +26 -22
  104. data/config/locales/lb.yml +15 -17
  105. data/config/locales/lt.yml +55 -10
  106. data/config/locales/lv.yml +4 -16
  107. data/config/locales/nl.yml +12 -12
  108. data/config/locales/no.yml +8 -10
  109. data/config/locales/pl.yml +151 -1
  110. data/config/locales/pt-BR.yml +267 -22
  111. data/config/locales/pt.yml +8 -10
  112. data/config/locales/ro-RO.yml +4 -10
  113. data/config/locales/ru.yml +13 -17
  114. data/config/locales/sk.yml +7 -17
  115. data/config/locales/sl.yml +0 -5
  116. data/config/locales/sq-AL.yml +1 -0
  117. data/config/locales/sv.yml +55 -17
  118. data/config/locales/th-TH.yml +1 -0
  119. data/config/locales/tr-TR.yml +18 -15
  120. data/config/locales/uk.yml +17 -14
  121. data/config/locales/zh-CN.yml +6 -10
  122. data/config/locales/zh-TW.yml +0 -9
  123. data/db/migrate/20231027142329_change_default_value_for_decidim_endorsements.rb +11 -0
  124. data/db/seeds.rb +1 -0
  125. data/decidim-core.gemspec +78 -0
  126. data/lib/decidim/acts_as_tree.rb +14 -1
  127. data/lib/decidim/asset_router/storage.rb +4 -0
  128. data/lib/decidim/attribute_encryptor.rb +6 -4
  129. data/lib/decidim/core/engine.rb +7 -3
  130. data/lib/decidim/core/test/factories.rb +309 -95
  131. data/lib/decidim/core/test/shared_examples/amendable/amendment_created_event_examples.rb +6 -26
  132. data/lib/decidim/core/test/shared_examples/amendable/amendment_promoted_event_examples.rb +8 -26
  133. data/lib/decidim/core/test/shared_examples/comments_examples.rb +56 -0
  134. data/lib/decidim/core/test/shared_examples/embed_resource_examples.rb +187 -11
  135. data/lib/decidim/core/test/shared_examples/errors.rb +2 -0
  136. data/lib/decidim/core/test/shared_examples/has_attachment_collections.rb +8 -6
  137. data/lib/decidim/core/test/shared_examples/has_attachments.rb +4 -4
  138. data/lib/decidim/core/test/shared_examples/has_category.rb +27 -0
  139. data/lib/decidim/core/test/shared_examples/has_reference.rb +1 -1
  140. data/lib/decidim/core/test/shared_examples/has_space_in_mcell_examples.rb +1 -2
  141. data/lib/decidim/core/test/shared_examples/resource_endorsed_event_examples.rb +6 -3
  142. data/lib/decidim/core/test/shared_examples/resource_locator_presenter_examples.rb +134 -0
  143. data/lib/decidim/core/test/shared_examples/searchable_results_examples.rb +1 -1
  144. data/lib/decidim/core/test/shared_examples/simple_event.rb +50 -2
  145. data/lib/decidim/core/test.rb +1 -0
  146. data/lib/decidim/core/version.rb +1 -1
  147. data/lib/decidim/core.rb +2 -1
  148. data/lib/decidim/endorsable.rb +1 -1
  149. data/lib/decidim/engine_router.rb +17 -4
  150. data/lib/decidim/events/base_event.rb +5 -2
  151. data/lib/decidim/events/simple_event.rb +3 -17
  152. data/lib/decidim/exporters.rb +10 -1
  153. data/lib/decidim/form_builder.rb +1 -0
  154. data/lib/decidim/has_category.rb +3 -3
  155. data/lib/decidim/has_conversations.rb +91 -0
  156. data/lib/decidim/participable.rb +17 -0
  157. data/lib/decidim/view_model.rb +1 -0
  158. data/lib/decidim/webpacker/webpack/.modernizrrc +9 -0
  159. data/lib/premailer/adapter/decidim.rb +5 -4
  160. data/lib/tasks/decidim_reminders_tasks.rake +1 -0
  161. data/lib/tasks/upgrade/decidim_deduplicate_endorsements.rake +53 -0
  162. data/lib/tasks/upgrade/decidim_fix_categorization.rake +15 -0
  163. data/lib/tasks/upgrade/decidim_fix_short_url_resolver.rake +22 -0
  164. metadata +37 -32
  165. data/app/helpers/decidim/layout_helper.rb.orig +0 -225
  166. data/app/packs/stylesheets/decidim/modules/_dropdown_menu.scss +0 -9
  167. data/app/views/decidim/devise/registrations/new.html.erb.orig +0 -231
  168. /data/{config/environment.rb → app/packs/images/decidim/.keep} +0 -0
@@ -61,9 +61,6 @@ tr:
61
61
  booleans:
62
62
  'false': 'Hayır'
63
63
  'true': 'Evet'
64
- carrierwave:
65
- errors:
66
- not_inside_organization: Dosya herhangi bir kuruluşa eklenmemiş
67
64
  date:
68
65
  formats:
69
66
  decidim_short: "%d/%m/%Y"
@@ -322,7 +319,7 @@ tr:
322
319
  request_confirmation_instructions: Onaylama talimatlarını tekrar gönder
323
320
  title: E-posta adresinizi doğrulayın
324
321
  show:
325
- close_modal: Yakın kalıcı
322
+ close_modal: Pencereyi kapat
326
323
  block_user_mailer:
327
324
  notify:
328
325
  body_1: Hesabınız kilitlendi.
@@ -436,7 +433,7 @@ tr:
436
433
  newsletter: Ara sıra ilgili bilgileri içeren bir haber bülteni alın
437
434
  newsletter_title: İletişim izni
438
435
  nickname_help: Takma adınız %{organization}. Yalnızca harf, rakam, "-" ve "_" içerebilir.
439
- sign_in: Oturum
436
+ sign_in: "Giriş \nGiriş Yapın "
440
437
  sign_up: kaydol
441
438
  sign_up_as:
442
439
  legend: Olarak kaydol
@@ -455,7 +452,7 @@ tr:
455
452
  newsletter_modal:
456
453
  buttons:
457
454
  check: Kontrol et ve devam et
458
- close_modal: Yakın kalıcı
455
+ close_modal: Pencereyi kapat
459
456
  uncheck: İşaretlemeyin
460
457
  notice: |-
461
458
  <p>Hey, bir haber bülteni almak istemediğine emin misin?<br>
@@ -493,7 +490,6 @@ tr:
493
490
  download_data: Verileri indir
494
491
  request_data: Veri talep et
495
492
  endorsable:
496
- endorsements: Cirolar
497
493
  endorsements_count: Onay sayısı
498
494
  endorsement_buttons_cell:
499
495
  already_endorsed: Onaylanan
@@ -700,6 +696,7 @@ tr:
700
696
  file:
701
697
  explanation: 'Dosya kılavuzu:'
702
698
  message_1: Bir resim veya bir belge olmalı.
699
+ message_2: Resimler için tercihen yatay resimleri kullanın, bu servis resmi kırpar.
703
700
  image:
704
701
  explanation: 'Dosya kılavuzu:'
705
702
  message_1: Tercihen herhangi bir metin içermeyen yatay bir resim.
@@ -707,6 +704,10 @@ tr:
707
704
  file_validation:
708
705
  allowed_file_extensions: 'İzin verilen dosya uzantıları: %{extensions}'
709
706
  max_file_size: 'Maksimum dosya boyutu: %{megabytes} MB'
707
+ upload:
708
+ labels:
709
+ cancel: İptal Et
710
+ save: Kayıt etmek
710
711
  gamification:
711
712
  all_badges_link: Tüm mevcut rozetleri görün.
712
713
  badges:
@@ -827,7 +828,7 @@ tr:
827
828
  resource_type: Türü
828
829
  links:
829
830
  warning:
830
- close_modal: Yakın kalıcı
831
+ close_modal: Pencereyi kapat
831
832
  log:
832
833
  base_presenter:
833
834
  create: "%{user_name}, %{resource_name} oluşturdu"
@@ -915,7 +916,7 @@ tr:
915
916
  ok: OK
916
917
  index:
917
918
  ago: önce
918
- close: Yakın kalıcı
919
+ close: Pencereyi kapat
919
920
  from: Gönderen
920
921
  groups: Gruplarım
921
922
  last_message: Son mesaj
@@ -1033,7 +1034,6 @@ tr:
1033
1034
  proposals: Teklifler
1034
1035
  proposals_explanation: Öneriler yapın, mevcut olanları destekleyin ve görmek istediğiniz değişiklikleri tanıtın.
1035
1036
  footer_sub_hero:
1036
- footer_sub_hero_body: Daha açık, şeffaf ve işbirliğine dayalı bir toplum oluşturalım. <br /> Katılın, katılımcı olun ve karar verin.
1037
1037
  footer_sub_hero_headline: '%{organization} katılımcı platformuna hoş geldiniz.'
1038
1038
  register: Kayıt Ol
1039
1039
  hero:
@@ -1063,7 +1063,7 @@ tr:
1063
1063
  legend: Kullanım şartlarını ve koşullarını kabul et
1064
1064
  refuse:
1065
1065
  modal_btn_exit: Daha sonra inceleyeceğim
1066
- modal_close: Yakın kalıcı
1066
+ modal_close: Pencereyi kapat
1067
1067
  modal_title: Güncellenmiş Şartlar ve Koşulları gerçekten reddediyor musunuz?
1068
1068
  required_review:
1069
1069
  alert: Hizmet Şartlarımızı güncellendi, lütfen inceleyin.
@@ -1156,7 +1156,7 @@ tr:
1156
1156
  future: gelecek
1157
1157
  past: geçmiş
1158
1158
  filters_small_view:
1159
- close_modal: Yakın kalıcı
1159
+ close_modal: Pencereyi kapat
1160
1160
  filter: filtre
1161
1161
  filter_by: Tarafından filtre
1162
1162
  unfold: açılmak
@@ -1430,7 +1430,7 @@ tr:
1430
1430
  sessions:
1431
1431
  already_signed_out: Başarıyla imzalandı.
1432
1432
  new:
1433
- sign_in: Oturum
1433
+ sign_in: "Giriş \nGiriş Yapın "
1434
1434
  signed_in: Başarıyla imzalandı.
1435
1435
  signed_out: Başarıyla imzalandı.
1436
1436
  shared:
@@ -1439,7 +1439,7 @@ tr:
1439
1439
  didn_t_receive_confirmation_instructions: Onaylama talimatları almadı mı?
1440
1440
  didn_t_receive_unlock_instructions: Kilit açma talimatları almadı mı?
1441
1441
  forgot_your_password: Parolanızı mı unuttunuz?
1442
- sign_in: Oturum
1442
+ sign_in: "Giriş \nGiriş Yapın "
1443
1443
  sign_in_with_provider: '%{provider}ile giriş yap'
1444
1444
  sign_up: kaydol
1445
1445
  minimum_password_length:
@@ -1511,8 +1511,10 @@ tr:
1511
1511
  facebook: "Facebook'ta %{organization}"
1512
1512
  github: "GitHub'da %{organization}"
1513
1513
  instagram: "Instagram'da %{organization}"
1514
- twitter: "Twitter'da %{organization}"
1514
+ x: "X 'de % organizasyon "
1515
1515
  youtube: "YouTube'da %{organization}"
1516
+ upload_modal:
1517
+ close_modal: Pencereyi kapat
1516
1518
  user_menu:
1517
1519
  account: 'Kullanıcı hesabı: %{name}'
1518
1520
  admin_dashboard: Yönetici kontrol paneli
@@ -1567,6 +1569,7 @@ tr:
1567
1569
  weibo: Sina Weibo
1568
1570
  whatsapp_app: Whatsapp
1569
1571
  whatsapp_web: WhatsApp
1572
+ x: X
1570
1573
  xing: Xing
1571
1574
  time:
1572
1575
  formats:
@@ -171,9 +171,12 @@ uk:
171
171
  invalid_field: "Для поля %{field} значення %{value} неприпустиме."
172
172
  ok: Гаразд
173
173
  title: Недостатньо прав через відсутність підтвердження особи
174
- show:
175
- close_modal: Закрити віконце
176
174
  collapsible_list:
175
+ hidden_elements_count:
176
+ one: і ще %{count}
177
+ few: і ще %{count}
178
+ many: і ще %{count}
179
+ other: і ще %{count}
177
180
  see_less: "(читати менше)"
178
181
  see_more: "(читати далі)"
179
182
  components:
@@ -223,7 +226,6 @@ uk:
223
226
  already_have_an_account?: Вже маєте обліковий запис?
224
227
  newsletter: Отримувати іноді розсилання зі свіжими новинами
225
228
  newsletter_title: Дозвіл на зв'язок
226
- sign_in: Увійти
227
229
  sign_up: Зареєструватися
228
230
  sign_up_as:
229
231
  legend: Зареєструватися як
@@ -240,7 +242,6 @@ uk:
240
242
  newsletter_modal:
241
243
  buttons:
242
244
  check: Поставити галочку та продовжити
243
- close_modal: Закрити віконце
244
245
  notice: |-
245
246
  <p>Привіт, ви впевнені, що не хочете отримувати розсилання новин?<br> Будь ласка, ще раз розгляньте можливість поставити нижче галочку щодо розсилання.<br> Для нас дуже важливо, щоб ви могли іноді отримувати електронні листи з важливими оголошеннями. Ви завжди можете змінити це на сторінці налаштувань сповіщень.</p> <p>Якщо ви не поставите цю галочку, ви можете прогледіти доречні відомості щодо свіжих можливостей участі в роботі майданчика.<br> Якщо ви все ж бажаєте уникнути розсилань, ми прекрасно розуміємо таке ваше рішення.</p> <p>Дякуємо, що прочитали це!</p>
246
247
  title: Сповіщення про новини
@@ -267,8 +268,6 @@ uk:
267
268
  show:
268
269
  download_data: Завантажити дані
269
270
  request_data: Подати запит на дані
270
- endorsable:
271
- endorsements: Проявів підтримки
272
271
  errors:
273
272
  internal_server_error:
274
273
  title: При з'єднанні з нашим сервером сталася помилка
@@ -341,9 +340,9 @@ uk:
341
340
  default_image: Зображення за замовчуванням
342
341
  errors:
343
342
  error: У цьому полі є помилка.
344
- links:
345
- warning:
346
- close_modal: Закрити віконце
343
+ upload:
344
+ labels:
345
+ save: Зберегти
347
346
  log:
348
347
  base_presenter:
349
348
  create: "%{user_name} створив %{resource_name}"
@@ -383,12 +382,17 @@ uk:
383
382
  create:
384
383
  error: Бесіда не розпочата. Спробуйте ще раз пізніше
385
384
  index:
386
- close: Закрити віконце
385
+ from: Від
387
386
  no_conversations: У вас ще немає бесід
387
+ title: Бесіди
388
388
  reply:
389
389
  send: Надіслати
390
+ title: Відповісти
391
+ show:
392
+ title: Бесіда з %{usernames}
390
393
  start:
391
394
  send: Надіслати
395
+ title: Почати бесіду
392
396
  newsletter_mailer:
393
397
  newsletter:
394
398
  note: Ви отримали цього електронного листа, оскільки ви підписалися на новини щодо %{organization_name}. Ви можете змінити свої налаштування на <a href="%{link}">сторінці сповіщень</a>.
@@ -440,7 +444,6 @@ uk:
440
444
  proposals: Пропозиції
441
445
  proposals_explanation: Вносьте нові пропозиції, підтримуйте існуючі та сприяйте змінам, які ви хочете бачити.
442
446
  footer_sub_hero:
443
- footer_sub_hero_body: Створімо більш відкрите, прозоре та співпрацююче суспільство.<br /> Долучайтесь, беріть участь та приймайте рішення.
444
447
  footer_sub_hero_headline: Ласкаво просимо до майданчику співучасті %{organization}!
445
448
  register: Зареєструватися
446
449
  hero:
@@ -458,7 +461,6 @@ uk:
458
461
  legend: Погодитися з умовами участі
459
462
  refuse:
460
463
  modal_btn_exit: Я перегляну це пізніше
461
- modal_close: Закрити віконце
462
464
  modal_title: Ви дійсно відмовляєтеся від оновлених "Умов участі"?
463
465
  required_review:
464
466
  alert: Ми оновили наші "Умови участі", будь ласка, перегляньте їх.
@@ -471,6 +473,7 @@ uk:
471
473
  profiles:
472
474
  default_officialization_text_for_users: Особу цього учасника прилюдно підтверджено, його ім'я чи роль перевірено на відповідність його справжньому імені та ролі
473
475
  show:
476
+ conversations: Бесіди
474
477
  followers: Ті, хто стежить
475
478
  following: 'Стежить за:'
476
479
  user:
@@ -502,10 +505,8 @@ uk:
502
505
  term_input_placeholder: Шукати
503
506
  searches:
504
507
  filters_small_view:
505
- close_modal: Закрити віконце
506
508
  filter: Відібрати
507
509
  filter_by: 'Відібрати за ознакою:'
508
- unfold: Розгорнути
509
510
  shared:
510
511
  embed_modal:
511
512
  close_window: Закрити вікно
@@ -538,6 +539,8 @@ uk:
538
539
  user_conversations:
539
540
  index:
540
541
  close: Закрити
542
+ show:
543
+ title: Бесіда з %{usernames}
541
544
  update:
542
545
  error: Повідомлення не надіслано. Спробуйте ще раз пізніше
543
546
  version_author:
@@ -57,9 +57,6 @@ zh-CN:
57
57
  booleans:
58
58
  'false': '否'
59
59
  'true': '否'
60
- carrierwave:
61
- errors:
62
- not_inside_organization: 该文件没有附加到任何组织
63
60
  date:
64
61
  formats:
65
62
  decidim_short: "%d/%m/%Y"
@@ -386,7 +383,6 @@ zh-CN:
386
383
  already_have_an_account?: 已经有一个帐户?
387
384
  newsletter: 接收附带相关信息的时事通讯
388
385
  newsletter_title: 联系人权限
389
- sign_in: 登录
390
386
  sign_up: 注册
391
387
  sign_up_as:
392
388
  legend: 注册为
@@ -432,7 +428,6 @@ zh-CN:
432
428
  download_data: 下载数据
433
429
  request_data: 请求数据
434
430
  endorsable:
435
- endorsements: 授权
436
431
  endorsements_count: 批准次数
437
432
  endorsement_buttons_cell:
438
433
  already_endorsed: 已批准
@@ -635,6 +630,10 @@ zh-CN:
635
630
  file_validation:
636
631
  allowed_file_extensions: '允许的文件扩展名: %{extensions}'
637
632
  max_file_size: '最大文件大小: %{megabytes}MB'
633
+ upload:
634
+ labels:
635
+ cancel: 取消
636
+ save: 保存
638
637
  gamification:
639
638
  all_badges_link: 查看所有可用的徽章。
640
639
  badges:
@@ -959,7 +958,6 @@ zh-CN:
959
958
  proposals: 建议
960
959
  proposals_explanation: 提出建议、支持现有建议并促进你想要看到的更改。
961
960
  footer_sub_hero:
962
- footer_sub_hero_body: 让我们建设一个更加开放、透明和协作的社会。<br /> 加入、参与和决定。
963
961
  footer_sub_hero_headline: 欢迎使用 %{organization} 参与式平台。
964
962
  register: 注册
965
963
  hero:
@@ -1334,8 +1332,6 @@ zh-CN:
1334
1332
  updated: 您的帐户已成功更新。
1335
1333
  sessions:
1336
1334
  already_signed_out: 已成功注销。
1337
- new:
1338
- sign_in: 登录
1339
1335
  signed_in: 登录成功。
1340
1336
  signed_out: 已成功注销。
1341
1337
  shared:
@@ -1344,7 +1340,6 @@ zh-CN:
1344
1340
  didn_t_receive_confirmation_instructions: 没有收到确认说明?
1345
1341
  didn_t_receive_unlock_instructions: 没有收到解锁指令?
1346
1342
  forgot_your_password: 忘记密码?
1347
- sign_in: 登录
1348
1343
  sign_in_with_provider: 使用 %{provider} 登录
1349
1344
  sign_up: 注册
1350
1345
  minimum_password_length:
@@ -1414,8 +1409,9 @@ zh-CN:
1414
1409
  facebook: "%{organization} 在 Facebook"
1415
1410
  github: "%{organization} 在 GitHub"
1416
1411
  instagram: "%{organization} 在 Instagram"
1417
- twitter: "%{organization} 在 Twitter"
1418
1412
  youtube: "%{organization} 在 YouTube"
1413
+ upload_modal:
1414
+ close_modal: 关闭模式
1419
1415
  user_menu:
1420
1416
  account: '用户帐户: %{name}'
1421
1417
  admin_dashboard: 管理员控制面板
@@ -71,10 +71,7 @@ zh-TW:
71
71
  'true': '是'
72
72
  carrierwave:
73
73
  errors:
74
- file_cannot_be_processed: 無法處理檔案
75
- file_resolution_too_large: 檔案解析度過大
76
74
  file_size_too_large: 檔案太大。
77
- not_inside_organization: 該文件未附加到任何組織
78
75
  date:
79
76
  formats:
80
77
  decidim_short: "%d/%m/%Y"
@@ -519,7 +516,6 @@ zh-TW:
519
516
  newsletter: 偶爾收到包含相關信息的時事通訊。
520
517
  newsletter_title: 聯絡人權限
521
518
  nickname_help: 在 %{organization} 中的別名。只能包含字母、數字、'-' 和 '_'。
522
- sign_in: 登入
523
519
  sign_up: 註冊登記
524
520
  sign_up_as:
525
521
  legend: 註冊登記為
@@ -1208,7 +1204,6 @@ zh-TW:
1208
1204
  proposals: 提案
1209
1205
  proposals_explanation: 提出建議、支持現有建議並推動您希望看到的變化。
1210
1206
  footer_sub_hero:
1211
- footer_sub_hero_body: 一起建立更加開放、透明和協作的社會。<br /> 加入、參與和做出決策。
1212
1207
  footer_sub_hero_headline: 歡迎來到 %{organization} 的參與平台。
1213
1208
  register: 註冊
1214
1209
  hero:
@@ -1638,8 +1633,6 @@ zh-TW:
1638
1633
  updated: 您的帳號已成功升級。
1639
1634
  sessions:
1640
1635
  already_signed_out: 已成功登出。
1641
- new:
1642
- sign_in: 登入
1643
1636
  signed_in: 已成功登入。
1644
1637
  signed_out: 已成功登出。
1645
1638
  shared:
@@ -1648,7 +1641,6 @@ zh-TW:
1648
1641
  didn_t_receive_confirmation_instructions: 沒有收到確認的說明嗎?
1649
1642
  didn_t_receive_unlock_instructions: 沒有收到解鎖說明?
1650
1643
  forgot_your_password: 忘記密碼了嗎?
1651
- sign_in: 登入
1652
1644
  sign_in_with_provider: 用%{provider} 登錄
1653
1645
  sign_up: 註冊登記
1654
1646
  minimum_password_length:
@@ -1773,7 +1765,6 @@ zh-TW:
1773
1765
  facebook: "%{organization} 在 Facebook"
1774
1766
  github: "%{organization} 在 GitHub"
1775
1767
  instagram: "%{organization} 在 Instagram"
1776
- twitter: "%{organization} 在 Twitter"
1777
1768
  youtube: "%{organization} 在 YouTube"
1778
1769
  timeout_modal:
1779
1770
  body: 您已經閒置了 %{minutes} 分鐘。如果您繼續閒置,為了您的安全,您將被自動登出。
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ChangeDefaultValueForDecidimEndorsements < ActiveRecord::Migration[6.1]
4
+ def up
5
+ change_column_default :decidim_endorsements, :decidim_user_group_id, 0
6
+ end
7
+
8
+ def down
9
+ change_column_default :decidim_endorsements, :decidim_user_group_id, nil
10
+ end
11
+ end
data/db/seeds.rb CHANGED
@@ -37,6 +37,7 @@ if !Rails.env.production? || ENV.fetch("SEED", nil)
37
37
  port: ENV.fetch("SMTP_PORT", nil) || ENV.fetch("DECIDIM_SMTP_PORT", "25")
38
38
  },
39
39
  host: ENV.fetch("DECIDIM_HOST", "localhost"),
40
+ secondary_hosts: ENV.fetch("DECIDIM_HOST", "localhost") == "localhost" ? ["0.0.0.0", "127.0.0.1"] : nil,
40
41
  external_domain_whitelist: ["decidim.org", "github.com"],
41
42
  description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
42
43
  Decidim::Faker::Localized.sentence(word_count: 15)
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path("lib", __dir__)
4
+
5
+ # Maintain your gem's version:
6
+ require "decidim/core/version"
7
+
8
+ # Describe your gem and declare its dependencies:
9
+ Gem::Specification.new do |s|
10
+ s.name = "decidim-core"
11
+ s.version = Decidim::Core.version
12
+ s.authors = ["Josep Jaume Rey Peroy", "Marc Riera Casals", "Oriol Gual Oliva"]
13
+ s.email = ["josepjaume@gmail.com", "mrc2407@gmail.com", "oriolgual@gmail.com"]
14
+ s.homepage = "https://github.com/decidim/decidim"
15
+ s.summary = "The core of the Decidim framework."
16
+ s.description = "Adds core features so other engines can hook into the framework."
17
+ s.license = "AGPL-3.0"
18
+ s.required_ruby_version = "~> 3.0.0"
19
+
20
+ s.files = Dir.chdir(__dir__) do
21
+ `git ls-files -z`.split("\x0").select do |f|
22
+ (File.expand_path(f) == __FILE__) ||
23
+ f.start_with?(*%w(app/ config/ db/ lib/ Rakefile README.md))
24
+ end
25
+ end
26
+
27
+ s.add_dependency "active_link_to", "~> 1.0"
28
+ s.add_dependency "acts_as_list", "~> 0.9"
29
+ s.add_dependency "batch-loader", "~> 1.2"
30
+ s.add_dependency "browser", "~> 2.7"
31
+ s.add_dependency "carrierwave", "~> 2.2.5", ">= 2.2.5"
32
+ s.add_dependency "cells-erb", "~> 0.1.0"
33
+ s.add_dependency "cells-rails", "~> 0.1.3"
34
+ s.add_dependency "charlock_holmes", "~> 0.7"
35
+ s.add_dependency "date_validator", "~> 0.12.0"
36
+ s.add_dependency "devise", "~> 4.7"
37
+ s.add_dependency "devise-i18n", "~> 1.2"
38
+ s.add_dependency "diffy", "~> 3.3"
39
+ s.add_dependency "doorkeeper", "~> 5.1"
40
+ s.add_dependency "doorkeeper-i18n", "~> 4.0"
41
+ s.add_dependency "file_validators", "~> 3.0"
42
+ s.add_dependency "fog-local", "~> 0.6"
43
+ s.add_dependency "foundation_rails_helper", "~> 4.0"
44
+ s.add_dependency "geocoder", "~> 1.8"
45
+ s.add_dependency "hashdiff", ">= 0.4.0", "< 2.0.0"
46
+ s.add_dependency "invisible_captcha", "~> 0.12"
47
+ s.add_dependency "kaminari", "~> 1.2", ">= 1.2.1"
48
+ s.add_dependency "loofah", "~> 2.19.0"
49
+ s.add_dependency "mime-types", ">= 1.16", "< 4.0"
50
+ s.add_dependency "mini_magick", "~> 4.9"
51
+ s.add_dependency "omniauth", "~> 2.0"
52
+ s.add_dependency "omniauth-facebook", "~> 5.0"
53
+ s.add_dependency "omniauth-google-oauth2", "~> 1.0"
54
+ s.add_dependency "omniauth-rails_csrf_protection", "~> 1.0"
55
+ s.add_dependency "omniauth-twitter", "~> 1.4"
56
+ s.add_dependency "paper_trail", "~> 12.0"
57
+ s.add_dependency "pg", "~> 1.1.4", "< 2"
58
+ s.add_dependency "pg_search", "~> 2.2"
59
+ s.add_dependency "premailer-rails", "~> 1.10"
60
+ s.add_dependency "rack", "~> 2.2", ">= 2.2.3"
61
+ s.add_dependency "rack-attack", "~> 6.0"
62
+ s.add_dependency "rails", "~> 6.1.0"
63
+ s.add_dependency "rails-i18n", "~> 6.0"
64
+ s.add_dependency "ransack", "~> 2.4.1"
65
+ s.add_dependency "redis", "~> 4.1"
66
+ s.add_dependency "request_store", "~> 1.5.0"
67
+ s.add_dependency "rubyXL", "~> 3.4"
68
+ s.add_dependency "rubyzip", "~> 2.0"
69
+ s.add_dependency "seven_zip_ruby", "~> 1.3"
70
+ s.add_dependency "social-share-button", "~> 1.2", ">= 1.2.1"
71
+ s.add_dependency "valid_email2", "~> 2.1"
72
+ s.add_dependency "webpacker", "= 6.0.0.rc.5"
73
+ s.add_dependency "webpush", "~> 1.1"
74
+ s.add_dependency "wisper", "~> 2.0"
75
+
76
+ s.add_development_dependency "decidim-api", Decidim::Core.version
77
+ s.add_development_dependency "decidim-dev", Decidim::Core.version
78
+ end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Decidim
4
+ # Adapted from https://hashrocket.com/blog/posts/recursive-sql-in-activerecord
4
5
  module ActsAsTree
5
6
  extend ActiveSupport::Concern
6
7
 
@@ -15,10 +16,22 @@ module Decidim
15
16
  @parent_item_foreign_key = name
16
17
  end
17
18
 
19
+ def parent_item_polymorphic_type_key(name = nil)
20
+ return @parent_item_polymorphic_type_key unless name
21
+
22
+ @parent_item_polymorphic_type_key = name
23
+ end
24
+
18
25
  def tree_for(item)
19
26
  where(Arel.sql("#{table_name}.id IN (#{tree_sql_for(item)})")).order("#{table_name}.id")
20
27
  end
21
28
 
29
+ def polymorphic_condition(item)
30
+ return "" if parent_item_polymorphic_type_key.blank?
31
+
32
+ "AND #{table_name}.#{parent_item_polymorphic_type_key} = '#{item.class.name}'"
33
+ end
34
+
22
35
  def tree_sql_for(item)
23
36
  <<-SQL.squish
24
37
  WITH RECURSIVE search_tree(id, path) AS (
@@ -28,7 +41,7 @@ module Decidim
28
41
  UNION ALL
29
42
  SELECT #{table_name}.id, path || #{table_name}.id
30
43
  FROM search_tree
31
- JOIN #{table_name} ON #{table_name}.#{parent_item_foreign_key} = search_tree.id
44
+ JOIN #{table_name} ON #{table_name}.#{parent_item_foreign_key} = search_tree.id #{polymorphic_condition(item)}
32
45
  WHERE NOT #{table_name}.id = ANY(path)
33
46
  )
34
47
  SELECT id FROM search_tree ORDER BY path
@@ -19,13 +19,17 @@ module Decidim
19
19
  #
20
20
  # @param options The options for the URL that are the normal route options
21
21
  # Rails route helpers accept
22
+ # rubocop:disable Style/CaseLikeIf
22
23
  def url(**options)
23
24
  if asset.is_a? ActiveStorage::Attached
24
25
  routes.rails_blob_url(asset.blob, **default_options.merge(options))
26
+ elsif asset.is_a? ActiveStorage::Blob
27
+ routes.rails_blob_url(asset, **default_options.merge(options))
25
28
  else
26
29
  routes.rails_representation_url(asset, **default_options.merge(options))
27
30
  end
28
31
  end
32
+ # rubocop:enable Style/CaseLikeIf
29
33
 
30
34
  private
31
35
 
@@ -19,10 +19,12 @@ module Decidim
19
19
  end
20
20
 
21
21
  def self.cryptor
22
- key = ActiveSupport::KeyGenerator.new("attribute").generate_key(
23
- Rails.application.secrets.secret_key_base, ActiveSupport::MessageEncryptor.key_len
24
- )
25
- ActiveSupport::MessageEncryptor.new(key)
22
+ @cryptor ||= begin
23
+ key = ActiveSupport::KeyGenerator.new("attribute").generate_key(
24
+ Rails.application.secrets.secret_key_base, ActiveSupport::MessageEncryptor.key_len
25
+ )
26
+ ActiveSupport::MessageEncryptor.new(key)
27
+ end
26
28
  end
27
29
  end
28
30
  end
@@ -246,9 +246,13 @@ module Decidim
246
246
  end
247
247
 
248
248
  initializer "decidim.notifications" do
249
- config.to_prepare do
250
- Decidim::EventsManager.subscribe(/^decidim\.events\./) do |event_name, data|
251
- EventPublisherJob.perform_later(event_name, data)
249
+ if Rails.autoloaders.zeitwerk_enabled?
250
+ config.after_initialize do
251
+ Decidim::EventsManager.subscribe_events!
252
+ end
253
+ else
254
+ config.to_prepare do
255
+ Decidim::EventsManager.subscribe_events!
252
256
  end
253
257
  end
254
258
  end