hobo_clean 1.4.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
data/README ADDED
@@ -0,0 +1 @@
1
+ This gem is a Hobo plugin that implements the default Hobo theme.
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.4.0.pre2
@@ -0,0 +1,26 @@
1
+ name = File.basename( __FILE__, '.gemspec' )
2
+ version = File.read(File.expand_path('../VERSION', __FILE__)).strip
3
+ require 'date'
4
+
5
+ Gem::Specification.new do |s|
6
+
7
+ s.authors = ['Tom Locke, James Garlick']
8
+ s.email = 'tom@tomlocke.com'
9
+ s.homepage = 'http://hobocentral.net'
10
+ s.rubyforge_project = 'hobo'
11
+ s.summary = 'The clean theme for Hobo'
12
+ s.description = File.read(File.expand_path('../README', __FILE__))
13
+
14
+ s.add_runtime_dependency('hobo', ["= #{version}"])
15
+
16
+ s.files = `git ls-files -x #{name}/* -z`.split("\0")
17
+
18
+ s.name = name
19
+ s.version = version
20
+ s.date = Date.today.to_s
21
+
22
+ s.required_rubygems_version = ">= 1.3.6"
23
+ s.rdoc_options = ["--charset=UTF-8"]
24
+ s.require_paths = ["lib", "vendor", "taglibs"]
25
+
26
+ end
data/lib/hobo_clean.rb ADDED
@@ -0,0 +1,13 @@
1
+ module HoboClean
2
+
3
+ VERSION = File.read(File.expand_path('../../VERSION', __FILE__)).strip
4
+ @@root = Pathname.new File.expand_path('../..', __FILE__)
5
+ def self.root; @@root; end
6
+
7
+ EDIT_LINK_BASE = "https://github.com/tablatom/hobo_tree_table/edit/master/hobo_clean"
8
+
9
+ require 'hobo_clean/railtie' if defined?(Rails)
10
+
11
+ class Engine < ::Rails::Engine
12
+ end
13
+ end
@@ -0,0 +1,6 @@
1
+ require 'hobo_clean'
2
+ require 'rails'
3
+ module HoboClean
4
+ class Railtie < Rails::Railtie
5
+ end
6
+ end
@@ -0,0 +1,67 @@
1
+ <!-- the default hobo theme -->
2
+
3
+ <include src="nav"/>
4
+
5
+ <!-- Renders an ajax-progress 'spinner' with a `class='hidden'` -->
6
+ <def tag="spinner">
7
+ <img src="spinner.gif" class="hidden" merge-attrs/>
8
+ </def>
9
+
10
+ <!-- Renders `<div id="ajax-progress"><div><span id="ajax-progress-text"></span></div></div>`. -->
11
+ <def tag="ajax-progress">
12
+ <div id="ajax-progress" class="ajax-progress" merge-attrs>
13
+ <div>
14
+ <span id="ajax-progress-text"></span>
15
+ </div>
16
+ </div>
17
+ </def>
18
+
19
+ <!-- The basic page structure for all the pages in a Hobo Rapid application. Providing the doctype, page title, standard stylesheet javascript includes, the ajax progress spinner, default header with app-name, account navigation, main navigation, and live search, empty section for the page content, flash message (if any) and an empty page footer.
20
+
21
+ The easiest way to see what this tag does is to look at the source.
22
+
23
+ ### Attributes
24
+
25
+ - `title` - the page title, will have ": `[app-name]`" appended
26
+ - `full-title` - the full page title. Set this if you do not want the app name suffix.
27
+
28
+ -->
29
+ <def tag="page" attrs="title, full-title">
30
+ <% full_title ||= "#{title} : #{app_name}" %>
31
+ <html merge-attrs>
32
+ <head param>
33
+ <title param><%= strip_tags full_title %></title>
34
+ <do param="stylesheets"><%# in Hobo <= 1.3, we had other stylesheets here. Now the asset pipeline is preferred. %>
35
+ <stylesheet name="#{subsite || 'front'}" param="app-stylesheet"/>
36
+ </do>
37
+
38
+ <do param="scripts"><%# in Hobo <= 1.3, we had other javascripts here. Now the asset pipeline is preferred. %>
39
+ <javascript param="application-javascript" name="#{subsite || 'front'}"/>
40
+ <do param="custom-scripts"/>
41
+ </do>
42
+ <%= csrf_meta_tag %>
43
+ </head>
44
+
45
+ <body param>
46
+ <set-scoped flash-rendered="&false">
47
+ <ajax-progress param/>
48
+ <header class="page-header" param>
49
+ <account-nav if="&login_url(Hobo::Model::UserBase.default_user_model)" param/>
50
+ <h1 param="app-name"><a href="#{base_url}/"><app-name/></a></h1>
51
+ <live-search param if="&defined_route? :site_search"/>
52
+ <main-nav current="&title" param/>
53
+ </header>
54
+ <section with-flash-messages param="content"/>
55
+ <footer class="page-footer" param/>
56
+ <page-scripts param/>
57
+ </set-scoped>
58
+ </body>
59
+ </html>
60
+ </def>
61
+
62
+ <!-- Some of the user pages use a simplified layout that does not feature things like the main nav and live-search. This tag defines that page -->
63
+ <def tag="simple-page">
64
+ <page without-live-search without-main-nav merge>
65
+ <account-nav: replace />
66
+ </page>
67
+ </def>
data/taglibs/nav.dryml ADDED
@@ -0,0 +1,113 @@
1
+
2
+ <!-- Development mode only - a menu to change the `current_user` -->
3
+ <def tag="dev-user-changer">
4
+ <set user="&Hobo::Model::UserBase.default_user_model"/>
5
+ <select-menu if="&user && Rails.env.development?"
6
+ first-option="#{t('hobo.dev_user_changer.guest', {:default=>'Guest'})}" options="&user.all(:limit => 30).*.login"
7
+ onchange="location.href = '#{dev_support_path :action=>:set_current_user}?login=' + encodeURIComponent(this.options[this.selectedIndex].value)"
8
+ selected="#{current_user.login}"
9
+ class="dev-user-changer"
10
+ merge-attrs/>
11
+ </def>
12
+
13
+
14
+ <!-- General purpose navigation bar. Renders a `<ul class="navigation">`. This tag is intended to be used in conunction with `<nav-item>`. The main feature of this pair of tags (over, say, just using a plain `<ul>` list), is that it's easy to have a 'current' CSS class added to the appropriate nav item (so you can highlight the page/section the user is)
15
+
16
+ The main navigation in the default hobo app is implemented with `<navigation>` but this tag is also appropriate for any sub-navigation.
17
+
18
+ ### Attributes
19
+
20
+ - `current` - the textual content of the nav item that should have the 'current' CSS class added (see example)
21
+
22
+ ### Example
23
+
24
+ The normal usage is to define your own navigation tag that calls `<navigation>`.
25
+
26
+ <def tag="sub-nav">
27
+ <navigation merge>
28
+ <nav-item>Red</nav-item>
29
+ <nav-item>Green</nav-item>
30
+ <nav-item>Blue</nav-item>
31
+ </navigation>
32
+ </def>
33
+
34
+ Then in your pages you can call the tag like this
35
+
36
+ - On the 'red' page: `<sub-nav current="red"/>`
37
+ - On the 'green' page: `<sub-nav current="green"/>`
38
+ - and so on.
39
+
40
+ -->
41
+ <def tag="navigation" attrs="current">
42
+ <ul class="navigation" merge-attrs>
43
+ <set-scoped current-navigation="&current">
44
+ <do param="default"/>
45
+ </set-scoped>
46
+ </ul>
47
+ </def>
48
+
49
+
50
+ <!-- Renders a single item in a [`<navigation>`](/api_tag_defs/navigation).
51
+
52
+ `<nav-item>` is basically an [`<a>`](/api_tag_defs/a) tag wrapped in an `<li>` tag. The attributes for [`<a>`](/api_tag_defs/a) may all be used on this tag, and work the same way.
53
+
54
+ Example 1: explicit links. Note that we're using explicit routes for clarity. Named routes are better.
55
+
56
+ <navigation current="home">
57
+ <nav-item href="/">Home</nav-item>
58
+ <nav-item href="/logout">Logout</nav-item>
59
+ </navigation>
60
+
61
+ Example 2: navigation based on a collection of items. Each item will be transformed into a link as described in [`<a>`](/api_tag_defs/a).
62
+
63
+ <navigation with="&links">
64
+ <repeat>
65
+ <nav-item/>
66
+ </repeat>
67
+ </navigation>
68
+
69
+ -->
70
+ <def tag="nav-item" attrs="name">
71
+ <% body = parameters.default
72
+ body = h(this.to_s) if body.blank?
73
+ name ||= body.gsub(/<.*?>/, '').strip
74
+ -%>
75
+ <li class="#{'current' if (c = scope.current_navigation) && c.downcase == name.downcase}"
76
+ merge-attrs="&attributes - (attrs_for(:a)+['target'])">
77
+ <a merge-attrs="&attributes & (attrs_for(:a)+['target'])"><%= body %></a>
78
+ </li>
79
+ </def>
80
+
81
+
82
+ <!-- Account Navigation (log in / out / signup)
83
+
84
+ When logged in, this renders:
85
+
86
+ - "Logged in as ..."
87
+ - Link to account page
88
+ - Log out link
89
+
90
+ When not logged in, renders:
91
+
92
+ - Log in link
93
+ - Sign up link
94
+
95
+ This is a simple tag - just look at the source if you need to know more detail.
96
+
97
+ -->
98
+ <def tag="account-nav">
99
+ <do with="&current_user">
100
+ <ul class="navigation account-nav" param>
101
+ <li if="&Rails.env.development?" param="dev-user-changer"><dev-user-changer/></li>
102
+ <if test="&logged_in?">
103
+ <li class='nav-item' param="logged-in-as"><a to="&current_user"><t key="hobo.actions.logged_in_as" name="&name">Logged in as <name/></t></a></li>
104
+ <li class='nav-item' param="account"><a action="account"><t key="hobo.actions.account">Account</t></a></li>
105
+ <li class='nav-item' param="log-out"><a href="&logout_url"><t key="hobo.actions.logout">Log out</t></a></li>
106
+ </if>
107
+ <else>
108
+ <li class='nav-item' param="log-in"><a href="&login_url"><t key="hobo.actions.login">Log in</t></a></li>
109
+ <li if="&signup_url" class="nav-item" param="sign-up"><a href="&signup_url"><t key="hobo.actions.signup">Sign up</t></a></li>
110
+ </else>
111
+ </ul>
112
+ </do>
113
+ </def>
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1 @@
1
+ //= require_tree .
@@ -0,0 +1,328 @@
1
+ <% image_path = "" %>
2
+ body {color: #193440; background: url(<%=image_path%>300-ACD3E6-fff.png) repeat-x #fff; }
3
+ .page-header {color: white; background: url(<%=image_path%>101-3B5F87-ACD3E6.png) repeat-x #3F606E;}
4
+ .page-header .navigation.main-nav a {
5
+ background: url(<%=image_path%>30-3E547A-242E42.png) repeat-x #242E42;
6
+ }
7
+ .page-header .navigation.main-nav li.current a {
8
+ color: #222;
9
+ background: url(<%=image_path%>30-DBE1E5-FCFEF5.png) repeat-x #FCFEF5;
10
+ border-top: 1px solid white;
11
+ border-left: 1px solid white;
12
+ border-right: 1px solid white;
13
+ }
14
+ .page-header .navigation.main-nav a:hover {background: #193440;}
15
+ .section.content {background: #FCFFF5;}
16
+ .button {color: white; background: #5B8BA0;}
17
+ .button:hover {background-color: #193440;}
18
+ .button[disabled] { background-color: #CCCCCC; }
19
+ .add-to-collection {background: #E6E7DE;}
20
+ .aside { background: #E5E5E5;}
21
+
22
+ /* Column Layout */
23
+
24
+ .section-group {display: table; width: 100%;}
25
+ .section-group-inner {display: table-row;}
26
+ .section-group-inner > * {display: table-cell; vertical-align: top;}
27
+ .aside {width: 210px;} /* works with % too */
28
+ .aside { padding: 20px;}
29
+ /* ------ */
30
+
31
+
32
+ body {
33
+ width: 960px;
34
+ margin: 0 auto 20px;
35
+ font: 12px "Lucida Grande", "Trebuchet MS", Arial, sans-serif; line-height: 18px;
36
+ }
37
+ h1, h2, h3 {font-weight: normal;}
38
+ h1 {margin: 20px 0 10px; font-size: 22px; line-height: 22px;}
39
+ h2 {margin: 15px 0 10px; font-size: 18px; line-height: 18px;}
40
+ h3 {margin: 10px 0 5px; font-size: 16px; line-height: 16px;}
41
+ h4 {margin: 10px 0 5px; font-size: 14px; line-height: 14px;}
42
+ h5 {margin: 10px 0 5px; font-size: 12px; line-height: 12px;}
43
+ h6 {margin: 10px 0 5px; font-size: 10px; line-height: 10px;}
44
+
45
+ li {margin-left: 20px;}
46
+
47
+ a {
48
+ border-bottom: 1px dotted #ccc;
49
+ color: #222; background: #fafafa;
50
+ text-decoration: none;
51
+ }
52
+ a:hover {
53
+ border-bottom: 1px dotted #aaa;
54
+ color: black; background: #f2f2f2;
55
+ }
56
+ h1 a, h2 a, h3 a {border: none; background: none;}
57
+
58
+ pre, code {
59
+ font-family: "Courier New", Courier, monospace;
60
+ }
61
+
62
+ input.text, input.string, input.email-address, input.password, input.search, input.integer, input.float, input.autocompleter, input.decimal, textarea {
63
+ border-top:1px solid #7c7c7c;
64
+ border-left:1px solid #c3c3c3;
65
+ border-right:1px solid #c3c3c3;
66
+ border-bottom:1px solid #ddd;
67
+ background: #fff url(<%=image_path%>fieldbg.gif) repeat-x top;
68
+ font-size: 1.1em; line-height: 1.3em;
69
+ }
70
+
71
+ input.file_upload {
72
+ border: 1px dotted #666;
73
+ }
74
+
75
+ .button {
76
+ padding: 6px 10px;
77
+ border: none;
78
+ width: auto;
79
+ font-size: 11px; font-weight: bold;
80
+ margin-top: 10px;
81
+ }
82
+ .button:hover {cursor: pointer;}
83
+ form .actions {_zoom: 1; overflow: hidden; font-size: 11px;}
84
+ form .actions input { margin: 0; }
85
+
86
+ .flash {
87
+ margin: 0 40px 10px; padding: 10px 30px; border-width: 2px 0;
88
+ color: white;
89
+ }
90
+ .flash.notice {background: #4E6A8F;}
91
+ .flash.error {background: #BC1C3D;}
92
+ .section.with-flash { padding-top: 20px; }
93
+
94
+ /* rails error message */
95
+ .error-messages {
96
+ background: #BC1C3D;
97
+ border: 1px solid #900024;
98
+ padding: 15px 30px;
99
+ color: white;
100
+ margin-bottom: 20px;
101
+ }
102
+ .error-messages h2 {
103
+ color: white; margin-top: 0; padding-bottom: 0; font-size: 16px;
104
+ }
105
+ .error-messages li {margin-left: 20px; list-style: square;}
106
+
107
+ .field-with-errors input, .field-with-errors textarea, .field-with-errors select {border: 2px solid #BC1C3D;}
108
+
109
+ #ajax-progress {
110
+ padding: 8px 20px 8px 40px;
111
+ border: 1px solid #444;
112
+ background: black url(<%=image_path%>spinner.gif) no-repeat 10px 8px;
113
+ color: white;
114
+ }
115
+
116
+ .field-list th {width: 120px; white-space: nowrap;}
117
+ .field-list td {width: auto;}
118
+ .field-list .input-help { color: #888;}
119
+
120
+ .content-header, .content-body, .content-footer {margin: 0 45px 15px; padding: 0;}
121
+ .content-header {padding: 5px 0;}
122
+ .content-body {padding: 15px 0;}
123
+ .content-footer {padding-bottom: 20px;}
124
+
125
+ .page-header {margin-top: 25px; padding: 0 0 0;}
126
+ .page-header h1 {
127
+ margin: 0; padding: 20px 30px 30px;
128
+ font-family: "Arial Black", Tahoma, Arial, sans-serif; font-size: 36px; letter-spacing: -1.5pt;
129
+ }
130
+ .page-header ul {zoom: 1; overflow: hidden;}
131
+ .page-header li {float: left; margin-left: 0; list-style: none;}
132
+
133
+ .page-header .navigation a,
134
+ .page-header .navigation a:hover,
135
+ .page-header h1 a,
136
+ .page-header h1 a:hover
137
+ {border: none; color: white; background: none;}
138
+
139
+ .page-header div.search {
140
+ float: right;
141
+ padding: 0 30px 8px 15px;
142
+ }
143
+ .page-header div.search label {
144
+ padding-right: 10px;
145
+ font: bold 9px Arial, sans-serif; text-transform: uppercase; letter-spacing: 1.0pt;
146
+ }
147
+ .page-header div.search input {
148
+ font-size: 10px;
149
+ }
150
+ #search-results-panel {
151
+ position: absolute; top: 35px; right: 25px; z-index: 50;
152
+ width: 350px; height: 500px; overflow: auto;
153
+ padding: 0 20px 20px; border: 1px solid #ddd;
154
+ color: black; background: #f2f2f2;
155
+ }
156
+ #search-results-panel .card.linkable a {color: black;}
157
+ #search-spinner {background:black;border:1px solid #666666;opacity:0.6;padding:2px;position:absolute;right:4px;top:6px;}
158
+
159
+ .main-nav {padding: 0 30px;}
160
+ .main-nav li {margin-right: 10px;}
161
+ .page-header .main-nav a {
162
+ display: block;
163
+ padding: 5px 15px 7px;
164
+ font-size: 13px; font-weight: bold;
165
+ }
166
+
167
+ .account-nav {
168
+ float:right;
169
+ margin: -22px 5px 0 0;
170
+ font-size: 11px;
171
+ }
172
+ .account-nav li {
173
+ float: left;
174
+ margin-left: 0; padding-left: 20px;
175
+ color: #ddd;
176
+ list-style: none;
177
+ }
178
+ .account-nav a {font-weight: bold;}
179
+ .account-nav a:hover {border-bottom: 1px dotted #ddd;}
180
+
181
+ .user-account-page .change-password {width: 350px;}
182
+ .user-account-page .change-password th {width: 150px;}
183
+
184
+ .page-footer {text-align: right; color: #ccc; padding: 5px; font-size: 11px;}
185
+
186
+ /* pagination nav, needs a more specific class on the wrapper */
187
+ .content-body .nav {margin-bottom: 10px; font-size: 11px;}
188
+ .content-body .nav a {margin-right: 5px;}
189
+
190
+ .login-page, .forgot-password-page {width: 470px; margin-top: 40px;}
191
+ .login-page .content-header {padding-bottom: 0;}
192
+ .login-page .field-list {width: 370px;}
193
+ .login-page form .actions {text-align: left; margin: 0; padding: 10px 0 10px 160px;}
194
+ .signup-page .field-list {width: 370px;}
195
+ .signup-page .content-body, .signup-page .content-header { margin-left: 120px; margin-right: 120px;}
196
+ .login-page .field-list td, .signup-page .field-list td {width: auto;}
197
+ .login-page .field-list th, .signup-page .field-list th {width: 150px !important; width: 150px;}
198
+ .login-page .content-header { position: relative; }
199
+ .login-page .forgot-password {font-size: 11px; margin-left: 160px;}
200
+
201
+ .edit-page .content-header {overflow: hidden; _zoom: 1;}
202
+ .edit-page .content-header h1 {float: left;}
203
+ .edit-page .content-header .delete-button {float: right; margin-top: 25px;}
204
+ form .actions {margin: 30px 0; width: 100%; text-align: center;}
205
+
206
+ .show-page .content-header {position: relative; border-bottom: 1px dotted #888;}
207
+ .show-page .content-header h1, .new-in-collection-page .content-header h1 {margin-bottom: 2px; margin-right: 70px;}
208
+ .show-page .content-header a.edit-link {position: absolute; top: 30px; right: 0;}
209
+ .aside-content .collection {padding-bottom: 10px;}
210
+
211
+ .content-header .creation-details {font-size: 11px; line-height: 11px;}
212
+ .content-header .creator {margin-right: 15px;}
213
+ .content-header .created-at {color: #444;}
214
+
215
+ .new-in-collection-page .content-header h2 {margin-top: 6px; font-size: 14px;}
216
+ .new-in-collection-page .content-header h2, .new-in-collection-page .content-header h2 a {color: #222;}
217
+
218
+ .add-to-collection {padding: 20px 30px; margin-top: 20px;}
219
+ .collection-section .add-to-collection h3 {margin: 0 0 20px; padding: 0; border-bottom: none;}
220
+ .add-to-collection form .submit-button {margin: 20px 130px;}
221
+ .add-to-collection .actions {text-align: left; margin-top: 0; margin-bottom: 0;}
222
+
223
+ /* styling of generic elements */
224
+ .creator {font-weight: bold;}
225
+ .card {
226
+ overflow: hidden; _zoom: 1;
227
+ margin: 10px 0; padding: 12px; border: 1px solid #e8e8e8;
228
+ background: #f5f5f5;
229
+ position: relative;
230
+ }
231
+ .card h4 {margin-top: 0;}
232
+ .card a {background: #f5f5f5;}
233
+ .card .creation-details {
234
+ display: block; color: #333; font-size: 11px;
235
+ }
236
+ .card .datetime {color: #666;}
237
+ .card .actions { position:absolute; right: 10px; top: 10px; }
238
+ div.ordering-handle { float: left; background: #ccc; color: white; margin-right: 5px; cursor: move; padding: 0 2px;}
239
+
240
+ .card.content.with-owner {
241
+ padding: 0; margin: 10px 0 30px; border: none;
242
+ background: none;
243
+ font-size: 11px;
244
+ }
245
+ .card.content .creation-details {
246
+ float: left; width: 28%;
247
+ line-height: 14px;
248
+ }
249
+ .card.content .creation-details .created-at {display: block;}
250
+ .card.content.with-owner .content {
251
+ float: right; width: 72%;
252
+ }
253
+ ul.collection > li { margin-left: 0; list-style: none;}
254
+ .empty-collection-message {margin-top: 20px;}
255
+
256
+ .new-link {margin-top: 20px;}
257
+
258
+ .collection-section h3 {
259
+ padding: 15px 0; margin-bottom: 20px; border-bottom: 1px dotted #888;
260
+ }
261
+
262
+ .table-plus .header {_zoom: 1; overflow: hidden;}
263
+ .table-plus .header a {float: left; margin-right: 20px;}
264
+ .table-plus div.search {float: right;}
265
+ .table-plus div.search span {color: #444;}
266
+ .table-plus div.search input.search {margin: 0 5px;}
267
+ .table-plus div.search .button {padding: 2px 4px;}
268
+
269
+ .table-plus table {width: 100%; margin: 20px 0;}
270
+ .table-plus table th {
271
+ padding: 2px 10px;
272
+ color: white; background: #444;
273
+ font-weight: bold; font-size: 10px;
274
+ }
275
+ .table-plus table th a {color: white;}
276
+ .table-plus table td {
277
+ padding: 6px 10px; border-bottom: 1px solid #e2e2e2; color: #666;
278
+ }
279
+ .table-plus table td input.button, .collection .button {padding: 1px 3px; margin-left: 10px; margin-top: 0;}
280
+ .table-plus table td.controls {width: 100px;}
281
+ .table-plus .even {background: #f8f8f8;}
282
+ .table-plus a {background: none;}
283
+
284
+ /* <select-many> */
285
+
286
+ div.select-many {border-top: 1px dotted #999;}
287
+ div.select-many .items {margin-bottom: 10px;}
288
+ div.select-many .item {
289
+ overflow:hidden; _zoom: 1; font-weight: bold;
290
+ border-bottom: 1px dotted #999; padding: 5px 10px; /*margin: 5px 25px 5px 0;*/
291
+ }
292
+ div.select-many .item span { float: left; }
293
+ div.select-many .item .remove-item { float: right; }
294
+
295
+ /* <live-search> */
296
+
297
+ #search-results-panel { postition: relative; }
298
+ #search-results-panel .close-button { cursor: pointer; text-decoration: underline; position: absolute; top: 3px; right: 6px;}
299
+
300
+ /*******************************************************/
301
+ /* these styles are for the generated front index page */
302
+ /* you can delete them if you over-ride it */
303
+
304
+ .front-page .welcome-message {
305
+ padding: 10px 20px 20px; border: 1px solid #e8e8e8;
306
+ color: #222;
307
+ background: url(<%=image_path%>50-ACD3E6-fff.png) repeat-x #fff;
308
+ }
309
+ .front-page .welcome-message h2 {
310
+ font-size: 18px; line-height: 27px;
311
+ }
312
+ .front-page ul.models li {margin-left: 0; list-style: none;}
313
+
314
+ ul.input-many {list-style-type: none;}
315
+ ul.input-all {list-style-type: none;}
316
+
317
+ ul.input-many > li { overflow:hidden; zoom:1;}
318
+ ul.input-many .input-many-item {float:left;}
319
+ ul.input-many div.buttons {float:left; margin-left:10px;}
320
+ li.input-many-template { display:none; }
321
+
322
+ ul.check-many { list-style-type: none; margin-left: 0px;}
323
+ ul.check-many li input { vertical-align: -20%;}
324
+
325
+ /* rapid-summary */
326
+ table.app-summary { border: 1px solid; border-collapse: collapse; }
327
+ table.app-summary td { padding: 2px; border: 1px dotted #bbb; }
328
+ table.app-summary th { padding: 2px; border-bottom: 1px solid; background: #acd3e6; }
@@ -0,0 +1,2 @@
1
+ //= require reset
2
+ //= require_tree .
@@ -0,0 +1,102 @@
1
+ .hidden {display: none;}
2
+
3
+ .in-place-textfield-bhv, .in-place-textarea-bhv, .in-place-html-textarea-bhv {
4
+ border: 1px dotted #666;
5
+ padding: 0 3px; padding-right: 20px;
6
+ background-image: url(../images/pencil.png);
7
+ background-position: top right;
8
+ background-repeat: no-repeat;
9
+ }
10
+
11
+ .inplaceeditor-form input, .inplaceeditor-form textarea,
12
+ table.new-record textarea, table.new-record input {
13
+ border: 1px dotted #666;
14
+ padding: 3px; width: 100%;
15
+ }
16
+ .inplaceeditor-form, .inplaceeditor-form input {
17
+ display: inline;
18
+ }
19
+
20
+ /**** Admin ****/
21
+
22
+ .admin-banner {
23
+ background: #9d0018; border-top: 2px solid #7a0013; border-bottom: 2px solid #7a0013;
24
+ padding: 2px 0;
25
+ margin: 10px 0;
26
+ }
27
+ .admin-banner p, .admin-banner span {
28
+ font: 12px "Lucida Grande", Arial, sans-serif;
29
+ }
30
+ .admin-banner p, .admin-banner div {margin-bottom: 0;}
31
+ .admin-banner a {color: white; text-decoration: none; padding: 1px 5px; font-weight: bold;}
32
+ .admin-banner a:hover {color: #9d0018; background: white;}
33
+ .admin-banner .logged-in {
34
+ float: right;
35
+ }
36
+
37
+ /********* everything below here came from hobo_rapid.css, needs looking at ********/
38
+
39
+ /**** Default styling for Rapid ***/
40
+
41
+ #ajax-progress {
42
+ float: right; margin: 20px;
43
+ position: fixed; display: none; z-index: 10;
44
+ }
45
+
46
+ /* Scriptaculous Autocompleter ---*/
47
+
48
+ div.completions-popup {
49
+ position:absolute;
50
+ width:250px;
51
+ background-color:white;
52
+ border:1px solid #888;
53
+ margin:0px;
54
+ padding:0px;
55
+ }
56
+ div.completions-popup ul {
57
+ list-style-type:none;
58
+ margin:0px;
59
+ padding:0px;
60
+ }
61
+ div.completions-popup ul li.selected { background-color: #ffb;}
62
+ div.completions-popup ul li {
63
+ list-style-type:none;
64
+ display:block;
65
+ margin:0;
66
+ padding:2px;
67
+ cursor:pointer;
68
+ }
69
+
70
+
71
+ .field-list {width:100%;}
72
+ .field-list td {vertical-align: middle;}
73
+ .field-list th {font-weight: bold;}
74
+ .field-list th, .field-list td {padding: 5px 0;}
75
+ .field-list th {padding-right: 10px;}
76
+
77
+ .field-list td.field-label {
78
+ text-align: left; width: 1px; white-space: nowrap; vertical-align: top;
79
+ padding-top: 10px; padding-bottom: 10px;
80
+ }
81
+ .field-list textarea, .field-list input[type=text], .field-list input[type=password] { width: 99%; margin: 0; }
82
+
83
+ /*input[type=text].wide { width: 100%; }*/
84
+ textarea { height: 170px; }
85
+ textarea.wide { width: 100%; }
86
+ textarea.tall { height: 350px; }
87
+
88
+ .field-list input.percentage {width: 25px; display: inline; margin-right: 5px; padding: 1px 3px;}
89
+
90
+ select.dev-user-changer { opacity: 0.3; }
91
+ select.dev-user-changer:hover { opacity: 1; }
92
+
93
+ .part-wrapper {
94
+ display: inline; /* don't mess up layout when wrapping something */
95
+ }
96
+
97
+ optgroup.disabled-option {
98
+ color: #ccc;
99
+ height: 1em;
100
+ }
101
+
102
+ input.nil-value { color:grey; }
@@ -0,0 +1,95 @@
1
+ /******** Reset default browser CSS styles. *********/
2
+ /* Based on Blueprint */
3
+
4
+ html, body, div, span, applet, object, iframe,
5
+ h1, h2, h3, h4, h5, h6, p, blockquote, pre,
6
+ a, abbr, acronym, address, big, cite,
7
+ del, dfn, font, img, ins, kbd, q, s, samp,
8
+ small, strike, sub, sup, tt, var,
9
+ dl, dt, dd, ol, ul, li,
10
+ fieldset, form, label, legend,
11
+ table, caption, tbody, tfoot, thead, tr, th, td {
12
+ margin: 0;
13
+ padding: 0;
14
+ border: 0;
15
+ outline: 0;
16
+ font-weight: inherit;
17
+ font-style: inherit;
18
+ font-size: 100%;
19
+ font-family: inherit;
20
+ vertical-align: baseline;
21
+ }
22
+
23
+ code {
24
+ margin: 0;
25
+ padding: 0;
26
+ border: 0;
27
+ outline: 0;
28
+ font-weight: inherit;
29
+ font-style: inherit;
30
+ font-size: 100%;
31
+ vertical-align: baseline;
32
+ }
33
+
34
+ em {
35
+ margin: 0;
36
+ padding: 0;
37
+ border: 0;
38
+ outline: 0;
39
+ font-weight: inherit;
40
+ font-size: 100%;
41
+ font-family: inherit;
42
+ vertical-align: baseline;
43
+ }
44
+
45
+ strong {
46
+ margin: 0;
47
+ padding: 0;
48
+ border: 0;
49
+ outline: 0;
50
+ font-style: inherit;
51
+ font-size: 100%;
52
+ font-family: inherit;
53
+ vertical-align: baseline;
54
+ }
55
+
56
+ /* Remember to define focus styles! */
57
+ :focus {
58
+ outline: 0;
59
+ }
60
+ body {
61
+ line-height: 1;
62
+ color: black;
63
+ background: white;
64
+ }
65
+
66
+ /* Tables still need 'cellspacing="0"' in the markup. */
67
+ table {
68
+ border-collapse: separate;
69
+ border-spacing: 0;
70
+ }
71
+ caption, th, td {
72
+ text-align: left;
73
+ font-weight: normal;
74
+ }
75
+
76
+ /* Remove possible quote marks (") from <q>, <blockquote>. */
77
+ blockquote:before, blockquote:after,
78
+ q:before, q:after {
79
+ content: "";
80
+ }
81
+ blockquote, q {
82
+ quotes: "" "";
83
+ }
84
+
85
+ body {
86
+ font-family: "Lucida Grande", Helvetica, Arial, Verdana, sans-serif;
87
+ font-size: 12px;
88
+ }
89
+ h1,h2,h3,h4,h5,h6 { font-weight: bold; }
90
+ h1 { font-size: 36px;}
91
+ h2 { font-size: 28px;}
92
+ h3 { font-size: 18px;}
93
+ h4 { font-size: 14px;}
94
+ h5 { font-size: 12px;}
95
+ h6 { font-size: 10px;}
metadata ADDED
@@ -0,0 +1,90 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hobo_clean
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: 6
5
+ version: 1.4.0.pre2
6
+ platform: ruby
7
+ authors:
8
+ - Tom Locke, James Garlick
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2012-03-28 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: hobo
17
+ prerelease: false
18
+ requirement: &id001 !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - "="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.4.0.pre2
24
+ type: :runtime
25
+ version_requirements: *id001
26
+ description: |
27
+ This gem is a Hobo plugin that implements the default Hobo theme.
28
+
29
+ email: tom@tomlocke.com
30
+ executables: []
31
+
32
+ extensions: []
33
+
34
+ extra_rdoc_files: []
35
+
36
+ files:
37
+ - README
38
+ - VERSION
39
+ - hobo_clean.gemspec
40
+ - lib/hobo_clean.rb
41
+ - lib/hobo_clean/railtie.rb
42
+ - taglibs/hobo_clean.dryml
43
+ - taglibs/nav.dryml
44
+ - vendor/assets/images/101-3B5F87-ACD3E6.png
45
+ - vendor/assets/images/30-3E547A-242E42.png
46
+ - vendor/assets/images/30-DBE1E5-FCFEF5.png
47
+ - vendor/assets/images/300-ACD3E6-fff.png
48
+ - vendor/assets/images/50-ACD3E6-fff.png
49
+ - vendor/assets/images/blank.gif
50
+ - vendor/assets/images/fieldbg.gif
51
+ - vendor/assets/images/pencil.png
52
+ - vendor/assets/images/small_close.png
53
+ - vendor/assets/images/spinner.gif
54
+ - vendor/assets/javascripts/hobo_clean.js
55
+ - vendor/assets/stylesheets/clean.css.erb
56
+ - vendor/assets/stylesheets/hobo_clean.css
57
+ - vendor/assets/stylesheets/rapid-ui.css
58
+ - vendor/assets/stylesheets/reset.css
59
+ homepage: http://hobocentral.net
60
+ licenses: []
61
+
62
+ post_install_message:
63
+ rdoc_options:
64
+ - --charset=UTF-8
65
+ require_paths:
66
+ - lib
67
+ - vendor
68
+ - taglibs
69
+ required_ruby_version: !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: "0"
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 1.3.6
81
+ requirements: []
82
+
83
+ rubyforge_project: hobo
84
+ rubygems_version: 1.8.17
85
+ signing_key:
86
+ specification_version: 3
87
+ summary: The clean theme for Hobo
88
+ test_files: []
89
+
90
+ has_rdoc: