decidim-debates 0.29.2 → 0.30.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/cells/decidim/debates/content_blocks/highlighted_debates/content.erb +16 -0
- data/app/cells/decidim/debates/content_blocks/highlighted_debates_cell.rb +49 -0
- data/app/cells/decidim/debates/debate_card_metadata_cell.rb +2 -11
- data/app/cells/decidim/debates/debate_g/show.erb +12 -0
- data/app/cells/decidim/debates/debate_g_cell.rb +23 -0
- data/app/cells/decidim/debates/debate_metadata_g_cell.rb +14 -0
- data/app/commands/decidim/debates/admin/create_debate.rb +25 -2
- data/app/commands/decidim/debates/admin/update_debate.rb +34 -5
- data/app/commands/decidim/debates/create_debate.rb +22 -1
- data/app/commands/decidim/debates/update_debate.rb +26 -2
- data/app/controllers/decidim/debates/admin/debates_controller.rb +17 -14
- data/app/controllers/decidim/debates/debates_controller.rb +8 -4
- data/app/forms/decidim/debates/admin/debate_form.rb +34 -26
- data/app/forms/decidim/debates/debate_form.rb +12 -29
- data/app/helpers/decidim/debates/application_helper.rb +8 -8
- data/app/models/decidim/debates/debate.rb +23 -1
- data/app/permissions/decidim/debates/admin/permissions.rb +5 -5
- data/app/presenters/decidim/debates/admin_log/debate_presenter.rb +1 -1
- data/app/presenters/decidim/debates/debate_presenter.rb +1 -1
- data/app/queries/decidim/debates/metrics/debate_followers_metric_measure.rb +2 -2
- data/app/queries/decidim/debates/metrics/debate_participants_metric_measure.rb +2 -2
- data/app/queries/decidim/debates/metrics/debates_metric_manage.rb +6 -6
- data/app/serializers/decidim/debates/download_your_data_debate_serializer.rb +6 -13
- data/app/views/decidim/debates/admin/debates/_actions.html.erb +27 -0
- data/app/views/decidim/debates/admin/debates/_debate-tr.html.erb +25 -0
- data/app/views/decidim/debates/admin/debates/_debates-thead.html.erb +9 -0
- data/app/views/decidim/debates/admin/debates/_form.html.erb +27 -6
- data/app/views/decidim/debates/admin/debates/index.html.erb +17 -55
- data/app/views/decidim/debates/admin/debates/manage_trash.html.erb +19 -0
- data/app/views/decidim/debates/debates/_debate_actions.html.erb +33 -0
- data/app/views/decidim/debates/debates/_form.html.erb +19 -6
- data/app/views/decidim/debates/debates/index.html.erb +10 -1
- data/app/views/decidim/debates/debates/show.html.erb +31 -44
- data/config/locales/ar.yml +9 -12
- data/config/locales/bg.yml +1 -15
- data/config/locales/ca.yml +79 -16
- data/config/locales/cs.yml +79 -16
- data/config/locales/de.yml +79 -16
- data/config/locales/el.yml +1 -15
- data/config/locales/en.yml +78 -15
- data/config/locales/es-MX.yml +79 -16
- data/config/locales/es-PY.yml +79 -16
- data/config/locales/es.yml +79 -16
- data/config/locales/eu.yml +79 -16
- data/config/locales/fi-plain.yml +79 -16
- data/config/locales/fi.yml +79 -16
- data/config/locales/fr-CA.yml +41 -16
- data/config/locales/fr.yml +41 -16
- data/config/locales/ga-IE.yml +0 -10
- data/config/locales/gl.yml +1 -13
- data/config/locales/hu.yml +1 -15
- data/config/locales/id-ID.yml +1 -13
- data/config/locales/is-IS.yml +0 -10
- data/config/locales/it.yml +1 -15
- data/config/locales/ja.yml +59 -16
- data/config/locales/lb.yml +0 -6
- data/config/locales/lt.yml +1 -15
- data/config/locales/lv.yml +1 -11
- data/config/locales/nl.yml +1 -14
- data/config/locales/no.yml +1 -15
- data/config/locales/pl.yml +1 -15
- data/config/locales/pt-BR.yml +1 -15
- data/config/locales/pt.yml +1 -15
- data/config/locales/ro-RO.yml +1 -15
- data/config/locales/ru.yml +0 -12
- data/config/locales/sk.yml +1 -13
- data/config/locales/sl.yml +0 -2
- data/config/locales/sv.yml +1 -15
- data/config/locales/tr-TR.yml +1 -15
- data/config/locales/uk.yml +0 -12
- data/config/locales/zh-CN.yml +1 -13
- data/config/locales/zh-TW.yml +1 -15
- data/db/migrate/20200827154116_add_commentable_counter_cache_to_debates.rb +1 -1
- data/db/migrate/20200902133452_add_cached_comment_metadata_to_debates.rb +1 -1
- data/db/migrate/20210310120652_add_followable_counter_cache_to_debates.rb +1 -1
- data/db/migrate/20240828103648_add_deleted_at_to_decidim_debates_debates.rb +8 -0
- data/db/migrate/20241017153555_add_comments_layout_to_debates.rb +7 -0
- data/decidim-debates.gemspec +1 -1
- data/lib/decidim/api/debate_type.rb +6 -8
- data/lib/decidim/api/debates_type.rb +4 -5
- data/lib/decidim/debates/admin_engine.rb +7 -0
- data/lib/decidim/debates/component.rb +19 -4
- data/lib/decidim/debates/debate_serializer.rb +83 -0
- data/lib/decidim/debates/seeds.rb +1 -8
- data/lib/decidim/debates/test/factories.rb +2 -0
- data/lib/decidim/debates/version.rb +1 -1
- data/lib/decidim/debates.rb +1 -0
- metadata +27 -15
- data/app/helpers/decidim/debates/admin/application_helper.rb +0 -13
@@ -7,6 +7,7 @@ module Decidim
|
|
7
7
|
# debate.
|
8
8
|
class Debate < Debates::ApplicationRecord
|
9
9
|
include Decidim::HasComponent
|
10
|
+
include Decidim::Taxonomizable
|
10
11
|
include Decidim::HasCategory
|
11
12
|
include Decidim::Resourceable
|
12
13
|
include Decidim::Followable
|
@@ -15,6 +16,7 @@ module Decidim
|
|
15
16
|
include Decidim::ScopableResource
|
16
17
|
include Decidim::Authorable
|
17
18
|
include Decidim::Reportable
|
19
|
+
include Decidim::HasAttachments
|
18
20
|
include Decidim::HasReference
|
19
21
|
include Decidim::Traceable
|
20
22
|
include Decidim::Loggable
|
@@ -26,6 +28,7 @@ module Decidim
|
|
26
28
|
include Decidim::Endorsable
|
27
29
|
include Decidim::Randomable
|
28
30
|
include Decidim::FilterableResource
|
31
|
+
include Decidim::SoftDeletable
|
29
32
|
|
30
33
|
belongs_to :last_comment_by, polymorphic: true, foreign_type: "last_comment_by_type", optional: true
|
31
34
|
component_manifest_name "debates"
|
@@ -42,6 +45,7 @@ module Decidim
|
|
42
45
|
index_on_create: ->(debate) { debate.visible? },
|
43
46
|
index_on_update: ->(debate) { debate.visible? })
|
44
47
|
|
48
|
+
scope :updated_at_desc, -> { order(arel_table[:updated_at].desc) }
|
45
49
|
scope :open, -> { where(closed_at: nil) }
|
46
50
|
scope :closed, -> { where.not(closed_at: nil) }
|
47
51
|
scope :authored_by, ->(author) { where(author:) }
|
@@ -136,6 +140,16 @@ module Decidim
|
|
136
140
|
self.class.name
|
137
141
|
end
|
138
142
|
|
143
|
+
# Public: Checks whether the comments are displayed in a single-column layout.
|
144
|
+
def single_column_layout?
|
145
|
+
comments_layout == "single_column"
|
146
|
+
end
|
147
|
+
|
148
|
+
# Public: Checks whether the comments are displayed in a two-column layout.
|
149
|
+
def two_columns_layout?
|
150
|
+
comments_layout == "two_columns"
|
151
|
+
end
|
152
|
+
|
139
153
|
# Public: Override Commentable concern method `users_to_notify_on_comment_created`
|
140
154
|
def users_to_notify_on_comment_created
|
141
155
|
return Decidim::User.where(id: followers).or(Decidim::User.where(id: component.participatory_space.admins)).distinct if official?
|
@@ -206,13 +220,21 @@ module Decidim
|
|
206
220
|
ransacker_i18n_multi :search_text, [:title, :description]
|
207
221
|
|
208
222
|
def self.ransackable_scopes(_auth_object = nil)
|
209
|
-
[:with_any_state, :with_any_origin, :
|
223
|
+
[:with_any_state, :with_any_origin, :with_any_taxonomies]
|
210
224
|
end
|
211
225
|
|
212
226
|
def self.ransack(params = {}, options = {})
|
213
227
|
DebateSearch.new(self, params, options)
|
214
228
|
end
|
215
229
|
|
230
|
+
def self.ransackable_attributes(_auth_object = nil)
|
231
|
+
%w(search_text title description)
|
232
|
+
end
|
233
|
+
|
234
|
+
def self.ransackable_associations(_auth_object = nil)
|
235
|
+
%w(taxonomies)
|
236
|
+
end
|
237
|
+
|
216
238
|
private
|
217
239
|
|
218
240
|
def comments_blocked?
|
@@ -8,7 +8,7 @@ module Decidim
|
|
8
8
|
# The public part needs to be implemented yet
|
9
9
|
return permission_action if permission_action.scope != :admin
|
10
10
|
|
11
|
-
|
11
|
+
can_export_debates?
|
12
12
|
|
13
13
|
return permission_action if permission_action.subject != :debate
|
14
14
|
|
@@ -17,8 +17,8 @@ module Decidim
|
|
17
17
|
allow!
|
18
18
|
when :update
|
19
19
|
toggle_allow(debate && !debate.closed? && debate.official?)
|
20
|
-
when :
|
21
|
-
toggle_allow(debate
|
20
|
+
when :close
|
21
|
+
toggle_allow(debate&.official?)
|
22
22
|
end
|
23
23
|
|
24
24
|
permission_action
|
@@ -30,8 +30,8 @@ module Decidim
|
|
30
30
|
@debate ||= context.fetch(:debate, nil)
|
31
31
|
end
|
32
32
|
|
33
|
-
def
|
34
|
-
allow! if permission_action.subject == :
|
33
|
+
def can_export_debates?
|
34
|
+
allow! if permission_action.subject == :debates && permission_action.action == :export
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
@@ -28,7 +28,7 @@ module Decidim
|
|
28
28
|
def title(links: false, all_locales: false, html_escape: false)
|
29
29
|
return unless debate
|
30
30
|
|
31
|
-
super
|
31
|
+
super(debate.title, links, html_escape, all_locales)
|
32
32
|
end
|
33
33
|
|
34
34
|
def description(strip_tags: false, extras: true, links: false, all_locales: false)
|
@@ -14,10 +14,10 @@ module Decidim
|
|
14
14
|
debates = Decidim::Debates::Debate.where(component: @resource).joins(:component)
|
15
15
|
|
16
16
|
debates_followers = Decidim::Follow.where(followable: debates).joins(:user)
|
17
|
-
.where(
|
17
|
+
.where(decidim_follows: { created_at: ..end_time })
|
18
18
|
cumulative_users = debates_followers.pluck(:decidim_user_id)
|
19
19
|
|
20
|
-
debates_followers = debates_followers.where(
|
20
|
+
debates_followers = debates_followers.where(decidim_follows: { created_at: start_time.. })
|
21
21
|
quantity_users = debates_followers.pluck(:decidim_user_id)
|
22
22
|
|
23
23
|
{
|
@@ -12,13 +12,13 @@ module Decidim
|
|
12
12
|
|
13
13
|
def calculate
|
14
14
|
debates = Decidim::Debates::Debate.where(component: @resource).joins(:component)
|
15
|
-
.where(
|
15
|
+
.where(decidim_debates_debates: { created_at: ..end_time })
|
16
16
|
.where(decidim_author_type: Decidim::UserBaseEntity.name)
|
17
17
|
.where.not(author: nil)
|
18
18
|
|
19
19
|
{
|
20
20
|
cumulative_users: debates.pluck(:decidim_author_id),
|
21
|
-
quantity_users: debates.where(
|
21
|
+
quantity_users: debates.where(decidim_debates_debates: { created_at: start_time.. }).pluck(:decidim_author_id)
|
22
22
|
}
|
23
23
|
end
|
24
24
|
end
|
@@ -13,9 +13,9 @@ module Decidim
|
|
13
13
|
next if cumulative_value.zero?
|
14
14
|
|
15
15
|
quantity_value = quantity[key] || 0
|
16
|
-
|
16
|
+
taxonomy_id, space_type, space_id = key
|
17
17
|
record = Decidim::Metric.find_or_initialize_by(day: @day.to_s, metric_type: @metric_name,
|
18
|
-
organization: @organization,
|
18
|
+
organization: @organization, decidim_taxonomy_id: taxonomy_id,
|
19
19
|
participatory_space_type: space_type, participatory_space_id: space_id)
|
20
20
|
record.assign_attributes(cumulative: cumulative_value, quantity: quantity_value)
|
21
21
|
record.save!
|
@@ -28,16 +28,16 @@ module Decidim
|
|
28
28
|
return @query if @query
|
29
29
|
|
30
30
|
@query = Decidim::Debates::Debate.where(component: visible_components_from_spaces(retrieve_participatory_spaces)).joins(:component)
|
31
|
-
.left_outer_joins(:
|
32
|
-
@query = @query.where(
|
33
|
-
@query = @query.group("
|
31
|
+
.left_outer_joins(:taxonomizations)
|
32
|
+
@query = @query.where(decidim_debates_debates: { start_time: ..end_time })
|
33
|
+
@query = @query.group("decidim_taxonomizations.taxonomy_id",
|
34
34
|
:participatory_space_type,
|
35
35
|
:participatory_space_id)
|
36
36
|
@query
|
37
37
|
end
|
38
38
|
|
39
39
|
def quantity
|
40
|
-
@quantity ||= query.where(
|
40
|
+
@quantity ||= query.where(decidim_debates_debates: { start_time: start_time.. }).count
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
@@ -2,20 +2,13 @@
|
|
2
2
|
|
3
3
|
module Decidim
|
4
4
|
module Debates
|
5
|
-
class DownloadYourDataDebateSerializer < Decidim::
|
6
|
-
# Serializes a Debate for download your data
|
5
|
+
class DownloadYourDataDebateSerializer < Decidim::Debates::DebateSerializer
|
6
|
+
# Serializes a Debate for download your data feature
|
7
|
+
#
|
8
|
+
# Remove the author information as it is the same of the user that
|
9
|
+
# requested the data
|
7
10
|
def serialize
|
8
|
-
|
9
|
-
id: resource.id,
|
10
|
-
title: resource.title,
|
11
|
-
description: resource.description,
|
12
|
-
instructions: resource.instructions,
|
13
|
-
start_time: resource.start_time,
|
14
|
-
end_time: resource.end_time,
|
15
|
-
information_updates: resource.information_updates,
|
16
|
-
reference: resource.reference,
|
17
|
-
component: resource.component.name
|
18
|
-
}
|
11
|
+
super.except!(:author)
|
19
12
|
end
|
20
13
|
end
|
21
14
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<% if view == :deleted %>
|
2
|
+
<% if allowed_to? :restore, :debate, trashable_deleted_resource: debate %>
|
3
|
+
<%= icon_link_to "refresh-line", url_for(action: :restore, id: debate, controller: "debates"), t("decidim.admin.actions.restore"), method: :patch, class: "action-icon--restore" %>
|
4
|
+
<% end %>
|
5
|
+
<% else %>
|
6
|
+
<% if allowed_to? :update, :debate, debate: debate %>
|
7
|
+
<%= icon_link_to "pencil-line", edit_debate_path(debate), t("actions.edit", scope: "decidim.debates"), class: "action-icon--edit" %>
|
8
|
+
<% else %>
|
9
|
+
<span class="action-space icon"></span>
|
10
|
+
<% end %>
|
11
|
+
|
12
|
+
<% if allowed_to? :close, :debate, debate: debate %>
|
13
|
+
<%= icon_link_to "lock-line" , edit_debate_debate_close_path(debate_id: debate.id, id: debate.id), t("actions.close", scope: "decidim.debates"), class: "action-icon--close" %>
|
14
|
+
<% else %>
|
15
|
+
<span class="action-space icon"></span>
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<%= icon_link_to "eye-line", resource_locator(debate).path, t("actions.preview", scope: "decidim.admin"), class: "action-icon--preview", target: :blank, data: { "external-link": false } %>
|
19
|
+
|
20
|
+
<%= resource_permissions_link(debate) %>
|
21
|
+
|
22
|
+
<% if allowed_to? :soft_delete, :debate, trashable_deleted_resource: debate %>
|
23
|
+
<%= icon_link_to "delete-bin-line", soft_delete_debate_path(debate), t("actions.soft_delete", scope: "decidim.admin"), method: :patch, class: "action-icon--delete", data: { confirm: t("actions.confirm_delete_debate", scope: "decidim.debates") } %>
|
24
|
+
<% else %>
|
25
|
+
<%= icon "delete-bin-line", class: "action-icon action-icon--disabled", role: "img", aria_label: t("actions.soft_delete", scope: "decidim.admin") %>
|
26
|
+
<% end %>
|
27
|
+
<% end %>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<tr data-id="<%= debate.id %>">
|
2
|
+
<td>
|
3
|
+
<% if allowed_to? :update, :debate, debate: debate %>
|
4
|
+
<%= link_to present(debate).title(html_escape: true), edit_debate_path(debate) %>
|
5
|
+
<% else %>
|
6
|
+
<%= present(debate).title(html_escape: true) %><br>
|
7
|
+
<% end %>
|
8
|
+
</td>
|
9
|
+
<td>
|
10
|
+
<% if debate.start_time %>
|
11
|
+
<%= l debate.start_time, format: :long %>
|
12
|
+
<% end %>
|
13
|
+
</td>
|
14
|
+
<td>
|
15
|
+
<% if debate.end_time %>
|
16
|
+
<%= l debate.end_time, format: :long %>
|
17
|
+
<% end %>
|
18
|
+
</td>
|
19
|
+
<td>
|
20
|
+
<%= debate.taxonomies.map { |taxonomy| decidim_sanitize_translated(taxonomy.name) }.join(", ") %>
|
21
|
+
</td>
|
22
|
+
<td class="table-list__actions">
|
23
|
+
<%= render partial: "decidim/debates/admin/debates/actions", locals: { debate:, view: } %>
|
24
|
+
</td>
|
25
|
+
</tr>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
<thead>
|
2
|
+
<tr>
|
3
|
+
<th><%= t("models.debate.fields.title", scope: "decidim.debates") %></th>
|
4
|
+
<th><%= t("models.debate.fields.start_time", scope: "decidim.debates") %></th>
|
5
|
+
<th><%= t("models.debate.fields.end_time", scope: "decidim.debates") %></th>
|
6
|
+
<th><%= t("models.debate.fields.taxonomies", scope: "decidim.debates") %></th>
|
7
|
+
<th><%= t("actions.title", scope: "decidim.debates") %></th>
|
8
|
+
</tr>
|
9
|
+
</thead>
|
@@ -34,19 +34,40 @@
|
|
34
34
|
</div>
|
35
35
|
</div>
|
36
36
|
|
37
|
-
<% if
|
38
|
-
|
39
|
-
|
40
|
-
|
37
|
+
<% if @form.taxonomy_filters&.any? %>
|
38
|
+
<% @form.taxonomy_filters.each do |filter| %>
|
39
|
+
<div class="row column">
|
40
|
+
<%= filter_taxonomy_items_select_field form, :taxonomies, filter %>
|
41
|
+
</div>
|
42
|
+
<% end %>
|
41
43
|
<% end %>
|
42
44
|
|
43
45
|
<div class="row column">
|
44
|
-
<%= form.
|
46
|
+
<%= form.check_box :comments_enabled, label: t("enabled", scope: "decidim.comments.admin.shared.availability_fields") %>
|
45
47
|
</div>
|
46
48
|
|
47
49
|
<div class="row column">
|
48
|
-
<%=
|
50
|
+
<%= label_tag :comments_layout, t(".comments_visualization") %>
|
51
|
+
<span class="help-text"><%= t(".comments_warning") %></span>
|
52
|
+
<div>
|
53
|
+
<%= form.collection_radio_buttons(:comments_layout, [[t(".single_column"), "single_column"], [t(".two_columns"), "two_columns"]], :last, :first) do |builder|
|
54
|
+
builder.label(class: "form__wrapper-checkbox-label") { builder.radio_button + builder.text }
|
55
|
+
end %>
|
56
|
+
</div>
|
49
57
|
</div>
|
58
|
+
|
59
|
+
<% if component_settings.attachments_allowed? %>
|
60
|
+
<div class="row column">
|
61
|
+
<%= form.attachment :documents,
|
62
|
+
multiple: true,
|
63
|
+
label: t("decidim.debates.admin.debates.form.add_attachments"),
|
64
|
+
button_label: t("decidim.debates.admin.debates.form.add_attachments"),
|
65
|
+
button_edit_label: t("decidim.debates.admin.debates.form.edit_attachments"),
|
66
|
+
button_class: "button button__sm button__transparent-secondary",
|
67
|
+
help_i18n_scope: "decidim.forms.file_help.file",
|
68
|
+
help_text: t("decidim.debates.admin.debates.form.attachment_legend") %>
|
69
|
+
</div>
|
70
|
+
<% end %>
|
50
71
|
</div>
|
51
72
|
</div>
|
52
73
|
</div>
|
@@ -3,69 +3,31 @@
|
|
3
3
|
<div class="item_show__header">
|
4
4
|
<h1 class="item_show__header-title">
|
5
5
|
<%= t(".title") %>
|
6
|
-
<%= export_dropdown if allowed_to? :export, :
|
6
|
+
<%= export_dropdown if allowed_to? :export, :debates %>
|
7
7
|
<%= link_to t("actions.new", scope: "decidim.debates"), new_debate_path, class: "button button__sm button__secondary" if allowed_to? :create, :debate %>
|
8
8
|
<%= render partial: "decidim/admin/components/resource_action" %>
|
9
9
|
</h1>
|
10
10
|
</div>
|
11
11
|
<div class="table-scroll">
|
12
12
|
<table class="table-list">
|
13
|
-
|
14
|
-
<tr>
|
15
|
-
<th><%= t("models.debate.fields.title", scope: "decidim.debates") %></th>
|
16
|
-
<th><%= t("models.debate.fields.start_time", scope: "decidim.debates") %></th>
|
17
|
-
<th><%= t("models.debate.fields.end_time", scope: "decidim.debates") %></th>
|
18
|
-
<%= th_resource_scope_label %>
|
19
|
-
<th><%= t("actions.title", scope: "decidim.debates") %></th>
|
20
|
-
</tr>
|
21
|
-
</thead>
|
13
|
+
<%= render partial: "debates-thead" %>
|
22
14
|
<tbody>
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
<%= link_to present(debate).title(html_escape: true), edit_debate_path(debate) %>
|
28
|
-
<% else %>
|
29
|
-
<%= present(debate).title(html_escape: true) %><br>
|
30
|
-
<% end %>
|
31
|
-
</td>
|
32
|
-
<td>
|
33
|
-
<% if debate.start_time %>
|
34
|
-
<%= l debate.start_time, format: :long %>
|
35
|
-
<% end %>
|
36
|
-
</td>
|
37
|
-
<td>
|
38
|
-
<% if debate.end_time %>
|
39
|
-
<%= l debate.end_time, format: :long %>
|
40
|
-
<% end %>
|
41
|
-
</td>
|
42
|
-
<%= td_resource_scope_for(debate.scope) %>
|
43
|
-
<td class="table-list__actions">
|
44
|
-
<% if allowed_to? :update, :debate, debate: debate %>
|
45
|
-
<%= icon_link_to "pencil-line", edit_debate_path(debate), t("actions.edit", scope: "decidim.debates"), class: "action-icon--edit" %>
|
46
|
-
<% else %>
|
47
|
-
<span class="action-space icon"></span>
|
48
|
-
<% end %>
|
49
|
-
|
50
|
-
<% if allowed_to? :close, :debate, debate: debate %>
|
51
|
-
<%= icon_link_to "lock-line" , edit_debate_debate_close_path(debate_id: debate.id, id: debate.id), t("actions.close", scope: "decidim.debates"), class: "action-icon--close" %>
|
52
|
-
<% else %>
|
53
|
-
<span class="action-space icon"></span>
|
54
|
-
<% end %>
|
55
|
-
|
56
|
-
<%= icon_link_to "eye-line", resource_locator(debate).path, t("actions.preview", scope: "decidim.admin"), class: "action-icon--preview", target: :blank, data: { "external-link": false } %>
|
57
|
-
|
58
|
-
<%= resource_permissions_link(debate) %>
|
59
|
-
|
60
|
-
<% if allowed_to? :delete, :debate, debate: debate %>
|
61
|
-
<%= icon_link_to "delete-bin-line", debate_path(debate), t("actions.destroy", scope: "decidim.debates"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.debates") } %>
|
62
|
-
<% else %>
|
63
|
-
<span class="action-space icon"></span>
|
64
|
-
<% end %>
|
65
|
-
</td>
|
66
|
-
</tr>
|
67
|
-
<% end %>
|
15
|
+
<%= render partial: "decidim/debates/admin/debates/debate-tr",
|
16
|
+
collection: debates,
|
17
|
+
as: :debate,
|
18
|
+
locals: { view: :index } %>
|
68
19
|
</tbody>
|
69
20
|
</table>
|
70
21
|
</div>
|
22
|
+
<% if allowed_to? :manage_trash, :debate, participatory_space: current_participatory_space %>
|
23
|
+
<div class="card mt-4">
|
24
|
+
<%= link_to manage_trash_debates_path, class: "flex items-center underline text-secondary" do %>
|
25
|
+
<%= icon "delete-bin-2-line", class: "mr-2 fill-current text-secondary", role: "img" %>
|
26
|
+
<%= t("actions.view_deleted_debates", scope: "decidim.debates") %>
|
27
|
+
<span class="ml-2">
|
28
|
+
<%= icon_with_tooltip("information-line", t("actions.deleted_debate_info", scope: "decidim.debates")) %>
|
29
|
+
</span>
|
30
|
+
<% end %>
|
31
|
+
</div>
|
32
|
+
<% end %>
|
71
33
|
</div>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<% add_decidim_page_title(t(".title")) %>
|
2
|
+
<div class="card">
|
3
|
+
<div class="item_show__header">
|
4
|
+
<h1 class="item_show__header-title">
|
5
|
+
<%= t(".title") %>
|
6
|
+
</h1>
|
7
|
+
</div>
|
8
|
+
<div class="table-scroll">
|
9
|
+
<table class="table-list">
|
10
|
+
<%= render partial: "debates-thead" %>
|
11
|
+
<tbody>
|
12
|
+
<%= render partial: "decidim/debates/admin/debates/debate-tr",
|
13
|
+
collection: trashable_deleted_collection,
|
14
|
+
as: :debate,
|
15
|
+
locals: { view: :deleted } %>
|
16
|
+
</tbody>
|
17
|
+
</table>
|
18
|
+
</div>
|
19
|
+
</div>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
|
2
|
+
<% if allowed_to?(:edit, :debate, debate: debate) %>
|
3
|
+
<li role="menuitem">
|
4
|
+
<%= link_to edit_debate_path(debate), class: "button button__sm button__text button__text-secondary" do %>
|
5
|
+
<span><%= t("edit_debate", scope: "decidim.debates.debates.show") %></span>
|
6
|
+
<%= icon "pencil-line" %>
|
7
|
+
<% end %>
|
8
|
+
</li>
|
9
|
+
<% elsif admin_allowed_to?(:update, :debate, debate: debate) %>
|
10
|
+
<li role="menuitem">
|
11
|
+
<%= link_to resource_locator(debate).edit, class: "button button__sm button__text button__text-secondary" do %>
|
12
|
+
<span><%= t("edit_debate", scope: "decidim.debates.debates.show") %></span>
|
13
|
+
<%= icon "pencil-line" %>
|
14
|
+
<% end %>
|
15
|
+
</li>
|
16
|
+
<% end %>
|
17
|
+
|
18
|
+
<% close_debate_action_text = (debate.closed? ? "decidim.debates.debates.show.edit_conclusions" : "decidim.debates.debates.show.close_debate" ) %>
|
19
|
+
<% if allowed_to?(:close, :debate, debate: debate) %>
|
20
|
+
<li role="menuitem">
|
21
|
+
<button type="button" data-dialog-open="close-debate" title="<%= t(close_debate_action_text) %>" aria-controls="closeDebateModal" aria-haspopup="dialog" tabindex="0" class="button button__sm button__text button__text-secondary">
|
22
|
+
<span><%= t(close_debate_action_text) %></span>
|
23
|
+
<%= icon "lock-line" %>
|
24
|
+
</button>
|
25
|
+
</li>
|
26
|
+
<% elsif admin_allowed_to?(:close, :debate, debate: debate) %>
|
27
|
+
<li role="menuitem">
|
28
|
+
<%= link_to Decidim::EngineRouter.admin_proxy(debate.component).edit_debate_debate_close_path(debate_id: debate.id, id: debate.id), class: "button button__sm button__text button__text-secondary" do %>
|
29
|
+
<span><%= t(close_debate_action_text) %></span>
|
30
|
+
<%= icon "lock-line" %>
|
31
|
+
<% end %>
|
32
|
+
</li>
|
33
|
+
<% end %>
|
@@ -2,15 +2,28 @@
|
|
2
2
|
<%= form.text_field :title %>
|
3
3
|
<%= text_editor_for_debate_description(form) %>
|
4
4
|
|
5
|
-
<% if
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
5
|
+
<% if @form.taxonomy_filters&.any? %>
|
6
|
+
<% @form.taxonomy_filters.each do |filter| %>
|
7
|
+
<div class="row column">
|
8
|
+
<%= filter_taxonomy_items_select_field form, :taxonomies, filter %>
|
9
|
+
</div>
|
10
|
+
<% end %>
|
11
11
|
<% end %>
|
12
12
|
|
13
13
|
<% if @form.id.blank? && Decidim::UserGroups::ManageableUserGroups.for(current_user).verified.any? %>
|
14
14
|
<%= form.select :user_group_id, Decidim::UserGroups::ManageableUserGroups.for(current_user).verified.map { |g| [g.name, g.id] }, prompt: current_user.name %>
|
15
15
|
<% end %>
|
16
|
+
|
17
|
+
<% if component_settings.attachments_allowed? %>
|
18
|
+
<div class="row column">
|
19
|
+
<%= form.attachment :documents,
|
20
|
+
multiple: true,
|
21
|
+
label: t("decidim.debates.admin.debates.form.add_attachments"),
|
22
|
+
button_label: t("decidim.debates.admin.debates.form.add_attachments"),
|
23
|
+
button_edit_label: t("decidim.debates.admin.debates.form.edit_attachments"),
|
24
|
+
button_class: "button button__lg button__transparent-secondary w-full",
|
25
|
+
help_i18n_scope: "decidim.forms.file_help.file",
|
26
|
+
help_text: t("decidim.debates.admin.debates.form.attachment_legend") %>
|
27
|
+
</div>
|
28
|
+
<% end %>
|
16
29
|
</div>
|
@@ -1,8 +1,17 @@
|
|
1
|
+
<% add_decidim_meta_tags(
|
2
|
+
description: translated_attribute(current_participatory_space.short_description),
|
3
|
+
title: t("decidim.components.pagination.page_title",
|
4
|
+
component_name: component_name,
|
5
|
+
current_page: paginated_debates.current_page,
|
6
|
+
total_pages: paginated_debates.total_pages ),
|
7
|
+
url: debates_url,
|
8
|
+
resource: current_component) %>
|
9
|
+
|
1
10
|
<% content_for :aside do %>
|
2
11
|
<h1 class="title-decorator"><%= component_name %></h1>
|
3
12
|
|
4
13
|
<% if current_settings.creation_enabled? && current_component.participatory_space.can_participate?(current_user) %>
|
5
|
-
<%= action_authorized_link_to :create, new_debate_path, class: "button button__xl button__secondary w-full", data: { "redirect_url" => new_debate_path } do %>
|
14
|
+
<%= action_authorized_link_to :create, new_debate_path, permissions_holder: current_component, class: "button button__xl button__secondary w-full", data: { "redirect_url" => new_debate_path } do %>
|
6
15
|
<span><%= t(".new_debate") %></span>
|
7
16
|
<%= icon "add-fill" %>
|
8
17
|
<% end %>
|
@@ -1,8 +1,8 @@
|
|
1
|
-
<% add_decidim_meta_tags(
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
<% add_decidim_meta_tags(
|
2
|
+
description: translated_attribute(debate.description),
|
3
|
+
title: present(debate).title,
|
4
|
+
url: debate_url(debate.id),
|
5
|
+
resource: debate) %>
|
6
6
|
|
7
7
|
<%
|
8
8
|
edit_link(
|
@@ -26,14 +26,24 @@ edit_link(
|
|
26
26
|
<%== present(debate).title(links: true, html_escape: true) %>
|
27
27
|
</h1>
|
28
28
|
|
29
|
-
<% debate_presenter =
|
30
|
-
|
31
|
-
|
32
|
-
<% if debate.closed? %>
|
29
|
+
<% debate_presenter = debate.presenter %>
|
30
|
+
<% if debate.closed? %>
|
31
|
+
<div class="layout-author has_status">
|
33
32
|
<span class="success label">
|
34
33
|
<%= t("debate_closed", scope: "decidim.debates.debates.show") %>
|
35
34
|
</span>
|
36
|
-
|
35
|
+
</div>
|
36
|
+
<% end %>
|
37
|
+
|
38
|
+
<div class="layout-author <%= "has_status" if debate.closed? %>">
|
39
|
+
<div class="relative flex items-center justify-center w-full">
|
40
|
+
<div class="w-10/12 flex items-center gap-4">
|
41
|
+
<%= cell "decidim/author", debate_presenter.author, skip_profile_link: true %>
|
42
|
+
</div>
|
43
|
+
<%= render "decidim/shared/resource_actions", resource: debate do %>
|
44
|
+
<%= render "decidim/debates/debates/debate_actions" %>
|
45
|
+
<% end %>
|
46
|
+
</div>
|
37
47
|
</div>
|
38
48
|
</section>
|
39
49
|
|
@@ -43,6 +53,8 @@ edit_link(
|
|
43
53
|
</div>
|
44
54
|
</section>
|
45
55
|
|
56
|
+
<%= cell "decidim/tab_panels", tab_panel_items %>
|
57
|
+
|
46
58
|
<% if debate.closed? || translated_attribute(debate.instructions).present? || translated_attribute(debate.information_updates).present? %>
|
47
59
|
<section class="layout-main__section">
|
48
60
|
<%= cell("decidim/announcement", { title: t("debate_conclusions_are", scope: "decidim.debates.debates.show", date: l(debate.closed_at, format: :decidim_short)), body: simple_format(translated_attribute(debate.conclusions)) }, callout_class: "success") if debate.closed? %>
|
@@ -53,40 +65,21 @@ edit_link(
|
|
53
65
|
</section>
|
54
66
|
<% end %>
|
55
67
|
|
68
|
+
<%= cell("decidim/tags", debate) %>
|
69
|
+
|
56
70
|
<section class="layout-main__section layout-main__buttons" data-buttons>
|
57
|
-
<% if
|
58
|
-
|
59
|
-
<%= endorsement_buttons_cell(debate) %>
|
60
|
-
<% else %>
|
61
|
-
<%= endorsers_list_cell(debate) %>
|
62
|
-
<% end %>
|
71
|
+
<% if allowed_to?(:endorse, :debate, debate: debate) %>
|
72
|
+
<%= cell("decidim/endorsement_block", debate) %>
|
63
73
|
<% end %>
|
64
|
-
<%= cell "decidim/comments_button", nil %>
|
65
74
|
|
66
|
-
|
67
|
-
|
75
|
+
<%= cell "decidim/comments_button", nil %>
|
76
|
+
<div class="ml-auto lg:ml-0">
|
77
|
+
<%= cell "decidim/share_widget", debate %>
|
68
78
|
</div>
|
69
79
|
</section>
|
70
|
-
<%= cell "decidim/endorsers_list", debate
|
80
|
+
<%= cell "decidim/endorsers_list", debate %>
|
71
81
|
|
72
82
|
<% content_for :aside do %>
|
73
|
-
<% if allowed_to?(:edit, :debate, debate: debate) || admin_allowed_to?(:update, :debate, debate: debate) || allowed_to?(:close, :debate, debate: debate) || admin_allowed_to?(:close, :debate, debate: debate) %>
|
74
|
-
<section class="layout-aside__section layout-aside__buttons">
|
75
|
-
<% if allowed_to?(:edit, :debate, debate: debate) %>
|
76
|
-
<%= link_to t("edit_debate", scope: "decidim.debates.debates.show"), edit_debate_path(debate), class: "button button__secondary button__xl w-full mb-4" %>
|
77
|
-
<% elsif admin_allowed_to?(:update, :debate, debate: debate) %>
|
78
|
-
<%= link_to t("edit_debate", scope: "decidim.debates.debates.show"), resource_locator(debate).edit, class: "button button__secondary button__xl w-full mb-4" %>
|
79
|
-
<% end %>
|
80
|
-
<% close_debate_action_text = (debate.closed? ? "decidim.debates.debates.show.edit_conclusions" : "decidim.debates.debates.show.close_debate" ) %>
|
81
|
-
<% if allowed_to?(:close, :debate, debate: debate) %>
|
82
|
-
<button type="button" data-dialog-open="close-debate" title="<%= t(close_debate_action_text) %>" aria-controls="closeDebateModal" aria-haspopup="dialog" tabindex="0" class="button button__secondary button__xl w-full mb-4">
|
83
|
-
<%= t(close_debate_action_text) %>
|
84
|
-
</button>
|
85
|
-
<% elsif admin_allowed_to?(:close, :debate, debate: debate) %>
|
86
|
-
<%= link_to t(close_debate_action_text), Decidim::EngineRouter.admin_proxy(debate.component).edit_debate_debate_close_path(debate_id: debate.id, id: debate.id), class: "button button__secondary button__xl w-full mb-4" %>
|
87
|
-
<% end %>
|
88
|
-
</section>
|
89
|
-
<% end %>
|
90
83
|
<section class="layout-aside__section">
|
91
84
|
<div class="rounded p-4 bg-background mb-4 divide-y divide-gray-3 [&>*]:py-4 first:[&>*]:pt-0 last:[&>*]:pb-0">
|
92
85
|
<div class="text-gray-2 space-y-1.5">
|
@@ -117,13 +110,7 @@ edit_link(
|
|
117
110
|
</div>
|
118
111
|
</div>
|
119
112
|
</section>
|
120
|
-
|
121
|
-
<%= follow_button_for(debate) %>
|
122
|
-
<%= cell "decidim/share_button", nil %>
|
123
|
-
<%= cell "decidim/report_button", debate %>
|
124
|
-
</section>
|
125
|
-
|
126
|
-
<% end %>
|
113
|
+
<% end %>
|
127
114
|
|
128
115
|
<% content_for :item_footer do %>
|
129
116
|
<%= comments_for debate %>
|