diff --git a/app/controllers/proposals_controller.rb b/app/controllers/proposals_controller.rb
index cbf2af121..e91d20de9 100644
--- a/app/controllers/proposals_controller.rb
+++ b/app/controllers/proposals_controller.rb
@@ -23,7 +23,13 @@ class ProposalsController < ApplicationController
end
def index_customization
- @featured_proposals = Proposal.all.sort_by_confidence_score.limit(3) if (!@advanced_search_terms && @search_terms.blank? && @tag_filter.blank?)
+ if params[:retired].present?
+ @resources = @resources.retired
+ else
+ @resources = @resources.not_retired
+ end
+
+ @featured_proposals = Proposal.all.sort_by_confidence_score.limit(3) if (!@advanced_search_terms && @search_terms.blank? && @tag_filter.blank? && params[:retired].blank?)
if @featured_proposals.present?
set_featured_proposal_votes(@featured_proposals)
@resources = @resources.where('proposals.id NOT IN (?)', @featured_proposals.map(&:id))
diff --git a/app/models/proposal.rb b/app/models/proposal.rb
index be08b5654..e6071e052 100644
--- a/app/models/proposal.rb
+++ b/app/models/proposal.rb
@@ -46,6 +46,7 @@ class Proposal < ActiveRecord::Base
scope :sort_by_flags, -> { order(flags_count: :desc, updated_at: :desc) }
scope :last_week, -> { where("proposals.created_at >= ?", 7.days.ago)}
scope :retired, -> { where.not(retired_at: nil) }
+ scope :not_retired, -> { where(retired_at: nil) }
def to_param
"#{id}-#{title}".parameterize
diff --git a/app/views/proposals/_retired.html.erb b/app/views/proposals/_retired.html.erb
new file mode 100644
index 000000000..73d8a7844
--- /dev/null
+++ b/app/views/proposals/_retired.html.erb
@@ -0,0 +1,6 @@
+
+
+
+
+ <%= link_to t("proposals.index.retired_proposals_link"), proposals_path(retired: 1), class: "small" %>
+
diff --git a/app/views/proposals/index.html.erb b/app/views/proposals/index.html.erb
index 970e1cb3e..065553cce 100644
--- a/app/views/proposals/index.html.erb
+++ b/app/views/proposals/index.html.erb
@@ -22,6 +22,8 @@
<%= page_entries_info @proposals %>
<%= t("proposals.index.filter_topic", count: @proposals.size, topic: @tag_filter) %>
+ <% elsif params[:retired].present? %>
+ <%= t("proposals.index.retired_proposals") %>
<% end %>
@@ -57,6 +59,7 @@
<%= render 'categories' %>
<%= render 'geozones' %>
<%= render 'popular' %>
+ <%= render 'retired' %>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 0df604469..a79ceaca6 100755
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -296,6 +296,8 @@ en:
hot_score: most active
most_commented: most commented
relevance: relevance
+ retired_proposals: Retired proposals
+ retired_proposals_link: "Proposals retired by the author (duplicated, unfeasibles, done, etc.)"
search_form:
button: Search
placeholder: Search proposals...
diff --git a/config/locales/es.yml b/config/locales/es.yml
index c67136e9e..38da0cb2c 100755
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -296,6 +296,8 @@ es:
hot_score: Más activas hoy
most_commented: Más comentadas
relevance: Más relevantes
+ retired_proposals: Propuestas retiradas
+ retired_proposals_link: "Propuestas retiradas por sus autores (realizadas, en ejecución, inviables, duplicadas, etc.)"
search_form:
button: Buscar
placeholder: Buscar propuestas...
diff --git a/spec/features/proposals_spec.rb b/spec/features/proposals_spec.rb
index adcaf486c..d770f9d9a 100644
--- a/spec/features/proposals_spec.rb
+++ b/spec/features/proposals_spec.rb
@@ -430,7 +430,7 @@ feature 'Proposals' do
end
- context 'Retire a proposal' do
+ context 'Retired proposals' do
scenario 'Retire' do
proposal = create(:proposal)
login_as(proposal.author)
@@ -466,6 +466,34 @@ feature 'Proposals' do
expect(page).to_not have_content 'Proposal retired'
expect(page).to have_content "can't be blank", count: 2
end
+
+ scenario 'Index do not list retired proposals by default' do
+ create_featured_proposals
+ not_retired = create(:proposal)
+ retired = create(:proposal, retired_at: Time.now)
+
+ visit proposals_path
+
+ expect(page).to have_selector('#proposals .proposal', count: 1)
+ within('#proposals') do
+ expect(page).to have_content not_retired.title
+ expect(page).to_not have_content retired.title
+ end
+ end
+
+ scenario 'Index has a link to retired proposals list' do
+ create_featured_proposals
+ not_retired = create(:proposal)
+ retired = create(:proposal, retired_at: Time.now)
+
+ visit proposals_path
+
+ expect(page).to_not have_content retired.title
+ click_link 'Proposals retired by the author (duplicated, unfeasibles, done, etc.)'
+
+ expect(page).to have_content retired.title
+ expect(page).to_not have_content not_retired.title
+ end
end
scenario 'Update should not be posible if logged user is not the author' do
diff --git a/spec/models/proposal_spec.rb b/spec/models/proposal_spec.rb
index dddab0fbc..4958204ec 100644
--- a/spec/models/proposal_spec.rb
+++ b/spec/models/proposal_spec.rb
@@ -758,6 +758,13 @@ describe Proposal do
expect(retired.size).to eq(1)
expect(retired.first).to eq(@proposal2)
end
+
+ it "scope not_retired" do
+ not_retired = Proposal.not_retired
+
+ expect(not_retired.size).to eq(1)
+ expect(not_retired.first).to eq(@proposal1)
+ end
end
end