decidim-assemblies 0.30.2 → 0.31.0.rc1

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 (99) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/assemblies/content_blocks/highlighted_assemblies_settings_form/show.erb +3 -1
  3. data/app/commands/decidim/assemblies/admin/create_assembly.rb +1 -1
  4. data/app/commands/decidim/assemblies/admin/{copy_assembly.rb → duplicate_assembly.rb} +20 -21
  5. data/app/commands/decidim/assemblies/admin/update_assembly.rb +1 -1
  6. data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +3 -3
  7. data/app/controllers/decidim/assemblies/admin/assembly_duplicates_controller.rb +35 -0
  8. data/app/controllers/decidim/assemblies/admin/assembly_imports_controller.rb +1 -1
  9. data/app/controllers/decidim/assemblies/admin/assembly_landing_page_controller.rb +4 -0
  10. data/app/forms/decidim/assemblies/admin/{assembly_copy_form.rb → assembly_duplicate_form.rb} +4 -4
  11. data/app/forms/decidim/assemblies/admin/assembly_form.rb +0 -1
  12. data/app/models/decidim/assembly.rb +0 -4
  13. data/app/packs/entrypoints/decidim_assemblies_admin.js +0 -1
  14. data/app/packs/src/decidim/assemblies/admin/assemblies.js +3 -62
  15. data/app/packs/src/decidim/assemblies/controllers/.gitkeep +0 -0
  16. data/app/packs/src/decidim/assemblies/controllers/assembly_admin/assembly_admin.test.js +1077 -0
  17. data/app/packs/src/decidim/assemblies/controllers/assembly_admin/controller.js +66 -0
  18. data/app/permissions/decidim/assemblies/permissions.rb +7 -7
  19. data/app/presenters/decidim/assemblies/admin_log/assembly_presenter.rb +0 -1
  20. data/app/presenters/decidim/assemblies/assembly_stats_presenter.rb +1 -3
  21. data/app/queries/decidim/assemblies/assemblies_stats_followers_count.rb +14 -0
  22. data/app/queries/decidim/assemblies/assemblies_stats_participants_count.rb +14 -0
  23. data/app/serializers/decidim/assemblies/assembly_importer.rb +0 -1
  24. data/app/views/decidim/assemblies/admin/assemblies/_assembly_row.html.erb +118 -49
  25. data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +8 -12
  26. data/app/views/decidim/assemblies/admin/assemblies/edit.html.erb +1 -9
  27. data/app/views/decidim/assemblies/admin/assemblies/index.html.erb +2 -2
  28. data/app/views/decidim/assemblies/admin/assemblies/index.js.erb +4 -0
  29. data/app/views/decidim/assemblies/admin/assemblies/manage_trash.html.erb +2 -1
  30. data/app/views/decidim/assemblies/admin/assemblies/new.html.erb +1 -1
  31. data/app/views/decidim/assemblies/admin/{assembly_copies → assembly_duplicates}/_form.html.erb +4 -4
  32. data/app/views/decidim/assemblies/admin/assembly_duplicates/new.html.erb +19 -0
  33. data/app/views/decidim/assemblies/admin/assembly_user_roles/index.html.erb +42 -18
  34. data/app/views/decidim/assemblies/assemblies/index.html.erb +0 -1
  35. data/app/views/layouts/decidim/admin/_manage_assemblies.html.erb +1 -1
  36. data/config/assets.rb +2 -3
  37. data/config/locales/ar.yml +0 -13
  38. data/config/locales/bg.yml +0 -17
  39. data/config/locales/bs-BA.yml +0 -4
  40. data/config/locales/ca-IT.yml +11 -16
  41. data/config/locales/ca.yml +11 -16
  42. data/config/locales/cs.yml +11 -16
  43. data/config/locales/de.yml +12 -17
  44. data/config/locales/el.yml +0 -13
  45. data/config/locales/en.yml +11 -16
  46. data/config/locales/es-MX.yml +12 -17
  47. data/config/locales/es-PY.yml +12 -17
  48. data/config/locales/es.yml +12 -17
  49. data/config/locales/eu.yml +11 -16
  50. data/config/locales/fi-plain.yml +11 -16
  51. data/config/locales/fi.yml +11 -16
  52. data/config/locales/fr-CA.yml +11 -16
  53. data/config/locales/fr.yml +11 -16
  54. data/config/locales/ga-IE.yml +0 -6
  55. data/config/locales/gl.yml +0 -13
  56. data/config/locales/he-IL.yml +0 -12
  57. data/config/locales/hu.yml +0 -14
  58. data/config/locales/id-ID.yml +0 -12
  59. data/config/locales/is-IS.yml +0 -10
  60. data/config/locales/it.yml +4 -17
  61. data/config/locales/ja.yml +12 -17
  62. data/config/locales/kaa.yml +0 -3
  63. data/config/locales/ko.yml +0 -4
  64. data/config/locales/lb.yml +0 -12
  65. data/config/locales/lt.yml +0 -14
  66. data/config/locales/lv.yml +0 -13
  67. data/config/locales/nl.yml +0 -13
  68. data/config/locales/no.yml +0 -13
  69. data/config/locales/pl.yml +0 -17
  70. data/config/locales/pt-BR.yml +0 -17
  71. data/config/locales/pt.yml +0 -18
  72. data/config/locales/ro-RO.yml +2 -14
  73. data/config/locales/ru.yml +0 -10
  74. data/config/locales/sk.yml +0 -8
  75. data/config/locales/sl.yml +0 -12
  76. data/config/locales/sq-AL.yml +0 -15
  77. data/config/locales/sr-CS.yml +0 -4
  78. data/config/locales/sv.yml +10 -16
  79. data/config/locales/tr-TR.yml +0 -13
  80. data/config/locales/uk.yml +0 -10
  81. data/config/locales/zh-CN.yml +0 -13
  82. data/config/locales/zh-TW.yml +0 -13
  83. data/db/migrate/20250604081741_remove_hastags_column_assemblies.rb +7 -0
  84. data/lib/decidim/api/assembly_type.rb +10 -6
  85. data/lib/decidim/assemblies/admin_engine.rb +1 -1
  86. data/lib/decidim/assemblies/api.rb +0 -1
  87. data/lib/decidim/assemblies/engine.rb +5 -14
  88. data/lib/decidim/assemblies/participatory_space.rb +14 -0
  89. data/lib/decidim/assemblies/query_extensions.rb +0 -18
  90. data/lib/decidim/assemblies/seeds.rb +2 -3
  91. data/lib/decidim/assemblies/test/factories.rb +2 -2
  92. data/lib/decidim/assemblies/version.rb +1 -1
  93. metadata +23 -21
  94. data/app/controllers/decidim/assemblies/admin/assembly_copies_controller.rb +0 -35
  95. data/app/packs/entrypoints/decidim_assemblies.js +0 -4
  96. data/app/packs/src/decidim/assemblies/assemblies.js +0 -14
  97. data/app/queries/decidim/assemblies/metrics/assemblies_metric_manage.rb +0 -27
  98. data/app/views/decidim/assemblies/admin/assembly_copies/new.html.erb +0 -19
  99. data/lib/decidim/api/assemblies_type_type.rb +0 -16
