monologue 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.md +73 -0
- data/Rakefile +32 -0
- data/app/assets/javascripts/monologue/admin/application.js +13 -0
- data/app/assets/javascripts/monologue/admin/tinymce-config.js +21 -0
- data/app/assets/javascripts/monologue/blog/application.js +9 -0
- data/app/assets/stylesheets/monologue/admin/application.css +10 -0
- data/app/assets/stylesheets/monologue/blog/application.css +13 -0
- data/app/assets/stylesheets/monologue/blog/custom.css +1 -0
- data/app/assets/stylesheets/monologue/blog/fonts.css +1 -0
- data/app/assets/stylesheets/monologue/blog/monologue.css +37 -0
- data/app/assets/stylesheets/monologue/blog/skeleton/base.css +343 -0
- data/app/assets/stylesheets/monologue/blog/skeleton/layout.css +58 -0
- data/app/assets/stylesheets/monologue/blog/skeleton/skeleton.css +242 -0
- data/app/controllers/monologue/admin/base_controller.rb +12 -0
- data/app/controllers/monologue/admin/posts_controller.rb +54 -0
- data/app/controllers/monologue/admin/sessions_controller.rb +22 -0
- data/app/controllers/monologue/application_controller.rb +22 -0
- data/app/controllers/monologue/posts_controller.rb +25 -0
- data/app/form_builders/monologue_admin_form_builder.rb +61 -0
- data/app/helpers/monologue/admin/admin_helper.rb +4 -0
- data/app/helpers/monologue/application_helper.rb +8 -0
- data/app/helpers/monologue/posts_helper.rb +4 -0
- data/app/helpers/monologue/sessions_helper.rb +6 -0
- data/app/models/monologue/post.rb +40 -0
- data/app/models/monologue/posts_revision.rb +34 -0
- data/app/models/monologue/user.rb +6 -0
- data/app/sweepers/monologue/posts_sweeper.rb +28 -0
- data/app/views/layouts/monologue/_google_analytics.html.erb +15 -0
- data/app/views/layouts/monologue/admin.html.erb +21 -0
- data/app/views/layouts/monologue/admin/_nav_bar.html.erb +24 -0
- data/app/views/layouts/monologue/application.html.erb +60 -0
- data/app/views/monologue/admin/posts/_form.html.erb +16 -0
- data/app/views/monologue/admin/posts/edit.html.erb +4 -0
- data/app/views/monologue/admin/posts/index.html.erb +20 -0
- data/app/views/monologue/admin/posts/new.html.erb +4 -0
- data/app/views/monologue/admin/sessions/new.html.erb +13 -0
- data/app/views/monologue/posts/404.html.erb +9 -0
- data/app/views/monologue/posts/_pagination.html.erb +9 -0
- data/app/views/monologue/posts/_social_sharing.html.erb +42 -0
- data/app/views/monologue/posts/feed.rss.builder +19 -0
- data/app/views/monologue/posts/index.html.erb +18 -0
- data/app/views/monologue/posts/show.html.erb +38 -0
- data/config/locales/en.yml +106 -0
- data/config/locales/fr.yml +106 -0
- data/config/routes.rb +15 -0
- data/db/migrate/20120114001001_create_monologue_users.rb +11 -0
- data/db/migrate/20120120193858_create_monologue_posts_revisions.rb +18 -0
- data/db/migrate/20120120193907_create_monologue_posts.rb +10 -0
- data/db/seeds.rb +1 -0
- data/lib/monologue.rb +17 -0
- data/lib/monologue/engine.rb +11 -0
- data/lib/monologue/version.rb +3 -0
- data/lib/tasks/monologue_tasks.rake +4 -0
- data/vendor/assets/images/monologue/bootstrap/glyphicons-halflings-white.png +0 -0
- data/vendor/assets/images/monologue/bootstrap/glyphicons-halflings.png +0 -0
- data/vendor/assets/javascripts/monologue/bootstrap/bootstrap-datepicker-fr.js +9 -0
- data/vendor/assets/javascripts/monologue/bootstrap/bootstrap-datepicker.js +338 -0
- data/vendor/assets/javascripts/monologue/bootstrap/bootstrap.min.js +1 -0
- data/vendor/assets/stylesheets/monologue/bootstrap/bootstrap-datepicker.css +130 -0
- data/vendor/assets/stylesheets/monologue/bootstrap/bootstrap-responsive.min.css +3 -0
- data/vendor/assets/stylesheets/monologue/bootstrap/bootstrap.min.css +610 -0
- 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
|
+
|