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 +1 -0
- data/VERSION +1 -0
- data/hobo_clean.gemspec +26 -0
- data/lib/hobo_clean.rb +13 -0
- data/lib/hobo_clean/railtie.rb +6 -0
- data/taglibs/hobo_clean.dryml +67 -0
- data/taglibs/nav.dryml +113 -0
- data/vendor/assets/images/101-3B5F87-ACD3E6.png +0 -0
- data/vendor/assets/images/30-3E547A-242E42.png +0 -0
- data/vendor/assets/images/30-DBE1E5-FCFEF5.png +0 -0
- data/vendor/assets/images/300-ACD3E6-fff.png +0 -0
- data/vendor/assets/images/50-ACD3E6-fff.png +0 -0
- data/vendor/assets/images/blank.gif +0 -0
- data/vendor/assets/images/fieldbg.gif +0 -0
- data/vendor/assets/images/pencil.png +0 -0
- data/vendor/assets/images/small_close.png +0 -0
- data/vendor/assets/images/spinner.gif +0 -0
- data/vendor/assets/javascripts/hobo_clean.js +1 -0
- data/vendor/assets/stylesheets/clean.css.erb +328 -0
- data/vendor/assets/stylesheets/hobo_clean.css +2 -0
- data/vendor/assets/stylesheets/rapid-ui.css +102 -0
- data/vendor/assets/stylesheets/reset.css +95 -0
- metadata +90 -0
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
|
data/hobo_clean.gemspec
ADDED
@@ -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,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="¤t">
|
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="¤t_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="¤t_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
|
Binary file
|
Binary file
|
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,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:
|