monologue 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
+