decidim-assemblies 0.17.2 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
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) %>