webby 0.1.0 → 0.2.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.
- data/History.txt +7 -0
- data/Manifest.txt +30 -1
- data/Rakefile +6 -2
- data/bin/webby +1 -1
- data/data/Rakefile +6 -2
- data/data/content/{index.rhtml → index.txt} +0 -0
- data/data/tasks/create.rake +6 -1
- data/data/tasks/deploy.rake +22 -0
- data/data/tasks/heel.rake +26 -0
- data/data/tasks/setup.rb +27 -0
- data/lib/webby.rb +20 -12
- data/lib/webby/builder.rb +6 -19
- data/lib/webby/main.rb +85 -15
- data/lib/webby/pages_db.rb +24 -1
- data/lib/webby/renderer.rb +25 -3
- data/lib/webby/resource.rb +89 -13
- data/lib/webby/webby_task.rb +19 -41
- data/tasks/doc.rake +2 -19
- data/tasks/gem.rake +14 -41
- data/tasks/manifest.rake +1 -1
- data/tasks/rubyforge.rake +57 -0
- data/tasks/setup.rb +6 -5
- data/tasks/spec.rake +3 -3
- data/tasks/website.rake +38 -0
- data/website/Rakefile +13 -0
- data/website/content/css/blueprint/lib/buttons.css +112 -0
- data/website/content/css/blueprint/lib/compressed.css +127 -0
- data/website/content/css/blueprint/lib/grid.css +177 -0
- data/website/content/css/blueprint/lib/img/baseline-black.png +0 -0
- data/website/content/css/blueprint/lib/img/baseline.png +0 -0
- data/website/content/css/blueprint/lib/img/grid.png +0 -0
- data/website/content/css/blueprint/lib/img/icons/cross.png +0 -0
- data/website/content/css/blueprint/lib/img/icons/textfield_key.png +0 -0
- data/website/content/css/blueprint/lib/img/icons/tick.png +0 -0
- data/website/content/css/blueprint/lib/reset.css +37 -0
- data/website/content/css/blueprint/lib/typography.css +159 -0
- data/website/content/css/blueprint/print.css +75 -0
- data/website/content/css/blueprint/screen.css +34 -0
- data/website/content/css/site.css +22 -0
- data/website/content/download.txt +8 -0
- data/website/content/index.txt +28 -0
- data/website/content/tutorial.txt +130 -0
- data/website/layouts/default.rhtml +49 -0
- data/website/tasks/create.rake +11 -0
- data/website/tasks/deploy.rake +22 -0
- data/website/tasks/heel.rake +26 -0
- data/website/tasks/setup.rb +27 -0
- data/website/templates/page.erb +8 -0
- metadata +33 -14
data/tasks/manifest.rake
CHANGED
@@ -0,0 +1,57 @@
|
|
1
|
+
# $Id: rubyforge.rake 11 2007-08-23 15:45:16Z tim_pease $
|
2
|
+
|
3
|
+
if PROJ.rubyforge_name && HAVE_RUBYFORGE
|
4
|
+
|
5
|
+
require 'rubyforge'
|
6
|
+
require 'rake/contrib/sshpublisher'
|
7
|
+
|
8
|
+
namespace :gem do
|
9
|
+
desc 'Package and upload to RubyForge'
|
10
|
+
task :release => [:clobber, :package] do |t|
|
11
|
+
v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
|
12
|
+
abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
|
13
|
+
pkg = "pkg/#{PROJ.spec.full_name}"
|
14
|
+
|
15
|
+
if $DEBUG then
|
16
|
+
puts "release_id = rf.add_release #{PROJ.rubyforge_name.inspect}, #{PROJ.name.inspect}, #{PROJ.version.inspect}, \"#{pkg}.tgz\""
|
17
|
+
puts "rf.add_file #{PROJ.rubyforge_name.inspect}, #{PROJ.name.inspect}, release_id, \"#{pkg}.gem\""
|
18
|
+
end
|
19
|
+
|
20
|
+
rf = RubyForge.new
|
21
|
+
puts 'Logging in'
|
22
|
+
rf.login
|
23
|
+
|
24
|
+
c = rf.userconfig
|
25
|
+
c['release_notes'] = PROJ.description if PROJ.description
|
26
|
+
c['release_changes'] = PROJ.changes if PROJ.changes
|
27
|
+
c['preformatted'] = true
|
28
|
+
|
29
|
+
files = [(PROJ.need_tar ? "#{pkg}.tgz" : nil),
|
30
|
+
(PROJ.need_zip ? "#{pkg}.zip" : nil),
|
31
|
+
"#{pkg}.gem"].compact
|
32
|
+
|
33
|
+
puts "Releasing #{PROJ.name} v. #{PROJ.version}"
|
34
|
+
rf.add_release PROJ.rubyforge_name, PROJ.name, PROJ.version, *files
|
35
|
+
end
|
36
|
+
end # namespace :gem
|
37
|
+
|
38
|
+
|
39
|
+
namespace :doc do
|
40
|
+
desc "Publish RDoc to RubyForge"
|
41
|
+
task :release => %w(doc:clobber_rdoc doc:rdoc) do
|
42
|
+
config = YAML.load(
|
43
|
+
File.read(File.expand_path('~/.rubyforge/user-config.yml'))
|
44
|
+
)
|
45
|
+
|
46
|
+
host = "#{config['username']}@rubyforge.org"
|
47
|
+
remote_dir = "/var/www/gforge-projects/#{PROJ.rubyforge_name}/"
|
48
|
+
remote_dir << PROJ.rdoc_remote_dir || PROJ.name
|
49
|
+
local_dir = PROJ.rdoc_dir
|
50
|
+
|
51
|
+
Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
|
52
|
+
end
|
53
|
+
end # namespace :doc
|
54
|
+
|
55
|
+
end # if HAVE_RUBYFORGE
|
56
|
+
|
57
|
+
# EOF
|
data/tasks/setup.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# $Id: setup.rb
|
1
|
+
# $Id: setup.rb 13 2007-08-23 22:18:00Z tim_pease $
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'ostruct'
|
@@ -33,6 +33,7 @@ PROJ.rdoc_opts = []
|
|
33
33
|
PROJ.rdoc_include = %w(^lib ^bin ^ext txt$)
|
34
34
|
PROJ.rdoc_exclude = %w(extconf\.rb$ ^Manifest\.txt$)
|
35
35
|
PROJ.rdoc_main = 'README.txt'
|
36
|
+
PROJ.rdoc_dir = 'doc'
|
36
37
|
PROJ.rdoc_remote_dir = nil
|
37
38
|
|
38
39
|
# Extensions
|
@@ -86,12 +87,12 @@ SUDO = if WIN32 then ''
|
|
86
87
|
RCOV = WIN32 ? 'rcov.cmd' : 'rcov'
|
87
88
|
GEM = WIN32 ? 'gem.cmd' : 'gem'
|
88
89
|
|
89
|
-
%w(rcov
|
90
|
+
%w(rcov spec rubyforge).each do |lib|
|
90
91
|
begin
|
91
|
-
|
92
|
-
Object.instance_eval {const_set "HAVE_#{
|
92
|
+
require lib
|
93
|
+
Object.instance_eval {const_set "HAVE_#{lib.upcase}", true}
|
93
94
|
rescue LoadError
|
94
|
-
Object.instance_eval {const_set "HAVE_#{
|
95
|
+
Object.instance_eval {const_set "HAVE_#{lib.upcase}", false}
|
95
96
|
end
|
96
97
|
end
|
97
98
|
|
data/tasks/spec.rake
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
# $Id$
|
1
|
+
# $Id: spec.rake 13 2007-08-23 22:18:00Z tim_pease $
|
2
2
|
|
3
|
-
if
|
3
|
+
if HAVE_SPEC
|
4
4
|
|
5
5
|
require 'spec/rake/spectask'
|
6
6
|
|
@@ -32,6 +32,6 @@ end # namespace :spec
|
|
32
32
|
|
33
33
|
task :clobber => 'spec:clobber_rcov' if HAVE_RCOV
|
34
34
|
|
35
|
-
end # if
|
35
|
+
end # if HAVE_SPEC
|
36
36
|
|
37
37
|
# EOF
|
data/tasks/website.rake
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# $Id: website.rake 12 2007-08-23 16:43:11Z tim_pease $
|
2
|
+
|
3
|
+
namespace :website do
|
4
|
+
|
5
|
+
desc 'Build the Webby website'
|
6
|
+
task :build do
|
7
|
+
begin
|
8
|
+
olddir = pwd
|
9
|
+
chdir 'website'
|
10
|
+
sh 'rake build'
|
11
|
+
cp_r 'output/.', olddir + '/doc'
|
12
|
+
ensure
|
13
|
+
chdir olddir
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'Remove the Webby website'
|
18
|
+
task :clobber do
|
19
|
+
rm_r 'doc' rescue nil
|
20
|
+
end
|
21
|
+
|
22
|
+
desc 'Publish the website to RubyForge'
|
23
|
+
task :release => %w(website:clobber doc:rdoc website:build) do
|
24
|
+
config = YAML.load(
|
25
|
+
File.read(File.expand_path('~/.rubyforge/user-config.yml'))
|
26
|
+
)
|
27
|
+
|
28
|
+
host = "#{config['username']}@rubyforge.org"
|
29
|
+
remote_dir = "/var/www/gforge-projects/#{PROJ.rubyforge_name}/"
|
30
|
+
|
31
|
+
sh "rsync --delete -rulptzCF doc/ #{host}:#{remote_dir}"
|
32
|
+
end
|
33
|
+
|
34
|
+
end # namespace :website
|
35
|
+
|
36
|
+
task :clobber => 'website:clobber'
|
37
|
+
|
38
|
+
# EOF
|
data/website/Rakefile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
|
2
|
+
require 'webby'
|
3
|
+
load 'tasks/setup.rb'
|
4
|
+
|
5
|
+
task :default => :build
|
6
|
+
|
7
|
+
desc 'deploy the website to Rubyforge'
|
8
|
+
task :deploy => [:build, 'deploy:rsync']
|
9
|
+
|
10
|
+
SITE.host = 'tim_pease@rubyforge.org'
|
11
|
+
SITE.remote_dir = '/var/www/gforge-projects/webby/'
|
12
|
+
|
13
|
+
# EOF
|
@@ -0,0 +1,112 @@
|
|
1
|
+
/* --------------------------------------------------------------
|
2
|
+
|
3
|
+
Buttons.css
|
4
|
+
* Gives you some great buttons for many purposes.
|
5
|
+
|
6
|
+
Created by Kevin Hale [particletree.com]
|
7
|
+
* particletree.com/features/rediscovering-the-button-element
|
8
|
+
|
9
|
+
W3C: "Buttons created with the BUTTON element function
|
10
|
+
just like buttons created with the INPUT element,
|
11
|
+
but they offer richer rendering possibilities."
|
12
|
+
|
13
|
+
Usage:
|
14
|
+
|
15
|
+
<button type="submit" class="button positive">
|
16
|
+
<img src="css/blueprint/lib/img/icons/tick.png" alt=""/> Save
|
17
|
+
</button>
|
18
|
+
|
19
|
+
<a class="button" href="/password/reset/">
|
20
|
+
<img src="css/blueprint/lib/img/icons/textfield_key.png" alt=""/> Change Password
|
21
|
+
</a>
|
22
|
+
|
23
|
+
<a href="#" class="button negative">
|
24
|
+
<img src="css/blueprint/lib/img/icons/cross.png" alt=""/> Cancel
|
25
|
+
</a>
|
26
|
+
|
27
|
+
|
28
|
+
-------------------------------------------------------------- */
|
29
|
+
|
30
|
+
a.button, button {
|
31
|
+
display:block;
|
32
|
+
float:left;
|
33
|
+
margin:0 0.583em 0.667em 0;
|
34
|
+
padding:5px 10px 6px 7px; /* Links */
|
35
|
+
|
36
|
+
border:0.1em solid #dedede;
|
37
|
+
border-top:0.1em solid #eee;
|
38
|
+
border-left:0.1em solid #eee;
|
39
|
+
|
40
|
+
background-color:#f5f5f5;
|
41
|
+
font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
|
42
|
+
font-size:100%;
|
43
|
+
line-height:130%;
|
44
|
+
text-decoration:none;
|
45
|
+
font-weight:bold;
|
46
|
+
color:#565656;
|
47
|
+
cursor:pointer;
|
48
|
+
}
|
49
|
+
button {
|
50
|
+
width:auto;
|
51
|
+
overflow:visible;
|
52
|
+
padding:4px 10px 3px 7px; /* IE6 */
|
53
|
+
}
|
54
|
+
button[type] {
|
55
|
+
padding:5px 10px 5px 7px; /* Firefox */
|
56
|
+
line-height:17px; /* Safari */
|
57
|
+
}
|
58
|
+
*:first-child+html button[type] {
|
59
|
+
padding:4px 10px 3px 7px; /* IE7 */
|
60
|
+
}
|
61
|
+
button img, a.button img{
|
62
|
+
margin:0 3px -3px 0 !important;
|
63
|
+
padding:0;
|
64
|
+
border:none;
|
65
|
+
width:16px;
|
66
|
+
height:16px;
|
67
|
+
}
|
68
|
+
|
69
|
+
|
70
|
+
/* Button colors
|
71
|
+
-------------------------------------------------------------- */
|
72
|
+
|
73
|
+
/* Standard */
|
74
|
+
button:hover, a.button:hover{
|
75
|
+
background-color:#dff4ff;
|
76
|
+
border:0.1em solid #c2e1ef;
|
77
|
+
color:#336699;
|
78
|
+
}
|
79
|
+
a.button:active{
|
80
|
+
background-color:#6299c5;
|
81
|
+
border:1px solid #6299c5;
|
82
|
+
color:#fff;
|
83
|
+
}
|
84
|
+
|
85
|
+
/* Positive */
|
86
|
+
.positive {
|
87
|
+
color:#529214;
|
88
|
+
}
|
89
|
+
a.positive:hover, button.positive:hover {
|
90
|
+
background-color:#E6EFC2;
|
91
|
+
border:0.1em solid #C6D880;
|
92
|
+
color:#529214;
|
93
|
+
}
|
94
|
+
a.positive:active {
|
95
|
+
background-color:#529214;
|
96
|
+
border:0.1em solid #529214;
|
97
|
+
color:#fff;
|
98
|
+
}
|
99
|
+
|
100
|
+
/* Negative */
|
101
|
+
.negative {
|
102
|
+
color:#d12f19;
|
103
|
+
}
|
104
|
+
a.negative:hover, button.negative:hover {
|
105
|
+
background:#fbe3e4;
|
106
|
+
border:0.1em solid #fbc2c4;
|
107
|
+
}
|
108
|
+
a.negative:active {
|
109
|
+
background-color:#d12f19;
|
110
|
+
border:0.1em solid #d12f19;
|
111
|
+
color:#fff;
|
112
|
+
}
|
@@ -0,0 +1,127 @@
|
|
1
|
+
/* Blueprint Comressed Version */
|
2
|
+
|
3
|
+
/* reset.css */
|
4
|
+
html,body,div,span,applet,object,iframe, h1,h2,h3,h4,h5,h6,p,blockquote,pre, a,abbr,acronym,address,big,cite,code, del,dfn,em,font,img,ins,kbd,q,s,samp, small,strike,strong,sub,sup,tt,var, dl,dt,dd,ol,ul,li, fieldset,form,label,legend, table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;}
|
5
|
+
body{line-height:1;color:#333;background:white;}
|
6
|
+
table{border-collapse:separate;border-spacing:0;}
|
7
|
+
caption,th,td{text-align:left;font-weight:normal;}
|
8
|
+
blockquote:before,blockquote:after,q:before,q:after{content:"";}
|
9
|
+
blockquote,q{quotes:"" "";}
|
10
|
+
|
11
|
+
/* typograpghy.css */
|
12
|
+
body{font-family:"Lucida Grande",Helvetica,Arial,Verdana,sans-serif;line-height:1.5;}
|
13
|
+
body{font-size:75%;}
|
14
|
+
html > body{font-size:12px;}
|
15
|
+
h1,h2,h3,h4,h5,h6{font-family:Helvetica,Arial,"Lucida Grande",Verdana,sans-serif;color:#111;clear:both;}
|
16
|
+
h1{font-size:3em;}
|
17
|
+
h2{font-size:2em;}
|
18
|
+
h3{font-size:1.5em;line-height:2;}
|
19
|
+
h4{font-size:1.2em;line-height:1.25;font-weight:bold;}
|
20
|
+
h5{font-size:1em;font-weight:bold;}
|
21
|
+
h6{font-size:1em;}
|
22
|
+
p{margin:0 0 1.5em 0;text-align:justify;}
|
23
|
+
p.last{margin-bottom:0;}
|
24
|
+
p img{float:left;margin:1.5em 1.5em 1.5em 0;padding:0;}
|
25
|
+
p img.top{margin-top:0;}
|
26
|
+
ul,ol{margin:0 0 1.5em 1.5em;}
|
27
|
+
ol{list-style-type:decimal;}
|
28
|
+
dl{margin:1.5em 0;}
|
29
|
+
dl dt{font-weight:bold;}
|
30
|
+
a{color:#125AA7;text-decoration:underline;outline:none;}
|
31
|
+
a:hover{color:#000;}
|
32
|
+
blockquote{margin:1.5em 0 1.5em 1.5em;color:#666;font-style:italic;}
|
33
|
+
strong{font-weight:bold;}
|
34
|
+
em{font-style:italic;}
|
35
|
+
pre{margin-bottom:1.3em;background:#eee;border:0.1em solid #ddd;padding:1.5em;}
|
36
|
+
code{font:0.9em Monaco,monospace;}
|
37
|
+
hr{background:#B2CCFF;color:#B2CCFF;clear:both;float:none;width:100%;height:0.1em;margin:0 0 1.4em 0;border:none;}
|
38
|
+
* html hr{margin:0 0 1.2em 0;}
|
39
|
+
table{margin-bottom:1.4em;border-top:0.1em solid #ddd;border-left:0.1em solid #ddd;}
|
40
|
+
th,td{height:1em;padding:0.2em 0.4em;border-bottom:0.1em solid #ddd;border-right:0.1em solid #ddd;}
|
41
|
+
th{font-weight:bold;}
|
42
|
+
label{font-weight:bold;}
|
43
|
+
textarea{height:180px;width:300px;}
|
44
|
+
p.small{font-size:0.8em;margin-bottom:1.875em;line-height:1.875em;}
|
45
|
+
p.large{font-size:1.2em;line-height:2.5em;}
|
46
|
+
p.quiet{color:#666;}
|
47
|
+
.hide{display:none;}
|
48
|
+
.alt{color:#666;font-family:"Warnock Pro","Goudy Old Style","Palatino","Book Antiqua",serif;font-size:1.2em;line-height:1%;font-style:italic;}
|
49
|
+
.dquo{margin-left:-.7em;}
|
50
|
+
p.incr,.incr p{font-size:0.83333em;line-height:1.44em;margin-bottom:1.8em;}
|
51
|
+
|
52
|
+
/* grid.css */
|
53
|
+
body{text-align:center;margin:36px 0;}
|
54
|
+
.container{text-align:left;position:relative;padding:0;margin:0 auto;width:960px;}
|
55
|
+
.column{float:left;margin:0 10px;padding:0;}
|
56
|
+
* html .column{overflow-x:hidden;}
|
57
|
+
.border{padding-right:9px;margin-right:0;border-right:1px solid #ddd;}
|
58
|
+
.first{margin-left:0;}
|
59
|
+
.last{margin-right:0;}
|
60
|
+
.span-1{width:50px;}
|
61
|
+
.span-2{width:120px;}
|
62
|
+
.span-3{width:190px;}
|
63
|
+
.span-4{width:260px;}
|
64
|
+
.span-5{width:330px;}
|
65
|
+
.span-6{width:400px;}
|
66
|
+
.span-7{width:470px;}
|
67
|
+
.span-8{width:540px;}
|
68
|
+
.span-9{width:610px;}
|
69
|
+
.span-10{width:680px;}
|
70
|
+
.span-11{width:750px;}
|
71
|
+
.span-12{width:820px;}
|
72
|
+
.span-13{width:890px;}
|
73
|
+
.span-14{width:960px;margin:0;}
|
74
|
+
.append-1{padding-right:70px;}
|
75
|
+
.append-2{padding-right:140px;}
|
76
|
+
.append-3{padding-right:210px;}
|
77
|
+
.append-4{padding-right:280px;}
|
78
|
+
.append-5{padding-right:350px;}
|
79
|
+
.append-6{padding-right:420px;}
|
80
|
+
.append-7{padding-right:490px;}
|
81
|
+
.append-8{padding-right:560px;}
|
82
|
+
.append-9{padding-right:630px;}
|
83
|
+
.append-10{padding-right:700px;}
|
84
|
+
.append-11{padding-right:770px;}
|
85
|
+
.append-12{padding-right:840px;}
|
86
|
+
.append-13{padding-right:910px;}
|
87
|
+
.prepend-1{padding-left:70px;}
|
88
|
+
.prepend-2{padding-left:140px;}
|
89
|
+
.prepend-3{padding-left:210px;}
|
90
|
+
.prepend-4{padding-left:280px;}
|
91
|
+
.prepend-5{padding-left:350px;}
|
92
|
+
.prepend-6{padding-left:420px;}
|
93
|
+
.prepend-7{padding-left:490px;}
|
94
|
+
.prepend-8{padding-left:560px;}
|
95
|
+
.prepend-9{padding-left:630px;}
|
96
|
+
.prepend-10{padding-left:700px;}
|
97
|
+
.prepend-11{padding-left:770px;}
|
98
|
+
.prepend-12{padding-left:840px;}
|
99
|
+
.prepend-13{padding-left:910px;}
|
100
|
+
.box{padding:1.5em;margin-bottom:1.5em;background:#F0F0F0;}
|
101
|
+
.clear{display:inline-block;}
|
102
|
+
.clear:after,.container:after{content:".";display:block;height:0;clear:both;visibility:hidden;}
|
103
|
+
* html .clear{height:1%;}
|
104
|
+
.clear{display:block;}
|
105
|
+
img{margin:0 0 1.5em 0;}
|
106
|
+
.pull-1{margin-left:-70px;}
|
107
|
+
.pull-2{margin-left:-140px;}
|
108
|
+
.pull-3{margin-left:-210px;}
|
109
|
+
.push-0{margin:0 0 0 1.5em;float:right;}
|
110
|
+
.push-1{margin:0 -88px 0 1.5em;float:right;}
|
111
|
+
.push-2{margin:0 -158px 0 1.5em;float:right;}
|
112
|
+
.push-3{margin:0 -228px 0 1.5em;float:right;}
|
113
|
+
|
114
|
+
/* buttons.css */
|
115
|
+
a.button,button{display:block;float:left;margin:0 0.583em 0.667em 0;padding:5px 10px 6px 7px;border:0.1em solid #dedede;border-top:0.1em solid #eee;border-left:0.1em solid #eee;background-color:#f5f5f5;line-height:130%;text-decoration:none;font-weight:bold;color:#565656;cursor:pointer;font:100% "Lucida Grande",Tahoma,Arial,Verdana,sans-serif}
|
116
|
+
button{width:auto;overflow:visible;padding:4px 10px 3px 7px}
|
117
|
+
button[type]{padding:5px 10px 5px 7px;line-height:17px}
|
118
|
+
*:first-child+html button[type]{padding:4px 10px 3px 7px}
|
119
|
+
button img,a.button img{margin:0 3px -3px 0 !important;padding:0;border:none;width:16px;height:16px}
|
120
|
+
button:hover,a.button:hover{background-color:#dff4ff;border:0.1em solid #c2e1ef;color:#336699}
|
121
|
+
a.button:active{background-color:#6299c5;border:1px solid #6299c5;color:#fff}
|
122
|
+
.positive{color:#529214}
|
123
|
+
a.positive:hover,button.positive:hover{background-color:#E6EFC2;border:0.1em solid #C6D880;color:#529214}
|
124
|
+
a.positive:active{background-color:#529214;border:0.1em solid #529214;color:#fff}
|
125
|
+
.negative{color:#d12f19}
|
126
|
+
a.negative:hover,button.negative:hover{background:#fbe3e4;border:0.1em solid #fbc2c4}
|
127
|
+
a.negative:active{background-color:#d12f19;border:0.1em solid #d12f19;color:#fff}
|
@@ -0,0 +1,177 @@
|
|
1
|
+
/* --------------------------------------------------------------
|
2
|
+
|
3
|
+
Grid.css
|
4
|
+
* Creates an easy to use grid of 14 columns.
|
5
|
+
|
6
|
+
Based on work by:
|
7
|
+
* Nathan Borror [playgroundblues.com]
|
8
|
+
* Jeff Croft [jeffcroft.com]
|
9
|
+
* Christian Metts [mintchaos.com]
|
10
|
+
* Khoi Vinh [subtraction.com]
|
11
|
+
|
12
|
+
By default, the grid is 960px wide, with columns
|
13
|
+
spanning 50px, and a 20px margin between columns.
|
14
|
+
|
15
|
+
If you need fewer or more columns, use this
|
16
|
+
formula to find the new total width:
|
17
|
+
|
18
|
+
Total width = (columns * 70) - 20
|
19
|
+
|
20
|
+
-------------------------------------------------------------- */
|
21
|
+
|
22
|
+
body {
|
23
|
+
text-align: center; /* IE Fix */
|
24
|
+
margin:36px 0;
|
25
|
+
}
|
26
|
+
|
27
|
+
/* A container should group all your columns. */
|
28
|
+
.container {
|
29
|
+
text-align: left;
|
30
|
+
position: relative;
|
31
|
+
padding: 0;
|
32
|
+
margin: 0 auto; /* Centers layout */
|
33
|
+
width: 960px; /* Total width */
|
34
|
+
}
|
35
|
+
|
36
|
+
|
37
|
+
/* Columns
|
38
|
+
-------------------------------------------------------------- */
|
39
|
+
|
40
|
+
/* Use this class together with the .span-x classes
|
41
|
+
to create any compsition of columns in a layout.
|
42
|
+
Nesting columns works like a charm (remember .first and .last). */
|
43
|
+
|
44
|
+
.column {
|
45
|
+
float: left;
|
46
|
+
margin: 0 10px;
|
47
|
+
padding: 0;
|
48
|
+
}
|
49
|
+
* html .column { overflow-x: hidden; } /* IE6 fix */
|
50
|
+
|
51
|
+
|
52
|
+
/* Add this class to a column if you want a border on its
|
53
|
+
right hand side. This should be customized to fit your needs. */
|
54
|
+
|
55
|
+
.border {
|
56
|
+
padding-right: 9px;
|
57
|
+
margin-right: 0;
|
58
|
+
border-right: 1px solid #ddd;
|
59
|
+
}
|
60
|
+
|
61
|
+
|
62
|
+
/* The first and last elements in a multi-column
|
63
|
+
block needs one of these classes each. */
|
64
|
+
|
65
|
+
.first { margin-left: 0; }
|
66
|
+
.last { margin-right: 0; }
|
67
|
+
|
68
|
+
|
69
|
+
/* Use these classes to set how wide a column should be. */
|
70
|
+
.span-1 { width: 50px; }
|
71
|
+
.span-2 { width: 120px; }
|
72
|
+
.span-3 { width: 190px; }
|
73
|
+
.span-4 { width: 260px; }
|
74
|
+
.span-5 { width: 330px; }
|
75
|
+
.span-6 { width: 400px; }
|
76
|
+
.span-7 { width: 470px; }
|
77
|
+
.span-8 { width: 540px; }
|
78
|
+
.span-9 { width: 610px; }
|
79
|
+
.span-10 { width: 680px; }
|
80
|
+
.span-11 { width: 750px; }
|
81
|
+
.span-12 { width: 820px; }
|
82
|
+
.span-13 { width: 890px; }
|
83
|
+
.span-14 { width: 960px; margin: 0; }
|
84
|
+
|
85
|
+
/* Add these to a column to append empty cols. */
|
86
|
+
.append-1 { padding-right: 70px; }
|
87
|
+
.append-2 { padding-right: 140px; }
|
88
|
+
.append-3 { padding-right: 210px; }
|
89
|
+
.append-4 { padding-right: 280px; }
|
90
|
+
.append-5 { padding-right: 350px; }
|
91
|
+
.append-6 { padding-right: 420px; }
|
92
|
+
.append-7 { padding-right: 490px; }
|
93
|
+
.append-8 { padding-right: 560px; }
|
94
|
+
.append-9 { padding-right: 630px; }
|
95
|
+
.append-10 { padding-right: 700px; }
|
96
|
+
.append-11 { padding-right: 770px; }
|
97
|
+
.append-12 { padding-right: 840px; }
|
98
|
+
.append-13 { padding-right: 910px; }
|
99
|
+
|
100
|
+
/* Add these to a column to prepend empty cols. */
|
101
|
+
.prepend-1 { padding-left: 70px; }
|
102
|
+
.prepend-2 { padding-left: 140px; }
|
103
|
+
.prepend-3 { padding-left: 210px; }
|
104
|
+
.prepend-4 { padding-left: 280px; }
|
105
|
+
.prepend-5 { padding-left: 350px; }
|
106
|
+
.prepend-6 { padding-left: 420px; }
|
107
|
+
.prepend-7 { padding-left: 490px; }
|
108
|
+
.prepend-8 { padding-left: 560px; }
|
109
|
+
.prepend-9 { padding-left: 630px; }
|
110
|
+
.prepend-10 { padding-left: 700px; }
|
111
|
+
.prepend-11 { padding-left: 770px; }
|
112
|
+
.prepend-12 { padding-left: 840px; }
|
113
|
+
.prepend-13 { padding-left: 910px; }
|
114
|
+
|
115
|
+
|
116
|
+
/* Use a .box to create a padded box inside a column.
|
117
|
+
Sticking to the the baseline. */
|
118
|
+
|
119
|
+
.box {
|
120
|
+
padding: 1.5em;
|
121
|
+
margin-bottom: 1.5em;
|
122
|
+
background: #f0f0f0;
|
123
|
+
}
|
124
|
+
|
125
|
+
|
126
|
+
/* Clearing floats without extra markup
|
127
|
+
Based on How To Clear Floats Without Structural Markup by PiE
|
128
|
+
[http://www.positioniseverything.net/easyclearing.html] */
|
129
|
+
|
130
|
+
.clear { display: inline-block; }
|
131
|
+
.clear:after, .container:after {
|
132
|
+
content: ".";
|
133
|
+
display: block;
|
134
|
+
height: 0;
|
135
|
+
clear: both;
|
136
|
+
visibility: hidden;
|
137
|
+
}
|
138
|
+
* html .clear { height: 1%; }
|
139
|
+
.clear { display: block; }
|
140
|
+
|
141
|
+
|
142
|
+
/* Nudge your elements [subtraction.com/archives/2007/0606_nudge_your_e.php]:
|
143
|
+
All block elements (not hr) inside a col should have a 5px padding on each side.
|
144
|
+
(Not everyone wants this, but feel free to uncomment if you do.)
|
145
|
+
|
146
|
+
p,ul,ol,dl,h1,h2,h3,h4,h5,h6,
|
147
|
+
caption,pre,blockquote,input,textarea {
|
148
|
+
padding-left: 5px;
|
149
|
+
padding-right: 5px;
|
150
|
+
}
|
151
|
+
div, table {
|
152
|
+
margin-left: 5px;
|
153
|
+
margin-right: 5px;
|
154
|
+
padding: 0;
|
155
|
+
} */
|
156
|
+
|
157
|
+
|
158
|
+
/* Images
|
159
|
+
-------------------------------------------------------------- */
|
160
|
+
|
161
|
+
/* Remember the baseline (typography.css). */
|
162
|
+
img { margin: 0 0 1.5em 0; }
|
163
|
+
|
164
|
+
|
165
|
+
/* Use these classes to make an image flow into the column before
|
166
|
+
or after it. This techique can also be used on other objects. */
|
167
|
+
|
168
|
+
.pull-1 { margin-left: -70px; }
|
169
|
+
.pull-2 { margin-left: -140px; }
|
170
|
+
.pull-3 { margin-left: -210px; }
|
171
|
+
|
172
|
+
.push-0 { margin: 0 0 0 1.5em; float: right; } /* Right aligns the image. */
|
173
|
+
.push-1 { margin: 0 -88px 0 1.5em; float: right; }
|
174
|
+
.push-2 { margin: 0 -158px 0 1.5em; float: right; }
|
175
|
+
.push-3 { margin: 0 -228px 0 1.5em; float: right; }
|
176
|
+
|
177
|
+
|