decidim-assemblies 0.16.0 → 0.16.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/app/commands/decidim/assemblies/admin/update_assembly.rb +11 -0
  3. data/app/controllers/decidim/assemblies/assemblies_controller.rb +5 -1
  4. data/app/helpers/decidim/assemblies/filter_assemblies_helper.rb +8 -4
  5. data/app/queries/decidim/assemblies/filtered_assemblies.rb +2 -8
  6. data/app/views/decidim/assemblies/_filter_by_type.html.erb +4 -3
  7. data/app/views/decidim/assemblies/assemblies/_parent_assemblies.html.erb +14 -0
  8. data/app/views/decidim/assemblies/assemblies/index.html.erb +1 -14
  9. data/app/views/decidim/assemblies/assemblies/index.js.erb +3 -1
  10. data/app/views/decidim/assemblies/assemblies/show.html.erb +1 -1
  11. data/config/locales/ar-SA.yml +333 -0
  12. data/config/locales/ca.yml +3 -2
  13. data/config/locales/cs-CZ.yml +381 -0
  14. data/config/locales/de.yml +2 -1
  15. data/config/locales/en.yml +2 -1
  16. data/config/locales/es-MX.yml +373 -0
  17. data/config/locales/es-PY.yml +3 -2
  18. data/config/locales/es.yml +5 -4
  19. data/config/locales/eu.yml +1 -0
  20. data/config/locales/fi-pl.yml +1 -0
  21. data/config/locales/fi.yml +15 -14
  22. data/config/locales/fr.yml +1 -0
  23. data/config/locales/gl.yml +1 -0
  24. data/config/locales/hu.yml +16 -15
  25. data/config/locales/id-ID.yml +4 -0
  26. data/config/locales/it.yml +2 -1
  27. data/config/locales/nl.yml +2 -1
  28. data/config/locales/pl.yml +1 -0
  29. data/config/locales/pt-BR.yml +1 -0
  30. data/config/locales/pt.yml +1 -0
  31. data/config/locales/ru.yml +2 -0
  32. data/config/locales/sv.yml +1 -0
  33. data/config/locales/tr-TR.yml +5 -0
  34. data/config/locales/uk.yml +2 -0
  35. data/db/migrate/20190215093700_reset_negative_children_count_counters.rb +8 -0
  36. data/lib/decidim/assemblies/version.rb +1 -1
  37. metadata +13 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 93623b3d750202db5ba682221675d92c5abe68884ad81f3838bb695ae6b1bcf1
4
- data.tar.gz: 22bd1c3b11d93e20a77aded79e1b5258e07af3f301d37d7f2038a8c685318eab
3
+ metadata.gz: e96d90146d0241f01788ff0012a2dcef6f1a66e676ff6fbae92fa24e1073bff4
4
+ data.tar.gz: 02f2e71dbfefbc56d4aeca325c3e35565b1203dc7ccd42e80bd7c87fbc4c405f
5
5
  SHA512:
6
- metadata.gz: da27795b25811e8c8d0e45e69f28071ca169761a08953814908f670bcd41e297b2bc8af431904f9f6a6b504441468589103a2b0b83d7ba6371b969b6a0a4a5f7
7
- data.tar.gz: 64d33448389d1dcc36026959a49b6056b2c19e3581d3dd0316f578eba89d691820afdcfb76b64e13a5eb1c02a738a00fee417e2a3a4fef12d41e4260c40f6b0b
6
+ metadata.gz: 518929a6bbcd32201fe0e2e84ba90547d8d030a737d12ba99b2153b628f37e561414e13966dca6985b1ddd401b26c13dadbd60a913d625a528c0a83b6fefe952
7
+ data.tar.gz: d57befcd5fbbeebb8b74af0380b4c221becf7ae9bbf53ec5203ca73ce0ec4aa854f339b8624c505a75150dbbe67f6c65186553237ef65c0f82ce655e3d930260
@@ -13,6 +13,7 @@ module Decidim
13
13
  def initialize(assembly, form)
14
14
  @assembly = assembly