@@ -0,0 +1,66 @@
1
+ import { Controller } from "@hotwired/stimulus"
2
+
3
+ export default class extends Controller {
4
+ connect() {
5
+ const privateSpace = this.element.querySelector("#private_space");
6
+
7
+ if (privateSpace) {
8
+ privateSpace.addEventListener("change", this.toggleDisabledHiddenFields);
9
+ }
10
+ this.toggleDisabledHiddenFields();
11
+
12
+ this.assignBehavior("assembly_type");
13
+ this.assignBehavior("created_by");
14
+ }
15
+
16
+ assignBehavior(field) {
17
+ const assemblyCreatedBy = this.element.querySelector(`#assembly_${field}`);
18
+ const assemblyCreatedByOther = this.element.querySelector(`#${field}_other`);
19
+ this.attachVisibility(assemblyCreatedBy, assemblyCreatedByOther);
20
+ }
21
+
22
+ attachVisibility(type, other) {
23
+ if (type && other) {
24
+ type.addEventListener("change", (ev) => {
25
+ this.toggleDependsOnSelect(ev.target, other);
26
+ });
27
+ this.toggleDependsOnSelect(type, other);
28
+ }
29
+ }
30
+
31
+ toggleDependsOnSelect(target, showDiv) {
32
+ if (!target || !showDiv) {
33
+ return;
34
+ }
35
+ const value = target.value;
36
+
37
+ showDiv.style.display = "none";
38
+ if (value === "others") {
39
+ showDiv.style.display = "block";
40
+ }
41
+ }
42
+
43
+ toggleDisabledHiddenFields() {
44
+ const privateSpace = document.getElementById("private_space");
45
+ const isTransparent = document.getElementById("is_transparent");
46
+ const specialFeatures = document.getElementById("special_features");
47
+
48
+ const enabledPrivateSpace = privateSpace?.querySelector("input[type='checkbox']")?.checked;
49
+ const isTransparentCheckbox = isTransparent?.querySelector("input[type='checkbox']");
50
+
51
+ if (isTransparentCheckbox) {
52
+ isTransparentCheckbox.disabled = (enabledPrivateSpace === false);
53
+
54
+ if (isTransparentCheckbox.checked) {
55
+ isTransparentCheckbox.checked = false;
56
+ }
57
+ }
58
+
59
+ if (specialFeatures) {
60
+ specialFeatures.style.display = enabledPrivateSpace
61
+ ? "block"
62
+ : "none";
63
+ }
64
+ }
65
+
66
+ }
@@ -33,7 +33,7 @@ module Decidim
33
33
  user_can_read_current_assembly?
34
34
  user_can_create_assembly?
35
35
  user_can_export_assembly?
36
- user_can_copy_assembly?
36
+ user_can_duplicate_assembly?
37
37
  user_can_upload_images_in_assembly?
38
38
 
39
39
  # org admins and space admins can do everything in the admin section
@@ -45,7 +45,7 @@ module Decidim
45
45
 
46
46
  moderator_action?
47
47
  collaborator_action?
48
- valuator_action?
48
+ evaluator_action?
49
49
  assembly_admin_action?
50
50
 
51
51
  permission_action
@@ -172,8 +172,8 @@ module Decidim
172
172
  toggle_allow(user.admin? || admin_assembly?)
173
173
  end
174
174
 
175
- def user_can_copy_assembly?
176
- return unless permission_action.action == :copy &&
175
+ def user_can_duplicate_assembly?
176
+ return unless permission_action.action == :duplicate &&
177
177
  permission_action.subject == :assembly
178
178
 
179
179
  toggle_allow(user.admin? || admin_assembly?)
@@ -227,9 +227,9 @@ module Decidim
227
227
  allow! if permission_action.action == :read || permission_action.action == :preview
228
228
  end
229
229
 
230
- # Valuators can only read the assembly components
231
- def valuator_action?
232
- return unless can_manage_assembly?(role: :valuator)
230
+ # Evaluators can only read the assembly components
231
+ def evaluator_action?
232
+ return unless can_manage_assembly?(role: :evaluator)
233
233
 
234
234
  allow! if permission_action.action == :read && permission_action.subject == :component
235
235
  allow! if permission_action.action == :export && permission_action.subject == :component_data
@@ -18,7 +18,6 @@ module Decidim
18
18
  def diff_fields_mapping
19
19
  {
20
20
  description: :i18n,
21
- hashtag: :string,
22
21
  decidim_area_id: :area,
23
22
  decidim_scope_id: :scope,
24
23
  developer_group: :i18n,
@@ -8,9 +8,7 @@ module Decidim
8
8
 
9
9
  private
10
10
 
11
- def participatory_space = __getobj__.fetch(:assembly)
12
-
13
- def participatory_space_sym = :assemblies
11
+ def scope_entity = __getobj__.fetch(:assembly)
14
12
  end
15
13
  end
16
14
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Assemblies
5
+ # This class counts all Followers of a assembly
6
+ class AssembliesStatsFollowersCount < Decidim::StatsFollowersCount
7
+ def self.for(participatory_space)
8
+ return 0 unless participatory_space.is_a?(Decidim::Assemblies)
9
+
10
+ new(participatory_space).query
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Assemblies
5
+ # This class counts unique Participants on a assembly
6
+ class AssembliesStatsParticipantsCount < Decidim::StatsParticipantsCount
7
+ def self.for(participatory_space)
8
+ return 0 unless participatory_space.is_a?(Decidim::Assemblies)
9
+
10
+ new(participatory_space).query
11
+ end
12
+ end
13
+ end
14
+ end
@@ -26,7 +26,6 @@ module Decidim
26
26
  organization: @organization,
27
27
  title:,
28
28
  slug:,
29
- hashtag: attributes["hashtag"],
30
29
  subtitle: attributes["subtitle"],
31
30
  short_description: attributes["short_description"],
32
31
  description: attributes["description"],
@@ -1,5 +1,5 @@
1
1
  <tr data-assembly-id="<%= assembly.id %>" data-parent-id="<%= assembly.parent_id %>" data-level="<%= assembly.ancestors.count %>">
2
- <td class="whitespace-nowrap">
2
+ <td class="whitespace-nowrap" data-label="<%= t("models.assembly.fields.title", scope: "decidim.admin") %>">
3
3
  <% if parent_assembly_id %>
4
4
  <% [assembly.ancestors.count - 1, 0].max.times do |index| %>
5
5
  <span class="px-3"></span>
@@ -30,72 +30,141 @@
30
30
  <% end %>
31
31
  <% end %>
32
32
  </td>
33
- <td class="table-list__date">
33
+ <td class="table-list__date" data-label="<%= t("models.assembly.fields.created_at", scope: "decidim.admin") %>">
34
34
  <%= l(assembly.created_at, format: :short) %>
35
35
  </td>
36
- <td class="table-list__state">
36
+ <td class="table-list__state" data-label="<%= t("models.assembly.fields.private", scope: "decidim.admin") %>">
37
37
  <% if assembly.private_space? %>
38
38
  <span><%= t("assemblies.index.private", scope: "decidim.admin") %></span>
39
39
  <% else %>
40
40
  <span><%= t("assemblies.index.public", scope: "decidim.admin") %></span>
41
41
  <% end %>
42
42
  </td>
43
- <td class="table-list__state">
43
+ <td class="table-list__state" data-label="<%= t("models.assembly.fields.published", scope: "decidim.admin") %>">
44
44
  <% if assembly.published? %>
45
45
  <span class="label success !text-sm"><%= t("assemblies.index.published", scope: "decidim.admin") %></span>
46
46
  <% else %>
47
47
  <span class="label alert !text-sm"><%= t("assemblies.index.unpublished", scope: "decidim.admin") %></span>
48
48
  <% end %>
49
49
  </td>
50
- <td class="table-list__actions">
51
- <% if view == :deleted %>
52
- <% if allowed_to? :restore, :assembly, trashable_deleted_resource: assembly %>
53
- <%= icon_link_to "refresh-line", restore_assembly_path(assembly), t("actions.restore", scope: "decidim.admin"), method: :patch, class: "action-icon--restore" %>
54
- <% else %>
55
- <span class="action-space icon"></span>
56
- <% end %>
57
- <% else %>
58
- <% if allowed_to? :read, :share_token, current_participatory_space: assembly %>
59
- <%= icon_link_to "share-line", decidim_admin_assemblies.assembly_share_tokens_path(assembly), t("actions.share_tokens", scope: "decidim.admin"), class: "action-icon--new" %>
60
- <% else %>
61
- <span class="action-space icon"></span>
62
- <% end %>
63
- <% if allowed_to? :update, :assembly, assembly: assembly %>
64
- <%= icon_link_to "pencil-line", edit_assembly_path(assembly), t("actions.configure", scope: "decidim.admin"), class: "action-icon--new" %>
65
- <% else %>
66
- <span class="action-space icon"></span>
67
- <% end %>
68
- <% if allowed_to? :copy, :assembly, assembly: assembly, assembly: parent_assembly %>
69
- <%= icon_link_to "file-copy-line", new_assembly_copy_path(assembly), t("actions.duplicate", scope: "decidim.admin"), class: "action-icon--copy" %>
70
- <% else %>
71
- <span class="action-space icon"></span>
72
- <% end %>
50
+ <td class="table-list__actions" data-label="<%= t("models.assembly.fields.actions", scope: "decidim.admin") %>">
51
+ <button type="button" data-controller="dropdown" data-target="actions-assembly-<%= assembly.id %>" aria-label="<%= t("decidim.admin.actions.actions_label", resource: translated_attribute(assembly.title)) %>">
52
+ <%= icon "more-fill", class: "text-secondary" %>
53
+ </button>
73
54
 
74
- <% if allowed_to? :export, :assembly, assembly: assembly %>
75
- <%= icon_link_to "download-line", assembly_export_path(assembly), t("actions.export", scope: "decidim.admin"), method: :post, class: "action-icon--export" %>
76
- <% else %>
77
- <span class="action-space icon"></span>
78
- <% end %>
55
+ <div class="inline-block relative">
56
+ <ul id="actions-assembly-<%= assembly.id %>" class="dropdown dropdown__action" aria-hidden="true">
57
+ <% if view == :deleted %>
58
+ <% if allowed_to? :restore, :assembly, trashable_deleted_resource: assembly %>
59
+ <li class="dropdown__item">
60
+ <%= link_to restore_assembly_path(assembly), class: "dropdown__button", method: :patch do %>
61
+ <%= icon "refresh-line" %>
62
+ <%= t("actions.restore", scope: "decidim.admin") %>
63
+ <% end %>
64
+ </li>
65
+ <% end %>
66
+ <% else %>
67
+ <% if allowed_to? :update, :assembly, assembly: assembly %>
68
+ <li class="dropdown__item">
69
+ <%= link_to edit_assembly_path(assembly), class: "dropdown__button" do %>
70
+ <%= icon "pencil-line" %>
71
+ <%= t("actions.edit", scope: "decidim.admin") %>
72
+ <% end %>
73
+ </li>
74
+ <% end %>
79
75
 
80
- <% if allowed_to? :preview, :assembly, assembly: assembly %>
81
- <%= icon_link_to "eye-line", decidim_assemblies.assembly_path(assembly), t("actions.preview", scope: "decidim.admin"), class: "action-icon--preview", target: "_blank", data: { "external-link": false } %>
82
- <% else %>
83
- <span class="action-space icon"></span>
84
- <% end %>
76
+ <hr>
85
77
 
86
- <% if allowed_to? :read, :moderation, assembly: assembly %>
87
- <%= icon_link_to "flag-line", moderations_path(assembly), t("actions.moderate", scope: "decidim.admin"), class: "action-icon--moderate" %>
88
- <% else %>
89
- <span class="action-space icon"></span>
90
- <% end %>
78
+ <% if allowed_to? :duplicate, :assembly, assembly: assembly %>
79
+ <li class="dropdown__item">
80
+ <%= link_to new_assembly_duplicate_path(assembly), class: "dropdown__button" do %>
81
+ <%= icon "file-copy-line" %>
82
+ <%= t("actions.duplicate", scope: "decidim.admin") %>
83
+ <% end %>
84
+ </li>
85
+ <% end %>
91
86
 
92
- <% if allowed_to? :soft_delete, :assembly, trashable_deleted_resource: assembly %>
93
- <% if assembly.published? %>
94
- <%= icon "delete-bin-line", class: "action-icon action-icon--disabled", role: "img", aria_label: t("actions.soft_delete", scope: "decidim.admin") %>
95
- <% else %>
96
- <%= icon_link_to "delete-bin-line", soft_delete_assembly_path(assembly), t("actions.soft_delete", scope: "decidim.admin"), method: :patch, class: "action-icon--delete", data: { confirm: t("actions.confirm_delete_assembly", scope: "decidim.admin") } %>
87
+ <% if allowed_to? :export, :assembly, assembly: assembly %>
88
+ <li class="dropdown__item">
89
+ <%= link_to assembly_export_path(assembly), class: "dropdown__button", method: :post do %>
90
+ <%= icon "download-line" %>
91
+ <%= t("actions.export", scope: "decidim.admin") %>
92
+ <% end %>
93
+ </li>
94
+ <% end %>
95
+
96
+ <hr>
97
+
98
+ <% if allowed_to? :preview, :assembly, assembly: assembly %>
99
+ <li class="dropdown__item">
100
+ <%= link_to decidim_assemblies.assembly_path(assembly), class: "dropdown__button", target: "_blank", data: { "external-link": false } do %>
101
+ <%= icon "eye-line" %>
102
+ <%= t("actions.preview", scope: "decidim.admin") %>
103
+ <% end %>
104
+ </li>
105
+ <% end %>
106
+
107
+ <% if allowed_to? :read, :share_token, current_participatory_space: assembly %>
108
+ <li class="dropdown__item">
109
+ <%= link_to decidim_admin_assemblies.assembly_share_tokens_path(assembly), class: "dropdown__button" do %>
110
+ <%= icon "share-line" %>
111
+ <%= t("actions.share_tokens", scope: "decidim.admin") %>
112
+ <% end %>
113
+ </li>
114
+ <% end %>
115
+
116
+ <% if allowed_to? :publish, :assembly, assembly: assembly %>
117
+ <li class="dropdown__item">
118
+ <% if assembly.published? %>
119
+ <%= link_to assembly_publish_path(assembly), method: :delete, class: "dropdown__button" do %>
120
+ <%= icon "close-circle-line" %>
121
+ <%= t("actions.unpublish", scope: "decidim.admin") %>
122
+ <% end %>
123
+ <% else %>
124
+ <%= link_to assembly_publish_path(assembly), method: :post, class: "dropdown__button" do %>
125
+ <%= icon "check-line" %>
126
+ <%= t("actions.publish", scope: "decidim.admin") %>
127
+ <% end %>
128
+ <% end %>
129
+ </li>
130
+ <% end %>
131
+
132
+ <hr>
133
+
134
+ <% if allowed_to? :read, :moderation, assembly: assembly %>
135
+ <li class="dropdown__item">
136
+ <%= link_to moderations_path(assembly), class: "dropdown__button" do %>
137
+ <%= icon "flag-line" %>
138
+ <%= t("actions.moderate", scope: "decidim.admin") %>
139
+ <% end %>
140
+ </li>
141
+
142
+ <hr>
143
+ <% end %>
144
+
145
+ <% if allowed_to? :soft_delete, :assembly, trashable_deleted_resource: assembly %>
146
+ <% if assembly.published? %>
147
+ <li class="dropdown__item">
148
+ <div class="dropdown__button-disabled">
149
+ <%= with_tooltip t("tooltips.deleted_assemblies_info", scope: "decidim.admin") do %>
150
+ <%= icon "delete-bin-line", class: "text-gray" %>
151
+ <span>
152
+ <%= t("actions.soft_delete", scope: "decidim.admin") %>
153
+ </span>
154
+ <% end %>
155
+ </div>
156
+ </li>
157
+ <% else %>
158
+ <li class="dropdown__item">
159
+ <%= link_to soft_delete_assembly_path(assembly), class: "dropdown__button", method: :patch, data: { confirm: t("actions.confirm_delete_assembly", scope: "decidim.admin") } do %>
160
+ <%= icon "delete-bin-line" %>
161
+ <%= t("actions.soft_delete", scope: "decidim.admin") %>
162
+ <% end %>
163
+ </li>
164
+ <% end %>
165
+ <% end %>
97
166
  <% end %>
98
- <% end %>
99
- <% end %>
167
+ </ul>
168
+ </div>
100
169
  </td>
101
170
  </tr>
@@ -1,5 +1,5 @@
1
1
  <div class="form__wrapper">
2
- <div class="card" data-component="accordion" id="accordion-title">
2
+ <div class="card" data-controller="accordion" id="accordion-title">
3
3
  <div class="card-divider">
4
4
  <button class="card-divider-button" data-open="true" data-controls="panel-title" type="button">
5
5
  <%= icon "arrow-right-s-line" %>
@@ -23,13 +23,9 @@
23
23
  </div>
24
24
 
25
25
  <div class="row">
26
- <div class="columns slug">
26
+ <div class="columns" data-controller="slug">
27
27
  <%= form.text_field :slug, help_text: t(".slug_help_html", url: decidim_form_slug_url(:assemblies, form.object.slug)) %>
28
28
  </div>
29
-
30
- <div class="columns">
31
- <%= form.text_field :hashtag %>
32
- </div>
33
29
  </div>
34
30
 
35
31
  <div class="row column">
@@ -57,7 +53,7 @@
57
53
  </div>
58
54
  </div>
59
55
  </div>
60
- <div class="card" data-component="accordion" id="accordion-duration">
56
+ <div class="card" data-controller="accordion" id="accordion-duration">
61
57
  <div class="card-divider">
62
58
  <button class="card-divider-button" data-open="true" data-controls="panel-duration" type="button">
63
59
  <%= icon "arrow-right-s-line" %>
@@ -90,7 +86,7 @@
90
86
  </div>
91
87
  </div>
92
88
 
93
- <div class="card" data-component="accordion" id="accordion-images">
89
+ <div class="card" data-controller="accordion" id="accordion-images">
94
90
  <div class="card-divider">
95
91
  <button class="card-divider-button" data-open="true" data-controls="panel-images" type="button">
96
92
  <%= icon "arrow-right-s-line" %>
@@ -113,7 +109,7 @@
113
109
  </div>
114
110
  </div>
115
111
 
116
- <div class="card" data-component="accordion" id="accordion-metadata">
112
+ <div class="card" data-controller="accordion" id="accordion-metadata">
117
113
  <div class="card-divider">
118
114
  <button class="card-divider-button" data-open="true" data-controls="panel-metadata" type="button">
119
115
  <%= icon "arrow-right-s-line" %>
@@ -153,7 +149,7 @@
153
149
  </div>
154
150
  </div>
155
151
 
156
- <div class="card" data-component="accordion" id="accordion-taxonomies">
152
+ <div class="card" data-controller="accordion" id="accordion-taxonomies">
157
153
  <div class="card-divider">
158
154
  <button class="card-divider-button" data-open="true" data-controls="panel-taxonomies" type="button">
159
155
  <%= icon "arrow-right-s-line" %>
@@ -180,7 +176,7 @@
180
176
  </div>
181
177
  </div>
182
178
 
183
- <div class="card" data-component="accordion" id="accordion-visibility">
179
+ <div class="card" data-controller="accordion" id="accordion-visibility">
184
180
  <div class="card-divider">
185
181
  <button class="card-divider-button" data-open="true" data-controls="panel-visibility" type="button">
186
182
  <%= icon "arrow-right-s-line" %>
@@ -216,7 +212,7 @@
216
212
  </div>
217
213
  </div>
218
214
 
219
- <div class="card" data-component="accordion" id="accordion-other">
215
+ <div class="card" data-controller="accordion" id="accordion-other">
220
216
  <div class="card-divider">
221
217
  <button class="card-divider-button" data-open="true" data-controls="panel-other" type="button">
222
218
  <%= icon "arrow-right-s-line" %>
@@ -7,19 +7,11 @@
7
7
 
8
8
  <div class="item__edit item__edit-1col">
9
9
  <div class="item__edit-form">
10
- <%= decidim_form_for(@form, html: { class: "form form-defaults edit_assembly assembly_form_admin" }) do |f| %>
10
+ <%= decidim_form_for(@form, data: { controller: "assembly-admin" }, html: { class: "form form-defaults edit_assembly assembly_form_admin" }) do |f| %>
11
11
  <%= render partial: "form", object: f %>
12
12
  <div class="item__edit-sticky">
13
13
  <div class="item__edit-sticky-container">
14
14
  <%= f.submit t("assemblies.edit.update", scope: "decidim.admin"), class: "button button__sm button__secondary" %>
15
-
16
- <% if allowed_to? :publish, :assembly, assembly: current_assembly %>
17
- <% if current_assembly.published? %>
18
- <%= link_to t("actions.unpublish", scope: "decidim.admin"), assembly_publish_path(current_assembly), method: :delete, class: "button button__sm button__secondary" %>
19
- <% else %>
20
- <%= link_to t("actions.publish", scope: "decidim.admin"), assembly_publish_path(current_assembly), method: :post, class: "button button__sm button__secondary" %>
21
- <% end %>
22
- <% end %>
23
15
  </div>
24
16
  </div>
25
17
  <% end %>
@@ -16,7 +16,7 @@
16
16
 
17
17
  <%= admin_filter_selector %>
18
18
 
19
- <div class="table-scroll">
19
+ <div class="table-stacked">
20
20
  <table class="table-list">
21
21
  <%= render partial: "assemblies_thead" %>
22
22
  <tbody>
@@ -30,7 +30,7 @@
30
30
 
31
31
  <% if allowed_to? :read, :assembly, trashable_deleted_resource: @assemblies %>
32
32
  <div class="mt-4">
33
- <%= link_to manage_trash_assemblies_path, class: "flex items-center underline text-secondary" do %>
33
+ <%= link_to manage_trash_assemblies_path, class: "flex items-center text-secondary" do %>
34
34
  <%= icon "delete-bin-2-line", class: "mr-2 fill-current text-secondary", role: "img" %>
35
35
  <%= t("actions.view_deleted_assemblies", scope: "decidim.admin") %>
36
36
  <span class="ml-2">
@@ -5,6 +5,10 @@ $('[data-assembly-id="<%= parent_assembly_id %>"]').after(
5
5
  locals: { view: :index }).strip.html_safe %>'
6
6
  );
7
7
 
8
+ // Dispatch the `ajax:loaded` event with the newly inserted element
9
+ const insertedElement = $('[data-assembly-id="<%= parent_assembly_id %>"]').next()[0];
10
+ document.dispatchEvent(new CustomEvent("ajax:loaded", { detail: insertedElement }));
11
+
8
12
  var component = new window.Decidim.AdminAssembliesListComponent();
9
13
 
10
14
  component.run();
@@ -1,4 +1,5 @@
1
1
  <% add_decidim_page_title(t("assemblies_deleted", scope: "decidim.admin.titles")) %>
2
+
2
3
  <div class="item_show__header">
3
4
  <h1 class="item_show__header-title">
4
5
  <%= t "assemblies.manage_trash.title", scope: "decidim.admin" %>
@@ -7,7 +8,7 @@
7
8
  <div class="card" id="assemblies">
8
9
  <%= admin_filter_selector %>
9
10
  </div>
10
- <div class="table-scroll">
11
+ <div class="table-stacked">
11
12
  <table class="table-list">
12
13
  <%= render partial: "assemblies_thead" %>
13
14
  <tbody>
@@ -8,7 +8,7 @@
8
8
 
9
9
  <div class="item__edit item__edit-1col">
10
10
  <div class="item__edit-form">
11
- <%= decidim_form_for(@form, html: { class: "form-defaults form new_assembly assembly_form_admin" }) do |f| %>
11
+ <%= decidim_form_for(@form, data: { controller: "assembly-admin" }, html: { class: "form-defaults form new_assembly assembly_form_admin" }) do |f| %>
12
12
  <%= render partial: "form", object: f %>
13
13
  <div class="item__edit-sticky">
14
14
  <div class="item__edit-sticky-container">
@@ -5,20 +5,20 @@
5
5
  <div class="row column">
6
6
  <%= form.translated :text_field, :title, autofocus: true, aria: { label: :title } %>
7
7
  </div>
8
- <div class="row column slug">
8
+ <div class="row column" data-controller="slug">
9
9
  <%= form.text_field :slug, help_text: t(".slug_help_html", url: decidim_form_slug_url(:assemblies, form.object.slug)) %>
10
10
  </div>
11
11
  <div class="card">
12
12
  <div class="card-divider">
13
- <legend><%= t("assembly_copies.new.select", scope: "decidim.admin") %></legend>
13
+ <legend><%= t("assembly_duplicates.new.select", scope: "decidim.admin") %></legend>
14
14
  </div>
15
15
  <div class="card-section">
16
16
  <div class="row">
17
17
  <div class="columns">
