decidim-core 0.32.0.rc3 → 0.32.0

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 (83) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/author_cell.rb +0 -4
  3. data/app/cells/decidim/content_blocks/highlighted_content_banner_cell.rb +1 -1
  4. data/app/cells/decidim/content_blocks/highlighted_participatory_spaces_cell.rb +1 -1
  5. data/app/commands/decidim/destroy_account.rb +12 -1
  6. data/app/commands/decidim/multiple_attachments_methods.rb +28 -27
  7. data/app/jobs/decidim/process_inactive_participant_job.rb +0 -7
  8. data/app/mailers/decidim/delete_user_mailer.rb +14 -0
  9. data/app/mailers/decidim/participants_account_mailer.rb +0 -16
  10. data/app/packs/src/decidim/controllers/main_menu/controller.js +33 -0
  11. data/app/packs/src/decidim/controllers/main_menu/main_menu.test.js +77 -0
  12. data/app/packs/src/decidim/controllers/mention/controller.js +296 -140
  13. data/app/packs/src/decidim/controllers/mention/input_mentions.test.js +120 -457
  14. data/app/packs/src/decidim/controllers/multiple_mentions/controller.js +68 -32
  15. data/app/packs/src/decidim/controllers/multiple_mentions/input_multiple_mentions.test.js +30 -23
  16. data/app/packs/src/decidim/editor/common/suggestion.js +3 -1
  17. data/app/packs/src/decidim/editor/extensions/indent/index.js +9 -0
  18. data/app/packs/src/decidim/geocoding/reverse_geocoding.js +15 -5
  19. data/app/packs/src/decidim/geocoding/reverse_geocoding.test.js +197 -0
  20. data/app/packs/src/decidim/index.js +2 -2
  21. data/app/packs/stylesheets/decidim/_conversations.scss +14 -0
  22. data/app/packs/stylesheets/decidim/_dropdown.scss +1 -1
  23. data/app/packs/stylesheets/decidim/_editor_suggestions.scss +49 -0
  24. data/app/packs/stylesheets/decidim/_header.scss +12 -8
  25. data/app/packs/stylesheets/decidim/_tom_select.scss +23 -0
  26. data/app/packs/stylesheets/decidim/application.scss +2 -0
  27. data/app/packs/stylesheets/decidim/editor.scss +2 -33
  28. data/app/packs/stylesheets/decidim/geocoding_addons.scss +10 -2
  29. data/app/uploaders/decidim/image_uploader.rb +1 -1
  30. data/app/views/decidim/delete_user_mailer/delete.html.erb +6 -0
  31. data/app/views/decidim/messaging/conversations/_error_modal.html.erb +11 -19
  32. data/app/views/decidim/messaging/conversations/error.js.erb +12 -7
  33. data/app/views/layouts/decidim/header/_menu_breadcrumb_mobile.html.erb +2 -1
  34. data/config/locales/ar.yml +0 -2
  35. data/config/locales/bg.yml +0 -2
  36. data/config/locales/ca-IT.yml +21 -10
  37. data/config/locales/ca.yml +21 -10
  38. data/config/locales/cs.yml +10 -9
  39. data/config/locales/de.yml +4 -13
  40. data/config/locales/el.yml +0 -1
  41. data/config/locales/en.yml +20 -9
  42. data/config/locales/es-MX.yml +20 -9
  43. data/config/locales/es-PY.yml +20 -9
  44. data/config/locales/es.yml +20 -9
  45. data/config/locales/eu.yml +36 -9
  46. data/config/locales/fi-plain.yml +19 -8
  47. data/config/locales/fi.yml +19 -8
  48. data/config/locales/fr-CA.yml +23 -9
  49. data/config/locales/fr.yml +23 -9
  50. data/config/locales/hu.yml +0 -2
  51. data/config/locales/it.yml +0 -2
  52. data/config/locales/ja.yml +59 -19
  53. data/config/locales/lb.yml +0 -2
  54. data/config/locales/lt.yml +0 -2
  55. data/config/locales/nl.yml +0 -2
  56. data/config/locales/no.yml +0 -2
  57. data/config/locales/pl.yml +2 -4
  58. data/config/locales/pt-BR.yml +2 -11
  59. data/config/locales/pt.yml +0 -2
  60. data/config/locales/ro-RO.yml +1 -10
  61. data/config/locales/sk.yml +1 -10
  62. data/config/locales/sv.yml +0 -9
  63. data/config/locales/tr-TR.yml +0 -2
  64. data/config/locales/zh-CN.yml +0 -2
  65. data/config/locales/zh-TW.yml +0 -2
  66. data/decidim-core.gemspec +1 -1
  67. data/lib/decidim/attachment_attributes.rb +58 -9
  68. data/lib/decidim/command.rb +1 -1
  69. data/lib/decidim/core/content_blocks/registry_manager.rb +4 -4
  70. data/lib/decidim/core/engine.rb +8 -0
  71. data/lib/decidim/core/test/factories.rb +3 -0
  72. data/lib/decidim/core/test/shared_examples/admin_resource_gallery_examples.rb +10 -10
  73. data/lib/decidim/core/test/shared_examples/comments_examples.rb +6 -6
  74. data/lib/decidim/core/version.rb +1 -1
  75. data/lib/decidim/map/autocomplete.rb +4 -3
  76. data/lib/decidim/searchable.rb +5 -0
  77. data/lib/decidim/view_model.rb +1 -1
  78. data/lib/tasks/decidim_mailers_tasks.rake +31 -9
  79. metadata +10 -9
  80. data/app/commands/decidim/gallery_methods.rb +0 -107
  81. data/app/packs/src/decidim/vendor/tribute.js +0 -1890
  82. data/app/packs/stylesheets/decidim/_tribute.scss +0 -36
  83. data/app/views/decidim/participants_account_mailer/removal_notification.html.erb +0 -11
