decidim-budgets 0.10.1 → 0.11.0.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/assets/javascripts/decidim/budgets/projects.js.es6 +10 -10
  4. data/app/commands/decidim/budgets/add_line_item.rb +4 -4
  5. data/app/commands/decidim/budgets/admin/create_project.rb +4 -2
  6. data/app/commands/decidim/budgets/admin/destroy_project.rb +42 -0
  7. data/app/commands/decidim/budgets/admin/update_project.rb +3 -1
  8. data/app/commands/decidim/budgets/checkout.rb +3 -3
  9. data/app/controllers/concerns/decidim/budgets/needs_current_order.rb +1 -1
  10. data/app/controllers/decidim/budgets/admin/application_controller.rb +3 -3
  11. data/app/controllers/decidim/budgets/admin/attachment_collections_controller.rb +2 -2
  12. data/app/controllers/decidim/budgets/admin/attachments_controller.rb +1 -1
  13. data/app/controllers/decidim/budgets/admin/projects_controller.rb +8 -7
  14. data/app/controllers/decidim/budgets/application_controller.rb +2 -2
  15. data/app/controllers/decidim/budgets/line_items_controller.rb +1 -1
  16. data/app/controllers/decidim/budgets/orders_controller.rb +1 -1
  17. data/app/controllers/decidim/budgets/projects_controller.rb +2 -2
  18. data/app/forms/decidim/budgets/admin/project_form.rb +2 -2
  19. data/app/models/decidim/budgets/line_item.rb +3 -3
  20. data/app/models/decidim/budgets/order.rb +10 -10
  21. data/app/models/decidim/budgets/project.rb +11 -5
  22. data/app/presenters/decidim/budgets/admin_log/project_presenter.rb +42 -0
  23. data/app/queries/decidim/budgets/filtered_projects.rb +9 -9
  24. data/app/services/decidim/budgets/project_search.rb +2 -2
  25. data/app/views/decidim/budgets/admin/projects/_form.html.erb +6 -7
  26. data/app/views/decidim/budgets/admin/projects/edit.html.erb +2 -2
  27. data/app/views/decidim/budgets/admin/projects/index.html.erb +5 -5
  28. data/app/views/decidim/budgets/admin/projects/new.html.erb +2 -3
  29. data/app/views/decidim/budgets/projects/_budget_confirm.html.erb +6 -6
  30. data/app/views/decidim/budgets/projects/_budget_excess.html.erb +4 -4
  31. data/app/views/decidim/budgets/projects/_budget_summary.html.erb +11 -11
  32. data/app/views/decidim/budgets/projects/_filters.html.erb +4 -4
  33. data/app/views/decidim/budgets/projects/_filters_small_view.html.erb +1 -1
  34. data/app/views/decidim/budgets/projects/_order_progress.html.erb +6 -6
  35. data/app/views/decidim/budgets/projects/_order_selected_projects.html.erb +3 -3
  36. data/app/views/decidim/budgets/projects/_project.html.erb +6 -6
  37. data/app/views/decidim/budgets/projects/_project_budget_button.html.erb +3 -3
  38. data/app/views/decidim/budgets/projects/_projects.html.erb +1 -1
  39. data/app/views/decidim/budgets/projects/index.html.erb +3 -3
  40. data/app/views/decidim/budgets/projects/show.html.erb +4 -4
  41. data/config/locales/ca.yml +7 -1
  42. data/config/locales/en.yml +7 -1
  43. data/config/locales/es.yml +8 -2
  44. data/config/locales/eu.yml +9 -3
  45. data/config/locales/fi.yml +9 -3
  46. data/config/locales/fr.yml +8 -2
  47. data/config/locales/gl.yml +7 -1
  48. data/config/locales/it.yml +8 -2
  49. data/config/locales/nl.yml +11 -5
  50. data/config/locales/pl.yml +7 -1
  51. data/config/locales/pt-BR.yml +7 -1
  52. data/config/locales/pt.yml +7 -1
  53. data/config/locales/ru.yml +0 -7
  54. data/config/locales/sv.yml +7 -1
  55. data/config/locales/uk.yml +0 -7
  56. data/db/migrate/20170215132708_add_reference_to_projects.rb +5 -1
  57. data/db/migrate/20180305133340_rename_features_to_components_at_budgets.rb +17 -0
  58. data/lib/decidim/budgets/{feature.rb → component.rb} +23 -22
  59. data/lib/decidim/budgets/test/factories.rb +6 -6
  60. data/lib/decidim/budgets/version.rb +1 -1
  61. data/lib/decidim/budgets.rb +1 -1
  62. metadata +18 -15
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6e0f6a36867eb268b99f20d0ea714cb30da8debcfc8e652c7a167f79de04d0dc
4
- data.tar.gz: fc29502e66b2dd3aebc2266f87d62fb6988402d59e3082f2f9d3700fc5bd3b4d
3
+ metadata.gz: 0cd0751b67b4aabebe67fe6bf0987e8ecd3b0e850990747c829a79394f6d3ffb
4
+ data.tar.gz: '09bef5af8fd5d261512113760f32f1c224bf3b1738c385f23840b27c82a403e2'
5
5
  SHA512:
6
- metadata.gz: d575f70e3af158b1d2626e05605d64d59eb67a5d068ae418f02f293cf20248b4c2d0159c88bfc651d26215d6fc8faabe61ab0f0b74ae5641753205e01b38b5eb
7
- data.tar.gz: faf33f349bae47edb2f5ab704d0506ffc538c3879fa50baa2f239c3e1218c40f0fb76accec5143051edc759b48640f8df72929f3170819ed4fe4c91df3f79767
6
+ metadata.gz: 192158943da4f666a91adf4d5254a8076f1aeec3a8919509f827f89480c858dc3e652e42a4de77ed838b3af02162df69daae873ef2af610d875f63a7c10e8cae
7
+ data.tar.gz: 37b2f1864b2e96720ed8e17da6ce41677b70b644e67649ae7a83a1cd399ca0b0125471bc296b20b900d32342b32de6d4bed81f120cd85237614e77933fe6a7d3
data/README.md CHANGED
@@ -4,7 +4,7 @@ The Budgets module adds projects to any participatory process. It adds a CRUD en
4
4
 
5
5
  ## Usage
6
6
 
7
- Budgets will be available as a Feature for a Participatory Process.
7
+ Budgets will be available as a Component for a Participatory Process.
8
8
 
9
9
  ## Installation
10
10
 
@@ -2,27 +2,27 @@
2
2
  // = require_self
3
3
 
4
4
  $(() => {
5
- const $projects = $('#projects, #project');
6
- const $budgetSummaryTotal = $('.budget-summary__total');
7
- const $budgetExceedModal = $('#budget-excess');
5
+ const $projects = $("#projects, #project");
6
+ const $budgetSummaryTotal = $(".budget-summary__total");
7
+ const $budgetExceedModal = $("#budget-excess");
8
8
 
9
- const totalBudget = parseInt($budgetSummaryTotal.attr('data-total-budget'), 10);
9
+ const totalBudget = parseInt($budgetSummaryTotal.attr("data-total-budget"), 10);
10
10
 
11
11
  const cancelEvent = (event) => {
12
12
  event.stopPropagation();
13
13
  event.preventDefault();
14
14
  };
15
15
 
16
- $projects.on('click', '.budget--list__action', (event) => {
17
- const currentBudget = parseInt($('.budget-summary__progressbox').attr('data-current-budget'), 10);
16
+ $projects.on("click", ".budget--list__action", (event) => {
17
+ const currentBudget = parseInt($(".budget-summary__progressbox").attr("data-current-budget"), 10);
18
18
  const $currentTarget = $(event.currentTarget);
19
- const projectBudget = parseInt($currentTarget.attr('data-budget'), 10);
19
+ const projectBudget = parseInt($currentTarget.attr("data-budget"), 10);
20
20
 
21
- if ($currentTarget.attr('disabled')) {
21
+ if ($currentTarget.attr("disabled")) {
22
22
  cancelEvent(event);
23
23
 
24
- } else if ($currentTarget.attr('data-add') && ((currentBudget + projectBudget) > totalBudget)) {
25
- $budgetExceedModal.foundation('toggle');
24
+ } else if ($currentTarget.attr("data-add") && ((currentBudget + projectBudget) > totalBudget)) {
25
+ $budgetExceedModal.foundation("toggle");
26
26
  cancelEvent(event);
27
27
  }
28
28
  });
@@ -32,7 +32,7 @@ module Decidim
32
32
  private
33
33
 
34
34
  def order
35
- @order ||= Order.create!(user: @current_user, feature: @project.feature)
35
+ @order ||= Order.create!(user: @current_user, component: @project.component)
36
36
  end
37
37
 
38
38
  def add_line_item
@@ -42,12 +42,12 @@ module Decidim
42
42
  end
43
43
  end
44
44
 
45
- def feature
46
- @project.feature
45
+ def component
46
+ @project.component
47
47
  end
48
48
 
49
49
  def votes_disabled?
50
- !feature.current_settings.votes_enabled?
50
+ !component.current_settings.votes_enabled?
51
51
  end
52
52
  end
53
53
  end
@@ -29,10 +29,12 @@ module Decidim
29
29
  attr_reader :project
30
30
 
31
31
  def create_project
32
- @project = Project.create!(
32
+ @project = Decidim.traceability.create!(
33
+ Project,
34
+ @form.current_user,
33
35
  scope: @form.scope,
34
36
  category: @form.category,
35
- feature: @form.current_feature,
37
+ component: @form.current_component,
36
38
  title: @form.title,
37
39
  description: @form.description,
38
40
  budget: @form.budget
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Budgets
5
+ module Admin
6
+ # This command is executed when the user deletes a Project from the admin
7
+ # panel.
8
+ class DestroyProject < Rectify::Command
9
+ # Initializes an UpdateProject Command.
10
+ #
11
+ # project - The current instance of the project to be destroyed.
12
+ # current_user - the user that performs the action
13
+ def initialize(project, current_user)
14
+ @project = project
15
+ @current_user = current_user
16
+ end
17
+
18
+ # Performs the action.
19
+ #
20
+ # Broadcasts :ok if successful, :invalid otherwise.
21
+ def call
22
+ destroy_project
23
+ broadcast(:ok)
24
+ end
25
+
26
+ private
27
+
28
+ attr_reader :project, :current_user
29
+
30
+ def destroy_project
31
+ Decidim.traceability.perform_action!(
32
+ :delete,
33
+ project,
34
+ current_user
35
+ ) do
36
+ project.destroy!
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -34,7 +34,9 @@ module Decidim
34
34
  attr_reader :project, :form
35
35
 
36
36
  def update_project
37
- project.update!(
37
+ Decidim.traceability.update!(
38
+ project,
39
+ form.current_user,
38
40
  scope: form.scope,
39
41
  category: form.category,
40
42
  title: form.title,
@@ -7,10 +7,10 @@ module Decidim
7
7
  # Public: Initializes the command.
8
8
  #
9
9
  # order - The current order for the user.
10
- # feature - The current feature.
11
- def initialize(order, feature)
10
+ # component - The current component.
11
+ def initialize(order, component)
12
12
  @order = order
13
- @feature = feature
13
+ @component = component
14
14
  end
15
15
 
16
16
  # Executes the command. Broadcasts these events:
@@ -15,7 +15,7 @@ module Decidim
15
15
  #
16
16
  # Returns an Order.
17
17
  def current_order
18
- @current_order ||= Order.includes(:projects).find_by(user: current_user, feature: current_feature)
18
+ @current_order ||= Order.includes(:projects).find_by(user: current_user, component: current_component)
19
19
  end
20
20
 
21
21
  def current_order=(order)
@@ -6,13 +6,13 @@ module Decidim
6
6
  # This controller is the abstract class from which all other controllers of
7
7
  # this engine inherit.
8
8
  #
9
- # Note that it inherits from `Decidim::Features::BaseController`, which
9
+ # Note that it inherits from `Decidim::Components::BaseController`, which
10
10
  # override its layout and provide all kinds of useful methods.
11
- class ApplicationController < Decidim::Admin::Features::BaseController
11
+ class ApplicationController < Decidim::Admin::Components::BaseController
12
12
  helper_method :projects, :project
13
13
 
14
14
  def projects
15
- @projects ||= Project.where(feature: current_feature)
15
+ @projects ||= Project.where(component: current_component)
16
16
  end
17
17
 
18
18
  def project
@@ -9,7 +9,7 @@ module Decidim
9
9
  include Decidim::Admin::Concerns::HasAttachmentCollections
10
10
 
11
11
  def after_destroy_path
12
- project_attachment_collections_path(project, project.feature, current_participatory_space)
12
+ project_attachment_collections_path(project, project.component, current_participatory_space)
13
13
  end
14
14
 
15
15
  def collection_for
@@ -21,7 +21,7 @@ module Decidim
21
21
  end
22
22
 
23
23
  def authorization_object
24
- project.feature
24
+ project.component
25
25
  end
26
26
  end
27
27
  end
@@ -22,7 +22,7 @@ module Decidim
22
22
  end
23
23
 
24
24
  def authorization_object
25
- project.feature
25
+ project.component
26
26
  end
27
27
  end
28
28
  end
@@ -48,21 +48,22 @@ module Decidim
48
48
  end
49
49
 
50
50
  def destroy
51
- project.destroy!
52
-
53
- flash[:notice] = I18n.t("projects.destroy.success", scope: "decidim.budgets.admin")
54
-
55
- redirect_to projects_path
51
+ DestroyProject.call(project, current_user) do
52
+ on(:ok) do
53
+ flash[:notice] = I18n.t("projects.destroy.success", scope: "decidim.budgets.admin")
54
+ redirect_to projects_path
55
+ end
56
+ end
56
57
  end
57
58
 
58
59
  private
59
60
 
60
61
  def projects
61
- @projects ||= Project.where(feature: current_feature).page(params[:page]).per(15)
62
+ @projects ||= Project.where(component: current_component).page(params[:page]).per(15)
62
63
  end
63
64
 
64
65
  def orders
65
- @orders ||= Order.where(feature: current_feature)
66
+ @orders ||= Order.where(component: current_component)
66
67
  end
67
68
 
68
69
  def pending_orders
@@ -5,9 +5,9 @@ module Decidim
5
5
  # This controller is the abstract class from which all other controllers of
6
6
  # this engine inherit.
7
7
  #
8
- # Note that it inherits from `Decidim::Features::BaseController`, which
8
+ # Note that it inherits from `Decidim::Components::BaseController`, which
9
9
  # override its layout and provide all kinds of useful methods.
10
- class ApplicationController < Decidim::Features::BaseController
10
+ class ApplicationController < Decidim::Components::BaseController
11
11
  end
12
12
  end
13
13
  end
@@ -44,7 +44,7 @@ module Decidim
44
44
  private
45
45
 
46
46
  def project
47
- @project ||= Project.where(id: params[:project_id], feature: current_feature).first
47
+ @project ||= Project.find_by(id: params[:project_id], component: current_component)
48
48
  end
49
49
  end
50
50
  end
@@ -9,7 +9,7 @@ module Decidim
9
9
  def checkout
10
10
  authorize_action! "vote"
11
11
 
12
- Checkout.call(current_order, current_feature) do
12
+ Checkout.call(current_order, current_component) do
13
13
  on(:ok) do
14
14
  flash[:notice] = I18n.t("orders.checkout.success", scope: "decidim")
15
15
  redirect_to projects_path
@@ -12,7 +12,7 @@ module Decidim
12
12
  private
13
13
 
14
14
  def projects
15
- @projects ||= search.results.page(params[:page]).per(12)
15
+ @projects ||= search.results.page(params[:page]).per(current_component.settings.projects_per_page)
16
16
  end
17
17
 
18
18
  def random_seed
@@ -37,7 +37,7 @@ module Decidim
37
37
  end
38
38
 
39
39
  def context_params
40
- { feature: current_feature, organization: current_organization }
40
+ { component: current_component, organization: current_organization }
41
41
  end
42
42
  end
43
43
  end
@@ -25,7 +25,7 @@ module Decidim
25
25
 
26
26
  validate :scope_belongs_to_participatory_space_scope
27
27
 
28
- delegate :categories, to: :current_feature
28
+ delegate :categories, to: :current_component
29
29
 
30
30
  def map_model(model)
31
31
  self.proposal_ids = model.linked_resources(:proposals, "included_proposals").pluck(:id)
@@ -36,7 +36,7 @@ module Decidim
36
36
  end
37
37
 
38
38
  def proposals
39
- @proposals ||= Decidim.find_resource_manifest(:proposals).try(:resource_scope, current_feature)&.order(title: :asc)&.pluck(:title, :id)
39
+ @proposals ||= Decidim.find_resource_manifest(:proposals).try(:resource_scope, current_component)&.order(title: :asc)&.pluck(:title, :id)
40
40
  end
41
41
 
42
42
  # Finds the Category from the decidim_category_id.
@@ -9,11 +9,11 @@ module Decidim
9
9
  belongs_to :project, class_name: "Decidim::Budgets::Project", foreign_key: "decidim_project_id"
10
10
 
11
11
  validates :order, uniqueness: { scope: :project }
12
- validate :same_feature
12
+ validate :same_component
13
13
 
14
- def same_feature
14
+ def same_component
15
15
  return unless order && project
16
- errors.add(:order, :invalid) unless order.feature == project.feature
16
+ errors.add(:order, :invalid) unless order.component == project.component
17
17
  end
18
18
  end
19
19
  end
@@ -3,18 +3,18 @@
3
3
  module Decidim
4
4
  module Budgets
5
5
  # The data store for a Order in the Decidim::Budgets component. It is unique for each
6
- # user and feature and contains a collection of projects
6
+ # user and component and contains a collection of projects
7
7
  class Order < Budgets::ApplicationRecord
8
- include Decidim::HasFeature
8
+ include Decidim::HasComponent
9
9
 
10
- feature_manifest_name "budgets"
10
+ component_manifest_name "budgets"
11
11
 
12
12
  belongs_to :user, class_name: "Decidim::User", foreign_key: "decidim_user_id"
13
13
 
14
14
  has_many :line_items, class_name: "Decidim::Budgets::LineItem", foreign_key: "decidim_order_id", dependent: :destroy
15
15
  has_many :projects, through: :line_items, class_name: "Decidim::Budgets::Project", foreign_key: "decidim_project_id"
16
16
 
17
- validates :user, uniqueness: { scope: :feature }
17
+ validates :user, uniqueness: { scope: :component }
18
18
  validate :user_belongs_to_organization
19
19
 
20
20
  validates :total_budget, numericality: {
@@ -45,25 +45,25 @@ module Decidim
45
45
 
46
46
  # Public: Returns the order budget percent from the settings total budget
47
47
  def budget_percent
48
- (total_budget.to_f / feature.settings.total_budget.to_f) * 100
48
+ (total_budget.to_f / component.settings.total_budget.to_f) * 100
49
49
  end
50
50
 
51
51
  # Public: Returns the required minimum budget to checkout
52
52
  def minimum_budget
53
- return 0 unless feature
54
- feature.settings.total_budget.to_f * (feature.settings.vote_threshold_percent.to_f / 100)
53
+ return 0 unless component
54
+ component.settings.total_budget.to_f * (component.settings.vote_threshold_percent.to_f / 100)
55
55
  end
56
56
 
57
57
  # Public: Returns the required maximum budget to checkout
58
58
  def maximum_budget
59
- return 0 unless feature
60
- feature.settings.total_budget.to_f
59
+ return 0 unless component
60
+ component.settings.total_budget.to_f
61
61
  end
62
62
 
63
63
  private
64
64
 
65
65
  def user_belongs_to_organization
66
- organization = feature&.organization
66
+ organization = component&.organization
67
67
 
68
68
  return if !user || !organization
69
69
  errors.add(:user, :invalid) unless user.organization == organization
@@ -6,27 +6,33 @@ module Decidim
6
6
  # title, description and any other useful information to render a custom project.
7
7
  class Project < Budgets::ApplicationRecord
8
8
  include Decidim::Resourceable
9
- include Decidim::HasFeature
10
- include Decidim::ScopableFeature
9
+ include Decidim::HasComponent
10
+ include Decidim::ScopableComponent
11
11
  include Decidim::HasCategory
12
12
  include Decidim::HasAttachments
13
13
  include Decidim::HasAttachmentCollections
14
14
  include Decidim::HasReference
15
15
  include Decidim::Followable
16
16
  include Decidim::Comments::Commentable
17
+ include Decidim::Traceable
18
+ include Decidim::Loggable
17
19
 
18
- feature_manifest_name "budgets"
20
+ component_manifest_name "budgets"
19
21
  has_many :line_items, class_name: "Decidim::Budgets::LineItem", foreign_key: "decidim_project_id", dependent: :destroy
20
22
  has_many :orders, through: :line_items, foreign_key: "decidim_project_id", class_name: "Decidim::Budgets::Order"
21
23
 
24
+ def self.log_presenter_class_for(_log)
25
+ Decidim::Budgets::AdminLog::ProjectPresenter
26
+ end
27
+
22
28
  # Public: Overrides the `commentable?` Commentable concern method.
23
29
  def commentable?
24
- feature.settings.comments_enabled?
30
+ component.settings.comments_enabled?
25
31
  end
26
32
 
27
33
  # Public: Overrides the `accepts_new_comments?` Commentable concern method.
28
34
  def accepts_new_comments?
29
- commentable? && !feature.current_settings.comments_blocked
35
+ commentable? && !component.current_settings.comments_blocked
30
36
  end
31
37
 
32
38
  # Public: Overrides the `comments_have_votes?` Commentable concern method.
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Budgets
5
+ module AdminLog
6
+ # This class holds the logic to present a `Decidim::Budgets::Project``
7
+ # for the `AdminLog` log.
8
+ #
9
+ # Usage should be automatic and you shouldn't need to call this class
10
+ # directly, but here's an example:
11
+ #
12
+ # action_log = Decidim::ActionLog.last
13
+ # view_helpers # => this comes from the views
14
+ # ProjectPresenter.new(action_log, view_helpers).present
15
+ class ProjectPresenter < Decidim::Log::BasePresenter
16
+ private
17
+
18
+ def action_string
19
+ case action
20
+ when "create", "delete", "update"
21
+ "decidim.budgets.admin_log.project.#{action}"
22
+ else
23
+ super
24
+ end
25
+ end
26
+
27
+ def diff_fields_mapping
28
+ {
29
+ budget: :currency,
30
+ description: :i18n,
31
+ title: :i18n,
32
+ decidim_scope_id: :scope
33
+ }
34
+ end
35
+
36
+ def i18n_labels_scope
37
+ "activemodel.attributes.project"
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -2,32 +2,32 @@
2
2
 
3
3
  module Decidim
4
4
  module Budgets
5
- # A class used to find projects filtered by features and a date range
5
+ # A class used to find projects filtered by components and a date range
6
6
  class FilteredProjects < Rectify::Query
7
7
  # Syntactic sugar to initialize the class and return the queried objects.
8
8
  #
9
- # features - An array of Decidim::Feature
9
+ # components - An array of Decidim::Component
10
10
  # start_at - A date to filter resources created after it
11
11
  # end_at - A date to filter resources created before it.
12
- def self.for(features, start_at = nil, end_at = nil)
13
- new(features, start_at, end_at).query
12
+ def self.for(components, start_at = nil, end_at = nil)
13
+ new(components, start_at, end_at).query
14
14
  end
15
15
 
16
16
  # Initializes the class.
17
17
  #
18
- # features - An array of Decidim::Feature
18
+ # components - An array of Decidim::Component
19
19
  # start_at - A date to filter resources created after it
20
20
  # end_at - A date to filter resources created before it.
21
- def initialize(features, start_at = nil, end_at = nil)
22
- @features = features
21
+ def initialize(components, start_at = nil, end_at = nil)
22
+ @components = components
23
23
  @start_at = start_at
24
24
  @end_at = end_at
25
25
  end
26
26
 
27
- # Finds the Projects scoped to an array of features and filtered
27
+ # Finds the Projects scoped to an array of components and filtered
28
28
  # by a range of dates.
29
29
  def query
30
- projects = Decidim::Budgets::Project.where(feature: @features)
30
+ projects = Decidim::Budgets::Project.where(component: @components)
31
31
  projects = projects.where("created_at >= ?", @start_at) if @start_at.present?
32
32
  projects = projects.where("created_at <= ?", @end_at) if @end_at.present?
33
33
  projects
@@ -3,11 +3,11 @@
3
3
  module Decidim
4
4
  module Budgets
5
5
  # This class handles search and filtering of projects. Needs a
6
- # `current_feature` param with a `Decidim::Feature` in order to
6
+ # `current_component` param with a `Decidim::Component` in order to
7
7
  # find the projects.
8
8
  class ProjectSearch < ResourceSearch
9
9
  # Public: Initializes the service.
10
- # feature - A Decidim::Feature to get the projects from.
10
+ # component - A Decidim::Component to get the projects from.
11
11
  def initialize(options = {})
12
12
  super(Project.all, options)
13
13
  @random_seed = options[:random_seed].to_f
@@ -4,25 +4,25 @@
4
4
  </div>
5
5
 
6
6
  <div class="card-section">
7
- <div class="row column" >
7
+ <div class="row column">
8
8
  <%= form.translated :text_field, :title, autofocus: true %>
9
9
  </div>
10
10
 
11
- <div class="row column" >
11
+ <div class="row column">
12
12
  <%= form.translated :editor, :description %>
13
13
  </div>
14
14
 
15
- <div class="row column" >
15
+ <div class="row column">
16
16
  <%= form.number_field :budget %>
17
17
  </div>
18
18
 
19
19
  <% if current_participatory_space.has_subscopes? %>
20
- <div class="row column" >
20
+ <div class="row column">
21
21
  <%= scopes_picker_field form, :decidim_scope_id %>
22
22
  </div>
23
23
  <% end %>
24
24
 
25
- <div class="row column" >
25
+ <div class="row column">
26
26
  <%= form.categories_select :decidim_category_id, current_participatory_space.categories, include_blank: true, disable_parents: false %>
27
27
  </div>
28
28
 
@@ -31,8 +31,7 @@
31
31
  <%= form.select :proposal_ids,
32
32
  @form.proposals,
33
33
  {},
34
- { multiple: true, class: "chosen-select" }
35
- %>
34
+ { multiple: true, class: "chosen-select" } %>
36
35
  <% end %>
37
36
  </div>
38
37
  </div>
@@ -1,5 +1,5 @@
1
- <%= decidim_form_for(@form, html: { class: "form edit_project" }) do |f| %>
2
- <%= render partial: 'form', object: f, locals: { title: t('.title') } %>
1
+ <%= decidim_form_for(@form, html: { class: "form edit_project" }) do |f| %>
2
+ <%= render partial: "form", object: f, locals: { title: t(".title") } %>
3
3
 
4
4
  <div class="button--double form-general-submit">
5
5
  <%= f.submit t(".update") %>
@@ -2,7 +2,7 @@
2
2
  <div class="card-divider">
3
3
  <h2 class="card-title">
4
4
  <%= t(".title") %>
5
- <%= link_to t("actions.new", scope: "decidim.budgets", name: t("models.project.name", scope: "decidim.budgets.admin")), new_project_path, class: 'button tiny button--title' if can? :manage, current_feature %>
5
+ <%= link_to t("actions.new", scope: "decidim.budgets", name: t("models.project.name", scope: "decidim.budgets.admin")), new_project_path, class: "button tiny button--title" if can? :manage, current_component %>
6
6
  </h2>
7
7
  </div>
8
8
 
@@ -28,19 +28,19 @@
28
28
  <td class="table-list__actions">
29
29
  <%= icon_link_to "eye", resource_locator(project).path, t("actions.preview", scope: "decidim.budgets"), target: :blank, class: "action-icon--preview" %>
30
30
 
31
- <% if can? :update, current_feature %>
31
+ <% if can? :update, current_component %>
32
32
  <%= icon_link_to "pencil", edit_project_path(project), t("actions.edit", scope: "decidim.budgets"), class: "action-icon--edit" %>
33
33
  <% end %>
34
34
 
35
- <% if can? :update, current_feature %>
35
+ <% if can? :update, current_component %>
36
36
  <%= icon_link_to "folder", project_attachment_collections_path(project), t("actions.attachment_collections", scope: "decidim.budgets"), class: "action-icon--attachment_collections" %>
37
37
  <% end %>
38
38
 
39
- <% if can? :update, current_feature %>
39
+ <% if can? :update, current_component %>
40
40
  <%= icon_link_to "paperclip", project_attachments_path(project), t("actions.attachments", scope: "decidim.budgets"), class: "action-icon--attachments" %>
41
41
  <% end %>
42
42
 
43
- <% if can? :destroy, current_feature %>
43
+ <% if can? :destroy, current_component %>
44
44
  <%= icon_link_to "circle-x", project_path(project), t("actions.destroy", scope: "decidim.budgets"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.budgets") } %>
45
45
  <% end %>
46
46
  </td>
@@ -1,8 +1,7 @@
1
- <%= decidim_form_for(@form, html: { class: "form new_project" }) do |f| %>
2
- <%= render partial: 'form', object: f, locals: { title: t('.title') } %>
1
+ <%= decidim_form_for(@form, html: { class: "form new_project" }) do |f| %>
2
+ <%= render partial: "form", object: f, locals: { title: t(".title") } %>
3
3
 
4
4
  <div class="button--double form-general-submit">
5
5
  <%= f.submit t(".create") %>
6
6
  </div>
7
7
  <% end %>
8
-