decidim-admin 0.30.4 → 0.30.6

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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/app/commands/decidim/admin/content_blocks/update_content_block.rb +12 -3
  3. data/app/commands/decidim/admin/destroy_participatory_space_private_user.rb +10 -0
  4. data/app/commands/decidim/admin/publish_component.rb +1 -0
  5. data/app/commands/decidim/admin/unpublish_component.rb +1 -0
  6. data/app/commands/decidim/admin/unreport_user.rb +1 -1
  7. data/app/helpers/decidim/admin/moderations/reports_helper.rb +1 -1
  8. data/app/jobs/decidim/admin/destroy_private_users_follows_job.rb +37 -0
  9. data/app/packs/src/decidim/admin/draggable-table.js +36 -18
  10. data/app/packs/src/decidim/admin/sort_list.component.js +3 -2
  11. data/config/locales/ar.yml +4 -13
  12. data/config/locales/bg.yml +5 -24
  13. data/config/locales/bs-BA.yml +14 -1
  14. data/config/locales/ca-IT.yml +15 -12
  15. data/config/locales/ca.yml +15 -12
  16. data/config/locales/cs.yml +7 -4
  17. data/config/locales/de.yml +12 -10
  18. data/config/locales/el.yml +4 -17
  19. data/config/locales/en.yml +8 -5
  20. data/config/locales/eo.yml +4 -0
  21. data/config/locales/es-MX.yml +15 -12
  22. data/config/locales/es-PY.yml +15 -12
  23. data/config/locales/es.yml +16 -13
  24. data/config/locales/eu.yml +18 -15
  25. data/config/locales/fi-plain.yml +9 -7
  26. data/config/locales/fi.yml +8 -6
  27. data/config/locales/fr-CA.yml +43 -14
  28. data/config/locales/fr.yml +43 -14
  29. data/config/locales/ga-IE.yml +7 -13
  30. data/config/locales/gl.yml +7 -12
  31. data/config/locales/he-IL.yml +7 -1
  32. data/config/locales/hu.yml +6 -26
  33. data/config/locales/id-ID.yml +7 -0
  34. data/config/locales/is-IS.yml +7 -0
  35. data/config/locales/it.yml +1 -27
  36. data/config/locales/ja.yml +15 -12
  37. data/config/locales/kaa.yml +5 -6
  38. data/config/locales/ko.yml +6 -7
  39. data/config/locales/lb.yml +8 -13
  40. data/config/locales/lt.yml +5 -23
  41. data/config/locales/lv.yml +11 -3
  42. data/config/locales/nl.yml +7 -12
  43. data/config/locales/no.yml +7 -12
  44. data/config/locales/pl.yml +9 -23
  45. data/config/locales/pt-BR.yml +180 -17
  46. data/config/locales/pt.yml +8 -14
  47. data/config/locales/ro-RO.yml +12 -30
  48. data/config/locales/ru.yml +12 -2
  49. data/config/locales/sk.yml +11 -3
  50. data/config/locales/sl.yml +4 -0
  51. data/config/locales/sq-AL.yml +8 -9
  52. data/config/locales/sr-CS.yml +24 -10
  53. data/config/locales/sv.yml +17 -13
  54. data/config/locales/th-TH.yml +5 -1
  55. data/config/locales/tr-TR.yml +95 -22
  56. data/config/locales/uk.yml +7 -0
  57. data/config/locales/zh-CN.yml +11 -2
  58. data/config/locales/zh-TW.yml +4 -22
  59. data/lib/decidim/admin/test/admin_participatory_space_access_examples.rb +20 -0
  60. data/lib/decidim/admin/test/filters_participatory_space_users_examples.rb +1 -1
  61. data/lib/decidim/admin/test/manage_attachments_examples.rb +12 -1
  62. data/lib/decidim/admin/version.rb +1 -1
  63. metadata +9 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a98584f386bd41c9360fe325433e5d69b4bc713ea88ab497807981e492c7985
