decidim-consultations 0.22.0 → 0.23.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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/app/commands/decidim/consultations/admin/update_consultation.rb +9 -4
  3. data/app/forms/decidim/consultations/admin/consultation_form.rb +5 -6
  4. data/app/forms/decidim/consultations/admin/question_form.rb +5 -6
  5. data/app/models/decidim/consultation.rb +9 -0
  6. data/app/models/decidim/consultations/question.rb +12 -1
  7. data/app/models/decidim/consultations/response.rb +4 -0
  8. data/app/models/decidim/consultations/response_group.rb +4 -0
  9. data/app/presenters/decidim/consultations/question_stats_presenter.rb +1 -1
  10. data/app/views/decidim/consultations/questions/_vote_modal_confirm.html.erb +1 -1
  11. data/app/views/decidim/consultations/questions/show.html.erb +1 -1
  12. data/app/views/layouts/decidim/consultation.html.erb +1 -0
  13. data/config/locales/am-ET.yml +1 -0
  14. data/config/locales/bg.yml +1 -0
  15. data/config/locales/cs.yml +2 -2
  16. data/config/locales/da.yml +1 -0
  17. data/config/locales/eo.yml +1 -0
  18. data/config/locales/et.yml +1 -0
  19. data/config/locales/fr.yml +2 -2
  20. data/config/locales/hr.yml +1 -0
  21. data/config/locales/is.yml +185 -0
  22. data/config/locales/ja-JP.yml +39 -39
  23. data/config/locales/ja.yml +367 -0
  24. data/config/locales/ko-KR.yml +1 -0
  25. data/config/locales/ko.yml +1 -0
  26. data/config/locales/lt.yml +1 -0
  27. data/config/locales/{lv-LV.yml → lv.yml} +0 -0
  28. data/config/locales/mt.yml +1 -0
  29. data/config/locales/no.yml +2 -0
  30. data/config/locales/om-ET.yml +1 -0
  31. data/config/locales/pl.yml +10 -10
  32. data/config/locales/sl.yml +4 -0
  33. data/config/locales/so-SO.yml +1 -0
  34. data/config/locales/ti-ER.yml +1 -0
  35. data/config/locales/vi-VN.yml +1 -0
  36. data/config/locales/vi.yml +1 -0
  37. data/config/locales/zh-CN.yml +367 -0
  38. data/config/locales/zh-TW.yml +1 -0
  39. data/db/migrate/20200827154143_add_commentable_counter_cache_to_consultations.rb +9 -0
  40. data/lib/decidim/consultations/admin_engine.rb +1 -0
  41. data/lib/decidim/consultations/participatory_space.rb +17 -17
  42. data/lib/decidim/consultations/test/factories.rb +1 -0
  43. data/lib/decidim/consultations/version.rb +1 -1
  44. metadata +33 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 88bf024aaab20c665fcead026483e730e44d01f7a5d46b715c2607334e77820d
4
- data.tar.gz: 8dcb157b10148f0d5db8a54c4b2b45f1d1e9efc9dc43e4a8f73b6d7da148d6c1
3
+ metadata.gz: ac6cbb884a436f3a7dae1afc0ecaf4ad669d8017d7e828ff906055d9fe569eb7
4
+ data.tar.gz: e2dd3b3cd944c643306ae53cd65e9bddc504e7165203c03c2db565c7b78635cc
5
5
  SHA512:
6
- metadata.gz: 8e83652c0745e4022dca4e961035ddec03b2594bb3b0d6cd387fb62e5eeae097c654bed67741737ee0eca513858a5646fa27b4871a2244e3fecabfa470a11264
7
- data.tar.gz: c816dc01c88b3094f4af1f42996aa896749c389eca66f4299a3bff2ca39b32fdd3de528d58a9f72235259c5008b6acf0f94ed58fa392232ccaf8880df57964ed
6
+ metadata.gz: 62a07bd3bf9559e042f343ac8a8ba5ca851d37eb78844f2ef69b9c832fede0ead52773b083eacbe121ee229634c177c7cf29164a2289a6fae2e3f51561df64e7
7
+ data.tar.gz: 0121a8c152378ae724b8ca813717f7f83db1f061e364fd45ae3b58a6f677cb89ba88da2dbe7fe467459cb306f7d05316524dcab412ddb1163b21a787b9b22c40
@@ -50,15 +50,20 @@ module Decidim
50
50
  subtitle: form.subtitle,
51
51
  description: form.description,
52
52
  slug: form.slug,
53
- banner_image: form.banner_image,
54
- remove_banner_image: form.remove_banner_image,
55
53
  highlighted_scope: form.highlighted_scope,
56
54
  introductory_video_url: form.introductory_video_url,
57
55
  start_voting_date: form.start_voting_date,
58
- end_voting_date: form.end_voting_date,
56
+ end_voting_date: form.end_voting_date
57
+ }.merge(uploader_attributes)
58
+ end
59
+
60
+ def uploader_attributes
61
+ {
62
+ banner_image: form.banner_image,
63
+ remove_banner_image: form.remove_banner_image,
59
64
  introductory_image: form.introductory_image,
60
65
  remove_introductory_image: form.remove_introductory_image
61
- }
66
+ }.delete_if { |_k, val| val.is_a?(Decidim::ApplicationUploader) }
62
67
  end
63
68
  end
64
69
  end
@@ -6,6 +6,7 @@ module Decidim
6
6
  # A form object used to create consultations from the admin dashboard.
7
7
  class ConsultationForm < Form
8
8
  include TranslatableAttributes
9
+ include Decidim::HasUploadValidations
9
10
 
10
11
  mimic :consultation
11
12
 
@@ -29,12 +30,10 @@ module Decidim
29
30
  validates :end_voting_date, presence: true, date: { after_or_equal_to: :start_voting_date }
30
31
  validate :slug_uniqueness
31
32
 
32
- validates :banner_image,
33
- file_size: { less_than_or_equal_to: ->(_record) { Decidim.maximum_attachment_size } },
34
- file_content_type: { allow: ["image/jpeg", "image/png"] }
35
- validates :introductory_image,
36
- file_size: { less_than_or_equal_to: ->(_record) { Decidim.maximum_attachment_size } },
37
- file_content_type: { allow: ["image/jpeg", "image/png"] }
33
+ validates :banner_image, passthru: { to: Decidim::Consultation }
34
+ validates :introductory_image, passthru: { to: Decidim::Consultation }
35
+
36
+ alias organization current_organization
38
37
 
39
38
  def highlighted_scope
40
39
  @highlighted_scope ||= current_organization.scopes.find_by(id: decidim_highlighted_scope_id)
@@ -6,6 +6,7 @@ module Decidim
6
6
  # A form object used to create questions for a consultation from the admin dashboard.
7
7
  class QuestionForm < Form
8
8
  include TranslatableAttributes
9
+ include Decidim::HasUploadValidations
9
10
 
10
11
  mimic :question
11
12
 
@@ -32,17 +33,15 @@ module Decidim
32
33
  validates :slug, presence: true, format: { with: Decidim::Consultations::Question.slug_format }
33
34
  validates :title, :promoter_group, :participatory_scope, :subtitle, :what_is_decided, translatable_presence: true
34
35
  validates :decidim_scope_id, presence: true
35
- validates :hero_image,
36
- file_size: { less_than_or_equal_to: ->(_record) { Decidim.maximum_attachment_size } },
37
- file_content_type: { allow: ["image/jpeg", "image/png"] }
38
- validates :banner_image,
39
- file_size: { less_than_or_equal_to: ->(_record) { Decidim.maximum_attachment_size } },
40
- file_content_type: { allow: ["image/jpeg", "image/png"] }
36
+ validates :hero_image, passthru: { to: Decidim::Consultations::Question }
37
+ validates :banner_image, passthru: { to: Decidim::Consultations::Question }
41
38
  validate :slug_uniqueness
42
39
  validates :origin_scope, :origin_title, translatable_presence: true, if: :has_origin_data?
43
40
  validates :i_frame_url, presence: true, if: :external_voting
44
41
  validates :order, numericality: { only_integer: true, allow_nil: true, allow_blank: true }
45
42
 
43
+ alias organization current_organization
44
+
46
45
  private
47
46
 
48
47
  def slug_uniqueness
@@ -12,6 +12,10 @@ module Decidim
12
12
  include Decidim::ParticipatorySpaceResourceable
13
13
  include Decidim::Randomable
14
14
  include Decidim::Searchable
15
+ include Decidim::HasUploadValidations
16
+ include Decidim::TranslatableResource
17
+
18
+ translatable_fields :title, :subtitle, :description
15
19
 
16
20
  belongs_to :organization,
17
21
  foreign_key: "decidim_organization_id",
@@ -27,10 +31,15 @@ module Decidim
27
31
  inverse_of: :consultation,
28
32
  dependent: :destroy
29
33
 
34
+ alias component_ids question_ids
35
+
30
36
  validates :slug, uniqueness: { scope: :organization }
31
37
  validates :slug, presence: true, format: { with: Decidim::Consultation.slug_format }
32
38
 
39
+ validates_upload :banner_image
33
40
  mount_uploader :banner_image, Decidim::BannerImageUploader
41
+
42
+ validates_upload :introductory_image
34
43
  mount_uploader :introductory_image, Decidim::BannerImageUploader
35
44
 
36
45
  scope :upcoming, -> { published.where("start_voting_date > ?", Time.now.utc) }
@@ -7,7 +7,7 @@ module Decidim
7
7
  include Decidim::HasResourcePermission
8
8
  include Decidim::Participable
9
9
  include Decidim::Publicable
10
- include Decidim::Scopable
10
+ include Decidim::ScopableParticipatorySpace
11
11
  include Decidim::Comments::Commentable
12
12
  include Decidim::Followable
13
13
  include Decidim::HasAttachments
@@ -16,6 +16,10 @@ module Decidim
16
16
  include Decidim::Loggable
17
17
  include Decidim::ParticipatorySpaceResourceable
18
18
  include Decidim::Randomable
19
+ include Decidim::HasUploadValidations
20
+ include Decidim::TranslatableResource
21
+
22
+ translatable_fields :title, :subtitle, :what_is_decided, :promoter_group, :participatory_scope, :question_context, :origin_scope, :origin_title, :instructions
19
23
 
20
24
  belongs_to :consultation,
21
25
  foreign_key: "decidim_consultation_id",
@@ -51,7 +55,10 @@ module Decidim
51
55
  dependent: :destroy,
52
56
  as: :participatory_space
53
57
 
58
+ validates_upload :hero_image
54
59
  mount_uploader :hero_image, Decidim::HeroImageUploader
60
+
61
+ validates_upload :banner_image
55
62
  mount_uploader :banner_image, Decidim::BannerImageUploader
56
63
 
57
64
  default_scope { order(order: :asc) }
@@ -193,6 +200,10 @@ module Decidim
193
200
  def allow_resource_permissions?
194
201
  true
195
202
  end
203
+
204
+ def attachment_context
205
+ :admin
206
+ end
196
207
  end
197
208
  end
198
209
  end
@@ -3,6 +3,10 @@
3
3
  module Decidim
4
4
  module Consultations
5
5
  class Response < ApplicationRecord
6
+ include Decidim::TranslatableResource
7
+
8
+ translatable_fields :title
9
+
6
10
  belongs_to :question,
7
11
  foreign_key: "decidim_consultations_questions_id",
8
12
  class_name: "Decidim::Consultations::Question",
@@ -3,6 +3,10 @@
3
3
  module Decidim
4
4
  module Consultations
5
5
  class ResponseGroup < ApplicationRecord
6
+ include Decidim::TranslatableResource
7
+
8
+ translatable_fields :title
9
+
6
10
  belongs_to :question,
7
11
  foreign_key: "decidim_consultations_questions_id",
8
12
  class_name: "Decidim::Consultations::Question",
@@ -15,7 +15,7 @@ module Decidim
15
15
  "question/#{question.id}/comments_count",
16
16
  expires_in: Decidim::Consultations.stats_cache_expiration_time
17
17
  ) do
18
- Decidim::Comments::Comment.where(root_commentable: question).count
18
+ question.comments_count
19
19
  end
20
20
  end
21
21
 
@@ -3,7 +3,7 @@
3
3
  <h3 class="reveal__title">
4
4
  <%= t "questions.vote_modal_confirm.title", scope: "decidim" %>
5
5
  </h3>
6
- <button class="close-button" data-close aria-label="<%= t("questions.vote_modal_confirm.close_modal", scope: "decidim") %>%" type="button">
6
+ <button class="close-button" data-close aria-label="<%= t("questions.vote_modal_confirm.close_modal", scope: "decidim") %>" type="button">
7
7
  <span aria-hidden="true">&times;</span>
8
8
  </button>
9
9
  </div>
@@ -36,7 +36,7 @@
36
36
  <%= content_for :question_header_details do %>
37
37
  <div id="question-header-details" class="row consultations-home-intro">
38
38
  <div class="columns medium-5">