@@ -406,6 +406,10 @@ ja:
406
406
  withdraw:
407
407
  error: 修正案の取り消し中に問題がありました。
408
408
  success: 修正を撤回しました。
409
+ wizard_step_form:
410
+ steps:
411
+ '1': 修正内容を作成する
412
+ '2': 修正内容を公開
409
413
  anonymous_user: 匿名です
410
414
  application:
411
415
  document:
@@ -535,7 +539,7 @@ ja:
535
539
  global:
536
540
  amendments_enabled: 修正を有効にする
537
541
  comments_enabled: コメントを有効にする
538
- comments_max_length: コメント最大長
542
+ comments_max_length: 各コメントの最大文字数
539
543
  define_taxonomy_filters: この設定を使用する前に、参加型スペースのフィルターをいくつか定義してください。
540
544
  dummy_global_attribute1: ダミーステータス1
541
545
  dummy_global_attribute2: ダミーステータス2
@@ -853,9 +857,13 @@ ja:
853
857
  affected_user:
854
858
  email_intro: '%{amendable_title}の修正が承認されました。このページから確認できます:'
855
859
  email_outro: あなたは %{amendable_title} の作成者であるため、この通知を受け取りました。
860
+ email_subject: '%{amendable_title} に対する %{emendation_author_name} からの修正内容を承認しました'
861
+ notification_title: <a href="%{emendation_author_path}">%{emendation_author_name}</a> によって作成された<a href="%{emendation_path}">修正案</a>が、<a href="%{amendable_path}">%{amendable_title}</a> に対して承認されました。
856
862
  follower:
857
863
  email_intro: '%{amendable_title}の修正が承認されました。このページから確認できます:'
858
- email_outro: '%{amendable_title}をフォローしているため、この通知を受け取りました。前のリンクに続く通知の受信を停止することができます。'
864
+ email_outro: '%{amendable_title}をフォローしているため、この通知を受け取りました。上記のリンクから通知の受信を停止することができます。'
865
+ email_subject: '%{amendable_title} に対する %{emendation_author_name} からの修正内容を承認しました'
866
+ notification_title: <a href="%{emendation_author_path}">%{emendation_author_name}</a> が作成した <a href="%{emendation_path}">修正内容</a> が <a href="%{amendable_path}">%{amendable_title}</a> に採用されました。
859
867
  amendment_created:
860
868
  affected_user:
861
869
  email_intro: '%{amendable_title}の新しい修正が作成されました。このページから確認できます:'
@@ -864,27 +872,36 @@ ja:
864
872
  notification_title: <a href="%{amendable_path}">%{amendable_title}</a> の新しい修正が作成されました。
865
873
  follower:
866
874
  email_intro: '%{amendable_title}の新しい修正が作成されました。このページから確認できます:'
867
- email_outro: '%{amendable_title}をフォローしているため、この通知を受け取りました。前のリンクに続く通知の受信を停止することができます。'
875
+ email_outro: '%{amendable_title}をフォローしているため、この通知を受け取りました。上記のリンクから通知の受信を停止することができます。'
868
876
  email_subject: '%{amendable_title} の新しい修正'
869
877
  notification_title: <a href="%{amendable_path}">%{amendable_title}</a> の新しい修正が作成されました。
870
878
  amendment_promoted:
871
879
  affected_user:
872
880
  email_intro: '%{amendable_title} の修正が却下されました。新しい %{amendable_type}として公開されました。このページから見ることができます:'
873
881
  email_outro: あなたは %{amendable_title} の作成者であるため、この通知を受け取りました。
882
+ email_subject: '%{emendation_author_name}による修正が新しい%{amendable_type}として公開されました'
883
+ notification_title: <a href="%{amendable_path}">%{amendable_title}</a>に対する<a href="%{emendation_path}">却下された修正案</a>が、<a href="%{emendation_author_path}">%{emendation_author_name}</a>によって新しい%{amendable_type}として公開されました。
874
884
  follower:
875
885
  email_intro: '%{amendable_title} の修正が却下されました。新しい %{amendable_type}として公開されました。このページから見ることができます:'
876
- email_outro: '%{amendable_title}をフォローしているため、この通知を受け取りました。前のリンクに続く通知の受信を停止することができます。'
886
+ email_outro: '%{amendable_title}をフォローしているため、この通知を受け取りました。上記のリンクから通知の受信を停止することができます。'
887
+ email_subject: '%{emendation_author_name} による修正が新しい %{amendable_type} として公開されました'
888
+ notification_title: <a href="%{amendable_path}">%{amendable_title}</a>に対する<a href="%{emendation_path}">却下された修正案</a>が、<a href="%{emendation_author_path}">%{emendation_author_name}</a>によって新しい%{amendable_type}として公開されました。
877
889
  amendment_rejected:
878
890
  affected_user:
879
891
  email_intro: '%{amendable_title}の修正が拒否されました。このページから確認できます:'
880
892
  email_outro: あなたは %{amendable_title} の作成者であるため、この通知を受け取りました。
893
+ email_subject: '%{amendable_title}に対する修正案が %{emendation_author_name} によって却下されました'
894
+ notification_title: <a href="%{emendation_author_path}">%{emendation_author_name}</a> が作成した<a href="%{emendation_path}">修正案</a>が、<a href="%{amendable_path}">%{amendable_title}</a> に対して承認されました。
881
895
  follower:
882
896
  email_intro: '%{amendable_title}の修正が拒否されました。このページから確認できます:'
