decidim-core 0.30.0.rc1 → 0.30.0.rc3

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 (104) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/amendable/amendments/show.erb +1 -1
  3. data/app/cells/decidim/profile_actions/show.erb +1 -1
  4. data/app/cells/decidim/report_button/already_reported_modal.erb +2 -2
  5. data/app/cells/decidim/report_button/flag_modal.erb +13 -27
  6. data/app/cells/decidim/report_button_cell.rb +2 -8
  7. data/app/cells/decidim/report_user_button/already_reported_modal.erb +11 -0
  8. data/app/cells/decidim/report_user_button/flag_modal.erb +46 -0
  9. data/app/cells/decidim/report_user_button/show.erb +2 -0
  10. data/app/cells/decidim/report_user_button_cell.rb +59 -0
  11. data/app/cells/decidim/resource_types_filter/show.erb +1 -1
  12. data/app/cells/decidim/resource_types_filter_cell.rb +6 -6
  13. data/app/cells/decidim/user_activity/show.erb +1 -1
  14. data/app/commands/decidim/create_omniauth_registration.rb +14 -8
  15. data/app/controllers/decidim/profiles_controller.rb +2 -2
  16. data/app/controllers/decidim/user_activities_controller.rb +1 -1
  17. data/app/forms/decidim/account_form.rb +2 -2
  18. data/app/helpers/decidim/orders_helper.rb +2 -1
  19. data/app/helpers/decidim/participatory_space_helpers.rb +1 -1
  20. data/app/jobs/decidim/hide_child_resources_job.rb +24 -0
  21. data/app/jobs/decidim/migrate/paper_trail_job.rb +33 -0
  22. data/app/models/decidim/report.rb +1 -1
  23. data/app/models/decidim/user.rb +0 -4
  24. data/app/models/decidim/user_base_entity.rb +4 -0
  25. data/app/packs/src/decidim/map/provider/here.js +1 -1
  26. data/app/packs/src/decidim/sticky_footer.js +19 -0
  27. data/app/packs/stylesheets/decidim/_cards.scss +4 -0
  28. data/app/packs/stylesheets/decidim/_content_blocks.scss +1 -1
  29. data/app/packs/stylesheets/decidim/_hashtags.scss +5 -0
  30. data/app/packs/stylesheets/decidim/_login.scss +4 -0
  31. data/app/packs/stylesheets/decidim/_modal_authorization.scss +1 -1
  32. data/app/packs/stylesheets/decidim/_profile.scss +1 -1
  33. data/app/packs/stylesheets/decidim/application.scss +1 -0
  34. data/app/resolvers/decidim/meta_image_url_resolver.rb +1 -0
  35. data/app/services/decidim/static_map_generator.rb +1 -1
  36. data/app/views/decidim/devise/registrations/new.html.erb +1 -1
  37. data/app/views/decidim/devise/sessions/new.html.erb +1 -1
  38. data/app/views/decidim/devise/shared/_omniauth_buttons.html.erb +1 -1
  39. data/app/views/decidim/last_activities/index.html.erb +1 -1
  40. data/app/views/decidim/open_data/index.html.erb +1 -1
  41. data/app/views/decidim/shared/_orders.html.erb +2 -2
  42. data/config/locales/ar.yml +12 -25
  43. data/config/locales/bg.yml +8 -22
  44. data/config/locales/ca.yml +22 -34
  45. data/config/locales/cs.yml +24 -31
  46. data/config/locales/de.yml +17 -21
  47. data/config/locales/el.yml +8 -13
  48. data/config/locales/en.yml +4 -16
  49. data/config/locales/eo.yml +2 -0
  50. data/config/locales/es-MX.yml +16 -28
  51. data/config/locales/es-PY.yml +21 -33
  52. data/config/locales/es.yml +22 -34
  53. data/config/locales/eu.yml +61 -75
  54. data/config/locales/fi-plain.yml +20 -27
  55. data/config/locales/fi.yml +22 -29
  56. data/config/locales/fr-CA.yml +60 -20
  57. data/config/locales/fr.yml +60 -20
  58. data/config/locales/ga-IE.yml +2 -4
  59. data/config/locales/gl.yml +22 -13
  60. data/config/locales/hu.yml +7 -21
  61. data/config/locales/id-ID.yml +22 -13
  62. data/config/locales/is-IS.yml +10 -0
  63. data/config/locales/it.yml +22 -20
  64. data/config/locales/ja.yml +120 -21
  65. data/config/locales/lb.yml +19 -19
  66. data/config/locales/lt.yml +5 -17
  67. data/config/locales/lv.yml +16 -13
  68. data/config/locales/nl.yml +20 -17
  69. data/config/locales/no.yml +16 -16
  70. data/config/locales/pl.yml +4 -18
  71. data/config/locales/pt-BR.yml +8 -21
  72. data/config/locales/pt.yml +16 -16
  73. data/config/locales/ro-RO.yml +39 -20
  74. data/config/locales/ru.yml +23 -8
  75. data/config/locales/sk.yml +27 -16
  76. data/config/locales/sv.yml +46 -25
  77. data/config/locales/tr-TR.yml +21 -20
  78. data/config/locales/uk.yml +12 -1
  79. data/config/locales/zh-CN.yml +16 -13
  80. data/config/locales/zh-TW.yml +6 -16
  81. data/db/migrate/20240722215500_change_object_changes_on_versions.rb +4 -24
  82. data/lib/decidim/content_parsers/user_parser.rb +1 -1
  83. data/lib/decidim/core/test/shared_examples/reports_examples.rb +51 -0
  84. data/lib/decidim/core/test/shared_examples/social_share_examples.rb +21 -0
  85. data/lib/decidim/core/version.rb +1 -1
  86. data/lib/decidim/maintenance/import_models/category.rb +40 -8
  87. data/lib/decidim/maintenance/taxonomy_importer.rb +10 -0
  88. data/lib/decidim/map/provider/dynamic_map/here.rb +1 -40
  89. data/lib/decidim/map/provider/static_map/here.rb +34 -0
  90. data/lib/decidim/moderation_tools.rb +15 -2
  91. data/lib/decidim/nicknamizable.rb +1 -1
  92. data/lib/tasks/decidim_taxonomies.rake +6 -1
  93. data/lib/tasks/upgrade/clean_hidden_resources.rake +33 -0
  94. data/lib/tasks/upgrade/decidim_fix_nickname_uniqueness.rake +23 -20
  95. data/lib/tasks/upgrade/migrations.rake +4 -1
  96. metadata +14 -14
  97. data/app/cells/decidim/author/flag.erb +0 -6
  98. data/app/cells/decidim/author/flag_user.erb +0 -14
  99. data/app/cells/decidim/flag_modal/flag_user.erb +0 -34
  100. data/app/cells/decidim/flag_modal/show.erb +0 -52
  101. data/app/cells/decidim/flag_modal_cell.rb +0 -56
  102. data/app/cells/decidim/profile_sidebar/show.erb +0 -167
  103. data/app/cells/decidim/profile_sidebar_cell.rb +0 -68
  104. data/app/packs/src/decidim/vendor/leaflet-tilelayer-here.js +0 -212
