bumble 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. data/.gitignore +16 -0
  2. data/.rvmrc +1 -0
  3. data/Gemfile +4 -0
  4. data/Rakefile +1 -0
  5. data/Readme.mdown +8 -0
  6. data/app/controllers/bumble_controller.rb +45 -0
  7. data/app/controllers/comments_controller.rb +99 -0
  8. data/app/controllers/password_resets_controller.rb +34 -0
  9. data/app/controllers/posts_controller.rb +103 -0
  10. data/app/controllers/user_sessions_controller.rb +22 -0
  11. data/app/controllers/users_controller.rb +60 -0
  12. data/app/helpers/bumble_helper.rb +50 -0
  13. data/app/models/asset.rb +57 -0
  14. data/app/models/comment.rb +78 -0
  15. data/app/models/notifier.rb +35 -0
  16. data/app/models/post.rb +57 -0
  17. data/app/models/posts/blog.rb +3 -0
  18. data/app/models/posts/code.rb +3 -0
  19. data/app/models/posts/image.rb +3 -0
  20. data/app/models/posts/link.rb +7 -0
  21. data/app/models/posts/quote.rb +3 -0
  22. data/app/models/posts/video.rb +4 -0
  23. data/app/models/user.rb +35 -0
  24. data/app/models/user_session.rb +2 -0
  25. data/app/views/comments/_comment.html.haml +14 -0
  26. data/app/views/comments/_form.html.haml +9 -0
  27. data/app/views/comments/edit.html.haml +7 -0
  28. data/app/views/comments/index.atom.builder +15 -0
  29. data/app/views/comments/new.html.haml +7 -0
  30. data/app/views/layouts/_sidebar.html.haml +20 -0
  31. data/app/views/layouts/bumble.html.haml +35 -0
  32. data/app/views/notifier/activation_confirmation.erb +5 -0
  33. data/app/views/notifier/activation_instructions.erb +5 -0
  34. data/app/views/notifier/new_comment_alert.erb +8 -0
  35. data/app/views/notifier/password_reset_instructions.erb +8 -0
  36. data/app/views/password_resets/edit.html.haml +10 -0
  37. data/app/views/password_resets/new.html.haml +7 -0
  38. data/app/views/posts/_form.html.haml +10 -0
  39. data/app/views/posts/_post.html.haml +16 -0
  40. data/app/views/posts/_preview.html.haml +8 -0
  41. data/app/views/posts/edit.html.haml +10 -0
  42. data/app/views/posts/forms/_blog.html.haml +4 -0
  43. data/app/views/posts/forms/_code.html.haml +6 -0
  44. data/app/views/posts/forms/_image.html.haml +9 -0
  45. data/app/views/posts/forms/_link.html.haml +6 -0
  46. data/app/views/posts/forms/_quote.html.haml +4 -0
  47. data/app/views/posts/forms/_video.html.haml +6 -0
  48. data/app/views/posts/index.atom.builder +15 -0
  49. data/app/views/posts/index.html.haml +21 -0
  50. data/app/views/posts/new.html.haml +8 -0
  51. data/app/views/posts/search.html.haml +27 -0
  52. data/app/views/posts/show.html.haml +22 -0
  53. data/app/views/posts/types/_blog.html.haml +4 -0
  54. data/app/views/posts/types/_code.html.haml +7 -0
  55. data/app/views/posts/types/_image.html.haml +3 -0
  56. data/app/views/posts/types/_link.html.haml +3 -0
  57. data/app/views/posts/types/_quote.html.haml +2 -0
  58. data/app/views/posts/types/_video.html.haml +5 -0
  59. data/app/views/user_sessions/new.html.haml +10 -0
  60. data/app/views/users/_form.html.haml +12 -0
  61. data/app/views/users/_user.html.haml +3 -0
  62. data/app/views/users/delete.html.haml +5 -0
  63. data/app/views/users/edit.html.haml +8 -0
  64. data/app/views/users/index.html.haml +3 -0
  65. data/app/views/users/new.html.haml +7 -0
  66. data/app/views/users/show.html.haml +6 -0
  67. data/bumble.gemspec +31 -0
  68. data/config/initializers/bumble.rb +9 -0
  69. data/config/initializers/haml.rb +2 -0
  70. data/config/initializers/html5_forms.rb +163 -0
  71. data/config/initializers/inflections.rb +10 -0
  72. data/config/initializers/mime_types.rb +5 -0
  73. data/config/initializers/will_paginate.rb +3 -0
  74. data/config/routes.rb +29 -0
  75. data/lib/bumble.rb +18 -0
  76. data/lib/bumble/version.rb +3 -0
  77. data/lib/generators/bumble/assets_generator.rb +10 -0
  78. data/lib/generators/bumble/migrations_generator.rb +40 -0
  79. data/lib/generators/bumble/templates/assets/images/.gitignore +0 -0
  80. data/lib/generators/bumble/templates/assets/images/close.png +0 -0
  81. data/lib/generators/bumble/templates/assets/images/email.png +0 -0
  82. data/lib/generators/bumble/templates/assets/images/feed.png +0 -0
  83. data/lib/generators/bumble/templates/assets/images/image.png +0 -0
  84. data/lib/generators/bumble/templates/assets/images/loading.gif +0 -0
  85. data/lib/generators/bumble/templates/assets/images/preview.png +0 -0
  86. data/lib/generators/bumble/templates/assets/images/shortcut.png +0 -0
  87. data/lib/generators/bumble/templates/assets/images/youtube.png +0 -0
  88. data/lib/generators/bumble/templates/assets/javascripts/admin.js +95 -0
  89. data/lib/generators/bumble/templates/assets/javascripts/bumble.js +76 -0
  90. data/lib/generators/bumble/templates/assets/javascripts/iphone.js +7 -0
  91. data/lib/generators/bumble/templates/assets/javascripts/jquery.autogrow.js +37 -0
  92. data/lib/generators/bumble/templates/assets/javascripts/jquery.cookie.js +96 -0
  93. data/lib/generators/bumble/templates/assets/javascripts/jquery.form.js +665 -0
  94. data/lib/generators/bumble/templates/assets/javascripts/jquery.hint.js +44 -0
  95. data/lib/generators/bumble/templates/assets/javascripts/jquery.jgrow.js +85 -0
  96. data/lib/generators/bumble/templates/assets/javascripts/jquery.js +154 -0
  97. data/lib/generators/bumble/templates/assets/javascripts/jquery.ui.core.js +18 -0
  98. data/lib/generators/bumble/templates/assets/javascripts/jquery.ui.tabs.js +13 -0
  99. data/lib/generators/bumble/templates/assets/javascripts/jquery.ui.widget.js +18 -0
  100. data/lib/generators/bumble/templates/assets/javascripts/jquery.validate.js +16 -0
  101. data/lib/generators/bumble/templates/assets/javascripts/modernizr.js +13 -0
  102. data/lib/generators/bumble/templates/assets/javascripts/ui.core.js +289 -0
  103. data/lib/generators/bumble/templates/assets/javascripts/ui.tabs.js +593 -0
  104. data/lib/generators/bumble/templates/migrations/add_approved_to_comments.rb +15 -0
  105. data/lib/generators/bumble/templates/migrations/add_delta_to_posts.rb +9 -0
  106. data/lib/generators/bumble/templates/migrations/add_missing_indexes.rb +24 -0
  107. data/lib/generators/bumble/templates/migrations/add_url_to_users.rb +9 -0
  108. data/lib/generators/bumble/templates/migrations/create_assets.rb +18 -0
  109. data/lib/generators/bumble/templates/migrations/create_comments.rb +19 -0
  110. data/lib/generators/bumble/templates/migrations/create_posts.rb +25 -0
  111. data/lib/generators/bumble/templates/migrations/create_users.rb +28 -0
  112. data/lib/generators/bumble/templates/migrations/full_text_search.rb +13 -0
  113. data/public/stylesheets/sass/bumble.sass +423 -0
  114. data/public/stylesheets/sass/iphone.sass +79 -0
  115. data/public/stylesheets/sass/print.sass +2 -0
  116. data/public/stylesheets/sass/reset.sass +49 -0
  117. data/test/factories.rb +28 -0
  118. data/test/functional/comments_controller_test.rb +177 -0
  119. data/test/functional/password_resets_controller_test.rb +61 -0
  120. data/test/functional/posts_controller_test.rb +181 -0
  121. data/test/test_helper.rb +113 -0
  122. data/test/unit/comment_test.rb +18 -0
  123. data/test/unit/post_test.rb +18 -0
  124. data/test/unit/user_test.rb +37 -0
  125. metadata +403 -0