883
- email_outro: '%{amendable_title}をフォローしているため、この通知を受け取りました。前のリンクに続く通知の受信を停止することができます。'
897
+ email_outro: '%{amendable_title}をフォローしているため、この通知を受け取りました。上記のリンクから通知の受信を停止することができます。'
898
+ email_subject: '%{amendable_title}に対する修正案が %{emendation_author_name} によって却下されました'
899
+ notification_title: <a href="%{emendation_author_path}">%{emendation_author_name}</a> が作成した<a href="%{emendation_path}">修正案</a>が、<a href="%{amendable_path}">%{amendable_title}</a> に対して承認されました。
884
900
  emendation_promoted:
885
901
  follower:
886
902
  email_intro: '%{amendable_title}に対する修正案が公開されました。このページから確認できます:'
887
903
  email_outro: あなたは %{amendable_title}の作者であるため、この通知を受け取りました。
904
+ email_subject: '%{emendation_author_name}による修正案が新しい%{amendable_type}として公開されました'
888
905
  attachments:
889
906
  attachment_created:
890
907
  email_intro: '%{resource_title}に新しいドキュメントが追加されました。このページから見ることができます:'
@@ -894,13 +911,13 @@ ja:
894
911
  components:
895
912
  component_published:
896
913
  email_intro: '%{resource_title} コンポーネントが %{participatory_space_title}でアクティブになりました。このページから見ることができます:'
897
- email_outro: '%{participatory_space_title}をフォローしているため、この通知を受け取りました。前のリンクに続く通知の受信を停止することができます。'
914
+ email_outro: '%{participatory_space_title}をフォローしているため、この通知を受け取りました。上記のリンクから通知の受信を停止することができます。'
898
915
  email_subject: '%{participatory_space_title} への更新'
899
916
  notification_title: '%{resource_title} コンポーネントが <a href="%{resource_path}">%{participatory_space_title}</a> のためにアクティブになりました'
900
917
  email_event:
901
918
  email_greeting: こんにちは、 %{user_name} さん。
902
919
  email_intro: '"%{resource_title}" の更新がありました。このページから見ることができます:'
903
- email_outro: '「%{resource_title}」をフォローしているため、この通知を受け取りました。前のリンクからこの通知をアンフォローすることができます。'
920
+ email_outro: '「%{resource_title}」をフォローしているため、この通知を受け取りました。上記のリンクからアンフォローすることができます。'
904
921
  email_subject: '%{resource_title} への更新'
905
922
  gamification:
906
923
  badge_earned:
@@ -927,8 +944,8 @@ ja:
927
944
  email_subject: '%{resource_type} は表示されなくなりました'
928
945
  notification_title: |-
929
946
  あなたの%{resource_type}は表示されなくなりました。<br>
930
- これは、あなたが返信した提案、ミーティング、討論、またはコメントがモデレーションされたためです。
931
- 元の投稿が再び表示可能になった場合、あなたのコメントも自動的に復元されます。
947
+ これは、あなたが返信した提案、ミーティング、討論、またはコメントがモデレーションされたためです。
948
+ 元の投稿が再び表示可能になった場合、あなたのコメントも自動的に復元されます。
932
949
  <i>%{resource_content}</i>
933
950
  resource_hidden:
934
951
  email_intro: '%{report_reasons} として報告されたため、管理者が %{resource_type} を削除しました。'
@@ -937,13 +954,25 @@ ja:
937
954
  notification_title: |-
938
955
  %{resource_type} として報告されたため、管理者が %{report_reasons} を削除しました。</br>
939
956
  <i>%{resource_content}</i>
957
+ resource_liked:
958
+ email_intro: 'あなたがフォローしている%{liker_name} が「%{resource_title}」をいいねしました。興味深いかもしれないので、ぜひチェックしてご参加ください:'
959
+ email_outro: '%{liker_name} をフォローしているため、この通知が届きました。上記のリンクから通知の受信を停止できます。'
960
+ email_subject: "%{liker_name} が新しいいいねを行いました"
961
+ notification_title: <a href="%{resource_path}">%{resource_title}</a> %{resource_type} を <a href="%{liker_path}">%{liker_name} </a>さんがいいねしました。
940
962
  resources:
941
963
  soft_deleted:
942
964
  notification_title: 管理者があなたの "%{resource_type}" " "%{resource_title}" を削除しました。
943
965
  users:
966
+ profile_updated:
967
+ email_intro: あなたがフォローしている %{name} さんの <a href="%{resource_url}">プロフィールページ</a>が更新されました。
968
+ email_outro: '%{name}をフォローしているため、この通知を受け取りました。上記のリンクから通知の受信を停止することができます。'
969
+ email_subject: "%{name} はプロフィールを更新しました"
970
+ notification_title: あなたがフォローしている %{name} さんの <a href="%{resource_path}">プロフィールページ</a>が更新されました。
944
971
  user_officialized:
972
+ email_intro: 参加者 %{name} が公式化されました。
945
973
  email_outro: あなたは組織の管理者であるため、この通知を受け取りました。
946
974
  email_subject: "%{name} が公式化されました"
975
+ notification_title: 参加者 %{name} が公式化されました。
947
976
  export_mailer:
948
977
  download_your_data_export:
949
978
  click_button_html: 次のリンクをクリックしてデータをダウンロードしてください。<br/>ファイルは %{date} までダウンロードできます。
@@ -1117,6 +1146,12 @@ ja:
1117
1146
  update_permissions_with_space: "%{user_name} が %{space_name} の %{resource_name} の権限を更新しました"
1118
1147
  update_with_space: "%{user_name} さんが %{resource_name} で %{space_name} を更新しました"
1119
1148
  value_types:
1149
+ access_mode_presenter:
1150
+ access_modes:
1151
+ open: 参加可能
1152
+ restricted: メンバー限定
1153
+ transparent: 閲覧可能
1154
+ not_found: アクセスモード %{id} が見つかりません
1120
1155
  area_presenter:
1121
1156
  not_found: 'エリアがデータベース上に見つかりませんでした (ID: %{id})'
1122
1157
  area_type_presenter:
@@ -1164,7 +1199,6 @@ ja:
1164
1199
  create:
1165
1200
  error: 会話が開始されませんでした。後ほど改めてお試しください。
1166
1201
  error_modal:
1167
- close: ウィンドウを閉じる
1168
1202
  correct_errors: エラーを修正して、再度お試しください
1169
1203
  intro: 'あなたのメッセージには次のエラーがありました:'
1170
1204
  ok: OK
@@ -1290,6 +1324,7 @@ ja:
1290
1324
  own_activity: 誰かが私の提案にコメントしたり、私に言及したりした時など、自分自身の活動
1291
1325
  push_notifications: プッシュ通知
1292
1326
  push_notifications_reminder: プラットフォームから通知を受け取るには、まずブラウザの設定で通知を許可する必要があります。
1327
+ push_notifications_unsupported_browser: お使いのブラウザはサポートされていません。
1293
1328
  receive_notifications_about: 受け取りたい通知
1294
1329
  update_notifications_settings: 変更を保存
1295
1330
  update:
@@ -1348,7 +1383,7 @@ ja:
1348
1383
  is_root: このタクソノミーが親を持たない場合は True
1349
1384
  name: このタクソノミーの名前
1350
1385
  parent_id: このタクソノミーの親の固有ID(もしあれば)
1351
- part_of: このタクソノミが他のタクソノミの一部であるかどうかを検出するために使用されます
1386
+ part_of: この分類が他の分類の一部であるかどうかを検出するために使用されます
1352
1387
  taxonomizations_count: このタクソノミーを使用するリソースの数
1353
1388
  updated_at: このタクソノミーの最終更新日時
1354
1389
  weight: このタクソノミーが表示される順序
@@ -1464,7 +1499,7 @@ ja:
1464
1499
  participants_account_mailer:
1465
1500
  inactivity_notification:
1466
1501
  body_html: |
1467
- <p>記録によると、あなたは<strong>%{date_account_creation}</strong>に%{organization_name}のアカウントを作成しましたが、<strong>%{date_last_connection}</strong>以降は利用されていないようです。</p> <p>プライバシー保護のため、このアカウントは<strong>%{days}日後</strong>に自動削除される予定です。</p>
1502
+ <p>記録によると、あなたは<strong>%{date_account_creation}</strong>に%{organization_name}のアカウントを作成しましたが、<strong>%{date_last_connection}</strong>以降は利用されていないようです。</p> <p>プライバシー保護のため、このアカウントは<strong>%{days}日後</strong>に自動削除される予定です。</p>
1468
1503
  <p>%{organization_name}のアカウントを保持したい場合は、それまでに%{login_url}にアクセスするだけでアカウントは維持されます。</p>
1469
1504
  greetings_html: |
1470
1505
  よろしくお願いいたします。<br>
@@ -1473,16 +1508,18 @@ ja:
1473
1508
  log_in: ログイン
1474
1509
  never_logged_in: ログインしたことがない
1475
1510
  subject: 非アクティブなアカウントの警告
1476
- removal_notification:
1477
- body: あなたの %{organization_name} アカウントは非アクティブのため削除されました。
1478
- greetings_html: |
1479
- よろしくお願いいたします。<br>
1480
- %{organization_name}
1481
- hello: こんにちは %{username} さん、
1482
- subject: 非アクティブなアカウントが削除されました
1511
+ participatory_space:
1512
+ pages:
1513
+ user_profile:
1514
+ member_of:
1515
+ member_of: 所属グループ
1483
1516
  participatory_space_members:
1484
1517
  index:
1485
1518
  members: メンバー
1519
+ participatory_spaces:
1520
+ show:
1521
+ restricted_space: これは制限されたスペースです。メンバーと管理者のみがアクセスできます。
1522
+ transparent_space: これは閲覧可能スペースです。誰でもコンテンツを閲覧できますが、メンバーと管理者のみ参加できます。
1486
1523
  passwords:
1487
1524
  update:
1488
1525
  error: パスワードの更新中に問題が発生しました。
@@ -1772,6 +1809,7 @@ ja:
1772
1809
  nickname_help: ニックネームは %{organization} です。英文字、数字、'-' および '_' のみ使用できます。
1773
1810
  submit_button: 保存
1774
1811
  subtitle: 招待を受け入れる場合は、アカウントIDとパスワードを設定してください。
1812
+ subtitle_no_password: 招待を受け入れる場合は、ニックネームを設定してください。
1775
1813
  invitation_removed: 招待が削除されました。
1776
1814
  invitation_token_invalid: 指定された招待トークンは無効です!
1777
1815
  new:
@@ -1779,6 +1817,8 @@ ja:
1779
1817
  submit_button: 招待状を送信
1780
1818
  no_invitations_remaining: 招待状は残っていません
1781
1819
  send_instructions: '%{email} に招待メールが送信されました。'
1820
+ updated: 招待が承認されました。サインインしています。
1821
+ updated_not_active: 招待が承認されました。
1782
1822
  mailer:
1783
1823
  confirmation_instructions:
1784
1824
  action: アカウントを確認する
@@ -297,7 +297,6 @@ lb:
297
297
  global:
