diff --git a/app/controllers/budgets/budgets_controller.rb b/app/controllers/budget/budgets_controller.rb similarity index 71% rename from app/controllers/budgets/budgets_controller.rb rename to app/controllers/budget/budgets_controller.rb index e673bf8ba..c084f4475 100644 --- a/app/controllers/budgets/budgets_controller.rb +++ b/app/controllers/budget/budgets_controller.rb @@ -1,8 +1,9 @@ -module Budgets +class Budget class BudgetsController < ApplicationController load_and_authorize_resource def index + @budgets = Budget.all end end diff --git a/app/controllers/budget/investments_controller.rb b/app/controllers/budget/investments_controller.rb new file mode 100644 index 000000000..d08038174 --- /dev/null +++ b/app/controllers/budget/investments_controller.rb @@ -0,0 +1,85 @@ +class Budget + class InvestmentsController < ApplicationController + include FeatureFlags + + before_action :load_investments, only: [:index] + before_action :load_geozone, only: [:index, :unfeasible] + + skip_authorization_check + + before_action :authenticate_user!, except: [:index, :show] + before_action -> { flash.now[:notice] = flash[:notice].html_safe if flash[:html_safe] && flash[:notice] } + + load_and_authorize_resource + + feature_flag :spending_proposals + + invisible_captcha only: [:create, :update], honeypot: :subtitle + + respond_to :html, :js + + def index + load_investments + set_spending_proposal_votes(@investments) + end + + def new + @spending_proposal = SpendingProposal.new + end + + def show + set_spending_proposal_votes(@spending_proposal) + end + + def create + @spending_proposal = SpendingProposal.new(spending_proposal_params) + @spending_proposal.author = current_user + + if @spending_proposal.save + notice = t('flash.actions.create.spending_proposal', activity: "#{t('layouts.header.my_activity_link')}") + redirect_to @spending_proposal, notice: notice, flash: { html_safe: true } + else + render :new + end + end + + def destroy + spending_proposal = SpendingProposal.find(params[:id]) + spending_proposal.destroy + redirect_to user_path(current_user, filter: 'spending_proposals'), notice: t('flash.actions.destroy.spending_proposal') + end + + def vote + @spending_proposal.register_vote(current_user, 'yes') + set_spending_proposal_votes(@spending_proposal) + end + + private + + def spending_proposal_params + params.require(:spending_proposal).permit(:title, :description, :external_url, :geozone_id, :association_name, :terms_of_service) + end + + def load_investments + @investments = filter_and_search(Budget::Investment) + end + + def filter_and_search(target) + target = target.unfeasible if params[:unfeasible].present? + target = target.by_geozone(params[:geozone]) if params[:geozone].present? + target = target.search(params[:search]) if params[:search].present? + target.page(params[:page]).for_render + end + + def load_geozone + return if params[:geozone].blank? + + if params[:geozone] == 'all' + @geozone_name = t('geozones.none') + else + @geozone_name = Geozone.find(params[:geozone]).name + end + end + + end +end \ No newline at end of file diff --git a/app/controllers/budgets/investments_controller.rb b/app/controllers/budgets/investments_controller.rb deleted file mode 100644 index f86b1ea2b..000000000 --- a/app/controllers/budgets/investments_controller.rb +++ /dev/null @@ -1,9 +0,0 @@ -module Budgets - class InvestmentsController < ApplicationController - skip_authorization_check - - def index - end - - end -end \ No newline at end of file diff --git a/app/models/abilities/everyone.rb b/app/models/abilities/everyone.rb index 0246afeb2..6109a9dbe 100644 --- a/app/models/abilities/everyone.rb +++ b/app/models/abilities/everyone.rb @@ -11,6 +11,7 @@ module Abilities can :read, User can [:search, :read], Annotation can [:read], Budget + can [:read], Budget::Investment can :new, DirectMessage end end diff --git a/app/views/budgets/budgets/_budget.html.erb b/app/views/budget/budgets/_budget.html.erb similarity index 90% rename from app/views/budgets/budgets/_budget.html.erb rename to app/views/budget/budgets/_budget.html.erb index 8962ecc2a..a88d9d181 100644 --- a/app/views/budgets/budgets/_budget.html.erb +++ b/app/views/budget/budgets/_budget.html.erb @@ -1,4 +1,3 @@
<%= budget.name %>
-
- + \ No newline at end of file diff --git a/app/views/budgets/budgets/index.html.erb b/app/views/budget/budgets/index.html.erb similarity index 100% rename from app/views/budgets/budgets/index.html.erb rename to app/views/budget/budgets/index.html.erb diff --git a/app/views/budget/investments/_investment.html.erb b/app/views/budget/investments/_investment.html.erb new file mode 100644 index 000000000..40d534067 --- /dev/null +++ b/app/views/budget/investments/_investment.html.erb @@ -0,0 +1,3 @@ +
+
<%= investment.title %>
+
diff --git a/app/views/budget/investments/index.html.erb b/app/views/budget/investments/index.html.erb new file mode 100644 index 000000000..95f9db31d --- /dev/null +++ b/app/views/budget/investments/index.html.erb @@ -0,0 +1,2 @@ +hello budgets! +<%= render partial: 'investment', collection: @investments %> \ No newline at end of file diff --git a/app/views/budgets/investments/index.html.erb b/app/views/budgets/investments/index.html.erb deleted file mode 100644 index 7b6743e31..000000000 --- a/app/views/budgets/investments/index.html.erb +++ /dev/null @@ -1 +0,0 @@ -hello budgets! diff --git a/config/routes.rb b/config/routes.rb index 22518f8c8..8564928a5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -75,7 +75,7 @@ Rails.application.routes.draw do end end - scope module: :budgets do + scope module: :budget do resources :budgets do resources :investments, only: [:index] end