compass_extension 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/app/helpers/html5_boilerplate_helper.rb +63 -0
- data/lib/compass/h5bp/version.rb +6 -0
- data/lib/compass/h5bp.rb +7 -0
- data/lib/compass_extension.rb +9 -0
- data/stylesheets/_h5bp.scss +12 -0
- data/stylesheets/h5bp/_chromeframe.scss +7 -0
- data/stylesheets/h5bp/_helpers.scss +58 -0
- data/stylesheets/h5bp/_media.scss +23 -0
- data/stylesheets/h5bp/_normalize.scss +213 -0
- data/templates/project/_flashes.html.haml +4 -0
- data/templates/project/_footer.html.haml +2 -0
- data/templates/project/_head.html.haml +29 -0
- data/templates/project/_header.html.haml +1 -0
- data/templates/project/_javascripts.html.haml +37 -0
- data/templates/project/_stylesheets.html.haml +5 -0
- data/templates/project/application.html.haml +22 -0
- data/templates/project/files/404.html +38 -0
- data/templates/project/files/apple-touch-icon-114x114-precomposed.png +0 -0
- data/templates/project/files/apple-touch-icon-57x57-precomposed.png +0 -0
- data/templates/project/files/apple-touch-icon-72x72-precomposed.png +0 -0
- data/templates/project/files/apple-touch-icon-precomposed.png +0 -0
- data/templates/project/files/apple-touch-icon.png +0 -0
- data/templates/project/files/crossdomain.xml +25 -0
- data/templates/project/files/favicon.ico +0 -0
- data/templates/project/files/favicon.png +0 -0
- data/templates/project/files/google.yml +22 -0
- data/templates/project/files/humans.txt +43 -0
- data/templates/project/files/robots.txt +5 -0
- data/templates/project/index.html.haml +83 -0
- data/templates/project/javascripts/jquery-1.7.2.js +9404 -0
- data/templates/project/javascripts/jquery-1.7.2.min.js +4 -0
- data/templates/project/javascripts/jquery-ui-1.8.22.min.js +85 -0
- data/templates/project/javascripts/modernizr-2.5.3.min.js +4 -0
- data/templates/project/javascripts/plugins.js +105 -0
- data/templates/project/javascripts/rails.js +368 -0
- data/templates/project/javascripts/respond.min.js +6 -0
- data/templates/project/javascripts/script.js +26 -0
- data/templates/project/manifest.rb +83 -2
- data/templates/project/partials/SCSS_template.scss +83 -0
- data/templates/project/partials/_base.scss +198 -0
- data/templates/project/partials/_fonts.scss +4 -0
- data/templates/project/partials/_footer.scss +83 -0
- data/templates/project/partials/_header.scss +83 -0
- data/templates/project/partials/_media.scss +38 -0
- data/templates/project/partials/_modules.scss +19 -0
- data/templates/project/partials/_overrides.scss +47 -0
- data/templates/project/partials/_page.scss +126 -0
- data/templates/project/partials/modules/_mod-breadcrumb.scss +83 -0
- data/templates/project/partials/modules/_mod-carousels.scss +83 -0
- data/templates/project/partials/modules/_mod-default.scss +83 -0
- data/templates/project/partials/modules/_mod-form.scss +83 -0
- data/templates/project/partials/modules/_mod-login.scss +83 -0
- data/templates/project/partials/modules/_mod-pagination.scss +83 -0
- data/templates/project/partials/modules/_mod-subnav.scss +83 -0
- data/templates/project/partials/modules/_mod-widget.scss +83 -0
- data/templates/project/style.scss +28 -0
- metadata +56 -3
- data/templates/project/screen.scss +0 -2
@@ -0,0 +1,63 @@
|
|
1
|
+
module Html5BoilerplateHelper
|
2
|
+
# Create a named haml tag to wrap IE conditional around a block
|
3
|
+
# http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither
|
4
|
+
# Consider adding an manifest.appcache: h5bp.com/d/Offline
|
5
|
+
def ie_tag(name=:body, attrs={}, &block)
|
6
|
+
attrs.symbolize_keys!
|
7
|
+
haml_concat("<!--[if lt IE 7]> #{ tag(name, add_class('ie6', attrs), true) } <![endif]-->".html_safe)
|
8
|
+
haml_concat("<!--[if IE 7]> #{ tag(name, add_class('ie7', attrs), true) } <![endif]-->".html_safe)
|
9
|
+
haml_concat("<!--[if IE 8]> #{ tag(name, add_class('ie8', attrs), true) } <![endif]-->".html_safe)
|
10
|
+
haml_concat("<!--[if gt IE 8]><!-->".html_safe)
|
11
|
+
haml_tag name, attrs do
|
12
|
+
haml_concat("<!--<![endif]-->".html_safe)
|
13
|
+
block.call
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def ie_html(attrs={}, &block)
|
18
|
+
ie_tag(:html, attrs, &block)
|
19
|
+
end
|
20
|
+
|
21
|
+
def ie_body(attrs={}, &block)
|
22
|
+
ie_tag(:body, attrs, &block)
|
23
|
+
end
|
24
|
+
|
25
|
+
def google_account_id
|
26
|
+
ENV['GOOGLE_ACCOUNT_ID'] || google_config(:google_account_id)
|
27
|
+
end
|
28
|
+
|
29
|
+
def google_api_key
|
30
|
+
ENV['GOOGLE_API_KEY'] || google_config(:google_api_key)
|
31
|
+
end
|
32
|
+
|
33
|
+
def remote_jquery(version)
|
34
|
+
if Rails.env == 'development'
|
35
|
+
"'jquery', '#{version}', {uncompressed:true}"
|
36
|
+
else
|
37
|
+
"'jquery', '#{version}'"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def local_jquery(version)
|
42
|
+
if Rails.env == 'development'
|
43
|
+
"#{version}/jquery.js"
|
44
|
+
else
|
45
|
+
"#{version}/jquery.min.js"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def add_class(name, attrs)
|
52
|
+
classes = attrs[:class] || ''
|
53
|
+
classes.strip!
|
54
|
+
classes = ' ' + classes if !classes.blank?
|
55
|
+
classes = name + classes
|
56
|
+
attrs.merge(:class => classes)
|
57
|
+
end
|
58
|
+
|
59
|
+
def google_config(key)
|
60
|
+
configs = YAML.load_file(File.join(Rails.root, 'config', 'google.yml'))[Rails.env.to_sym] rescue {}
|
61
|
+
configs[key]
|
62
|
+
end
|
63
|
+
end
|
data/lib/compass/h5bp.rb
ADDED
data/lib/compass_extension.rb
CHANGED
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'compass'
|
2
|
+
require "compass/h5bp"
|
3
|
+
extension_path = File.expand_path(File.join(File.dirname(__FILE__), ".."))
|
4
|
+
Compass::Frameworks.register('compass_extension', :path => "#{File.dirname(__FILE__)}/..") if defined?(Compass)
|
5
|
+
|
6
|
+
if defined?(ActionController)
|
7
|
+
require File.join(File.dirname(__FILE__), 'app', 'helpers', 'html5_boilerplate_helper')
|
8
|
+
ActionController::Base.helper(Html5BoilerplateHelper)
|
9
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
// HTML5 ✰ Boilerplate
|
2
|
+
//
|
3
|
+
// What follows is the result of much research on cross-browser styling.
|
4
|
+
// Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
|
5
|
+
// Kroc Camen, and the H5BP dev community and team.
|
6
|
+
//
|
7
|
+
// Detailed information about this CSS: h5bp.com/css
|
8
|
+
|
9
|
+
@import "h5bp/normalize";
|
10
|
+
@import "h5bp/chromeframe";
|
11
|
+
@import "h5bp/helpers";
|
12
|
+
@import "h5bp/media";
|
@@ -0,0 +1,58 @@
|
|
1
|
+
//
|
2
|
+
// Non-semantic helper classes
|
3
|
+
//
|
4
|
+
|
5
|
+
@mixin h5bp-helpers {
|
6
|
+
|
7
|
+
.ir { @include image-replacement; }
|
8
|
+
|
9
|
+
.hidden { @include hidden; }
|
10
|
+
|
11
|
+
.visuallyhidden { @include visually-hidden; }
|
12
|
+
|
13
|
+
.invisible { @include invisible; }
|
14
|
+
|
15
|
+
.clearfix { @include micro-clearfix; }
|
16
|
+
|
17
|
+
}
|
18
|
+
|
19
|
+
// For image replacement
|
20
|
+
@mixin image-replacement($img: none, $x: 50%, $y: 50%) {
|
21
|
+
display: block; border: 0; text-indent: -999em; overflow: hidden; background-color: transparent; background-repeat: no-repeat; text-align: left; direction: ltr; *line-height: 0;
|
22
|
+
@if $img != none {
|
23
|
+
background-image: image-url($img);
|
24
|
+
background-position: $x $y;
|
25
|
+
}
|
26
|
+
br { display: none; }
|
27
|
+
}
|
28
|
+
|
29
|
+
// Uses image dimensions
|
30
|
+
@mixin sized-image-replacement($img, $x: 50%, $y: 50%) {
|
31
|
+
@include image-replacement($img, $x, $y);
|
32
|
+
width: image-width($img);
|
33
|
+
height: image-height($img);
|
34
|
+
}
|
35
|
+
|
36
|
+
// Hide from both screenreaders and browsers: h5bp.com/u
|
37
|
+
@mixin hidden {
|
38
|
+
display: none !important;
|
39
|
+
visibility: hidden;
|
40
|
+
}
|
41
|
+
|
42
|
+
// Hide only visually, but have it available for screenreaders: h5bp.com/v
|
43
|
+
@mixin visually-hidden {
|
44
|
+
border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px;
|
45
|
+
&.focusable:active, &.focusable:focus {
|
46
|
+
clip: auto; height: auto; margin: 0; overflow: visible; position: static; width: auto;
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
// Hide visually and from screenreaders, but maintain layout
|
51
|
+
@mixin invisible { visibility: hidden; }
|
52
|
+
|
53
|
+
// Contain floats: h5bp.com/q
|
54
|
+
@mixin micro-clearfix {
|
55
|
+
&:before, &:after { content: ""; display: table; }
|
56
|
+
&:after { clear: both; }
|
57
|
+
& { *zoom: 1; }
|
58
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
// Print styles
|
2
|
+
// Inlined to avoid required HTTP connection: h5bp.com/r
|
3
|
+
|
4
|
+
@mixin h5bp-media {
|
5
|
+
@media print {
|
6
|
+
@include h5bp-media-print;
|
7
|
+
}
|
8
|
+
}
|
9
|
+
|
10
|
+
@mixin h5bp-media-print {
|
11
|
+
* { background: transparent !important; color: black !important; box-shadow:none !important; text-shadow: none !important; filter:none !important; -ms-filter: none !important; } // Black prints faster: h5bp.com/s
|
12
|
+
a, a:visited { text-decoration: underline; }
|
13
|
+
a[href]:after { content: " (" attr(href) ")"; }
|
14
|
+
abbr[title]:after { content: " (" attr(title) ")"; }
|
15
|
+
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } // Don't show links for images, or javascript/internal links
|
16
|
+
pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
|
17
|
+
thead { display: table-header-group; } // h5bp.com/t
|
18
|
+
tr, img { page-break-inside: avoid; }
|
19
|
+
img { max-width: 100% !important; }
|
20
|
+
@page { margin: 0.5cm; }
|
21
|
+
p, h2, h3 { orphans: 3; widows: 3; }
|
22
|
+
h2, h3 { page-break-after: avoid; }
|
23
|
+
}
|
@@ -0,0 +1,213 @@
|
|
1
|
+
//
|
2
|
+
// Normalize
|
3
|
+
//
|
4
|
+
|
5
|
+
$line-height: 1.4 !default;
|
6
|
+
$font-color: #222 !default;
|
7
|
+
$font-family: sans-serif !default;
|
8
|
+
$font-size: 1em !default;
|
9
|
+
$link-color: #00e !default;
|
10
|
+
$link-hover-color: #06e !default;
|
11
|
+
$link-visited-color: #551a8b !default;
|
12
|
+
$selected-font-color: #fff !default;
|
13
|
+
$selected-background-color: #fe57a1 !default;
|
14
|
+
$invalid-background-color: #f0dddd !default;
|
15
|
+
|
16
|
+
|
17
|
+
@mixin h5bp-normalize {
|
18
|
+
@include h5bp-display;
|
19
|
+
@include h5bp-base;
|
20
|
+
@include h5bp-selection;
|
21
|
+
@include h5bp-links;
|
22
|
+
@include h5bp-typography;
|
23
|
+
@include h5bp-lists;
|
24
|
+
@include h5bp-embeds;
|
25
|
+
@include h5bp-figures;
|
26
|
+
@include h5bp-forms;
|
27
|
+
@include h5bp-tables;
|
28
|
+
}
|
29
|
+
|
30
|
+
|
31
|
+
// Html5 display definitions
|
32
|
+
@mixin h5bp-display {
|
33
|
+
|
34
|
+
article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; }
|
35
|
+
audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; }
|
36
|
+
audio:not([controls]) { display: none; }
|
37
|
+
[hidden] { display: none; }
|
38
|
+
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
// Base
|
43
|
+
@mixin h5bp-base {
|
44
|
+
|
45
|
+
// 1. Correct text resizing oddly in IE6/7 when body font-size is set using em units
|
46
|
+
// 2. Prevent iOS text size adjust on device orientation change, without disabling user zoom: h5bp.com/g
|
47
|
+
|
48
|
+
html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; }
|
49
|
+
|
50
|
+
html, button, input, select, textarea { font-family: $font-family; color: $font-color; }
|
51
|
+
|
52
|
+
body { margin: 0; font-size: $font-size; line-height: $line-height; }
|
53
|
+
|
54
|
+
}
|
55
|
+
|
56
|
+
@mixin h5bp-selection {
|
57
|
+
|
58
|
+
// Remove text-shadow in selection highlight: h5bp.com/i
|
59
|
+
// These selection declarations have to be separate
|
60
|
+
// Also: hot pink! (or customize the background color to match your design)
|
61
|
+
|
62
|
+
::-moz-selection { background: $selected-background-color; color: $selected-font-color; text-shadow: none; }
|
63
|
+
::selection { background: $selected-background-color; color: $selected-font-color; text-shadow: none; }
|
64
|
+
|
65
|
+
}
|
66
|
+
|
67
|
+
|
68
|
+
// Links
|
69
|
+
@mixin h5bp-links {
|
70
|
+
|
71
|
+
a { color: $link-color; }
|
72
|
+
a:visited { color: $link-visited-color; }
|
73
|
+
a:hover { color: $link-hover-color; }
|
74
|
+
a:focus { outline: thin dotted; }
|
75
|
+
|
76
|
+
// Improve readability when focused and hovered in all browsers: h5bp.com/h
|
77
|
+
a:hover, a:active { outline: 0; }
|
78
|
+
|
79
|
+
}
|
80
|
+
|
81
|
+
|
82
|
+
// Typography
|
83
|
+
@mixin h5bp-typography {
|
84
|
+
|
85
|
+
abbr[title] { border-bottom: 1px dotted; }
|
86
|
+
|
87
|
+
b, strong { font-weight: bold; }
|
88
|
+
|
89
|
+
blockquote { margin: 1em 40px; }
|
90
|
+
|
91
|
+
dfn { font-style: italic; }
|
92
|
+
|
93
|
+
hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; }
|
94
|
+
|
95
|
+
ins { background: #ff9; color: #000; text-decoration: none; }
|
96
|
+
|
97
|
+
mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; }
|
98
|
+
|
99
|
+
// Redeclare monospace font family: h5bp.com/j
|
100
|
+
pre, code, kbd, samp { font-family: monospace, serif; _font-family: 'courier new', monospace; font-size: 1em; }
|
101
|
+
|
102
|
+
// Improve readability of pre-formatted text in all browsers
|
103
|
+
pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; }
|
104
|
+
|
105
|
+
q { quotes: none; }
|
106
|
+
q:before, q:after { content: ""; content: none; }
|
107
|
+
|
108
|
+
small { font-size: 85%; }
|
109
|
+
|
110
|
+
// Position subscript and superscript content without affecting line-height: h5bp.com/k
|
111
|
+
sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
|
112
|
+
sup { top: -0.5em; }
|
113
|
+
sub { bottom: -0.25em; }
|
114
|
+
|
115
|
+
}
|
116
|
+
|
117
|
+
|
118
|
+
// Lists
|
119
|
+
@mixin h5bp-lists {
|
120
|
+
|
121
|
+
ul, ol { margin: 1em 0; padding: 0 0 0 40px; }
|
122
|
+
dd { margin: 0 0 0 40px; }
|
123
|
+
nav ul, nav ol { list-style: none; list-style-image: none; margin: 0; padding: 0; }
|
124
|
+
|
125
|
+
}
|
126
|
+
|
127
|
+
|
128
|
+
// Embedded content
|
129
|
+
@mixin h5bp-embeds {
|
130
|
+
|
131
|
+
// 1. Improve image quality when scaled in IE7: h5bp.com/d
|
132
|
+
// 2. Remove the gap between images and borders on image containers: h5bp.com/i/440
|
133
|
+
|
134
|
+
img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; }
|
135
|
+
|
136
|
+
// Correct overflow not hidden in IE9
|
137
|
+
|
138
|
+
svg:not(:root) { overflow: hidden; }
|
139
|
+
|
140
|
+
}
|
141
|
+
|
142
|
+
|
143
|
+
// Figures
|
144
|
+
@mixin h5bp-figures {
|
145
|
+
|
146
|
+
figure { margin: 0; }
|
147
|
+
|
148
|
+
}
|
149
|
+
|
150
|
+
|
151
|
+
// Forms
|
152
|
+
@mixin h5bp-forms {
|
153
|
+
|
154
|
+
form { margin: 0; }
|
155
|
+
fieldset { border: 0; margin: 0; padding: 0; }
|
156
|
+
|
157
|
+
// Indicate that 'label' will shift focus to the associated form element
|
158
|
+
label { cursor: pointer; }
|
159
|
+
|
160
|
+
// 1. Correct color not inheriting in IE6/7/8/9
|
161
|
+
// 2. Correct alignment displayed oddly in IE6/7
|
162
|
+
|
163
|
+
legend { border: 0; *margin-left: -7px; padding: 0; white-space: normal; }
|
164
|
+
|
165
|
+
// 1. Correct font-size not inheriting in all browsers
|
166
|
+
// 2. Remove margins in FF3/4 S5 Chrome
|
167
|
+
// 3. Define consistent vertical alignment display in all browsers
|
168
|
+
|
169
|
+
button, input, select, textarea { font-size: 100%; margin: 0; vertical-align: baseline; *vertical-align: middle; }
|
170
|
+
|
171
|
+
// 1. Define line-height as normal to match FF3/4 (set using !important in the UA stylesheet)
|
172
|
+
|
173
|
+
button, input { line-height: normal; }
|
174
|
+
|
175
|
+
// 1. Display hand cursor for clickable form elements
|
176
|
+
// 2. Allow styling of clickable form elements in iOS
|
177
|
+
// 3. Correct inner spacing displayed oddly in IE7 (doesn't effect IE6)
|
178
|
+
|
179
|
+
button, input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; *overflow: visible; }
|
180
|
+
|
181
|
+
// Re-set default cursor for disabled elements
|
182
|
+
|
183
|
+
button[disabled], input[disabled] { cursor: default; }
|
184
|
+
|
185
|
+
// Consistent box sizing and appearance
|
186
|
+
|
187
|
+
input[type="checkbox"], input[type="radio"] { box-sizing: border-box; padding: 0; *width: 13px; *height: 13px; }
|
188
|
+
input[type="search"] { -webkit-appearance: textfield; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box; }
|
189
|
+
input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; }
|
190
|
+
|
191
|
+
// Remove inner padding and border in FF3/4: h5bp.com/l
|
192
|
+
|
193
|
+
button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
|
194
|
+
|
195
|
+
// 1. Remove default vertical scrollbar in IE6/7/8/9
|
196
|
+
// 2. Allow only vertical resizing
|
197
|
+
|
198
|
+
textarea { overflow: auto; vertical-align: top; resize: vertical; }
|
199
|
+
|
200
|
+
// Colors for form validity
|
201
|
+
input:valid, textarea:valid { }
|
202
|
+
input:invalid, textarea:invalid { background-color: $invalid-background-color; }
|
203
|
+
|
204
|
+
}
|
205
|
+
|
206
|
+
|
207
|
+
// Tables
|
208
|
+
@mixin h5bp-tables {
|
209
|
+
|
210
|
+
table { border-collapse: collapse; border-spacing: 0; }
|
211
|
+
td { vertical-align: top; }
|
212
|
+
|
213
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
%meta{ :charset => "utf-8" }/
|
2
|
+
|
3
|
+
-#
|
4
|
+
Use the .htaccess and remove these lines to avoid edge case issues.
|
5
|
+
More info: h5bp.com/b/378
|
6
|
+
%meta{ "http-equiv" => "X-UA-Compatible", :content => "IE=edge,chrome=1" }/
|
7
|
+
|
8
|
+
%title
|
9
|
+
== #{ controller.controller_name.titleize } - #{ controller.action_name.titleize }
|
10
|
+
|
11
|
+
%meta{ :name => "description", :content => "" }/
|
12
|
+
%meta{ :name => "author", :content => "" }/
|
13
|
+
|
14
|
+
-# Mobile viewport optimized: j.mp/bplateviewport
|
15
|
+
%meta{ :name => "viewport", :content => "width=device-width, initial-scale=1.0" }/
|
16
|
+
|
17
|
+
-# Place favicon.ico and apple-touch-icon.png in the root directory: mathiasbynens.be/notes/touch-icons
|
18
|
+
|
19
|
+
-# Pass in a stylesheet_partial to render inside your head
|
20
|
+
- if local_assigns[:stylesheet_partial]
|
21
|
+
= render :partial => local_assigns[:stylesheet_partial]
|
22
|
+
|
23
|
+
-#
|
24
|
+
All JavaScript at the bottom, except for Modernizr / Respond.
|
25
|
+
Modernizr enables HTML5 elements & feature detects; Respond is a polyfill for min/max-width CSS3 Media Queries
|
26
|
+
For optimal performance, use a custom Modernizr build: www.modernizr.com/download/
|
27
|
+
= javascript_include_tag 'modernizr.min'
|
28
|
+
|
29
|
+
= csrf_meta_tag
|
@@ -0,0 +1 @@
|
|
1
|
+
%h1 Header
|
@@ -0,0 +1,37 @@
|
|
1
|
+
-# Grab Google CDN's jQuery, with a protocol relative URL
|
2
|
+
-# Looks for google_api_key first in ENV['GOOGLE_API_KEY'] then in config/google.yml
|
3
|
+
-# remote_jquery and local_jquery helpers use minified jquery unless Rails.env is development
|
4
|
+
- if !google_api_key.blank?
|
5
|
+
= javascript_include_tag "//www.google.com/jsapi?key=#{google_api_key}"
|
6
|
+
%script
|
7
|
+
google.load(#{ remote_jquery("1.7.2") });
|
8
|
+
- else
|
9
|
+
= javascript_include_tag "//ajax.googleapis.com/ajax/libs/jquery/#{ local_jquery("1.7.2") }"
|
10
|
+
|
11
|
+
-# fall back to local jQuery if necessary
|
12
|
+
%script
|
13
|
+
window.jQuery || document.write("<script src='/javascripts/jquery.min.js'>\x3C/script>")
|
14
|
+
|
15
|
+
= javascript_include_tag 'rails', 'plugins', 'application'
|
16
|
+
|
17
|
+
-# Append your own using content_for :javascripts
|
18
|
+
= yield :javascripts
|
19
|
+
|
20
|
+
-# asynchronous google analytics: mathiasbynens.be/notes/async-analytics-snippet
|
21
|
+
-# Looks for google_account_id first in ENV['GOOGLE_ACCOUNT_ID'] then in config/google.yml
|
22
|
+
- if !google_account_id.blank?
|
23
|
+
%script
|
24
|
+
var _gaq=[["_setAccount","#{google_account_id}"],["_trackPageview"],["_trackPageLoadTime"]];
|
25
|
+
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
|
26
|
+
g.src=("https:"==location.protocol?"//ssl":"//www")+".google-analytics.com/ga.js";
|
27
|
+
s.parentNode.insertBefore(g,s)}(document,"script"));
|
28
|
+
|
29
|
+
-#
|
30
|
+
Prompt IE 6 users to install Chrome Frame. Remove this if you want to support IE 6.
|
31
|
+
chromium.org/developers/how-tos/chrome-frame-getting-started
|
32
|
+
|
33
|
+
<!--[if lt IE 7]>
|
34
|
+
%script{ :src => "//ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js" }
|
35
|
+
%script
|
36
|
+
window.attachEvent('onload',function(){CFInstall.check({mode:'overlay'})})
|
37
|
+
<![endif]-->
|
@@ -0,0 +1,22 @@
|
|
1
|
+
!!! 5
|
2
|
+
-# http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither
|
3
|
+
-ie_html :class => 'no-js oldie', :lang => 'en' do
|
4
|
+
%head
|
5
|
+
-# To render a different stylesheet partial inside the head (i.e. for admin layout)
|
6
|
+
-# just copy _stylesheets.html.haml, and point to that partial instead.
|
7
|
+
= render "layouts/head", :stylesheet_partial => "layouts/stylesheets"
|
8
|
+
|
9
|
+
%body{ :class => "#{controller.controller_name}" }
|
10
|
+
#container
|
11
|
+
%header#header
|
12
|
+
= render "layouts/header"
|
13
|
+
|
14
|
+
#main{ :role => 'main' }
|
15
|
+
= render "layouts/flashes"
|
16
|
+
= yield
|
17
|
+
|
18
|
+
%footer#footer
|
19
|
+
= render "layouts/footer"
|
20
|
+
|
21
|
+
-# Javascript at the bottom for fast page loading
|
22
|
+
= render "layouts/javascripts"
|
@@ -0,0 +1,38 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>Page Not Found :(</title>
|
6
|
+
<style>
|
7
|
+
body { text-align: center;}
|
8
|
+
h1 { font-size: 50px; text-align: center }
|
9
|
+
span[frown] { transform: rotate(90deg); display:inline-block; color: #bbb; }
|
10
|
+
body { font: 20px Constantia, 'Hoefler Text', "Adobe Caslon Pro", Baskerville, Georgia, Times, serif; color: #999; text-shadow: 2px 2px 2px rgba(200, 200, 200, 0.5); }
|
11
|
+
::-moz-selection{ background:#FF5E99; color:#fff; }
|
12
|
+
::selection { background:#FF5E99; color:#fff; }
|
13
|
+
article {display:block; text-align: left; width: 500px; margin: 0 auto; }
|
14
|
+
|
15
|
+
a { color: rgb(36, 109, 56); text-decoration:none; }
|
16
|
+
a:hover { color: rgb(96, 73, 141) ; text-shadow: 2px 2px 2px rgba(36, 109, 56, 0.5); }
|
17
|
+
</style>
|
18
|
+
</head>
|
19
|
+
<body>
|
20
|
+
<article>
|
21
|
+
<h1>Not found <span frown>:(</span></h1>
|
22
|
+
<div>
|
23
|
+
<p>Sorry, but the page you were trying to view does not exist.</p>
|
24
|
+
<p>It looks like this was the result of either:</p>
|
25
|
+
<ul>
|
26
|
+
<li>a mistyped address</li>
|
27
|
+
<li>an out-of-date link</li>
|
28
|
+
</ul>
|
29
|
+
</div>
|
30
|
+
|
31
|
+
<script>
|
32
|
+
var GOOG_FIXURL_LANG = (navigator.language || '').slice(0,2),
|
33
|
+
GOOG_FIXURL_SITE = location.host;
|
34
|
+
</script>
|
35
|
+
<script src="http://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"></script>
|
36
|
+
</article>
|
37
|
+
</body>
|
38
|
+
</html>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
|
3
|
+
<cross-domain-policy>
|
4
|
+
|
5
|
+
|
6
|
+
<!-- Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html -->
|
7
|
+
|
8
|
+
<!-- Most restrictive policy: -->
|
9
|
+
<site-control permitted-cross-domain-policies="none"/>
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
<!-- Least restrictive policy: -->
|
14
|
+
<!--
|
15
|
+
<site-control permitted-cross-domain-policies="all"/>
|
16
|
+
<allow-access-from domain="*" to-ports="*" secure="false"/>
|
17
|
+
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
|
18
|
+
-->
|
19
|
+
<!--
|
20
|
+
If you host a crossdomain.xml file with allow-access-from domain="*"
|
21
|
+
and don’t understand all of the points described here, you probably
|
22
|
+
have a nasty security vulnerability. ~ simon willison
|
23
|
+
-->
|
24
|
+
|
25
|
+
</cross-domain-policy>
|
Binary file
|
Binary file
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# Html5BoilerplateHelper will first check your ENV and
|
2
|
+
# then this yml file for these values. If they are both
|
3
|
+
# empty, the google code block will not be used.
|
4
|
+
#
|
5
|
+
# e.g. ENV['GOOGLE_ACCOUNT_ID'] || yml[:google_account_id]
|
6
|
+
# e.g. ENV['GOOGLE_API_KEY'] || yml[:google_api_key]
|
7
|
+
#
|
8
|
+
defaults: &defaults
|
9
|
+
:google_account_id: ''
|
10
|
+
:google_api_key: ''
|
11
|
+
|
12
|
+
:development:
|
13
|
+
<<: *defaults
|
14
|
+
|
15
|
+
:test:
|
16
|
+
<<: *defaults
|
17
|
+
|
18
|
+
:staging:
|
19
|
+
<<: *defaults
|
20
|
+
|
21
|
+
:production:
|
22
|
+
<<: *defaults
|
@@ -0,0 +1,43 @@
|
|
1
|
+
/* the humans responsible & colophon */
|
2
|
+
/* humanstxt.org */
|
3
|
+
|
4
|
+
|
5
|
+
/* TEAM */
|
6
|
+
<your title>: <your name>
|
7
|
+
Site:
|
8
|
+
Twitter:
|
9
|
+
Location:
|
10
|
+
|
11
|
+
/* THANKS */
|
12
|
+
Names (& URL):
|
13
|
+
|
14
|
+
/* SITE */
|
15
|
+
Standards: HTML5, CSS3
|
16
|
+
Components: Modernizr, jQuery
|
17
|
+
Software:
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
-o/-
|
22
|
+
+oo//-
|
23
|
+
:ooo+//:
|
24
|
+
-ooooo///-
|
25
|
+
/oooooo//:
|
26
|
+
:ooooooo+//-
|
27
|
+
-+oooooooo///-
|
28
|
+
-://////////////+oooooooooo++////////////::
|
29
|
+
:+ooooooooooooooooooooooooooooooooooooo+:::-
|
30
|
+
-/+ooooooooooooooooooooooooooooooo+/::////:-
|
31
|
+
-:+oooooooooooooooooooooooooooo/::///////:-
|
32
|
+
--/+ooooooooooooooooooooo+::://////:-
|
33
|
+
-:+ooooooooooooooooo+:://////:--
|
34
|
+
/ooooooooooooooooo+//////:-
|
35
|
+
-ooooooooooooooooooo////-
|
36
|
+
/ooooooooo+oooooooooo//:
|
37
|
+
:ooooooo+/::/+oooooooo+//-
|
38
|
+
-oooooo/::///////+oooooo///-
|
39
|
+
/ooo+::://////:---:/+oooo//:
|
40
|
+
-o+/::///////:- -:/+o+//-
|
41
|
+
:-:///////:- -:/://
|
42
|
+
-////:- --//:
|
43
|
+
-- -:
|