15
15
  @form = form
16
+ @parent = Assembly.find_by(id: @assembly.parent)
16
17
  end
17
18
 
18
19
  # Executes the command. Broadcasts these events:
@@ -42,6 +43,7 @@ module Decidim
42
43
  def update_assembly
43
44
  @assembly.assign_attributes(attributes)
44
45
  save_assembly if @assembly.valid?
46
+ update_children_count
45
47
  end
46
48
 
47
49
  def save_assembly
@@ -107,6 +109,15 @@ module Decidim
107
109
  def link_participatory_processes(assembly)
108
110
  assembly.link_participatory_spaces_resources(participatory_processes(assembly), "included_participatory_processes")
109
111
  end
112
+
113
+ # Resets the children counter cache to its correct value using an SQL count query.
114
+ # Fixes Rails decrementing twice error when updating the parent to nil.
115
+ #
116
+ # Returns nothing.
117
+ def update_children_count
118
+ return unless @parent
119
+ Assembly.reset_counters(@parent.id, :children_count)
120
+ end
110
121
  end
111
122
  end
112
123
  end
@@ -71,7 +71,7 @@ module Decidim
71
71
  end
72
72
 
73
73
  def parent_assemblies
74
- @parent_assemblies ||= assemblies | ParentAssemblies.new | FilteredAssemblies.new(params[:filter])
74
+ @parent_assemblies ||= assemblies | ParentAssemblies.new | FilteredAssemblies.new(current_filter)
75
75
  end
76
76
 
77
77
  alias collection parent_assemblies
@@ -87,6 +87,10 @@ module Decidim
87
87
  def assembly_participatory_processes
88
88
  @assembly_participatory_processes ||= @current_participatory_space.linked_participatory_space_resources(:participatory_processes, "included_participatory_processes")
89
89
  end
90
+
91
+ def current_filter
92
+ params[:filter] || "all"
93
+ end
90
94
  end
91
95
  end
92
96
  end
@@ -12,12 +12,16 @@ module Decidim
12
12
  link_to t(filter, scope: "decidim.assemblies.filter"), url_for(params.to_unsafe_h.merge(page: nil, filter: filter)), data: { filter: filter }, remote: true
13
13
  end
14
14
 
15
- def label_text
16
- t("label", scope: "decidim.assemblies.filter")
15
+ def help_text
16
+ t("help", scope: "decidim.assemblies.filter")
17
17
  end
18
18
 
19
- def placeholder_text
20
- t("placeholder", scope: "decidim.assemblies.filter")
19
+ def filter
20
+ params[:filter] || "all"
21
+ end
22
+
23
+ def current_filter_text
24
+ t(filter, scope: "decidim.assemblies.filter")
21
25
  end
22
26
  end
23
27
  end
@@ -8,20 +8,14 @@ module Decidim
8
8
  @filter = filter
9
9
  end
10
10
 
11
- def filter
12
- return "all" if @filter.nil?
13
-
14
- @filter
15
- end
16
-
17
11
  def assemblies
18
12
  Decidim::Assembly
19
13
  end
20
14
 
21
15
  def query
22
- return assemblies.all if filter == "all"
16
+ return assemblies.all if @filter == "all"
23
17
 
24
- assemblies.where(assembly_type: filter)
18
+ assemblies.where(assembly_type: @filter)
25
19
  end
26
20
  end
27
21
  end
@@ -1,7 +1,7 @@
1
- <div class="inline-filters">
1
+ <div id="assemblies-filter" class="inline-filters">
2
2
  <label>
3
- <span><%= label_text %></span>
4
- <button data-toggle="inline-filter-sort"><%= placeholder_text %></button>
3
+ <span><%= help_text %></span>
4
+ <button id="button-text" data-toggle="inline-filter-sort"><%= current_filter_text %></button>
5
5
  <div id="inline-filter-sort" class="dropdown-pane" data-position="bottom" data-alignment="right" data-dropdown data-auto-focus="true">
6
6
  <ul class="list-reset">
7
7
  <% available_filters.each do |filter| %>
