diff --git a/app/controllers/spending_proposals_controller.rb b/app/controllers/spending_proposals_controller.rb
index 1c2c83047..28c1862e6 100644
--- a/app/controllers/spending_proposals_controller.rb
+++ b/app/controllers/spending_proposals_controller.rb
@@ -11,6 +11,8 @@ class SpendingProposalsController < ApplicationController
feature_flag :spending_proposals
def index
+ @spending_proposals = @search_terms.present? ? SpendingProposal.search(@search_terms) : SpendingProposal.all
+ @spending_proposals = @spending_proposals.page(params[:page]).for_render
end
def new
diff --git a/app/views/spending_proposals/_sidebar.html.erb b/app/views/spending_proposals/_sidebar.html.erb
new file mode 100644
index 000000000..7ab1ab525
--- /dev/null
+++ b/app/views/spending_proposals/_sidebar.html.erb
@@ -0,0 +1,11 @@
+
+
+
+ <% Geozone.names.each do |geozone| %>
+ <%= link_to geozone, spending_proposals_path(search: geozone) %>
+ <% end %>
+
+
+
+
-
-
-
<%= t('spending_proposals.index.title') %>
+<% content_for :header_addon do %>
+ <%= render "shared/search_form",
+ search_path: spending_proposals_path(page: 1),
+ i18n_namespace: "spending_proposals.index.search_form" %>
+<% end %>
-
<%= t('spending_proposals.index.text_html') %>
+
+
+
- <% if can? :create, SpendingProposal %>
- <%= link_to t('spending_proposals.index.create_link'), new_spending_proposal_path, class: 'button' %>
- <% else %>
-
<%= t('spending_proposals.index.verified_only', verify_account: link_to(t('spending_proposals.index.verify_account'), verification_path)).html_safe %>
- <% end %>
+
+ <% if @search_terms %>
+
+ <%= page_entries_info @spending_proposals %>
+ <%= t("spending_proposals.index.search_results", count: @spending_proposals.size, search_term: @search_terms) %>
+
+ <% end %>
+
+
+
+ <%= link_to t("spending_proposals.index.start_proposal"), new_spending_proposal_path, class: 'button expanded' %>
+
+ <%= render partial: 'spending_proposals/spending_proposal', collection: @spending_proposals %>
+ <%= paginate @spending_proposals %>
+
+
+
+ <%= render 'sidebar' %>
+
+
+
-
\ No newline at end of file
+
diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml
index c5e88d8dd..40086aab9 100644
--- a/config/i18n-tasks.yml
+++ b/config/i18n-tasks.yml
@@ -131,6 +131,7 @@ ignore_unused:
- 'proposals.index.select_order'
- 'proposals.index.orders.*'
- 'proposals.index.search_form.*'
+ - 'spending_proposals.index.search_form.*'
- 'notifications.index.comments_on*'
- 'notifications.index.replies_to*'
- 'helpers.page_entries_info.*' # kaminari
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 1f752a9f2..158740c47 100755
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -412,11 +412,13 @@ en:
new: Create
title: Spending proposal title
index:
- create_link: Create spending proposal
- text_html: Here you can send spending proposals to be considered in the frame of the annual participatory budgeting.
title: Participatory budgeting
- verified_only: Only verified users can create spending proposals, %{verify_account}.
- verify_account: verify your account
+ search_form:
+ button: Search
+ placeholder: Investment projects...
+ title: Search
+ sidebar:
+ geozones: Scope of operation
new:
back_link: Back
more_info: How do participatory budgeting works?
@@ -425,6 +427,10 @@ en:
recommendation_two: Any proposal or comment suggesting illegal action will be deleted.
recommendations_title: How to create a spending proposal
start_new: Create spending proposal
+ show:
+ author_deleted: User deleted
+ spending_proposal:
+ spending_proposal: Investment project
wrong_price_format: Only integer numbers
stats:
index:
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 0e7a8b125..8c6ce610c 100755
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -412,11 +412,13 @@ es:
new: Crear
title: Título de la propuesta de gasto
index:
- create_link: Enviar propuesta de gasto
- text_html: Desde esta sección podrás sugerir propuestas de gasto que irán asociadas a las partidas de presupuestos ciudadanos.
El requisito principal es que sean propuestas presupuestables.
title: Presupuestos participativos
- verified_only: Sólo los usuarios verificados pueden crear propuestas de gasto, %{verify_account}.
- verify_account: verifica tu cuenta
+ search_form:
+ button: Buscar
+ placeholder: Propuestas de inversión...
+ title: Buscar
+ sidebar:
+ geozones: Ámbitos de actuación
new:
back_link: Volver
more_info: "¿Cómo funcionan los presupuestos participativos?"
@@ -425,6 +427,10 @@ es:
recommendation_two: Cualquier propuesta o comentario que implique acciones ilegales será eliminada.
recommendations_title: Cómo crear una propuesta de gasto
start_new: Crear una propuesta de gasto
+ show:
+ author_deleted: Usuario eliminado
+ spending_proposal:
+ spending_proposal: Propuesta de inversión
wrong_price_format: Solo puede incluir caracteres numéricos
stats:
index:
diff --git a/spec/features/spending_proposals_spec.rb b/spec/features/spending_proposals_spec.rb
index 0fd31f5f7..df9f041b7 100644
--- a/spec/features/spending_proposals_spec.rb
+++ b/spec/features/spending_proposals_spec.rb
@@ -5,17 +5,17 @@ feature 'Spending proposals' do
let(:author) { create(:user, :level_two, username: 'Isabel') }
scenario 'Index' do
- visit spending_proposals_path
-
- expect(page).to_not have_link('Create spending proposal', href: new_spending_proposal_path)
- expect(page).to have_link('verify your account')
-
- login_as(author)
+ spending_proposals = [create(:spending_proposal), create(:spending_proposal), create(:spending_proposal)]
visit spending_proposals_path
- expect(page).to have_link('Create spending proposal', href: new_spending_proposal_path)
- expect(page).to_not have_link('verify your account')
+ expect(page).to have_selector('#investment-projects .investment-project', count: 3)
+ spending_proposals.each do |spending_proposal|
+ within('#investment-projects') do
+ expect(page).to have_content spending_proposal.title
+ expect(page).to have_css("a[href='#{spending_proposal_path(spending_proposal)}']", text: spending_proposal.title)
+ end
+ end
end
scenario 'Create' do