seems_rateable 1.0.8 → 1.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/app/assets/stylesheets/seems_rateable/{index.css → application.css} +62 -48
- data/lib/seems_rateable/helpers.rb +1 -1
- data/lib/seems_rateable/version.rb +1 -1
- metadata +2 -5
- data/app/assets/javascripts/seems_rateable/jRating.jquery.js.erb +0 -225
- data/lib/seems_rateable/helpers.rb~ +0 -27
- data/lib/seems_rateable/version.rb~ +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0eb8a1e5c55ccaff4c140702bdd45ae130ab3adb
|
4
|
+
data.tar.gz: 6e6172c3197be41dafd85972be9a6a453bf82e5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fcc9344aa5b330b35c220208a910929f3396a8cf579e4a56e63bc9d0c6dff2bb64b371135a23478ad6b0cd9dab1f7de1743eb32d91a0426762d9d1f8cd5a27ca
|
7
|
+
data.tar.gz: fc8d7526d7726c2b16f07b72f7e2794a6a716f4b945e92313c522812dc6c3c683c49b18db28aaface6fbd4159d4967a9ff654fdcba563b0adace5c40776a50d8
|
data/README.md
CHANGED
@@ -76,7 +76,7 @@ And to object's raters e.g
|
|
76
76
|
@object.raters(:quantity)
|
77
77
|
|
78
78
|
To track user's given ratings add <code>seems_rateable_rater</code> to your rater model.
|
79
|
-
If your rater class is not "User"(e.g "Client" or "Customer") change configuration in initializer generated by this engine
|
79
|
+
If your rater class is not "User"(e.g "Client" or "Customer") change configuration in initializer generated by this engine.
|
80
80
|
Now you can access user's ratings by <code>@user.ratings_given</code>
|
81
81
|
|
82
82
|
### Usage
|
@@ -99,7 +99,7 @@ You can specify these options :
|
|
99
99
|
<li><code>:id</code>ID of the div e.g <code>:id => "info"</code>, default nil</li>
|
100
100
|
</ul>
|
101
101
|
|
102
|
-
To edit the javascript options locate rateable.
|
102
|
+
To edit the javascript options locate rateable.js file in /app/assets/javascripts/rateable/.
|
103
103
|
The javascript options are explained directly in the file
|
104
104
|
|
105
105
|
## Contributing
|
@@ -1,48 +1,62 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
z-index:
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
}
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
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_self
|
12
|
+
*= require_tree .
|
13
|
+
*/
|
14
|
+
|
15
|
+
/*********************/
|
16
|
+
/** jRating CSS **/
|
17
|
+
/*********************/
|
18
|
+
|
19
|
+
/**Div containing the color of the stars */
|
20
|
+
|
21
|
+
|
22
|
+
.jRatingAverage {
|
23
|
+
background-color:#f62929;
|
24
|
+
position:relative;
|
25
|
+
top:0;
|
26
|
+
left:0;
|
27
|
+
z-index:2;
|
28
|
+
height:100%;
|
29
|
+
}
|
30
|
+
.jRatingColor {
|
31
|
+
background-color:#FFD400; /* bgcolor of the stars*/
|
32
|
+
position:relative;
|
33
|
+
top:0;
|
34
|
+
left:0;
|
35
|
+
z-index:2;
|
36
|
+
height:100%;
|
37
|
+
}
|
38
|
+
|
39
|
+
/** Div containing the stars **/
|
40
|
+
.jStar {
|
41
|
+
position:relative;
|
42
|
+
left:0;
|
43
|
+
z-index:3;
|
44
|
+
}
|
45
|
+
|
46
|
+
/** P containing the rate informations **/
|
47
|
+
p.jRatingInfos {
|
48
|
+
position: absolute;
|
49
|
+
z-index:9999;
|
50
|
+
background: transparent url('bg_jRatingInfos.png') no-repeat;
|
51
|
+
color: #CACACA;
|
52
|
+
display: none;
|
53
|
+
width: 91px;
|
54
|
+
height: 29px;
|
55
|
+
font-size:16px;
|
56
|
+
text-align:center;
|
57
|
+
padding-top:5px;
|
58
|
+
}
|
59
|
+
p.jRatingInfos span.maxRate {
|
60
|
+
color:#c9c9c9;
|
61
|
+
font-size:14px;
|
62
|
+
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seems_rateable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Toth
|
@@ -102,9 +102,8 @@ extensions: []
|
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
104
|
- app/views/layouts/seems_rateable/application.html.erb
|
105
|
-
- app/assets/stylesheets/seems_rateable/
|
105
|
+
- app/assets/stylesheets/seems_rateable/application.css
|
106
106
|
- app/assets/javascripts/seems_rateable/application.js
|
107
|
-
- app/assets/javascripts/seems_rateable/jRating.jquery.js.erb
|
108
107
|
- app/assets/images/seems_rateable/stars.png
|
109
108
|
- app/assets/images/seems_rateable/small.png
|
110
109
|
- app/assets/images/seems_rateable/bg_jRatingInfos.png
|
@@ -122,13 +121,11 @@ files:
|
|
122
121
|
- lib/generators/seems_rateable/install/templates/rates_migration.rb
|
123
122
|
- lib/generators/seems_rateable/install/templates/cached_ratings_migration.rb
|
124
123
|
- lib/generators/seems_rateable/install/templates/jRating.js.erb
|
125
|
-
- lib/seems_rateable/version.rb~
|
126
124
|
- lib/seems_rateable/version.rb
|
127
125
|
- lib/seems_rateable/helpers.rb
|
128
126
|
- lib/seems_rateable/routes.rb
|
129
127
|
- lib/seems_rateable/errors.rb
|
130
128
|
- lib/seems_rateable/engine.rb
|
131
|
-
- lib/seems_rateable/helpers.rb~
|
132
129
|
- lib/seems_rateable/model.rb
|
133
130
|
- lib/tasks/seems_rateable_tasks.rake
|
134
131
|
- MIT-LICENSE
|
@@ -1,225 +0,0 @@
|
|
1
|
-
/************************************************************************
|
2
|
-
*************************************************************************
|
3
|
-
@Name : jRating - jQuery Plugin
|
4
|
-
@Revison : 3.0
|
5
|
-
@Date : 28/01/2013
|
6
|
-
@Author: ALPIXEL - (www.myjqueryplugins.com - www.alpixel.fr)
|
7
|
-
@License : Open Source - MIT License : http://www.opensource.org/licenses/mit-license.php
|
8
|
-
|
9
|
-
**************************************************************************
|
10
|
-
*************************************************************************/
|
11
|
-
(function($) {
|
12
|
-
$.fn.jRating = function(op) {
|
13
|
-
var defaults = {
|
14
|
-
/** String vars **/
|
15
|
-
bigStarsPath : '<%= image_path "seems_rateable/stars.png" %>', // path of the icon stars.png
|
16
|
-
smallStarsPath : '<%= image_path "seems_rateable/small.png" %>', // path of the icon small.png
|
17
|
-
path : '<%= SeemsRateable::Engine.routes.url_helpers.ratings_path %>',
|
18
|
-
type : 'big', // can be set to 'small' or 'big'
|
19
|
-
|
20
|
-
/** Boolean vars **/
|
21
|
-
step:false, // if true, mouseover binded star by star,
|
22
|
-
isDisabled:false,
|
23
|
-
showRateInfo: false,
|
24
|
-
canRateAgain : false,
|
25
|
-
|
26
|
-
/** Integer vars **/
|
27
|
-
length:5, // number of star to display
|
28
|
-
decimalLength : 0, // number of decimals.. Max 3, but you can complete the function 'getNote'
|
29
|
-
rateMax : 20, // maximal rate - integer from 0 to 9999 (or more)
|
30
|
-
rateInfosX : -45, // relative position in X axis of the info box when mouseover
|
31
|
-
rateInfosY : 5, // relative position in Y axis of the info box when mouseover
|
32
|
-
nbRates : 1,
|
33
|
-
|
34
|
-
/** Functions **/
|
35
|
-
onSuccess : null,
|
36
|
-
onError : null
|
37
|
-
};
|
38
|
-
|
39
|
-
if(this.length>0)
|
40
|
-
return this.each(function() {
|
41
|
-
/*vars*/
|
42
|
-
var opts = $.extend(defaults, op),
|
43
|
-
newWidth = 0,
|
44
|
-
starWidth = 0,
|
45
|
-
starHeight = 0,
|
46
|
-
bgPath = '',
|
47
|
-
hasRated = false,
|
48
|
-
globalWidth = 0,
|
49
|
-
nbOfRates = opts.nbRates;
|
50
|
-
|
51
|
-
if($(this).hasClass('jDisabled') || opts.isDisabled)
|
52
|
-
var jDisabled = true;
|
53
|
-
else
|
54
|
-
var jDisabled = false;
|
55
|
-
|
56
|
-
getStarWidth();
|
57
|
-
$(this).height(starHeight);
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
var average = parseFloat($(this).attr('data-average')), // get the average of all rates
|
62
|
-
idBox = parseInt($(this).attr('data-id')), // get the id of the box
|
63
|
-
kls = $(this).attr('data-kls'),
|
64
|
-
dimension = $(this).attr('data-dimension'),
|
65
|
-
widthRatingContainer = starWidth*opts.length, // Width of the Container
|
66
|
-
widthColor = average/opts.rateMax*widthRatingContainer, // Width of the color Container
|
67
|
-
quotient =
|
68
|
-
$('<div>',
|
69
|
-
{
|
70
|
-
'class' : 'jRatingColor',
|
71
|
-
css:{
|
72
|
-
width:widthColor
|
73
|
-
}
|
74
|
-
}).appendTo($(this)),
|
75
|
-
|
76
|
-
average =
|
77
|
-
$('<div>',
|
78
|
-
{
|
79
|
-
'class' : 'jRatingAverage',
|
80
|
-
css:{
|
81
|
-
width:0,
|
82
|
-
top:- starHeight
|
83
|
-
}
|
84
|
-
}).appendTo($(this)),
|
85
|
-
|
86
|
-
jstar =
|
87
|
-
$('<div>',
|
88
|
-
{
|
89
|
-
'class' : 'jStar',
|
90
|
-
css:{
|
91
|
-
width:widthRatingContainer,
|
92
|
-
height:starHeight,
|
93
|
-
top:- (starHeight*2),
|
94
|
-
background: 'url('+bgPath+') repeat-x'
|
95
|
-
}
|
96
|
-
}).appendTo($(this));
|
97
|
-
|
98
|
-
$(this).css({width: widthRatingContainer,overflow:'hidden',zIndex:1,position:'relative'});
|
99
|
-
|
100
|
-
if(!jDisabled)
|
101
|
-
$(this).unbind().bind({
|
102
|
-
mouseenter : function(e){
|
103
|
-
var realOffsetLeft = findRealLeft(this);
|
104
|
-
var relativeX = e.pageX - realOffsetLeft;
|
105
|
-
if (opts.showRateInfo)
|
106
|
-
var tooltip =
|
107
|
-
$('<p>',{
|
108
|
-
'class' : 'jRatingInfos',
|
109
|
-
html : getNote(relativeX)+' <span class="maxRate">/ '+opts.rateMax+'</span>',
|
110
|
-
css : {
|
111
|
-
top: (e.pageY + opts.rateInfosY),
|
112
|
-
left: (e.pageX + opts.rateInfosX)
|
113
|
-
}
|
114
|
-
}).appendTo('body').show();
|
115
|
-
},
|
116
|
-
mouseover : function(e){
|
117
|
-
$(this).css('cursor','pointer');
|
118
|
-
},
|
119
|
-
mouseout : function(){
|
120
|
-
$(this).css('cursor','default');
|
121
|
-
if(hasRated) average.width(globalWidth);
|
122
|
-
else average.width(0);
|
123
|
-
},
|
124
|
-
mousemove : function(e){
|
125
|
-
var realOffsetLeft = findRealLeft(this);
|
126
|
-
var relativeX = e.pageX - realOffsetLeft;
|
127
|
-
if(opts.step) newWidth = Math.floor(relativeX/starWidth)*starWidth + starWidth;
|
128
|
-
else newWidth = relativeX;
|
129
|
-
average.width(newWidth);
|
130
|
-
if (opts.showRateInfo)
|
131
|
-
$("p.jRatingInfos")
|
132
|
-
.css({
|
133
|
-
left: (e.pageX + opts.rateInfosX)
|
134
|
-
})
|
135
|
-
.html(getNote(newWidth) +' <span class="maxRate">/ '+opts.rateMax+'</span>');
|
136
|
-
},
|
137
|
-
mouseleave : function(){
|
138
|
-
$("p.jRatingInfos").remove();
|
139
|
-
},
|
140
|
-
click : function(e){
|
141
|
-
var element = this;
|
142
|
-
|
143
|
-
/*set vars*/
|
144
|
-
hasRated = true;
|
145
|
-
globalWidth = newWidth;
|
146
|
-
nbOfRates--;
|
147
|
-
|
148
|
-
if(!opts.canRateAgain || parseInt(nbOfRates) <= 0) $(this).unbind().css('cursor','default').addClass('jDisabled');
|
149
|
-
|
150
|
-
if (opts.showRateInfo) $("p.jRatingInfos").fadeOut('fast',function(){$(this).remove();});
|
151
|
-
e.preventDefault();
|
152
|
-
var rate = getNote(newWidth);
|
153
|
-
average.width(newWidth);
|
154
|
-
|
155
|
-
|
156
|
-
$.post(defaults.path,
|
157
|
-
{
|
158
|
-
idBox : idBox,
|
159
|
-
rate : rate,
|
160
|
-
kls : kls,
|
161
|
-
dimension : dimension
|
162
|
-
/** action : 'rating' **/
|
163
|
-
},
|
164
|
-
function(data) {
|
165
|
-
if(!data.error)
|
166
|
-
{
|
167
|
-
/** Here you can display an alert box,
|
168
|
-
or use the jNotify Plugin :) http://www.myqjqueryplugins.com/jNotify
|
169
|
-
exemple : */
|
170
|
-
if(opts.onSuccess) opts.onSuccess( element, rate );
|
171
|
-
}
|
172
|
-
else
|
173
|
-
{
|
174
|
-
|
175
|
-
/** Here you can display an alert box,
|
176
|
-
or use the jNotify Plugin :) http://www.myqjqueryplugins.com/jNotify
|
177
|
-
exemple : */
|
178
|
-
if(opts.onError) opts.onError( element, rate );
|
179
|
-
}
|
180
|
-
},
|
181
|
-
'json'
|
182
|
-
);
|
183
|
-
}
|
184
|
-
});
|
185
|
-
|
186
|
-
function getNote(relativeX) {
|
187
|
-
var noteBrut = parseFloat((relativeX*100/widthRatingContainer)*opts.rateMax/100);
|
188
|
-
switch(opts.decimalLength) {
|
189
|
-
case 1 :
|
190
|
-
var note = Math.round(noteBrut*10)/10;
|
191
|
-
break;
|
192
|
-
case 2 :
|
193
|
-
var note = Math.round(noteBrut*100)/100;
|
194
|
-
break;
|
195
|
-
case 3 :
|
196
|
-
var note = Math.round(noteBrut*1000)/1000;
|
197
|
-
break;
|
198
|
-
default :
|
199
|
-
var note = Math.round(noteBrut*1)/1;
|
200
|
-
}
|
201
|
-
return note;
|
202
|
-
};
|
203
|
-
|
204
|
-
function getStarWidth(){
|
205
|
-
switch(opts.type) {
|
206
|
-
case 'small' :
|
207
|
-
starWidth = 12; // width of the picture small.png
|
208
|
-
starHeight = 10; // height of the picture small.png
|
209
|
-
bgPath = opts.smallStarsPath;
|
210
|
-
break;
|
211
|
-
default :
|
212
|
-
starWidth = 23; // width of the picture stars.png
|
213
|
-
starHeight = 20; // height of the picture stars.png
|
214
|
-
bgPath = opts.bigStarsPath;
|
215
|
-
}
|
216
|
-
};
|
217
|
-
|
218
|
-
function findRealLeft(obj) {
|
219
|
-
if( !obj ) return 0;
|
220
|
-
return obj.offsetLeft + findRealLeft( obj.offsetParent );
|
221
|
-
};
|
222
|
-
});
|
223
|
-
|
224
|
-
}
|
225
|
-
})(jQuery);
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module SeemsRateable
|
2
|
-
module Helpers
|
3
|
-
def rating_for(obj, opts={})
|
4
|
-
raise Errors::InvalidRateableObjectError unless obj.class.respond_to?(:rateable?)
|
5
|
-
|
6
|
-
options = {
|
7
|
-
:dimension => nil,
|
8
|
-
:static => false,
|
9
|
-
:class => 'rateable',
|
10
|
-
:id => nil
|
11
|
-
}.update(opts)
|
12
|
-
|
13
|
-
content_tag :div, "", "data-average" => obj.average(options[:dimension]) ? obj.average(options[:dimension]).avg : 0, :id => options[:id],
|
14
|
-
:class => "#{options[:class]}#{jdisabled?(options[:static])}",
|
15
|
-
"data-id" => obj.id, "data-kls" => obj.class.name, "data-dimension" => options[:dimension]
|
16
|
-
end
|
17
|
-
|
18
|
-
def seems_rateable_stylesheet
|
19
|
-
stylesheet_link_tag "seems_rateable/jRating.jquery"
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
def jdisabled?(option)
|
24
|
-
" jDisabled" if option || !current_user
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|