feature_box 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +1 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +107 -0
- data/app/assets/javascripts/feature_box/application.js +39 -0
- data/app/assets/stylesheets/feature_box/application.css.scss +133 -0
- data/app/assets/stylesheets/feature_box/comments.css.scss +41 -0
- data/app/assets/stylesheets/feature_box/mixins.css.scss +37 -0
- data/app/assets/stylesheets/feature_box/suggestions.css.scss +110 -0
- data/app/controllers/feature_box/application_controller.rb +37 -0
- data/app/controllers/feature_box/categories_controller.rb +43 -0
- data/app/controllers/feature_box/comments_controller.rb +46 -0
- data/app/controllers/feature_box/devise/passwords_controller.rb +4 -0
- data/app/controllers/feature_box/devise/redirects.rb +21 -0
- data/app/controllers/feature_box/devise/registrations_controller.rb +4 -0
- data/app/controllers/feature_box/devise/sessions_controller.rb +4 -0
- data/app/controllers/feature_box/home_controller.rb +8 -0
- data/app/controllers/feature_box/suggestions_controller.rb +161 -0
- data/app/controllers/feature_box/users_controller.rb +32 -0
- data/app/helpers/feature_box/application_helper.rb +40 -0
- data/app/mailers/feature_box/devise/mailer.rb +3 -0
- data/app/models/feature_box/ability.rb +25 -0
- data/app/models/feature_box/category.rb +15 -0
- data/app/models/feature_box/comment.rb +15 -0
- data/app/models/feature_box/suggestion.rb +113 -0
- data/app/models/feature_box/user.rb +61 -0
- data/app/models/feature_box/vote.rb +6 -0
- data/app/views/feature_box/categories/_form.html.haml +14 -0
- data/app/views/feature_box/categories/edit.html.haml +3 -0
- data/app/views/feature_box/categories/index.html.haml +26 -0
- data/app/views/feature_box/categories/new.html.haml +3 -0
- data/app/views/feature_box/comments/_comment.html.haml +9 -0
- data/app/views/feature_box/comments/_new.html.haml +9 -0
- data/app/views/feature_box/comments/edit.html.haml +17 -0
- data/app/views/feature_box/comments/index.html.haml +8 -0
- data/app/views/feature_box/devise/_links.html.haml +9 -0
- data/app/views/feature_box/devise/confirmations/new.html.haml +7 -0
- data/app/views/feature_box/devise/mailer/confirmation_instructions.html.haml +4 -0
- data/app/views/feature_box/devise/mailer/reset_password_instructions.html.haml +6 -0
- data/app/views/feature_box/devise/mailer/unlock_instructions.html.haml +5 -0
- data/app/views/feature_box/devise/passwords/edit.html.haml +7 -0
- data/app/views/feature_box/devise/passwords/new.html.haml +5 -0
- data/app/views/feature_box/devise/registrations/edit.html.haml +16 -0
- data/app/views/feature_box/devise/registrations/new.html.haml +8 -0
- data/app/views/feature_box/devise/sessions/new.html.haml +8 -0
- data/app/views/feature_box/shared/_pages_nav.html.haml +6 -0
- data/app/views/feature_box/suggestions/_form.html.haml +30 -0
- data/app/views/feature_box/suggestions/_order_nav.html.haml +6 -0
- data/app/views/feature_box/suggestions/_search.html.haml +4 -0
- data/app/views/feature_box/suggestions/_suggestion.html.haml +31 -0
- data/app/views/feature_box/suggestions/edit.html.haml +3 -0
- data/app/views/feature_box/suggestions/index.html.haml +27 -0
- data/app/views/feature_box/suggestions/new.html.haml +6 -0
- data/app/views/feature_box/suggestions/show.html.haml +2 -0
- data/app/views/feature_box/users/edit.html.haml +14 -0
- data/app/views/feature_box/users/index.html.haml +24 -0
- data/app/views/layouts/feature_box/application.html.haml +81 -0
- data/config/initializers/devise.rb +3 -0
- data/config/routes.rb +35 -0
- data/db/seeds.rb +11 -0
- data/lib/feature_box.rb +72 -0
- data/lib/feature_box/engine.rb +5 -0
- data/lib/feature_box/helpers.rb +49 -0
- data/lib/feature_box/version.rb +3 -0
- data/lib/generators/feature_box/existing_generator.rb +26 -0
- data/lib/generators/feature_box/generator_base.rb +47 -0
- data/lib/generators/feature_box/initializer_generator.rb +14 -0
- data/lib/generators/feature_box/migrations_generator.rb +25 -0
- data/lib/generators/feature_box/standalone_generator.rb +27 -0
- data/lib/generators/feature_box/templates/initializers/initializer.rb +32 -0
- data/lib/generators/feature_box/templates/initializers/new_devise_initializer.rb +8 -0
- data/lib/generators/feature_box/templates/migrations/00_create_feature_box_suggestions.rb +15 -0
- data/lib/generators/feature_box/templates/migrations/01_create_feature_box_categories.rb +9 -0
- data/lib/generators/feature_box/templates/migrations/02_create_feature_box_comments.rb +13 -0
- data/lib/generators/feature_box/templates/migrations/03_create_feature_box_votes.rb +12 -0
- data/lib/generators/feature_box/templates/migrations/04_create_feature_box_users.rb +10 -0
- data/lib/generators/feature_box/templates/migrations/05_add_devise_to_feature_box_users.rb +50 -0
- data/lib/generators/feature_box/templates/migrations/06_add_type_to_{model_name}.rb +5 -0
- data/lib/generators/feature_box/views_generator.rb +14 -0
- data/lib/tasks/feature_box_tasks.rake +9 -0
- data/test/existing-template/application.html.erb +40 -0
- data/test/existing-template/application_helper.rb +11 -0
- data/test/existing-template/index.html.erb +1 -0
- data/test/run-all-tests.sh +7 -0
- data/test/template.rb +29 -0
- data/vendor/assets/stylesheets/bootstrap.min.css +689 -0
- metadata +250 -0
data/CHANGELOG.rdoc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
== 0.8.0
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2012 Dmitry Filimonov
|
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.rdoc
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
= FeatureBox
|
2
|
+
|
3
|
+
FeatureBox is a feature request service written using Ruby on Rails framework.
|
4
|
+
It is an open source analog of VoteBox[http://www.dropbox.com/votebox] - part of the DropBox
|
5
|
+
|
6
|
+
It is designed to be flexible and customizable and intended to be easily integrated into your website.
|
7
|
+
It uses popular gems like *CanCan* and *Devise*.
|
8
|
+
|
9
|
+
Take a look at the demo here: http://featurebox.me
|
10
|
+
|
11
|
+
== Installation
|
12
|
+
===Basic steps
|
13
|
+
|
14
|
+
Edit your *Gemfile* to add a dependency on the feature_box gem.
|
15
|
+
gem 'feature_box'
|
16
|
+
|
17
|
+
Update dependencies
|
18
|
+
bundle update
|
19
|
+
|
20
|
+
Before moving any further you will need to choose the right generator.
|
21
|
+
There are two of them: one for *existing* app and one for *standalone* installation.
|
22
|
+
|
23
|
+
The main difference is that standalone generator creates a new User model, installs and configures Devise. It is meant to run on a clean rails app and that's why it is called standalone. Use this generator to test FeatureBox or if your application doesn't have any User model.
|
24
|
+
|
25
|
+
If you installing FeatureBox on existing app you might want to keep existing users and this is situation when you have to use generator for existing application.
|
26
|
+
|
27
|
+
|
28
|
+
=== Standalone
|
29
|
+
One simple command will create User model, install Devise, run migrations and everything.
|
30
|
+
|
31
|
+
rails g feature_box:standalone
|
32
|
+
|
33
|
+
|
34
|
+
=== Existing Application
|
35
|
+
Make sure you have User model in your application.
|
36
|
+
Install Devise on if you haven't done this yet.
|
37
|
+
|
38
|
+
Then install FeatureBox with just one command:
|
39
|
+
rails g feature_box:existing
|
40
|
+
|
41
|
+
If you don't want to rely on this smart generator script, check Manual Installation part.
|
42
|
+
|
43
|
+
|
44
|
+
=== Manual Installation
|
45
|
+
|
46
|
+
==== Initializer
|
47
|
+
Use this generator to create a new initializer in +config/initializers/feature_box.rb+
|
48
|
+
rails g feature_box:initializer
|
49
|
+
|
50
|
+
==== Routes
|
51
|
+
Routing is really easy:
|
52
|
+
mount FeatureBox::Engine => '/any_path'
|
53
|
+
|
54
|
+
==== Migrations
|
55
|
+
FeatureBox has a generator for this:
|
56
|
+
rails g feature_box:migrations
|
57
|
+
|
58
|
+
Here is a list of avaliable migrations:
|
59
|
+
* 00_create_feature_box_suggestions.rb
|
60
|
+
* 01_create_feature_box_categories.rb
|
61
|
+
* 02_create_feature_box_comments.rb
|
62
|
+
* 03_create_feature_box_votes.rb
|
63
|
+
* 04_create_feature_box_users.rb
|
64
|
+
* 05_add_devise_to_feature_box_users.rb
|
65
|
+
* 06_add_type_to_{model_name}.rb
|
66
|
+
|
67
|
+
Migrations 00..03 are a must.
|
68
|
+
|
69
|
+
Install migrations 04 and 05 if you don't have User model. This is what *standalone* generator does.
|
70
|
+
|
71
|
+
Install migration 06 if you already have a User model in your app. This will add +:type+ column to the model and this is important because Rails STI doesn't work without this trick. Generator will also ask you for a model name in case it is not User.
|
72
|
+
|
73
|
+
Run migrations like you always do:
|
74
|
+
rake db:migrate
|
75
|
+
|
76
|
+
==== Tweaking Initializer
|
77
|
+
In case you already use Devise in your app you have to set *devise_router_name* to *:main_app* in the initializer:
|
78
|
+
settings.devise_router_name = :main_app
|
79
|
+
Make sure you have this line in the initializer:
|
80
|
+
settings.devise_parent_model = "User"
|
81
|
+
|
82
|
+
== Other Things You May Want To Install
|
83
|
+
=== Views
|
84
|
+
Use this generator to copy views to your app so you can easily edit them:
|
85
|
+
rails g feature_box:views
|
86
|
+
|
87
|
+
=== ActionMailer Configuration
|
88
|
+
It is pretty simple and basically the same as with any other Rails App.
|
89
|
+
More info coming soon.
|
90
|
+
|
91
|
+
|
92
|
+
== TODOs
|
93
|
+
* Correct spelling mistakes. I am not a native speaker and it is really hard for me. Conribute, please.
|
94
|
+
* Test coverage. It is really poor at the moment.
|
95
|
+
* AJAX
|
96
|
+
|
97
|
+
|
98
|
+
== Contribution
|
99
|
+
I invite everyone who wants to help me with this project.
|
100
|
+
|
101
|
+
Share your ideas and thoughts here: http://featurebox.me.
|
102
|
+
|
103
|
+
Issues Tracker is available here: http://github.com/petethepig/featurebox/issues.
|
104
|
+
|
105
|
+
|
106
|
+
== License
|
107
|
+
MIT License. Copyright 2012 {Dmitry Filimonov}[http://dfilimonov.com].
|
@@ -0,0 +1,39 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// the compiled file.
|
9
|
+
//
|
10
|
+
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
|
11
|
+
// GO AFTER THE REQUIRES BELOW.
|
12
|
+
//
|
13
|
+
//= require jquery
|
14
|
+
//= require jquery_ujs
|
15
|
+
|
16
|
+
|
17
|
+
var FeatureBox={
|
18
|
+
initAjaxListeners:function(){
|
19
|
+
$(".vote-btn").bind("ajax:success",function(ev,data){
|
20
|
+
var obj = data;
|
21
|
+
if(obj.error){
|
22
|
+
|
23
|
+
}else{
|
24
|
+
$(this).parent().children(".vote-frame").children(".vote-number").text(obj.total_votes);
|
25
|
+
$(this).parent().children(".vote-frame").children(".user-votes").text("+"+obj.user_votes).removeClass("hidden");
|
26
|
+
$(this).parent().children(".vote-frame").children(".votes-label").text(obj.total_votes==1?"vote":"votes");
|
27
|
+
if(obj.votes_left>0)
|
28
|
+
$("#votes-left").children("span").text(obj.votes_left+(obj.votes_left==1?" vote":" votes"));
|
29
|
+
else
|
30
|
+
$("#votes-left").text("You have no votes left")
|
31
|
+
}
|
32
|
+
});
|
33
|
+
$("a.disabled").click(function(e){e.preventDefault();return false});
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
$(document).ready(function(){
|
38
|
+
FeatureBox.initAjaxListeners();
|
39
|
+
});
|
@@ -0,0 +1,133 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
+
* or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the top of the
|
9
|
+
* compiled file, but it's generally better to create a new file per style scope.
|
10
|
+
*
|
11
|
+
*= require bootstrap.min
|
12
|
+
*= require_tree .
|
13
|
+
*/
|
14
|
+
|
15
|
+
@import 'mixins.css.scss';
|
16
|
+
|
17
|
+
header {
|
18
|
+
padding: 30px 0;
|
19
|
+
}
|
20
|
+
|
21
|
+
.nav-list{
|
22
|
+
li{
|
23
|
+
a{
|
24
|
+
@include radius(4px);
|
25
|
+
}
|
26
|
+
}.active{
|
27
|
+
a{
|
28
|
+
background: #08C;
|
29
|
+
@include linear-gradient(#0095E0, #08C);
|
30
|
+
border:1px solid #0095E0;
|
31
|
+
padding:2px 14px;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
.black-link, .black-link:HOVER{
|
37
|
+
text-decoration:none;
|
38
|
+
color:black;
|
39
|
+
}
|
40
|
+
|
41
|
+
a.disabled, a.disabled:HOVER{
|
42
|
+
color: #ccc;
|
43
|
+
}
|
44
|
+
|
45
|
+
a.danger{
|
46
|
+
color:#f22;
|
47
|
+
}
|
48
|
+
|
49
|
+
|
50
|
+
.span8-5{
|
51
|
+
width:650px;
|
52
|
+
}
|
53
|
+
|
54
|
+
.empty{
|
55
|
+
line-height: 27px;
|
56
|
+
font-size: 18px;
|
57
|
+
margin: 40px 0;
|
58
|
+
text-align:center;
|
59
|
+
}
|
60
|
+
|
61
|
+
.inline{
|
62
|
+
display:inline;
|
63
|
+
}
|
64
|
+
|
65
|
+
.center{
|
66
|
+
text-align: center;
|
67
|
+
}
|
68
|
+
|
69
|
+
|
70
|
+
#current-user-wrapper{
|
71
|
+
position:absolute;
|
72
|
+
width:100%;
|
73
|
+
#current-user{
|
74
|
+
height:0;
|
75
|
+
div{
|
76
|
+
padding: 5px 10px;
|
77
|
+
}
|
78
|
+
}
|
79
|
+
}
|
80
|
+
|
81
|
+
#votes-left{
|
82
|
+
line-height:1.25;
|
83
|
+
}
|
84
|
+
|
85
|
+
|
86
|
+
.new-btn{
|
87
|
+
text-align:center;
|
88
|
+
margin-top:40px;
|
89
|
+
a{
|
90
|
+
width: 670px;
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
#admin-links{
|
95
|
+
display:block;
|
96
|
+
}
|
97
|
+
|
98
|
+
|
99
|
+
footer .span12{
|
100
|
+
margin-top: 45px;
|
101
|
+
padding: 35px 0 36px;
|
102
|
+
border-top: 1px solid #E5E5E5;
|
103
|
+
}
|
104
|
+
|
105
|
+
|
106
|
+
.clearfix{
|
107
|
+
clear:both;
|
108
|
+
}
|
109
|
+
|
110
|
+
.hidden{
|
111
|
+
visibility:hidden;
|
112
|
+
}
|
113
|
+
|
114
|
+
|
115
|
+
@media(max-width: 970px) { /*for better experience on low resolution displays*/
|
116
|
+
.container{
|
117
|
+
padding-left: 15px;
|
118
|
+
padding-right: 15px;
|
119
|
+
}
|
120
|
+
}
|
121
|
+
|
122
|
+
//*Categories and Users pages**/
|
123
|
+
ul.table-nav{
|
124
|
+
margin:0;
|
125
|
+
padding:0;
|
126
|
+
border-bottom:none;
|
127
|
+
font-weight:normal;
|
128
|
+
margin-bottom:-34px;
|
129
|
+
}
|
130
|
+
|
131
|
+
table tr td:last-child{
|
132
|
+
text-align:right;
|
133
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
// Place all the styles related to the Comments controller here.
|
2
|
+
// They will automatically be included in application.css.
|
3
|
+
// You can use Sass (SCSS) here: http://sass-lang.com/
|
4
|
+
|
5
|
+
@import 'mixins.css.scss';
|
6
|
+
|
7
|
+
#comments{
|
8
|
+
margin: 0;
|
9
|
+
}
|
10
|
+
|
11
|
+
#comments-nav{
|
12
|
+
margin:0;
|
13
|
+
}
|
14
|
+
|
15
|
+
.comment{
|
16
|
+
padding:30px 0;
|
17
|
+
border-top:1px solid #ddd;
|
18
|
+
margin-top:-1px;
|
19
|
+
clear:both;
|
20
|
+
.comment-user{
|
21
|
+
width:120px;
|
22
|
+
float:left;
|
23
|
+
padding-left:20px;
|
24
|
+
font-weight:bold;
|
25
|
+
}
|
26
|
+
.comment-text{
|
27
|
+
margin:0 100px 0 150px;
|
28
|
+
line-height:1.5;
|
29
|
+
}
|
30
|
+
.comment-date{
|
31
|
+
float:right;
|
32
|
+
position:relative;
|
33
|
+
top:-20px;
|
34
|
+
color: #999;
|
35
|
+
text-align:right;
|
36
|
+
}
|
37
|
+
.comment-edit{
|
38
|
+
text-align:right;
|
39
|
+
}
|
40
|
+
|
41
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
|
2
|
+
@mixin radius($rad) {
|
3
|
+
-webkit-border-radius: $rad;
|
4
|
+
-moz-border-radius: $rad;
|
5
|
+
border-radius: $rad;
|
6
|
+
}
|
7
|
+
|
8
|
+
@mixin shadow($param){
|
9
|
+
box-shadow: $param;
|
10
|
+
-moz-box-shadow: $param;
|
11
|
+
-webkit-box-shadow: $param;
|
12
|
+
}
|
13
|
+
|
14
|
+
@mixin text-shadow($param){
|
15
|
+
text-shadow: $param;
|
16
|
+
-moz-text-shadow: $param;
|
17
|
+
-webkit-text-shadow: $param;
|
18
|
+
}
|
19
|
+
|
20
|
+
@mixin diagonal-gradient($from, $to){
|
21
|
+
$deg: -45deg;
|
22
|
+
background-image: -moz-linear-gradient($deg, $from, $to);
|
23
|
+
background-image: -ms-linear-gradient($deg, $from, $to);
|
24
|
+
background-image: -webkit-gradient(linear, left top, right bottom, $from, $to);
|
25
|
+
background-image: -webkit-linear-gradient($deg, $from, $to);
|
26
|
+
background-image: -o-linear-gradient($deg, $from, $to);
|
27
|
+
background-image: linear-gradient($deg, $from, $to);
|
28
|
+
}
|
29
|
+
|
30
|
+
@mixin linear-gradient($from, $to){
|
31
|
+
background-image: -moz-linear-gradient(top, $from, $to);
|
32
|
+
background-image: -ms-linear-gradient(top, $from, $to);
|
33
|
+
background-image: -webkit-gradient(linear, left top, left bottom, $from, $to);
|
34
|
+
background-image: -webkit-linear-gradient(top, $from, $to);
|
35
|
+
background-image: -o-linear-gradient(top, $from, $to);
|
36
|
+
background-image: linear-gradient(top, $from, $to);
|
37
|
+
}
|
@@ -0,0 +1,110 @@
|
|
1
|
+
// Place all the styles related to the Suggestions controller here.
|
2
|
+
// They will automatically be included in application.css.
|
3
|
+
// You can use Sass (SCSS) here: http://sass-lang.com/
|
4
|
+
|
5
|
+
@import 'mixins.css.scss';
|
6
|
+
|
7
|
+
.suggestion{
|
8
|
+
|
9
|
+
margin-bottom:40px;
|
10
|
+
|
11
|
+
.vote-box{
|
12
|
+
float: left;
|
13
|
+
@include radius(0 0 4px 4px);
|
14
|
+
@include shadow(0 2px 6px rgba(100,100,100,0.15));
|
15
|
+
}
|
16
|
+
|
17
|
+
.vote-frame, .vote-btn{
|
18
|
+
width: 75px;
|
19
|
+
}
|
20
|
+
|
21
|
+
.vote-btn{
|
22
|
+
@include radius(0 0 4px 4px);
|
23
|
+
display:block;
|
24
|
+
padding:5px 0;
|
25
|
+
text-align: center;
|
26
|
+
line-height: 13px;
|
27
|
+
}
|
28
|
+
.vote-btn.disabled{
|
29
|
+
border:1px solid #ccc;
|
30
|
+
opacity:1;
|
31
|
+
color:#999;
|
32
|
+
}
|
33
|
+
.vote-frame{
|
34
|
+
|
35
|
+
border:1px solid #ccc;
|
36
|
+
border-bottom:none;
|
37
|
+
@include radius( 4px 4px 0 0);
|
38
|
+
|
39
|
+
text-align: center;
|
40
|
+
padding: 18px 0;
|
41
|
+
line-height: 1.15;
|
42
|
+
|
43
|
+
color: #999;
|
44
|
+
background-color: white;
|
45
|
+
@include diagonal-gradient(white, #e8e8e8);
|
46
|
+
|
47
|
+
.vote-number{
|
48
|
+
font-size: 23px;
|
49
|
+
color: #08C;
|
50
|
+
}.long{
|
51
|
+
font-size: 18px;
|
52
|
+
}
|
53
|
+
.user-votes{
|
54
|
+
display:table-cell;
|
55
|
+
|
56
|
+
$rad:26px;
|
57
|
+
|
58
|
+
min-width:20px;
|
59
|
+
height:$rad;
|
60
|
+
line-height:$rad;
|
61
|
+
margin-bottom:-$rad;
|
62
|
+
@include radius($rad/2);
|
63
|
+
|
64
|
+
font-weight: bold;
|
65
|
+
background: orange;
|
66
|
+
color: white;
|
67
|
+
font-size:12px;
|
68
|
+
position:relative;
|
69
|
+
float:right;
|
70
|
+
left:13px;
|
71
|
+
top:-55px;
|
72
|
+
padding:0 3px;
|
73
|
+
@include text-shadow(0 1px 2px rgba(100,100,100,0.3));
|
74
|
+
@include shadow(0 1px 6px rgba(100,100,100,0.3));
|
75
|
+
}
|
76
|
+
}
|
77
|
+
|
78
|
+
|
79
|
+
.suggestion-info{
|
80
|
+
margin-left: 95px;
|
81
|
+
.title{
|
82
|
+
color:#08C;
|
83
|
+
}
|
84
|
+
.description{
|
85
|
+
margin:15px 0px;
|
86
|
+
line-height:1.5;
|
87
|
+
}
|
88
|
+
.comments{
|
89
|
+
color:#999;
|
90
|
+
}
|
91
|
+
.name-date{
|
92
|
+
float:right;
|
93
|
+
color:#999;
|
94
|
+
}
|
95
|
+
}
|
96
|
+
}
|
97
|
+
|
98
|
+
#search-field{
|
99
|
+
margin-top:10px;
|
100
|
+
input#q{
|
101
|
+
width:585px;
|
102
|
+
margin:0;
|
103
|
+
}
|
104
|
+
input.btn{
|
105
|
+
width:65px;
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
|
110
|
+
|