decidim-budgets 0.20.1 → 0.23.1
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/README.md +38 -3
- data/app/assets/images/decidim/budgets/icon.svg +1 -11
- data/app/assets/javascripts/decidim/budgets/projects.js.es6 +26 -4
- data/app/assets/stylesheets/decidim/budgets/budget/_budget-list.scss +152 -24
- data/app/cells/decidim/budgets/base_cell.rb +22 -0
- data/app/cells/decidim/budgets/budget_cell.rb +21 -0
- data/app/cells/decidim/budgets/budget_information_modal/show.erb +28 -0
- data/app/cells/decidim/budgets/budget_information_modal_cell.rb +22 -0
- data/app/cells/decidim/budgets/budget_list_item/show.erb +22 -0
- data/app/cells/decidim/budgets/budget_list_item_cell.rb +40 -0
- data/app/cells/decidim/budgets/budget_m/data.erb +12 -0
- data/app/cells/decidim/budgets/budget_m/footer.erb +5 -0
- data/app/cells/decidim/budgets/budget_m_cell.rb +16 -0
- data/app/cells/decidim/budgets/budgets_header/show.erb +7 -0
- data/app/cells/decidim/budgets/budgets_header_cell.rb +14 -0
- data/app/cells/decidim/budgets/budgets_list/card_list.erb +7 -0
- data/app/cells/decidim/budgets/budgets_list/highlighted.erb +11 -0
- data/app/cells/decidim/budgets/budgets_list/show.erb +20 -0
- data/app/cells/decidim/budgets/budgets_list/voted.erb +43 -0
- data/app/cells/decidim/budgets/budgets_list_cell.rb +39 -0
- data/app/cells/decidim/budgets/limit_announcement_cell.rb +52 -0
- data/app/cells/decidim/budgets/project_list_item/project_data.erb +19 -0
- data/app/cells/decidim/budgets/project_list_item/project_data_vote_button.erb +15 -0
- data/app/cells/decidim/budgets/project_list_item/project_image.erb +5 -0
- data/app/cells/decidim/budgets/project_list_item/project_text.erb +23 -0
- data/app/cells/decidim/budgets/project_list_item/show.erb +5 -0
- data/app/cells/decidim/budgets/project_list_item_cell.rb +66 -0
- data/app/cells/decidim/budgets/project_m/data.erb +3 -3
- data/app/cells/decidim/budgets/project_m/footer.erb +1 -1
- data/app/cells/decidim/budgets/project_m_cell.rb +4 -0
- data/app/cells/decidim/budgets/project_selected_status_cell.rb +28 -0
- data/app/cells/decidim/budgets/project_tags/show.erb +5 -0
- data/app/cells/decidim/budgets/project_tags_cell.rb +18 -0
- data/app/cells/decidim/budgets/project_voted_hint_cell.rb +33 -0
- data/app/cells/decidim/budgets/project_votes_count_cell.rb +44 -0
- data/app/commands/decidim/budgets/add_line_item.rb +7 -10
- data/app/commands/decidim/budgets/admin/create_budget.rb +48 -0
- data/app/commands/decidim/budgets/admin/create_project.rb +26 -11
- data/app/commands/decidim/budgets/admin/destroy_budget.rb +42 -0
- data/app/commands/decidim/budgets/admin/import_proposals_to_budgets.rb +26 -25
- data/app/commands/decidim/budgets/admin/update_budget.rb +48 -0
- data/app/commands/decidim/budgets/admin/update_project.rb +20 -2
- data/app/commands/decidim/budgets/checkout.rb +7 -6
- data/app/commands/decidim/budgets/remove_line_item.rb +3 -2
- data/app/controllers/concerns/decidim/budgets/needs_current_order.rb +18 -2
- data/app/controllers/concerns/decidim/budgets/orderable.rb +57 -0
- data/app/controllers/decidim/budgets/admin/application_controller.rb +10 -2
- data/app/controllers/decidim/budgets/admin/attachment_collections_controller.rb +1 -1
- data/app/controllers/decidim/budgets/admin/attachments_controller.rb +2 -2
- data/app/controllers/decidim/budgets/admin/budgets_controller.rb +82 -0
- data/app/controllers/decidim/budgets/admin/projects_controller.rb +15 -12
- data/app/controllers/decidim/budgets/admin/proposals_imports_controller.rb +10 -2
- data/app/controllers/decidim/budgets/application_controller.rb +23 -0
- data/app/controllers/decidim/budgets/budgets_controller.rb +24 -0
- data/app/controllers/decidim/budgets/line_items_controller.rb +10 -6
- data/app/controllers/decidim/budgets/orders_controller.rb +20 -6
- data/app/controllers/decidim/budgets/projects_controller.rb +28 -7
- data/app/forms/decidim/budgets/admin/budget_form.rb +39 -0
- data/app/forms/decidim/budgets/admin/component_form.rb +44 -0
- data/app/forms/decidim/budgets/admin/project_form.rb +25 -9
- data/app/forms/decidim/budgets/admin/project_import_proposals_form.rb +4 -0
- data/app/helpers/decidim/budgets/admin/application_helper.rb +13 -0
- data/app/helpers/decidim/budgets/application_helper.rb +11 -0
- data/app/helpers/decidim/budgets/projects_helper.rb +13 -0
- data/app/jobs/decidim/budgets/send_order_summary_job.rb +15 -0
- data/app/mailers/decidim/budgets/order_summary_mailer.rb +36 -0
- data/app/models/decidim/budgets/budget.rb +34 -0
- data/app/models/decidim/budgets/line_item.rb +4 -4
- data/app/models/decidim/budgets/order.rb +46 -16
- data/app/models/decidim/budgets/project.rb +37 -4
- data/app/permissions/decidim/budgets/admin/permissions.rb +23 -10
- data/app/permissions/decidim/budgets/permissions.rb +28 -6
- data/app/presenters/decidim/budgets/admin_log/budget_presenter.rb +42 -0
- data/app/queries/decidim/budgets/filtered_projects.rb +9 -1
- data/app/queries/decidim/budgets/metrics/budget_followers_metric_measure.rb +3 -2
- data/app/queries/decidim/budgets/metrics/budget_participants_metric_measure.rb +6 -5
- data/app/serializers/decidim/budgets/data_portability_budgets_order_serializer.rb +3 -2
- data/app/services/decidim/budgets/project_search.rb +13 -17
- data/app/types/decidim/budgets/budget_type.rb +24 -0
- data/app/types/decidim/budgets/budgets_type.rb +32 -0
- data/app/types/decidim/budgets/project_type.rb +26 -0
- data/app/views/decidim/budgets/admin/budgets/_form.html.erb +23 -0
- data/app/views/decidim/budgets/admin/budgets/edit.html.erb +7 -0
- data/app/views/decidim/budgets/admin/budgets/index.html.erb +58 -0
- data/app/views/decidim/budgets/admin/budgets/new.html.erb +7 -0
- data/app/views/decidim/budgets/admin/projects/_form.html.erb +15 -10
- data/app/views/decidim/budgets/admin/projects/edit.html.erb +2 -2
- data/app/views/decidim/budgets/admin/projects/index.html.erb +20 -7
- data/app/views/decidim/budgets/admin/projects/new.html.erb +2 -2
- data/app/views/decidim/budgets/admin/projects/proposals_picker.html.erb +1 -0
- data/app/views/decidim/budgets/admin/proposals_imports/new.html.erb +1 -1
- data/app/views/decidim/budgets/budgets/index.html.erb +5 -0
- data/app/views/decidim/budgets/order_summary_mailer/order_summary.html.erb +22 -0
- data/app/views/decidim/budgets/projects/_budget_confirm.html.erb +3 -3
- data/app/views/decidim/budgets/projects/_budget_summary.html.erb +26 -7
- data/app/views/decidim/budgets/projects/_filters.html.erb +15 -7
- data/app/views/decidim/budgets/projects/_linked_projects.html.erb +2 -2
- data/app/views/decidim/budgets/projects/_order_progress.html.erb +14 -18
- data/app/views/decidim/budgets/projects/_order_selected_projects.html.erb +3 -3
- data/app/views/decidim/budgets/projects/_project.html.erb +1 -57
- data/app/views/decidim/budgets/projects/_project_budget_button.html.erb +36 -7
- data/app/views/decidim/budgets/projects/_projects.html.erb +8 -1
- data/app/views/decidim/budgets/projects/index.html.erb +15 -7
- data/app/views/decidim/budgets/projects/index.js.erb +8 -0
- data/app/views/decidim/budgets/projects/show.html.erb +18 -11
- data/config/locales/am-ET.yml +1 -0
- data/config/locales/ar.yml +3 -17
- data/config/locales/bg-BG.yml +7 -0
- data/config/locales/bg.yml +6 -0
- data/config/locales/ca.yml +126 -12
- data/config/locales/cs.yml +145 -31
- data/config/locales/da-DK.yml +1 -0
- data/config/locales/da.yml +1 -0
- data/config/locales/de.yml +115 -12
- data/config/locales/el.yml +169 -0
- data/config/locales/en.yml +126 -12
- data/config/locales/eo.yml +1 -0
- data/config/locales/es-MX.yml +126 -12
- data/config/locales/es-PY.yml +126 -12
- data/config/locales/es.yml +126 -12
- data/config/locales/et-EE.yml +1 -0
- data/config/locales/et.yml +1 -0
- data/config/locales/eu.yml +4 -14
- data/config/locales/fi-plain.yml +127 -13
- data/config/locales/fi.yml +137 -23
- data/config/locales/fr-CA.yml +266 -0
- data/config/locales/fr.yml +125 -12
- data/config/locales/ga-IE.yml +1 -0
- data/config/locales/gl.yml +3 -13
- data/config/locales/hr-HR.yml +1 -0
- data/config/locales/hr.yml +1 -0
- data/config/locales/hu.yml +19 -13
- data/config/locales/id-ID.yml +3 -12
- data/config/locales/is-IS.yml +1 -12
- data/config/locales/is.yml +114 -0
- data/config/locales/it.yml +97 -13
- data/config/locales/ja-JP.yml +172 -0
- data/config/locales/ja.yml +262 -0
- data/config/locales/ko-KR.yml +1 -0
- data/config/locales/ko.yml +1 -0
- data/config/locales/lt-LT.yml +1 -0
- data/config/locales/lt.yml +1 -0
- data/config/locales/lv.yml +164 -0
- data/config/locales/mt-MT.yml +1 -0
- data/config/locales/mt.yml +1 -0
- data/config/locales/nl.yml +113 -13
- data/config/locales/no.yml +39 -13
- data/config/locales/om-ET.yml +1 -0
- data/config/locales/pl.yml +175 -62
- data/config/locales/pt-BR.yml +4 -14
- data/config/locales/pt.yml +63 -47
- data/config/locales/ro-RO.yml +172 -0
- data/config/locales/ru.yml +3 -15
- data/config/locales/sk-SK.yml +180 -0
- data/config/locales/sk.yml +166 -0
- data/config/locales/sl.yml +1 -0
- data/config/locales/so-SO.yml +1 -0
- data/config/locales/sr-CS.yml +27 -0
- data/config/locales/sv.yml +126 -12
- data/config/locales/ti-ER.yml +1 -0
- data/config/locales/tr-TR.yml +3 -13
- data/config/locales/uk.yml +3 -15
- data/config/locales/vi-VN.yml +1 -0
- data/config/locales/vi.yml +1 -0
- data/config/locales/zh-CN.yml +260 -0
- data/config/locales/zh-TW.yml +1 -0
- data/db/migrate/20200617105120_create_decidim_budgets.rb +15 -0
- data/db/migrate/20200629072626_rename_budget_to_budget_ammount.rb +7 -0
- data/db/migrate/20200629134013_add_budget_reference_to_project.rb +7 -0
- data/db/migrate/20200706142609_add_budget_reference_to_order.rb +7 -0
- data/db/migrate/20200714103519_move_budgets_to_own_model.rb +109 -0
- data/db/migrate/20200717140012_add_scope_to_budgets.rb +7 -0
- data/db/migrate/20200728075039_add_selected_at_to_project.rb +7 -0
- data/db/migrate/20200804175222_votes_enabled_to_votes_choices.rb +35 -0
- data/db/migrate/20200827154129_add_commentable_counter_cache_to_projects.rb +9 -0
- data/lib/decidim/budgets.rb +1 -0
- data/lib/decidim/budgets/admin_engine.rb +12 -5
- data/lib/decidim/budgets/component.rb +94 -38
- data/lib/decidim/budgets/engine.rb +8 -6
- data/lib/decidim/budgets/seeds/city.jpeg +0 -0
- data/lib/decidim/budgets/test/factories.rb +71 -9
- data/lib/decidim/budgets/version.rb +1 -1
- data/lib/decidim/budgets/workflows.rb +17 -0
- data/lib/decidim/budgets/workflows/all.rb +20 -0
- data/lib/decidim/budgets/workflows/base.rb +132 -0
- data/lib/decidim/budgets/workflows/one.rb +33 -0
- metadata +121 -16
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Budgets
|
5
|
+
# This cell renders the budget item list in the budgets list
|
6
|
+
class BudgetListItemCell < BaseCell
|
7
|
+
delegate :voting_finished?, to: :controller
|
8
|
+
|
9
|
+
property :title
|
10
|
+
alias budget model
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def card_class
|
15
|
+
["card--list__item"].tap do |list|
|
16
|
+
unless voting_finished?
|
17
|
+
list << "card--list__data-added" if voted?
|
18
|
+
list << "card--list__data-progress" if progress?
|
19
|
+
end
|
20
|
+
end.join(" ")
|
21
|
+
end
|
22
|
+
|
23
|
+
def link_class
|
24
|
+
"card__link card--list__heading"
|
25
|
+
end
|
26
|
+
|
27
|
+
def voted?
|
28
|
+
current_user && status == :voted
|
29
|
+
end
|
30
|
+
|
31
|
+
def progress?
|
32
|
+
current_user && status == :progress
|
33
|
+
end
|
34
|
+
|
35
|
+
def status
|
36
|
+
@status ||= current_workflow.status(budget)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<div class="card__icondata">
|
2
|
+
<ul class="card-data">
|
3
|
+
<li class="card-data__item">
|
4
|
+
<%= icon "euro-outline", class: "icon--big", role: "img", "aria-hidden": true %>
|
5
|
+
</li>
|
6
|
+
<li class="card-data__item">
|
7
|
+
<div class="text-left">
|
8
|
+
<strong class="heading4"><%= budget_to_currency model.total_budget %></strong>
|
9
|
+
</div>
|
10
|
+
</li>
|
11
|
+
</ul>
|
12
|
+
</div>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Budgets
|
5
|
+
# This cell renders the Medium (:m) budget card
|
6
|
+
# for an given instance of a Decidim::Budgets::Budget
|
7
|
+
class BudgetMCell < Decidim::CardMCell
|
8
|
+
include ActiveSupport::NumberHelper
|
9
|
+
include Decidim::Budgets::ProjectsHelper
|
10
|
+
|
11
|
+
def statuses
|
12
|
+
[]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Budgets
|
5
|
+
# This cell renders the Budgets component header
|
6
|
+
class BudgetsHeaderCell < BaseCell
|
7
|
+
private
|
8
|
+
|
9
|
+
def landing_page_content
|
10
|
+
translated_attribute(current_settings.landing_page_content).presence || translated_attribute(settings.landing_page_content)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<% if highlighted? %>
|
2
|
+
<p id="highlighted-budget">
|
3
|
+
<% highlighted.each do |budget| %>
|
4
|
+
<%= link_to(
|
5
|
+
t("highlighted_cta", scope: i18n_scope,
|
6
|
+
name: translated_attribute(budget.title)),
|
7
|
+
resource_locator(budget).path,
|
8
|
+
class: :button ) %>
|
9
|
+
<% end %>
|
10
|
+
</p>
|
11
|
+
<% end %>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<div class="row">
|
2
|
+
<div class="columns medium-7 mediumlarge-8">
|
3
|
+
<% if !voting_finished? && (highlighted? || voted?) %>
|
4
|
+
<div class="section">
|
5
|
+
<h3 class="section-heading">
|
6
|
+
<%= t(:my_budgets, scope: i18n_scope) %>
|
7
|
+
</h3>
|
8
|
+
|
9
|
+
<%= render :highlighted %>
|
10
|
+
<%= render :voted %>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<div class="row">
|
15
|
+
<div class="columns mediumlarge-6">
|
16
|
+
<%= render :card_list %>
|
17
|
+
</div>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</div>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<% if voted? %>
|
2
|
+
<div id="voted-budgets">
|
3
|
+
<p class="lead">
|
4
|
+
<%= t(:voted_on, scope: i18n_scope, links: budgets_link_list(voted)) %>
|
5
|
+
</p>
|
6
|
+
|
7
|
+
<% if finished? %>
|
8
|
+
<p class="lead">
|
9
|
+
<%= t(:finished_message, scope: i18n_scope) %>
|
10
|
+
</p>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<% if voting_open? %>
|
14
|
+
<div>
|
15
|
+
<p>
|
16
|
+
<%= t(:if_change_opinion, scope: i18n_scope) %>
|
17
|
+
<%= link_to(
|
18
|
+
t("cancel_order.only_one", scope: i18n_scope),
|
19
|
+
budget_order_path(voted.first),
|
20
|
+
method: :delete,
|
21
|
+
data: { confirm: t("projects.budget_summary.are_you_sure", scope: "decidim.budgets") }) if voted.one? %>
|
22
|
+
</p>
|
23
|
+
|
24
|
+
<% if !voted.one? && voted.any? %>
|
25
|
+
<ul>
|
26
|
+
<% voted.each do |budget| %>
|
27
|
+
<li>
|
28
|
+
<%= link_to(
|
29
|
+
t("cancel_order.more_than_one", scope: i18n_scope, name: translated_attribute(budget.title)),
|
30
|
+
budget_order_path(budget),
|
31
|
+
method: :delete,
|
32
|
+
class: "cancel-order",
|
33
|
+
data: {
|
34
|
+
confirm: t("projects.budget_summary.are_you_sure", scope: "decidim.budgets")
|
35
|
+
}) %>
|
36
|
+
</li>
|
37
|
+
<% end %>
|
38
|
+
</ul>
|
39
|
+
<% end %>
|
40
|
+
</div>
|
41
|
+
<% end %>
|
42
|
+
</div>
|
43
|
+
<% end %>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Budgets
|
5
|
+
# This cell renders the budgets list of a Budget component
|
6
|
+
class BudgetsListCell < BaseCell
|
7
|
+
alias current_workflow model
|
8
|
+
|
9
|
+
delegate :allowed, :budgets, :highlighted, :voted, to: :current_workflow
|
10
|
+
delegate :voting_open?, :voting_finished?, to: :controller
|
11
|
+
|
12
|
+
def show
|
13
|
+
return unless budgets
|
14
|
+
|
15
|
+
render
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def highlighted?
|
21
|
+
current_user && highlighted.any?
|
22
|
+
end
|
23
|
+
|
24
|
+
def voted?
|
25
|
+
current_user && voted.any?
|
26
|
+
end
|
27
|
+
|
28
|
+
def finished?
|
29
|
+
return unless budgets.any?
|
30
|
+
|
31
|
+
current_user && (allowed - voted).none?
|
32
|
+
end
|
33
|
+
|
34
|
+
def i18n_scope
|
35
|
+
"decidim.budgets.budgets_list"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Budgets
|
5
|
+
# This cell renders information when current user can't create more budgets orders.
|
6
|
+
class LimitAnnouncementCell < BaseCell
|
7
|
+
alias budget model
|
8
|
+
delegate :voted?, :vote_allowed?, :discardable, :limit_reached?, to: :current_workflow
|
9
|
+
delegate :voting_open?, to: :controller
|
10
|
+
|
11
|
+
def show
|
12
|
+
cell("decidim/announcement", announcement_args) if announce?
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def announce?
|
18
|
+
return unless voting_open?
|
19
|
+
return unless current_user
|
20
|
+
return if vote_allowed?(budget)
|
21
|
+
return if voted?(budget)
|
22
|
+
|
23
|
+
discardable.any? || !vote_allowed?(budget, false)
|
24
|
+
end
|
25
|
+
|
26
|
+
def announcement_args
|
27
|
+
{
|
28
|
+
callout_class: "warning",
|
29
|
+
announcement: announcement_message
|
30
|
+
}
|
31
|
+
end
|
32
|
+
|
33
|
+
def announcement_message
|
34
|
+
if discardable.any?
|
35
|
+
t(:limit_reached, scope: i18n_scope,
|
36
|
+
links: budgets_link_list(discardable),
|
37
|
+
landing_path: budgets_path)
|
38
|
+
else
|
39
|
+
t(:cant_vote, scope: i18n_scope, landing_path: budgets_path)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def should_discard_to_vote?
|
44
|
+
limit_reached? && discardable.any?
|
45
|
+
end
|
46
|
+
|
47
|
+
def i18n_scope
|
48
|
+
"decidim.budgets.limit_announcement"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<div class="budget-list__data <%= data_class %>">
|
2
|
+
<% if voting_finished? %>
|
3
|
+
<div class="budget-list__data__votes">
|
4
|
+
<%= cell("decidim/budgets/project_votes_count", model) %>
|
5
|
+
|
6
|
+
<%= cell("decidim/budgets/project_voted_hint", model, class: "display-block margin-top-1") %>
|
7
|
+
</div>
|
8
|
+
<% else %>
|
9
|
+
<span class="budget-list__data__number budget-list__number show-for-medium">
|
10
|
+
<%= budget_to_currency(model.budget_amount) %>
|
11
|
+
|
12
|
+
<%= cell("decidim/budgets/project_votes_count", model, layout: :one_line, class: "display-inline-block") %>
|
13
|
+
|
14
|
+
<%= cell("decidim/budgets/project_voted_hint", model, class: "display-block margin-top-1") if current_order_checked_out? && resource_added? %>
|
15
|
+
</span>
|
16
|
+
|
17
|
+
<%= render :project_data_vote_button if !current_order_checked_out? && voting_open? %>
|
18
|
+
<% end %>
|
19
|
+
</div>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<%= action_authorized_button_to "vote",
|
2
|
+
budget_order_line_item_path(model.budget, project_id: model),
|
3
|
+
method: vote_button_method,
|
4
|
+
remote: true,
|
5
|
+
class: "button tiny budget-list__action #{vote_button_class}",
|
6
|
+
data: {
|
7
|
+
add: !resource_added?,
|
8
|
+
disable: true,
|
9
|
+
budget: model.budget_amount,
|
10
|
+
"redirect-url": resource_path
|
11
|
+
},
|
12
|
+
disabled: vote_button_disabled?,
|
13
|
+
title: vote_button_label do %>
|
14
|
+
<%= icon(resource_added? ? "x" : "check", class: "icon--small", aria_label: vote_button_label, role: "img") %>
|
15
|
+
<% end %>
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<div class="budget-list__text card__text">
|
2
|
+
<div>
|
3
|
+
<%= link_to resource_path, class: "card__link" do %>
|
4
|
+
<h5 class="card__title budget-list__title">
|
5
|
+
<%= cell("decidim/budgets/project_selected_status", model) %>
|
6
|
+
|
7
|
+
<%= resource_title %>
|
8
|
+
</h5>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<div class="show-for-medium">
|
12
|
+
<%= cell "decidim/budgets/project_tags", model, context: { extra_classes: ["tags--project"] } %>
|
13
|
+
</div>
|
14
|
+
|
15
|
+
<div class="budget-list__data__number budget-list__number hide-for-medium">
|
16
|
+
<%= cell("decidim/budgets/project_votes_count",
|
17
|
+
model,
|
18
|
+
layout: :one_line) %>
|
19
|
+
|
20
|
+
<%= cell("decidim/budgets/project_voted_hint", model, class: "margin-left-1") if current_order_checked_out? && resource_added? %>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
</div>
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Budgets
|
5
|
+
# This cell renders a horizontal project card
|
6
|
+
# for an given instance of a Project in a budget list
|
7
|
+
class ProjectListItemCell < Decidim::ViewModel
|
8
|
+
include ActiveSupport::NumberHelper
|
9
|
+
include Decidim::LayoutHelper
|
10
|
+
include Decidim::ActionAuthorizationHelper
|
11
|
+
include Decidim::Budgets::ProjectsHelper
|
12
|
+
include Decidim::Budgets::Engine.routes.url_helpers
|
13
|
+
|
14
|
+
delegate :current_user, :current_settings, :current_order, :current_component,
|
15
|
+
:current_participatory_space, :can_have_order?, :voting_open?, :voting_finished?, to: :parent_controller
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def resource_path
|
20
|
+
resource_locator([model.budget, model]).path(filter_link_params)
|
21
|
+
end
|
22
|
+
|
23
|
+
def resource_title
|
24
|
+
translated_attribute model.title
|
25
|
+
end
|
26
|
+
|
27
|
+
def resource_added?
|
28
|
+
current_order && current_order.projects.include?(model)
|
29
|
+
end
|
30
|
+
|
31
|
+
def data_class
|
32
|
+
[].tap do |list|
|
33
|
+
list << "budget-list__data--added" if can_have_order? && resource_added?
|
34
|
+
list << "show-for-medium" if voting_finished? || (current_order_checked_out? && !resource_added?)
|
35
|
+
end.join(" ")
|
36
|
+
end
|
37
|
+
|
38
|
+
def vote_button_disabled?
|
39
|
+
current_user && !can_have_order?
|
40
|
+
end
|
41
|
+
|
42
|
+
def vote_button_class
|
43
|
+
return "success" if resource_added?
|
44
|
+
|
45
|
+
"hollow"
|
46
|
+
end
|
47
|
+
|
48
|
+
def vote_button_method
|
49
|
+
return :delete if resource_added?
|
50
|
+
|
51
|
+
:post
|
52
|
+
end
|
53
|
+
|
54
|
+
def vote_button_label
|
55
|
+
if resource_added?
|
56
|
+
return t(
|
57
|
+
"decidim.budgets.projects.project.remove",
|
58
|
+
resource_name: resource_title
|
59
|
+
)
|
60
|
+
end
|
61
|
+
|
62
|
+
t("decidim.budgets.projects.project.add", resource_name: resource_title)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
<div class="card__icondata">
|
2
2
|
<ul class="card-data">
|
3
3
|
<li class="card-data__item">
|
4
|
-
<%= icon "euro-outline", class: "icon--big" %>
|
4
|
+
<%= icon "euro-outline", class: "icon--big", role: "img", "aria-hidden": true %>
|
5
5
|
</li>
|
6
6
|
<li class="card-data__item">
|
7
|
-
<div class="text-left
|
8
|
-
<strong class="heading4"><%= budget_to_currency model.
|
7
|
+
<div class="text-left">
|
8
|
+
<strong class="heading4"><%= budget_to_currency model.budget_amount %></strong>
|
9
9
|
</div>
|
10
10
|
</li>
|
11
11
|
</ul>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<div class="card__footer">
|
2
2
|
<div class="card__support">
|
3
|
-
<%= link_to t("view", scope: "decidim.budgets.projects.project"), resource_path, class: "card__button button
|
3
|
+
<%= link_to t("view", scope: "decidim.budgets.projects.project"), resource_path, class: "card__button button button--sc small" %>
|
4
4
|
</div>
|
5
5
|
</div>
|