Adds view mode on debates
This commit is contained in:
@@ -5,6 +5,7 @@ class DebatesController < ApplicationController
|
|||||||
|
|
||||||
before_action :parse_tag_filter, only: :index
|
before_action :parse_tag_filter, only: :index
|
||||||
before_action :authenticate_user!, except: [:index, :show, :map]
|
before_action :authenticate_user!, except: [:index, :show, :map]
|
||||||
|
before_action :set_view, only: :index
|
||||||
|
|
||||||
feature_flag :debates
|
feature_flag :debates
|
||||||
|
|
||||||
@@ -52,4 +53,8 @@ class DebatesController < ApplicationController
|
|||||||
Debate
|
Debate
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_view
|
||||||
|
@view = (params[:view] == "minimal") ? "minimal" : "default"
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -12,4 +12,20 @@ module DebatesHelper
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def debates_minimal_view_path
|
||||||
|
debates_path(view: debates_secondary_view)
|
||||||
|
end
|
||||||
|
|
||||||
|
def debates_default_view?
|
||||||
|
@view == "default"
|
||||||
|
end
|
||||||
|
|
||||||
|
def debates_current_view
|
||||||
|
@view
|
||||||
|
end
|
||||||
|
|
||||||
|
def debates_secondary_view
|
||||||
|
debates_current_view == "default" ? "minimal" : "default"
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
14
app/views/debates/_debate_minimal.html.erb
Normal file
14
app/views/debates/_debate_minimal.html.erb
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<div id="<%= dom_id(debate) %>" class="debate minimal clear" data-type="debate">
|
||||||
|
<div class="panel">
|
||||||
|
<div class="row">
|
||||||
|
<div class="small-12 column">
|
||||||
|
<div class="debate-content">
|
||||||
|
<% cache [locale_and_user_status,
|
||||||
|
'index_minimal', debate, @debate_votes[debate.id]] do %>
|
||||||
|
<h3><%= link_to debate.title, debate %></h3>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
30
app/views/debates/_view_mode.html.erb
Normal file
30
app/views/debates/_view_mode.html.erb
Normal 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 debates_default_view? %>
|
||||||
|
<li class="view-card active">
|
||||||
|
<%= t("shared.view_mode.cards") %>
|
||||||
|
</li>
|
||||||
|
<li class="view-list">
|
||||||
|
<%= link_to t("shared.view_mode.list"), debates_minimal_view_path %>
|
||||||
|
</li>
|
||||||
|
<% else %>
|
||||||
|
<li class="view-card">
|
||||||
|
<%= link_to t("shared.view_mode.cards"), debates_minimal_view_path %>
|
||||||
|
</li>
|
||||||
|
<li class="view-list active">
|
||||||
|
<%= t("shared.view_mode.list") %>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -46,6 +46,12 @@
|
|||||||
<%= render "featured_debates" %>
|
<%= render "featured_debates" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="small-12 column">
|
||||||
|
<%= render "view_mode" %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<%= render "shared/advanced_search", search_path: debates_path(page: 1) %>
|
<%= render "shared/advanced_search", search_path: debates_path(page: 1) %>
|
||||||
|
|
||||||
<%= render 'shared/order_links', i18n_namespace: "debates.index" %>
|
<%= render 'shared/order_links', i18n_namespace: "debates.index" %>
|
||||||
@@ -55,7 +61,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% if @debates.any? || current_user.blank? %>
|
<% if @debates.any? || current_user.blank? %>
|
||||||
<%= render @debates %>
|
<% if debates_default_view? %>
|
||||||
|
<%= render @debates %>
|
||||||
|
<% else %>
|
||||||
|
<% @debates.each do |debate| %>
|
||||||
|
<%= render partial: 'debates/debate_minimal', locals: { debate: debate } %>
|
||||||
|
<% end %>
|
||||||
|
<% end %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= empty_recommended_debates_message_text(current_user) %>
|
<%= empty_recommended_debates_message_text(current_user) %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -47,6 +47,34 @@ feature 'Debates' do
|
|||||||
expect(page).to have_selector('#debates .debate', count: 2)
|
expect(page).to have_selector('#debates .debate', count: 2)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
scenario 'Index view mode' do
|
||||||
|
debates = [create(:debate), create(:debate), create(:debate)]
|
||||||
|
|
||||||
|
visit debates_path
|
||||||
|
|
||||||
|
click_button 'View mode'
|
||||||
|
|
||||||
|
click_link 'List'
|
||||||
|
|
||||||
|
debates.each do |debate|
|
||||||
|
within('#debates') do
|
||||||
|
expect(page).to have_link debate.title
|
||||||
|
expect(page).to_not have_content debate.description
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
click_button 'View mode'
|
||||||
|
|
||||||
|
click_link 'Cards'
|
||||||
|
|
||||||
|
debates.each do |debate|
|
||||||
|
within('#debates') do
|
||||||
|
expect(page).to have_link debate.title
|
||||||
|
expect(page).to have_content debate.description
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
scenario 'Show' do
|
scenario 'Show' do
|
||||||
debate = create(:debate)
|
debate = create(:debate)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user