298
298
  amendments_enabled: Ännerungen aktivéiert
299
299
  comments_enabled: Kommentarer aktiv
300
- comments_max_length: Maximal Längt vun de Kommentären
301
300
  dummy_global_attribute1: Dummy Attribut 1
302
301
  dummy_global_attribute2: Dummy Attribut 2
303
302
  dummy_global_translatable_text: Dummy Text ze iwwersetzen
@@ -587,7 +586,6 @@ lb:
587
586
  modal_title: Nei Konversatioun
588
587
  no_results: Keen Resultat
589
588
  error_modal:
590
- close: Dialog zou maachen
591
589
  correct_errors: Korrigéier w. e. g. dëse Feeler a probéier op en Neits.
592
590
  intro: 'Bei denger Noriicht ass dësen Feeler opgetrueden:'
593
591
  ok: OK
@@ -468,7 +468,6 @@ lt:
468
468
  global:
469
469
  amendments_enabled: Pataisos leidžiamos
470
470
  comments_enabled: Komentarai leidžiami
471
- comments_max_length: Komentarų maksimalus ilgis
472
471
  dummy_global_attribute1: Fiktyvus atributas 1
473
472
  dummy_global_attribute2: Fiktyvus atributas 2
474
473
  dummy_global_translatable_text: Testinis verčiamas tekstas
@@ -894,7 +893,6 @@ lt:
894
893
  create:
895
894
  error: Pokalbis neprasidėjo. Bandykite dar kartą vėliau.
896
895
  error_modal:
897
- close: Uždaryti modalinį langą
898
896
  correct_errors: Ištaisykite klaidas ir bandykite dar kartą.
899
897
  intro: 'Jūsų pranešime aptiktos šios klaidos:'
900
898
  ok: Gerai
@@ -298,7 +298,6 @@ nl:
298
298
  global:
299
299
  amendments_enabled: Wijzigingen toegestaan
300
300
  comments_enabled: Reacties ingeschakeld
301
- comments_max_length: Commentaar maximale lengte
302
301
  dummy_global_attribute1: Voorbeeld-kenmerk 1
303
302
  dummy_global_attribute2: Voorbeeld-kenmerk 2
304
303
  dummy_global_translatable_text: Vertaalbare tekst Dummy
@@ -588,7 +587,6 @@ nl:
588
587
  modal_title: Nieuwe conversatie
589
588
  no_results: Geen resultaten gevonden
590
589
  error_modal:
591
- close: Sluit venster
592
590
  correct_errors: Corrigeer de fouten en probeer opnieuw.
593
591
  intro: 'Er waren de volgende fouten met je bericht:'
594
592
  ok: OK
@@ -304,7 +304,6 @@
304
304
  global:
305
305
  amendments_enabled: Endringer aktivert
306
306
  comments_enabled: Kommentarer aktivert
307
- comments_max_length: Maks lengde på kommentarer
308
307
  dummy_global_attribute1: Dummy Egenskap 1
309
308
  dummy_global_attribute2: Dummy Egenskap 2
310
309
  dummy_global_translatable_text: Dummy Oversettbar tekst
@@ -602,7 +601,6 @@
602
601
  modal_title: Ny Samtale
603
602
  no_results: Ingen resultater
604
603
  error_modal:
605
- close: Lukk modal
606
604
  correct_errors: Vennligst korriger feilene og prøv på nytt.
607
605
  intro: 'Det var følgende feil med din melding:'
608
606
  ok: Ok
@@ -441,7 +441,6 @@ pl:
441
441
  global:
442
442
  amendments_enabled: Poprawki dozwolone
443
443
  comments_enabled: Komentarze włączone
444
- comments_max_length: Maksymalna długość komentarzy
445
444
  dummy_global_attribute1: Przykładowy atrybut 1
446
445
  dummy_global_attribute2: Przykładowy atrybut 2
447
446
  dummy_global_translatable_text: Przykładowy tekst do tłumaczenia
@@ -566,7 +565,7 @@ pl:
566
565
  notice: |-
567
566
  <p>Hej, czy jesteś pewien, że nie chcesz otrzymywać newslettera?
568
567
  Prosimy o ponowne zaznaczenie pola wyboru newslettera poniżej. To dla nas bardzo ważne, abyś mógł otrzymywać sporadyczne e-maile z ważnymi informacjami. Zawsze możesz zmienić to na stronie ustawień o powiadomieniach.</p>
569
- <p>Jeśli nie zaznaczysz tego pola, mogą cię ominąć istotne informacje na temat możliwości
568
+ <p>Jeśli nie zaznaczysz tego pola, mogą cię ominąć istotne informacje na temat możliwości
570
569
  uczestnictwa w procesach na platformie.<br>Jeśli mimo wszystko nie chcesz otrzymywać newsletterów, doskonale rozumiemy twoją decyzję.</p>
571
570
  <p>Dziękujemy za uwagę!</p>
572
571
  title: Powiadomienia newslettera
@@ -902,7 +901,6 @@ pl:
902
901
  create:
903
902
  error: Rozmowa nie została rozpoczęta. Spróbuj ponownie później.
904
903
  error_modal:
905
- close: Zamknij okno
906
904
  correct_errors: Popraw daty i spróbuj ponownie.
907
905
  intro: 'W wiadomości wystąpiły błędy:'
908
906
  ok: ok
@@ -1306,7 +1304,7 @@ pl:
1306
1304
  hello: Witaj %{email},
1307
1305
  ignore: |-
1308
1306
  Jeżeli nie chcesz zaakceptować zaproszenia, zignoruj ten e-mail.<br />