@@ -0,0 +1,15 @@
1
+ class AddApprovedToComments < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :comments, :approved, :boolean, :default => true
4
+ add_column :comments, :user_ip, :string
5
+ add_column :comments, :user_agent, :string
6
+ add_column :comments, :referrer, :string
7
+ end
8
+
9
+ def self.down
10
+ remove_column :comments, :approved
11
+ remove_column :comments, :user_ip
12
+ remove_column :comments, :user_agent
13
+ remove_column :comments, :referrer
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ class AddDeltaToPosts < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :posts, :delta, :boolean, :default => true, :null => false
4
+ end
5
+
6
+ def self.down
7
+ remove_column :posts, :delta
8
+ end
9
+ end
@@ -0,0 +1,24 @@
1
+ class AddMissingIndexes < ActiveRecord::Migration
2
+ def self.up
3
+
4
+ # These indexes were found by searching for AR::Base finds on your application
5
+ # It is strongly recommanded that you will consult a professional DBA about your infrastucture and implemntation before
6
+ # changing your database in that matter.
7
+ # There is a possibility that some of the indexes offered below is not required and can be removed and not added, if you require
8
+ # further assistance with your rails application, database infrastructure or any other problem, visit:
9
+ #
10
+ # http://www.railsmentors.org
11
+ # http://www.railstutor.org
12
+ # http://guides.rubyonrails.org
13
+
14
+ add_index :posts, :permalink
15
+ add_index :comments, :post_id
16
+ add_index :posts, [:id, :type]
17
+ end
18
+
19
+ def self.down
20
+ # remove_index :posts, :permalink
21
+ remove_index :comments, :post_id
22
+ remove_index :posts, :column => [:id, :type]
23
+ end
24
+ end
@@ -0,0 +1,9 @@
1
+ class AddUrlToUsers < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :users, :url, :string
4
+ end
5
+
6
+ def self.down
7
+ remove_column :users, :url
8
+ end
9
+ end
@@ -0,0 +1,18 @@
1
+ class CreateAssets < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :assets do |t|
4
+ t.integer :post_id
5
+ t.string :attachment_file_name
6
+ t.string :attachment_content_type
7
+ t.integer :attachment_file_size
8
+ t.datetime :attachment_updated_at
9
+ t.string :attachment_remote_url
10
+
11
+ t.timestamps
12
+ end
13
+ end
14
+
15
+ def self.down
16
+ drop_table :assets
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ class CreateComments < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :comments do |t|
4
+ t.text :body
5
+ t.integer :post_id
6
+ t.integer :user_id
7
+ t.string :author_name
8
+ t.string :author_email
9
+ t.string :author_url
10
+ t.datetime :deleted_at
11
+
12
+ t.timestamps
13
+ end
14
+ end
15
+
16
+ def self.down
17
+ drop_table :comments
18
+ end
19
+ end
@@ -0,0 +1,25 @@
1
+ class CreatePosts < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :posts do |t|
4
+ t.string :title
5
+ t.string :link_url
6
+ t.string :image_url
7
+ t.text :video_embed
8
+ t.text :description
9
+ t.text :quote
10
+ t.string :permalink
11
+ t.integer :user_id
12
+ t.string :type
13
+ t.boolean :publicly_viewable, :default => true
14
+ t.datetime :published_at
15
+ t.datetime :deleted_at
16
+ t.string :via
17
+
18
+ t.timestamps
19
+ end
20
+ end
21
+
22
+ def self.down
23
+ drop_table :posts
24
+ end
25
+ end
@@ -0,0 +1,28 @@
1
+ class CreateUsers < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :users do |t|
4
+ t.string :email, :null => false
5
+ t.string :crypted_password, :null => false
6
+ t.string :password_salt, :null => false
7
+ t.string :persistence_token, :null => false
8
+ t.integer :login_count, :null => false, :default => 0
9
+ t.integer :failed_login_count, :null => false, :default => 0
10
+ t.datetime :last_request_at
11
+ t.datetime :current_login_at
12
+ t.datetime :last_login_at
13
+ t.string :current_login_ip
14
+ t.string :last_login_ip
15
+ t.string :perishable_token
16
+ t.datetime :deleted_at
17
+ t.datetime :activated_at
18
+ t.string :first_name
19
+ t.string :last_name
20
+
21
+ t.timestamps
22
+ end
23
+ end
24
+
25
+ def self.down
26
+ drop_table :users
27
+ end
28
+ end
@@ -0,0 +1,13 @@
1
+ class FullTextSearch < ActiveRecord::Migration
2
+ def self.up
3
+ ActiveRecord::Base.connection.execute(<<-'eosql')
4
+ DROP index IF EXISTS posts_fts_idx
5
+ eosql
6
+ ActiveRecord::Base.connection.execute(<<-'eosql')
7
+ CREATE index posts_fts_idx
8
+ ON posts
9
+ USING gin((to_tsvector('english', coalesce(posts.title, '') || ' ' || coalesce(posts.link_url, '') || ' ' || coalesce(posts.image_url, '') || ' ' || coalesce(posts.video_embed, '') || ' ' || coalesce(posts.description, '') || ' ' || coalesce(posts.quote, '') || ' ' || coalesce(posts.permalink, '') || ' ' || coalesce(posts.via, ''))))
10
+
11
+ eosql
12
+ end
13
+ end
@@ -0,0 +1,423 @@
1
+ @import reset.sass
2
+
3
+ html, body
4
+ :height 100%
5
+ :background #fff
6
+ :font 12px Arial, "MS Trebuchet", sans-serif
7
+ :-webkit-text-size-adjust none
8
+
9
+ body
10
+ :width 800px
11
+ :margin 0 auto
12
+
13
+ a
14
+ :color #154DAD
15
+
16
+ .ui-tabs-hide
17
+ :display none
18
+
19
+ textarea
20
+ :min-height 80px
21
+
22
+ input, textarea
23
+ :font inherit
24
+
25
+ .blur
26
+ :color #aaa
27
+
28
+ .clearfix
29
+ :display inline-block
30
+
31
+ &:after
32
+ :content "."
33
+ :display block
34
+ :height 0
35
+ :clear both
36
+ :visibility hidden
37
+
38
+ pre
39
+ :overflow auto
40
+ :background #f5f5f5
41
+ :border 1px solid #efefef
42
+ :width auto
43
+ :padding 5px
44
+
45
+ label.error
46
+ :position absolute
47
+ :margin-left 450px
48
+ :width auto
49
+ :display block
50
+ :z-index 5000
51
+ :background #000
52
+ :color #fff
53
+ :font-family tahoma
54
+ :font-size 0.8em
55
+ :box-shadow 1px 1px 6px #000
56
+ :-moz-box-shadow 1px 1px 6px #000
57
+ :-webkit-box-shadow 1px 1px 6px #000
58
+ :padding 4px 10px 4px 10px
59
+ :border-radius 6px
60
+ :-moz-border-radius 6px
61
+ :-webkit-border-radius 6px
62
+ :opacity 0.8
63
+
64
+ .meta
65
+ :margin-top 5px
66
+ :color #aaa
67
+ :font-size 0.95em
68
+ a
69
+ :color #888
70
+ :text-decoration none
71
+ &:hover
72
+ :text-decoration underline
73
+
74
+ h2
75
+ :margin-bottom 7px
76
+ :color #111
77
+ :font
78
+ :weight bold
79
+ :size 1.2em
80
+ a
81
+ :color inherit
82
+ :text-decoration none
83
+ &:hover
84
+ :color #000 !important
85
+ :text-decoration underline
86
+ &:visited
87
+ :color #111
88
+
89
+ .loading
90
+ :margin 0 0 -3px 3px
91
+
92
+ #formatting
93
+ :margin 10px 5px 10px 0
94
+ :background #f5f5f5
95
+ :border 1px dashed #efefef
96
+ :padding 5px 10px
97
+ :display none
98
+ span
99
+ :display block
100
+ :float left
101
+ :width 200px
102
+ :padding 0 0 5px
103
+ pre
104
+ :border none
105
+ :overflow visible
106
+ :padding 0
107
+ .more
108
+ :clear both
109
+ :font-size 11px
110
+ :padding-top 5px
111
+
112
+ #header
113
+ :height 90px
114
+ :padding 40px 0 0
115
+
116
+ h1 a
117
+ :display block
118
+ :color #000
119
+ :font-size 3.0em
120
+ :text-decoration none
121
+ :width 186px
122
+ :height 54px
123
+
124
+ .field
125
+ :margin-bottom 5px
126
+ input:not([type='checkbox']), textarea
127
+ :width 98%
128
+ :margin 0
129
+ :padding 2px 2px
130
+ :border 1px solid #aaa
131
+ :border-radius 4px
132
+ :-moz-border-radius 4px
133
+ :-webkit-border-radius 4px
134
+
135
+ #content
136
+ :width 500px
137
+ :float left
138
+ ul, ol
139
+ :margin 5px 0 0
140
+ :padding 0 0 0 35px
141
+ li
142
+ :list-style-type disc
143
+ :padding 0px 0px 5px
144
+ ol li
145
+ :list-style-type decimal
146
+ p
147
+ :margin-bottom 10px
148
+ :line-height 1.35em
149
+ :text-align justify
150
+ .flash
151
+ :position absolute
152
+ :margin -35px 0 10px
153
+ :background #F7FCDF
154
+ :border 1px solid #EFFA9E
155
+ :padding 5px
156
+ :border-radius 2px
157
+ :-moz-border-radius 2px
158
+ :-webkit-border-radius 2px
159
+ &#error
160
+ :background #F3C0C1
161
+ :border 1px solid #E5A7A9
162
+ #search
163
+ :width 100%
164
+ :margin-bottom 15px
165
+ :border-bottom 1px solid #efefef
166
+ h2
167
+ :display inline
168
+ .meta
169
+ :float right
170
+ :margin-bottom 5px
171
+ .open
172
+ :position absolute
173
+ :top 0px
174
+ :display block
175
+ :z-index 5000
176
+ :background #efefef
177
+ :color #000
178
+ :font-family tahoma
179
+ :font-size 0.8em
180
+ :box-shadow 0px 0px 2px #000
181
+ :-moz-box-shadow 0px 0px 2px #000
182
+ :-webkit-box-shadow 0px 0px 2px #000
183
+ :padding 2px 10px 4px 10px
184
+ :border-radius 6px
185
+ :-moz-border-radius-bottomleft 6px
186
+ :-webkit-border-bottom-left-radius 6px
187
+ :-moz-border-radius-bottomright 6px
188
+ :-webkit-border-bottom-right-radius 6px
189
+ :text-decoration none
190
+ :margin-left 730px
191
+ form
192
+ a.more
193
+ :float right
194
+ :margin 0 5px 0 0
195
+ #new_post
196
+ :display none
197
+ :width 100%
198
+ :-webkit-box-shadow 0px 2px 5px #ccc
199
+ :-moz-box-shadow 0px 2px 5px #ccc
200
+ :box-shadow 0px 2px 5px #ccc
201
+ :margin 0 0 30px
202
+ :padding 0 0 5px
203
+ .close
204
+ :background url('../images/close.png') no-repeat
205
+ :display block
206
+ :width 30px
207
+ :height 30px
208
+ :text-indent -999px
209
+ :position absolute
210
+ :margin -10px 0 0 490px
211
+ ul
212
+ :padding 0
213
+ :height 25px
214
+ li
215
+ :list-style none
216
+ :float left
217
+ :padding 2px 5px
218
+ :margin 0 2px 0 0
219
+ &.ui-tabs-selected
220
+ :background #eee
221
+ .new_post
222
+ :padding 0 10px
223
+ .new_comment
224
+ :margin-top 15px
225
+ .help
226
+ :float right
227
+ :margin-right 5px
228
+ .post
229
+ :margin 0 0 25px
230
+ .description
231
+ :margin-top 5px
232
+ blockquote
233
+ :margin-bottom 10px
234
+ :font
235
+ :style italic
236
+ &:before
237
+ :content '“'
238
+ &:after
239
+ :content '”'
240
+ p
241
+ :display inline
242
+ img, object, embed
243
+ :width 100% !important
244
+ object, embed
245
+ :height 340px !important
246
+ pre
247
+ :overflow auto
248
+ :background #f5f5f5
249
+ :border 1px solid #efefef
250
+ :padding 5px
251
+ :font-size 0.95em
252
+ :margin-bottom 10px
253
+ .meta .via
254
+ :float right
255
+ &.preview
256
+ :background url('../images/preview.png')
257
+ .comment
258
+ :border-top 1px solid #efefef
259
+ :margin 10px 0
260
+ :padding 10px 0 0 50px
261
+ :overflow hidden
262
+ p, pre
263
+ :margin-bottom 10px
264
+ :line-height 1.35em
265
+ p
266
+ :text-align justify
267
+ .photo
268
+ :float left
269
+ :margin 3px 5px 0 -50px
270
+ :border 1px solid #eee
271
+ &.author
272
+ :padding 10px 50px 0 0
273
+ .photo
274
+ :float right
275
+ :margin 3px -50px 0 0
276
+
277
+ .link
278
+ h2
279
+ a
280
+ :padding-right 18px
281
+ :background url('../images/shortcut.png') no-repeat 100% 50%
282
+
283
+ input.youtube
284
+ :background url('../images/youtube.png') no-repeat 99.5% 50%
285
+
286
+ input.image
287
+ :background url('../images/image.png') no-repeat 99.5% 50%
288
+
289
+ .pagination
290
+ :clear both
291
+ :padding 8px 0
292
+ .prev_page
293
+ :float left
294
+ .next_page
295
+ :float right
296
+ a, span
297
+ :background #ddd
298
+ :color #000
299
+ :font-family tahoma
300
+ :font-size 0.9em
301
+ :padding 7px 20px
302
+ :margin 0 0 10px
303
+ :border-radius 2px
304
+ :-moz-border-radius 2px
305
+ :-webkit-border-radius 2px
306
+ :text-decoration none
307
+ &.disabled
308
+ :display none
309
+ a
310
+ &:hover, &:active
311
+ :background #ccc
312
+
313
+ #sidebar
314
+ :margin-left 560px
315
+ :width 240px
316
+ :position absolute
317
+ :top 130px
318
+ #search_form
319
+ .field
320
+ :display inline
321
+ input
322
+ :width 70%
323
+ h3
324
+ :border-bottom 1px solid #efefef
325
+ :padding 0 0 2px
326
+ :margin 20px 0 8px
327
+ :font-size 13px
328
+ :clear both
329
+ &:first-child
330
+ :margin-top 0
331
+ p
332
+ :text-align justify
333
+ :margin-bottom 12px
334
+ #links
335
+ :padding 5px 0 0
336
+ li
337
+ :background-repeat no-repeat
338
+ :margin 0px 0px 8px 15px
339
+ :line-height 12px
340
+ a
341
+ :display inline-block
342
+ :padding 0 0 5px 25px
343
+ :color #666
344
+ &.flickr
345
+ :background-image url('../images/flickr.png')
346
+ &.facebook
347
+ :background-image url('../images/facebook.png')
348
+ &.lastfm
349
+ :background-image url('../images/lastfm.png')
350
+ &.myspace
351
+ :background-image url('../images/myspace.png')
352
+ &.twitter
353
+ :background-image url('../images/twitter.png')
354
+ &.youtube
355
+ :background-image url('../images/youtube.png')
356
+ &.work
357
+ :background-image url('../images/work.png')
358
+ &.feed
359
+ :background-image url('../images/feed.png')
360
+ &.email
361
+ :background-image url('../images/email.png')
362
+ .album
363
+ :position relative
364
+ :height 72px
365
+ :margin-bottom 20px
366
+ a
367
+ :display block
368
+ :height 72px
369
+ :padding-left 90px
370
+ :float left
371
+ :position relative
372
+ :background url('../images/cd.png') no-repeat
373
+ :z-index 1
374
+ :text-decoration none
375
+ :color #000
376
+ strong
377
+ :display block
378
+ em
379
+ :font-size 0.9em
380
+ img
381
+ :position absolute
382
+ :left 10px
383
+ :top 2px
384
+ :z-index 0
385
+ .sparkline
386
+ :padding 10px 0
387
+ #footer, #bumble
388
+ :clear both
389
+ :color #999
390
+ :font-size 0.9em
391
+ :text-align right
392
+ :padding 10px 0
393
+ :margin-bottom 10px
394
+ a
395
+ :color inherit
396
+ :text-decoration none
397
+ .up
398
+ :float left
399
+ :display block
400
+
401
+ .bookmarks
402
+ h3
403
+ a
404
+ :display block
405
+ :text-decoration none
406
+ :color #000
407
+ ul
408
+ :padding 5px 0 0
409
+ li
410
+ :background url('../images/sprite.png') -10px -612px no-repeat
411
+ :margin 0px 0px 8px 3px
412
+ :padding-left 28px
413
+ h4
414
+ :font-weight normal
415
+ a
416
+ :color #000
417
+ :text-decoration none
418
+ span
419
+ :font-size 10px
420
+ :color #bbb
421
+ .js
422
+ form > label, .more > label
423
+ :display none