decidim-meetings 0.5.1 → 0.6.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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/admin/decidim_meetings_manifest.js +1 -0
  3. data/app/assets/images/decidim/meetings/icon.svg +5 -1
  4. data/app/assets/javascripts/decidim/meetings/admin/registrations_form.js.es6 +21 -0
  5. data/app/commands/decidim/meetings/admin/close_meeting.rb +17 -9
  6. data/app/commands/decidim/meetings/admin/create_meeting.rb +13 -1
  7. data/app/commands/decidim/meetings/admin/update_meeting.rb +47 -21
  8. data/app/commands/decidim/meetings/admin/update_registrations.rb +60 -0
  9. data/app/commands/decidim/meetings/join_meeting.rb +73 -0
  10. data/app/commands/decidim/meetings/leave_meeting.rb +39 -0
  11. data/app/controllers/decidim/meetings/admin/registrations_controller.rb +43 -0
  12. data/app/controllers/decidim/meetings/registrations_controller.rb +46 -0
  13. data/app/events/decidim/meetings/close_meeting_event.rb +30 -0
  14. data/app/events/decidim/meetings/meeting_registrations_enabled_event.rb +39 -0
  15. data/app/events/decidim/meetings/meeting_registrations_over_percentage_event.rb +43 -0
  16. data/app/events/decidim/meetings/upcoming_meeting_event.rb +30 -0
  17. data/app/events/decidim/meetings/update_meeting_event.rb +30 -0
  18. data/app/forms/decidim/meetings/admin/meeting_form.rb +1 -1
  19. data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +32 -0
  20. data/app/helpers/decidim/meetings/application_helper.rb +1 -0
  21. data/app/jobs/decidim/meetings/upcoming_meeting_notification_job.rb +33 -0
  22. data/app/mailers/decidim/meetings/registration_mailer.rb +46 -0
  23. data/app/models/decidim/meetings/abilities/current_user_ability.rb +43 -0
  24. data/app/models/decidim/meetings/meeting.rb +42 -0
  25. data/app/models/decidim/meetings/registration.rb +13 -0
  26. data/app/serializers/decidim/meetings/registration_serializer.rb +18 -0
  27. data/app/views/decidim/meetings/admin/meetings/_form.html.erb +3 -3
  28. data/app/views/decidim/meetings/admin/meetings/index.html.erb +1 -0
  29. data/app/views/decidim/meetings/admin/registrations/_form.html.erb +33 -0
  30. data/app/views/decidim/meetings/admin/registrations/edit.html.erb +8 -0
  31. data/app/views/decidim/meetings/meetings/_filters.html.erb +2 -2
  32. data/app/views/decidim/meetings/meetings/_registration_confirm.html.erb +15 -0
  33. data/app/views/decidim/meetings/meetings/show.html.erb +15 -1
  34. data/app/views/decidim/meetings/registration_mailer/confirmation.html.erb +3 -0
  35. data/config/locales/ca.yml +74 -0
  36. data/config/locales/en.yml +72 -4
  37. data/config/locales/es.yml +75 -1
  38. data/config/locales/eu.yml +78 -3
  39. data/config/locales/fi.yml +84 -0
  40. data/config/locales/fr.yml +83 -8
  41. data/config/locales/it.yml +87 -0
  42. data/config/locales/nl.yml +169 -0
  43. data/config/locales/pl.yml +113 -0
  44. data/config/locales/uk.yml +178 -0
  45. data/db/migrate/20170810120836_add_registration_attributes_to_meetings.rb +9 -0
  46. data/db/migrate/20170810131100_create_registrations.rb +14 -0
  47. data/lib/decidim/meetings/admin_engine.rb +9 -0
  48. data/lib/decidim/meetings/engine.rb +8 -0
  49. data/lib/decidim/meetings/feature.rb +39 -9
  50. data/lib/decidim/meetings/test/factories.rb +11 -0
  51. metadata +65 -13
  52. data/config/i18n-tasks.yml +0 -10
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddRegistrationAttributesToMeetings < ActiveRecord::Migration[5.1]
4
+ def change
5
+ add_column :decidim_meetings_meetings, :registrations_enabled, :boolean, null: false, default: false
6
+ add_column :decidim_meetings_meetings, :available_slots, :integer, null: false, default: 0
7
+ add_column :decidim_meetings_meetings, :registration_terms, :jsonb
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CreateRegistrations < ActiveRecord::Migration[5.1]
4
+ def change
5
+ create_table :decidim_meetings_registrations do |t|
6
+ t.references :decidim_user, null: false, index: true
7
+ t.references :decidim_meeting, null: false, index: true
8
+
9
+ t.timestamps
10
+ end
11
+
12
+ add_index :decidim_meetings_registrations, [:decidim_user_id, :decidim_meeting_id], unique: true, name: "decidim_meetings_registrations_user_meeting_unique"
13
+ end
14
+ end
@@ -13,6 +13,11 @@ module Decidim
13
13
  routes do
14
14
  resources :meetings do
15
15
  resources :meeting_closes, only: [:edit, :update]
16
+ resource :registrations, only: [:edit, :update] do
17
+ collection do
18
+ get :export
19
+ end
20
+ end
16
21
  resources :attachments
17
22
  end
18
23
  root to: "meetings#index"
@@ -21,6 +26,10 @@ module Decidim
21
26
  def load_seed
22
27
  nil
23
28
  end
29
+
30
+ initializer "decidim_meetings.assets" do |app|
31
+ app.config.assets.precompile += %w(admin/decidim_meetings_manifest.js)
32
+ end
24
33
  end
25
34
  end
26
35
  end
@@ -3,6 +3,7 @@
3
3
  require "searchlight"
4
4
  require "kaminari"
5
5
  require "jquery-tmpl-rails"
6
+ require "icalendar"
6
7
 
7
8
  module Decidim
8
9
  module Meetings
@@ -14,10 +15,17 @@ module Decidim
14
15
 
15
16
  routes do
16
17
  resources :meetings, only: [:index, :show] do
18
+ resource :registration, only: [:create, :destroy]
17
19
  resource :meeting_widget, only: :show, path: "embed"
18
20
  end
19
21
  root to: "meetings#index"
20
22
  end
23
+
24
+ initializer "decidim_meetings.inject_abilities_to_user" do |_app|
25
+ Decidim.configure do |config|
26
+ config.abilities += ["Decidim::Meetings::Abilities::CurrentUserAbility"]
27
+ end
28
+ end
21
29
  end
22
30
  end
23
31
  end
@@ -23,27 +23,31 @@ Decidim.register_feature(:meetings) do |feature|
23
23
  meetings.count
24
24
  end
25
25
 
26
+ feature.actions = %w(join)
27
+
26
28
  feature.settings(:global) do |settings|
27
29
  settings.attribute :announcement, type: :text, translated: true, editor: true
30
+ settings.attribute :comments_enabled, type: :boolean, default: true
28
31
  end
29
32
 
30
33
  feature.settings(:step) do |settings|
31
34
  settings.attribute :announcement, type: :text, translated: true, editor: true
35
+ settings.attribute :comments_blocked, type: :boolean, default: false
32
36
  end
33
37
 
34
- feature.seeds do |process|
38
+ feature.seeds do |participatory_space|
35
39
  feature = Decidim::Feature.create!(
36
- name: Decidim::Features::Namer.new(process.organization.available_locales, :meetings).i18n_name,
40
+ name: Decidim::Features::Namer.new(participatory_space.organization.available_locales, :meetings).i18n_name,
37
41
  published_at: Time.current,
38
42
  manifest_name: :meetings,
39
- participatory_process: process
43
+ participatory_space: participatory_space
40
44
  )
41
45
 
42
- if process.scope
43
- scopes = process.scope.descendants
44
- global = process.scope
46
+ if participatory_space.scope
47
+ scopes = participatory_space.scope.descendants
48
+ global = participatory_space.scope
45
49
  else
46
- scopes = process.organization.scopes
50
+ scopes = participatory_space.organization.scopes
47
51
  global = nil
48
52
  end
49
53
 
@@ -51,7 +55,7 @@ Decidim.register_feature(:meetings) do |feature|
51
55
  meeting = Decidim::Meetings::Meeting.create!(
52
56
  feature: feature,
53
57
  scope: Faker::Boolean.boolean(0.5) ? global : scopes.sample,
54
- category: process.categories.sample,
58
+ category: participatory_space.categories.sample,
55
59
  title: Decidim::Faker::Localized.sentence(2),
56
60
  description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
57
61
  Decidim::Faker::Localized.paragraph(3)
@@ -62,8 +66,34 @@ Decidim.register_feature(:meetings) do |feature|
62
66
  end_time: 3.weeks.from_now + 4.hours,
63
67
  address: "#{Faker::Address.street_address} #{Faker::Address.zip} #{Faker::Address.city}",
64
68
  latitude: Faker::Address.latitude,
65
- longitude: Faker::Address.longitude
69
+ longitude: Faker::Address.longitude,
70
+ registrations_enabled: [true, false].sample,
71
+ available_slots: (10..50).step(10).to_a.sample,
72
+ registration_terms: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
73
+ Decidim::Faker::Localized.paragraph(3)
74
+ end
66
75
  )
76
+
77
+ 10.times do |n|
78
+ email = "meeting-registered-user-#{meeting.id}-#{n}@example.org"
79
+ name = "#{Faker::Name.name} #{meeting.id} #{n}"
80
+ user = Decidim::User.find_or_initialize_by(email: email)
81
+
82
+ user.update!(
83
+ password: "password1234",
84
+ password_confirmation: "password1234",
85
+ name: name,
86
+ organization: feature.organization,
87
+ tos_agreement: "1",
88
+ confirmed_at: Time.current
89
+ )
90
+
91
+ Decidim::Meetings::Registration.create!(
92
+ meeting: meeting,
93
+ user: user
94
+ )
95
+ end
96
+
67
97
  Decidim::Attachment.create!(
68
98
  title: Decidim::Faker::Localized.sentence(2),
69
99
  description: Decidim::Faker::Localized.sentence(5),
@@ -20,5 +20,16 @@ FactoryGirl.define do
20
20
  attending_organizations { Array.new(3) { Faker::GameOfThrones.house }.join(", ") }
21
21
  closed_at { Time.current }
22
22
  end
23
+
24
+ trait :with_registrations_enabled do
25
+ registrations_enabled { true }
26
+ available_slots { 10 }
27
+ registration_terms { Decidim::Faker::Localized.sentence(3) }
28
+ end
29
+ end
30
+
31
+ factory :registration, class: Decidim::Meetings::Registration do
32
+ meeting
33
+ user
23
34
  end
24
35
  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.5.1
4
+ version: 0.6.0
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: 2017-08-21 00:00:00.000000000 Z
13
+ date: 2017-09-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: decidim-core
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 0.5.1
21
+ version: 0.6.0
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.5.1
28
+ version: 0.6.0
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: rectify
31
31
  requirement: !ruby/object:Gem::Requirement
@@ -110,62 +110,90 @@ dependencies:
110
110
  - - "~>"
111
111
  - !ruby/object:Gem::Version
112
112
  version: 1.1.0
113
+ - !ruby/object:Gem::Dependency
114
+ name: icalendar
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: 2.4.1
120
+ type: :runtime
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: 2.4.1
113
127
  - !ruby/object:Gem::Dependency
114
128
  name: decidim-dev
115
129
  requirement: !ruby/object:Gem::Requirement
116
130
  requirements:
117
131
  - - '='
118
132
  - !ruby/object:Gem::Version
119
- version: 0.5.1
133
+ version: 0.6.0
120
134
  type: :development
121
135
  prerelease: false
122
136
  version_requirements: !ruby/object:Gem::Requirement
123
137
  requirements:
124
138
  - - '='
125
139
  - !ruby/object:Gem::Version
126
- version: 0.5.1
140
+ version: 0.6.0
127
141
  - !ruby/object:Gem::Dependency
128
142
  name: decidim-admin
129
143
  requirement: !ruby/object:Gem::Requirement
130
144
  requirements:
131
145
  - - '='
132
146
  - !ruby/object:Gem::Version
133
- version: 0.5.1
147
+ version: 0.6.0
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - '='
153
+ - !ruby/object:Gem::Version
154
+ version: 0.6.0
155
+ - !ruby/object:Gem::Dependency
156
+ name: decidim-participatory_processes
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - '='
160
+ - !ruby/object:Gem::Version
161
+ version: 0.6.0
134
162
  type: :development
135
163
  prerelease: false
136
164
  version_requirements: !ruby/object:Gem::Requirement
137
165
  requirements:
138
166
  - - '='
139
167
  - !ruby/object:Gem::Version
140
- version: 0.5.1
168
+ version: 0.6.0
141
169
  - !ruby/object:Gem::Dependency
142
170
  name: decidim-proposals
143
171
  requirement: !ruby/object:Gem::Requirement
144
172
  requirements:
145
173
  - - '='
146
174
  - !ruby/object:Gem::Version
147
- version: 0.5.1
175
+ version: 0.6.0
148
176
  type: :development
149
177
  prerelease: false
150
178
  version_requirements: !ruby/object:Gem::Requirement
151
179
  requirements:
152
180
  - - '='
153
181
  - !ruby/object:Gem::Version
154
- version: 0.5.1
182
+ version: 0.6.0
155
183
  - !ruby/object:Gem::Dependency
156
184
  name: decidim-results
157
185
  requirement: !ruby/object:Gem::Requirement
158
186
  requirements:
159
187
  - - '='
160
188
  - !ruby/object:Gem::Version
161
- version: 0.5.1
189
+ version: 0.6.0
162
190
  type: :development
163
191
  prerelease: false
164
192
  version_requirements: !ruby/object:Gem::Requirement
165
193
  requirements:
166
194
  - - '='
167
195
  - !ruby/object:Gem::Version
168
- version: 0.5.1
196
+ version: 0.6.0
169
197
  description: A meetings component for decidim's participatory processes.
170
198
  email:
171
199
  - josepjaume@gmail.com
@@ -177,25 +205,43 @@ extra_rdoc_files: []
177
205
  files:
178
206
  - README.md
179
207
  - Rakefile
208
+ - app/assets/config/admin/decidim_meetings_manifest.js
180
209
  - app/assets/images/decidim/meetings/icon.svg
210
+ - app/assets/javascripts/decidim/meetings/admin/registrations_form.js.es6
181
211
  - app/commands/decidim/meetings/admin/close_meeting.rb
182
212
  - app/commands/decidim/meetings/admin/create_meeting.rb
183
213
  - app/commands/decidim/meetings/admin/update_meeting.rb
214
+ - app/commands/decidim/meetings/admin/update_registrations.rb
215
+ - app/commands/decidim/meetings/join_meeting.rb
216
+ - app/commands/decidim/meetings/leave_meeting.rb
184
217
  - app/controllers/decidim/meetings/admin/application_controller.rb
185
218
  - app/controllers/decidim/meetings/admin/attachments_controller.rb
186
219
  - app/controllers/decidim/meetings/admin/meeting_closes_controller.rb
187
220
  - app/controllers/decidim/meetings/admin/meetings_controller.rb
221
+ - app/controllers/decidim/meetings/admin/registrations_controller.rb
188
222
  - app/controllers/decidim/meetings/application_controller.rb
189
223
  - app/controllers/decidim/meetings/meeting_widgets_controller.rb
190
224
  - app/controllers/decidim/meetings/meetings_controller.rb
225
+ - app/controllers/decidim/meetings/registrations_controller.rb
226
+ - app/events/decidim/meetings/close_meeting_event.rb
227
+ - app/events/decidim/meetings/meeting_registrations_enabled_event.rb
228
+ - app/events/decidim/meetings/meeting_registrations_over_percentage_event.rb
229
+ - app/events/decidim/meetings/upcoming_meeting_event.rb
230
+ - app/events/decidim/meetings/update_meeting_event.rb
191
231
  - app/forms/decidim/meetings/admin/close_meeting_form.rb
192
232
  - app/forms/decidim/meetings/admin/meeting_form.rb
233
+ - app/forms/decidim/meetings/admin/meeting_registrations_form.rb
193
234
  - app/helpers/decidim/meetings/admin/application_helper.rb
194
235
  - app/helpers/decidim/meetings/application_helper.rb
195
236
  - app/helpers/decidim/meetings/map_helper.rb
196
237
  - app/helpers/decidim/meetings/meetings_helper.rb
238
+ - app/jobs/decidim/meetings/upcoming_meeting_notification_job.rb
239
+ - app/mailers/decidim/meetings/registration_mailer.rb
240
+ - app/models/decidim/meetings/abilities/current_user_ability.rb
197
241
  - app/models/decidim/meetings/application_record.rb
198
242
  - app/models/decidim/meetings/meeting.rb
243
+ - app/models/decidim/meetings/registration.rb
244
+ - app/serializers/decidim/meetings/registration_serializer.rb
199
245
  - app/services/decidim/meetings/meeting_search.rb
200
246
  - app/views/decidim/meetings/admin/meeting_closes/_form.html.erb
201
247
  - app/views/decidim/meetings/admin/meeting_closes/edit.html.erb
@@ -203,16 +249,19 @@ files:
203
249
  - app/views/decidim/meetings/admin/meetings/edit.html.erb
204
250
  - app/views/decidim/meetings/admin/meetings/index.html.erb
205
251
  - app/views/decidim/meetings/admin/meetings/new.html.erb
252
+ - app/views/decidim/meetings/admin/registrations/_form.html.erb
253
+ - app/views/decidim/meetings/admin/registrations/edit.html.erb
206
254
  - app/views/decidim/meetings/meeting_widgets/show.html.erb
207
255
  - app/views/decidim/meetings/meetings/_datetime.html.erb
208
256
  - app/views/decidim/meetings/meetings/_filters.html.erb
209
257
  - app/views/decidim/meetings/meetings/_filters_small_view.html.erb
210
258
  - app/views/decidim/meetings/meetings/_linked_meetings.html.erb
211
259
  - app/views/decidim/meetings/meetings/_meetings.html.erb
260
+ - app/views/decidim/meetings/meetings/_registration_confirm.html.erb
212
261
  - app/views/decidim/meetings/meetings/index.html.erb
213
262
  - app/views/decidim/meetings/meetings/index.js.erb
214
263
  - app/views/decidim/meetings/meetings/show.html.erb
215
- - config/i18n-tasks.yml
264
+ - app/views/decidim/meetings/registration_mailer/confirmation.html.erb
216
265
  - config/locales/ca.yml
217
266
  - config/locales/en.yml
218
267
  - config/locales/es.yml
@@ -222,6 +271,7 @@ files:
222
271
  - config/locales/it.yml
223
272
  - config/locales/nl.yml
224
273
  - config/locales/pl.yml
274
+ - config/locales/uk.yml
225
275
  - db/migrate/20161130121354_create_meetings.rb
226
276
  - db/migrate/20170110142105_close_a_meeting.rb
227
277
  - db/migrate/20170123151650_add_latitude_and_longitude_to_meetings.rb
@@ -229,6 +279,8 @@ files:
229
279
  - db/migrate/20170215132546_add_reference_to_meetings.rb
230
280
  - db/migrate/20170410074252_remove_not_null_reference_meetings.rb
231
281
  - db/migrate/20170612101925_migrate_meetings_category.rb
282
+ - db/migrate/20170810120836_add_registration_attributes_to_meetings.rb
283
+ - db/migrate/20170810131100_create_registrations.rb
232
284
  - lib/decidim/meetings.rb
233
285
  - lib/decidim/meetings/admin.rb
234
286
  - lib/decidim/meetings/admin_engine.rb
@@ -1,10 +0,0 @@
1
- base_locale: en
2
- ignore_unused:
3
- - "decidim.features.meetings.name"
4
- - "decidim.features.meetings.settings.*"
5
- - "activemodel.attributes.*"
6
- - "decidim.resource_links.*"
7
- ignore_missing:
8
- - decidim.scopes.global
9
- search:
10
- strict: false