4
- data.tar.gz: b3210b2051a4ece240c366a06cfb4de9b4ff4ac420c016055077dde4814a465f
3
+ metadata.gz: 522e8fe786af04bb61ca09ed907d3aa950debc4e5ef479c73ea760e996bb707a
4
+ data.tar.gz: 5b1e2037cd8b8dfbd57de6049f8b222a5c46d2e50ed676bfbd96f9fa0919882b
5
5
  SHA512:
6
- metadata.gz: 789c211a6456b8ef86de1d1451c338860a8f312dc3aab8b1e7362748cab4237625eed7b31ef2bee883db594ff05d8ff5449c6f3814118483edc6b75d189df1df
7
- data.tar.gz: bad1221e650116a7d6e1dcb18cec5be75072c99ff6cbe605cfacafd49cc36202ab3f6e93499e28d246c453e91ce543bb60a9f37cfc033979fcfadbb7ac1376ea
6
+ metadata.gz: 12380e3fcc234b0b06c72d91bd355fac1e58e7344696de3480c5a4f519697e96d73ea7e06cb3175e41f8bbde4f0c4b23506b8ebe1ff62ed13e23bf75e08bdabc
7
+ data.tar.gz: 76756b59d14cb4e1e6f01e27be96bbea10f9c1e0d3c335dd1cb544c6e6ab9a4f6761c6d7959eea13870bda64aa3da72ae206a94dccc8406bc743ddf752f5c91d
@@ -6,7 +6,7 @@ module Decidim
6
6
  # This command gets called when a content block is updated from the admin
7
7
  # panel.
8
8
  class UpdateContentBlock < Decidim::Command
9
- attr_reader :form, :content_block, :scope
9
+ attr_reader :form, :content_block, :scope, :attachments_to_purge
10
10
 
11
11
  # Public: Initializes the command.
12
12
  #
@@ -17,6 +17,7 @@ module Decidim
17
17
  @form = form
18
18
  @content_block = content_block
19
19
  @scope = scope
20
+ @attachments_to_purge = []
20
21
  end
21
22
 
22
23
  # Public: Updates the content block settings and its attachments.
@@ -55,6 +56,8 @@ module Decidim
55
56
 
56
57
  return broadcast(:invalid) unless images_valid
57
58
 
59
+ purge_attachment
60
+
58
61
  broadcast(:ok, content_block)
59
62
  end
60
63
 
@@ -67,14 +70,20 @@ module Decidim
67
70
  def update_content_block_images
68
71
  content_block.manifest.images.each do |image_config|
69
72
  image_name = image_config[:name]
70
-
71
73
  if form.images[image_name]
72
74
  content_block.images_container.send("#{image_name}=", form.images[image_name])
73
- elsif form.images[:"remove_#{image_name}"] == "1"
75
+ elsif form.images[:"remove_#{image_name}"]
76
+ @attachments_to_purge << content_block.images_container.send(image_name.to_s)
74
77
  content_block.images_container.send("#{image_name}=", nil)
75
78
  end
76
79
  end
77
80
  end
81
+
82
+ def purge_attachment
83
+ attachments_to_purge.each do |attachment_to_purge|
84
+ attachment_to_purge.purge if attachment_to_purge.respond_to?(:purge)
85
+ end
86
+ end
78
87
  end
79
88
  end
80
89
  end
@@ -13,6 +13,16 @@ module Decidim
13
13
  }
14
14
  }
15
15
  end
16
+
17
+ def run_after_hooks
18
+ return unless resource.privatable_to.respond_to?(:private_space?)
19
+ return unless resource.privatable_to.private_space?
20
+ return if resource.privatable_to.respond_to?(:is_transparent) && resource.privatable_to.is_transparent?
21
+
22
+ # When private user is destroyed, a hook to destroy the follows of user on private non-transparent assembly
23
+ # or private participatory process and the follows of their children
24
+ DestroyPrivateUsersFollowsJob.perform_later(resource.decidim_user_id, resource.privatable_to)
25
+ end
16
26
  end
17
27
  end
18
28
  end
@@ -19,6 +19,7 @@ module Decidim
19
19
  def call
20
20
  publish_component
21
21
  publish_event unless component.previously_published?
22
+ component.manifest.run_hooks(:publish, component)
22
23
 
23
24
  broadcast(:ok)
24
25
  end
@@ -18,6 +18,7 @@ module Decidim
18
18
  # Broadcasts :ok if unpublished, :invalid otherwise.
19
19
  def call
20
20
  unpublish_component
21
+ component.manifest.run_hooks(:unpublish, component)
21
22
 
22
23
  broadcast(:ok)
23
24
  end
@@ -19,7 +19,7 @@ module Decidim
19
19
  #
20
20
  # Returns nothing.
21
21
  def call
22
- return broadcast(:invalid) unless @reportable.reported?
22
+ return broadcast(:invalid) unless @reportable.reported? || @reportable.user_moderation
23
23
 
24
24
  unreport!
25
25
  broadcast(:ok, @reportable)
@@ -19,7 +19,7 @@ module Decidim
19
19
  when User
20
20
  content_tag :li do
21
21
  link_to current_or_new_conversation_path_with(author), target: "_blank", rel: "noopener" do
22
- "#{author.name} #{icon "mail-send-line"}".html_safe
22
+ "#{author.presenter.name} #{icon "mail-send-line"}".html_safe
23
23
  end
24
24
  end
25
25
  when Decidim::Meetings::Meeting
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Admin
5
+ class DestroyPrivateUsersFollowsJob < ApplicationJob
6
+ queue_as :default
7
+
8
+ def perform(decidim_user_id, space)
9
+ return unless space.respond_to?(:private_space?)
10
+
11
+ return unless space.private_space?
12
+
13
+ return if space.respond_to?(:is_transparent) && space.is_transparent?
14
+
15
+ user = Decidim::User.find_by(id: decidim_user_id)
16
+
17
+ return if user.blank?
18
+
19
+ return if space.respond_to?(:can_participate?) && space.can_participate?(user)
20
+
21
+ follows = Decidim::Follow.where(user: user)
22
+ follows.where(followable: space).destroy_all
23
+
24
+ destroy_children_follows(follows, space)
25
+ end
26
+
27
+ def destroy_children_follows(follows, space)
28
+ follows.map do |follow|
29
+ object = follow.followable.presence
30
+ next unless object.respond_to?(:decidim_component_id)
31
+
32
+ follow.destroy if space.component_ids.include?(object.decidim_component_id)
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -4,30 +4,48 @@ import createSortList from "src/decidim/admin/sort_list.component"
4
4
  * Draggable table
5
5
  *
6
6
  * This script is used to make a table draggable.
7
- * It works with two data attributes:
7
+ * It works with the following data attributes:
8
8
  *
9
9
  * - data-draggable-table: The table that will be draggable.
10
10
  * - data-sort-url: The URL where the order will be sent.
11
+ * - data-draggable-handle: (optional) CSS selector for the drag handle element.
12
+ * When specified, dragging can only be initiated from this element.
13
+ * - data-draggable-placeholder: (optional) HTML for the placeholder element.
11
14
  */
