pho-utensil 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.
Files changed (43) hide show
  1. data/README.rdoc +4 -0
  2. data/Rakefile +47 -0
  3. data/bin/utensil +7 -0
  4. data/lib/utensil-app.rb +159 -0
  5. data/public/css/blueprint/ie.css +28 -0
  6. data/public/css/blueprint/plugins/fancy-type/screen.css +71 -0
  7. data/public/css/blueprint/print.css +30 -0
  8. data/public/css/blueprint/screen.css +252 -0
  9. data/public/css/blueprint/src/forms.css +49 -0
  10. data/public/css/blueprint/src/grid.css +269 -0
  11. data/public/css/blueprint/src/grid.png +0 -0
  12. data/public/css/blueprint/src/ie.css +61 -0
  13. data/public/css/blueprint/src/print.css +85 -0
  14. data/public/css/blueprint/src/reset.css +38 -0
  15. data/public/css/blueprint/src/typography.css +105 -0
  16. data/public/css/impromptu.css +318 -0
  17. data/public/css/spared.css +99 -0
  18. data/public/icons/script_delete.png +0 -0
  19. data/public/icons/script_edit.png +0 -0
  20. data/public/icons/script_error.png +0 -0
  21. data/public/icons/script_go.png +0 -0
  22. data/public/img/purzen_Cartoon_spatula.png +0 -0
  23. data/public/js/spared-config.js +126 -0
  24. data/public/js/spared-examples.js +13 -0
  25. data/public/js/spared-prefixes.js +85 -0
  26. data/public/js/spared-templates.js +9 -0
  27. data/public/js/spared.js +190 -0
  28. data/public/lib/jquery-1.2.6.js +3549 -0
  29. data/public/lib/jquery-impromptu.1.5.js +133 -0
  30. data/public/lib/jquery.ui.all.js +9639 -0
  31. data/public/rq/list-properties-of-type.rq +9 -0
  32. data/public/rq/list-properties.rq +7 -0
  33. data/public/rq/list-types.rq +7 -0
  34. data/views/admin.erb +37 -0
  35. data/views/configure.erb +4 -0
  36. data/views/enrich.erb +35 -0
  37. data/views/explore.erb +1 -0
  38. data/views/index.erb +33 -0
  39. data/views/layout.erb +53 -0
  40. data/views/spared.erb +66 -0
  41. data/views/update.erb +28 -0
  42. data/views/upload.erb +35 -0
  43. metadata +117 -0
@@ -0,0 +1,4 @@
1
+ = UTENSIL
2
+
3
+ A simple web application for administering a Talis Platform Store
4
+
@@ -0,0 +1,47 @@
1
+ require 'rake'
2
+ require 'rake/gempackagetask'
3
+ require 'rake/rdoctask'
4
+ require 'rake/testtask'
5
+ require 'rake/clean'
6
+
7
+ NAME = "pho-utensil"
8
+ VER = "0.0.1"
9
+ PKG_FILES = %w( README.rdoc Rakefile ) +
10
+ Dir.glob("{bin,lib,public,views}/**/*")
11
+
12
+ CLEAN.include ['*.gem', 'pkg']
13
+ SPEC =
14
+ Gem::Specification.new do |s|
15
+ s.name = NAME
16
+ s.version = VER
17
+ s.platform = Gem::Platform::RUBY
18
+ s.required_ruby_version = ">= 1.8.5"
19
+ s.has_rdoc = true
20
+ s.extra_rdoc_files = ["README.rdoc"]
21
+ s.summary = "Talis Platform Admin Client"
22
+ s.description = s.summary
23
+ s.author = "Leigh Dodds"
24
+ s.email = 'leigh.dodds@talis.com'
25
+ s.homepage = 'http://github.com/ldodds/pho-utensil'
26
+ #s.rubyforge_project = 'pho'
27
+ s.files = PKG_FILES
28
+ s.require_path = "lib"
29
+ s.bindir = "bin"
30
+ s.executables = ["utensil"]
31
+ s.add_dependency("pho", ">= 0.7")
32
+ end
33
+
34
+ Rake::GemPackageTask.new(SPEC) do |pkg|
35
+ pkg.need_tar = true
36
+ end
37
+
38
+ desc "Install from a locally built copy of the gem"
39
+ task :install do
40
+ sh %{rake package}
41
+ sh %{sudo gem install pkg/#{NAME}-#{VER}}
42
+ end
43
+
44
+ desc "Uninstall the gem"
45
+ task :uninstall => [:clean] do
46
+ sh %{sudo gem uninstall #{NAME}}
47
+ end
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
3
+
4
+ require 'rubygems'
5
+ require 'utensil-app'
6
+
7
+ UtensilApp.run! :host => 'localhost', :port => 9090
@@ -0,0 +1,159 @@
1
+ require 'rubygems'
2
+ require 'pho'
3
+ require 'sinatra/base'
4
+
5
+ class UtensilApp < Sinatra::Base
6
+
7
+ helpers do
8
+ include Rack::Utils
9
+ alias_method :h, :escape_html
10
+ end
11
+
12
+ #Configure application level options
13
+ #TODO read from YAML configuration file
14
+ configure do |app|
15
+ set :static, true
16
+ set :storename, ENV["TALIS_STORE"]
17
+ set :user, ENV["TALIS_USER"]
18
+ set :pass, ENV["TALIS_PASS"]
19
+ store = ENV["TALIS_STORE"]
20
+ if store != nil && !store.start_with?("http")
21
+ store = "http://api.talis.com/stores/#{store}"
22
+ end
23
+ set :store, Pho::Store.new( store, ENV["TALIS_USER"], ENV["TALIS_PASS"] )
24
+
25
+ set :views, File.dirname(__FILE__) + "/../views"
26
+ set :public, File.dirname(__FILE__) + "/../public"
27
+ end
28
+
29
+ get '/' do
30
+ @jobs = Pho::Jobs.read_from_store( settings.store )
31
+ @status = Pho::Status.read_from_store( settings.store )
32
+ erb :index
33
+ end
34
+
35
+ get '/query' do
36
+ erb :spared
37
+ end
38
+
39
+ get '/sparql' do
40
+
41
  if /(CONSTRUCT|DESCRIBE) /i =~ params[:query]
42
+ resp = settings.store.sparql_client.query(params[:query], "application/rdf+xml")
43
+ else
44
+ resp = settings.store.sparql_client.query(params[:query], "application/json")
45
+ end
46
+ status = resp.status
47
+ resp.content
1
48
  end
49
+
50
+ get '/enrich' do
51
+ erb :enrich
52
+ end
53
+
54
+ post '/enrich' do
55
+
56
+ sparql_client = Pho::Sparql::SparqlClient.new(params[:endpoint])
57
+ enricher = Pho::Enrichment::StoreEnricher.new( settings.store, sparql_client)
58
+
59
+ begin
60
+ resp = enricher.merge( params[:query] )
61
+
62
+ params[:response] = resp
63
+ if resp.status == 204
64
+ params[:success] = true
65
+ else
66
+ params[:success] = false
67
+ end
68
+ rescue Exception => e
69
+ params["error"] = e
70
+ end
71
+
72
+ erb :enrich
73
+ end
74
+
75
+ get '/explore' do
76
+ erb :explore
77
+ end
78
+
79
+ get '/upload' do
80
+ erb :upload
81
+ end
82
+
83
+ post '/upload' do
84
+ begin
85
+ resp = settings.store.store_data( params[:data], nil, params[:format] )
86
+ params[:response] = resp
87
+ if resp.status == 204
88
+ params[:success] = true
89
+ else
90
+ params[:success] = false
91
+ end
92
+ rescue Exception => e
93
+ params["error"] = e
94
+ end
95
+ erb :upload
96
+ end
97
+
98
+ get '/admin' do
99
+
100
+ @snapshot = Pho::Snapshot.read_from_store( settings.store )
101
+ #@snapshot = Pho::Snapshot.new("http://www.example.com", "", "1000", "KB", "2009-01-01")
102
+ erb :admin
103
+ end
104
+
105
+ post '/jobs' do
106
+ if params[:job] == nil
107
+ redirect "/admin"
108
+ else
109
+ jobtype = "http://schemas.talis.com/2006/bigfoot/configuration##{params[:job]}"
110
+ begin
111
+ resp = Pho::Jobs.submit_job(settings.store, jobtype, "Submitted from Pho-Utensil" )
112
+ if resp.status == 201
113
+ job_url = resp.header["Location"].first
114
+ redirect "/admin?job_url=#{job_url}", 303
115
+ end
116
+ rescue Exception => e
117
+ end
118
+ end
119
+ status 500
120
+ end
121
+
122
+ get '/configure' do
123
+ erb :configure
124
+ end
125
+
126
+
127
+ get '/update' do
128
+ @url = params[:url] || ""
129
+ if @url != ""
130
+ resp = settings.store.describe(@url)
131
+ if resp.status == 200
132
+ @description = resp.content
133
+ else
134
+ @description = ""
135
+ end
136
+ else
137
+ @description = ""
138
+ end
139
+ erb :update
2
140
  end
141
+
142
+ post '/update' do
143
+ if params[:url] == nil || params[:data] == nil || params[:old_data] == nil
144
+ status 500
145
+ return "Missing parameters"
146
+ end
147
+
148
+ before = Pho::ResourceHash::Converter.parse_rdfxml( params[:old_data], params[:url] )
149
+ after = Pho::ResourceHash::Converter.parse_rdfxml( params[:data], params[:url] )
150
+ cs = Pho::Update::ChangesetBuilder.build(params[:url], before, after, "Submitted from Utensil")
151
+
152
+ begin
153
+ resp = cs.submit(settings.store)
154
+ if resp.status == 204
155
+ redirect "/update?success=true&url=#{ escape params[:url]}", 303
156
+ end
157
+ rescue Exception => e
158
+ end
159
+ status 500
160
+ "Error"
3
161
  end
162
+ end
163
+
@@ -0,0 +1,28 @@
1
+ /* -----------------------------------------------------------------------
2
+
3
+
4
+ Blueprint CSS Framework 0.8
5
+ http://blueprintcss.org
6
+
7
+ * Copyright (c) 2007-Present. See LICENSE for more info.
8
+ * See README for instructions on how to use Blueprint.
9
+ * For credits and origins, see AUTHORS.
10
+ * This is a compressed file. See the sources in the 'src' directory.
11
+
12
+ ----------------------------------------------------------------------- */
13
+
14
+ /* ie.css */
15
+ * html {font-size: 40%}
16
+ body {text-align:center}
17
+ .container {text-align:left;}
18
+ * html .column, * html div.span-1, * html div.span-2, * html div.span-3, * html div.span-4, * html div.span-5, * html div.span-6, * html div.span-7, * html div.span-8, * html div.span-9, * html div.span-10, * html div.span-11, * html div.span-12, * html div.span-13, * html div.span-14, * html div.span-15, * html div.span-16, * html div.span-17, * html div.span-18, * html div.span-19, * html div.span-20, * html div.span-21, * html div.span-22, * html div.span-23, * html div.span-24 {overflow-x:hidden;}
19
+ * html legend {margin:0px -8px 16px 0;padding:0;}
20
+ ol {margin-left:2em;}
21
+ sup {vertical-align:text-top;}
22
+ sub {vertical-align:text-bottom;}
23
+ html>body p code {*white-space:normal;}
24
+ hr {margin:-8px auto 11px;}
25
+ img {-ms-interpolation-mode:bicubic;}
26
+ .clearfix, .container {display:inline-block;}
27
+ * html .clearfix, * html .container {height:1%;}
28
+ fieldset {padding-top:0;}
@@ -0,0 +1,71 @@
1
+ /* --------------------------------------------------------------
2
+
3
+ fancy-type.css
4
+ * Lots of pretty advanced classes for manipulating text.
5
+
6
+ See the Readme file in this folder for additional instructions.
7
+
8
+ -------------------------------------------------------------- */
9
+
10
+ /* Indentation instead of line shifts for sibling paragraphs. */
11
+ p + p { text-indent:2em; margin-top:-1.5em; }
12
+ form p + p { text-indent: 0; } /* Don't want this in forms. */
13
+
14
+
15
+ /* For great looking type, use this code instead of asdf:
16
+ <span class="alt">asdf</span>
17
+ Best used on prepositions and ampersands. */
18
+
19
+ .alt {
20
+ color: #666;
21
+ font-family: "Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua", Georgia, serif;
22
+ font-style: italic;
23
+ font-weight: normal;
24
+ }
25
+
26
+
27
+ /* For great looking quote marks in titles, replace "asdf" with:
28
+ <span class="dquo">&#8220;</span>asdf&#8221;
29
+ (That is, when the title starts with a quote mark).
30
+ (You may have to change this value depending on your font size). */
31
+
32
+ .dquo { margin-left: -.5em; }
33
+
34
+
35
+ /* Reduced size type with incremental leading
36
+ (http://www.markboulton.co.uk/journal/comments/incremental_leading/)
37
+
38
+ This could be used for side notes. For smaller type, you don't necessarily want to
39
+ follow the 1.5x vertical rhythm -- the line-height is too much.
40
+
41
+ Using this class, it reduces your font size and line-height so that for
42
+ every four lines of normal sized type, there is five lines of the sidenote. eg:
43
+
44
+ New type size in em's:
45
+ 10px (wanted side note size) / 12px (existing base size) = 0.8333 (new type size in ems)
46
+
47
+ New line-height value:
48
+ 12px x 1.5 = 18px (old line-height)
49
+ 18px x 4 = 72px
50
+ 72px / 5 = 14.4px (new line height)
51
+ 14.4px / 10px = 1.44 (new line height in em's) */
52
+
53
+ p.incr, .incr p {
54
+ font-size: 10px;
55
+ line-height: 1.44em;
56
+ margin-bottom: 1.5em;
57
+ }
58
+
59
+
60
+ /* Surround uppercase words and abbreviations with this class.
61
+ Based on work by Jørgen Arnor Gårdsø Lom [http://twistedintellect.com/] */
62
+
63
+ .caps {
64
+ font-variant: small-caps;
65
+ letter-spacing: 1px;
66
+ text-transform: lowercase;
67
+ font-size:1.2em;
68
+ line-height:1%;
69
+ font-weight:bold;
70
+ padding:0 2px;
71
+ }
@@ -0,0 +1,30 @@
1
+ /* -----------------------------------------------------------------------
2
+
3
+
4
+ Blueprint CSS Framework 0.8
5
+ http://blueprintcss.org
6
+
7
+ * Copyright (c) 2007-Present. See LICENSE for more info.
8
+ * See README for instructions on how to use Blueprint.
9
+ * For credits and origins, see AUTHORS.
10
+ * This is a compressed file. See the sources in the 'src' directory.
11
+
12
+ ----------------------------------------------------------------------- */
13
+
14
+ /* print.css */
15
+ body {line-height:1.5;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;color:#000;background:none;font-size:10pt;}
16
+ .container {background:none;}
17
+ hr {background:#ccc;color:#ccc;width:100%;height:2px;margin:2em 0;padding:0;border:none;}
18
+ hr.space {background:#fff;color:#fff;}
19
+ h1, h2, h3, h4, h5, h6 {font-family:"Helvetica Neue", Arial, "Lucida Grande", sans-serif;}
20
+ code {font:.9em "Courier New", Monaco, Courier, monospace;}
21
+ img {float:left;margin:1.5em 1.5em 1.5em 0;}
22
+ a img {border:none;}
23
+ p img.top {margin-top:0;}
24
+ blockquote {margin:1.5em;padding:1em;font-style:italic;font-size:.9em;}
25
+ .small {font-size:.9em;}
26
+ .large {font-size:1.1em;}
27
+ .quiet {color:#999;}
28
+ .hide {display:none;}
29
+ a:link, a:visited {background:transparent;font-weight:700;text-decoration:underline;}
30
+ a:link:after, a:visited:after {content:" (" attr(href) ")";font-size:90%;}
@@ -0,0 +1,252 @@
1
+ /* -----------------------------------------------------------------------
2
+
3
+
4
+ Blueprint CSS Framework 0.8
5
+ http://blueprintcss.org
6
+
7
+ * Copyright (c) 2007-Present. See LICENSE for more info.
8
+ * See README for instructions on how to use Blueprint.
9
+ * For credits and origins, see AUTHORS.
10
+ * This is a compressed file. See the sources in the 'src' directory.
11
+
12
+ ----------------------------------------------------------------------- */
13
+
14
+ /* reset.css */
15
+ 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;}
16
+ body {line-height:1.5;}
17
+ table {border-collapse:separate;border-spacing:0;}
18
+ caption, th, td {text-align:left;font-weight:normal;}
19
+ table, td, th {vertical-align:middle;}
20
+ blockquote:before, blockquote:after, q:before, q:after {content:"";}
21
+ blockquote, q {quotes:"" "";}
22
+ a img {border:none;}
23
+
24
+ /* typography.css */
25
+ body {font-size:75%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;}
26
+ h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;}
27
+ h1 {font-size:3em;line-height:1;margin-bottom:0.5em;}
28
+ h2 {font-size:2em;margin-bottom:0.75em;}
29
+ h3 {font-size:1.5em;line-height:1;margin-bottom:1em;}
30
+ h4 {font-size:1.2em;line-height:1.25;margin-bottom:1.25em;}
31
+ h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;}
32
+ h6 {font-size:1em;font-weight:bold;}
33
+ h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;}
34
+ p {margin:0 0 1.5em;}
35
+ p img.left {float:left;margin:1.5em 1.5em 1.5em 0;padding:0;}
36
+ p img.right {float:right;margin:1.5em 0 1.5em 1.5em;}
37
+ a:focus, a:hover {color:#000;}
38
+ a {color:#009;text-decoration:underline;}
39
+ blockquote {margin:1.5em;color:#666;font-style:italic;}
40
+ strong {font-weight:bold;}
41
+ em, dfn {font-style:italic;}
42
+ dfn {font-weight:bold;}
43
+ sup, sub {line-height:0;}
44
+ abbr, acronym {border-bottom:1px dotted #666;}
45
+ address {margin:0 0 1.5em;font-style:italic;}
46
+ del {color:#666;}
47
+ pre {margin:1.5em 0;white-space:pre;}
48
+ pre, code, tt {font:1em 'andale mono', 'lucida console', monospace;line-height:1.5;}
49
+ li ul, li ol {margin:0 1.5em;}
50
+ ul, ol {margin:0 1.5em 1.5em 1.5em;}
51
+ ul {list-style-type:disc;}
52
+ ol {list-style-type:decimal;}
53
+ dl {margin:0 0 1.5em 0;}
54
+ dl dt {font-weight:bold;}
55
+ dd {margin-left:1.5em;}
56
+ table {margin-bottom:1.4em;width:100%;}
57
+ th {font-weight:bold;}
58
+ thead th {background:#c3d9ff;}
59
+ th, td, caption {padding:4px 10px 4px 5px;}
60
+ tr.even td {background:#e5ecf9;}
61
+ tfoot {font-style:italic;}
62
+ caption {background:#eee;}
63
+ .small {font-size:.8em;margin-bottom:1.875em;line-height:1.875em;}
64
+ .large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;}
65
+ .hide {display:none;}
66
+ .quiet {color:#666;}
67
+ .loud {color:#000;}
68
+ .highlight {background:#ff0;}
69
+ .added {background:#060;color:#fff;}
70
+ .removed {background:#900;color:#fff;}
71
+ .first {margin-left:0;padding-left:0;}
72
+ .last {margin-right:0;padding-right:0;}
73
+ .top {margin-top:0;padding-top:0;}
74
+ .bottom {margin-bottom:0;padding-bottom:0;}
75
+
76
+ /* forms.css */
77
+ label {font-weight:bold;}
78
+ fieldset {padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ccc;}
79
+ legend {font-weight:bold;font-size:1.2em;}
80
+ input.text, input.title, textarea, select {margin:0.5em 0;border:1px solid #bbb;}
81
+ input.text:focus, input.title:focus, textarea:focus, select:focus {border:1px solid #666;}
82
+ input.text, input.title {width:300px;padding:5px;}
83
+ input.title {font-size:1.5em;}
84
+ textarea {width:390px;height:250px;padding:5px;}
85
+ .error, .notice, .success {padding:.8em;margin-bottom:1em;border:2px solid #ddd;}
86
+ .error {background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}
87
+ .notice {background:#FFF6BF;color:#514721;border-color:#FFD324;}
88
+ .success {background:#E6EFC2;color:#264409;border-color:#C6D880;}
89
+ .error a {color:#8a1f11;}
90
+ .notice a {color:#514721;}
91
+ .success a {color:#264409;}
92
+
93
+ /* grid.css */
94
+ .container {width:950px;margin:0 auto;}
95
+ .showgrid {background:url(src/grid.png);}
96
+ .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;}
97
+ .last, div.last {margin-right:0;}
98
+ .span-1 {width:30px;}
99
+ .span-2 {width:70px;}
100
+ .span-3 {width:110px;}
101
+ .span-4 {width:150px;}
102
+ .span-5 {width:190px;}
103
+ .span-6 {width:230px;}
104
+ .span-7 {width:270px;}
105
+ .span-8 {width:310px;}
106
+ .span-9 {width:350px;}
107
+ .span-10 {width:390px;}
108
+ .span-11 {width:430px;}
109
+ .span-12 {width:470px;}
110
+ .span-13 {width:510px;}
111
+ .span-14 {width:550px;}
112
+ .span-15 {width:590px;}
113
+ .span-16 {width:630px;}
114
+ .span-17 {width:670px;}
115
+ .span-18 {width:710px;}
116
+ .span-19 {width:750px;}
117
+ .span-20 {width:790px;}
118
+ .span-21 {width:830px;}
119
+ .span-22 {width:870px;}
120
+ .span-23 {width:910px;}
121
+ .span-24, div.span-24 {width:950px;margin:0;}
122
+ input.span-1, textarea.span-1, input.span-2, textarea.span-2, input.span-3, textarea.span-3, input.span-4, textarea.span-4, input.span-5, textarea.span-5, input.span-6, textarea.span-6, input.span-7, textarea.span-7, input.span-8, textarea.span-8, input.span-9, textarea.span-9, input.span-10, textarea.span-10, input.span-11, textarea.span-11, input.span-12, textarea.span-12, input.span-13, textarea.span-13, input.span-14, textarea.span-14, input.span-15, textarea.span-15, input.span-16, textarea.span-16, input.span-17, textarea.span-17, input.span-18, textarea.span-18, input.span-19, textarea.span-19, input.span-20, textarea.span-20, input.span-21, textarea.span-21, input.span-22, textarea.span-22, input.span-23, textarea.span-23, input.span-24, textarea.span-24 {border-left-width:1px!important;border-right-width:1px!important;padding-left:5px!important;padding-right:5px!important;}
123
+ input.span-1, textarea.span-1 {width:18px!important;}
124
+ input.span-2, textarea.span-2 {width:58px!important;}
125
+ input.span-3, textarea.span-3 {width:98px!important;}
126
+ input.span-4, textarea.span-4 {width:138px!important;}
127
+ input.span-5, textarea.span-5 {width:178px!important;}
128
+ input.span-6, textarea.span-6 {width:218px!important;}
129
+ input.span-7, textarea.span-7 {width:258px!important;}
130
+ input.span-8, textarea.span-8 {width:298px!important;}
131
+ input.span-9, textarea.span-9 {width:338px!important;}
132
+ input.span-10, textarea.span-10 {width:378px!important;}
133
+ input.span-11, textarea.span-11 {width:418px!important;}
134
+ input.span-12, textarea.span-12 {width:458px!important;}
135
+ input.span-13, textarea.span-13 {width:498px!important;}
136
+ input.span-14, textarea.span-14 {width:538px!important;}
137
+ input.span-15, textarea.span-15 {width:578px!important;}
138
+ input.span-16, textarea.span-16 {width:618px!important;}
139
+ input.span-17, textarea.span-17 {width:658px!important;}
140
+ input.span-18, textarea.span-18 {width:698px!important;}
141
+ input.span-19, textarea.span-19 {width:738px!important;}
142
+ input.span-20, textarea.span-20 {width:778px!important;}
143
+ input.span-21, textarea.span-21 {width:818px!important;}
144
+ input.span-22, textarea.span-22 {width:858px!important;}
145
+ input.span-23, textarea.span-23 {width:898px!important;}
146
+ input.span-24, textarea.span-24 {width:938px!important;}
147
+ .append-1 {padding-right:40px;}
148
+ .append-2 {padding-right:80px;}
149
+ .append-3 {padding-right:120px;}
150
+ .append-4 {padding-right:160px;}
151
+ .append-5 {padding-right:200px;}
152
+ .append-6 {padding-right:240px;}
153
+ .append-7 {padding-right:280px;}
154
+ .append-8 {padding-right:320px;}
155
+ .append-9 {padding-right:360px;}
156
+ .append-10 {padding-right:400px;}
157
+ .append-11 {padding-right:440px;}
158
+ .append-12 {padding-right:480px;}
159
+ .append-13 {padding-right:520px;}
160
+ .append-14 {padding-right:560px;}
161
+ .append-15 {padding-right:600px;}
162
+ .append-16 {padding-right:640px;}
163
+ .append-17 {padding-right:680px;}
164
+ .append-18 {padding-right:720px;}
165
+ .append-19 {padding-right:760px;}
166
+ .append-20 {padding-right:800px;}
167
+ .append-21 {padding-right:840px;}
168
+ .append-22 {padding-right:880px;}
169
+ .append-23 {padding-right:920px;}
170
+ .prepend-1 {padding-left:40px;}
171
+ .prepend-2 {padding-left:80px;}
172
+ .prepend-3 {padding-left:120px;}
173
+ .prepend-4 {padding-left:160px;}
174
+ .prepend-5 {padding-left:200px;}
175
+ .prepend-6 {padding-left:240px;}
176
+ .prepend-7 {padding-left:280px;}
177
+ .prepend-8 {padding-left:320px;}
178
+ .prepend-9 {padding-left:360px;}
179
+ .prepend-10 {padding-left:400px;}
180
+ .prepend-11 {padding-left:440px;}
181
+ .prepend-12 {padding-left:480px;}
182
+ .prepend-13 {padding-left:520px;}
183
+ .prepend-14 {padding-left:560px;}
184
+ .prepend-15 {padding-left:600px;}
185
+ .prepend-16 {padding-left:640px;}
186
+ .prepend-17 {padding-left:680px;}
187
+ .prepend-18 {padding-left:720px;}
188
+ .prepend-19 {padding-left:760px;}
189
+ .prepend-20 {padding-left:800px;}
190
+ .prepend-21 {padding-left:840px;}
191
+ .prepend-22 {padding-left:880px;}
192
+ .prepend-23 {padding-left:920px;}
193
+ div.border {padding-right:4px;margin-right:5px;border-right:1px solid #eee;}
194
+ div.colborder {padding-right:24px;margin-right:25px;border-right:1px solid #eee;}
195
+ .pull-1 {margin-left:-40px;}
196
+ .pull-2 {margin-left:-80px;}
197
+ .pull-3 {margin-left:-120px;}
198
+ .pull-4 {margin-left:-160px;}
199
+ .pull-5 {margin-left:-200px;}
200
+ .pull-6 {margin-left:-240px;}
201
+ .pull-7 {margin-left:-280px;}
202
+ .pull-8 {margin-left:-320px;}
203
+ .pull-9 {margin-left:-360px;}
204
+ .pull-10 {margin-left:-400px;}
205
+ .pull-11 {margin-left:-440px;}
206
+ .pull-12 {margin-left:-480px;}
207
+ .pull-13 {margin-left:-520px;}
208
+ .pull-14 {margin-left:-560px;}
209
+ .pull-15 {margin-left:-600px;}
210
+ .pull-16 {margin-left:-640px;}
211
+ .pull-17 {margin-left:-680px;}
212
+ .pull-18 {margin-left:-720px;}
213
+ .pull-19 {margin-left:-760px;}
214
+ .pull-20 {margin-left:-800px;}
215
+ .pull-21 {margin-left:-840px;}
216
+ .pull-22 {margin-left:-880px;}
217
+ .pull-23 {margin-left:-920px;}
218
+ .pull-24 {margin-left:-960px;}
219
+ .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;}
220
+ .push-1 {margin:0 -40px 1.5em 40px;}
221
+ .push-2 {margin:0 -80px 1.5em 80px;}
222
+ .push-3 {margin:0 -120px 1.5em 120px;}
223
+ .push-4 {margin:0 -160px 1.5em 160px;}
224
+ .push-5 {margin:0 -200px 1.5em 200px;}
225
+ .push-6 {margin:0 -240px 1.5em 240px;}
226
+ .push-7 {margin:0 -280px 1.5em 280px;}
227
+ .push-8 {margin:0 -320px 1.5em 320px;}
228
+ .push-9 {margin:0 -360px 1.5em 360px;}
229
+ .push-10 {margin:0 -400px 1.5em 400px;}
230
+ .push-11 {margin:0 -440px 1.5em 440px;}
231
+ .push-12 {margin:0 -480px 1.5em 480px;}
232
+ .push-13 {margin:0 -520px 1.5em 520px;}
233
+ .push-14 {margin:0 -560px 1.5em 560px;}
234
+ .push-15 {margin:0 -600px 1.5em 600px;}
235
+ .push-16 {margin:0 -640px 1.5em 640px;}
236
+ .push-17 {margin:0 -680px 1.5em 680px;}
237
+ .push-18 {margin:0 -720px 1.5em 720px;}
238
+ .push-19 {margin:0 -760px 1.5em 760px;}
239
+ .push-20 {margin:0 -800px 1.5em 800px;}
240
+ .push-21 {margin:0 -840px 1.5em 840px;}
241
+ .push-22 {margin:0 -880px 1.5em 880px;}
242
+ .push-23 {margin:0 -920px 1.5em 920px;}
243
+ .push-24 {margin:0 -960px 1.5em 960px;}
244
+ .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;}
245
+ .prepend-top {margin-top:1.5em;}
246
+ .append-bottom {margin-bottom:1.5em;}
247
+ .box {padding:1.5em;margin-bottom:1.5em;background:#E5ECF9;}
248
+ hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:none;}
249
+ hr.space {background:#fff;color:#fff;}
250
+ .clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;}
251
+ .clearfix, .container {display:block;}
252
+ .clear {clear:both;}