implements /admin/proposals

This commit is contained in:
kikito
2015-09-14 11:30:58 +02:00
parent 26b310a1fe
commit 3df8fe59b3
6 changed files with 164 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
class Admin::ProposalsController < Admin::BaseController
has_filters %w{without_confirmed_hide all with_confirmed_hide}, only: :index
before_action :load_proposal, only: [:confirm_hide, :restore]
def index
@proposals = Proposal.only_hidden.send(@current_filter).order(hidden_at: :desc).page(params[:page])
end
def confirm_hide
@proposal.confirm_hide
redirect_to request.query_parameters.merge(action: :index)
end
def restore
@proposal.restore
redirect_to request.query_parameters.merge(action: :index)
end
private
def load_proposal
@proposal = Proposal.with_hidden.find(params[:id])
end
end

View File

@@ -11,6 +11,13 @@
<% end %>
</li>
<li <%= "class=active" if controller_name == "proposals" %>>
<%= link_to admin_proposals_path do %>
<i class="icon-proposals"></i>
<%= t("admin.menu.hidden_proposals") %>
<% end %>
</li>
<li <%= "class=active" if controller_name == "debates" %>>
<%= link_to admin_debates_path do %>
<i class="icon-debates"></i>

View File

@@ -0,0 +1,28 @@
<h2><%= t("admin.proposals.index.title") %></h2>
<%= render 'shared/filter_subnav', i18n_namespace: "admin.proposals.index" %>
<h3><%= page_entries_info @proposals %></h3>
<ul class="admin-list">
<% @proposals.each do |proposal| %>
<li id="<%= dom_id(proposal) %>">
<%= link_to proposal.title, proposal_path(proposal) %>
<%= link_to t("admin.actions.restore"),
restore_admin_proposal_path(proposal, request.query_parameters),
method: :put,
data: { confirm: t("admin.actions.confirm") },
class: "button radius tiny success right" %>
<% unless proposal.confirmed_hide? %>
<%= link_to t("admin.actions.confirm_hide"),
confirm_hide_admin_proposal_path(proposal, request.query_parameters),
method: :put,
class: "button radius tiny warning right" %>
<% end %>
</li>
<% end %>
</ul>
<%= paginate @proposals %>

View File

@@ -12,6 +12,7 @@ en:
menu:
settings: Global settings
debate_topics: Debate topics
hidden_proposals: Hidden proposals
hidden_debates: Hidden debates
hidden_comments: Hidden comments
hidden_users: Blocked users
@@ -71,6 +72,14 @@ en:
all: All
with_confirmed_hide: Confirmed
without_confirmed_hide: Pending
proposals:
index:
title: Hidden proposals
filter: Filter
filters:
all: All
with_confirmed_hide: Confirmed
without_confirmed_hide: Pending
users:
index:
title: Banned users

View File

@@ -12,6 +12,7 @@ es:
menu:
settings: Configuración global
debate_topics: Temas de debate
hidden_proposals: Propuestas ocultas
hidden_debates: Debates ocultos
hidden_comments: Comentarios ocultos
hidden_users: Usuarios bloqueados
@@ -71,6 +72,14 @@ es:
all: Todos
with_confirmed_hide: Confirmados
without_confirmed_hide: Pendientes
proposals:
index:
title: Propuestas ocultos
filter: Filtro
filters:
all: Todas
with_confirmed_hide: Confirmadas
without_confirmed_hide: Pendientes
users:
index:
title: Usuarios bloqueados

View File

@@ -0,0 +1,85 @@
require 'rails_helper'
feature 'Admin proposals' do
background do
admin = create(:administrator)
login_as(admin.user)
end
scenario 'Restore' do
proposal = create(:proposal, :hidden)
visit admin_proposals_path
click_link 'Restore'
expect(page).to_not have_content(proposal.title)
expect(proposal.reload).to_not be_hidden
end
scenario 'Confirm hide' do
proposal = create(:proposal, :hidden)
visit admin_proposals_path
click_link 'Confirm'
expect(page).to_not have_content(proposal.title)
click_link('Confirmed')
expect(page).to have_content(proposal.title)
expect(proposal.reload).to be_confirmed_hide
end
scenario "Current filter is properly highlighted" do
visit admin_proposals_path
expect(page).to_not have_link('Pending')
expect(page).to have_link('All')
expect(page).to have_link('Confirmed')
visit admin_proposals_path(filter: 'Pending')
expect(page).to_not have_link('Pending')
expect(page).to have_link('All')
expect(page).to have_link('Confirmed')
visit admin_proposals_path(filter: 'all')
expect(page).to have_link('Pending')
expect(page).to_not have_link('All')
expect(page).to have_link('Confirmed')
visit admin_proposals_path(filter: 'with_confirmed_hide')
expect(page).to have_link('All')
expect(page).to have_link('Pending')
expect(page).to_not have_link('Confirmed')
end
scenario "Filtering proposals" do
create(:proposal, :hidden, title: "Unconfirmed proposal")
create(:proposal, :hidden, :with_confirmed_hide, title: "Confirmed proposal")
visit admin_proposals_path(filter: 'pending')
expect(page).to have_content('Unconfirmed proposal')
expect(page).to_not have_content('Confirmed proposal')
visit admin_proposals_path(filter: 'all')
expect(page).to have_content('Unconfirmed proposal')
expect(page).to have_content('Confirmed proposal')
visit admin_proposals_path(filter: 'with_confirmed_hide')
expect(page).to_not have_content('Unconfirmed proposal')
expect(page).to have_content('Confirmed proposal')
end
scenario "Action links remember the pagination setting and the filter" do
per_page = Kaminari.config.default_per_page
(per_page + 2).times { create(:proposal, :hidden, :with_confirmed_hide) }
visit admin_proposals_path(filter: 'with_confirmed_hide', page: 2)
click_on('Restore', match: :first, exact: true)
expect(current_url).to include('filter=with_confirmed_hide')
expect(current_url).to include('page=2')
end
end