@@ -35,6 +35,8 @@ sv:
35
35
  personal_url: Personlig URL
36
36
  remove_avatar: Ta bort avatar
37
37
  tos_agreement: Användarvillkor
38
+ user_group:
39
+ avatar: Profilbild
38
40
  models:
39
41
  decidim/attachment_created_event: Bilaga
40
42
  decidim/component_published_event: Aktiv komponent
@@ -716,7 +718,42 @@ sv:
716
718
  created_at: Datum och tid då identiteten skapades
717
719
  id: Unikt id för identiteten
718
720
  provider: Leverantören av identiteten
721
+ participatory_space_private_users:
722
+ created_at: Datum och tid när den privata användaren skapades
723
+ id: Unikt id för den privata användaren
724
+ privatable_to: Till vilken plats den privata användaren tillhör
725
+ published: Om den privata användaren är publicerad eller inte
726
+ role: Den privata användarens roll
727
+ updated_at: Datum och tid när den privata användaren senast uppdaterades
728
+ reports:
729
+ created_at: Datum och tid för när rapporteringen skapades
730
+ details: Mer information om rapporteringen
731
+ id: Unikt id för rapporteringen
732
+ locale: Rapporteringens språk
733
+ moderation: Moderering av rapporteringen
734
+ reason: Anledning till rapporteringen
735
+ updated_at: Datum och tid för när rapporteringen senast uppdaterades
736
+ user_groups:
737
+ document_number: Dokumentnumret för denna användargrupp
738
+ id: Unikt id för användargruppen
739
+ name: Namn på användargruppen
740
+ phone: Telefonnummer till användargruppen
741
+ verified_at: Datum och tid för när användargruppen verifierades
719
742
  users:
743
+ about: Presentation av användaren
744
+ accepted_tos_version: Det datum då användarvillkoren godkändes av användaren
745
+ admin: Om användaren är administratör
746
+ confirmation_sent_at: Datum och tid då bekräftelsen skickades
747
+ confirmed_at: Datum och tid när användaren bekräftades
748
+ created_at: Datum och tid när användaren skapades
749
+ current_sign_in_at: Datum och tid för den aktuella inloggningen
750
+ current_sign_in_ip: IP-adressen för den aktuella inloggningen
751
+ delete_reason: Anledningen till att ta bort denna användare
752
+ deleted_at: Datum och tid när användaren togs bort
753
+ email: E-postadressen till användaren
754
+ followers_count: Antal deltagare som följer användaren
755
+ following_count: Antal deltagare som användaren följer
756
+ id: Unikt id för användaren
720
757
  invited_by: Användaren som bjöd in den här användaren
721
758
  last_sign_in_at: Datum och tid för senaste inloggningen
722
759
  last_sign_in_ip: IP-adressen för den senaste inloggningen
@@ -1034,7 +1071,7 @@ sv:
1034
1071
  accept:
1035
1072
  error: Det gick inte att godkänna den här inbjudan.
1036
1073
  success: Inbjudan har godkänts.
1037
- accept_invitation: Godkänn
1074
+ accept_invitation: Acceptera
1038
1075
  accept_or_reject_group_invitations: 'Du har blivit inbjuden till följande grupper. Godkänn eller avvisa deras förfrågningar:'
1039
1076
  index:
1040
1077
  invite: Inbjudan
@@ -1092,7 +1129,7 @@ sv:
1092
1129
  success: Du har lämnat gruppen.
1093
1130
  members:
1094
1131
  accept_or_reject_join_requests: 'Följande användare har ansökt om att få gå med i den här gruppen. Godkänn eller avvisa deras förfrågningar:'
1095
- accept_request: Godkänn
1132
+ accept_request: Acceptera
1096
1133
  reject_request: Avvisa
1097
1134
  new:
1098
1135
  create_user_group: Skapa grupp
@@ -1171,13 +1208,13 @@ sv:
1171
1208
  conversation_mailer:
1172
1209
  comanagers_new_conversation:
1173
1210
  admin_in_group: Du får detta eftersom du är administratör i %{group}.
1174
- greeting: Hi, %{recipient}!
1211
+ greeting: Hej %{recipient}!
1175
1212
  intro: "%{manager} har startat en ny konversation som %{group}. Klicka här för att se den:"
1176
1213
  outro: Ha det så kul!
1177
1214
  subject: "%{manager} har startat en ny konversation som %{group}"
1178
1215
  comanagers_new_message:
1179
1216
  admin_in_group: Du får detta eftersom du är administratör i %{group}.
1180
- greeting: Hi, %{recipient}!
1217
+ greeting: Hej %{recipient}!
1181
1218
  intro: "%{manager} har postat nya meddelanden i en konversation som %{group}. Klicka här för att se dem:"
1182
1219
  outro: Ha det så kul!
1183
1220
  subject: "%{manager} har skickat nya meddelanden som %{group}"
@@ -1188,13 +1225,13 @@ sv:
1188
1225
  subject: "%{sender} har startat en konversation med dig"
1189
1226
  new_group_conversation:
1190
1227
  admin_in_group: Du får detta eftersom du är administratör i %{group}.
1191
- greeting: Hi, %{recipient}!
1228
+ greeting: Hej %{recipient}!
1192
1229
  intro: "%{sender} har startat en ny konversation med gruppen %{group}. Klicka här för att se den:"
1193
1230
  outro: Ha det så kul!
1194
1231
  subject: "%{sender} har startat en konversation med %{group}"
1195
1232
  new_group_message:
1196
1233
  admin_in_group: Du får detta eftersom du är administratör i %{group}.
1197
- greeting: Hi, %{recipient}!
1234
+ greeting: Hej %{recipient}!
1198
1235
  intro: "%{sender} har postat nya meddelanden i en konversation med gruppen %{group}. Klicka här för att se den:"
1199
1236
  outro: Ha det så kul!
1200
1237
  subject: "%{group} har fått nya meddelanden från %{sender}"
@@ -1438,35 +1475,22 @@ sv:
1438
1475
  members: Medlemmar
1439
1476
  officialized: Officiell deltagare
1440
1477
  send_private_message: Skicka privat meddelande
1441
- sidebar:
1442
- badges:
1443
- info: Man får märken genom att utföra olika aktiviteter på plattformen.
1444
- title: Märken
1445
1478
  user:
1446
1479
  actions:
1447
1480
  create_user_group: Skapa grupp
1448
1481
  disabled_message: Meddelande
1449
1482
  edit_profile: Redigera profil
1450
- edit_user_group: Redigera gruppens profil
1483
+ edit_user_group: Redigera grupprofil
1451
1484
  invite_user: Bjud in deltagare
1452
- join_user_group: Ansök om att gå med i grupp
1485
+ join_user_group: Begäran att gå med i grupp
1453
1486
  leave_user_group: Lämna grupp
1454
1487
  manage_user_group: Hantera grupp
1455
1488
  manage_user_group_admins: Hantera administratörer
1456
1489
  manage_user_group_users: Hantera medlemmar
1457
1490
  message: Meddelande
1458
- resend_email_confirmation_instructions: Skicka e-postmeddelande med bekräftelseinstruktioner igen
1491
+ resend_email_confirmation_instructions: Skicka anvisningarna om bekräftelse om e-post igen
1459
1492
  confirmation_instructions_sent: Instruktioner för e-postbekräftelse har skickats.
1460
- create_user_group: Skapa grupp
1461
- edit_profile: Redigera profil
1462
- edit_user_group: Redigera grupprofil
1463
1493
  fill_in_email_to_confirm_it: Fyll i gruppens e-postadress för att bekräfta den.
1464
- invite_user: Bjud in deltagare
1465
- join_user_group: Begäran att gå med i grupp
1466
- leave_user_group: Lämna grupp
1467
- manage_user_group_admins: Hantera administratörer
1468
- manage_user_group_users: Hantera medlemmar
1469
- resend_email_confirmation_instructions: Skicka anvisningarna om bekräftelse om e-post igen
1470
1494
  reported_mailer:
1471
1495
  hide:
1472
1496
  hello: Hej %{name},
@@ -1550,14 +1574,11 @@ sv:
1550
1574
  flag_user_modal:
1551
1575
  already_reported: Det här innehållet har redan rapporterats och kommer att granskas av en administratör.
1552
1576
  block: Blockera användaren
1553
- close: Stäng
1554
- description: Vad är olämpligt med användaren?
1555
1577
  does_not_belong: Innehåller olaglig information, hot om självmord, personuppgifter eller något annat som inte hör hemma på %{organization_name}.
1556
1578
  hide: Dölj allt innehåll
1557
1579
  offensive: Innehåller rasism, sexism, personangrepp, mordhot, uppmaning att begå självmord eller hets mot folkgrupp.
1558
1580
  report: Rapportera
1559
1581
  spam: Innehåller clickbait, reklam, bedrägerier eller botar.
1560
- title: Rapportera olämplig användare
1561
1582
  floating_help:
1562
1583
  help: Hjälp
1563
1584
  follow_button:
@@ -25,6 +25,8 @@ tr:
25
25
  password_confirmation: Şifrenizi Onaylayın
26
26
  personal_url: Kişisel URL
27
27
  remove_avatar: Avatarı kaldır
28
+ user_group:
29
+ avatar: Avatar
28
30
  models:
29
31
  decidim/attachment_created_event: Ek dosya
30
32
  decidim/component_published_event: Aktif bileşen
@@ -721,14 +723,15 @@ tr:
721
723
  conversation_mailer:
722
724
  comanagers_new_conversation:
723
725
  admin_in_group: Bunu, %{group} grubunun yöneticisi olduğunuz için alıyorsunuz.
724
- greeting: Merhaba, %{recipient}!
726
+ greeting: Merhaba %{recipient}!
725
727
  intro: "%{manager}, %{group} adına yeni bir görüşme başlattı. Görmek için buraya tıklayın:"
726
728
  outro: Platformun tadını çıkarın!
727
729
  subject: "%{manager}, %{group} olarak yeni bir görüşme başlattı"
728
730
  comanagers_new_message:
729
731
  admin_in_group: Bunu, %{group} grubunun yöneticisi olduğunuz için alıyorsunuz.
730
- greeting: Merhaba, %{recipient}!
732
+ greeting: Merhaba %{recipient}!
731
733
  intro: "%{manager}, %{group} adına bir görüşmede yeni mesajlar yayınladı. Onları görmek için buraya tıklayın:"
734
+ outro: Platformun tadını çıkarın!
732
735
  subject: "%{manager} %{group} olarak yeni mesajlar gönderdi"
733
736
  new_conversation:
734
737
  greeting: Merhaba %{recipient}!
@@ -737,13 +740,13 @@ tr:
737
740
  subject: "%{sender} sizinle bir konuşma başlattı"
738
741
  new_group_conversation:
739
742
  admin_in_group: Bunu, %{group} grubunun yöneticisi olduğunuz için alıyorsunuz.
740
- greeting: Merhaba, %{recipient}!
743
+ greeting: Merhaba %{recipient}!
741
744
  intro: "%{sender}, %{group} adına yeni bir görüşme başlattı. Görmek için buraya tıklayın:"
742
745
  outro: Platformun tadını çıkarın!
743
746
  subject: "%{sender}, %{group} olarak yeni bir görüşme başlattı"
744
747
  new_group_message:
745
748
  admin_in_group: Bunu, %{group} grubunun yöneticisi olduğunuz için alıyorsunuz.
746
- greeting: Merhaba, %{recipient}!
749
+ greeting: Merhaba %{recipient}!
747
750
  intro: "%{sender}, %{group} grubuyla bir görüşmede yeni mesajlar yayınladı. Görmek için buraya tıklayın:"
748
751
  outro: Platformun tadını çıkarın!
749
752
  subject: "%{group}, %{sender} adlı kişiden yeni mesajlar aldı"
@@ -767,6 +770,8 @@ tr:
767
770
  new_conversation: Yeni görüşme
768
771
  next: Sonraki
769
772
  title: Konuşmalar
773
+ reply_form:
774
+ placeholder: Cevabınız...
770
775
  show:
771
776
  back: Tüm görüşmelere dön
772
777
  chat_with: ile görüşme
@@ -884,23 +889,22 @@ tr:
884
889
  conversations: Konuşmalar
885
890
  followers: Takipçiler
886
891
  following: Takip Et
892
+ group_admins: Yöneticileri yönet
893
+ group_members: Üyeleri yönet
887
894
  groups: Gruplar
888
895
  members: Üyeler
889
896
  officialized: Resmi katılımcı
890
- sidebar:
891
- badges:
892
- info: Rozetler, platformda belirli etkinlikler gerçekleştirilerek kazanılır.
893
- title: Rozetler
894
897
  user:
895
- create_user_group: Grup oluştur
896
- edit_profile: Profili Düzenle
897
- edit_user_group: Grup profilini düzenle
898
- invite_user: Katılımcı davet et
899
- join_user_group: Gruba katılma isteği
900
- leave_user_group: Gruptan ayrıl
901
- manage_user_group_admins: Yöneticileri yönet
902
- manage_user_group_users: Üyeleri yönet
903
- resend_email_confirmation_instructions: E-posta doğrulama talimatlarını tekrar gönder
898
+ actions:
899
+ create_user_group: Grup oluştur
900
+ edit_profile: Profili Düzenle
901
+ edit_user_group: Grup profilini düzenle
902
+ invite_user: Katılımcı davet et
903
+ join_user_group: Gruba katılma isteği
904
+ leave_user_group: Gruptan ayrıl
905
+ manage_user_group_admins: Yöneticileri yönet
906
+ manage_user_group_users: Üyeleri yönet
907
+ resend_email_confirmation_instructions: E-posta doğrulama talimatlarını tekrar gönder
904
908
  reported_mailer:
905
909
  hide:
906
910
  hello: Merhaba %{name}
@@ -974,12 +978,9 @@ tr:
974
978
  title: Sorun bildir
975
979
  flag_user_modal:
976
980
  already_reported: Bu içerik zaten bildirildi ve bir yönetici tarafından incelenecek.
977
- close: Kapat
978
- description: Kullanıcı hakkında uygunsuz olan nedir?
979
981
  offensive: Irkçılık, cinsiyetçilik, hakaretler, kişisel saldırılar, ölüm tehditleri, intihar talepleri veya her türlü nefret söylemi içerir.
980
982
  report: Bildir
981
983
  spam: Tıklama tuzağı, reklam, dolandırıcılık veya komut dosyası botları içerir.
982
- title: Uygunsuz Kullanıcıyı bildirin
983
984
  floating_help:
984
985
  help: yardım et
985
986
  follow_button:
@@ -315,10 +315,18 @@ uk:
315
315
  home: Головна
316
316
  messaging:
317
317
  conversation_mailer:
318
+ comanagers_new_conversation:
319
+ greeting: Вітаємо, %{recipient}!
320
+ comanagers_new_message:
321
+ greeting: Вітаємо, %{recipient}!
318
322
  new_conversation:
319
323
  greeting: Вітаємо, %{recipient}!
320
324
  intro: "%{sender} почав з вами нову бесіду. Клацніть тут, щоб прочитати її:"
321
325
  subject: "%{sender} почав з вами бесіду"
326
+ new_group_conversation:
327
+ greeting: Вітаємо, %{recipient}!
328
+ new_group_message:
329
+ greeting: Вітаємо, %{recipient}!
322
330
  new_message:
323
331
  greeting: Доброго дня, %{recipient}!
324
332
  intro: "%{sender} написав нові повідомлення у вашій бесіді. Клацніть тут, щоб переглянути їх:"
@@ -385,7 +393,8 @@ uk:
385
393
  followers: Ті, хто стежить
386
394
  following: 'Стежить за:'
387
395
  user:
388
- edit_profile: Редагувати профіль
396
+ actions:
397
+ edit_profile: Редагувати профіль
389
398
  reported_mailer:
390
399
  hide:
391
400
  hello: Доброго дня, %{name}%!
@@ -430,6 +439,8 @@ uk:
430
439
  statistics:
431
440
  comments_count: Коментарів
432
441
  user_conversations:
442
+ reply:
443
+ send: Надіслати
433
444
  update:
434
445
  error: Повідомлення не надіслано. Спробуйте ще раз пізніше
435
446
  devise:
@@ -25,6 +25,8 @@ zh-CN:
25
25
  password_confirmation: 确认您的密码
26
26
  personal_url: 个人网址
27
27
  remove_avatar: 删除头像
28
+ user_group:
29
+ avatar: 头像
28
30
  models:
29
31
  decidim/attachment_created_event: 附文
30
32
  decidim/component_published_event: 活动组件
@@ -681,6 +683,8 @@ zh-CN:
681
683
  new_conversation: 新建对话
682
684
  next: 下一个
683
685
  title: 对话
686
+ reply_form:
687
+ placeholder: 您的回复...
684
688
  show:
685
689
  back: 回到所有对话
686
690
  chat_with: 对话
@@ -794,23 +798,22 @@ zh-CN:
794
798
  conversations: 对话
795
799
  followers: 关注者
796
800
  following: 关注的问题
801
+ group_admins: 管理管理员
802
+ group_members: 管理成员
797
803
  groups: 群組
798
804
  members: 成员
799
805
  officialized: 官方参与者
800
- sidebar:
801
- badges:
802
- info: 徽章是通过在平台上执行特定活动赚取的。
803
- title: 徽章
804
806
  user:
805
- create_user_group: 创建组
806
- edit_profile: 编辑配置文件
807
- edit_user_group: 编辑群组资料
808
- invite_user: Invite participant
809
- join_user_group: 加入组的请求
810
- leave_user_group: 离开组
811
- manage_user_group_admins: 管理管理员
812
- manage_user_group_users: 管理成员
813
- resend_email_confirmation_instructions: 重新发送电子邮件确认说明
807
+ actions:
808
+ create_user_group: 创建组
809
+ edit_profile: 编辑配置文件
810
+ edit_user_group: 编辑群组资料
811
+ invite_user: Invite participant
812
+ join_user_group: 加入组的请求
813
+ leave_user_group: 离开组
814
+ manage_user_group_admins: 管理管理员
815
+ manage_user_group_users: 管理成员
816
+ resend_email_confirmation_instructions: 重新发送电子邮件确认说明
814
817
  reported_mailer:
815
818
  hide:
816
819
  hello: 您好 %{name},
@@ -31,6 +31,8 @@ zh-TW:
31
31
  personal_url: 個人 URL
32
32
  remove_avatar: 刪除頭像
33
33
  tos_agreement: 同意服務條款
34
+ user_group:
35
+ avatar: 頭像
34
36
  models:
35
37
  decidim/attachment_created_event: 附件
36
38
  decidim/component_published_event: 啟用組件
@@ -1192,14 +1194,12 @@ zh-TW:
1192
1194
  conversations: 對話
1193
1195
  followers: 追隨者
1194
1196
  following: 關注
1197
+ group_admins: 管理管理員
1198
+ group_members: 管理成員
1195
1199
  groups: 群組
1196
1200
  members: 成員
1197
1201
  officialized: 正式認證參與者
1198
1202
  send_private_message: 發送私人訊息
1199
- sidebar:
1200
- badges:
1201
- info: 徽章是通過在平台上執行特定活動而獲得的。
1202
- title: 徽章
1203
1203
  user:
1204
1204
  actions:
1205
1205
  create_user_group: 建立群組
@@ -1207,20 +1207,13 @@ zh-TW:
1207
1207
  edit_user_group: 編輯群組資料
1208
1208
  invite_user: 邀請參與者
1209
1209
  join_user_group: 申請加入群組
1210
+ leave_user_group: 退出群組
1210
1211
  manage_user_group_admins: 管理管理員
1211
1212
  manage_user_group_users: 管理成員
1212
1213
  message: 訊息
1214
+ resend_email_confirmation_instructions: 重新發送電子郵件確認指示
1213
1215
  confirmation_instructions_sent: 電子郵件確認指示已發送.
1214
- create_user_group: 建立群組
1215
- edit_profile: 編輯個人資料
1216
- edit_user_group: 編輯群組資料
1217
1216
  fill_in_email_to_confirm_it: 請填寫您的群組電子郵件以進行確認.
1218
- invite_user: 邀請參與者
1219
- join_user_group: 申請加入群組
1220
- leave_user_group: 退出群組
1221
- manage_user_group_admins: 管理管理員
1222
- manage_user_group_users: 管理成員
1223
- resend_email_confirmation_instructions: 重新發送電子郵件確認指示
1224
1217
  reported_mailer:
1225
1218
  hide:
1226
1219
  hello: 哈囉,%{name},
@@ -1297,14 +1290,11 @@ zh-TW:
1297
1290
  flag_user_modal:
1298
1291
  already_reported: 此內容已被舉報,將由管理員進行審查。
1299
1292
  block: 封鎖此參與者
1300
- close: 關閉
1301
- description: 關於該使用者有什麼不適當的行為?
1302
1293
  does_not_belong: 包含非法活動、自殺威脅、個人資訊或其他您認為不適合在%{organization_name} 上的內容。
1303
1294
  hide: 隱藏所有內容
1304
1295
  offensive: 包含種族主義、性別歧視、辱罵、人身攻擊、死亡威脅、自殺要求或任何形式的仇恨言論
1305
1296
  report: 報告
1306
1297
  spam: 包含點閱率誘導、廣告、詐騙或自動腳本。
1307
- title: 舉報不適當的使用者
1308
1298
  floating_help:
1309
1299
  help: 幫助
1310
1300
  mentions_modal:
@@ -5,32 +5,12 @@ class ChangeObjectChangesOnVersions < ActiveRecord::Migration[6.1]
5
5
  rename_column :versions, :object_changes, :old_object_changes
6
6
  add_column :versions, :object_changes, :jsonb # or :json
7
7
 
8
- PaperTrail::Version.where.not(old_object_changes: nil).find_each do |version|
9
- # This is an adaptation of PaperTrail internal load_changeset method,having in mind that we
10
- # need to call also the code from PaperTrail::AttributeSerializer::ObjectChangesAttribute
11
- object_changes = ActiveSupport::HashWithIndifferentAccess.new(YAML.unsafe_load(version.old_object_changes))
12
- unless version.item_type.constantize.unscoped.find_by(id: version.item_id).nil?
13
- # This is the deserialization code from `PaperTrail::AttributeSerializer::ObjectChangesAttribute`
14
- # where we skip checking the object changeset column type, as we migrate it from YAML to JSON
15
- changes_to_serialize = object_changes.clone
16
- if changes_to_serialize.present?
17
- serializer = PaperTrail::AttributeSerializers::CastAttributeSerializer.new(version.item_type.constantize)
18
- changes_to_serialize.each do |key, change|
19
- # `change` is an Array with two elements, representing before and after.
20
- object_changes[key] = Array(change).map do |value|
21
- serializer.send(:deserialize, key, value)
22
- end
23
- end
24
- end
25
- end
8
+ PaperTrail::Version.reset_column_information
26
9
 
27
- version.update_columns(old_object_changes: nil, object_changes:) # rubocop:disable Rails/SkipsModelValidations
28
- rescue NameError
29
- Rails.logger.info "Skipping History of #{version.item_type} with id #{version.item_id}"
10
+ PaperTrail::Version.where.not(old_object_changes: nil).find_each do |version|
11
+ # we set a time interval to ensure that deployment has succeeded
12
+ Decidim::Migrate::PaperTrailJob.set(wait: 10.minutes).perform_later(version.id)
30
13
  end
31
-
32
- PaperTrail::Version.reset_column_information
33
- remove_column :versions, :old_object_changes
34
14
  end
35
15
 
36
16
  def down
@@ -49,7 +49,7 @@ module Decidim
49
49
 
50
50
  def existing_mentionables
51
51
  @existing_mentionables ||= mentionable_class.where(
52
- "decidim_organization_id = ? AND LOWER(nickname) IN (?)",
52
+ "decidim_organization_id = ? AND nickname IN (?)",
53
53
  current_organization.id,
54
54
  content_nicknames
55
55
  )
@@ -59,6 +59,56 @@ shared_examples "higher user role hides" do
59
59
  end
60
60
  end
61
61
 
62
+ shared_examples "higher user role hides resource with comments" do
63
+ context "and the admin hides a resource with comments" do
64
+ let!(:comments) { create_list(:comment, 2, body: "Dummy comment", commentable: reportable, author: user) }
65
+
66
+ before do
67
+ login_as user, scope: :user
68
+ Decidim::Ai::SpamDetection.create_reporting_user!
69
+ end
70
+ around do |example|
71
+ previous = Capybara.raise_server_errors
72
+
73
+ # Disabling server errors to that we can test page not found error.
74
+ Capybara.raise_server_errors = false
75
+ example.run
76
+ Capybara.raise_server_errors = previous
77
+ end
78
+
79
+ it "hides the resource" do
80
+ visit decidim.search_path
81
+ expect(page).to have_content(translated(comments.first.body))
82
+ expect(page).to have_content(translated(comments.second.body))
83
+
84
+ visit reportable_path
85
+
86
+ expect(page).to have_content(translated(comments.first.body))
87
+ expect(page).to have_content(translated(comments.second.body))
88
+
89
+ find("#dropdown-trigger-resource-#{reportable.id}").click
90
+ expect(page).to have_css(%(button[data-dialog-open="flagModal"]))
91
+ find(%(button[data-dialog-open="flagModal"])).click
92
+ expect(page).to have_css(".flag-modal", visible: :visible)
93
+
94
+ within ".flag-modal" do
95
+ find(:css, "input[name='report[hide]']").set(true)
96
+ click_on "Hide"
97
+ end
98
+
99
+ perform_enqueued_jobs
100
+
101
+ expect(reportable.reload).to be_hidden
102
+ expect(comments.first.reload).to be_hidden
103
+ expect(comments.second.reload).to be_hidden
104
+
105
+ visit decidim.search_path
106
+ expect(page).to have_no_content(translated(comments.first.body))
107
+ expect(page).to have_no_content(translated(comments.second.body))
108
+ end
109
+ end
110
+ end
111
+
62
112
  shared_examples "higher user role does not have hide" do
63
113
  context "and the admin reports" do
64
114
  before do
@@ -124,6 +174,7 @@ shared_examples "reports by user type" do
124
174
  let!(:user) { create(:user, :admin, :confirmed, organization:) }
125
175
  include_examples "higher user role reports"
126
176
  include_examples "higher user role hides"
177
+ include_examples "higher user role hides resource with comments"
127
178
  end
128
179
  context "When reporting user is process admin" do
129
180
  let!(:user) { create(:process_admin, :confirmed, participatory_process:) }
@@ -23,3 +23,24 @@ shared_examples "a social share meta tag" do |image|
23
23
  expect(find('meta[property="og:image"]', visible: false)[:content]).to end_with(image)
24
24
  end
25
25
  end
26
+
27
+ shared_examples "a social share widget" do
28
+ it "has the social share button" do
29
+ visit_resource
30
+
31
+ expect(page).to have_css('button[data-dialog-open="socialShare"]')
32
+ end
33
+
34
+ it "lists all the expected social share providers" do
35
+ visit_resource
36
+ click_on "Share"
37
+
38
+ within "#socialShare" do
39
+ expect(page).to have_css('a[title="Share to X"]')
40
+ expect(page).to have_css('a[title="Share to Facebook"]')
41
+ expect(page).to have_css('a[title="Share to WhatsApp"]')
42
+ expect(page).to have_css('a[title="Share to Telegram"]')
43
+ expect(page).to have_css(".share-modal__input")
44
+ end
45
+ end
46
+ end
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-core version.
5
5
  module Core