39
- <%= image_tag current_question.hero_image&.url, alt: t("question.hero_image", scope: "activemodel.attributes") %>
39
+ <%= image_tag current_question.hero_image&.url, alt: t("question.hero_image", scope: "activemodel.attributes") if current_question.hero_image&.url %>
40
40
  </div>
41
41
 
42
42
  <div class="columns medium-5">
@@ -1,6 +1,7 @@
1
1
  <%= render "layouts/decidim/application" do %>
2
2
  <div class="wrapper">
3
3
  <%= render partial: "layouts/decidim/consultation_header" %>
4
+ <%= cell "decidim/translation_bar", current_organization %>
4
5
  <%= yield %>
5
6
  </div>
6
7
  <% if content_for? :expanded %>
@@ -0,0 +1 @@
1
+ am:
@@ -0,0 +1 @@
1
+ bg:
@@ -3,7 +3,7 @@ cs:
3
3
  attributes:
4
4
  consultation:
5
5
  banner_image: Obrázek banneru
6
- decidim_highlighted_scope_id: Zvýrazněný rozsah
6
+ decidim_highlighted_scope_id: Zvýrazněná oblast působnosti
7
7
  description: Popis
8
8
  end_voting_date: Hlasování končí
9
9
  introductory_image: Úvodní obrázek
@@ -22,7 +22,7 @@ cs:
22
22
  instructions: Další pokyny pro hlasování
23
23
  max_votes: Maximální počet hlasů
24
24
  min_votes: Minimální počet hlasů
25
- origin_scope: Rozsah
25
+ origin_scope: Oblast působnosti
26
26
  origin_title: Původ
27
27
  origin_url: Původní URL
28
28
  participatory_scope: Rozsah účastníků
@@ -0,0 +1 @@
1
+ da:
@@ -0,0 +1 @@
1
+ eo:
@@ -0,0 +1 @@
1
+ et:
@@ -348,12 +348,12 @@ fr:
348
348
  verification_required: Vérifier votre compte pour voter
349
349
  vote: Voter
350
350
  vote_modal:
351
- close_modal: Fermer la fenêtre modale
351
+ close_modal: Fermer la fenêtre de dialogue
352
352
  contextual_help: Veuillez sélectionner une option.
353
353
  title: 'Votation : soutien aux questions'
354
354
  vote_modal_confirm:
355
355
  change: Modifier
356
- close_modal: Fermer la fenêtre modale
356
+ close_modal: Fermer la fenêtre de dialogue
357
357
  confirm: Confirmer
358
358
  contextual_help: Veuillez confirmer l'option sélectionnée.
359
359
  title: 'Consultation : confirmer le soutien'
@@ -0,0 +1 @@
1
+ hr:
@@ -0,0 +1,185 @@
1
+ is:
2
+ activemodel:
3
+ attributes:
4
+ consultation:
5
+ banner_image: Banner image
6
+ decidim_highlighted_scope_id: Hápunktur sviðsins
7
+ description: Lýsing
8
+ introductory_image: Inngangs mynd
9
+ introductory_video_url: Inngangur vídeó URL
10
+ slug: URL slug
11
+ subtitle: Texti
12
+ title: Titill
13
+ question:
14
+ banner_image: Banner image
15
+ decidim_scope_id: Borgarsvæði
16
+ hashtag: Kassamerki
17
+ hero_image: Heimsmynd
18
+ i_frame_url: Vefslóð fyrir utanaðkomandi atkvæðagreiðslur
19
+ origin_scope: Umfang
20
+ origin_title: Uppruni
21
+ origin_url: Uppruni vefslóð
22
+ participatory_scope: Þátttökuskilyrði
23
+ promoter_group: Framkvæmdarhópur
24
+ question_context: Samhengi
25
+ reference: Tilvísun
26
+ scope: Borgarsvæði
27
+ slug: URL slug
28
+ subtitle: Texti
29
+ vote: Ytri atkvæðakerfi
30
+ what_is_decided: Hvað er ákveðið
31
+ errors:
32
+ vote:
33
+ decidim_consultations_response_id:
34
+ not_found: Svar fannst ekki.
35
+ decidim:
36
+ admin:
37
+ actions:
38
+ publish_results: Birta niðurstöður
39
+ unpublish_results: Afritaðu niðurstöðurnar
40
+ consultations:
41
+ create:
42
+ success: Samráð hefur verið búið til.
43
+ edit:
44
+ update: Uppfæra
45
+ form:
46
+ slug_help: 'Vefslóðir eru notaðir til að búa til slóðir sem benda til þessa samráðs. Aðeins viðurkennir stafir, tölur og bindur og verður að byrja með stafi. Dæmi: %{url}'
47
+ title: Almennar upplýsingar
48
+ index:
49
+ not_published: Ekki birt
50
+ published: Published
51
+ new:
52
+ create: Búa til
53
+ title: Nýtt samráð
54
+ update:
55
+ success: Samráð uppfærður með góðum árangri.
56
+ menu:
57
+ consultations: Samráð
58
+ consultations_submenu:
59
+ info: Upplýsingar
60
+ questions: Spurningar
61
+ questions_submenu:
62
+ components: Hluti
63
+ consultation: Samráð
64
+ info: Upplýsingar
65
+ responses: Svör
66
+ models:
67
+ consultation:
68
+ fields:
69
+ created_at: Búið til á
70
+ published: Published
71
+ title: Titill
72
+ name:
73
+ one: Samráð
74
+ other: Samráð
75
+ question:
76
+ fields:
77
+ created_at: Búið til á
78
+ published: Published
79
+ title: Titill
80
+ name:
81
+ one: Spurning
82
+ other: Spurningar
83
+ response:
84
+ fields:
85
+ created_at: Búið til á
86
+ title: Titill
87
+ name:
88
+ one: Svar
89
+ other: Svör
90
+ questions:
91
+ create:
92
+ success: Spurning búin til.
93
+ edit:
94
+ update: Uppfæra
95
+ form:
96
+ title: Almennar upplýsingar
97
+ index:
98
+ not_published: Ekki birt
99
+ published: Published
100
+ new:
101
+ create: Búa til
102
+ title: Ný spurning
103
+ responses:
104
+ create:
105
+ success: Svar búin til.
106
+ edit:
107
+ update: Uppfæra
108
+ form:
109
+ title: Almennar upplýsingar
110
+ new:
111
+ create: Búa til
112
+ title: Nýtt svar
113
+ titles:
114
+ consultations: Samráð
115
+ questions: Spurningar
116
+ responses: Svör
117
+ consultations:
118
+ consultation:
119
+ view_results: Skoða niðurstöður
120
+ consultation_card:
121
+ view_results: Skoða niðurstöður
122
+ consultations:
123
+ orders:
124
+ label: 'Raða samráð með:'
125
+ random: Handahófi
126
+ recent: Síðast
127
+ count:
128
+ title:
129
+ one: "%{count} samráð"
130
+ other: "%{count} samráð"
131
+ filters:
132
+ active: Virkur
133
+ all: Allt
134
+ finished: Lokið
135
+ search: Leita
136
+ upcoming: Næstu
137
+ filters_small_view:
138
+ close_modal: Lokaðu glugga
139
+ filter: Sía
140
+ filter_by: Sía eftir
141
+ unfold: Fella út
142
+ index:
143
+ title: Samráð
144
+ pages:
145
+ home:
146
+ highlighted_consultations:
147
+ active_consultations: Virkt samráð
148
+ question:
149
+ take_part: Taka þátt
150
+ view_results: Skoða niðurstöður
151
+ votes_out_of:
152
+ one: kjósa út úr
153
+ other: atkvæði úr
154
+ menu:
155
+ consultations: Samráð
156
+ questions:
157
+ results:
158
+ title: Niðurstöður
159
+ show:
160
+ read_more: Lestu meira
161
+ statistics:
162
+ assistants_count_title: Aðstoðarmenn
163
+ comments_count_title: Athugasemdir
164
+ meetings_count_title: Fundir
165
+ technical_info:
166
+ technical_data: Tæknilegar upplýsingar
167
+ vote_button:
168
+ already_voted: Already kusu
169
+ starting_from: Byrjar frá %{date}
170
+ vote: Kjósa
171
+ vote_modal_confirm:
172
+ change: Breyta
173
+ confirm: Staðfesta
174
+ contextual_help: Vinsamlegast staðfestu valinn valkost.
175
+ layouts:
176
+ decidim:
177
+ admin:
178
+ question:
179
+ attachments: Viðhengi
180
+ categories: Flokkar
181
+ question_components:
182
+ question_menu_item: Spurningin
183
+ unfold: Fella út
184
+ question_header:
185
+ back_to_consultation: Sjá öll samráð