decidim-assemblies 0.17.2 → 0.18.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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/assemblies/assembly_m/footer.erb +1 -1
  3. data/app/cells/decidim/assemblies/assembly_m_cell.rb +24 -1
  4. data/app/commands/decidim/assemblies/admin/copy_assembly.rb +1 -0
  5. data/app/controllers/decidim/assemblies/admin/application_controller.rb +5 -4
  6. data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +20 -10
  7. data/app/controllers/decidim/assemblies/admin/concerns/assembly_admin.rb +6 -4
  8. data/app/controllers/decidim/assemblies/application_controller.rb +6 -5
  9. data/app/controllers/decidim/assemblies/assemblies_controller.rb +18 -22
  10. data/app/forms/decidim/assemblies/admin/assembly_member_form.rb +1 -1
  11. data/app/helpers/decidim/assemblies/assemblies_helper.rb +6 -0
  12. data/app/helpers/decidim/assemblies/filter_assemblies_helper.rb +18 -7
  13. data/app/models/decidim/assembly.rb +36 -10
  14. data/app/permissions/decidim/assemblies/permissions.rb +1 -1
  15. data/app/queries/decidim/assemblies/admin/admin_users.rb +8 -1
  16. data/app/queries/decidim/assemblies/organization_published_assemblies.rb +2 -2
  17. data/app/queries/decidim/assemblies/visible_assemblies.rb +1 -8
  18. data/app/services/decidim/assemblies/assembly_search.rb +18 -0
  19. data/app/views/decidim/assemblies/_filter_by_type.html.erb +13 -12
  20. data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +133 -73
  21. data/app/views/decidim/assemblies/admin/assemblies/index.html.erb +29 -10
  22. data/app/views/decidim/assemblies/assemblies/_count.html.erb +1 -1
  23. data/app/views/decidim/assemblies/assemblies/_parent_assemblies.html.erb +2 -1
  24. data/app/views/decidim/assemblies/assemblies/_promoted_assembly.html.erb +1 -1
  25. data/app/views/decidim/assemblies/assemblies/index.html.erb +1 -0
  26. data/app/views/decidim/assemblies/assemblies/index.js.erb +2 -1
  27. data/app/views/decidim/assemblies/assemblies/show.html.erb +42 -36
  28. data/config/locales/ar-SA.yml +9 -2
  29. data/config/locales/ar.yml +386 -0
  30. data/config/locales/ca.yml +9 -2
  31. data/config/locales/cs.yml +8 -2
  32. data/config/locales/de.yml +8 -2
  33. data/config/locales/en.yml +9 -2
  34. data/config/locales/es-MX.yml +9 -2
  35. data/config/locales/es-PY.yml +9 -2
  36. data/config/locales/es.yml +9 -2
  37. data/config/locales/eu.yml +8 -2
  38. data/config/locales/fi-plain.yml +9 -2
  39. data/config/locales/fi.yml +9 -2
  40. data/config/locales/fr.yml +8 -2
  41. data/config/locales/gl.yml +8 -2
  42. data/config/locales/hu.yml +9 -2
  43. data/config/locales/id-ID.yml +8 -2
  44. data/config/locales/it.yml +9 -2
  45. data/config/locales/nl.yml +8 -2
  46. data/config/locales/pl.yml +8 -2
  47. data/config/locales/pt-BR.yml +8 -2
  48. data/config/locales/pt.yml +8 -2
  49. data/config/locales/ru.yml +1 -2
  50. data/config/locales/sv.yml +8 -2
  51. data/config/locales/tr-TR.yml +9 -2
  52. data/config/locales/uk.yml +1 -2
  53. data/lib/decidim/assemblies/version.rb +1 -1
  54. metadata +9 -7
@@ -12,8 +12,8 @@ module Decidim
12
12
  def query
13
13
  Rectify::Query.merge(
14
14
  OrganizationAssemblies.new(@organization),
15
- VisibleAssemblies.new(@user),
16
- PublishedAssemblies.new
15
+ PublishedAssemblies.new,
16
+ VisibleAssemblies.new(@user)
17
17
  ).query
18
18
  end
19
19
  end
@@ -9,14 +9,7 @@ module Decidim
9
9
  end
10
10
 
11
11
  def query
12
- assemblies = Decidim::Assembly.all
13
-
14
- if @user
15
- return assemblies if @user.admin
16
- assemblies.visible_for(@user.id)
17
- else
18
- assemblies.public_spaces
19
- end
12
+ Decidim::Assembly.visible_for(@user)
20
13
  end
