hobo_clean 1.4.0.pre2

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 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: