macournoyer-invisible 0.0.1
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/README +63 -0
- data/Rakefile +64 -0
- data/app_generators/flat/flat_generator.rb +40 -0
- data/app_generators/flat/templates/README +10 -0
- data/app_generators/flat/templates/app.rb +16 -0
- data/app_generators/flat/templates/rack.ru +17 -0
- data/app_generators/full/full_generator.rb +80 -0
- data/app_generators/full/templates/README +10 -0
- data/app_generators/full/templates/Rakefile +16 -0
- data/app_generators/full/templates/app.rb +7 -0
- data/app_generators/full/templates/config/boot.rb +5 -0
- data/app_generators/full/templates/config/env.rb +18 -0
- data/app_generators/full/templates/config/env/development.rb +6 -0
- data/app_generators/full/templates/config/env/production.rb +7 -0
- data/app_generators/full/templates/config/env/test.rb +1 -0
- data/app_generators/full/templates/config/rack.ru +6 -0
- data/app_generators/full/templates/gitignore +3 -0
- data/app_generators/full/templates/public/stylesheets/ie.css +16 -0
- data/app_generators/full/templates/public/stylesheets/print.css +21 -0
- data/app_generators/full/templates/public/stylesheets/screen.css +242 -0
- data/app_generators/full/templates/spec/app_spec.rb +7 -0
- data/app_generators/full/templates/spec/spec_helper.rb +14 -0
- data/app_generators/full/templates/test/app_test.rb +7 -0
- data/app_generators/full/templates/test/test_helper.rb +15 -0
- data/app_generators/full/templates/views/layout.erb +18 -0
- data/bin/invisible +18 -0
- data/invisible.gemspec +119 -0
- data/lib/invisible.rb +212 -0
- data/lib/invisible/core_ext.rb +12 -0
- data/lib/invisible/erb.rb +16 -0
- data/lib/invisible/erubis.rb +14 -0
- data/lib/invisible/haml.rb +14 -0
- data/lib/invisible/helpers.rb +5 -0
- data/lib/invisible/mock.rb +20 -0
- data/lib/invisible/reloader.rb +22 -0
- metadata +119 -0
data/README
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
= THE INVISIBLE FRAMEWORK
|
2
|
+
Invisible is like a giant robot combining the
|
3
|
+
awesomeness of Rails, Merb, Camping and Sinatra.
|
4
|
+
Except, it's tiny (100 sloc).
|
5
|
+
|
6
|
+
It's easy to deploy and get started with using the
|
7
|
+
friendly generator.
|
8
|
+
|
9
|
+
Get started today!
|
10
|
+
|
11
|
+
invisible my_lil_app
|
12
|
+
cd my_lil_app
|
13
|
+
thin start config/rack.ru
|
14
|
+
edit app.rb
|
15
|
+
|
16
|
+
Or, if you're really into tiny things:
|
17
|
+
|
18
|
+
invisible my_very_lil_app --flat
|
19
|
+
|
20
|
+
== Build web apps in just a few lines
|
21
|
+
The app syntax looks a lot like Sinatra:
|
22
|
+
|
23
|
+
get "/session/:value" do
|
24
|
+
session[:invisible] = params[:value]
|
25
|
+
render do
|
26
|
+
h2 "I added this to the session for you:"
|
27
|
+
pre params[:value].inspect
|
28
|
+
p { a "Go back", :href => "/" }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
You can also render ERB, eRubis and Haml templates.
|
33
|
+
|
34
|
+
== TATFT (aka Test all the fucking time)
|
35
|
+
Invisible also comes with support for easy
|
36
|
+
testing, using Test::Unit or RSpec.
|
37
|
+
|
38
|
+
def test_should_get_root
|
39
|
+
assert get("/").ok?
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should get /" do
|
43
|
+
get("/").should be_ok
|
44
|
+
end
|
45
|
+
|
46
|
+
== The extras you were missing in a micro-framework
|
47
|
+
Invisible has:
|
48
|
+
* reloading
|
49
|
+
* configurable multi-environment support
|
50
|
+
* multi-app in the same VM
|
51
|
+
* session support (Cookie, Memcache, etc.)
|
52
|
+
* a love affair with Rack middlewares
|
53
|
+
* another love affair with testing
|
54
|
+
* load just what you need approach (low mem)
|
55
|
+
* awesomeness builtin, twice!
|
56
|
+
* all that under 100 LOC (+ taxes)
|
57
|
+
|
58
|
+
I'm like, WOW! What are you waiting for?
|
59
|
+
Go build the next Twitter now, mkay?
|
60
|
+
|
61
|
+
Ruby License, http://ruby-lang.org/en/LICENSE.txt
|
62
|
+
Invisible is copyright Marc-Andre Cournoyer
|
63
|
+
macournoyer@gmail.com
|
data/Rakefile
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
require "spec/rake/spectask"
|
2
|
+
require "yaml"
|
3
|
+
|
4
|
+
Spec::Rake::SpecTask.new do |t|
|
5
|
+
t.spec_opts = %w(-fs -c)
|
6
|
+
end
|
7
|
+
task :default => :spec
|
8
|
+
|
9
|
+
desc "Compute LOC in invisible.rb"
|
10
|
+
task :size do
|
11
|
+
loc = File.read("lib/invisible.rb").split("\n").reject { |l| l =~ /^\s*\#/ || l =~ /^\s*$/ }.size
|
12
|
+
puts "#{loc} LOC"
|
13
|
+
end
|
14
|
+
|
15
|
+
namespace :site do
|
16
|
+
task :build do
|
17
|
+
mkdir_p 'tmp/site/images'
|
18
|
+
cd 'tmp/site' do
|
19
|
+
sh "SITE_ROOT='/invisible' ruby ../../site/thin.rb --dump"
|
20
|
+
end
|
21
|
+
cp 'site/style.css', 'tmp/site'
|
22
|
+
cp_r Dir['site/images/*'], 'tmp/site/images'
|
23
|
+
end
|
24
|
+
|
25
|
+
desc 'Upload website to code.macournoyer.com'
|
26
|
+
task :upload => :build do
|
27
|
+
sh %{scp -rq tmp/site/* macournoyer@code.macournoyer.com:code.macournoyer.com/invisible}
|
28
|
+
upload 'tmp/site/*', 'invisible'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
gemspec = Gem::Specification.new do |s|
|
34
|
+
s.name = "invisible"
|
35
|
+
s.version = "0.0.1"
|
36
|
+
s.date = Time.today.strftime("%Y-%m-%d")
|
37
|
+
s.summary = "The Invisible Web Framework"
|
38
|
+
s.email = "macournoyer@gmail.com"
|
39
|
+
s.homepage = "http://github.com/macournoyer/invisible"
|
40
|
+
s.description = "Invisible is like a giant robot combining the awesomeness of Rails, Merb, Camping and Sinatra. Except, it's tiny (100 sloc)."
|
41
|
+
s.authors = ["Marc-Andre Cournoyer"]
|
42
|
+
s.files = %w(README Rakefile invisible.gemspec) + Dir["{bin,lib,app_generators}/**/*"]
|
43
|
+
|
44
|
+
# RDoc
|
45
|
+
s.has_rdoc = true
|
46
|
+
s.rdoc_options = ["--main", "README"]
|
47
|
+
s.extra_rdoc_files = ["README"]
|
48
|
+
|
49
|
+
# Dependencies
|
50
|
+
s.add_dependency "rack", ">= 0.4.0"
|
51
|
+
s.add_dependency "markaby", ">= 0.5"
|
52
|
+
|
53
|
+
# Binary
|
54
|
+
s.bindir = "bin"
|
55
|
+
s.default_executable = "invisible"
|
56
|
+
s.executables = "invisible"
|
57
|
+
end
|
58
|
+
|
59
|
+
namespace :gem do
|
60
|
+
desc "Update the gemspec for GitHub's gem server"
|
61
|
+
task :github do
|
62
|
+
File.open("invisible.gemspec", 'w') { |f| f << YAML.dump(gemspec) }
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
class FlatGenerator < RubiGen::Base
|
2
|
+
attr_reader :name
|
3
|
+
|
4
|
+
def initialize(runtime_args, runtime_options = {})
|
5
|
+
super
|
6
|
+
usage if args.empty?
|
7
|
+
@destination_root = File.expand_path(args.shift)
|
8
|
+
@name = base_name
|
9
|
+
extract_options
|
10
|
+
end
|
11
|
+
|
12
|
+
def manifest
|
13
|
+
record do |m|
|
14
|
+
# Root directory and all subdirectories.
|
15
|
+
m.directory ''
|
16
|
+
|
17
|
+
# Templates
|
18
|
+
m.template_copy_each %w( README )
|
19
|
+
|
20
|
+
# Static files
|
21
|
+
m.file_copy_each %w( app.rb
|
22
|
+
rack.ru )
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
protected
|
27
|
+
def banner
|
28
|
+
<<-EOS
|
29
|
+
Creates a new Invisible app with just the minimum.
|
30
|
+
|
31
|
+
USAGE: invisible my_app --flat [options]
|
32
|
+
EOS
|
33
|
+
end
|
34
|
+
|
35
|
+
def add_options!(opts)
|
36
|
+
end
|
37
|
+
|
38
|
+
def extract_options
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "invisible"
|
3
|
+
|
4
|
+
RACK_ENV = ENV["RACK_ENV"] ||= "development"
|
5
|
+
|
6
|
+
Invisible.run do
|
7
|
+
if RACK_ENV == "development"
|
8
|
+
require "invisible/reloader"
|
9
|
+
|
10
|
+
use Invisible::Reloader, self
|
11
|
+
use Rack::ShowExceptions
|
12
|
+
use Rack::CommonLogger
|
13
|
+
use Rack::Lint
|
14
|
+
end
|
15
|
+
|
16
|
+
load "app"
|
17
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
class FullGenerator < RubiGen::Base
|
2
|
+
attr_reader :name
|
3
|
+
|
4
|
+
def initialize(runtime_args, runtime_options = {})
|
5
|
+
super
|
6
|
+
usage if args.empty?
|
7
|
+
@destination_root = File.expand_path(args.shift)
|
8
|
+
@name = base_name
|
9
|
+
extract_options
|
10
|
+
end
|
11
|
+
|
12
|
+
def manifest
|
13
|
+
record do |m|
|
14
|
+
# Root directory and all subdirectories.
|
15
|
+
m.directory ''
|
16
|
+
m.directory 'config'
|
17
|
+
m.directory 'config/env'
|
18
|
+
m.directory 'lib'
|
19
|
+
m.directory 'public'
|
20
|
+
m.directory 'public/stylesheets'
|
21
|
+
m.directory 'public/javascripts'
|
22
|
+
m.directory 'public/images'
|
23
|
+
m.directory 'views'
|
24
|
+
|
25
|
+
# Templates
|
26
|
+
m.template_copy_each %w( README Rakefile )
|
27
|
+
|
28
|
+
# Static files
|
29
|
+
m.file_copy_each %w( app.rb
|
30
|
+
config/boot.rb
|
31
|
+
config/env/production.rb
|
32
|
+
config/env/development.rb
|
33
|
+
config/env/test.rb
|
34
|
+
config/env.rb
|
35
|
+
config/rack.ru
|
36
|
+
public/stylesheets/ie.css
|
37
|
+
public/stylesheets/print.css
|
38
|
+
public/stylesheets/screen.css
|
39
|
+
views/layout.erb )
|
40
|
+
|
41
|
+
if options[:rspec]
|
42
|
+
m.directory 'spec'
|
43
|
+
m.file_copy_each %w( spec/spec_helper.rb
|
44
|
+
spec/app_spec.rb )
|
45
|
+
else # Test::Unit
|
46
|
+
m.directory 'test'
|
47
|
+
m.file_copy_each %w( test/test_helper.rb
|
48
|
+
test/app_test.rb )
|
49
|
+
end
|
50
|
+
|
51
|
+
if options[:git]
|
52
|
+
m.file "gitignore", ".gitignore"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
protected
|
58
|
+
def banner
|
59
|
+
<<-EOS
|
60
|
+
Creates a new Invisible app.
|
61
|
+
|
62
|
+
USAGE: invisible my_app [options]
|
63
|
+
EOS
|
64
|
+
end
|
65
|
+
|
66
|
+
def add_options!(opts)
|
67
|
+
opts.separator ''
|
68
|
+
opts.separator 'Options:'
|
69
|
+
opts.on("-S", "--rspec", "Use RSpec for testing (default to Test::Unit)") { |options[:rspec]| }
|
70
|
+
opts.on("-g", "--git", "Add Git stuff (default: true)") { |options[:git]| }
|
71
|
+
opts.on( "--flat", "Generate just the bare minimum files to run")
|
72
|
+
end
|
73
|
+
|
74
|
+
def extract_options
|
75
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
76
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
77
|
+
# raw instance variable value.
|
78
|
+
# @author = options[:author]
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<% if options[:rspec] %>
|
2
|
+
require 'spec/rake/spectask'
|
3
|
+
|
4
|
+
Spec::Rake::SpecTask.new do |t|
|
5
|
+
t.spec_opts = %w(-fs -c)
|
6
|
+
end
|
7
|
+
task :default => :spec
|
8
|
+
<% else %>
|
9
|
+
require 'rake/testtask'
|
10
|
+
|
11
|
+
Rake::TestTask.new do |t|
|
12
|
+
t.pattern = "test/**/*_test.rb"
|
13
|
+
t.verbose = true
|
14
|
+
end
|
15
|
+
task :default => :test
|
16
|
+
<% end %>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# Optional Invisible libs
|
2
|
+
require "invisible/erb"
|
3
|
+
# require "invisible/erubis" Remove previous if you uncomment this
|
4
|
+
# require "invisible/haml"
|
5
|
+
|
6
|
+
load "config/env/#{RACK_ENV}", :reload => false
|
7
|
+
|
8
|
+
# If you want to split your app in several files,
|
9
|
+
# load all the files here.
|
10
|
+
load "app"
|
11
|
+
|
12
|
+
# Install middleware for session support.
|
13
|
+
# See http://rack.rubyforge.org/doc/classes/Rack/Session.html
|
14
|
+
use Rack::Session::Cookie
|
15
|
+
|
16
|
+
# To serve static files
|
17
|
+
use Rack::Static, :urls => %w(/stylesheets /javascripts /images),
|
18
|
+
:root => root + "/public"
|
@@ -0,0 +1 @@
|
|
1
|
+
use Rack::Lint
|
@@ -0,0 +1,16 @@
|
|
1
|
+
/* Blueprint CSS Framework 0.7.1
|
2
|
+
* http://blueprintcss.googlecode.com
|
3
|
+
* Copyright (c) 2007-2008 Olav Bjorkoy (olav at bjorkoy.com) */
|
4
|
+
|
5
|
+
/* ie.css */
|
6
|
+
body {text-align:center;}
|
7
|
+
.container {text-align:left;}
|
8
|
+
* html .column {overflow-x:hidden;}
|
9
|
+
* html legend {margin:-18px -8px 16px 0;padding:0;}
|
10
|
+
ol {margin-left:2em;}
|
11
|
+
sup {vertical-align:text-top;}
|
12
|
+
sub {vertical-align:text-bottom;}
|
13
|
+
html>body p code {*white-space:normal;}
|
14
|
+
hr {margin:-8px auto 11px;}
|
15
|
+
.clearfix, .container {display:inline-block;}
|
16
|
+
* html .clearfix, * html .container {height:1%;}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
/* Blueprint CSS Framework 0.7.1
|
2
|
+
* http://blueprintcss.googlecode.com
|
3
|
+
* Copyright (c) 2007-2008 Olav Bjorkoy (olav at bjorkoy.com) */
|
4
|
+
|
5
|
+
/* print.css */
|
6
|
+
body {line-height:1.5;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;color:#000;background:none;font-size:10pt;}
|
7
|
+
.container {background:none;}
|
8
|
+
hr {background:#ccc;color:#ccc;width:100%;height:2px;margin:2em 0;padding:0;border:none;}
|
9
|
+
hr.space {background:#fff;color:#fff;}
|
10
|
+
h1, h2, h3, h4, h5, h6 {font-family:"Helvetica Neue", Arial, "Lucida Grande", sans-serif;}
|
11
|
+
code {font:.9em "Courier New", Monaco, Courier, monospace;}
|
12
|
+
img {float:left;margin:1.5em 1.5em 1.5em 0;}
|
13
|
+
a img {border:none;}
|
14
|
+
p img.top {margin-top:0;}
|
15
|
+
blockquote {margin:1.5em;padding:1em;font-style:italic;font-size:.9em;}
|
16
|
+
.small {font-size:.9em;}
|
17
|
+
.large {font-size:1.1em;}
|
18
|
+
.quiet {color:#999;}
|
19
|
+
.hide {display:none;}
|
20
|
+
a:link, a:visited {background:transparent;font-weight:700;text-decoration:underline;}
|
21
|
+
a:link:after, a:visited:after {content:" (" attr(href) ") ";font-size:90%;}
|
@@ -0,0 +1,242 @@
|
|
1
|
+
/* Blueprint CSS Framework 0.7.1
|
2
|
+
* http://blueprintcss.googlecode.com
|
3
|
+
* Copyright (c) 2007-2008 Olav Bjorkoy (olav at bjorkoy.com) */
|
4
|
+
|
5
|
+
/* reset.css */
|
6
|
+
html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, 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;}
|
7
|
+
body {line-height:1.5;}
|
8
|
+
table {border-collapse:separate;border-spacing:0;}
|
9
|
+
caption, th, td {text-align:left;font-weight:normal;}
|
10
|
+
table, td, th {vertical-align:middle;}
|
11
|
+
blockquote:before, blockquote:after, q:before, q:after {content:"";}
|
12
|
+
blockquote, q {quotes:"" "";}
|
13
|
+
a img {border:none;}
|
14
|
+
|
15
|
+
/* typography.css */
|
16
|
+
body {font-size:75%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;}
|
17
|
+
h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;}
|
18
|
+
h1 {font-size:3em;line-height:1;margin-bottom:0.5em;}
|
19
|
+
h2 {font-size:2em;margin-bottom:0.75em;}
|
20
|
+
h3 {font-size:1.5em;line-height:1;margin-bottom:1em;}
|
21
|
+
h4 {font-size:1.2em;line-height:1.25;margin-bottom:1.25em;}
|
22
|
+
h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;}
|
23
|
+
h6 {font-size:1em;font-weight:bold;}
|
24
|
+
h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;}
|
25
|
+
p {margin:0 0 1.5em;}
|
26
|
+
p img {float:left;margin:1.5em 1.5em 1.5em 0;padding:0;}
|
27
|
+
p img.right {float:right;margin:1.5em 0 1.5em 1.5em;}
|
28
|
+
a:focus, a:hover {color:#000;}
|
29
|
+
a {color:#009;text-decoration:underline;}
|
30
|
+
blockquote {margin:1.5em;color:#666;font-style:italic;}
|
31
|
+
strong {font-weight:bold;}
|
32
|
+
em, dfn {font-style:italic;}
|
33
|
+
dfn {font-weight:bold;}
|
34
|
+
sup, sub {line-height:0;}
|
35
|
+
abbr, acronym {border-bottom:1px dotted #666;}
|
36
|
+
address {margin:0 0 1.5em;font-style:italic;}
|
37
|
+
del {color:#666;}
|
38
|
+
pre {margin:1.5em 0;white-space:pre;}
|
39
|
+
pre, code, tt {font:1em 'andale mono', 'lucida console', monospace;line-height:1.5;}
|
40
|
+
li ul, li ol {margin:0 1.5em;}
|
41
|
+
ul, ol {margin:0 1.5em 1.5em 1.5em;}
|
42
|
+
ul {list-style-type:disc;}
|
43
|
+
ol {list-style-type:decimal;}
|
44
|
+
dl {margin:0 0 1.5em 0;}
|
45
|
+
dl dt {font-weight:bold;}
|
46
|
+
dd {margin-left:1.5em;}
|
47
|
+
table {margin-bottom:1.4em;width:100%;}
|
48
|
+
th {font-weight:bold;background:#C3D9FF;}
|
49
|
+
th, td {padding:4px 10px 4px 5px;}
|
50
|
+
tr.even td {background:#E5ECF9;}
|
51
|
+
tfoot {font-style:italic;}
|
52
|
+
caption {background:#eee;}
|
53
|
+
.small {font-size:.8em;margin-bottom:1.875em;line-height:1.875em;}
|
54
|
+
.large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;}
|
55
|
+
.hide {display:none;}
|
56
|
+
.quiet {color:#666;}
|
57
|
+
.loud {color:#000;}
|
58
|
+
.highlight {background:#ff0;}
|
59
|
+
.added {background:#060;color:#fff;}
|
60
|
+
.removed {background:#900;color:#fff;}
|
61
|
+
.first {margin-left:0;padding-left:0;}
|
62
|
+
.last {margin-right:0;padding-right:0;}
|
63
|
+
.top {margin-top:0;padding-top:0;}
|
64
|
+
.bottom {margin-bottom:0;padding-bottom:0;}
|
65
|
+
|
66
|
+
/* grid.css */
|
67
|
+
.container {width:950px;margin:0 auto;}
|
68
|
+
.showgrid {background:url(src/grid.png);}
|
69
|
+
body {margin:1.5em 0;}
|
70
|
+
.column, div.span-1, div.span-2, div.span-3, div.span-4, div.span-5, div.span-6, div.span-7, div.span-8, div.span-9, div.span-10, div.span-11, div.span-12, div.span-13, div.span-14, div.span-15, div.span-16, div.span-17, div.span-18, div.span-19, div.span-20, div.span-21, div.span-22, div.span-23, div.span-24 {float:left;margin-right:10px;}
|
71
|
+
.last, div.last {margin-right:0;}
|
72
|
+
.span-1 {width:30px;}
|
73
|
+
.span-2 {width:70px;}
|
74
|
+
.span-3 {width:110px;}
|
75
|
+
.span-4 {width:150px;}
|
76
|
+
.span-5 {width:190px;}
|
77
|
+
.span-6 {width:230px;}
|
78
|
+
.span-7 {width:270px;}
|
79
|
+
.span-8 {width:310px;}
|
80
|
+
.span-9 {width:350px;}
|
81
|
+
.span-10 {width:390px;}
|
82
|
+
.span-11 {width:430px;}
|
83
|
+
.span-12 {width:470px;}
|
84
|
+
.span-13 {width:510px;}
|
85
|
+
.span-14 {width:550px;}
|
86
|
+
.span-15 {width:590px;}
|
87
|
+
.span-16 {width:630px;}
|
88
|
+
.span-17 {width:670px;}
|
89
|
+
.span-18 {width:710px;}
|
90
|
+
.span-19 {width:750px;}
|
91
|
+
.span-20 {width:790px;}
|
92
|
+
.span-21 {width:830px;}
|
93
|
+
.span-22 {width:870px;}
|
94
|
+
.span-23 {width:910px;}
|
95
|
+
.span-24, div.span-24 {width:950px;margin:0;}
|
96
|
+
input.span-1, textarea.span-1, select.span-1 {width:30px!important;}
|
97
|
+
input.span-2, textarea.span-2, select.span-2 {width:50px!important;}
|
98
|
+
input.span-3, textarea.span-3, select.span-3 {width:90px!important;}
|
99
|
+
input.span-4, textarea.span-4, select.span-4 {width:130px!important;}
|
100
|
+
input.span-5, textarea.span-5, select.span-5 {width:170px!important;}
|
101
|
+
input.span-6, textarea.span-6, select.span-6 {width:210px!important;}
|
102
|
+
input.span-7, textarea.span-7, select.span-7 {width:250px!important;}
|
103
|
+
input.span-8, textarea.span-8, select.span-8 {width:290px!important;}
|
104
|
+
input.span-9, textarea.span-9, select.span-9 {width:330px!important;}
|
105
|
+
input.span-10, textarea.span-10, select.span-10 {width:370px!important;}
|
106
|
+
input.span-11, textarea.span-11, select.span-11 {width:410px!important;}
|
107
|
+
input.span-12, textarea.span-12, select.span-12 {width:450px!important;}
|
108
|
+
input.span-13, textarea.span-13, select.span-13 {width:490px!important;}
|
109
|
+
input.span-14, textarea.span-14, select.span-14 {width:530px!important;}
|
110
|
+
input.span-15, textarea.span-15, select.span-15 {width:570px!important;}
|
111
|
+
input.span-16, textarea.span-16, select.span-16 {width:610px!important;}
|
112
|
+
input.span-17, textarea.span-17, select.span-17 {width:650px!important;}
|
113
|
+
input.span-18, textarea.span-18, select.span-18 {width:690px!important;}
|
114
|
+
input.span-19, textarea.span-19, select.span-19 {width:730px!important;}
|
115
|
+
input.span-20, textarea.span-20, select.span-20 {width:770px!important;}
|
116
|
+
input.span-21, textarea.span-21, select.span-21 {width:810px!important;}
|
117
|
+
input.span-22, textarea.span-22, select.span-22 {width:850px!important;}
|
118
|
+
input.span-23, textarea.span-23, select.span-23 {width:890px!important;}
|
119
|
+
input.span-24, textarea.span-24, select.span-24 {width:940px!important;}
|
120
|
+
.append-1 {padding-right:40px;}
|
121
|
+
.append-2 {padding-right:80px;}
|
122
|
+
.append-3 {padding-right:120px;}
|
123
|
+
.append-4 {padding-right:160px;}
|
124
|
+
.append-5 {padding-right:200px;}
|
125
|
+
.append-6 {padding-right:240px;}
|
126
|
+
.append-7 {padding-right:280px;}
|
127
|
+
.append-8 {padding-right:320px;}
|
128
|
+
.append-9 {padding-right:360px;}
|
129
|
+
.append-10 {padding-right:400px;}
|
130
|
+
.append-11 {padding-right:440px;}
|
131
|
+
.append-12 {padding-right:480px;}
|
132
|
+
.append-13 {padding-right:520px;}
|
133
|
+
.append-14 {padding-right:560px;}
|
134
|
+
.append-15 {padding-right:600px;}
|
135
|
+
.append-16 {padding-right:640px;}
|
136
|
+
.append-17 {padding-right:680px;}
|
137
|
+
.append-18 {padding-right:720px;}
|
138
|
+
.append-19 {padding-right:760px;}
|
139
|
+
.append-20 {padding-right:800px;}
|
140
|
+
.append-21 {padding-right:840px;}
|
141
|
+
.append-22 {padding-right:880px;}
|
142
|
+
.append-23 {padding-right:920px;}
|
143
|
+
.prepend-1 {padding-left:40px;}
|
144
|
+
.prepend-2 {padding-left:80px;}
|
145
|
+
.prepend-3 {padding-left:120px;}
|
146
|
+
.prepend-4 {padding-left:160px;}
|
147
|
+
.prepend-5 {padding-left:200px;}
|
148
|
+
.prepend-6 {padding-left:240px;}
|
149
|
+
.prepend-7 {padding-left:280px;}
|
150
|
+
.prepend-8 {padding-left:320px;}
|
151
|
+
.prepend-9 {padding-left:360px;}
|
152
|
+
.prepend-10 {padding-left:400px;}
|
153
|
+
.prepend-11 {padding-left:440px;}
|
154
|
+
.prepend-12 {padding-left:480px;}
|
155
|
+
.prepend-13 {padding-left:520px;}
|
156
|
+
.prepend-14 {padding-left:560px;}
|
157
|
+
.prepend-15 {padding-left:600px;}
|
158
|
+
.prepend-16 {padding-left:640px;}
|
159
|
+
.prepend-17 {padding-left:680px;}
|
160
|
+
.prepend-18 {padding-left:720px;}
|
161
|
+
.prepend-19 {padding-left:760px;}
|
162
|
+
.prepend-20 {padding-left:800px;}
|
163
|
+
.prepend-21 {padding-left:840px;}
|
164
|
+
.prepend-22 {padding-left:880px;}
|
165
|
+
.prepend-23 {padding-left:920px;}
|
166
|
+
div.border {padding-right:4px;margin-right:5px;border-right:1px solid #eee;}
|
167
|
+
div.colborder {padding-right:24px;margin-right:25px;border-right:1px solid #eee;}
|
168
|
+
.pull-1 {margin-left:-40px;}
|
169
|
+
.pull-2 {margin-left:-80px;}
|
170
|
+
.pull-3 {margin-left:-120px;}
|
171
|
+
.pull-4 {margin-left:-160px;}
|
172
|
+
.pull-5 {margin-left:-200px;}
|
173
|
+
.pull-6 {margin-left:-240px;}
|
174
|
+
.pull-7 {margin-left:-280px;}
|
175
|
+
.pull-8 {margin-left:-320px;}
|
176
|
+
.pull-9 {margin-left:-360px;}
|
177
|
+
.pull-10 {margin-left:-400px;}
|
178
|
+
.pull-11 {margin-left:-440px;}
|
179
|
+
.pull-12 {margin-left:-480px;}
|
180
|
+
.pull-13 {margin-left:-520px;}
|
181
|
+
.pull-14 {margin-left:-560px;}
|
182
|
+
.pull-15 {margin-left:-600px;}
|
183
|
+
.pull-16 {margin-left:-640px;}
|
184
|
+
.pull-17 {margin-left:-680px;}
|
185
|
+
.pull-18 {margin-left:-720px;}
|
186
|
+
.pull-19 {margin-left:-760px;}
|
187
|
+
.pull-20 {margin-left:-800px;}
|
188
|
+
.pull-21 {margin-left:-840px;}
|
189
|
+
.pull-22 {margin-left:-880px;}
|
190
|
+
.pull-23 {margin-left:-920px;}
|
191
|
+
.pull-24 {margin-left:-960px;}
|
192
|
+
.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 {float:left;position:relative;}
|
193
|
+
.push-1 {margin:0 -40px 1.5em 40px;}
|
194
|
+
.push-2 {margin:0 -80px 1.5em 80px;}
|
195
|
+
.push-3 {margin:0 -120px 1.5em 120px;}
|
196
|
+
.push-4 {margin:0 -160px 1.5em 160px;}
|
197
|
+
.push-5 {margin:0 -200px 1.5em 200px;}
|
198
|
+
.push-6 {margin:0 -240px 1.5em 240px;}
|
199
|
+
.push-7 {margin:0 -280px 1.5em 280px;}
|
200
|
+
.push-8 {margin:0 -320px 1.5em 320px;}
|
201
|
+
.push-9 {margin:0 -360px 1.5em 360px;}
|
202
|
+
.push-10 {margin:0 -400px 1.5em 400px;}
|
203
|
+
.push-11 {margin:0 -440px 1.5em 440px;}
|
204
|
+
.push-12 {margin:0 -480px 1.5em 480px;}
|
205
|
+
.push-13 {margin:0 -520px 1.5em 520px;}
|
206
|
+
.push-14 {margin:0 -560px 1.5em 560px;}
|
207
|
+
.push-15 {margin:0 -600px 1.5em 600px;}
|
208
|
+
.push-16 {margin:0 -640px 1.5em 640px;}
|
209
|
+
.push-17 {margin:0 -680px 1.5em 680px;}
|
210
|
+
.push-18 {margin:0 -720px 1.5em 720px;}
|
211
|
+
.push-19 {margin:0 -760px 1.5em 760px;}
|
212
|
+
.push-20 {margin:0 -800px 1.5em 800px;}
|
213
|
+
.push-21 {margin:0 -840px 1.5em 840px;}
|
214
|
+
.push-22 {margin:0 -880px 1.5em 880px;}
|
215
|
+
.push-23 {margin:0 -920px 1.5em 920px;}
|
216
|
+
.push-24 {margin:0 -960px 1.5em 960px;}
|
217
|
+
.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 {float:right;position:relative;}
|
218
|
+
.prepend-top {margin-top:1.5em;}
|
219
|
+
.append-bottom {margin-bottom:1.5em;}
|
220
|
+
.box {padding:1.5em;margin-bottom:1.5em;background:#E5ECF9;}
|
221
|
+
hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:none;}
|
222
|
+
hr.space {background:#fff;color:#fff;}
|
223
|
+
.clearfix:after, .container:after {content:".";display:block;height:0;clear:both;visibility:hidden;}
|
224
|
+
.clearfix, .container {display:block;}
|
225
|
+
.clear {clear:both;}
|
226
|
+
|
227
|
+
/* forms.css */
|
228
|
+
label {font-weight:bold;}
|
229
|
+
fieldset {padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ccc;}
|
230
|
+
legend {font-weight:bold;font-size:1.2em;}
|
231
|
+
input.text, input.title, textarea, select {margin:0.5em 0;border:1px solid #bbb;}
|
232
|
+
input.text:focus, input.title:focus, textarea:focus, select:focus {border:1px solid #666;}
|
233
|
+
input.text, input.title {width:300px;padding:5px;}
|
234
|
+
input.title {font-size:1.5em;}
|
235
|
+
textarea {width:390px;height:250px;padding:5px;}
|
236
|
+
.error, .notice, .success {padding:.8em;margin-bottom:1em;border:2px solid #ddd;}
|
237
|
+
.error {background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}
|
238
|
+
.notice {background:#FFF6BF;color:#514721;border-color:#FFD324;}
|
239
|
+
.success {background:#E6EFC2;color:#264409;border-color:#C6D880;}
|
240
|
+
.error a {color:#8a1f11;}
|
241
|
+
.notice a {color:#514721;}
|
242
|
+
.success a {color:#264409;}
|