21
14
  end
22
15
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Assemblies
5
+ # Service that encapsulates all logic related to filtering assemblies.
6
+ class AssemblySearch < ParticipatorySpaceSearch
7
+ def initialize(options = {})
8
+ super(Assembly.all, options)
9
+ end
10
+
11
+ def search_assembly_type
12
+ return query if assembly_type == "all"
13
+
14
+ query.where(assembly_type: assembly_type)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,14 +1,15 @@
1
1
  <div id="assemblies-filter" class="inline-filters">
2
- <label>
3
- <span><%= help_text %></span>
4
- <button id="button-text" data-toggle="inline-filter-sort"><%= current_filter_text %></button>
5
- <div id="inline-filter-sort" class="dropdown-pane" data-position="bottom" data-alignment="right" data-dropdown data-auto-focus="true">
6
- <ul class="list-reset">
7
- <% available_filters.each do |filter| %>
8
- <li><%= filter_link(filter) %></li>
9
- <% end %>
10
- </ul>
11
- </div>
12
- </label>
13
- <script> $(document).foundation(); </script>
2
+ <label>
3
+ <span><%= help_text %></span>
4
+ <button id="button-text" data-toggle="inline-filter-sort"><%= current_filter_name %></button>
5
+ <div id="inline-filter-sort" class="dropdown-pane" data-position="bottom" data-alignment="right" data-dropdown data-auto-focus="true">
6
+ <ul class="list-reset">
7
+ <% available_filters.each do |filter| %>
8
+ <%= link_to filter_link(filter), remote: true do %>
9
+ <li><%= filter_name(filter) %></li>
10
+ <% end %>
11
+ <% end %>
12
+ </ul>
13
+ </div>
14
+ </label>
14
15
  </div>
@@ -2,7 +2,7 @@
2
2
 
3
3
  <div class="card">
4
4
  <div class="card-divider">
5
- <h2 class="card-title"><%= t "assemblies.form.title", scope: "decidim.admin" %></h2>
5
+ <h2 class="card-title"><%= t(".title") %></h2>
6
6
  </div>
7
7
 
8
8
  <div class="card-section">
@@ -14,18 +14,12 @@
14
14
  <%= form.translated :text_field, :subtitle %>
15
15
  </div>
16
16
 
17
- <% if params[:parent_id].present? %>
18
- <%= form.hidden_field :parent_id, value: @form.parent_id %>
19
- <% else %>
20
- <div class="row column">
21
- <%= form.select :parent_id, options_from_collection_for_select(@all_assemblies, :id, :translated_title, selected: current_assembly.try(:parent_id)), include_blank: t(".select_parent_assembly") %>
22
- </div>
23
- <% end %>
24
-
25
17
  <div class="row">
26
18
  <div class="columns xlarge-6 slug">
27
19
  <%= form.text_field :slug %>
28
- <p class="help-text"><%== t(".slug_help", url: decidim_form_slug_url(:assemblies, form.object.slug)) %></p>
20
+ <p class="help-text">
21
+ <%== t(".slug_help", url: decidim_form_slug_url(:assemblies, form.object.slug)) %>
22
+ </p>
29
23
  </div>
30
24
 
31
25
  <div class="columns xlarge-6">
@@ -34,47 +28,75 @@
34
28
  </div>
35
29
 
36
30
  <div class="row column">
37
- <%= form.check_box :promoted %>
31
+ <%= form.translated :editor, :short_description %>
38
32
  </div>
39
33
 
40
34
  <div class="row column">
41
- <%= form.translated :editor, :short_description %>
35
+ <%= form.translated :editor, :description, toolbar: :full, lines: 25 %>
42
36
  </div>
43
37
 
44
38
  <div class="row column">
45
- <%= form.translated :editor, :description, toolbar: :full, lines: 25 %>
39
+ <%= form.translated :editor, :purpose_of_action %>
46
40
  </div>
47
41
 
48
- <div class="row">
49
- <div class="columns xlarge-6">
50
- <%= form.upload :hero_image %>
51
- </div>
42
+ <div class="row column">
43
+ <%= form.translated :editor, :composition %>
44
+ </div>
52
45
 
53
- <div class="columns xlarge-6">
54
- <%= form.upload :banner_image %>
55
- </div>
46
+ <div class="row column">
47
+ <%= form.translated :editor, :internal_organisation %>
56
48
  </div>
49
+ </div>
57
50
 
