Adds view mode on proposals

This commit is contained in:
decabeza
2018-03-23 20:02:50 +01:00
parent 2f5561bf03
commit bdedb023d1
5 changed files with 94 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ class ProposalsController < ApplicationController
before_action :load_geozones, only: [:edit, :map, :summary]
before_action :authenticate_user!, except: [:index, :show, :map, :summary]
before_action :destroy_map_location_association, only: :update
before_action :set_view, only: :index
feature_flag :proposals
@@ -127,6 +128,10 @@ class ProposalsController < ApplicationController
end
end
def set_view
@view = (params[:view] == "minimal") ? "minimal" : "default"
end
def load_successful_proposals
@proposal_successful_exists = Proposal.successful.exists?
end

View File

@@ -48,4 +48,20 @@ module ProposalsHelper
current_user && proposal.editable_by?(current_user)
end
def proposals_minimal_view_path
proposals_path(view: proposals_secondary_view)
end
def proposals_default_view?
@view == "default"
end
def proposals_current_view
@view
end
def proposals_secondary_view
proposals_current_view == "default" ? "minimal" : "default"
end
end

View File

@@ -0,0 +1,14 @@
<div id="<%= dom_id(proposal) %>" class="proposal minimal clear" data-type="proposal">
<div class="panel">
<div class="row">
<div class="small-12 column">
<div class="proposal-content">
<% cache [locale_and_user_status(proposal),
'index_minimal', proposal, proposal.author] do %>
<h3><%= link_to proposal.title, namespaced_proposal_path(proposal) %></h3>
<% end %>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,30 @@
<div class="float-right view-mode <%= @view %>">
<button class="button" type="button" data-toggle="view_mode">
<span class="show-for-sr"><%= t("shared.view_mode.title") %></span>
</button>
<div class="dropdown-pane" id="view_mode" data-dropdown data-hover="true" data-hover-pane="true">
<span class="uppercase">
<strong>
<%= t("shared.view_mode.title") %>
</strong>
</span>
<ul class="no-bullet">
<% if proposals_default_view? %>
<li class="view-card active">
<%= t("shared.view_mode.cards") %>
</li>
<li class="view-list">
<%= link_to t("shared.view_mode.list"), proposals_minimal_view_path %>
</li>
<% else %>
<li class="view-card">
<%= link_to t("shared.view_mode.cards"), proposals_minimal_view_path %>
</li>
<li class="view-list active">
<%= t("shared.view_mode.list") %>
</li>
<% end %>
</ul>
</div>
</div>

View File

@@ -48,6 +48,35 @@ feature 'Proposals' do
end
end
scenario 'Index view mode' do
featured_proposals = create_featured_proposals
proposals = [create(:proposal), create(:proposal), create(:proposal)]
visit proposals_path
click_button 'View mode'
click_link 'List'
proposals.each do |proposal|
within('#proposals') do
expect(page).to have_link proposal.title
expect(page).to_not have_content proposal.summary
end
end
click_button 'View mode'
click_link 'Cards'
proposals.each do |proposal|
within('#proposals') do
expect(page).to have_link proposal.title
expect(page).to have_content proposal.summary
end
end
end
scenario 'Pagination' do
per_page = Kaminari.config.default_per_page
(per_page + 5).times { create(:proposal) }