6
6
  def self.version
7
- "0.30.0.rc1"
7
+ "0.30.0.rc3"
8
8
  end
9
9
  end
10
10
  end
@@ -24,6 +24,14 @@ module Decidim
24
24
  false
25
25
  end
26
26
 
27
+ def full_name
28
+ return @full_name if defined?(@full_name)
29
+
30
+ @full_name = name.dup
31
+ @full_name[I18n.locale.to_s] = "#{parent.name[I18n.locale.to_s]} > #{@full_name[I18n.locale.to_s]}" if parent && parent.parent_id
32
+ @full_name
33
+ end
34
+
27
35
  def resources
28
36
  categorizations.filter_map do |categorization|
29
37
  next if invalid_categorization?(categorization)
@@ -36,16 +44,34 @@ module Decidim
36
44
  {
37
45
  name:,
38
46
  origin: to_global_id.to_s,
39
- children: subcategories.to_h do |subcategory|
40
- [
41
- subcategory.name[I18n.locale.to_s],
42
- subcategory.taxonomies
43
- ]
44
- end,
47
+ children: sub_taxonomy_children,
45
48
  resources:
46
49
  }
47
50
  end
48
51
 
52
+ # original categories are allowed one level more than the current taxonomies
53
+ def sub_taxonomy_children
54
+ subcategories.each_with_object({}) do |subcategory, hash|
55
+ hash[subcategory.name[I18n.locale.to_s]] = {
56
+ name: subcategory.name,
57
+ origin: subcategory.to_global_id.to_s,
58
+ resources: subcategory.resources,
59
+ children: {}
60
+ }
61
+
62
+ next unless subcategory.subcategories.any?
63
+
64
+ subcategory.subcategories.each do |last_category|
65
+ hash[last_category.full_name[I18n.locale.to_s]] = {
66
+ name: last_category.full_name,
67
+ origin: last_category.to_global_id.to_s,
68
+ resources: last_category.resources,
69
+ children: {}
70
+ }
71
+ end
72
+ end
73
+ end
74
+
49
75
  def self.children_taxonomies(participatory_space)
50
76
  Category.where(participatory_space:, parent_id: nil).to_h do |category|
51
77
  [
@@ -92,8 +118,14 @@ module Decidim
92
118
  internal_name: name,
93
119
  items: Category.where(participatory_space:).map do |category|
94
120
  names = [name]
95
- names << category.parent.name[I18n.locale.to_s] if category.parent
96
- names << category.name[I18n.locale.to_s]
121
+ if category.parent
122
+ names << if category.parent.parent
123
+ category.parent.parent.name[I18n.locale.to_s]
124
+ else
125
+ category.parent.name[I18n.locale.to_s]
126
+ end
127
+ end
128
+ names << category.full_name[I18n.locale.to_s]
97
129
  names
98
130
  end,
99
131
  components:
@@ -38,6 +38,8 @@ module Decidim
38
38
  item["children"].each do |child_name, child|
39
39
  import_taxonomy_item(taxonomy, child_name, child)
40
40
  end
41
+ rescue ActiveRecord::RecordInvalid => e
42
+ abort "Error importing taxonomy item #{name} with parent #{parent.name} (#{e.message})"
41
43
  end
42
44
 
43
45
  def apply_taxonomy_to_resource(object_id, taxonomy)
@@ -61,6 +63,8 @@ module Decidim
61
63
  end
62
64
  end
63
65
 
66
+ # rubocop:disable Metrics/CyclomaticComplexity
67
+ # rubocop:disable Metrics/PerceivedComplexity
64
68
  def import_filter(root, data)
65
69
  filter = find_taxonomy_filter!(root, data)
66
70
 
@@ -91,7 +95,11 @@ module Decidim
91
95
  result[:failed_components] << component_id
92
96
  end
93
97
  end
98
+ rescue ActiveRecord::RecordInvalid => e
99
+ abort "Error importing filter #{data} for root taxonomy #{root.name} (#{e.message})"
94
100
  end
101
+ # rubocop:enable Metrics/CyclomaticComplexity
102
+ # rubocop:enable Metrics/PerceivedComplexity
95
103
 
96
104
  def find_taxonomy(association, name)
97
105
  association.find_by("name->>? = ?", organization.default_locale, name)
@@ -105,6 +113,8 @@ module Decidim
105
113
  association.create!(name: { organization.default_locale => name }, organization:) do
106
114
  result[:taxonomies_created] << name
107
115
  end
116
+ rescue ActiveRecord::RecordInvalid => e
117
+ abort "Error creating taxonomy #{name} with parent #{association.new.parent.name[organization.default_locale]} (#{e.message})"
108
118
  end
109
119
 
110
120
  def find_taxonomy_filter!(root_taxonomy, data)