58
- <div class="row">
59
- <div class="columns xlarge-6">
60
- <%= form.translated :text_field, :meta_scope %>
61
- </div>
51
+ <div class="card-divider">
52
+ <h2 class="card-title"><%= t(".duration") %></h2>
53
+ </div>
54
+
55
+ <div class="card-section">
56
+ <div class="row column">
57
+ <%= form.date_field :creation_date %>
58
+ </div>
59
+
60
+ <div class="row column">
61
+ <%= form.date_field :included_at %>
62
+ <p class="help-text"><%== t(".included_at_help") %></p>
63
+ </div>
64
+
65
+ <div class="row column">
66
+ <%= form.date_field :duration %>
67
+ <p class="help-text"><%== t(".duration_help") %></p>
68
+ </div>
69
+
70
+ <div class="row column" id="closing_date_div">
71
+ <%= form.date_field :closing_date %>
62
72
  </div>
63
73
 
74
+ <div class="row column" id="closing_date_reason_div">
75
+ <%= form.translated :editor, :closing_date_reason %>
76
+ </div>
77
+ </div>
78
+
79
+ <div class="card-divider">
80
+ <h2 class="card-title"><%= t(".images") %></h2>
81
+ </div>
82
+
83
+ <div class="card-section">
64
84
  <div class="row">
65
85
  <div class="columns xlarge-6">
66
- <%= form.translated :text_field, :developer_group %>
86
+ <%= form.upload :hero_image %>
67
87
  </div>
68
88
 
69
89
  <div class="columns xlarge-6">
70
- <%= form.translated :text_field, :local_area %>
90
+ <%= form.upload :banner_image %>
71
91
  </div>
72
92
  </div>
73
-
74
- <div class="row column">
75
- <%= form.translated :text_field, :target %>
76
93
  </div>
77
94
 
95
+ <div class="card-divider">
96
+ <h2 class="card-title"><%= t(".filters") %></h2>
97
+ </div>
98
+
99
+ <div class="card-section">
78
100
  <div class="row column">
79
101
  <%= form.check_box :scopes_enabled %>
80
102
  </div>
@@ -84,9 +106,18 @@
84
106
  </div>
85
107
 
86
108
  <div class="row column">
87
- <%= form.select :area_id, option_groups_from_collection_for_select(current_organization.area_types, :areas, :translated_name, :id, :translated_name, current_assembly.try(:decidim_area_id)), include_blank: t(".select_an_area") %>
109
+ <%= form.areas_select :area_id,
110
+ areas_for_select(current_organization),
111
+ selected: current_assembly.try(:decidim_area_id),
112
+ include_blank: t(".select_an_area") %>
88
113
  </div>
114
+ </div>
89
115
 
116
+ <div class="card-divider">
117
+ <h2 class="card-title"><%= t(".metadata") %></h2>
118
+ </div>
119
+
120
+ <div class="card-section">
90
121
  <div class="row column">
91
122
  <%= form.translated :text_field, :participatory_scope %>
92
123
  </div>
@@ -94,76 +125,97 @@
94
125
  <div class="row column">
95
126
  <%= form.translated :text_field, :participatory_structure %>
96
127
  </div>
97
-
98
- <div class="row column">
99
- <%= form.check_box :show_statistics %>
128
+ <div class="row">
129
+ <div class="columns xlarge-6">
130
+ <%= form.translated :text_field, :meta_scope %>
131
+ </div>
100
132
  </div>
101
133
 
102
- <div class="row column">
103
- <% if @form.processes_for_select %>
104
- <%= form.select :participatory_processes_ids,
105
- options_for_select(@form.processes_for_select, selected: processes_selected ),
106
- { include_blank: false },
107
- { multiple: true, class: "chosen-select" } %>
108
- <% end %>
109
- </div>
134
+ <div class="row">
135
+ <div class="columns xlarge-6">
136
+ <%= form.translated :text_field, :developer_group %>
137
+ </div>
110
138
 
111
- <div class="row column">
112
- <%= form.translated :editor, :purpose_of_action %>
139
+ <div class="columns xlarge-6">
140
+ <%= form.translated :text_field, :local_area %>
141
+ </div>
113
142
  </div>
114
143
 
115
144
  <div class="row column">
116
- <%= form.translated :editor, :composition %>
145
+ <%= form.translated :text_field, :target %>
117
146
  </div>
147
+ </div>
118
148
 
119
- <div class="row column">
120
- <%= form.select :assembly_type, @form.assembly_types_for_select, { include_blank: t(".select_an_assembly_type") }, { multiple: false } %>
121
- </div>
149
+ <div class="card-divider">
150
+ <h2 class="card-title"><%= t(".visbility") %></h2>
151
+ </div>
122
152
 