@@ -10,4 +10,5 @@
10
10
  </ul>
11
11
  </div>
12
12
  </label>
13
+ <script> $(document).foundation(); </script>
13
14
  </div>
@@ -0,0 +1,14 @@
1
+ <section id="parent-assemblies" class="section row collapse">
2
+ <div class="row column">
3
+ <div class="flex--sbe">
4
+ <h2 id="assemblies-count" class="section-heading collapse">
5
+ <%= render partial: "count" %>
6
+ </h2>
7
+ <%= render partial: "decidim/assemblies/filter_by_type" %>
8
+ </div>
9
+ <hr class="reset mt-s mb-s" />
10
+ </div>
11
+ <div class="row small-up-1 medium-up-2 large-up-3 card-grid">
12
+ <%= render(collection) %>
13
+ </div>
14
+ </section>
@@ -16,20 +16,7 @@ edit_link(
16
16
  </section>
17
17
  <% end %>
18
18
 
19
- <section id="assemblies-grid" class="section row collapse">
20
- <div class="row column">
21
- <div class="flex--sbe">
22
- <h2 id="assemblies-count" class="section-heading collapse">
23
- <%= render partial: "count" %>
24
- </h2>
25
- <%= render partial: "decidim/assemblies/filter_by_type" %>
26
- </div>
27
- <hr class="reset mt-s mb-s" />
28
- </div>
29
- <div class="row small-up-1 medium-up-2 large-up-3 card-grid">
30
- <%= render(collection) %>
31
- </div>
32
- </section>
19
+ <%= render partial: "parent_assemblies" %>
33
20
 
34
21
  <section id="assemblies-chart" class="row column section">
35
22
  <div class="row column">
@@ -1,5 +1,7 @@
1
- var $grid = $('#assemblies-grid');
1
+ var $grid = $('#parent-assemblies');
2
2
  var $assembliesCount = $('#assemblies-count');
3
+ var $assembliesFilter = $('#assemblies-filter');
3
4
 
4
5
  $grid.find('.card-grid').html('<%= j(render(collection)).strip.html_safe %>');
5
6
  $assembliesCount.html('<%= j(render partial: "count").strip.html_safe %>');
7
+ $assembliesFilter.html('<%= j(render partial: "decidim/assemblies/filter_by_type") %>');
@@ -80,7 +80,7 @@ edit_link(
80
80
  <%= render_hook(:current_participatory_space_meetings) %>
81
81
 
82
82
  <%= attachments_for current_participatory_space %>
83
- <% if current_participatory_space.children_count > 0 %>
83
+ <% if current_participatory_space.children.count.positive? %>
84
84
  <section id="assemblies-grid" class="section row collapse">
85
85
  <h4 class="section-heading"><%= t("assemblies.show.children", scope: "decidim") %></h4>
86
86
  <div class="row small-up-1 medium-up-2 large-up-2 card-grid">
@@ -0,0 +1,333 @@
1
+ ar:
2
+ activemodel:
3
+ attributes:
4
+ assembly:
5
+ area_id: منطقة
6
+ assembly_type: نوع التجمع
7
+ assembly_type_other: نوع التجمع الآخر
8
+ banner_image: صورة بانر
9
+ closing_date: الموعد النهائي
10
+ closing_date_reason: إغلاق تاريخ السبب
11
+ composition: تكوين
12
+ copy_categories: نسخ الفئات
13
+ copy_components: نسخ المكونات
14
+ copy_features: نسخ الميزات
15
+ created_by: صنع من قبل
16
+ created_by_other: التي أنشأتها الآخر
17
+ creation_date: تاريخ الإنشاء
18
+ decidim_area_id: منطقة
19
+ decidim_scope_id: نطاق
20
+ description: وصف
21
+ developer_group: مجموعة المروجين
22
+ domain: نطاق
23
+ duration: المدة الزمنية
24
+ facebook: فيس بوك
25
+ github: جيثب
26
+ hashtag: رابطة هاشتاق
27
+ hero_image: الصورة الرئيسية
28
+ included_at: المدرجة في
29
+ instagram: إينستاجرام
30
+ internal_organisation: تنظيم داخلي
31
+ is_transparent: شفافة
32
+ local_area: منطقة التنظيم
33
+ meta_scope: نطاق البيانات الوصفية
34
+ parent_id: التجمع الرئيسي
35
+ participatory_scope: ما الذي تقرر
36
+ participatory_structure: كيف تقرر ذلك
37
+ private_space: مساحة خاصة
38
+ promoted: تمت ترقيته
39
+ published_at: نشرت في
40
+ purpose_of_action: الغرض من العمل
41
+ scope_id: نطاق
42
+ scopes_enabled: تم تمكين النطاقات
43
+ short_description: وصف قصير
44
+ show_statistics: عرض إحصائيات
45
+ slug: سبيكة URL
46
+ special_features: مميزات خاصة
47
+ subtitle: عنوان فرعي
48
+ target: من يشارك
49
+ title: عنوان
50
+ twitter: تويتر
51
+ youtube: يوتيوب
52
+ assembly_member:
53
+ birthday: عيد الميلاد
54
+ birthplace: مسقط الرأس
55
+ ceased_date: تاريخ التوقف
56
+ designation_date: تاريخ التعيين
57
+ designation_mode: وضع التعيين
58
+ full_name: الاسم الكامل
59
+ gender: جنس
60
+ position: موضع
61
+ assembly_user_role:
62
+ email: البريد الإلكتروني
63
+ name: اسم
64
+ role: وظيفة
65
+ activerecord:
66
+ models:
67
+ decidim/assembly:
68
+ zero: جمعيات
69
+ one: المجسم
70
+ two: جمعيات
71
+ few: جمعيات
72
+ many: جمعيات
73
+ other: جمعيات
74
+ decidim/assembly_member:
75
+ zero: أعضاء الجمعية
76
+ one: عضو الجمعية
77
+ two: أعضاء الجمعية
78
+ few: أعضاء الجمعية
79
+ many: أعضاء الجمعية
80
+ other: أعضاء الجمعية
81
+ decidim/assembly_user_role:
82
+ zero: أدوار المستخدم التجميع
83
+ one: دور مستخدم التجميع
84
+ two: أدوار المستخدم التجميع
85
+ few: أدوار المستخدم التجميع
86
+ many: أدوار المستخدم التجميع
87
+ other: أدوار المستخدم التجميع
88
+ decidim:
89
+ admin:
90
+ actions:
91
+ new_assembly: التجمع الجديد
92
+ assemblies:
93
+ create:
94
+ success: تم إنشاء التجميع بنجاح.
95
+ edit:
96
+ update: تحديث
97
+ form:
98
+ title: معلومات عامة
99
+ index:
100
+ not_published: غير منشور
101
+ private: نشر
102
+ public: عامة
103
+ published: نشرت
104
+ new:
105
+ create: خلق
106
+ title: التجمع الجديد
107
+ assembly_copies:
108
+ new:
109
+ copy: نسخ
110
+ select: حدد البيانات التي ترغب في تكرارها
111
+ title: تجميع مكرر
112
+ assembly_members:
113
+ edit:
114
+ title: تحديث عضو التجميع.
115
+ update: تحديث
116
+ index:
117
+ assembly_members_title: أعضاء الجمعية
118
+ new:
119
+ create: خلق
120
+ title: عضو الجمعية الجديد.
121
+ assembly_user_roles:
122
+ edit:
123
+ update: تحديث
124
+ new:
125
+ create: خلق
126
+ menu:
127
+ assemblies: جمعيات
128
+ assemblies_submenu:
129
+ assembly_members: أفراد
130
+ attachment_collections: المجلدات
131
+ attachment_files: ملفات
132
+ attachments: مرفقات
133
+ categories: الاقسام
134
+ components: المكونات
135
+ info: معلومات
136
+ moderations: الإعتدال
137
+ private_users: المستخدمين من القطاع الخاص
138
+ models:
139
+ assembly:
140
+ fields:
141
+ created_at: أنشئت في
142
+ private: نشر
143
+ promoted: سلط الضوء
144
+ published: نشرت
145
+ title: عنوان
146
+ name: المجسم
147
+ assembly_member:
148
+ fields:
149
+ ceased_date: تاريخ التوقف
150
+ designation_date: تاريخ التعيين
151
+ full_name: اسم
152
+ position: موضع
153
+ name: عضو
154
+ positions:
155
+ other: آخر
156
+ president: رئيس
157
+ secretary: سكرتير
158
+ vice_president: نائب الرئيس
159
+ assembly_user_role:
160
+ fields:
161
+ email: البريد الإلكتروني
162
+ name: اسم
163
+ role: وظيفة
164
+ roles:
165
+ admin: مدير
166
+ collaborator: متعاون
167
+ moderator: وسيط
168
+ titles:
169
+ assemblies: جمعيات
170
+ admin_log:
171
+ assembly:
172
+ create: "%{user_name} خلق التجمع %{resource_name}"
173
+ publish: "%{user_name} نشرت %{resource_name} التجمع"
174
+ unpublish: "%{user_name} غير منشور التجمع %{resource_name}"
175
+ update: "%{user_name} تحديث التجمع %{resource_name}"
176
+ assembly_member:
177
+ create: "%{user_name} أنشأ العضو %{resource_name} في التجميع %{space_name}"
178
+ delete: "%{user_name} إزالة العضو %{resource_name} من التجميع %{space_name}"
179
+ update: "%{user_name} بتحديث العضو %{resource_name} في التجميع %{space_name}"
180
+ assembly_user_role:
181
+ create: "%{user_name} دعا %{resource_name} إلى %{space_name} التجمع"
182
+ update: "%{user_name} غير دور %{resource_name} في التجميع %{space_name}"
183
+ assemblies:
184
+ admin:
185
+ assemblies:
186
+ form:
187
+ duration_help: إذا كانت مدة هذا التجميع محدودة ، فحدد تاريخ الانتهاء. خلاف ذلك ، سوف يظهر على أنه غير مسمى.
188
+ included_at_help: حدد التاريخ الذي تمت فيه إضافة هذا التجميع إلى Decidim. ليس بالضرورة أن يكون هو نفسه تاريخ الإنشاء.
189
+ select_a_created_by: حدد تم إنشاؤها بواسطة
190
+ select_an_area: اختر منطقة
191
+ select_an_assembly_type: حدد نوع التجميع
192
+ select_parent_assembly: حدد التجميع الأصل
193
+ slug_help: 'يتم استخدام slugs URL لإنشاء عناوين URL التي تشير إلى هذا التجميع. يقبل الحروف والأرقام والشرطات فقط ، ويجب أن يبدأ بحرف. مثال: %{url}'
194
+ social_handlers: اجتماعي
195
+ assembly_copies:
196
+ form:
197
+ slug_help: 'يتم استخدام slugs URL لإنشاء عناوين URL التي تشير إلى هذا التجميع. يقبل الحروف والأرقام والشرطات فقط ، ويجب أن يبدأ بحرف. مثال: %{url}'
198
+ assembly_members:
199
+ form:
200
+ existing_user: مستخدم موجود
201
+ select_a_position: اختر المنصب
202
+ index:
203
+ filter:
204
+ all: الكل
205
+ ceased: توقف
206
+ not_ceased: لم تتوقف
207
+ filter_by: مصنف بواسطة
208
+ search: بحث
209
+ content_blocks:
210
+ highlighted_assemblies:
211
+ max_results: أقصى قدر من العناصر لإظهارها
212
+ assembly_members:
213
+ index:
214
+ members: أفراد
215
+ assembly_types:
216
+ commission: العمولة
217
+ consultative_advisory: استشاري / الاستشارية
218
+ executive: تنفيذي
219
+ government: الحكومي
220
+ others: الآخرين
221
+ participatory: المشاركة
222
+ working_group: فريق العمل
223
+ content_blocks:
224
+ highlighted_assemblies:
225
+ name: المجالس البارزة
226
+ created_by:
227
+ city_council: مجلس المدينة
228
+ others: الآخرين
229
+ public: عامة
230
+ filter:
231
+ all: الكل
232
+ commission: عمولة
233
+ consultative_advisory: استشاري / الاستشارية
234
+ executive: تنفيذي
235
+ government: الحكومي
236
+ others: الآخرين
237
+ participatory: المشاركة
238
+ working_group: فريق العمل
239
+ index:
240
+ title: جمعيات
241
+ last_activity:
242
+ new_assembly: التجمع الجديد
243
+ pages:
244
+ home:
245
+ highlighted_assemblies:
246
+ active_assemblies: جمعيات نشطة
247
+ see_all_assemblies: رؤية جميع الجمعيات
248
+ user_profile:
249
+ member_of:
250
+ member_of: عضو في
251
+ show:
252
+ area: منطقة
253
+ assembly_type: نوع التجمع
254
+ children: جمعيات
255
+ closing_date: الموعد النهائي
256
+ composition: تكوين
257
+ created_by: صنع من قبل
258
+ creation_date: تاريخ الإنشاء
259
+ developer_group: مجموعة المروجين
260
+ duration: المدة الزمنية
261
+ included_at: المدرجة في
262
+ indefinite_duration: غير محدد
263
+ internal_organisation: تنظيم داخلي
264
+ is_transparent:
265
+ 'false': مبهمة
266
+ 'true': شفاف
267
+ local_area: منطقة التنظيم
268
+ participatory_scope: ما الذي تقرر
269
+ participatory_structure: كيف تقرر ذلك
270
+ private_space: هذا هو التجمع الخاص
271
+ purpose_of_action: الغرض من العمل
272
+ read_less: أقرأ أقل
273
+ read_more: قراءة المزيد
274
+ related_participatory_processes: العمليات التشاركية ذات الصلة
275
+ scope: نطاق
276
+ social_networks: شبكات اجتماعية
277
+ target: من يشارك
278
+ statistics:
279
+ answers_count: الأجوبة
280
+ assemblies_count: جمعيات
281
+ comments_count: تعليقات
282
+ debates_count: المناقشات
283
+ endorsements_count: موافقات
284
+ headline: نشاط
285
+ meetings_count: اجتماعات
286
+ orders_count: الأصوات
287
+ pages_count: صفحات
288
+ projects_count: مشاريع
289
+ proposals_count: اقتراحات
290
+ results_count: النتائج
291
+ surveys_count: الدراسات الاستقصائية
292
+ users_count: المشاركين
293
+ assembly_members:
294
+ assembly_member:
295
+ designated_on: المعينة على
296
+ index:
297
+ title: أفراد
298
+ help:
299
+ participatory_spaces:
300
+ assemblies:
301
+ title: ما هي الجمعيات؟
302
+ log:
303
+ value_types:
304
+ assembly_presenter:
305
+ not_found: 'لم يتم العثور على التجميع في قاعدة البيانات (المعرف: %{id})'
306
+ menu:
307
+ assemblies: جمعيات
308
+ metrics:
309
+ assemblies:
310
+ description: عدد التجميعات التي تم إنشاؤها
311
+ object: المجالس
312
+ title: جمعيات
313
+ errors:
314
+ messages:
315
+ cannot_be_blank: لا يمكن أن يكون فارغا
316
+ layouts:
317
+ decidim:
318
+ assemblies:
319
+ assembly:
320
+ take_part: خذ جزء
321
+ index:
322
+ organizational_chart: الهيكل التنظيمي
323
+ promoted_assemblies: المجالس البارزة
324
+ reset_chart: إعادة تعيين
325
+ promoted_assembly:
326
+ more_info: مزيد من المعلومات
327
+ take_part: خذ جزء
328
+ assembly_navigation:
329
+ assembly_member_menu_item: أفراد
330
+ assembly_menu_item: الجمعية
331
+ assembly_widgets:
332
+ show:
333
+ take_part: خذ جزء