monologue 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.md +73 -0
  3. data/Rakefile +32 -0
  4. data/app/assets/javascripts/monologue/admin/application.js +13 -0
  5. data/app/assets/javascripts/monologue/admin/tinymce-config.js +21 -0
  6. data/app/assets/javascripts/monologue/blog/application.js +9 -0
  7. data/app/assets/stylesheets/monologue/admin/application.css +10 -0
  8. data/app/assets/stylesheets/monologue/blog/application.css +13 -0
  9. data/app/assets/stylesheets/monologue/blog/custom.css +1 -0
  10. data/app/assets/stylesheets/monologue/blog/fonts.css +1 -0
  11. data/app/assets/stylesheets/monologue/blog/monologue.css +37 -0
  12. data/app/assets/stylesheets/monologue/blog/skeleton/base.css +343 -0
  13. data/app/assets/stylesheets/monologue/blog/skeleton/layout.css +58 -0
  14. data/app/assets/stylesheets/monologue/blog/skeleton/skeleton.css +242 -0
  15. data/app/controllers/monologue/admin/base_controller.rb +12 -0
  16. data/app/controllers/monologue/admin/posts_controller.rb +54 -0
  17. data/app/controllers/monologue/admin/sessions_controller.rb +22 -0
  18. data/app/controllers/monologue/application_controller.rb +22 -0
  19. data/app/controllers/monologue/posts_controller.rb +25 -0
  20. data/app/form_builders/monologue_admin_form_builder.rb +61 -0
  21. data/app/helpers/monologue/admin/admin_helper.rb +4 -0
  22. data/app/helpers/monologue/application_helper.rb +8 -0
  23. data/app/helpers/monologue/posts_helper.rb +4 -0
  24. data/app/helpers/monologue/sessions_helper.rb +6 -0
  25. data/app/models/monologue/post.rb +40 -0
  26. data/app/models/monologue/posts_revision.rb +34 -0
  27. data/app/models/monologue/user.rb +6 -0
  28. data/app/sweepers/monologue/posts_sweeper.rb +28 -0
  29. data/app/views/layouts/monologue/_google_analytics.html.erb +15 -0
  30. data/app/views/layouts/monologue/admin.html.erb +21 -0
  31. data/app/views/layouts/monologue/admin/_nav_bar.html.erb +24 -0
  32. data/app/views/layouts/monologue/application.html.erb +60 -0
  33. data/app/views/monologue/admin/posts/_form.html.erb +16 -0
  34. data/app/views/monologue/admin/posts/edit.html.erb +4 -0
  35. data/app/views/monologue/admin/posts/index.html.erb +20 -0
  36. data/app/views/monologue/admin/posts/new.html.erb +4 -0
  37. data/app/views/monologue/admin/sessions/new.html.erb +13 -0
  38. data/app/views/monologue/posts/404.html.erb +9 -0
  39. data/app/views/monologue/posts/_pagination.html.erb +9 -0
  40. data/app/views/monologue/posts/_social_sharing.html.erb +42 -0
  41. data/app/views/monologue/posts/feed.rss.builder +19 -0
  42. data/app/views/monologue/posts/index.html.erb +18 -0
  43. data/app/views/monologue/posts/show.html.erb +38 -0
  44. data/config/locales/en.yml +106 -0
  45. data/config/locales/fr.yml +106 -0
  46. data/config/routes.rb +15 -0
  47. data/db/migrate/20120114001001_create_monologue_users.rb +11 -0
  48. data/db/migrate/20120120193858_create_monologue_posts_revisions.rb +18 -0
  49. data/db/migrate/20120120193907_create_monologue_posts.rb +10 -0
  50. data/db/seeds.rb +1 -0
  51. data/lib/monologue.rb +17 -0
  52. data/lib/monologue/engine.rb +11 -0
  53. data/lib/monologue/version.rb +3 -0
  54. data/lib/tasks/monologue_tasks.rake +4 -0
  55. data/vendor/assets/images/monologue/bootstrap/glyphicons-halflings-white.png +0 -0
  56. data/vendor/assets/images/monologue/bootstrap/glyphicons-halflings.png +0 -0
  57. data/vendor/assets/javascripts/monologue/bootstrap/bootstrap-datepicker-fr.js +9 -0
  58. data/vendor/assets/javascripts/monologue/bootstrap/bootstrap-datepicker.js +338 -0
  59. data/vendor/assets/javascripts/monologue/bootstrap/bootstrap.min.js +1 -0
  60. data/vendor/assets/stylesheets/monologue/bootstrap/bootstrap-datepicker.css +130 -0
  61. data/vendor/assets/stylesheets/monologue/bootstrap/bootstrap-responsive.min.css +3 -0
  62. data/vendor/assets/stylesheets/monologue/bootstrap/bootstrap.min.css +610 -0
  63. metadata +285 -0
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2012 YOURNAME
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,73 @@
1
+ # MONOLOGUE
2
+ ---
3
+ Monologue is a basic mountable blogging engine in Rails built to be easily mounted in an already existing Rails app, but it can also be used alone.
4
+
5
+ [![Build Status](https://secure.travis-ci.org/jipiboily/monologue.png)](http://travis-ci.org/jipiboily/monologue)
6
+
7
+
8
+ ## Features
9
+ ---
10
+ - Rails mountable engine (fully named spaced)
11
+ - tested
12
+ - back to basics: few features
13
+ - it has post revisions (no UI to choose published revision yet, but it keeps your modification history)
14
+ - few external dependencies (no Devise or Sorcery, etc…) so we don't face problem integrating with existing Rails app.([Rails mountable engines: dependency nightmare?](http://jipiboily.com/2012/rails-mountable-engines-dependency-nightmare))
15
+ - comments handled by disqus
16
+ - enforcing [Rails cache](http://edgeguides.rubyonrails.org/caching_with_rails.html) for better performance (only support file store for now)
17
+ - runs on Heroku
18
+
19
+ ### missing features
20
+ - categories
21
+ - UI for posts revisions and to manage user
22
+ - much more…see issues!
23
+
24
+
25
+ ## Installation
26
+ ---
27
+ 1. add gem to your `Gemfile`
28
+
29
+ gem "monologue"
30
+ 2. run
31
+
32
+ $ bundle install
33
+ 3. add this to your route file (`config/route.rb`)
34
+
35
+ mount Monologue::Engine, :at => '/' # or whatever path, be it "/blog" or "/monologue"
36
+
37
+ 4. run
38
+
39
+ bundle exec rake monologue:install:migrations
40
+ bundle exec rake db:create # only if this is a new project
41
+ bundle exec rake db:migrate
42
+
43
+ 5. Create a user
44
+
45
+ rails c
46
+ Monologue::User.create(name: "monologue", email:"monologue@example.com", password:"my-password", password_confirmation: "my-password")
47
+
48
+ 6. Configure Monologue. This is all done in an initializer file, say `config/initializers/monologue.rb`. More on this in the [Wiki - Configuration](https://github.com/jipiboily/monologue/wiki/Configuration).
49
+
50
+ ## Enable caching
51
+ ---
52
+ Just turn perform_caching to true in your environment config file (`config/environment/{environment}.rb):
53
+
54
+ config.action_controller.perform_caching = true
55
+
56
+ **IMPORTANT**: if monologue is mounted at root ("/"), you must also add that in your `routes.rb` file, before the monologue mount:
57
+
58
+ root :to => 'monologue/posts#index'
59
+
60
+ ## Customization
61
+ ---
62
+
63
+ See the [Wiki - Customizations](https://github.com/jipiboily/monologue/wiki/Customizations).
64
+
65
+ ## Requirements
66
+ ---
67
+ - Rails 3.1 +
68
+ - Database: MySQL & Postgres are supported but other databases might work too.
69
+
70
+ ## Contribute
71
+ ---
72
+
73
+ Fork it, then pull request. Please add tests for your feature or bug fix.
data/Rakefile ADDED
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ begin
8
+ require 'rdoc/task'
9
+ rescue LoadError
10
+ require 'rdoc/rdoc'
11
+ require 'rake/rdoctask'
12
+ RDoc::Task = Rake::RDocTask
13
+ end
14
+
15
+ RDoc::Task.new(:rdoc) do |rdoc|
16
+ rdoc.rdoc_dir = 'rdoc'
17
+ rdoc.title = 'Monologue'
18
+ rdoc.options << '--line-numbers'
19
+ # rdoc.rdoc_files.include('README.rdoc')
20
+ rdoc.rdoc_files.include('lib/**/*.rb')
21
+ end
22
+
23
+ APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
24
+ load 'rails/tasks/engine.rake'
25
+
26
+
27
+ Bundler::GemHelper.install_tasks
28
+
29
+ require 'rspec/core/rake_task'
30
+ RSpec::Core::RakeTask.new(:spec)
31
+
32
+ task :default => :spec
@@ -0,0 +1,13 @@
1
+ // This is a manifest file that'll be compiled into including all the files listed below.
2
+ // Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
3
+ // be included in the compiled file accessible from http://example.com/assets/application.js
4
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
5
+ // the compiled file.
6
+ //
7
+ //= require jquery
8
+ //= require jquery_ujs
9
+ //= require monologue/bootstrap/bootstrap.min
10
+ //= require monologue/bootstrap/bootstrap-datepicker
11
+ //= require monologue/bootstrap/bootstrap-datepicker-fr
12
+ //= require tinymce-jquery
13
+ //= require_tree .
@@ -0,0 +1,21 @@
1
+ $(function() {
2
+ $('textarea').tinymce({
3
+ theme: 'advanced',
4
+ theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,undo,redo,link,unlink",
5
+ theme_advanced_buttons2 : "formatselect, removeformat, indent, outdent, image, code",
6
+ theme_advanced_buttons3 : "",
7
+ theme_advanced_blockformats : "p,h1,h2,h3,h4,h5,h6,blockquote,dt,dd,code,samp",
8
+ theme_advanced_toolbar_location : "top",
9
+ theme_advanced_toolbar_align : "left",
10
+ theme_advanced_statusbar_location : "bottom",
11
+
12
+
13
+ plugins : "fullscreen",
14
+ theme_advanced_buttons3_add : "fullscreen",
15
+ fullscreen_new_window : true,
16
+ fullscreen_settings : {
17
+ theme_advanced_path_location : "top"
18
+ }
19
+
20
+ });
21
+ });
@@ -0,0 +1,9 @@
1
+ // This is a manifest file that'll be compiled into including all the files listed below.
2
+ // Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
3
+ // be included in the compiled file accessible from http://example.com/assets/application.js
4
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
5
+ // the compiled file.
6
+ //
7
+ //= require jquery
8
+ //= require jquery_ujs
9
+ //= require_tree .
@@ -0,0 +1,10 @@
1
+ /*
2
+ * This is a manifest file that'll automatically include all the stylesheets available in this directory
3
+ * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
4
+ * the top of the compiled file, but it's generally better to create a new file per style scope.
5
+ *= require_self
6
+ *= require monologue/bootstrap/bootstrap.min
7
+ *= require monologue/bootstrap/bootstrap-responsive.min
8
+ *= require monologue/bootstrap/bootstrap-datepicker
9
+ *= require_tree .
10
+ */
@@ -0,0 +1,13 @@
1
+ /*
2
+ * This is a manifest file that'll automatically include all the stylesheets available in this directory
3
+ * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
4
+ * the top of the compiled file, but it's generally better to create a new file per style scope.
5
+
6
+ *= require monologue/blog/skeleton/base
7
+ *= require monologue/blog/skeleton/skeleton
8
+ *= require monologue/blog/skeleton/layout
9
+ *= require monologue/blog/custom
10
+ *= require monologue/blog/fonts
11
+ *= require_tree .
12
+ *= require_self
13
+ */
@@ -0,0 +1 @@
1
+ /* this file is only here to be overridden */
@@ -0,0 +1 @@
1
+ /* this file is only here to be overridden */
@@ -0,0 +1,37 @@
1
+ .main-header{
2
+ margin: 20px 0 30px 0;
3
+ }
4
+
5
+ #pagination {
6
+ margin: 20px 0 0 0;
7
+ border-top: 3px solid #000;
8
+ font-size: 20px;
9
+ }
10
+
11
+ #pagination .older_posts {
12
+ float: left;
13
+ }
14
+
15
+ #pagination .newer_posts {
16
+ float: right;
17
+ }
18
+
19
+ .content article h2, .content article h3, .content article h4, .content article h5, .content article h6 {
20
+ font-size: 16px;
21
+ text-transform: uppercase;
22
+ font-weight: bold;
23
+ }
24
+
25
+ .content h1 {
26
+ font-size: 30px;
27
+ font-weight: bold;
28
+ }
29
+
30
+ section header {
31
+ margin: 0 0 5px 0;
32
+ font-size: 12px;
33
+ }
34
+
35
+ section header h1 {
36
+ margin: 0 0 0 0;
37
+ }
@@ -0,0 +1,343 @@
1
+ /*
2
+ * Skeleton V1.1
3
+ * Copyright 2011, Dave Gamache
4
+ * www.getskeleton.com
5
+ * Free to use under the MIT license.
6
+ * http://www.opensource.org/licenses/mit-license.php
7
+ * 8/17/2011
8
+ */
9
+
10
+
11
+ /* Table of Content
12
+ ==================================================
13
+ #Reset & Basics
14
+ #Basic Styles
15
+ #Site Styles
16
+ #Typography
17
+ #Links
18
+ #Lists
19
+ #Images
20
+ #Buttons
21
+ #Tabs
22
+ #Forms
23
+ #Misc */
24
+
25
+
26
+ /* #Reset & Basics (Inspired by E. Meyers)
27
+ ================================================== */
28
+ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
29
+ margin: 0;
30
+ padding: 0;
31
+ border: 0;
32
+ font-size: 100%;
33
+ font: inherit;
34
+ vertical-align: baseline; }
35
+ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
36
+ display: block; }
37
+ body {
38
+ line-height: 1; }
39
+ ol, ul {
40
+ list-style: none; }
41
+ blockquote, q {
42
+ quotes: none; }
43
+ blockquote:before, blockquote:after,
44
+ q:before, q:after {
45
+ content: '';
46
+ content: none; }
47
+ table {
48
+ border-collapse: collapse;
49
+ border-spacing: 0; }
50
+
51
+
52
+ /* #Basic Styles
53
+ ================================================== */
54
+ body {
55
+ background: #fff;
56
+ font: 14px/21px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
57
+ color: #444;
58
+ -webkit-font-smoothing: antialiased; /* Fix for webkit rendering */
59
+ -webkit-text-size-adjust: 100%;
60
+ }
61
+
62
+
63
+ /* #Typography
64
+ ================================================== */
65
+ h1, h2, h3, h4, h5, h6 {
66
+ color: #181818;
67
+ font-family: "Georgia", "Times New Roman", Helvetica, Arial, sans-serif;
68
+ font-weight: normal; }
69
+ h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { font-weight: inherit; }
70
+ h1 { font-size: 46px; line-height: 50px; margin-bottom: 14px;}
71
+ h2 { font-size: 35px; line-height: 40px; margin-bottom: 10px; }
72
+ h3 { font-size: 28px; line-height: 34px; margin-bottom: 8px; }
73
+ h4 { font-size: 21px; line-height: 30px; margin-bottom: 4px; }
74
+ h5 { font-size: 17px; line-height: 24px; }
75
+ h6 { font-size: 14px; line-height: 21px; }
76
+ .subheader { color: #777; }
77
+
78
+ p { margin: 0 0 20px 0; }
79
+ p img { margin: 0; }
80
+ p.lead { font-size: 21px; line-height: 27px; color: #777; }
81
+
82
+ em { font-style: italic; }
83
+ strong { font-weight: bold; color: #333; }
84
+ small { font-size: 80%; }
85
+
86
+ /* Blockquotes */
87
+ blockquote, blockquote p { font-size: 17px; line-height: 24px; color: #777; font-style: italic; }
88
+ blockquote { margin: 0 0 20px; padding: 9px 20px 0 19px; border-left: 1px solid #ddd; }
89
+ blockquote cite { display: block; font-size: 12px; color: #555; }
90
+ blockquote cite:before { content: "\2014 \0020"; }
91
+ blockquote cite a, blockquote cite a:visited, blockquote cite a:visited { color: #555; }
92
+
93
+ hr { border: solid #ddd; border-width: 1px 0 0; clear: both; margin: 10px 0 30px; height: 0; }
94
+
95
+
96
+ /* #Links
97
+ ================================================== */
98
+ a, a:visited { color: #333; text-decoration: underline; outline: 0; }
99
+ a:hover, a:focus { color: #000; }
100
+ p a, p a:visited { line-height: inherit; }
101
+
102
+
103
+ /* #Lists
104
+ ================================================== */
105
+ ul, ol { margin-bottom: 20px; }
106
+ ul { list-style: none outside; }
107
+ ol { list-style: decimal; }
108
+ ol, ul.square, ul.circle, ul.disc { margin-left: 30px; }
109
+ ul.square { list-style: square outside; }
110
+ ul.circle { list-style: circle outside; }
111
+ ul.disc { list-style: disc outside; }
112
+ ul ul, ul ol,
113
+ ol ol, ol ul { margin: 4px 0 5px 30px; font-size: 90%; }
114
+ ul ul li, ul ol li,
115
+ ol ol li, ol ul li { margin-bottom: 6px; }
116
+ li { line-height: 18px; margin-bottom: 12px; }
117
+ ul.large li { line-height: 21px; }
118
+ li p { line-height: 21px; }
119
+
120
+ /* #Images
121
+ ================================================== */
122
+
123
+ img.scale-with-grid {
124
+ max-width: 100%;
125
+ height: auto; }
126
+
127
+
128
+ /* #Buttons
129
+ ================================================== */
130
+
131
+ .button,
132
+ button,
133
+ input[type="submit"],
134
+ input[type="reset"],
135
+ input[type="button"] {
136
+ background: #eee; /* Old browsers */
137
+ background: #eee -moz-linear-gradient(top, rgba(255,255,255,.2) 0%, rgba(0,0,0,.2) 100%); /* FF3.6+ */
138
+ background: #eee -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.2)), color-stop(100%,rgba(0,0,0,.2))); /* Chrome,Safari4+ */
139
+ background: #eee -webkit-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* Chrome10+,Safari5.1+ */
140
+ background: #eee -o-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* Opera11.10+ */
141
+ background: #eee -ms-linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* IE10+ */
142
+ background: #eee linear-gradient(top, rgba(255,255,255,.2) 0%,rgba(0,0,0,.2) 100%); /* W3C */
143
+ border: 1px solid #aaa;
144
+ border-top: 1px solid #ccc;
145
+ border-left: 1px solid #ccc;
146
+ padding: 4px 12px;
147
+ -moz-border-radius: 3px;
148
+ -webkit-border-radius: 3px;
149
+ border-radius: 3px;
150
+ color: #444;
151
+ display: inline-block;
152
+ font-size: 11px;
153
+ font-weight: bold;
154
+ text-decoration: none;
155
+ text-shadow: 0 1px rgba(255, 255, 255, .75);
156
+ cursor: pointer;
157
+ margin-bottom: 20px;
158
+ line-height: normal;
159
+ padding: 8px 10px;
160
+ font-family: "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; }
161
+
162
+ .button:hover,
163
+ button:hover,
164
+ input[type="submit"]:hover,
165
+ input[type="reset"]:hover,
166
+ input[type="button"]:hover {
167
+ color: #222;
168
+ background: #ddd; /* Old browsers */
169
+ background: #ddd -moz-linear-gradient(top, rgba(255,255,255,.3) 0%, rgba(0,0,0,.3) 100%); /* FF3.6+ */
170
+ background: #ddd -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.3)), color-stop(100%,rgba(0,0,0,.3))); /* Chrome,Safari4+ */
171
+ background: #ddd -webkit-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* Chrome10+,Safari5.1+ */
172
+ background: #ddd -o-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* Opera11.10+ */
173
+ background: #ddd -ms-linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* IE10+ */
174
+ background: #ddd linear-gradient(top, rgba(255,255,255,.3) 0%,rgba(0,0,0,.3) 100%); /* W3C */
175
+ border: 1px solid #888;
176
+ border-top: 1px solid #aaa;
177
+ border-left: 1px solid #aaa; }
178
+
179
+ .button:active,
180
+ button:active,
181
+ input[type="submit"]:active,
182
+ input[type="reset"]:active,
183
+ input[type="button"]:active {
184
+ border: 1px solid #666;
185
+ background: #ccc; /* Old browsers */
186
+ background: #ccc -moz-linear-gradient(top, rgba(255,255,255,.35) 0%, rgba(10,10,10,.4) 100%); /* FF3.6+ */
187
+ background: #ccc -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,.35)), color-stop(100%,rgba(10,10,10,.4))); /* Chrome,Safari4+ */
188
+ background: #ccc -webkit-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* Chrome10+,Safari5.1+ */
189
+ background: #ccc -o-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* Opera11.10+ */
190
+ background: #ccc -ms-linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* IE10+ */
191
+ background: #ccc linear-gradient(top, rgba(255,255,255,.35) 0%,rgba(10,10,10,.4) 100%); /* W3C */ }
192
+
193
+ .button.full-width,
194
+ button.full-width,
195
+ input[type="submit"].full-width,
196
+ input[type="reset"].full-width,
197
+ input[type="button"].full-width {
198
+ width: 100%;
199
+ padding-left: 0 !important;
200
+ padding-right: 0 !important;
201
+ text-align: center; }
202
+
203
+ /* Fix for odd Mozilla border & padding issues */
204
+ button::-moz-focus-inner,
205
+ input::-moz-focus-inner {
206
+ border: 0;
207
+ padding: 0;
208
+ }
209
+
210
+
211
+ /* #Tabs (activate in tabs.js)
212
+ ================================================== */
213
+ ul.tabs {
214
+ display: block;
215
+ margin: 0 0 20px 0;
216
+ padding: 0;
217
+ border-bottom: solid 1px #ddd; }
218
+ ul.tabs li {
219
+ display: block;
220
+ width: auto;
221
+ height: 30px;
222
+ padding: 0;
223
+ float: left;
224
+ margin-bottom: 0; }
225
+ ul.tabs li a {
226
+ display: block;
227
+ text-decoration: none;
228
+ width: auto;
229
+ height: 29px;
230
+ padding: 0px 20px;
231
+ line-height: 30px;
232
+ border: solid 1px #ddd;
233
+ border-width: 1px 1px 0 0;
234
+ margin: 0;
235
+ background: #f5f5f5;
236
+ font-size: 13px; }
237
+ ul.tabs li a.active {
238
+ background: #fff;
239
+ height: 30px;
240
+ position: relative;
241
+ top: -4px;
242
+ padding-top: 4px;
243
+ border-left-width: 1px;
244
+ margin: 0 0 0 -1px;
245
+ color: #111;
246
+ -moz-border-radius-topleft: 2px;
247
+ -webkit-border-top-left-radius: 2px;
248
+ border-top-left-radius: 2px;
249
+ -moz-border-radius-topright: 2px;
250
+ -webkit-border-top-right-radius: 2px;
251
+ border-top-right-radius: 2px; }
252
+ ul.tabs li:first-child a.active {
253
+ margin-left: 0; }
254
+ ul.tabs li:first-child a {
255
+ border-width: 1px 1px 0 1px;
256
+ -moz-border-radius-topleft: 2px;
257
+ -webkit-border-top-left-radius: 2px;
258
+ border-top-left-radius: 2px; }
259
+ ul.tabs li:last-child a {
260
+ -moz-border-radius-topright: 2px;
261
+ -webkit-border-top-right-radius: 2px;
262
+ border-top-right-radius: 2px; }
263
+
264
+ ul.tabs-content { margin: 0; display: block; }
265
+ ul.tabs-content > li { display:none; }
266
+ ul.tabs-content > li.active { display: block; }
267
+
268
+ /* Clearfixing tabs for beautiful stacking */
269
+ ul.tabs:before,
270
+ ul.tabs:after {
271
+ content: '\0020';
272
+ display: block;
273
+ overflow: hidden;
274
+ visibility: hidden;
275
+ width: 0;
276
+ height: 0; }
277
+ ul.tabs:after {
278
+ clear: both; }
279
+ ul.tabs {
280
+ zoom: 1; }
281
+
282
+
283
+ /* #Forms
284
+ ================================================== */
285
+
286
+ form {
287
+ margin-bottom: 20px; }
288
+ fieldset {
289
+ margin-bottom: 20px; }
290
+ input[type="text"],
291
+ input[type="password"],
292
+ input[type="email"],
293
+ textarea,
294
+ select {
295
+ border: 1px solid #ccc;
296
+ padding: 6px 4px;
297
+ outline: none;
298
+ -moz-border-radius: 2px;
299
+ -webkit-border-radius: 2px;
300
+ border-radius: 2px;
301
+ font: 13px "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif;
302
+ color: #777;
303
+ margin: 0;
304
+ width: 210px;
305
+ max-width: 100%;
306
+ display: block;
307
+ margin-bottom: 20px;
308
+ background: #fff; }
309
+ select {
310
+ padding: 0; }
311
+ input[type="text"]:focus,
312
+ input[type="password"]:focus,
313
+ input[type="email"]:focus,
314
+ textarea:focus {
315
+ border: 1px solid #aaa;
316
+ color: #444;
317
+ -moz-box-shadow: 0 0 3px rgba(0,0,0,.2);
318
+ -webkit-box-shadow: 0 0 3px rgba(0,0,0,.2);
319
+ box-shadow: 0 0 3px rgba(0,0,0,.2); }
320
+ textarea {
321
+ min-height: 60px; }
322
+ label,
323
+ legend {
324
+ display: block;
325
+ font-weight: bold;
326
+ font-size: 13px; }
327
+ select {
328
+ width: 220px; }
329
+ input[type="checkbox"] {
330
+ display: inline; }
331
+ label span,
332
+ legend span {
333
+ font-weight: normal;
334
+ font-size: 13px;
335
+ color: #444; }
336
+
337
+ /* #Misc
338
+ ================================================== */
339
+ .remove-bottom { margin-bottom: 0 !important; }
340
+ .half-bottom { margin-bottom: 10px !important; }
341
+ .add-bottom { margin-bottom: 20px !important; }
342
+
343
+