123
- <div class="row column" id="assembly_type_other">
124
- <%= form.translated :text_field, :assembly_type_other %>
125
- </div>
153
+ <div class="card-section">
154
+ <% if params[:parent_id].present? %>
155
+ <%= form.hidden_field :parent_id, value: @form.parent_id %>
156
+ <% else %>
157
+ <div class="row column">
158
+ <%= form.select :parent_id,
159
+ options_from_collection_for_select(
160
+ @all_assemblies,
161
+ :id,
162
+ :translated_title,
163
+ selected: current_assembly.try(:parent_id)
164
+ ),
165
+ include_blank: t(".select_parent_assembly") %>
166
+ </div>
167
+ <% end %>
126
168
 
127
169
  <div class="row column">
128
- <%= form.date_field :creation_date %>
170
+ <%= form.check_box :promoted %>
129
171
  </div>
130
172
 
131
- <div class="row column">
132
- <%= form.select :created_by, @form.created_by_for_select, { include_blank: t(".select_a_created_by") }, { multiple: false } %>
173
+ <div class="row column" id="private_space">
174
+ <%= form.check_box :private_space %>
133
175
  </div>
134
176
 
135
- <div class="row column" id="created_by_other">
136
- <%= form.translated :text_field, :created_by_other %>
177
+ <div class="row column" id="is_transparent">
178
+ <%= form.check_box :is_transparent %>
137
179
  </div>
180
+ </div>
138
181
 
139
- <div class="row column">
140
- <%= form.date_field :duration %>
141
- <p class="help-text"><%== t(".duration_help") %></p>
142
- </div>
182
+ <div class="card-divider">
183
+ <h2 class="card-title"><%= t(".other") %></h2>
184
+ </div>
143
185
 
186
+ <div class="card-section">
144
187
  <div class="row column">
145
- <%= form.date_field :included_at %>
146
- <p class="help-text"><%== t(".included_at_help") %></p>
147
- </div>
148
-
149
- <div class="row column" id="closing_date_div">
150
- <%= form.date_field :closing_date %>
188
+ <%= form.select :created_by,
189
+ @form.created_by_for_select,
190
+ { include_blank: t(".select_a_created_by") },
191
+ { multiple: false } %>
151
192
  </div>
152
193
 
153
- <div class="row column" id="closing_date_reason_div">
154
- <%= form.translated :editor, :closing_date_reason %>
194
+ <div class="row column" id="created_by_other">
195
+ <%= form.translated :text_field, :created_by_other %>
155
196
  </div>
156
197
 
157
198
  <div class="row column">
158
- <%= form.translated :editor, :internal_organisation %>
199
+ <%= form.select :assembly_type,
200
+ @form.assembly_types_for_select,
201
+ { include_blank: t(".select_an_assembly_type") },
202
+ { multiple: false } %>
159
203
  </div>
160
204
 
161
- <div class="row column" id="private_space">
162
- <%= form.check_box :private_space %>
205
+ <div class="row column" id="assembly_type_other">
206
+ <%= form.translated :text_field, :assembly_type_other %>
163
207
  </div>
164
208
 
165
- <div class="row column" id="is_transparent">
166
- <%= form.check_box :is_transparent %>
209
+ <div class="row column">
210
+ <% if @form.processes_for_select %>
211
+ <%= form.select :participatory_processes_ids,
212
+ options_for_select(
213
+ @form.processes_for_select,
214
+ selected: processes_selected
215
+ ),
216
+ { include_blank: false },
217
+ { multiple: true, class: "chosen-select" } %>
218
+ <% end %>
167
219
  </div>
168
220
 
169
221
  <div class="row column" id="special_features">
@@ -171,7 +223,15 @@
171
223
  </div>
172
224
 
173
225
  <div class="columns xlarge-6">
174
- <%= form.social_field :text_field, :social_handlers, Decidim::Assembly::SOCIAL_HANDLERS, label: t("social_handlers", scope: "decidim.assemblies.admin.assemblies.form") %>
226
+ <%= form.social_field :text_field,
227
+ :social_handlers,
228
+ Decidim::Assembly::SOCIAL_HANDLERS,
229
+ label: t("social_handlers",
230
+ scope: "decidim.assemblies.admin.assemblies.form") %>
231
+ </div>
232
+
233
+ <div class="row column">
234
+ <%= form.check_box :show_statistics %>
175
235
  </div>
176
236
  </div>
177
237
  </div>
@@ -2,10 +2,17 @@
2
2
  <div class="card-divider">
3
3
  <h2 class="card-title">
4
4
  <% parent_assembly.self_and_ancestors.each do |assembly| %>
5
- <%= link_to "#{translated_attribute(assembly.title)} > ", edit_assembly_path(assembly) %>
5
+ <%= link_to translated_attribute(assembly.title), edit_assembly_path(assembly) %>
6
+ <span>&gt;</span>
6
7
  <% end if parent_assembly %>
7
- <%= t "decidim.admin.titles.assemblies" %>
8
- <%= link_to t("actions.new_assembly", scope: "decidim.admin"), new_assembly_path(parent_id: parent_assembly&.id), class: "button tiny button--title" if allowed_to? :create, :assembly %>
8
+
9
+ <%= t("assemblies", scope: "decidim.admin.titles") %>
10
+
11
+ <% if allowed_to? :create, :assembly %>
12
+ <%= link_to t("actions.new_assembly", scope: "decidim.admin"),
13
+ new_assembly_path(parent_id: parent_assembly&.id),
14
+ class: "button tiny button--title" %>
15
+ <% end %>
9
16
  </h2>
10
17
  </div>
11
18
  <div class="card-section">
@@ -13,10 +20,18 @@
13
20
  <table class="table-list">
14
21
  <thead>
15
22
  <tr>
16
- <th><%= t("models.assembly.fields.title", scope: "decidim.admin") %></th>
17
- <th><%= t("models.assembly.fields.created_at", scope: "decidim.admin") %></th>
18
- <th><%= t("models.assembly.fields.private", scope: "decidim.admin") %></th>
19
- <th class="table-list__actions"><%= t("models.assembly.fields.published", scope: "decidim.admin") %></th>
23
+ <th>
24
+ <%= sort_link(query, :title, t("models.assembly.fields.title", scope: "decidim.admin")) %>
25
+ </th>
26
+ <th>
27
+ <%= sort_link(query, :created_at, t("models.assembly.fields.created_at", scope: "decidim.admin"), default_order: :desc) %>
28
+ </th>
29
+ <th>
30
+ <%= sort_link(query, :private_space, t("models.assembly.fields.private", scope: "decidim.admin")) %>
31
+ </th>
32
+ <th class="table-list__actions">
33
+ <%= sort_link(query, :published_at, t("models.assembly.fields.published", scope: "decidim.admin")) %>
34
+ </th>
20
35
  <th></th>
21
36
  </tr>
22
37
  </thead>
@@ -40,7 +55,7 @@
40
55
  <% end %>
41
56
  </td>
42
57
  <td>
43
- <%= l assembly.created_at, format: :short %>
58
+ <%= l(assembly.created_at, format: :short) %>
44
59
  </td>
45
60
  <td class="table-list__state">
46
61
  <% if assembly.private_space? %>
@@ -65,8 +80,11 @@
65
80
  <%= icon_link_to "pencil", edit_assembly_path(assembly), t("actions.configure", scope: "decidim.admin"), class: "action-icon--new" %>
66
81
  <% end %>
67
82
 
68
- <% if assembly.children_count > 0 || allowed_to?(:create, :assembly) %>
69
- <%= icon_link_to "dial", decidim_admin_assemblies.assemblies_path(parent_id: assembly.id), t("decidim.admin.titles.assemblies"), class: "action-icon--dial" %>
83
+ <% if assembly.parent.blank? && (assembly.children.count.positive? || allowed_to?(:create, :assembly)) %>
84
+ <%= icon_link_to "dial",
85
+ decidim_admin_assemblies.assemblies_path(parent_id: assembly.id),
86
+ t("decidim.admin.titles.assemblies"),
87
+ class: "action-icon--dial #{'highlighted' if assembly.children.count.positive?}" %>
70
88
  <% end %>
71
89
 
72
90
  <% if allowed_to? :preview, :assembly, assembly: assembly %>
@@ -77,6 +95,7 @@
77
95
  <% end %>
78
96
  </tbody>
79
97
  </table>
98
+ <%= paginate @assemblies, theme: "decidim" %>
80
99
  </div>
81
100
  </div>
82
101
  </div>
@@ -1 +1 @@
1
- <%= t("assemblies.order_by_assemblies.assemblies", scope: "layouts.decidim", count: collection.count) %>
1
+ <%= t("assemblies.order_by_assemblies.assemblies", scope: "layouts.decidim", count: parent_assemblies.count) %>