18
- <%= form.check_box :copy_components %>
18
+ <%= form.check_box :duplicate_components %>
19
19
  </div>
20
20
  <div class="columns">
21
- <%= form.check_box :copy_landing_page_blocks %>
21
+ <%= form.check_box :duplicate_landing_page_blocks %>
22
22
  </div>
23
23
  </div>
24
24
  </div>
@@ -0,0 +1,19 @@
1
+ <% add_decidim_page_title(t("assembly_duplicates.new.title", scope: "decidim.admin")) %>
2
+ <div class="item_show__header">
3
+ <h1 class="item_show__header-title">
4
+ <%= t("assembly_duplicates.new.title", scope: "decidim.admin") %>
5
+ </h1>
6
+ </div>
7
+
8
+ <div class="item__edit item__edit-1col">
9
+ <div class="item__edit-form">
10
+ <%= decidim_form_for(@form, url: assembly_duplicates_path(current_assembly), method: :post, html: { class: "form form-defaults duplicate_assembly" }) do |f| %>
11
+ <%= render partial: "form", object: f %>
12
+ <div class="item__edit-sticky">
13
+ <div class="item__edit-sticky-container">
14
+ <%= f.submit t("assembly_duplicates.new.duplicate", scope: "decidim.admin"), class: "button button__sm button__secondary" %>
15
+ </div>
16
+ </div>
17
+ <% end %>
18
+ </div>
19
+ </div>