12
- $(() => {
13
- createSortList("[data-draggable-table]", {
14
- onSortUpdate: ($children) => {
15
- const children = $children.toArray();
15
+ document.addEventListener("DOMContentLoaded", () => {
16
+ document.querySelectorAll("[data-draggable-table]").forEach((container) => {
17
+ const options = {
18
+ forcePlaceholderSize: true,
19
+ onSortUpdate: ($children) => {
20
+ const children = $children.toArray();
16
21
 
17
- if (children.length === 0) {
18
- return;
19
- }
22
+ if (children.length === 0) {
23
+ return;
24
+ }
25
+
26
+ const parent = children[0].parentNode;
27
+ const sortUrl = parent.dataset.sortUrl;
28
+ const order = children.map((child) => child.dataset.recordId);
20
29
 
21
- const parent = children[0].parentNode;
22
- const sortUrl = parent.dataset.sortUrl;
23
- const order = children.map((child) => child.dataset.recordId);
30
+ if (sortUrl && sortUrl !== "#") {
31
+ $.ajax({
32
+ method: "PUT",
33
+ url: sortUrl,
34
+ contentType: "application/json",
35
+ data: JSON.stringify({ order_ids: order }) // eslint-disable-line camelcase
36
+ });
37
+ }
38
+ }
39
+ };
24
40
 
25
- $.ajax({
26
- method: "PUT",
27
- url: sortUrl,
28
- contentType: "application/json",
29
- data: JSON.stringify({ order_ids: order }) // eslint-disable-line camelcase
30
- });
41
+ // Read optional configuration from data attributes
42
+ if (container.dataset.draggableHandle) {
43
+ options.handle = container.dataset.draggableHandle;
31
44
  }
45
+ if (container.dataset.draggablePlaceholder) {
46
+ options.placeholder = container.dataset.draggablePlaceholder;
47
+ }
48
+
49
+ createSortList(container, options);
32
50
  });
33
- })
51
+ });
@@ -6,7 +6,7 @@ class SortListComponent {
6
6
  /**
7
7
  * Creates a sortable list using hmtl5sortable function.
8
8
  *
9
- * @param {String} sortListSelector The list selector that has to be sortable.
9
+ * @param {String|HTMLElement} sortListSelector The list selector or element that has to be sortable.
10
10
  * @param {Object} options An object containing the same options as html5sortable. It also includes
11
11
  * an extra option `onSortUpdate`, a callback which returns the children collection
12
12
  * whenever the list order has been changed.
@@ -14,7 +14,8 @@ class SortListComponent {
14
14
  * @returns {void} Nothing.
15
15
  */
16
16
  constructor(sortListSelector, options) {
17
- if ($(sortListSelector).length > 0) {
17
+ const $element = $(sortListSelector);
18
+ if ($element.length > 0) {
18
19
  sortable(sortListSelector, options)[0].addEventListener("sortupdate", (event) => {
19
20
  const $children = $(event.target).children();
20
21
 
@@ -38,7 +38,6 @@ ar:
38
38
  user_group_id: إنشاء الاستيرادات ك
39
39
  newsletter:
40
40
  body: النص
41
- send_to_all_users: إرسال إلى كافة المستخدمين
42
41
  send_to_followers: إرسال إلى المتابِعين
43
42
  send_to_participants: إرسال إلى المشتركين
44
43
  subject: الموضوع
@@ -105,7 +104,7 @@ ar:
105
104
  youtube_handler: مُعرّف حساب يوتيوب
106
105
  participatory_space_private_user:
107
106
  email: البريد الإلكتروني
108
- name: الإسم
107
+ name: الاسم
109
108
  participatory_space_private_user_csv_import:
110
109
  file: ملف
111
110
  scope:
@@ -193,7 +192,6 @@ ar:
193
192
  </ul>
194
193
  يمكنك استعادة العنصر إذا غيرت رأيك لاحقاً.
195
194
  export: تصدير الكل
196
- export-selection: تصدير الإختيار
197
195
  import: استيراد
198
196
  manage: تدبير
199
197
  newsletter:
@@ -362,16 +360,9 @@ ar:
362
360
  'false': Officialized
363
361
  'true': غير رسمي
364
362
  participatory_space_private_users:
365
- user_invitation_accepted_at_not_null:
366
- label: تم قبول الدعوة
367
- values:
368
- 'false': لم يتم القبول
369
- 'true': تم قبوله
370
363
  user_invitation_sent_at_not_null:
371
- label: تم إرسال الدعوة
372
364
  values:
373
- 'false': لم يتم الارسال
374
- 'true': تم الإرسال
365
+ 'false': غير مرسَلة
375
366
  private_space_eq:
376
367
  label: خاص
377
368
  values:
@@ -718,6 +709,8 @@ ar:
718
709
  destroy:
719
710
  error: حدثت مشكلة في حذف مشارك خاص لهذه المساحة التشاركية.
720
711
  success: المشاركة الفضاء الفضاء وصول المشاركين دمرت بنجاح.
712
+ edit:
713
+ update: تحديث
721
714
  index:
722
715
  title: المشاركة الفضاء المشارك الخاص
723
716
  new:
@@ -732,7 +725,6 @@ ar:
732
725
  empty: ليس لديك أي مشاركين خاصين.
733
726
  explanation: لديك %{count} مشاركين خاصين.
734
727
  title: حذف جميع المشاركين الخاصين
735
- upload: حمّل
736
728
  reminders:
737
729
  new:
738
730
  submit: إرسال
@@ -870,7 +862,6 @@ ar:
870
862
  new:
871
863
  explanation: قم بتحميل ملف CSV الخاص بك. يجب أن يحتوي على رسائل البريد الإلكتروني الرسمية للمجموعات في مؤسستك في العمود الأول من الملف ، بدون رؤوس. سيتم التحقق من صحة المجموعات التي أكدت بريدها الإلكتروني والتي تحتوي على بريد إلكتروني ظاهر في ملف CSV.
872
864
  title: قم بتحميل ملف CSV الخاص بك
873
- upload: حمّل
874
865
  users:
875
866
  create:
876
867
  error: كانت هناك مشكلة في دعوة هذا المشرف.
@@ -38,7 +38,6 @@ bg:
38
38
  user_group_id: Създаване на импорта като
39
39
  newsletter:
40
40
  body: Тяло
41
- send_to_all_users: Изпращане до всички потребители
42
41
  send_to_followers: Изпращане до последователите
43
42
  send_to_participants: Изпращане до участниците
44
43
  subject: Тема
@@ -106,6 +105,8 @@ bg:
106
105
  participatory_space_private_user:
107
106
  email: Имейл
108
107
  name: Име
108
+ participatory_space_private_user_csv_import:
109
+ file: Файл
109
110
  scope:
110
111
  code: Код
111
112
  name: Име
@@ -184,7 +185,6 @@ bg:
184
185
  new: Нова прикачена папка
185
186
  browse: Разглеждане
186
187
  export: Експорт на всички
187
- export-selection: Експорт на селекцията
188
188
  import: Импортиране
189
189
  manage: Управление
190
190
  newsletter:
@@ -287,7 +287,6 @@ bg:
287
287
  block_user:
288
288
  new:
289
289
  action: Блокирайте акаунта и изпратете обосновка
290
- already_reported_html: Продължавайки с това действие, вие също ще скриете съдържанието за всички участници.
291
290
  description: Блокирането на потребител ще направи акаунта му неизползваем. Можете да предоставите във вашата обосновка всякакви насоки относно начините, по които бихте обмислили деблокирането на потребителя.
292
291
  justification: Обосновка
293
292
  title: Блокиране на потребител %{name}
@@ -379,7 +378,6 @@ bg:
379
378
  form:
380
379
  domain_too_short: Домейнът е твърде кратък
381
380
  update:
382
- error: Неуспешно актуализиране на списъка с разрешени външни домейни
383
381
  success: Списъкът с разрешени външни домейни е актуализиран успешно.
384
382
  exports:
385
383
  export_as: "%{name} като %{export_format}"
@@ -417,16 +415,9 @@ bg:
417
415
  'false': Официализирано
418
416
  'true': Неофициализирано
419
417
  participatory_space_private_users:
420
- user_invitation_accepted_at_not_null:
421
- label: Поканата е приета
422
- values:
423
- 'false': Не се приема
424
- 'true': Прието
425
418
  user_invitation_sent_at_not_null:
426
- label: Поканата е изпратена
427
419
  values:
428
420
  'false': Не е изпратено
429
- 'true': Изпратено
430
421
  private_space_eq:
431
422
  label: Частни
432
423
  values:
@@ -756,6 +747,7 @@ bg:
756
747
  participants_help: Изпраща бюлетина до всички потвърдени потребители, които са участвали в някое от избраните пространства за участие в списъка.
757
748
  recipients_count: Този бюлетин ще бъде изпратен на <strong id='recipients_count'>%{count}</strong> потребители.
758
749
  select_spaces: Изберете пространства, за да сегментирате бюлетина
750
+ send_to_all_users: Изпращане до всички потребители
759
751
  title: Изберете получатели, на които да бъде изпратено
760
752
  warning: "<strong>Внимание:</strong> Този бюлетин ще бъде изпратен само на потребители, които са включили <em>Искам да получавам бюлетини</em> в настройките си за известия."
761
753
  send:
@@ -856,16 +848,14 @@ bg:
856
848
  destroy:
857
849
  error: Възникна проблем при изтриването на частен участник за това пространство за участие.
858
850
  success: Достъпът на частния участник до пространството за участие беше премахнат успешно.
851
+ edit:
852
+ update: Актуализация
859
853
  index:
860
- import_via_csv: Импортиране чрез CSV
861
854
  title: Пространство за участие на частен участник
862
855
  new:
863
856
  create: Създаване
864
857
  title: Ново пространство за участие на частен участник.
865
858
  participatory_space_private_users_csv_imports:
866
- create:
867
- invalid: Възникна проблем при четенето на CSV файла. Моля, уверете се, че сте следвали инструкциите.
868
- success: Файлът във формат CSV беше качен успешно; изпращаме имейл с покана на участниците. Това може да отнеме известно време.
869
859
  new:
870
860
  csv_upload:
871
861
  title: Качете своя CSV файл
@@ -875,13 +865,7 @@ bg:
875
865
  empty: Нямате частни участници.
876
866
  explanation: Имате %{count} частни участници.
877
867
  title: Изтрийте частни участници
878
- example_file: 'Примерен файл:'
879
- explanation: Качете своя файл във формат CSV. Трябва да съдържа две колони — електронната поща в първата колона и името в последната колона от файла (електронна поща, име) — за потребителите, които искате да добавите в пространството за участие, без заглавки.
880
- explanation_example: |
881
- john.doe@example.org%{csv_col_sep}John Doe
882
- jane.doe@example.org%{csv_col_sep}Jane Doe
883
868
  title: Импортирайте частни участници чрез CSV
884
- upload: Качване
885
869
  reminders:
886
870
  create:
887
871
  error: Възникна проблем при създаването на напомняния.
@@ -1056,13 +1040,11 @@ bg:
1056
1040
  verify_via_csv: Проверка чрез CSV
1057
1041
  user_groups_csv_verifications:
1058
1042
  new:
1059
- example_file: 'Примерен файл:'
1060
1043
  explanation: Качете своя файл във формат CSV. Трябва да съдържа официалните електронни пощи на групите в организацията Ви в първата колона от файла, без заглавки. Ще бъдат валидирани само групите с потвърдена електронна поща и с адрес на електронната поща във файла във формат CSV.
1061
1044
  explanation_example: |
1062
1045
  acme@example.org
1063
1046
  bubba.gump@example.org
1064
1047
  title: Качете своя CSV файл
1065
- upload: Качване
1066
1048
  users:
1067
1049
  create:
1068
1050
  error: Възникна проблем с поканата на този администратор.
@@ -1083,7 +1065,6 @@ bg:
1083
1065
  last_day: Предният ден
1084
1066
  last_month: Миналия месец
1085
1067
  last_week: Последната седмица
1086
- no_users_count_statistics_yet: Все още няма статистика за броя на потребителите.
1087
1068
  participants: Участници
1088
1069
  forms:
1089
1070
  errors:
@@ -69,6 +69,11 @@ bs:
69
69
  welcome_notification_body: Glavni tekst obaveštenja dobrodošlice
70
70
  welcome_notification_subject: Naslov obaveštenja dobrodošlice
71
71
  youtube_handler: Administrator YouTube-a
72
+ participatory_space_private_user:
73
+ email: E-pošta
74
+ name: Ime
75
+ participatory_space_private_user_csv_import:
76
+ file: Fajl
72
77
  scope:
73
78
  code: Kod
74
79
  name: Ime
@@ -231,6 +236,10 @@ bs:
231
236
  values:
232
237
  'false': Službeno
233
238
  'true': Neslužbeno
239
+ participatory_space_private_users:
240
+ user_invitation_sent_at_not_null:
241
+ values:
242
+ 'false': Nije poslato
234
243
  private_space_eq:
235
244
  label: Privatno
236
245
  values:
@@ -431,7 +440,6 @@ bs:
431
440
  participants_help: Pošalji bilten svim potvrđenim učesnicima koji su učestvovali u bilo kojem od odabranih prostora za učešće sa liste.
432
441
  recipients_count: Ovaj bilten biće dostavljen %{count} korisnicima.
433
442
  select_spaces: Izaberite prostore da podelite bilten
434
- send_to_all_users: Pošalji svim korisnicima
435
443
  title: Izaberi primaoce za dostavu
436
444
  warning: "Pažnja: Ovaj bilten će biti poslan samo korisnicima koji su aktivirali Želim da dobijam biltene u svojim podešavanjima obaveštenja."
437
445
  show:
@@ -486,6 +494,11 @@ bs:
486
494
  images:
487
495
  preview: Pregled
488
496
  omnipresent_banner_appearance_title: Izmeni sveprisutni baner
497
+ participatory_space_private_users:
498
+ edit:
499
+ update: Ažuriraj
500
+ new:
501
+ create: Stvori
489
502
  shared:
490
503
  gallery:
491
504
  add_images: Dodaj slike
@@ -38,7 +38,7 @@ ca-IT:
38
38
  user_group_id: Importar com
39
39
  newsletter:
40
40
  body: Cos
41
- send_to_all_users: Envia a totes les usuàries
41
+ send_to_all_users: Envia a totes les participants
42
42
  send_to_followers: Envia a totes les seguidores
43
43
  send_to_participants: Envia a les participants
44
44
  subject: Assumpte
@@ -138,6 +138,9 @@ ca-IT:
138
138
  show_in_footer: Mostra al peu de pàgina
139
139
  title: Títol
140
140
  weight: Ordre de posició
141
+ taxonomy:
142
+ item_name: Nom de l'element
143
+ parent_id: Taxonomia mare
141
144
  user_group_csv_verification:
142
145
  file: Fitxer
143
146
  errors:
@@ -308,7 +311,7 @@ ca-IT:
308
311
  title: Bloquejar usuàries
309
312
  new:
310
313
  action: Bloquejar compte i enviar justificació
311
- already_reported_html: Si segueixes amb aquesta acció, amagaràs tots els continguts de la participant.
314
+ already_reported_html: Si segueixes amb aquesta acció, amagaràs tots els continguts de les participants.
312
315
  description: El bloqueig d'una usuària deixarà el seu compte inutilitzable. Pots proporcionar en la teva justificació els criteris sota els quals consideraries desbloquejar-la.
313
316
  justification: Justificació
314
317
  title: Bloquejar a la usuària %{name}
@@ -325,7 +328,7 @@ ca-IT:
325
328
  success: El component s'ha creat correctament.
326
329
  success_landing_page: Component creat amb èxit. Pots afegir un bloc de contingut per aquest component a la pàgina d'inici de l'espai de participació. <a href="%{landing_page_path}">Vés a la pàgina d'inici</a> per a configurar-la.
327
330
  edit:
328
- title: Edita el component
331
+ title: Configura el component
329
332
  update: Actualitzar
330
333
  form:
331
334
  default_step_settings: Configuració per defecte
@@ -402,7 +405,7 @@ ca-IT:
402
405
  form:
403
406
  domain_too_short: El domini és massa curt
404
407
  update:
405
- error: S'ha produït un error en actualitzar el llistat de domininis externs permesos
408
+ error: S'ha produït un error en actualitzar el llistat de dominis externs permesos.
406
409
  success: El llistat de dominis externs permesos s'ha actualitzat correctament.
407
410
  exports:
408
411
  export_as: "%{name} com a %{export_format}"
@@ -446,9 +449,9 @@ ca-IT:
446
449
  'false': No acceptada
447
450
  'true': Acceptada
448
451
  user_invitation_sent_at_not_null:
449
- label: S'ha enviat la invitació
452
+ label: Invitació enviada
450
453
  values:
451
- 'false': No enviada
454
+ 'false': No enviat
452
455
  'true': Enviada
453
456
  private_space_eq:
454
457
  label: Privat
@@ -826,7 +829,7 @@ ca-IT:
826
829
  select_users_for_participatory_space: Enviar el butlletí informatiu a un o més espais de participació
827
830
  select_users_general: Enviar un butlletí general
828
831
  select_verification_types: Seleccionar mètodes de verificació
829
- send_to_all_users: Envia a totes les participants
832
+ send_to_all_users: Envia a totes les usuàries
830
833
  send_to_verified_users: Enviar a usuàries verificades
831
834
  title: Selecciona les destinatàries a lliurar
832
835
  verified_users_help: Envia un butlletí informatiu a tots els usuaris confirmats i verificats amb qualsevol dels mètodes de verificació seleccionats.
@@ -951,9 +954,9 @@ ca-IT:
951
954
  update: Actualitzar
952
955
  index:
953
956
  import_via_csv: Importar des de CSV
954
- publish_all: Publicar tot
957
+ publish_all: Publicar totes
955
958
  title: Participant de l'espai participatiu privat
956
- unpublish_all: Despublicar tot
959
+ unpublish_all: Despublicar totes
957
960
  new:
958
961
  create: Crear
959
962
  title: Nova participant de l'espai privat.
@@ -985,7 +988,7 @@ ca-IT:
985
988
  john.doe@example.org%{csv_col_sep}John Doe
986
989
  jane.doe@example.org%{csv_col_sep}Jane Doe
987
990
  title: Importar participant privades via CSV
988
- upload: Carrega
991
+ upload: Carregar
989
992
  reminders:
990
993
  create:
991
994
  error: Hi ha hagut un problema en crear els recordatoris.
@@ -1300,7 +1303,7 @@ ca-IT:
1300
1303
  acme@example.org
1301
1304
  bubba.gump@example.org
1302
1305
  title: Puja el fitxer CSV
1303
- upload: Carrega
1306
+ upload: Carregar
1304
1307
  users:
1305
1308
  create:
1306
1309
  error: S'ha produït un error en convidar aquesta participant.
@@ -1321,7 +1324,7 @@ ca-IT:
1321
1324
  last_day: El darrer dia
1322
1325
  last_month: El darrer mes
1323
1326
  last_week: La darrera setmana
1324
- no_users_count_statistics_yet: Encara no hi ha estadístiques de recompte d’usuàries.
1327
+ no_users_count_statistics_yet: Encara no hi ha estadístiques de recompte de participants.
1325
1328
  participants: Participants
1326
1329
  forms:
1327
1330
  errors: