decidim-meetings 0.28.4 → 0.28.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 (65) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/meetings/dates_and_map/show.erb +5 -3
  3. data/app/cells/decidim/meetings/dates_and_map_cell.rb +1 -1
  4. data/app/cells/decidim/meetings/meeting_l_cell.rb +5 -0
  5. data/app/forms/decidim/meetings/admin/close_meeting_form.rb +1 -1
  6. data/app/forms/decidim/meetings/admin/meeting_agenda_items_form.rb +1 -1
  7. data/app/forms/decidim/meetings/admin/meeting_form.rb +1 -1
  8. data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +2 -2
  9. data/app/models/decidim/meetings/meeting.rb +0 -5
  10. data/app/packs/stylesheets/decidim/meetings/_item.scss +5 -17
  11. data/app/permissions/decidim/meetings/permissions.rb +7 -2
  12. data/app/presenters/decidim/meetings/meeting_presenter.rb +1 -5
  13. data/app/views/decidim/meetings/meetings/index.html.erb +9 -0
  14. data/app/views/decidim/meetings/meetings/new.html.erb +1 -0
  15. data/app/views/decidim/meetings/registration_mailer/confirmation.html.erb +1 -1
  16. data/app/views/decidim/meetings/shared/_meetings.html.erb +1 -1
  17. data/config/locales/ar.yml +3 -7
  18. data/config/locales/bg.yml +0 -8
  19. data/config/locales/bn-BD.yml +1 -0
  20. data/config/locales/bs-BA.yml +8 -0
  21. data/config/locales/ca-IT.yml +661 -0
  22. data/config/locales/ca.yml +6 -4
  23. data/config/locales/cs.yml +4 -10
  24. data/config/locales/de.yml +120 -118
  25. data/config/locales/el.yml +3 -7
  26. data/config/locales/en.yml +3 -1
  27. data/config/locales/es-MX.yml +11 -9
  28. data/config/locales/es-PY.yml +12 -10
  29. data/config/locales/es.yml +13 -11
  30. data/config/locales/eu.yml +60 -58
  31. data/config/locales/fi-plain.yml +5 -8
  32. data/config/locales/fi.yml +15 -18
  33. data/config/locales/fr-CA.yml +7 -6
  34. data/config/locales/fr.yml +7 -6
  35. data/config/locales/ga-IE.yml +3 -0
  36. data/config/locales/gl.yml +7 -8
  37. data/config/locales/hu.yml +6 -10
  38. data/config/locales/id-ID.yml +9 -6
  39. data/config/locales/is-IS.yml +12 -1
  40. data/config/locales/it.yml +15 -9
  41. data/config/locales/ja.yml +5 -3
  42. data/config/locales/lb.yml +7 -7
  43. data/config/locales/lt.yml +2 -9
  44. data/config/locales/lv.yml +9 -6
  45. data/config/locales/nl.yml +4 -8
  46. data/config/locales/no.yml +3 -6
  47. data/config/locales/pl.yml +0 -8
  48. data/config/locales/pt-BR.yml +5 -12
  49. data/config/locales/pt.yml +6 -7
  50. data/config/locales/ro-RO.yml +7 -4
  51. data/config/locales/ru.yml +9 -6
  52. data/config/locales/sk.yml +10 -7
  53. data/config/locales/sv.yml +2 -4
  54. data/config/locales/tr-TR.yml +13 -8
  55. data/config/locales/uk.yml +12 -6
  56. data/config/locales/zh-CN.yml +11 -7
  57. data/config/locales/zh-TW.yml +3 -7
  58. data/decidim-meetings.gemspec +1 -1
  59. data/lib/decidim/api/meeting_type.rb +12 -0
  60. data/lib/decidim/api/meetings_type.rb +1 -3
  61. data/lib/decidim/meetings/engine.rb +8 -1
  62. data/lib/decidim/meetings/meeting_serializer.rb +37 -0
  63. data/lib/decidim/meetings/test/factories.rb +6 -0
  64. data/lib/decidim/meetings/version.rb +1 -1
  65. metadata +18 -15
@@ -49,6 +49,12 @@ uk:
49
49
  other: Зареєстрованих
50
50
  decidim:
51
51
  admin:
52
+ filters:
53
+ meetings:
54
+ category_id_eq:
55
+ label: Категорія
56
+ scope_id_eq:
57
+ label: Обсяг
52
58
  meeting_copies:
53
59
  create:
54
60
  error: При спробі створити копію цієї зустрічі сталася помилка.
@@ -67,6 +73,7 @@ uk:
67
73
  comments_enabled: Коментарі увімкнено
68
74
  default_registration_terms: Умови реєстрації за умовчанням
69
75
  resources_permissions_enabled: Права на дії можна встановити для кожної зустрічі
76
+ scope_id: Обсяг
70
77
  step:
71
78
  announcement: Оголошення
72
79
  comments_blocked: Коментарі вимкнено
@@ -114,7 +121,6 @@ uk:
114
121
  attachment_collections: Теки
115
122
  attachments: Вкладені файли
116
123
  close: Закрити
117
- confirm_destroy: Ви впевнені, що хочете видалити цю зустріч?
118
124
  destroy: Видалити
119
125
  edit: Редагувати
120
126
  preview: Попередній перегляд
@@ -196,8 +202,6 @@ uk:
196
202
  registrations:
197
203
  edit:
198
204
  save: Зберегти
199
- validate: Підтвердити
200
- validate_registration_code: Підтвердити реєстраційний код
201
205
  form:
202
206
  available_slots_help: Залиште це число нульовим, якщо у вас не обмежена кількість місць.
203
207
  invites: Запрошення
@@ -205,9 +209,6 @@ uk:
205
209
  update:
206
210
  invalid: При спробі зберегти налаштування реєстрації сталася помилка.
207
211
  success: Налаштування реєстрації на зустріч успішно збережено.
208
- validate_registration_code:
209
- invalid: Цей реєстраційний код неналежний.
210
- success: Реєстраційний код успішно підтверджено.
211
212
  admin_log:
212
213
  invite:
213
214
  create: "%{user_name} запросив %{attendee_name} приєднатися до зустрічі %{resource_name} у просторі %{space_name}"
@@ -234,6 +235,8 @@ uk:
234
235
  category: Категорія
235
236
  date: Дата
236
237
  search: Шукати
238
+ meeting:
239
+ close_meeting: Закрити зустріч
237
240
  meetings:
238
241
  upcoming_meetings_warning: Наразі нема запланованих зустрічей, але тут ви можете знайти перелік усіх попередніх зустрічей.
239
242
  registration_confirm:
@@ -282,6 +285,9 @@ uk:
282
285
  types:
283
286
  private_meeting: Приватна зустріч
284
287
  transparent: Прозора
288
+ metrics:
289
+ meetings:
290
+ title: Зустрічі
285
291
  participatory_spaces:
286
292
  highlighted_meetings:
287
293
  past_meetings: Минулі зустрічі
@@ -43,6 +43,12 @@ zh-CN:
43
43
  other: 注册
44
44
  decidim:
45
45
  admin:
46
+ filters:
47
+ meetings:
48
+ category_id_eq:
49
+ label: 类别
50
+ scope_id_eq:
51
+ label: 范围
46
52
  meeting_copies:
47
53
  create:
48
54
  error: 重复这次会议时出现问题。
@@ -132,7 +138,6 @@ zh-CN:
132
138
  attachment_collections: 文件夹
133
139
  attachments: 附件
134
140
  close: 关闭
135
- confirm_destroy: 您确定要删除这个会议吗?
136
141
  destroy: 删除
137
142
  edit: 编辑
138
143
  invalid_destroy:
@@ -222,8 +227,6 @@ zh-CN:
222
227
  registrations:
223
228
  edit:
224
229
  save: 保存
225
- validate: Validate
226
- validate_registration_code: 验证注册码
227
230
  form:
228
231
  available_slots_help: 如果您有无限空位可用,则将其留给0。
229
232
  invites: 邀请
@@ -236,9 +239,6 @@ zh-CN:
236
239
  update:
237
240
  invalid: 保存注册设置时出现问题。
238
241
  success: 会议注册设置保存成功。
239
- validate_registration_code:
240
- invalid: 此注册码无效。
241
- success: 注册码已成功验证。
242
242
  admin_log:
243
243
  invite:
244
244
  create: "%{user_name} 邀請了 %{attendee_name} 在 %{space_name} 空间加入 %{resource_name} 次会议"
@@ -253,6 +253,9 @@ zh-CN:
253
253
  value_types:
254
254
  organizer_presenter:
255
255
  not_found: '在数据库中找不到组织者 (ID: %{id})'
256
+ application_helper:
257
+ filter_category_values:
258
+ all: 所有的
256
259
  calendar_modal:
257
260
  calendar_url: 日历 URL
258
261
  export_calendar: 导出日历
@@ -299,12 +302,13 @@ zh-CN:
299
302
  select_a_category: 请选择一个类别
300
303
  index:
301
304
  new_meeting: 新会议
305
+ meeting:
306
+ close_meeting: 关闭会议
302
307
  meetings:
303
308
  upcoming_meetings_warning: 目前没有排定的会议,但在这里你可以找到过去所有会议的清单。
304
309
  new:
305
310
  back: 后退
306
311
  create: 创建
307
- title: 创建您的会议
308
312
  registration_confirm:
309
313
  cancel: 取消
310
314
  confirm: 确认
@@ -210,7 +210,6 @@ zh-TW:
210
210
  attachment_collections: 資料夾
211
211
  attachments: 附件
212
212
  close: 關閉
213
- confirm_destroy: 你確定要刪除此會議?
214
213
  destroy: 刪除
215
214
  edit: 編輯
216
215
  invalid_destroy:
@@ -342,8 +341,6 @@ zh-TW:
342
341
  registrations:
343
342
  edit:
344
343
  save: 儲存
345
- validate: 驗證
346
- validate_registration_code: 驗證註冊碼
347
344
  form:
348
345
  available_slots_help: 如果您有無限的可用名額,請將其設置為0。
349
346
  invites: 邀請
@@ -358,9 +355,6 @@ zh-TW:
358
355
  update:
359
356
  invalid: 儲存註冊設定時出現問題。
360
357
  success: 會議註冊設定已成功保存。
361
- validate_registration_code:
362
- invalid: 此註冊碼無效。
363
- success: 註冊碼已成功驗證。
364
358
  admin_log:
365
359
  invite:
366
360
  create: "%{user_name} 邀請 %{attendee_name} 參加在 %{space_name} 空間舉行的 %{resource_name} 會議。"
@@ -494,13 +488,15 @@ zh-TW:
494
488
  see_all: 查看所有會議
495
489
  see_all_withdrawn: 查看所有撤回的會議
496
490
  text_banner: 您正在查看已被其作者撤回的會議列表。 %{go_back_link}。
491
+ meeting:
492
+ close_meeting: 關閉會議
493
+ edit_meeting: 編輯會議
497
494
  meetings:
498
495
  no_meetings_warning: 沒有符合搜尋條件的會議或者目前沒有任何已排定的會議。
499
496
  upcoming_meetings_warning: 目前沒有安排的會議,但您可以在這裡找到所有過去的會議列表。
500
497
  new:
501
498
  back: 返回
502
499
  create: 建立
503
- title: 新增您的會議
504
500
  registration_confirm:
505
501
  cancel: 取消
506
502
  confirm: 確認
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.version = Decidim::Meetings.version
11
11
  s.authors = ["Josep Jaume Rey Peroy", "Marc Riera Casals", "Oriol Gual Oliva"]
12
12
  s.email = ["josepjaume@gmail.com", "mrc2407@gmail.com", "oriolgual@gmail.com"]
13
- s.license = "AGPL-3.0"
13
+ s.license = "AGPL-3.0-or-later"
14
14
  s.homepage = "https://decidim.org"
15
15
  s.metadata = {
16
16
  "bug_tracker_uri" => "https://github.com/decidim/decidim/issues",
@@ -74,6 +74,18 @@ module Decidim
74
74
  field :type_of_meeting, GraphQL::Types::String, "The type of the meeting (online or in-person)", null: false
75
75
  field :online_meeting_url, GraphQL::Types::String, "The URL of the meeting (when the type is online)", null: false
76
76
  field :iframe_embed_type, GraphQL::Types::String, "The type of displaying of the online meeting URL", null: true
77
+
78
+ def self.authorized?(object, context)
79
+ context[:meeting] = object
80
+
81
+ chain = [
82
+ allowed_to?(:read, :meeting, object, context),
83
+ object.published?,
84
+ object.current_user_can_visit_meeting?(context[:current_user])
85
+ ].all?
86
+
87
+ super && chain
88
+ end
77
89
  end
78
90
  end
79
91
  end
@@ -2,9 +2,7 @@
2
2
 
3
3
  module Decidim
4
4
  module Meetings
5
- class MeetingsType < Decidim::Api::Types::BaseObject
6
- implements Decidim::Core::ComponentInterface
7
-
5
+ class MeetingsType < Decidim::Core::ComponentType
8
6
  graphql_name "Meetings"
9
7
  description "A meetings component of a participatory space."
10
8
 
@@ -46,6 +46,8 @@ module Decidim
46
46
  end
47
47
 
48
48
  initializer "decidim_meetings.register_icons" do
49
+ Decidim.icons.register(name: "headphone-line", icon: "headphone-line", category: "system", description: "", engine: :meetings)
50
+ Decidim.icons.register(name: "video-line", icon: "video-line", category: "system", description: "", engine: :meetings)
49
51
  Decidim.icons.register(name: "Decidim::Meetings::Meeting", icon: "map-pin-line", description: "Meeting", category: "activity", engine: :meetings)
50
52
  Decidim.icons.register(name: "in_person", icon: "community-line", description: "In person", category: "meetings", engine: :meetings)
51
53
  Decidim.icons.register(name: "online", icon: "webcam-line", description: "Online", category: "meetings", engine: :meetings)
@@ -75,7 +77,12 @@ module Decidim
75
77
 
76
78
  initializer "decidim_meetings.content_security_handlers" do |_app|
77
79
  Decidim.configure do |config|
78
- config.content_security_policies_extra.deep_merge!({ "frame-src" => %w(player.twitch.tv meet.jit.si) })
80
+ if config.content_security_policies_extra["frame-src"].respond_to?(:<<)
81
+ config.content_security_policies_extra["frame-src"] << "player.twitch.tv"
82
+ config.content_security_policies_extra["frame-src"] << "meet.jit.si"
83
+ else
84
+ config.content_security_policies_extra["frame-src"] = %w(player.twitch.tv meet.jit.si)
85
+ end
79
86
  end
80
87
  end
81
88
 
@@ -25,6 +25,9 @@ module Decidim
25
25
  id: meeting.scope.try(:id),
26
26
  name: meeting.scope.try(:name)
27
27
  },
28
+ author: {
29
+ **author_fields
30
+ },
28
31
  participatory_space: {
29
32
  id: meeting.participatory_space.id,
30
33
  url: Decidim::ResourceLocatorPresenter.new(meeting.participatory_space).url
@@ -55,6 +58,40 @@ module Decidim
55
58
  attr_reader :meeting
56
59
  alias resource meeting
57
60
 
61
+ def author_fields
62
+ {
63
+ id: meeting.author.id,
64
+ name: author_name(meeting.author),
65
+ url: author_url(meeting.author)
66
+ }
67
+ end
68
+
69
+ def author_name(author)
70
+ translated_attribute(author.name)
71
+ end
72
+
73
+ def author_url(author)
74
+ if author.respond_to?(:nickname)
75
+ profile_url(author) # is a Decidim::User or Decidim::UserGroup
76
+ else
77
+ root_url # is a Decidim::Organization
78
+ end
79
+ end
80
+
81
+ def profile_url(author)
82
+ return "" if author.respond_to?(:deleted?) && author.deleted?
83
+
84
+ Decidim::Core::Engine.routes.url_helpers.profile_url(author.nickname, host:)
85
+ end
86
+
87
+ def root_url
88
+ Decidim::Core::Engine.routes.url_helpers.root_url(host:)
89
+ end
90
+
91
+ def host
92
+ resource.organization.host
93
+ end
94
+
58
95
  def component
59
96
  meeting.component
60
97
  end
@@ -64,6 +64,12 @@ FactoryBot.define do
64
64
  type_of_meeting { :in_person }
65
65
  end
66
66
 
67
+ trait :hidden do
68
+ after :create do |meeting, evaluator|
69
+ create(:moderation, hidden_at: Time.current, reportable: meeting, skip_injection: evaluator.skip_injection)
70
+ end
71
+ end
72
+
67
73
  trait :online do
68
74
  type_of_meeting { :online }
69
75
  online_meeting_url { "https://decidim.org" }
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-meetings version.
5
5
  module Meetings
6
6
  def self.version
7
- "0.28.4"
7
+ "0.28.6"
8
8
  end
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-meetings
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.28.4
4
+ version: 0.28.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-10-02 00:00:00.000000000 Z
13
+ date: 2025-04-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: decidim-core
@@ -18,28 +18,28 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 0.28.4
21
+ version: 0.28.6
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 0.28.4
28
+ version: 0.28.6
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: decidim-forms
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - '='
34
34
  - !ruby/object:Gem::Version
35
- version: 0.28.4
35
+ version: 0.28.6
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - '='
41
41
  - !ruby/object:Gem::Version
42
- version: 0.28.4
42
+ version: 0.28.6
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: icalendar
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -60,56 +60,56 @@ dependencies:
60
60
  requirements:
61
61
  - - '='
62
62
  - !ruby/object:Gem::Version
63
- version: 0.28.4
63
+ version: 0.28.6
64
64
  type: :development
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - '='
69
69
  - !ruby/object:Gem::Version
70
- version: 0.28.4
70
+ version: 0.28.6
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: decidim-assemblies
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - '='
76
76
  - !ruby/object:Gem::Version
77
- version: 0.28.4
77
+ version: 0.28.6
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - '='
83
83
  - !ruby/object:Gem::Version
84
- version: 0.28.4
84
+ version: 0.28.6
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: decidim-dev
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - '='
90
90
  - !ruby/object:Gem::Version
91
- version: 0.28.4
91
+ version: 0.28.6
92
92
  type: :development
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
96
  - - '='
97
97
  - !ruby/object:Gem::Version
98
- version: 0.28.4
98
+ version: 0.28.6
99
99
  - !ruby/object:Gem::Dependency
100
100
  name: decidim-participatory_processes
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
103
  - - '='
104
104
  - !ruby/object:Gem::Version
105
- version: 0.28.4
105
+ version: 0.28.6
106
106
  type: :development
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - '='
111
111
  - !ruby/object:Gem::Version
112
- version: 0.28.4
112
+ version: 0.28.6
113
113
  description: A meetings component for decidim's participatory spaces.
114
114
  email:
115
115
  - josepjaume@gmail.com
@@ -379,6 +379,9 @@ files:
379
379
  - config/locales/ar.yml
380
380
  - config/locales/bg-BG.yml
381
381
  - config/locales/bg.yml
382
+ - config/locales/bn-BD.yml
383
+ - config/locales/bs-BA.yml
384
+ - config/locales/ca-IT.yml
382
385
  - config/locales/ca.yml
383
386
  - config/locales/cs-CZ.yml
384
387
  - config/locales/cs.yml
@@ -545,7 +548,7 @@ files:
545
548
  - lib/tasks/decidim_meetings.rake
546
549
  homepage: https://decidim.org
547
550
  licenses:
548
- - AGPL-3.0
551
+ - AGPL-3.0-or-later
549
552
  metadata:
550
553
  bug_tracker_uri: https://github.com/decidim/decidim/issues
551
554
  documentation_uri: https://docs.decidim.org/