Skip to content

Commit 667ebe7

Browse files
authored
Merge pull request #188 from zephiransas/feature-accordion
モバイル版のDojo一覧を地域ごとにアコーディオンにまとめるようにする
2 parents 4a5efa9 + 4defaa5 commit 667ebe7

File tree

9 files changed

+61
-20
lines changed

9 files changed

+61
-20
lines changed

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ gem 'faraday_middleware', '0.10'
3333

3434
gem 'koala'
3535

36+
gem 'rack-user_agent'
37+
3638
group :development do
3739
gem 'web-console'
3840
gem 'spring'

Gemfile.lock

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,9 @@ GEM
155155
rack
156156
rack-test (0.7.0)
157157
rack (>= 1.0, < 3)
158+
rack-user_agent (0.5.2)
159+
rack (>= 1.5)
160+
woothee (>= 1.0.0)
158161
rails (5.1.4)
159162
actioncable (= 5.1.4)
160163
actionmailer (= 5.1.4)
@@ -294,6 +297,7 @@ GEM
294297
websocket-driver (0.6.5)
295298
websocket-extensions (>= 0.1.0)
296299
websocket-extensions (0.1.2)
300+
woothee (1.7.0)
297301
xpath (2.1.0)
298302
nokogiri (~> 1.3)
299303

@@ -316,6 +320,7 @@ DEPENDENCIES
316320
pg
317321
pry-rails
318322
rack-host-redirect
323+
rack-user_agent
319324
rails (= 5.1.4)
320325
rails-controller-testing
321326
rake
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
$ ->
2+
$('.collapse').on 'shown.bs.collapse', ->
3+
$(this).parent().find(".fa-chevron-right").removeClass("fa-chevron-right").addClass("fa-chevron-down")
4+
$('.collapse').on 'hidden.bs.collapse', ->
5+
$(this).parent().find(".fa-chevron-down").removeClass("fa-chevron-down").addClass("fa-chevron-right")

app/controllers/application_controller.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ class ApplicationController < ActionController::Base
66
protect_from_forgery with: :exception
77
include SessionsHelper
88

9+
before_action :set_request_variant
10+
911
private
1012

1113
def store_location
@@ -16,4 +18,7 @@ def login_page_access?
1618
%w(login_page sessions).include? self.controller_name
1719
end
1820

21+
def set_request_variant
22+
request.variant = request.device_variant
23+
end
1924
end

app/controllers/static_pages_controller.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
class StaticPagesController < ApplicationController
22
def home
3-
@dojos = Dojo.all
3+
@dojo_count = Dojo.count
4+
@regions_and_dojos = Dojo.includes(:prefecture).group_by { |dojo| dojo.prefecture.region }
45
end
56

67
def letsencrypt

app/views/static_pages/_dojo.html.erb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<li class="dojo">
2+
<header>
3+
<a href="<%= dojo.url %>">
4+
<span class="dojo-picture" style="background-image: url(<%= dojo.logo %>);"></span>
5+
<span class="dojo-name"><%= dojo.name %></span>
6+
</a>
7+
</header>
8+
<ul class="tags">
9+
<% dojo.tags.each do |tag| %>
10+
<li><%= tag %></li>
11+
<% end %>
12+
</ul>
13+
<p><%= dojo.description %></p>
14+
</li>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
2+
3+
<% @regions_and_dojos.each_with_index do |(region, dojos), index| %>
4+
<div class="panel panel-default">
5+
<div class="panel-heading" role="tab" id="<%= "heading#{index}" %>">
6+
<h4 class="panel-title">
7+
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#<%= "collapse#{index}" %>">
8+
<i class="fa fa-chevron-right" aria-hidden="true"></i>
9+
<%= region %> - <%= dojos.count %> Dojos
10+
</a>
11+
</h4>
12+
</div>
13+
<div id="<%= "collapse#{index}" %>" class="panel-collapse collapse" role="tabpanel">
14+
<div class="panel-body grayscale-bg">
15+
<%= render partial: 'dojo', collection: dojos %>
16+
</div>
17+
</div>
18+
</div>
19+
<% end %>
20+
21+
</div>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<ul class="loaded">
2+
<%= render partial: 'dojo', collection: @regions_and_dojos.values.flatten %>
3+
</ul>

app/views/static_pages/home.html.erb

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</section>
1010

1111
<section class="introduction text-center list">
12-
<p>CoderDojo は7〜17歳の子どもを対象にしたプログラミング道場です。2011年にアイルランドで始まり、世界では<%= Dojo::NUM_OF_COUNTRIES %>カ国・<%= Dojo::NUM_OF_WHOLE_DOJOS %>の道場、日本では全国に<b><%= @dojos.count %></b>以上の道場があります。これまでに<b><%= Dojo::NUM_OF_WHOLE_EVENTS %></b>回以上のイベントが開催されました。</p>
12+
<p>CoderDojo は7〜17歳の子どもを対象にしたプログラミング道場です。2011年にアイルランドで始まり、世界では<%= Dojo::NUM_OF_COUNTRIES %>カ国・<%= Dojo::NUM_OF_WHOLE_DOJOS %>の道場、日本では全国に<b><%= @dojo_count %></b>以上の道場があります。これまでに<b><%= Dojo::NUM_OF_WHOLE_EVENTS %></b>回以上のイベントが開催されました。</p>
1313
<p>CoderDojo で学べる内容は道場ごとに異なります。例えば、次の内容を学べる道場があります。</p>
1414
<ul>
1515
<li>Scratch, Hour of Code</li>
@@ -84,24 +84,9 @@
8484
<br />
8585
<h2>全国の道場</h2>
8686
<br />
87-
<ul class="loaded">
88-
<% @dojos.each do |dojo| %>
89-
<li class="dojo">
90-
<header>
91-
<a href="<%= dojo.url %>">
92-
<span class="dojo-picture" style="background-image: url(<%= dojo.logo %>);"></span>
93-
<span class="dojo-name"><%= dojo.name %></span>
94-
</a>
95-
</header>
96-
<ul class="tags">
97-
<% dojo.tags.each do |tag| %>
98-
<li><%= tag %></li>
99-
<% end %>
100-
</ul>
101-
<p><%= dojo.description %></p>
102-
</li>
103-
<% end %>
104-
</ul>
87+
88+
<%= render 'dojos' %>
89+
10590
</section>
10691

10792
<section class="text-center">

0 commit comments

Comments
 (0)