1309
- Twoje konto nie zostanie utworzone, dopóki nie skorzystasz z linku powyżej i nie ustawisz pseudonimu i hasła.
1307
+ Twoje konto nie zostanie utworzone, dopóki nie skorzystasz z linku powyżej i nie ustawisz pseudonimu i hasła.
1310
1308
  invited_you_as_admin: "%{invited_by} zaprasza Cię jako administratora %{application}. Możesz zaakceptować zaproszenie za pomocą poniższego linku."
1311
1309
  someone_invited_you: Ktoś zaprosił Cię do %{application}. Możesz zaakceptować zaproszenie za pomocą poniższego linku.
1312
1310
  someone_invited_you_as_admin: Ktoś zaprosił Cię jako administratora %{application}, możesz zaakceptować zaproszenie za pomocą poniższego linku.
@@ -552,7 +552,6 @@ pt-BR:
552
552
  global:
553
553
  amendments_enabled: Alterações ativadas
554
554
  comments_enabled: Comentários ativados
555
- comments_max_length: Comprimento máximo de comentários
556
555
  define_taxonomy_filters: Por favor, defina alguns filtros para este espaço participativo antes de usar esta configuração.
557
556
  dummy_global_attribute1: Dummy Atributo 1
558
557
  dummy_global_attribute2: Dummy Attribute 2
@@ -944,8 +943,8 @@ pt-BR:
944
943
  email_outro: Você recebeu está notificação porque você é autor do %{resource_type} afetado.
945
944
  email_subject: Seu %{resource_type} não está mais visível
946
945
  notification_title: |-
947
- Seu %{resource_type} não está mais visível. <br>
948
- Isso aconteceu porque a proposta, reunião, debate ou comentário que você respondeu foi moderado. Se voltar a ficar disponível, o seu comentário será restaurado automaticamente.<i>%{resource_content}</i>
946
+ Seu %{resource_type} não está mais visível. <br>
947
+ Isso aconteceu porque a proposta, reunião, debate ou comentário que você respondeu foi moderado. Se voltar a ficar disponível, o seu comentário será restaurado automaticamente.<i>%{resource_content}</i>
949
948
  resource_hidden:
950
949
  email_intro: Um administrador removeu seu %{resource_type} porque ele foi reportado como %{report_reasons}.
951
950
  email_outro: Você recebeu esta notificação porque você é um autor do conteúdo removido.
@@ -1180,7 +1179,6 @@ pt-BR:
1180
1179
  create:
1181
1180
  error: Conversa não iniciada. Tente mais tarde.
1182
1181
  error_modal:
1183
- close: Fechar modal
1184
1182
  correct_errors: Por favor, corrija os itens citados e tente novamente.
1185
1183
  intro: 'Sua mensagem contém os seguintes erros:'
1186
1184
  ok: OK
@@ -1491,13 +1489,6 @@ pt-BR:
1491
1489
  log_in: iniciar sessão
1492
1490
  never_logged_in: nunca iniciou sessão
1493
1491
  subject: Aviso de conta inativa
1494
- removal_notification:
1495
- body: Sua conta %{organization_name} foi excluída devido a inatividade.
1496
- greetings_html: |
1497
- Atenciosamente,<br>
1498
- %{organization_name}
1499
- hello: Prezado %{username},
1500
- subject: Conta inativa excluída
1501
1492
  participatory_space_members:
1502
1493
  index:
1503
1494
  members: Membros
@@ -297,7 +297,6 @@ pt:
297
297
  global:
298
298
  amendments_enabled: Modificações ativadas
299
299
  comments_enabled: Comentários ativados
300
- comments_max_length: Comprimento máximo dos comentários
301
300
  dummy_global_attribute1: Atributo Fictício 1
302
301
  dummy_global_attribute2: Atributo Fictício 2
303
302
  dummy_global_translatable_text: Texto Traduzível Fictício
@@ -591,7 +590,6 @@ pt:
591
590
  modal_title: Nova conversa
592
591
  no_results: Sem resultados
593
592
  error_modal:
594
- close: Fechar modal
595
593
  correct_errors: Por favor corrija os erros e tente de novo
596
594
  intro: 'Há os seguintes erros com a sua mensagem:'
597
595
  ok: OK
@@ -566,7 +566,6 @@ ro:
566
566
  global:
567
567
  amendments_enabled: Amendamente activate
568
568
  comments_enabled: Comentarii activate
569
- comments_max_length: Lungimea maximă a comentariilor
570
569
  define_taxonomy_filters: Vă rugăm să definiți niște filtre pentru acest spațiu participativ înainte de a utiliza această setare.
571
570
  dummy_global_attribute1: Mostră de atribut 1
572
571
  dummy_global_attribute2: Mostră de atribut 2
@@ -711,7 +710,7 @@ ro:
711
710
  <p>Sigur nu doriți să primiți un buletin informativ?<br>
712
711
  Vă rugăm să bifați din nou caseta din buletinul informativ de mai jos.<br>
713
712
  Este foarte important pentru noi să puteți primi e-mailuri ocazionale
714
- pentru a face anunțuri importante, puteți modifica oricând opțiunea pe
713
+ pentru a face anunțuri importante, puteți modifica oricând opțiunea pe
715
714
  pagina cu setări pentru notificări. </p>
716
715
  <p>Dacă nu bifați caseta ați putea rata informații importante
717
716
  despre noi oportunități de participare în cadrul platformei.<br>Dacă, totuși, doriți să evitați primirea de buletine informative, înțelegem
@@ -1155,7 +1154,6 @@ ro:
1155
1154
  participants:
1156
1155
  title: Participanți
1157
1156
  error_modal:
1158
- close: Închidere
1159
1157
  correct_errors: Vă rugăm să remediați erorile și să încercați din nou.
1160
1158
  intro: 'Au existat următoarele erori cu mesajul tău:'
1161
1159
  ok: Ok
@@ -1384,13 +1382,6 @@ ro:
1384
1382
  log_in: autentificare
1385
1383
  never_logged_in: niciodată autentificat
1386
1384
  subject: Avertizare cont inactiv
1387
- removal_notification:
1388
- body: Contul dumneavoastră din %{organization_name} a fost șters din cauza inactivității.
1389
- greetings_html: |
1390
- Cu stimă,<br>
1391
- %{organization_name}
1392
- hello: Dragă %{username},
1393
- subject: Cont inactiv șters
1394
1385
  participatory_space_members:
1395
1386
  index:
1396
1387
  members: Membri
@@ -583,7 +583,6 @@ sk:
583
583
  global:
584
584
  amendments_enabled: Zmeny povolené
585
585
  comments_enabled: Komentáre povolené
586
- comments_max_length: Maximálna dĺžka komentárov
587
586
  define_taxonomy_filters: Pred použitím tohto nastavenia definujte nejaké filtre pre tento participatívny priestor.
588
587
  dummy_global_attribute1: Zástupný atribút 1
589
588
  dummy_global_attribute2: Zástupný atribút 2
@@ -1232,7 +1231,6 @@ sk:
1232
1231
  create:
1233
1232
  error: Konverzácia sa nezačala. Skúste to znova neskôr.
1234
1233
  error_modal:
1235
- close: Zavrieť okno
1236
1234
  correct_errors: Opravte chyby a skúste to znova.
1237
1235
  intro: 'Vo vašej správe sa vyskytli nasledujúce chyby:'
1238
1236
  ok: OK
@@ -1545,13 +1543,6 @@ sk:
1545
1543
  log_in: prihlásiť sa
1546
1544
  never_logged_in: nikdy neprihlásený/á
1547
1545
  subject: Upozornenie na neaktívny účet
1548
- removal_notification:
1549
- body: Váš účet %{organization_name} bol vymazaný z dôvodu neaktivity.
1550
- greetings_html: |
1551
- S pozdravom,<br>
1552
- %{organization_name}
1553
- hello: Vážený/á %{username},
1554
- subject: Neaktívny účet bol vymazaný
1555
1546
  participatory_space:
1556
1547
  pages:
1557
1548
  user_profile:
@@ -2300,7 +2291,7 @@ sk:
2300
2291
  dropdown:
2301
2292
  choose_diff_view_html: 'Mód zobrazenia HTML:'
2302
2293
  choose_diff_view_mode: 'Mód srovnávacího zobrazení:'
2303
- option_escaped: Nepoužívané
2294
+ option_escaped: Nepoužívané
2304
2295
  option_split: Vedle sebe (Sbs)
2305
2296
  option_unescaped: Používané
2306
2297
  option_unified: Sjednocené
@@ -555,7 +555,6 @@ sv:
555
555
  global:
556
556
  amendments_enabled: Aktivera ändringsförslag
557
557
  comments_enabled: Aktivera kommentarer
558
- comments_max_length: Maximal längd på kommentarer
559
558
  define_taxonomy_filters: Ställ in filter innan du använder den här inställningen.
560
559
  dummy_global_attribute1: Dummy Attribut 1
561
560
  dummy_global_attribute2: Dummy Attribut 2
@@ -1197,7 +1196,6 @@ sv:
1197
1196
  create:
1198
1197
  error: Konversationen har inte startat. Försök igen senare.
1199
1198
  error_modal:
1200
- close: Stäng fönster
1201
1199
  correct_errors: Vänligen korrigera felen och försök igen.
1202
1200
  intro: 'Det fanns följande fel med ditt meddelande:'
1203
1201
  ok: Ok
@@ -1509,13 +1507,6 @@ sv:
1509
1507
  log_in: logga in
1510
1508
  never_logged_in: har aldrig loggat in
1511
1509
  subject: Varning om inaktivt konto
1512
- removal_notification:
1513
- body: Ditt %{organization_name}-konto har tagits bort på grund av inaktivitet.
1514
- greetings_html: |
1515
- Vänliga hälsningar,<br>
1516
- %{organization_name}
1517
- hello: Hej %{username},
1518
- subject: Inaktivt konto raderat
1519
1510
  participatory_space:
1520
1511
  pages:
1521
1512
  user_profile:
@@ -297,7 +297,6 @@ tr:
297
297
  global:
298
298
  amendments_enabled: Değişiklikler etkinleştirildi
299
299
  comments_enabled: Yorumlar etkin
300
- comments_max_length: Maksimum yorum uzunluğu
301
300
  dummy_global_attribute1: Sahet Özellik 1
302
301
  dummy_global_attribute2: Sahte Özellik 2
303
302
  dummy_global_translatable_text: Sahte Çevrilebilir Metin
@@ -606,7 +605,6 @@ tr:
606
605
  modal_title: Yeni görüşme
607
606
  no_results: Sonuç bulunamadı
608
607
  error_modal:
609
- close: Pencereyi kapat
610
608
  correct_errors: Lütfen hataları düzeltip tekrar deneyin.
611
609
  intro: 'Mesajınızda aşağıdaki hatalar vardı:'
612
610
  ok: OK
@@ -260,7 +260,6 @@ zh-CN:
260
260
  global:
261
261
  amendments_enabled: 修改已启用
262
262
  comments_enabled: 评论已启用
263
- comments_max_length: 评论最大长度
264
263
  dummy_global_attribute1: 虚拟属性 1
265
264
  dummy_global_attribute2: 虚拟属性 2
266
265
  dummy_global_translatable_text: 虚拟可翻译文本
@@ -523,7 +522,6 @@ zh-CN:
523
522
  modal_title: 新建对话
524
523
  no_results: 没有结果
525
524
  error_modal:
526
- close: 关闭模式
527
525
  correct_errors: 请更正错误,然后重试。
528
526
  intro: '您的消息有以下错误:'
529
527
  ok: 好的
@@ -402,7 +402,6 @@ zh-TW:
402
402
  global:
403
403
  amendments_enabled: 修改功能已啟用
404
404
  comments_enabled: 啟用評論功能
405
- comments_max_length: 評論最大長度
406
405
  dummy_global_attribute1: 虛擬屬性 1
407
406
  dummy_global_attribute2: 虛擬屬性 2
408
407
  dummy_global_translatable_text: 虛擬可翻譯文字
@@ -792,7 +791,6 @@ zh-TW:
792
791
  create:
793
792
  error: 對話未開始。請稍後再試。
794
793
  error_modal:
795
- close: 關閉視窗
796
794
  correct_errors: 請修正錯誤後再試一次。
797
795
  intro: '您的訊息有以下錯誤:'
798
796
  ok: 好的
data/decidim-core.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.push File.expand_path("lib", __dir__)
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "decidim-core"
7
- version = "0.32.0.rc3"
7
+ version = "0.32.0"
8
8
  s.version = version
9
9
  s.authors = ["Josep Jaume Rey Peroy", "Marc Riera Casals", "Oriol Gual Oliva"]
10
10
  s.email = ["josepjaume@gmail.com", "mrc2407@gmail.com", "oriolgual@gmail.com"]
@@ -15,24 +15,39 @@ module Decidim
15
15
  #
16
16
  # name - The attribute's name
17
17
  #
18
- #
19
18
  # Example:
20
19
  #
21
- # attachment_attribute :photos
20
+ # attachments_attribute :photos
22
21
  # # This will create two attributes of the following types:
23
22
  # # attribute :photos, Array[Integer]
24
23
  # # attribute :add_photos, Array
25
- # # In addition, it will generate the getter method for the attribute
26
- # # returning an array of the Decidim::Attachment records.
24
+ # # In addition, it will generate:
25
+ # # - A setter that handles String (JSON/CSV), Integer, or Array inputs.
26
+ # # - A getter that falls back to add_photos when the attribute is blank.
27
+ # # - Private helpers for parsing and extracting IDs.
27
28
  #
28
29
  # Returns nothing.
29
- def attachments_attribute(name)
30
+ def attachments_attribute(name) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
30
31
  attribute name, Array[Integer]
31
32
  attribute :"add_#{name}", Array
32
33
 
33
- # Define the getter method that fetches the attachment records based on
34
- # their types. For Strings and Integers, assumes they are IDs and will
35
- # fetch the attachment record matching that ID.
34
+ # Setter: coerces String (JSON or comma-separated IDs) and bare Integer
35
+ # values into the expected Array[Integer] format before delegating to super.
36
+ define_method :"#{name}=" do |value|
37
+ case value
38
+ when String
39
+ parsed = send(:"parse_string_#{name}", value)
40
+ parsed.any? ? super(parsed) : super(value)
41
+ when Integer
42
+ super([value])
43
+ else
44
+ super(value)
45
+ end
46
+ end
47
+
48
+ # Getter: resolves stored integer IDs to Decidim::Attachment records,
49
+ # caching the result on the instance. Falls back to extracting IDs from
50
+ # add_<name> when the attribute itself is blank, then resolves those too.
36
51
  variable_name = "@#{name}_records"
37
52
  define_method name do
38
53
  return instance_variable_get(variable_name) if instance_variable_defined?(variable_name)
@@ -40,9 +55,15 @@ module Decidim
40
55
  original = @attributes[name.to_s].value_before_type_cast
41
56
  return original if original && !original.is_a?(Array)
42
57
 
58
+ ids = if super().blank? && send(:"add_#{name}").present?
59
+ send(:"extract_ids_from_add_#{name}")
60
+ else
61
+ super()
62
+ end
63
+
43
64
  instance_variable_set(
44
65
  variable_name,
45
- super().map do |attachment|
66
+ ids.map do |attachment|
46
67
  if attachment.is_a?(Integer)
47
68
  Decidim::Attachment.find_by(id: attachment)
48
69
  else
@@ -51,6 +72,34 @@ module Decidim
51
72
  end.compact
52
73
  )
53
74
  end
75
+
76
+ # Private helpers -------------------------------------------------------
77
+
78
+ define_method :"extract_ids_from_add_#{name}" do
79
+ send(:"add_#{name}")
80
+ .select { |item| item.is_a?(Hash) && (item[:id].present? || item["id"].present?) }
81
+ .map { |item| (item[:id] || item["id"]).to_i }
82
+ end
83
+
84
+ define_method :"parse_string_#{name}" do |value|
85
+ return [] if value.blank?
86
+
87
+ send(:"parse_#{name}_ids", value)
88
+ end
89
+
90
+ define_method :"parse_#{name}_ids" do |value|
91
+ ids = begin
92
+ Array(JSON.parse(value))
93
+ rescue JSON::ParserError
94
+ value.split(",").map(&:strip)
95
+ end
96
+
97
+ ids.map(&:to_i).reject(&:zero?)
98
+ end
99
+
100
+ private :"extract_ids_from_add_#{name}"
101
+ private :"parse_string_#{name}"
102
+ private :"parse_#{name}_ids"
54
103
  end
55
104
  end
56
105
  end