bookshout-theme 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +20 -0
- data/Gemfile.lock +207 -0
- data/README.md +46 -0
- data/Rakefile +31 -0
- data/VERSION +1 -0
- data/app/helpers/bookshout_theme_helper.rb +28 -0
- data/app/helpers/static_helper.rb +18 -0
- data/app/views/bookshout-theme/_footer.html.haml +4 -0
- data/app/views/bookshout-theme/_header.html.haml +37 -0
- data/app/views/bookshout-theme/_main.html.haml +14 -0
- data/app/views/shared/_global_nav.html.erb +0 -0
- data/app/views/shared/_tracking.html.erb +0 -0
- data/bookshout-theme.gemspec +67 -0
- data/lib/bookshout-theme.rb +12 -0
- data/lib/generators/bookshout_theme_generator.rb +15 -0
- data/vendor/assets/javascripts/bookshout-theme.js +19 -0
- data/vendor/assets/javascripts/spin.js +2 -0
- data/vendor/assets/stylesheets/books.scss +87 -0
- data/vendor/assets/stylesheets/bookshout-theme.scss +20 -0
- data/vendor/assets/stylesheets/footer.scss +49 -0
- data/vendor/assets/stylesheets/foundation_and_overrides.scss +1022 -0
- data/vendor/assets/stylesheets/home.scss +43 -0
- data/vendor/assets/stylesheets/partials/icon_bar.scss +162 -0
- data/vendor/assets/stylesheets/partials/images.scss +20 -0
- data/vendor/assets/stylesheets/partials/nav.scss +78 -0
- metadata +99 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 19d1bbd3a5f6e90ff66097d2dc177da6d5572ee9
|
4
|
+
data.tar.gz: f3aefdb4534449e15ac0ddb048abca8f9d8897a8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: bb00aeab46126357a937eeabe62299e3bd81ce8ec2946f1e213b6d79d57934ddcb41b43db550c7280a0905d8e780787938ecfaeee55734921ccd7a7a63386afb
|
7
|
+
data.tar.gz: 71560bf5b0ad3f60086ea1d2918944e9760f4613e223d0ccc2da67eb9983be55c684b87575b9fda48a56ef9ab57f5d06ebee9c21cfe2d625558b3aded8a67c40
|
data/Gemfile
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
source 'http://rubygems.org'
|
2
|
+
|
3
|
+
gem 'rails', '>= 4.2.1'
|
4
|
+
|
5
|
+
group :development do
|
6
|
+
gem 'jeweler', '~> 2.0.1'
|
7
|
+
end
|
8
|
+
|
9
|
+
group :assets do
|
10
|
+
gem 'haml'
|
11
|
+
gem 'haml-rails'
|
12
|
+
gem 'foundation-rails'
|
13
|
+
gem 'font-awesome-sass'
|
14
|
+
gem 'compass'
|
15
|
+
gem 'sass-rails'
|
16
|
+
gem 'sass'
|
17
|
+
gem 'uglifier'
|
18
|
+
gem 'coffee-rails'
|
19
|
+
gem 'jquery-rails'
|
20
|
+
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,207 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
actionmailer (4.2.1)
|
5
|
+
actionpack (= 4.2.1)
|
6
|
+
actionview (= 4.2.1)
|
7
|
+
activejob (= 4.2.1)
|
8
|
+
mail (~> 2.5, >= 2.5.4)
|
9
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
10
|
+
actionpack (4.2.1)
|
11
|
+
actionview (= 4.2.1)
|
12
|
+
activesupport (= 4.2.1)
|
13
|
+
rack (~> 1.6)
|
14
|
+
rack-test (~> 0.6.2)
|
15
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
16
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.1)
|
17
|
+
actionview (4.2.1)
|
18
|
+
activesupport (= 4.2.1)
|
19
|
+
builder (~> 3.1)
|
20
|
+
erubis (~> 2.7.0)
|
21
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
22
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.1)
|
23
|
+
activejob (4.2.1)
|
24
|
+
activesupport (= 4.2.1)
|
25
|
+
globalid (>= 0.3.0)
|
26
|
+
activemodel (4.2.1)
|
27
|
+
activesupport (= 4.2.1)
|
28
|
+
builder (~> 3.1)
|
29
|
+
activerecord (4.2.1)
|
30
|
+
activemodel (= 4.2.1)
|
31
|
+
activesupport (= 4.2.1)
|
32
|
+
arel (~> 6.0)
|
33
|
+
activesupport (4.2.1)
|
34
|
+
i18n (~> 0.7)
|
35
|
+
json (~> 1.7, >= 1.7.7)
|
36
|
+
minitest (~> 5.1)
|
37
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
38
|
+
tzinfo (~> 1.1)
|
39
|
+
addressable (2.3.8)
|
40
|
+
arel (6.0.0)
|
41
|
+
builder (3.2.2)
|
42
|
+
chunky_png (1.3.4)
|
43
|
+
coffee-rails (4.1.0)
|
44
|
+
coffee-script (>= 2.2.0)
|
45
|
+
railties (>= 4.0.0, < 5.0)
|
46
|
+
coffee-script (2.4.1)
|
47
|
+
coffee-script-source
|
48
|
+
execjs
|
49
|
+
coffee-script-source (1.9.1.1)
|
50
|
+
compass (1.0.3)
|
51
|
+
chunky_png (~> 1.2)
|
52
|
+
compass-core (~> 1.0.2)
|
53
|
+
compass-import-once (~> 1.0.5)
|
54
|
+
rb-fsevent (>= 0.9.3)
|
55
|
+
rb-inotify (>= 0.9)
|
56
|
+
sass (>= 3.3.13, < 3.5)
|
57
|
+
compass-core (1.0.3)
|
58
|
+
multi_json (~> 1.0)
|
59
|
+
sass (>= 3.3.0, < 3.5)
|
60
|
+
compass-import-once (1.0.5)
|
61
|
+
sass (>= 3.2, < 3.5)
|
62
|
+
descendants_tracker (0.0.4)
|
63
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
64
|
+
erubis (2.7.0)
|
65
|
+
execjs (2.5.2)
|
66
|
+
faraday (0.9.1)
|
67
|
+
multipart-post (>= 1.2, < 3)
|
68
|
+
ffi (1.9.8)
|
69
|
+
font-awesome-sass (4.3.2.1)
|
70
|
+
sass (~> 3.2)
|
71
|
+
foundation-rails (5.5.1.2)
|
72
|
+
railties (>= 3.1.0)
|
73
|
+
sass (>= 3.3.0, < 3.5)
|
74
|
+
git (1.2.9.1)
|
75
|
+
github_api (0.12.3)
|
76
|
+
addressable (~> 2.3)
|
77
|
+
descendants_tracker (~> 0.0.4)
|
78
|
+
faraday (~> 0.8, < 0.10)
|
79
|
+
hashie (>= 3.3)
|
80
|
+
multi_json (>= 1.7.5, < 2.0)
|
81
|
+
nokogiri (~> 1.6.3)
|
82
|
+
oauth2
|
83
|
+
globalid (0.3.5)
|
84
|
+
activesupport (>= 4.1.0)
|
85
|
+
haml (4.0.6)
|
86
|
+
tilt
|
87
|
+
haml-rails (0.9.0)
|
88
|
+
actionpack (>= 4.0.1)
|
89
|
+
activesupport (>= 4.0.1)
|
90
|
+
haml (>= 4.0.6, < 5.0)
|
91
|
+
html2haml (>= 1.0.1)
|
92
|
+
railties (>= 4.0.1)
|
93
|
+
hashie (3.4.1)
|
94
|
+
highline (1.7.2)
|
95
|
+
html2haml (2.0.0)
|
96
|
+
erubis (~> 2.7.0)
|
97
|
+
haml (~> 4.0.0)
|
98
|
+
nokogiri (~> 1.6.0)
|
99
|
+
ruby_parser (~> 3.5)
|
100
|
+
i18n (0.7.0)
|
101
|
+
jeweler (2.0.1)
|
102
|
+
builder
|
103
|
+
bundler (>= 1.0)
|
104
|
+
git (>= 1.2.5)
|
105
|
+
github_api
|
106
|
+
highline (>= 1.6.15)
|
107
|
+
nokogiri (>= 1.5.10)
|
108
|
+
rake
|
109
|
+
rdoc
|
110
|
+
jquery-rails (4.0.3)
|
111
|
+
rails-dom-testing (~> 1.0)
|
112
|
+
railties (>= 4.2.0)
|
113
|
+
thor (>= 0.14, < 2.0)
|
114
|
+
json (1.8.2)
|
115
|
+
jwt (1.4.1)
|
116
|
+
loofah (2.0.1)
|
117
|
+
nokogiri (>= 1.5.9)
|
118
|
+
mail (2.6.3)
|
119
|
+
mime-types (>= 1.16, < 3)
|
120
|
+
mime-types (2.4.3)
|
121
|
+
mini_portile (0.6.2)
|
122
|
+
minitest (5.6.0)
|
123
|
+
multi_json (1.11.0)
|
124
|
+
multi_xml (0.5.5)
|
125
|
+
multipart-post (2.0.0)
|
126
|
+
nokogiri (1.6.6.2)
|
127
|
+
mini_portile (~> 0.6.0)
|
128
|
+
oauth2 (1.0.0)
|
129
|
+
faraday (>= 0.8, < 0.10)
|
130
|
+
jwt (~> 1.0)
|
131
|
+
multi_json (~> 1.3)
|
132
|
+
multi_xml (~> 0.5)
|
133
|
+
rack (~> 1.2)
|
134
|
+
rack (1.6.0)
|
135
|
+
rack-test (0.6.3)
|
136
|
+
rack (>= 1.0)
|
137
|
+
rails (4.2.1)
|
138
|
+
actionmailer (= 4.2.1)
|
139
|
+
actionpack (= 4.2.1)
|
140
|
+
actionview (= 4.2.1)
|
141
|
+
activejob (= 4.2.1)
|
142
|
+
activemodel (= 4.2.1)
|
143
|
+
activerecord (= 4.2.1)
|
144
|
+
activesupport (= 4.2.1)
|
145
|
+
bundler (>= 1.3.0, < 2.0)
|
146
|
+
railties (= 4.2.1)
|
147
|
+
sprockets-rails
|
148
|
+
rails-deprecated_sanitizer (1.0.3)
|
149
|
+
activesupport (>= 4.2.0.alpha)
|
150
|
+
rails-dom-testing (1.0.6)
|
151
|
+
activesupport (>= 4.2.0.beta, < 5.0)
|
152
|
+
nokogiri (~> 1.6.0)
|
153
|
+
rails-deprecated_sanitizer (>= 1.0.1)
|
154
|
+
rails-html-sanitizer (1.0.2)
|
155
|
+
loofah (~> 2.0)
|
156
|
+
railties (4.2.1)
|
157
|
+
actionpack (= 4.2.1)
|
158
|
+
activesupport (= 4.2.1)
|
159
|
+
rake (>= 0.8.7)
|
160
|
+
thor (>= 0.18.1, < 2.0)
|
161
|
+
rake (10.4.2)
|
162
|
+
rb-fsevent (0.9.4)
|
163
|
+
rb-inotify (0.9.5)
|
164
|
+
ffi (>= 0.5.0)
|
165
|
+
rdoc (4.2.0)
|
166
|
+
json (~> 1.4)
|
167
|
+
ruby_parser (3.6.6)
|
168
|
+
sexp_processor (~> 4.1)
|
169
|
+
sass (3.4.13)
|
170
|
+
sass-rails (5.0.3)
|
171
|
+
railties (>= 4.0.0, < 5.0)
|
172
|
+
sass (~> 3.1)
|
173
|
+
sprockets (>= 2.8, < 4.0)
|
174
|
+
sprockets-rails (>= 2.0, < 4.0)
|
175
|
+
tilt (~> 1.1)
|
176
|
+
sexp_processor (4.5.0)
|
177
|
+
sprockets (3.0.1)
|
178
|
+
rack (~> 1.0)
|
179
|
+
sprockets-rails (2.2.4)
|
180
|
+
actionpack (>= 3.0)
|
181
|
+
activesupport (>= 3.0)
|
182
|
+
sprockets (>= 2.8, < 4.0)
|
183
|
+
thor (0.19.1)
|
184
|
+
thread_safe (0.3.5)
|
185
|
+
tilt (1.4.1)
|
186
|
+
tzinfo (1.2.2)
|
187
|
+
thread_safe (~> 0.1)
|
188
|
+
uglifier (2.7.1)
|
189
|
+
execjs (>= 0.3.0)
|
190
|
+
json (>= 1.8.0)
|
191
|
+
|
192
|
+
PLATFORMS
|
193
|
+
ruby
|
194
|
+
|
195
|
+
DEPENDENCIES
|
196
|
+
coffee-rails
|
197
|
+
compass
|
198
|
+
font-awesome-sass
|
199
|
+
foundation-rails
|
200
|
+
haml
|
201
|
+
haml-rails
|
202
|
+
jeweler (~> 2.0.1)
|
203
|
+
jquery-rails
|
204
|
+
rails (>= 4.2.1)
|
205
|
+
sass
|
206
|
+
sass-rails
|
207
|
+
uglifier
|
data/README.md
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# Bookshout Theme #
|
2
|
+
|
3
|
+
A Rails gem / engine to make any Rails app look like bookshout.com. Provides a generator for static assets via helper methods.
|
4
|
+
|
5
|
+
## Installation ##
|
6
|
+
|
7
|
+
Add `bookshout-theme` to your Gemfile
|
8
|
+
|
9
|
+
gem 'bookshout-theme'
|
10
|
+
|
11
|
+
## Usage ##
|
12
|
+
|
13
|
+
Wrap your application.html `yield` with the header and footer helpers:
|
14
|
+
|
15
|
+
<% # application.html.erb %>
|
16
|
+
<%= header %>
|
17
|
+
<%= yield %>
|
18
|
+
<%= footer %>
|
19
|
+
|
20
|
+
If you want to add anything within the `<head></head>` tags or just before the `</body>` tag, you can pass a block to the helpers:
|
21
|
+
|
22
|
+
<%= header do %>
|
23
|
+
<%= stylesheet_link_tag 'additional_styles' %>
|
24
|
+
<% end %>
|
25
|
+
<%= yield %>
|
26
|
+
<%= footer do %>
|
27
|
+
<!-- this comment only appears on my sub-site -->
|
28
|
+
<% end %>
|
29
|
+
|
30
|
+
Default navigation links and default web service javascript (Google Analytics, Optimizely, etc.) can be disabled by setting values to false:
|
31
|
+
|
32
|
+
header(add_navigation,add_js)
|
33
|
+
|
34
|
+
The layout supports content overwritting by supplying defining `content_for` the following:
|
35
|
+
|
36
|
+
title, description, keywords, body_id, branding
|
37
|
+
|
38
|
+
|
39
|
+
## Modifying / Testing ##
|
40
|
+
|
41
|
+
Inside this repo is a `example` folder, containing a Rails app configured to load the gem. You can use this to add any changes in styles. You can also run:
|
42
|
+
|
43
|
+
bundle exec cucumber features
|
44
|
+
|
45
|
+
...within that folder to test the gem as though it was installed in a Rails app, so that you know it still works.
|
46
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development, :test)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
10
|
+
require 'rake'
|
11
|
+
|
12
|
+
PKG_FILES = FileList[
|
13
|
+
'[a-zA-Z]*',
|
14
|
+
'app/**/*',
|
15
|
+
'vendor/**/*',
|
16
|
+
'lib/**/*'
|
17
|
+
]
|
18
|
+
|
19
|
+
require 'jeweler'
|
20
|
+
Jeweler::Tasks.new do |gem|
|
21
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
22
|
+
gem.name = 'bookshout-theme'
|
23
|
+
gem.homepage = 'https://github.com/rethinkbooks/bookshout-theme'
|
24
|
+
gem.license = 'MIT'
|
25
|
+
gem.summary = %Q{A gem providing helper methods and assets to make any site look like http://bookshout.com}
|
26
|
+
gem.description = %Q{View helpers 'header' and 'footer', along with an assets generator to make any site look like http://bookshout.com}
|
27
|
+
gem.email = ['arturo@bookshout.com']
|
28
|
+
gem.authors = ['Arturo Contreras']
|
29
|
+
gem.files = PKG_FILES.to_a
|
30
|
+
end
|
31
|
+
Jeweler::RubygemsDotOrgTasks.new
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.0.0
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module BookshoutThemeHelper
|
2
|
+
def header(*args, &block)
|
3
|
+
add_navigation = args[0] || 'true'
|
4
|
+
add_js = args[1] || 'true'
|
5
|
+
additional_header = block_given? ? capture(&block) : ''
|
6
|
+
render :partial => 'bookshout-theme/header', :locals => {
|
7
|
+
:additional_header => additional_header,
|
8
|
+
:add_navigation => add_navigation,
|
9
|
+
:add_js => add_js
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
def footer(*args, &block)
|
14
|
+
additional_footer = block_given? ? capture(&block) : ''
|
15
|
+
add_navigation = args[0] || 'true'
|
16
|
+
add_js = args[1] || 'true'
|
17
|
+
render :partial => 'bookshout-theme/footer', :locals => {
|
18
|
+
:additional_footer => additional_footer,
|
19
|
+
:add_navigation => add_navigation,
|
20
|
+
:add_js => add_js
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
def main(*args, &block)
|
25
|
+
content = block_given? ? capture(&block) : ''
|
26
|
+
render :partial => 'bookshout-theme/main', :locals => {:content => content}
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module StaticHelper
|
2
|
+
|
3
|
+
def selected?(regex)
|
4
|
+
if regex.is_a?(String)
|
5
|
+
regex = /#{regex}/
|
6
|
+
end
|
7
|
+
@selected = ''
|
8
|
+
if !params[:path].nil?
|
9
|
+
if params[:path] =~ regex
|
10
|
+
@selected = ' class="selected"'
|
11
|
+
end
|
12
|
+
elsif params[:controller] =~ regex
|
13
|
+
@selected = ' class="selected"'
|
14
|
+
end
|
15
|
+
@selected.html_safe
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
!!! 5
|
2
|
+
%html{:lang => "en"}
|
3
|
+
%head
|
4
|
+
%meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
|
5
|
+
%meta{:charset => "utf-8"}/
|
6
|
+
%meta{:content => "width=device-width, initial-scale=1.0", :name => "viewport"}/
|
7
|
+
%title= content_for?(:title) ? yield(:title) : "Bookshout"
|
8
|
+
= stylesheet_link_tag "bookshout-theme"
|
9
|
+
= javascript_include_tag "vendor/modernizr"
|
10
|
+
= csrf_meta_tags
|
11
|
+
%link{:href => "https://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.css", :rel => "stylesheet"}/
|
12
|
+
%body{:id => content_for?(:body_id) ? yield(:body_id) : ''}
|
13
|
+
= javascript_include_tag "bookshout-theme"
|
14
|
+
.page
|
15
|
+
.off-canvas-wrap(data-offcanvas)
|
16
|
+
.inner-wrap
|
17
|
+
%nav.tab-bar
|
18
|
+
%section.left-small
|
19
|
+
%a.left-off-canvas-toggle.menu-icon(href="#")
|
20
|
+
%span
|
21
|
+
|
22
|
+
%section.middle.tab-bar-section
|
23
|
+
= image_tag content_for?(:image_url) ? yield(:image_url) : "http://s3.amazonaws.com/whitelabelepubsproduction/companies/logos/000/000/003/original/bs-logo2x-black.png", class: 'logo logo-nav'
|
24
|
+
|
25
|
+
= content_for?(:additional_toolbar) ? yield(:additional_toolbar) : ''
|
26
|
+
|
27
|
+
%aside.left-off-canvas-menu
|
28
|
+
%ul.off-canvas-list
|
29
|
+
%li
|
30
|
+
%label
|
31
|
+
Navigation
|
32
|
+
%li
|
33
|
+
%a(href="#{content_for?(:my_books_path) ? yield(:my_books_path) : 'https://bookshout.com'}")
|
34
|
+
%i.fa.fa-book.fa-2
|
35
|
+
My Books
|
36
|
+
= render('shared/global_nav')
|
37
|
+
= additional_header if additional_header.present?
|
@@ -0,0 +1,14 @@
|
|
1
|
+
%section.main-section
|
2
|
+
-if flash[:notice]
|
3
|
+
.row
|
4
|
+
.large-8.large-centered.columns
|
5
|
+
.alert-box.info.round{:data => { :alert => true}}
|
6
|
+
=flash[:notice]
|
7
|
+
%a.close(href="#") ×
|
8
|
+
-if flash[:alert]
|
9
|
+
.row
|
10
|
+
.large-8.large-centered.columns
|
11
|
+
.alert-box.alert.round{:data => { :alert => true}}
|
12
|
+
=flash[:alert]
|
13
|
+
%a.close(href="#") ×
|
14
|
+
= content
|
File without changes
|
File without changes
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: bookshout-theme 1.0.0 ruby lib
|
6
|
+
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = "bookshout-theme"
|
9
|
+
s.version = "1.0.0"
|
10
|
+
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib"]
|
13
|
+
s.authors = ["Arturo Contreras"]
|
14
|
+
s.date = "2015-04-22"
|
15
|
+
s.description = "View helpers 'header' and 'footer', along with an assets generator to make any site look like http://bookshout.com"
|
16
|
+
s.email = ["arturo@bookshout.com"]
|
17
|
+
s.extra_rdoc_files = [
|
18
|
+
"README.md"
|
19
|
+
]
|
20
|
+
s.files = [
|
21
|
+
"Gemfile",
|
22
|
+
"Gemfile.lock",
|
23
|
+
"README.md",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"app/helpers/bookshout_theme_helper.rb",
|
27
|
+
"app/helpers/static_helper.rb",
|
28
|
+
"app/views/bookshout-theme/_footer.html.haml",
|
29
|
+
"app/views/bookshout-theme/_header.html.haml",
|
30
|
+
"app/views/bookshout-theme/_main.html.haml",
|
31
|
+
"app/views/shared/_global_nav.html.erb",
|
32
|
+
"app/views/shared/_tracking.html.erb",
|
33
|
+
"bookshout-theme.gemspec",
|
34
|
+
"lib/bookshout-theme.rb",
|
35
|
+
"lib/generators/bookshout_theme_generator.rb",
|
36
|
+
"vendor/assets/javascripts/bookshout-theme.js",
|
37
|
+
"vendor/assets/javascripts/spin.js",
|
38
|
+
"vendor/assets/stylesheets/books.scss",
|
39
|
+
"vendor/assets/stylesheets/bookshout-theme.scss",
|
40
|
+
"vendor/assets/stylesheets/footer.scss",
|
41
|
+
"vendor/assets/stylesheets/foundation_and_overrides.scss",
|
42
|
+
"vendor/assets/stylesheets/home.scss",
|
43
|
+
"vendor/assets/stylesheets/partials/icon_bar.scss",
|
44
|
+
"vendor/assets/stylesheets/partials/images.scss",
|
45
|
+
"vendor/assets/stylesheets/partials/nav.scss"
|
46
|
+
]
|
47
|
+
s.homepage = "https://github.com/rethinkbooks/bookshout-theme"
|
48
|
+
s.licenses = ["MIT"]
|
49
|
+
s.rubygems_version = "2.2.2"
|
50
|
+
s.summary = "A gem providing helper methods and assets to make any site look like http://bookshout.com"
|
51
|
+
|
52
|
+
if s.respond_to? :specification_version then
|
53
|
+
s.specification_version = 4
|
54
|
+
|
55
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
56
|
+
s.add_runtime_dependency(%q<rails>, [">= 4.2.1"])
|
57
|
+
s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
|
58
|
+
else
|
59
|
+
s.add_dependency(%q<rails>, [">= 4.2.1"])
|
60
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
|
61
|
+
end
|
62
|
+
else
|
63
|
+
s.add_dependency(%q<rails>, [">= 4.2.1"])
|
64
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module BookshoutTheme
|
2
|
+
class Engine < Rails::Engine
|
3
|
+
initializer 'BookshoutTheme.helper' do |app|
|
4
|
+
ActionView::Base.send :include, BookshoutThemeHelper
|
5
|
+
ActionView::Base.send :include, StaticHelper
|
6
|
+
end
|
7
|
+
|
8
|
+
generators do
|
9
|
+
require 'generators/bookshout_theme_generator'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
module BookshoutTheme
|
3
|
+
class AssetsGenerator < Rails::Generators::Base
|
4
|
+
desc 'Generate the assets for bookshout.com to test your app'
|
5
|
+
|
6
|
+
def self.source_root
|
7
|
+
File.expand_path('../../example/public/', File.dirname(__FILE__))
|
8
|
+
end
|
9
|
+
|
10
|
+
def copy_assets
|
11
|
+
directory 'bookshout-theme', 'public/bookshout-theme'
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require jquery
|
14
|
+
//= require jquery_ujs
|
15
|
+
//= require foundation
|
16
|
+
//= require spin
|
17
|
+
//= require_tree .
|
18
|
+
$(function(){ $(document).foundation(); });
|
19
|
+
|
@@ -0,0 +1,2 @@
|
|
1
|
+
//fgnass.github.com/spin.js#v2.0.1
|
2
|
+
!function(a,b){"object"==typeof exports?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Spinner=b()}(this,function(){"use strict";function a(a,b){var c,d=document.createElement(a||"div");for(c in b)d[c]=b[c];return d}function b(a){for(var b=1,c=arguments.length;c>b;b++)a.appendChild(arguments[b]);return a}function c(a,b,c,d){var e=["opacity",b,~~(100*a),c,d].join("-"),f=.01+c/d*100,g=Math.max(1-(1-a)/b*(100-f),a),h=j.substring(0,j.indexOf("Animation")).toLowerCase(),i=h&&"-"+h+"-"||"";return l[e]||(m.insertRule("@"+i+"keyframes "+e+"{0%{opacity:"+g+"}"+f+"%{opacity:"+a+"}"+(f+.01)+"%{opacity:1}"+(f+b)%100+"%{opacity:"+a+"}100%{opacity:"+g+"}}",m.cssRules.length),l[e]=1),e}function d(a,b){var c,d,e=a.style;for(b=b.charAt(0).toUpperCase()+b.slice(1),d=0;d<k.length;d++)if(c=k[d]+b,void 0!==e[c])return c;return void 0!==e[b]?b:void 0}function e(a,b){for(var c in b)a.style[d(a,c)||c]=b[c];return a}function f(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)void 0===a[d]&&(a[d]=c[d])}return a}function g(a,b){return"string"==typeof a?a:a[b%a.length]}function h(a){this.opts=f(a||{},h.defaults,n)}function i(){function c(b,c){return a("<"+b+' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">',c)}m.addRule(".spin-vml","behavior:url(#default#VML)"),h.prototype.lines=function(a,d){function f(){return e(c("group",{coordsize:k+" "+k,coordorigin:-j+" "+-j}),{width:k,height:k})}function h(a,h,i){b(m,b(e(f(),{rotation:360/d.lines*a+"deg",left:~~h}),b(e(c("roundrect",{arcsize:d.corners}),{width:j,height:d.width,left:d.radius,top:-d.width>>1,filter:i}),c("fill",{color:g(d.color,a),opacity:d.opacity}),c("stroke",{opacity:0}))))}var i,j=d.length+d.width,k=2*j,l=2*-(d.width+d.length)+"px",m=e(f(),{position:"absolute",top:l,left:l});if(d.shadow)for(i=1;i<=d.lines;i++)h(i,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(i=1;i<=d.lines;i++)h(i);return b(a,m)},h.prototype.opacity=function(a,b,c,d){var e=a.firstChild;d=d.shadow&&d.lines||0,e&&b+d<e.childNodes.length&&(e=e.childNodes[b+d],e=e&&e.firstChild,e=e&&e.firstChild,e&&(e.opacity=c))}}var j,k=["webkit","Moz","ms","O"],l={},m=function(){var c=a("style",{type:"text/css"});return b(document.getElementsByTagName("head")[0],c),c.sheet||c.styleSheet}(),n={lines:12,length:7,width:5,radius:10,rotate:0,corners:1,color:"#000",direction:1,speed:1,trail:100,opacity:.25,fps:20,zIndex:2e9,className:"spinner",top:"50%",left:"50%",position:"absolute"};h.defaults={},f(h.prototype,{spin:function(b){this.stop();{var c=this,d=c.opts,f=c.el=e(a(0,{className:d.className}),{position:d.position,width:0,zIndex:d.zIndex});d.radius+d.length+d.width}if(e(f,{left:d.left,top:d.top}),b&&b.insertBefore(f,b.firstChild||null),f.setAttribute("role","progressbar"),c.lines(f,c.opts),!j){var g,h=0,i=(d.lines-1)*(1-d.direction)/2,k=d.fps,l=k/d.speed,m=(1-d.opacity)/(l*d.trail/100),n=l/d.lines;!function o(){h++;for(var a=0;a<d.lines;a++)g=Math.max(1-(h+(d.lines-a)*n)%l*m,d.opacity),c.opacity(f,a*d.direction+i,g,d);c.timeout=c.el&&setTimeout(o,~~(1e3/k))}()}return c},stop:function(){var a=this.el;return a&&(clearTimeout(this.timeout),a.parentNode&&a.parentNode.removeChild(a),this.el=void 0),this},lines:function(d,f){function h(b,c){return e(a(),{position:"absolute",width:f.length+f.width+"px",height:f.width+"px",background:b,boxShadow:c,transformOrigin:"left",transform:"rotate("+~~(360/f.lines*k+f.rotate)+"deg) translate("+f.radius+"px,0)",borderRadius:(f.corners*f.width>>1)+"px"})}for(var i,k=0,l=(f.lines-1)*(1-f.direction)/2;k<f.lines;k++)i=e(a(),{position:"absolute",top:1+~(f.width/2)+"px",transform:f.hwaccel?"translate3d(0,0,0)":"",opacity:f.opacity,animation:j&&c(f.opacity,f.trail,l+k*f.direction,f.lines)+" "+1/f.speed+"s linear infinite"}),f.shadow&&b(i,e(h("#000","0 0 4px #000"),{top:"2px"})),b(d,b(i,h(g(f.color,k),"0 0 1px rgba(0,0,0,.1)")));return d},opacity:function(a,b,c){b<a.childNodes.length&&(a.childNodes[b].style.opacity=c)}});var o=e(a("group"),{behavior:"url(#default#VML)"});return!d(o,"transform")&&o.adj?i():j=d(o,"animation"),h});
|
@@ -0,0 +1,87 @@
|
|
1
|
+
/*
|
2
|
+
Place all the styles related to the matching controller here.
|
3
|
+
They will automatically be included in application.css.
|
4
|
+
*/
|
5
|
+
.book-form-container{
|
6
|
+
display: table;
|
7
|
+
width: 100%;
|
8
|
+
}
|
9
|
+
.title-content{
|
10
|
+
height: 150px;
|
11
|
+
display: table-cell;
|
12
|
+
width: 100vw;
|
13
|
+
vertical-align:middle;
|
14
|
+
position: relative;
|
15
|
+
}
|
16
|
+
.title-pane{
|
17
|
+
//box-shadow: 10px 10px 5px #888888;
|
18
|
+
a{
|
19
|
+
color: #333333;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
.title-pane:hover{
|
23
|
+
//box-shadow: 8px 10px 5px #888888;
|
24
|
+
}
|
25
|
+
.read-book-link-container{
|
26
|
+
background-color: rgba(0,0,0,.1);
|
27
|
+
padding:5px;
|
28
|
+
}
|
29
|
+
.info-icon{
|
30
|
+
a,a:active{
|
31
|
+
color: #000;
|
32
|
+
position: absolute;
|
33
|
+
top: 0em;
|
34
|
+
left: 0em;
|
35
|
+
text-shadow: -1px -1px 0 #FFF, 1px -1px 0 #FFF, -1px 1px 0 #FFF, 1px 1px 0;
|
36
|
+
}
|
37
|
+
|
38
|
+
a:hover{
|
39
|
+
color: #EFEFEF;
|
40
|
+
text-decoration: none;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
.info-modal{
|
44
|
+
$font-size: 16px;
|
45
|
+
$line-height: 1.4;
|
46
|
+
@media(min-width: 320px){
|
47
|
+
$lines-to-show: 3;
|
48
|
+
}
|
49
|
+
@media(min-width: 720px){
|
50
|
+
$lines-to-show: 10;
|
51
|
+
}
|
52
|
+
h1{
|
53
|
+
font-size:larger;
|
54
|
+
font-weight:bold;
|
55
|
+
}
|
56
|
+
p{
|
57
|
+
text-align: left;
|
58
|
+
display: block; /* Fallback for non-webkit */
|
59
|
+
display: -webkit-box;
|
60
|
+
width:100%;
|
61
|
+
@media(min-width: 320px){
|
62
|
+
-webkit-line-clamp: 3;
|
63
|
+
height: $font-size*$line-height*3; /* Fallback for non-webkit */
|
64
|
+
}
|
65
|
+
@media(min-width: 667px){
|
66
|
+
-webkit-line-clamp: 10;
|
67
|
+
height: $font-size*$line-height*10; /* Fallback for non-webkit */
|
68
|
+
}
|
69
|
+
margin: 0 auto;
|
70
|
+
font-size: $font-size;
|
71
|
+
line-height: $line-height;
|
72
|
+
-webkit-box-orient: vertical;
|
73
|
+
overflow: hidden;
|
74
|
+
text-overflow: ellipsis;
|
75
|
+
}
|
76
|
+
}
|
77
|
+
#book-detail{
|
78
|
+
.book-synopsis{
|
79
|
+
text-align: justify;
|
80
|
+
}
|
81
|
+
img{
|
82
|
+
padding-bottom:20px;
|
83
|
+
}
|
84
|
+
|
85
|
+
}
|
86
|
+
|
87
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
@import "foundation_and_overrides";
|
2
|
+
@import "foundation/components/buttons";
|
3
|
+
@import "font-awesome-sprockets";
|
4
|
+
@import "font-awesome";
|
5
|
+
@import "books";
|
6
|
+
@import "home";
|
7
|
+
@import "footer";
|
8
|
+
@import "partials/nav";
|
9
|
+
@import "partials/images";
|
10
|
+
@import "partials/icon_bar";
|
11
|
+
|
12
|
+
.tab-bar{
|
13
|
+
border-bottom: 1px solid bottom;
|
14
|
+
}
|
15
|
+
.off-canvas-wrap, .inner-wrap, .main-section { height:100%; }
|
16
|
+
.main-section {
|
17
|
+
overflow-y: auto;
|
18
|
+
margin-top:50px;
|
19
|
+
}
|
20
|
+
|