decidim-accountability 0.30.3 → 0.31.0.rc2
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.
- checksums.yaml +4 -4
- data/app/cells/decidim/accountability/project/milestones.erb +22 -0
- data/app/cells/decidim/accountability/project_cell.rb +9 -9
- data/app/commands/decidim/accountability/admin/{create_timeline_entry.rb → create_milestone.rb} +3 -3
- data/app/commands/decidim/accountability/admin/{update_timeline_entry.rb → update_milestone.rb} +2 -2
- data/app/controllers/decidim/accountability/admin/import_components_controller.rb +1 -1
- data/app/controllers/decidim/accountability/admin/import_results_controller.rb +1 -1
- data/app/controllers/decidim/accountability/admin/milestones_controller.rb +87 -0
- data/app/controllers/decidim/accountability/admin/results_controller.rb +2 -2
- data/app/controllers/decidim/accountability/admin/statuses_controller.rb +2 -2
- data/app/controllers/decidim/accountability/results_controller.rb +20 -4
- data/app/controllers/decidim/accountability/versions_controller.rb +1 -1
- data/app/forms/decidim/accountability/admin/{timeline_entry_form.rb → milestone_form.rb} +2 -2
- data/app/models/decidim/accountability/{timeline_entry.rb → milestone.rb} +4 -4
- data/app/models/decidim/accountability/result.rb +2 -2
- data/app/packs/entrypoints/decidim_accountability.js +0 -2
- data/app/packs/entrypoints/decidim_accountability_admin_imports.js +1 -1
- data/app/packs/src/decidim/accountability/admin/index.js +4 -1
- data/app/packs/src/decidim/accountability/admin/result_form.js +1 -1
- data/app/packs/src/decidim/accountability/controllers/.gitkeep +0 -0
- data/app/packs/stylesheets/accountability.scss +35 -5
- data/app/permissions/decidim/accountability/admin/permissions.rb +3 -3
- data/app/presenters/decidim/accountability/admin_log/{timeline_entry_presenter.rb → milestone_presenter.rb} +4 -4
- data/app/presenters/decidim/accountability/result_presenter.rb +2 -5
- data/app/views/decidim/accountability/admin/import_components/_form.html.erb +3 -3
- data/app/views/decidim/accountability/admin/import_results/new.html.erb +1 -1
- data/app/views/decidim/accountability/admin/{timeline_entries → milestones}/edit.html.erb +1 -1
- data/app/views/decidim/accountability/admin/milestones/index.html.erb +66 -0
- data/app/views/decidim/accountability/admin/{timeline_entries → milestones}/new.html.erb +1 -1
- data/app/views/decidim/accountability/admin/results/_actions.html.erb +102 -29
- data/app/views/decidim/accountability/admin/results/_form.html.erb +1 -1
- data/app/views/decidim/accountability/admin/results/_result-tr.html.erb +7 -7
- data/app/views/decidim/accountability/admin/results/bulk_actions/_dropdown.html.erb +25 -29
- data/app/views/decidim/accountability/admin/results/index.html.erb +12 -12
- data/app/views/decidim/accountability/admin/results/manage_trash.html.erb +2 -1
- data/app/views/decidim/accountability/admin/shared/_subnav.html.erb +1 -1
- data/app/views/decidim/accountability/admin/statuses/index.html.erb +40 -12
- data/app/views/decidim/accountability/results/_filters.html.erb +4 -0
- data/app/views/decidim/accountability/results/_home_aside.html.erb +12 -0
- data/app/views/decidim/accountability/results/_home_taxonomies.html.erb +8 -31
- data/app/views/decidim/accountability/results/_one_level_taxonomies.html.erb +17 -0
- data/app/views/decidim/accountability/results/_projects_aside.html.erb +1 -3
- data/app/views/decidim/accountability/results/_root_taxonomies_selector.html.erb +17 -0
- data/app/views/decidim/accountability/results/_two_levels_taxonomies.html.erb +30 -0
- data/app/views/decidim/accountability/results/home.html.erb +11 -25
- data/config/assets.rb +2 -2
- data/config/locales/ar.yml +0 -42
- data/config/locales/bg.yml +0 -41
- data/config/locales/bs-BA.yml +4 -25
- data/config/locales/ca-IT.yml +42 -44
- data/config/locales/ca.yml +42 -44
- data/config/locales/cs.yml +42 -44
- data/config/locales/da.yml +0 -21
- data/config/locales/de.yml +42 -44
- data/config/locales/el.yml +0 -37
- data/config/locales/en.yml +42 -44
- data/config/locales/es-MX.yml +42 -44
- data/config/locales/es-PY.yml +42 -44
- data/config/locales/es.yml +42 -44
- data/config/locales/eu.yml +43 -45
- data/config/locales/fi-plain.yml +42 -44
- data/config/locales/fi.yml +42 -44
- data/config/locales/fr-CA.yml +42 -44
- data/config/locales/fr.yml +42 -44
- data/config/locales/ga-IE.yml +0 -11
- data/config/locales/gl.yml +0 -25
- data/config/locales/gn-PY.yml +0 -2
- data/config/locales/he-IL.yml +0 -41
- data/config/locales/hu.yml +0 -41
- data/config/locales/id-ID.yml +0 -23
- data/config/locales/is-IS.yml +0 -24
- data/config/locales/it.yml +40 -43
- data/config/locales/ja.yml +42 -44
- data/config/locales/kaa.yml +0 -5
- data/config/locales/ko.yml +0 -15
- data/config/locales/lb.yml +0 -25
- data/config/locales/lt.yml +0 -37
- data/config/locales/lv.yml +0 -23
- data/config/locales/nl.yml +0 -29
- data/config/locales/no.yml +0 -29
- data/config/locales/pl.yml +0 -41
- data/config/locales/pt-BR.yml +39 -43
- data/config/locales/pt.yml +0 -26
- data/config/locales/ro-RO.yml +6 -41
- data/config/locales/ru.yml +0 -23
- data/config/locales/si-LK.yml +0 -12
- data/config/locales/sk.yml +0 -23
- data/config/locales/sl.yml +0 -18
- data/config/locales/sq-AL.yml +0 -41
- data/config/locales/sr-CS.yml +0 -23
- data/config/locales/sv.yml +42 -44
- data/config/locales/th-TH.yml +0 -27
- data/config/locales/tr-TR.yml +0 -43
- data/config/locales/uk.yml +0 -21
- data/config/locales/zh-CN.yml +0 -23
- data/config/locales/zh-TW.yml +0 -37
- data/db/migrate/20250606155946_rename_timeline_table_to_milestone.rb +11 -0
- data/lib/decidim/accountability/admin_engine.rb +1 -1
- data/lib/decidim/accountability/api.rb +1 -1
- data/lib/decidim/accountability/component.rb +18 -1
- data/lib/decidim/accountability/engine.rb +5 -13
- data/lib/decidim/accountability/seeds.rb +9 -9
- data/lib/decidim/accountability/test/factories.rb +3 -3
- data/lib/decidim/accountability/version.rb +1 -1
- data/lib/decidim/accountability.rb +0 -7
- data/lib/decidim/api/{timeline_entry_type.rb → milestone_type.rb} +8 -7
- data/lib/decidim/api/result_type.rb +17 -3
- data/lib/decidim/api/status_type.rb +1 -0
- metadata +38 -34
- data/app/cells/decidim/accountability/project/timeline.erb +0 -22
- data/app/controllers/decidim/accountability/admin/timeline_entries_controller.rb +0 -87
- data/app/packs/src/decidim/accountability/index.js +0 -11
- data/app/packs/src/decidim/accountability/version_diff.js +0 -33
- data/app/queries/decidim/accountability/metrics/results_metric_manage.rb +0 -56
- data/app/views/decidim/accountability/admin/timeline_entries/index.html.erb +0 -42
- /data/app/views/decidim/accountability/admin/{timeline_entries → milestones}/_form.html.erb +0 -0
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
<ol class="accountability__project-timeline">
|
|
2
|
-
<% timeline_entries.each_with_index do |timeline_entry, i| %>
|
|
3
|
-
<li class="accountability__project-timeline-entry">
|
|
4
|
-
<div class="accountability__project-timeline-entry-number">
|
|
5
|
-
<span><%= i + 1 %></span>
|
|
6
|
-
</div>
|
|
7
|
-
<div class="accountability__project-timeline-entry-attributes">
|
|
8
|
-
<h3>
|
|
9
|
-
<%= decidim_sanitize_translated timeline_entry.title %>
|
|
10
|
-
</h3>
|
|
11
|
-
<div>
|
|
12
|
-
<%= l timeline_entry.entry_date, format: :decidim_short %>
|
|
13
|
-
</div>
|
|
14
|
-
<% if translated_attribute(timeline_entry.description).present? %>
|
|
15
|
-
<div>
|
|
16
|
-
<%= decidim_sanitize_translated(timeline_entry.description) %>
|
|
17
|
-
</div>
|
|
18
|
-
<% end %>
|
|
19
|
-
</div>
|
|
20
|
-
</li>
|
|
21
|
-
<% end %>
|
|
22
|
-
</ol>
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Decidim
|
|
4
|
-
module Accountability
|
|
5
|
-
module Admin
|
|
6
|
-
# This controller allows an admin to manage timeline entries for a Result
|
|
7
|
-
class TimelineEntriesController < Admin::ApplicationController
|
|
8
|
-
helper_method :result, :timeline_entries
|
|
9
|
-
|
|
10
|
-
def new
|
|
11
|
-
enforce_permission_to :create, :timeline_entry
|
|
12
|
-
|
|
13
|
-
@form = form(TimelineEntryForm).instance
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def create
|
|
17
|
-
enforce_permission_to :create, :timeline_entry
|
|
18
|
-
|
|
19
|
-
@form = form(TimelineEntryForm).from_params(params)
|
|
20
|
-
@form.decidim_accountability_result_id = params[:result_id]
|
|
21
|
-
|
|
22
|
-
CreateTimelineEntry.call(@form) do
|
|
23
|
-
on(:ok) do
|
|
24
|
-
flash[:notice] = I18n.t("timeline_entries.create.success", scope: "decidim.accountability.admin")
|
|
25
|
-
redirect_to result_timeline_entries_path(params[:result_id])
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
on(:invalid) do
|
|
29
|
-
flash.now[:alert] = I18n.t("timeline_entries.create.invalid", scope: "decidim.accountability.admin")
|
|
30
|
-
render action: "new"
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def edit
|
|
36
|
-
enforce_permission_to(:update, :timeline_entry, timeline_entry:)
|
|
37
|
-
|
|
38
|
-
@form = form(TimelineEntryForm).from_model(timeline_entry)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def update
|
|
42
|
-
enforce_permission_to(:update, :timeline_entry, timeline_entry:)
|
|
43
|
-
|
|
44
|
-
@form = form(TimelineEntryForm).from_params(params)
|
|
45
|
-
|
|
46
|
-
UpdateTimelineEntry.call(@form, timeline_entry) do
|
|
47
|
-
on(:ok) do
|
|
48
|
-
flash[:notice] = I18n.t("timeline_entries.update.success", scope: "decidim.accountability.admin")
|
|
49
|
-
redirect_to result_timeline_entries_path(params[:result_id])
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
on(:invalid) do
|
|
53
|
-
flash.now[:alert] = I18n.t("timeline_entries.update.invalid", scope: "decidim.accountability.admin")
|
|
54
|
-
render action: "edit"
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def destroy
|
|
60
|
-
enforce_permission_to(:destroy, :timeline_entry, timeline_entry:)
|
|
61
|
-
|
|
62
|
-
Decidim::Commands::DestroyResource.call(timeline_entry, current_user) do
|
|
63
|
-
on(:ok) do
|
|
64
|
-
flash[:notice] = I18n.t("timeline_entries.destroy.success", scope: "decidim.accountability.admin")
|
|
65
|
-
|
|
66
|
-
redirect_to result_timeline_entries_path(params[:result_id])
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
private
|
|
72
|
-
|
|
73
|
-
def timeline_entries
|
|
74
|
-
@timeline_entries ||= result.timeline_entries.page(params[:page]).per(15)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def timeline_entry
|
|
78
|
-
@timeline_entry ||= timeline_entries.find(params[:id])
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def result
|
|
82
|
-
@result ||= Result.where(component: current_component).find(params[:result_id])
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import "diff"
|
|
2
|
-
import "src/decidim/accountability/version_diff"
|
|
3
|
-
|
|
4
|
-
$(() => {
|
|
5
|
-
// Show category list on click when we are on a small screen
|
|
6
|
-
if ($(window).width() < 768) {
|
|
7
|
-
$(".category--section").click((event) => {
|
|
8
|
-
$(event.currentTarget).next(".category--elements").toggleClass("active");
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
})
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/* global JsDiff */
|
|
2
|
-
|
|
3
|
-
$(() => {
|
|
4
|
-
$(".diff-i18n_html, .diff-i18n").each(function(_index, element) {
|
|
5
|
-
const diffElement = $(element);
|
|
6
|
-
const valueElement = diffElement.find(".diff__value");
|
|
7
|
-
const oldValue = valueElement.data("old-value").replace(/</g, "<").replace(/>/g, ">");
|
|
8
|
-
const newValue = valueElement.data("new-value").replace(/</g, "<").replace(/>/g, ">");
|
|
9
|
-
|
|
10
|
-
const diff = JsDiff.diffChars(oldValue, newValue);
|
|
11
|
-
let outputHTML = "";
|
|
12
|
-
|
|
13
|
-
diff.forEach(({added, removed, value}) => {
|
|
14
|
-
let color = "";
|
|
15
|
-
|
|
16
|
-
if (added) {
|
|
17
|
-
color = "#89ffaa";
|
|
18
|
-
} else if (removed) {
|
|
19
|
-
color = "red";
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
if (added || removed) {
|
|
23
|
-
outputHTML += `<span style="background-color: ${color}">${value}</span>`;
|
|
24
|
-
} else {
|
|
25
|
-
outputHTML += value;
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
outputHTML = outputHTML.replace(/\n/g, "<br><br>");
|
|
30
|
-
|
|
31
|
-
valueElement.html(outputHTML);
|
|
32
|
-
});
|
|
33
|
-
})
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Decidim
|
|
4
|
-
module Accountability
|
|
5
|
-
module Metrics
|
|
6
|
-
class ResultsMetricManage < Decidim::MetricManage
|
|
7
|
-
def metric_name
|
|
8
|
-
"results"
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def save
|
|
12
|
-
cumulative.each do |key, cumulative_value|
|
|
13
|
-
next if cumulative_value.zero?
|
|
14
|
-
|
|
15
|
-
quantity_value = quantity[key] || 0
|
|
16
|
-
taxonomy_id, space_type, space_id, related_object_id = key
|
|
17
|
-
record = Decidim::Metric.find_or_initialize_by(day: @day.to_s,
|
|
18
|
-
metric_type: @metric_name,
|
|
19
|
-
organization: @organization,
|
|
20
|
-
decidim_taxonomy_id: taxonomy_id,
|
|
21
|
-
participatory_space_type: space_type,
|
|
22
|
-
participatory_space_id: space_id,
|
|
23
|
-
related_object_type: "Decidim::Component",
|
|
24
|
-
related_object_id:)
|
|
25
|
-
record.assign_attributes(cumulative: cumulative_value, quantity: quantity_value)
|
|
26
|
-
record.save!
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
|
|
32
|
-
def query
|
|
33
|
-
return @query if @query
|
|
34
|
-
|
|
35
|
-
spaces = Decidim.participatory_space_manifests.flat_map do |manifest|
|
|
36
|
-
manifest.participatory_spaces.call(@organization).public_spaces
|
|
37
|
-
end
|
|
38
|
-
@query = Decidim::Accountability::Result.select(:decidim_component_id)
|
|
39
|
-
.where(component: visible_components_from_spaces(spaces))
|
|
40
|
-
.joins(:component)
|
|
41
|
-
.left_outer_joins(:taxonomizations)
|
|
42
|
-
@query = @query.where(decidim_accountability_results: { created_at: ..end_time })
|
|
43
|
-
@query = @query.group("decidim_taxonomizations.taxonomy_id",
|
|
44
|
-
:participatory_space_type,
|
|
45
|
-
:participatory_space_id,
|
|
46
|
-
:decidim_component_id)
|
|
47
|
-
@query
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def quantity
|
|
51
|
-
@quantity ||= query.where(decidim_accountability_results: { created_at: start_time.. }).count
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
<% add_decidim_page_title(t(".title")) %>
|
|
2
|
-
<% add_decidim_page_title(translated_attribute(result.title)) %>
|
|
3
|
-
<div class="card">
|
|
4
|
-
<div class="item_show__header">
|
|
5
|
-
<h1 class="item_show__header-title">
|
|
6
|
-
<div>
|
|
7
|
-
<%= link_to "#{translated_attribute(result.title)} > ", edit_result_path(result) %>
|
|
8
|
-
<%= t(".title") %>
|
|
9
|
-
</div>
|
|
10
|
-
<%= link_to t("actions.new_timeline_entry", scope: "decidim.accountability"), new_result_timeline_entry_path(result), class: "button button__sm button__secondary button--title" if allowed_to? :create, :timeline_entry %>
|
|
11
|
-
</h1>
|
|
12
|
-
</div>
|
|
13
|
-
<div class="table-scroll">
|
|
14
|
-
<table class="table-list">
|
|
15
|
-
<thead>
|
|
16
|
-
<tr>
|
|
17
|
-
<th><%= t("models.timeline_entry.fields.entry_date", scope: "decidim.accountability") %></th>
|
|
18
|
-
<th><%= t("models.timeline_entry.fields.title", scope: "decidim.accountability") %></th>
|
|
19
|
-
<th><%= t("actions.title", scope: "decidim.accountability") %></th>
|
|
20
|
-
</tr>
|
|
21
|
-
</thead>
|
|
22
|
-
<tbody>
|
|
23
|
-
<% timeline_entries.each do |timeline_entry| %>
|
|
24
|
-
<tr data-id="<%= timeline_entry.id %>">
|
|
25
|
-
<td><%= l timeline_entry.entry_date, format: :decidim_short %><br></td>
|
|
26
|
-
<td><%= translated_attribute(timeline_entry.title) %></td>
|
|
27
|
-
<td class="table-list__actions">
|
|
28
|
-
<% if allowed_to? :update, :timeline_entry, timeline_entry: timeline_entry %>
|
|
29
|
-
<%= icon_link_to "pencil-line", edit_result_timeline_entry_path(timeline_entry.result, timeline_entry), t("actions.edit", scope: "decidim.accountability"), class: "action-icon--edit" %>
|
|
30
|
-
<% end %>
|
|
31
|
-
|
|
32
|
-
<% if allowed_to? :destroy, :timeline_entry, timeline_entry: timeline_entry %>
|
|
33
|
-
<%= icon_link_to "delete-bin-line", result_timeline_entry_path(timeline_entry.result, timeline_entry), t("actions.destroy", scope: "decidim.accountability"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.accountability") } %>
|
|
34
|
-
<% end %>
|
|
35
|
-
</td>
|
|
36
|
-
</tr>
|
|
37
|
-
<% end %>
|
|
38
|
-
</tbody>
|
|
39
|
-
</table>
|
|
40
|
-
</div>
|
|
41
|
-
</div>
|
|
42
|
-
<%= decidim_paginate timeline_entries %>
|
|
File without changes
|