decidim-budgets 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.
- checksums.yaml +4 -4
- data/app/cells/decidim/budgets/budget_list_item/show.erb +19 -9
- data/app/cells/decidim/budgets/budget_list_item/vote_action.erb +2 -2
- data/app/cells/decidim/budgets/budget_list_item_cell.rb +44 -10
- data/app/cells/decidim/budgets/budgets_list/card_list.erb +0 -2
- data/app/cells/decidim/budgets/budgets_list/main_list.erb +2 -2
- data/app/cells/decidim/budgets/budgets_list/show.erb +3 -3
- data/app/cells/decidim/budgets/budgets_list/voted.erb +12 -10
- data/app/cells/decidim/budgets/budgets_list_cell.rb +22 -0
- data/app/cells/decidim/budgets/project_budget_amount_cell.rb +14 -0
- data/app/cells/decidim/budgets/project_l/extra_data.erb +8 -2
- data/app/cells/decidim/budgets/project_l/metadata.erb +1 -1
- data/app/cells/decidim/budgets/project_l_cell.rb +2 -4
- data/app/cells/decidim/budgets/project_metadata_cell.rb +11 -19
- data/app/cells/decidim/budgets/project_selected_status_cell.rb +1 -11
- data/app/cells/decidim/budgets/project_vote_button/show.erb +5 -5
- data/app/cells/decidim/budgets/project_vote_button_cell.rb +14 -9
- data/app/cells/decidim/budgets/project_votes_count_cell.rb +8 -14
- data/app/commands/decidim/budgets/cancel_order.rb +5 -0
- data/app/controllers/decidim/budgets/admin/budgets_controller.rb +2 -2
- data/app/controllers/decidim/budgets/admin/projects_controller.rb +2 -2
- data/app/controllers/decidim/budgets/admin/proposals_imports_controller.rb +1 -1
- data/app/controllers/decidim/budgets/application_controller.rb +13 -1
- data/app/controllers/decidim/budgets/budgets_controller.rb +1 -3
- data/app/controllers/decidim/budgets/line_items_controller.rb +19 -0
- data/app/controllers/decidim/budgets/orders_controller.rb +20 -0
- data/app/controllers/decidim/budgets/projects_controller.rb +3 -1
- data/app/forms/decidim/budgets/admin/component_form.rb +4 -30
- data/app/helpers/decidim/budgets/application_helper.rb +1 -0
- data/app/helpers/decidim/budgets/projects_helper.rb +11 -7
- data/app/models/decidim/budgets/order.rb +2 -2
- data/app/packs/entrypoints/decidim_budgets.js +1 -0
- data/app/packs/src/decidim/budgets/admin/projects.js +2 -2
- data/app/packs/src/decidim/budgets/budgetSummaryBackdrop.js +41 -0
- data/app/packs/src/decidim/budgets/exit_handler.js +7 -2
- data/app/packs/src/decidim/budgets/progressFixed.js +1 -1
- data/app/packs/src/decidim/budgets/projects.js +1 -1
- data/app/packs/stylesheets/budgets.scss +57 -37
- data/app/permissions/decidim/budgets/permissions.rb +17 -13
- data/app/presenters/decidim/budgets/project_presenter.rb +2 -4
- data/app/views/decidim/budgets/admin/budgets/_actions.html.erb +65 -18
- data/app/views/decidim/budgets/admin/budgets/_budget-tr.html.erb +4 -4
- data/app/views/decidim/budgets/admin/budgets/_form.html.erb +1 -1
- data/app/views/decidim/budgets/admin/budgets/index.html.erb +14 -11
- data/app/views/decidim/budgets/admin/budgets/manage_trash.html.erb +2 -1
- data/app/views/decidim/budgets/admin/projects/_actions.html.erb +66 -22
- data/app/views/decidim/budgets/admin/projects/_bulk-actions.html.erb +15 -17
- data/app/views/decidim/budgets/admin/projects/_form.html.erb +1 -1
- data/app/views/decidim/budgets/admin/projects/_project-tr.html.erb +7 -7
- data/app/views/decidim/budgets/admin/projects/bulk_actions/_dropdown.html.erb +23 -30
- data/app/views/decidim/budgets/admin/projects/index.html.erb +2 -2
- data/app/views/decidim/budgets/admin/projects/manage_trash.html.erb +2 -1
- data/app/views/decidim/budgets/line_items/update_budget.js.erb +6 -5
- data/app/views/decidim/budgets/orders/status.html.erb +30 -30
- data/app/views/decidim/budgets/projects/_addition_selector.html.erb +1 -1
- data/app/views/decidim/budgets/projects/_budget_summary.html.erb +5 -1
- data/app/views/decidim/budgets/projects/_exit_modal.html.erb +1 -1
- data/app/views/decidim/budgets/projects/_project.html.erb +5 -1
- data/app/views/decidim/budgets/projects/_project_budget_button.html.erb +1 -9
- data/app/views/decidim/budgets/projects/_projects.html.erb +3 -1
- data/app/views/decidim/budgets/projects/index.html.erb +28 -6
- data/app/views/decidim/budgets/projects/order_progress_summary/_content.html.erb +30 -0
- data/app/views/decidim/budgets/projects/order_progress_summary/_content_responsive.html.erb +56 -0
- data/app/views/decidim/budgets/projects/order_progress_summary/_progress_box.html.erb +43 -0
- data/app/views/decidim/budgets/projects/order_progress_summary/_progress_box_buttons.html.erb +12 -0
- data/app/views/decidim/budgets/projects/order_progress_summary/_progress_box_sticky.html.erb +25 -0
- data/app/views/decidim/budgets/projects/show.html.erb +30 -17
- data/config/assets.rb +2 -2
- data/config/locales/ar.yml +0 -8
- data/config/locales/bg.yml +2 -18
- data/config/locales/ca-IT.yml +26 -14
- data/config/locales/ca.yml +26 -14
- data/config/locales/cs.yml +10 -18
- data/config/locales/de.yml +26 -14
- data/config/locales/el.yml +0 -7
- data/config/locales/en.yml +26 -14
- data/config/locales/es-MX.yml +26 -14
- data/config/locales/es-PY.yml +26 -14
- data/config/locales/es.yml +25 -13
- data/config/locales/eu.yml +26 -14
- data/config/locales/fi-plain.yml +26 -14
- data/config/locales/fi.yml +26 -14
- data/config/locales/fr-CA.yml +26 -14
- data/config/locales/fr.yml +26 -14
- data/config/locales/ga-IE.yml +0 -5
- data/config/locales/gl.yml +0 -7
- data/config/locales/hu.yml +2 -18
- data/config/locales/id-ID.yml +0 -7
- data/config/locales/is-IS.yml +0 -6
- data/config/locales/it.yml +0 -7
- data/config/locales/ja.yml +26 -14
- data/config/locales/kaa.yml +0 -1
- data/config/locales/ko.yml +0 -5
- data/config/locales/lb.yml +0 -7
- data/config/locales/lt.yml +2 -18
- data/config/locales/lv.yml +0 -7
- data/config/locales/nl.yml +0 -7
- data/config/locales/no.yml +0 -7
- data/config/locales/pl.yml +2 -18
- data/config/locales/pt-BR.yml +2 -18
- data/config/locales/pt.yml +0 -7
- data/config/locales/ro-RO.yml +7 -7
- data/config/locales/ru.yml +0 -7
- data/config/locales/sk.yml +0 -7
- data/config/locales/sq-AL.yml +0 -3
- data/config/locales/sv.yml +25 -13
- data/config/locales/tr-TR.yml +0 -8
- data/config/locales/uk.yml +0 -7
- data/config/locales/zh-CN.yml +0 -8
- data/config/locales/zh-TW.yml +0 -7
- data/db/migrate/20250912110212_move_voting_rules_to_radio_buttons.rb +22 -0
- data/lib/decidim/api/budget_type.rb +7 -0
- data/lib/decidim/api/project_type.rb +29 -1
- data/lib/decidim/budgets/budget_order_pdf.rb +73 -0
- data/lib/decidim/budgets/component.rb +26 -13
- data/lib/decidim/budgets/engine.rb +3 -11
- data/lib/decidim/budgets/seeds.rb +16 -5
- data/lib/decidim/budgets/test/factories.rb +3 -18
- data/lib/decidim/budgets/version.rb +1 -1
- data/lib/decidim/budgets/workflows/base.rb +0 -14
- data/lib/decidim/budgets.rb +1 -5
- metadata +22 -16
- data/app/queries/decidim/budgets/metrics/budget_followers_metric_measure.rb +0 -32
- data/app/queries/decidim/budgets/metrics/budget_participants_metric_measure.rb +0 -27
- data/app/views/decidim/budgets/projects/_order_progress_summary_content.html.erb +0 -122
- /data/app/views/decidim/budgets/projects/{_order_progress_progressbar_marks_right.html.erb → order_progress_summary/_progressbar_marks_right.html.erb} +0 -0
@@ -1,11 +1,3 @@
|
|
1
1
|
<div id="project-<%= project.id %>-budget-button">
|
2
|
-
|
3
|
-
<button class="button button__lg w-full button__secondary"
|
4
|
-
data-dialog-open="loginModal"
|
5
|
-
aria-label="<%= t(".added_descriptive", resource_name: translated_attribute(project.title)) %>">
|
6
|
-
<%= t("add", scope: "decidim.budgets.projects.project_budget_button") %>
|
7
|
-
</button>
|
8
|
-
<% else %>
|
9
|
-
<%= cell("decidim/budgets/project_vote_button", project, project_item: true) %>
|
10
|
-
<% end %>
|
2
|
+
<%= cell("decidim/budgets/project_vote_button", project, project_item: true, button_extra_classes: "w-full") %>
|
11
3
|
</div>
|
@@ -1,3 +1,9 @@
|
|
1
|
+
<% if @focus_mode %>
|
2
|
+
<% content_for :focus_mode, true %>
|
3
|
+
<% content_for :focus_mode_return_path, budgets_path %>
|
4
|
+
<% content_for :focus_mode_return_string, t("decidim.budgets.projects.back_to_budgets") %>
|
5
|
+
<% end %>
|
6
|
+
|
1
7
|
<% add_decidim_meta_tags(
|
2
8
|
description: translated_attribute(budget.description),
|
3
9
|
title: t("decidim.components.pagination.page_title",
|
@@ -10,7 +16,10 @@
|
|
10
16
|
<%= append_javascript_pack_tag "decidim_budgets" %>
|
11
17
|
<%= append_stylesheet_pack_tag "decidim_budgets" %>
|
12
18
|
|
13
|
-
|
19
|
+
<% if @focus_mode %>
|
20
|
+
<%= render partial: "budget_summary", locals: { responsive: true, focus_mode_origin: "index" } %>
|
21
|
+
<% end %>
|
22
|
+
|
14
23
|
<%= cell("decidim/budgets/budget_information_modal", budget) %>
|
15
24
|
|
16
25
|
<% content_for :aside do %>
|
@@ -27,9 +36,9 @@
|
|
27
36
|
<%= render partial: "budget_excess" %>
|
28
37
|
<%= render partial: "budget_confirm" %>
|
29
38
|
|
30
|
-
<%
|
39
|
+
<% if @focus_mode && !voting_finished? %>
|
31
40
|
<div class="budget-summary__container">
|
32
|
-
<%= render partial: "budget_summary", locals: {
|
41
|
+
<%= render partial: "budget_summary", locals: { responsive: false, focus_mode_origin: "index" } %>
|
33
42
|
</div>
|
34
43
|
<% end %>
|
35
44
|
|
@@ -43,9 +52,19 @@
|
|
43
52
|
|
44
53
|
<% unless voting_finished? %>
|
45
54
|
<section class="layout-main__section">
|
46
|
-
<
|
47
|
-
|
48
|
-
|
55
|
+
<div class="flex justify-between items-center mb-4">
|
56
|
+
<div class="flex items-center gap-2">
|
57
|
+
<span class="text-xl font-semibold">
|
58
|
+
<%= t("select_projects", scope: "decidim.budgets.projects") %>
|
59
|
+
</span>
|
60
|
+
|
61
|
+
<% if cell("decidim/budgets/budget_information_modal", budget).more_information.present? %>
|
62
|
+
<button type="button" data-dialog-open="budget-modal-info" aria-haspopup="dialog" tabindex="0" class="button button__icon button__text-secondary lg:hidden">
|
63
|
+
<%= icon "question-line" %>
|
64
|
+
</button>
|
65
|
+
<% end %>
|
66
|
+
</div>
|
67
|
+
</div>
|
49
68
|
</section>
|
50
69
|
<% end %>
|
51
70
|
|
@@ -56,4 +75,7 @@
|
|
56
75
|
<%= cell("decidim/announcement", t("empty", scope: "decidim.budgets.projects")) %>
|
57
76
|
<% end %>
|
58
77
|
|
78
|
+
<% if current_user&.ephemeral? %>
|
79
|
+
<div class="h-40 bg-transparent"></div>
|
80
|
+
<% end %>
|
59
81
|
<% end %>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<div data-order-progress-responsive="false" class="budget-summary__content">
|
2
|
+
<%= render partial: "decidim/budgets/projects/order_progress_summary/progress_box" %>
|
3
|
+
<%= render partial: "decidim/budgets/projects/order_progress_summary/progress_box_buttons" %>
|
4
|
+
|
5
|
+
<div class="budget-summary__button-modal">
|
6
|
+
<button type="button" data-dialog-open="budget-modal-info" aria-haspopup="dialog" tabindex="0" class="button button__text button__xs underline font-bold">
|
7
|
+
<%= t("more_information", scope: "decidim.budgets.budget_information_modal") %>
|
8
|
+
</button>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<div class="w-screen max-w-screen progressbox-fixed-wrapper" data-progressbox-fixed>
|
12
|
+
<div class="gap-0 layout-item py-4 items-center budget-summary__progressbar">
|
13
|
+
<%= render partial: "decidim/budgets/projects/order_progress_summary/progress_box_sticky" %>
|
14
|
+
|
15
|
+
<div class="layout-item__aside budget-summary__progressbox-buttons hidden lg:block">
|
16
|
+
<% if !current_order_checked_out? && voting_open? %>
|
17
|
+
<button class="button button__secondary button__lg mt-2 md:mt-0 w-full" data-dialog-open="budget-confirm" <%= budget_confirm_disabled_attr %>>
|
18
|
+
<%= t("vote", scope: "decidim.budgets.projects.budget_summary") %>
|
19
|
+
</button>
|
20
|
+
<% end %>
|
21
|
+
<% if current_order_checked_out? %>
|
22
|
+
<%= link_to budget_order_path(return_to: "budget"), method: :delete, class: "button button__lg button__secondary cancel-order w-full mt-2 md:mt-0", data: { confirm: t("are_you_sure", scope: "decidim.budgets.projects.budget_confirm") } do %>
|
23
|
+
<span><%= t("cancel_order", scope: "decidim.budgets.projects.budget_summary") %></span>
|
24
|
+
<%= icon "delete-bin-line" %>
|
25
|
+
<% end %>
|
26
|
+
<% end %>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
</div>
|
@@ -0,0 +1,56 @@
|
|
1
|
+
<% focus_mode_index = local_assigns[:focus_mode_origin] == "index" %>
|
2
|
+
<% focus_mode_show = local_assigns[:focus_mode_origin] == "show" %>
|
3
|
+
<% start_voting_param = params[:start_voting] %>
|
4
|
+
|
5
|
+
<% show_vote_button = !current_order_checked_out? && voting_open? && current_order_can_be_checked_out? %>
|
6
|
+
<% show_hint = !show_vote_button && start_voting_param.present? %>
|
7
|
+
|
8
|
+
<div data-order-progress-responsive="true" class="bg-transparent">
|
9
|
+
<% if show_hint %>
|
10
|
+
<div id="progress-summary-backdrop" class="fixed hidden inset-0 z-40 bg-black/50"></div>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<div class="fixed bottom-0 left-0 z-50 flex flex-col w-full" data-controller="sticky-buttons">
|
14
|
+
<div class="budget-summary__content rounded-t-lg" data-progressbox-fixed>
|
15
|
+
<div class="flex items-center justify-between">
|
16
|
+
<%= render partial: "decidim/budgets/projects/order_progress_summary/progress_box" %>
|
17
|
+
<button
|
18
|
+
id="progress-summary-button"
|
19
|
+
data-controller="dropdown"
|
20
|
+
data-target="progress-summary-dropdown-menu"
|
21
|
+
data-open="<%= show_hint ? "true" : "false" %>"
|
22
|
+
aria-expanded="<%= show_hint ? "true" : "false" %>"
|
23
|
+
class="w-auto pr-0 cursor-pointer">
|
24
|
+
<%= icon "arrow-up-s-line" %>
|
25
|
+
<%= icon "arrow-down-s-line" %>
|
26
|
+
</button>
|
27
|
+
</div>
|
28
|
+
<div class="pt-5" id="progress-summary-dropdown-menu" aria-hidden="<%= show_hint ? "false" : "true" %>">
|
29
|
+
<ul class="list-disc">
|
30
|
+
<li>
|
31
|
+
<%= current_rule_description %>
|
32
|
+
</li>
|
33
|
+
</ul>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<% if focus_mode_show %>
|
38
|
+
<div class="p-4 bg-white">
|
39
|
+
<%= render partial: "decidim/budgets/projects/project_budget_button" %>
|
40
|
+
</div>
|
41
|
+
<% elsif focus_mode_index && show_vote_button %>
|
42
|
+
<div class="p-4 bg-white">
|
43
|
+
<button class="button button__secondary button__lg w-full" data-dialog-open="budget-confirm">
|
44
|
+
<%= t("vote", scope: "decidim.budgets.projects.budget_summary") %>
|
45
|
+
</button>
|
46
|
+
</div>
|
47
|
+
<% elsif focus_mode_index && current_order_checked_out? %>
|
48
|
+
<div class="p-4 bg-white">
|
49
|
+
<%= link_to budget_order_path(return_to: "budget"), method: :delete, class: "button button__lg button__secondary cancel-order w-full", data: { confirm: t("are_you_sure", scope: "decidim.budgets.projects.budget_confirm") } do %>
|
50
|
+
<span><%= t("cancel_order", scope: "decidim.budgets.projects.budget_summary") %></span>
|
51
|
+
<%= icon "delete-bin-line" %>
|
52
|
+
<% end %>
|
53
|
+
</div>
|
54
|
+
<% end %>
|
55
|
+
</div>
|
56
|
+
</div>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<div class="budget-summary__progressbox w-full" data-current-allocation="<%= current_order ? current_order.total : 0 %>">
|
2
|
+
<% if current_order_checked_out? %>
|
3
|
+
<%= t("title", scope: "decidim.budgets.projects.budget_summary.checked_out") %>
|
4
|
+
<div class="budget-summary__content__header">
|
5
|
+
<span class="budget-summary__content__header--title">
|
6
|
+
<%= t("name", scope: "decidim.components.budgets") %>
|
7
|
+
</span>
|
8
|
+
/
|
9
|
+
<%= translated_attribute(budget.title) %>
|
10
|
+
<p class="budget-summary__content__header--description">
|
11
|
+
<%= t("description", scope: "decidim.budgets.projects.budget_summary.checked_out") %>
|
12
|
+
</p>
|
13
|
+
</div>
|
14
|
+
<% else %>
|
15
|
+
<p class="budget-summary__progressbox--checked_out">
|
16
|
+
<%= current_rule_description %>
|
17
|
+
</p>
|
18
|
+
<% end %>
|
19
|
+
<div class="budget-summary__progressbar">
|
20
|
+
<div class="budget-progress" role="progressbar" aria-label="<%= t("budget", scope: "decidim.budgets.projects.order_progress") %>" aria-valuenow="<%= current_order_budget_percent %>" aria-valuetext="<%= current_order_budget_percent %> %" aria-valuemin="0" aria-valuemax="100">
|
21
|
+
<div class="budget-summary__progressbar--minimum" style="width: <%= current_order_budget_percent_minimum %>%">
|
22
|
+
</div>
|
23
|
+
<div class="budget-summary__progressbar--meter bg-success" style="width: <%= current_order_budget_percent %>%"> </div>
|
24
|
+
</div>
|
25
|
+
<div class="budget-summary__progressbar-marks">
|
26
|
+
<span class="budget-summary__progressbar-legend">
|
27
|
+
<strong id="order-total-budget" class="budget-summary__progressbar-legend-strong">
|
28
|
+
<%= render partial: "decidim/budgets/projects/order_total_budget" %>
|
29
|
+
</strong>
|
30
|
+
<%= t("assigned", scope: "decidim.budgets.projects.order_progress") %>
|
31
|
+
</span>
|
32
|
+
<% if current_order.minimum_budget > 0 %>
|
33
|
+
<span class="budget-summary__progressbar-legend budget-summary__progressbar-marks_center">
|
34
|
+
<strong class="budget-summary__progressbar-legend-strong">
|
35
|
+
<%= budget_to_currency(current_order.minimum_budget) %>
|
36
|
+
</strong>
|
37
|
+
<%= t("minimum", scope: "decidim.budgets.projects.order_progress") %>
|
38
|
+
</span>
|
39
|
+
<% end %>
|
40
|
+
<%= render partial: "decidim/budgets/projects/order_progress_summary/progressbar_marks_right" %>
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
</div>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<div class="budget-summary__progressbox-buttons layout-aside__ctas-buttons" data-controller="sticky-buttons">
|
2
|
+
<% if !current_order_checked_out? && voting_open? %>
|
3
|
+
<button class="button button__secondary button__lg w-full" data-dialog-open="budget-confirm" <%= budget_confirm_disabled_attr %>>
|
4
|
+
<%= t("vote", scope: "decidim.budgets.projects.budget_summary") %>
|
5
|
+
</button>
|
6
|
+
<% elsif current_order_checked_out? %>
|
7
|
+
<%= link_to budget_order_path(return_to: "budget"), method: :delete, class: "button button__lg button__secondary cancel-order w-full", data: { confirm: t("are_you_sure", scope: "decidim.budgets.projects.budget_confirm") } do %>
|
8
|
+
<span><%= t("cancel_order", scope: "decidim.budgets.projects.budget_summary") %></span>
|
9
|
+
<%= icon "delete-bin-line" %>
|
10
|
+
<% end %>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<div class="budget-summary__progressbox layout-item__main">
|
2
|
+
<div class="budget-progress relative" role="progressbar" aria-valuenow="<%= current_order_budget_percent %>" aria-valuetext="<%= current_order_budget_percent %>%" aria-valuemin="0" aria-valuemax="100">
|
3
|
+
<div class="budget-summary__progressbar--minimum" style="width: <%= current_order_budget_percent_minimum %>%">
|
4
|
+
</div>
|
5
|
+
<div class="budget-summary__progressbar--meter bg-success" style="width: <%= current_order_budget_percent %>%">
|
6
|
+
</div>
|
7
|
+
</div>
|
8
|
+
<div class="budget-summary__progressbar-marks">
|
9
|
+
<span class="budget-summary__progressbar-legend" style="width: <%= current_order_budget_percent_minimum %>%;">
|
10
|
+
<%= t("assigned", scope: "decidim.budgets.projects.order_progress") %>
|
11
|
+
<strong id="order-total-budget-sticky" class="budget-summary__progressbar-legend-strong">
|
12
|
+
<%= render partial: "decidim/budgets/projects/order_total_budget" %>
|
13
|
+
</strong>
|
14
|
+
</span>
|
15
|
+
<% if current_order.minimum_budget > 0 %>
|
16
|
+
<span class="budget-summary__progressbar-legend budget-summary__progressbar-marks_center">
|
17
|
+
<%= t("minimum", scope: "decidim.budgets.projects.order_progress") %>
|
18
|
+
<strong class="budget-summary__progressbar-legend-strong">
|
19
|
+
<%= budget_to_currency(current_order.minimum_budget) %>
|
20
|
+
</strong>
|
21
|
+
</span>
|
22
|
+
<% end %>
|
23
|
+
<%= render partial: "decidim/budgets/projects/order_progress_summary/progressbar_marks_right" %>
|
24
|
+
</div>
|
25
|
+
</div>
|
@@ -1,3 +1,8 @@
|
|
1
|
+
<% if @focus_mode %>
|
2
|
+
<% content_for :focus_mode, true %>
|
3
|
+
<% content_for :focus_mode_return_path, budget_projects_path(budget) %>
|
4
|
+
<% end %>
|
5
|
+
|
1
6
|
<% add_decidim_meta_tags(
|
2
7
|
title: translated_attribute(project.title),
|
3
8
|
description: translated_attribute(project.description),
|
@@ -20,14 +25,6 @@ edit_link(
|
|
20
25
|
<%= render partial: "exit_modal" %>
|
21
26
|
|
22
27
|
<div id="project-item">
|
23
|
-
<%= render partial: "budget_summary", locals: { include_heading: true, project_item: true, responsive: true } %>
|
24
|
-
<% content_for :item_header do %>
|
25
|
-
<% unless voting_finished? %>
|
26
|
-
<%= render partial: "budget_summary", locals: { include_heading: true, project_item: true, responsive: false } %>
|
27
|
-
<%= render partial: "budget_excess" %>
|
28
|
-
<%= render partial: "budget_confirm" %>
|
29
|
-
<% end %>
|
30
|
-
<% end %>
|
31
28
|
<%= render layout: "layouts/decidim/shared/layout_item", locals: { back_path: budget_projects_path(budget) } do %>
|
32
29
|
<section class="layout-main__section layout-main__heading">
|
33
30
|
<%= cell("decidim/budgets/budget_information_modal", budget) %>
|
@@ -38,12 +35,12 @@ edit_link(
|
|
38
35
|
<%= render partial: "decidim/shared/static_map", locals: { icon_name: "projects", geolocalizable: project } %>
|
39
36
|
</div>
|
40
37
|
<% end %>
|
41
|
-
<%= cell("decidim/budgets/project_selected_status", project
|
38
|
+
<%= cell("decidim/budgets/project_selected_status", project) %>
|
42
39
|
|
43
40
|
<div class="layout-author">
|
44
41
|
<div class="relative flex items-center justify-center w-full">
|
45
42
|
<div class="w-10/12 flex items-center gap-4">
|
46
|
-
<h1 class="
|
43
|
+
<h1 class="h2 decorator">
|
47
44
|
<%= decidim_sanitize translated_attribute project.title %>
|
48
45
|
</h1>
|
49
46
|
</div>
|
@@ -58,7 +55,7 @@ edit_link(
|
|
58
55
|
</section>
|
59
56
|
<section class="layout-main__section">
|
60
57
|
<% if tabs.any? %>
|
61
|
-
<div class="mt-8" data-
|
58
|
+
<div class="mt-8" data-controller="accordion" data-multiselectable="false" data-collapsible="false">
|
62
59
|
<ul class="tab-x-container">
|
63
60
|
<% tabs.each_with_index do |tab, i| %>
|
64
61
|
<li>
|
@@ -89,19 +86,31 @@ edit_link(
|
|
89
86
|
</section>
|
90
87
|
|
91
88
|
<% content_for :aside do %>
|
92
|
-
<section class="layout-aside__section layout-aside__buttons">
|
93
|
-
<% if voting_open? %>
|
94
|
-
<%= render partial: "project_budget_button", locals: { project: } %>
|
95
|
-
<% end %>
|
96
|
-
</section>
|
97
89
|
<section class="layout-aside__section">
|
98
90
|
<span class="budget__definition-data__title">
|
99
91
|
<%= t("budget", scope: "decidim.budgets.projects.show") %>
|
100
92
|
</span>
|
101
93
|
<div class="budget__definition-data__number">
|
102
|
-
<%=
|
94
|
+
<%= budget_to_currency_with_html project.budget_amount %>
|
103
95
|
</div>
|
104
96
|
</section>
|
97
|
+
|
98
|
+
<% if show_votes_count? %>
|
99
|
+
<section class="layout-aside__section">
|
100
|
+
<span class="budget__definition-data__title">
|
101
|
+
<%= t("votes", scope: "decidim.budgets.projects.show") %>
|
102
|
+
</span>
|
103
|
+
<div class="budget__definition-data__number" data-spec-project-votes>
|
104
|
+
<%= cell "decidim/budgets/project_votes_count", project %>
|
105
|
+
</div>
|
106
|
+
</section>
|
107
|
+
<% end %>
|
108
|
+
|
109
|
+
<% if current_order_checked_out? && resource_added?(project) %>
|
110
|
+
<section class="mt-4">
|
111
|
+
<%= cell("decidim/budgets/project_voted_hint", project, class: "margin-left-1") %>
|
112
|
+
</section>
|
113
|
+
<% end %>
|
105
114
|
<% end %>
|
106
115
|
<% content_for :item_footer do %>
|
107
116
|
<%= comments_for project, polymorphic: [project.budget] %>
|
@@ -110,4 +119,8 @@ edit_link(
|
|
110
119
|
</ul>
|
111
120
|
<% end %>
|
112
121
|
<% end %>
|
122
|
+
|
123
|
+
<% if current_user&.ephemeral? %>
|
124
|
+
<div class="h-40 bg-transparent"></div>
|
125
|
+
<% end %>
|
113
126
|
</div>
|
data/config/assets.rb
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
base_path = File.expand_path("..", __dir__)
|
4
4
|
|
5
|
-
Decidim::
|
6
|
-
Decidim::
|
5
|
+
Decidim::Shakapacker.register_path("#{base_path}/app/packs")
|
6
|
+
Decidim::Shakapacker.register_entrypoints(
|
7
7
|
decidim_budgets: "#{base_path}/app/packs/entrypoints/decidim_budgets.js",
|
8
8
|
decidim_budgets_admin: "#{base_path}/app/packs/entrypoints/decidim_budgets_admin.js"
|
9
9
|
)
|
data/config/locales/ar.yml
CHANGED
@@ -22,10 +22,7 @@ ar:
|
|
22
22
|
decidim:
|
23
23
|
budgets:
|
24
24
|
actions:
|
25
|
-
attachment_collections: المجلدات
|
26
|
-
attachments: مرفقات
|
27
25
|
edit: تعديل
|
28
|
-
edit_projects: إدارة المشاريع
|
29
26
|
import: استيراد مقترحات للمشاريع
|
30
27
|
preview: معاينة
|
31
28
|
title: أفعال
|
@@ -37,8 +34,6 @@ ar:
|
|
37
34
|
exports:
|
38
35
|
projects: المشاريع
|
39
36
|
models:
|
40
|
-
budget:
|
41
|
-
name: ميزانية
|
42
37
|
project:
|
43
38
|
name: مشروع
|
44
39
|
projects:
|
@@ -96,7 +91,6 @@ ar:
|
|
96
91
|
ok: حسنا
|
97
92
|
budget_summary:
|
98
93
|
are_you_sure: هل أنت متأكد أنك تريد إلغاء تصويتك؟
|
99
|
-
cancel_order: احذف صوتك وابدأ من جديد
|
100
94
|
checked_out:
|
101
95
|
title: اكتمال التصويت في الميزانية
|
102
96
|
count:
|
@@ -133,7 +127,5 @@ ar:
|
|
133
127
|
show_votes: إظهار الأصوات
|
134
128
|
votes_choices:
|
135
129
|
enabled: تم تمكين التصويت
|
136
|
-
statistics:
|
137
|
-
projects_count: مشاريع
|
138
130
|
index:
|
139
131
|
confirmed_orders_count: عدد الأصوات
|
data/config/locales/bg.yml
CHANGED
@@ -35,10 +35,7 @@ bg:
|
|
35
35
|
'true': Не избран за изпълнение
|
36
36
|
budgets:
|
37
37
|
actions:
|
38
|
-
attachment_collections: Папки
|
39
|
-
attachments: Прикачени файлове
|
40
38
|
edit: Редактирай
|
41
|
-
edit_projects: Обедини проекти
|
42
39
|
import: Импортиране на предложения в проекти
|
43
40
|
new_budget: Нов бюджет
|
44
41
|
new_project: Нов проект
|
@@ -68,8 +65,6 @@ bg:
|
|
68
65
|
exports:
|
69
66
|
projects: Проекти
|
70
67
|
models:
|
71
|
-
budget:
|
72
|
-
name: Бюджет
|
73
68
|
project:
|
74
69
|
name: Проект
|
75
70
|
projects:
|
@@ -180,6 +175,8 @@ bg:
|
|
180
175
|
order:
|
181
176
|
status:
|
182
177
|
title: Вашият глас е приет успешно
|
178
|
+
order_pdf:
|
179
|
+
title: Вашият глас е приет успешно.
|
183
180
|
order_summary_mailer:
|
184
181
|
order_summary:
|
185
182
|
selected_projects: 'Избраните от Вас проекти са:'
|
@@ -203,7 +200,6 @@ bg:
|
|
203
200
|
title: Максималният брой проекти е надвишен
|
204
201
|
budget_summary:
|
205
202
|
are_you_sure: Сигурен ли сте, че искате да отмените гласа си?
|
206
|
-
cancel_order: изтрийте Вашия глас
|
207
203
|
checked_out:
|
208
204
|
description: Вие вече гласувахте бюджета. Ако сте променили решението си, можете да изтриете гласа си.
|
209
205
|
title: Гласуването за бюджета приключи
|
@@ -229,18 +225,8 @@ bg:
|
|
229
225
|
assigned: Възложен
|
230
226
|
budget: Бюджет
|
231
227
|
dynamic_help:
|
232
|
-
keep_adding_projects: Продължете да добавяте проекти
|
233
228
|
minimum_reached: Достигнахте минимума, за да можете да гласувате
|
234
|
-
start_adding_projects: Започнете да добавяте проекти
|
235
229
|
minimum: Минимум
|
236
|
-
minimum_projects_rule:
|
237
|
-
description: Изберете поне %{minimum_number} желани от Вас проекта и гласувайте, според предпочитанията си за дефиниране на бюджета.
|
238
|
-
projects_rule:
|
239
|
-
description: Изберете най-малко %{minimum_number}, но не повече от %{maximum_number} желани от Вас проекта и гласувайте, според предпочитанията си за дефиниране на бюджета.
|
240
|
-
projects_rule_maximum_only:
|
241
|
-
description: Изберете не повече от %{maximum_number} желани от Вас проекта и гласувайте, според предпочитанията си за дефиниране на бюджета.
|
242
|
-
vote_threshold_percent_rule:
|
243
|
-
description: Присъеденете поне %{minimum_budget} към желаните от вас проекти и гласувайте, според предпочитанията си за дефиниране на бюджета.
|
244
230
|
orders:
|
245
231
|
highest_cost: Най-висока стойност
|
246
232
|
label: Подреждане на проектите по
|
@@ -265,7 +251,6 @@ bg:
|
|
265
251
|
added: Добавено
|
266
252
|
all: Всички
|
267
253
|
projects_for: Проекти за %{name}
|
268
|
-
select_projects: Изберете Проекти
|
269
254
|
show:
|
270
255
|
budget: Бюджет
|
271
256
|
prompt: Изберете бюджет
|
@@ -342,6 +327,5 @@ bg:
|
|
342
327
|
project_proposal: Предложения, включени в този проект
|
343
328
|
statistics:
|
344
329
|
orders_count: Подкрепа
|
345
|
-
projects_count: Проекти
|
346
330
|
index:
|
347
331
|
confirmed_orders_count: Брой гласове
|
data/config/locales/ca-IT.yml
CHANGED
@@ -42,15 +42,15 @@ ca-IT:
|
|
42
42
|
'true': No s'ha seleccionat per implementar
|
43
43
|
taxonomies_part_of_contains:
|
44
44
|
label: Taxonomia
|
45
|
+
tooltips:
|
46
|
+
deleted_projects_info: No podeu eliminar aquest projecte
|
45
47
|
budgets:
|
46
48
|
actions:
|
47
|
-
attachment_collections: Carpetes
|
48
|
-
attachments: Adjunts
|
49
49
|
confirm_delete_budget: Segur que vols suprimir aquest pressupost?
|
50
50
|
confirm_delete_project: Segur que vols eliminar aquest projecte?
|
51
51
|
deleted_budgets_info: Els pressupostos eliminats es poden restaurar des de la paperera.
|
52
52
|
edit: Editar
|
53
|
-
edit_projects:
|
53
|
+
edit_projects: Afegir projectes
|
54
54
|
import: Importa propostes a projectes
|
55
55
|
new_budget: Afegir pressupost
|
56
56
|
new_project: Afegir projecte
|
@@ -84,8 +84,6 @@ ca-IT:
|
|
84
84
|
exports:
|
85
85
|
projects: Projectes
|
86
86
|
models:
|
87
|
-
budget:
|
88
|
-
name: Pressupost
|
89
87
|
project:
|
90
88
|
name: Projecte
|
91
89
|
projects:
|
@@ -179,6 +177,7 @@ ca-IT:
|
|
179
177
|
cancel_order:
|
180
178
|
more_than_one: eliminar el teu vot a %{name} i començar de nou
|
181
179
|
only_one: eliminar el teu vot i començar de nou.
|
180
|
+
completed: Completat
|
182
181
|
count:
|
183
182
|
one: "%{count} pressupost"
|
184
183
|
other: "%{count} pressupostos"
|
@@ -186,6 +185,7 @@ ca-IT:
|
|
186
185
|
finished_message: Has finalitzat el procés de votació. Gràcies per participar-hi!
|
187
186
|
highlighted_cta: Votar a %{name}
|
188
187
|
if_change_opinion: Si has canviat d'opinió, pots
|
188
|
+
incomplete: Incomplet
|
189
189
|
orders:
|
190
190
|
highest_cost: Cost més elevat
|
191
191
|
label: Ordenar projectes per
|
@@ -193,6 +193,8 @@ ca-IT:
|
|
193
193
|
random: Ordre aleatori
|
194
194
|
progress: Acaba la votació
|
195
195
|
remove_vote: Eliminar el vot
|
196
|
+
see_projects: Mostra els projectes
|
197
|
+
see_results: Veure els resultats
|
196
198
|
show: Mostra els projectes
|
197
199
|
vote: Vota
|
198
200
|
voted_budgets: Pressupostos votats
|
@@ -223,6 +225,7 @@ ca-IT:
|
|
223
225
|
pending_to_vote_budgets:
|
224
226
|
one: Pots votar en un altre pressupost
|
225
227
|
other: Pots votar en altres pressupostos
|
228
|
+
share_text: "Acabes de votar pels teus projectes favorits a: \"%{space_name}\"! 🎉 Pots seguir votant a: \"%{component_url}\""
|
226
229
|
share_vote: Comparteix el teu vot
|
227
230
|
title: El teu vot s'ha tramitat correctament
|
228
231
|
view_votes:
|
@@ -231,12 +234,16 @@ ca-IT:
|
|
231
234
|
votes_count:
|
232
235
|
one: El teu vot a %{budget_name} ja s'ha registrat.
|
233
236
|
other: El teus %{count} vots a %{budget_name} ja s'han registrat.
|
237
|
+
order_pdf:
|
238
|
+
text: 'Has votat a "%{space_name}", on has seleccionat els projectes següents:'
|
239
|
+
title: El teu vot s'ha acceptat correctament.
|
234
240
|
order_summary_mailer:
|
235
241
|
order_summary:
|
236
242
|
selected_projects: 'Els projectes que has seleccionat són:'
|
237
243
|
subject: Has votat a l'espai de participació %{space_name}
|
238
244
|
voted_on_space: Has votat al pressupost %{budget_name} de l'espai de participació %{space_name}.
|
239
245
|
projects:
|
246
|
+
back_to_budgets: Tornar als pressupostos
|
240
247
|
budget_confirm:
|
241
248
|
are_you_sure: Si canvies d'opinió, pots modificar el teu vot més tard.
|
242
249
|
cancel: Cancel·lar
|
@@ -254,7 +261,7 @@ ca-IT:
|
|
254
261
|
title: Màxim de projectes excedit
|
255
262
|
budget_summary:
|
256
263
|
are_you_sure: Segur que vols cancel·lar el teu vot?
|
257
|
-
cancel_order:
|
264
|
+
cancel_order: Esborra el teu vot
|
258
265
|
checked_out:
|
259
266
|
description: Ja has votat pel pressupost. Si has canviat d'idea, pots esborrar el teu vot.
|
260
267
|
title: Vot pels pressupostos completat
|
@@ -280,18 +287,16 @@ ca-IT:
|
|
280
287
|
assigned: Assignat
|
281
288
|
budget: Pressupost
|
282
289
|
dynamic_help:
|
283
|
-
keep_adding_projects: Seguir afegint projectes
|
284
290
|
minimum_reached: Has arribat al mínim per a poder votar
|
285
|
-
start_adding_projects: Començar a afegir projectes
|
286
291
|
minimum: Mínim
|
287
292
|
minimum_projects_rule:
|
288
|
-
description: Selecciona com a mínim %{minimum_number} projectes que vulguis i vota segons les teves preferències
|
293
|
+
description: "<b>Selecciona com a mínim %{minimum_number} projectes</b> que vulguis i vota segons les teves preferències."
|
289
294
|
projects_rule:
|
290
|
-
description: Selecciona entre %{minimum_number} i %{maximum_number} projectes que vulguis i vota segons les teves preferències per a definir el pressupost.
|
295
|
+
description: "<b>Selecciona entre %{minimum_number} i %{maximum_number} projectes</b> que vulguis i vota segons les teves preferències per a definir el pressupost."
|
291
296
|
projects_rule_maximum_only:
|
292
|
-
description: Selecciona fins a %{maximum_number} projectes que vulguis i vota segons les teves preferències
|
297
|
+
description: "<b>Selecciona fins a %{maximum_number} projectes</b> que vulguis i vota segons les teves preferències."
|
293
298
|
vote_threshold_percent_rule:
|
294
|
-
description:
|
299
|
+
description: "Selecciona els projectes que vulguis <b>fins com a mínim el %{minimum_budget} del total del pressupost</b> i vota segons les teves preferències."
|
295
300
|
orders:
|
296
301
|
highest_cost: Major cost
|
297
302
|
label: Ordenar projectes per
|
@@ -316,9 +321,10 @@ ca-IT:
|
|
316
321
|
added: Afegit
|
317
322
|
all: Tots
|
318
323
|
projects_for: Projectes per a %{name}
|
319
|
-
select_projects:
|
324
|
+
select_projects: Afegeix projectes
|
320
325
|
show:
|
321
326
|
budget: Pressupost
|
327
|
+
votes: Vots
|
322
328
|
prompt: Seleccionar pressupost
|
323
329
|
vote_reminder_mailer:
|
324
330
|
vote_reminder:
|
@@ -363,6 +369,11 @@ ca-IT:
|
|
363
369
|
vote_selected_projects_maximum: Número màxim de projectes a seleccionar
|
364
370
|
vote_selected_projects_minimum: Número màxim de projectes a seleccionar
|
365
371
|
vote_threshold_percent: Percentatge del pressupost mínim per fer el vot
|
372
|
+
voting_rule: Normes per a la votació
|
373
|
+
voting_rule_choices:
|
374
|
+
minimum_projects: Número mínim de projectes a votar
|
375
|
+
selected_projects: Número mínim i màxim de projectes a votar
|
376
|
+
threshold_percent: Percentatge mínim del pressupost a invertir
|
366
377
|
workflow: Workflow
|
367
378
|
workflow_choices:
|
368
379
|
all: 'Votar a tots: permet a les participants votar a tots els pressupostos.'
|
@@ -436,6 +447,7 @@ ca-IT:
|
|
436
447
|
project_proposal: Propostes incloses en aquest projecte
|
437
448
|
statistics:
|
438
449
|
orders_count: Suports
|
439
|
-
projects_count:
|
450
|
+
projects_count: Pressupostos
|
451
|
+
projects_count_tooltip: El número de pressupostos participatius i el total de vots emesos en aquests.
|
440
452
|
index:
|
441
453
|
confirmed_orders_count: Recompte de vots
|