bookshout-theme 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
|