ratyrate 1.2.0.alpha

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -0
  3. data/.travis.yml +5 -0
  4. data/Gemfile +8 -0
  5. data/Gemfile.lock +51 -0
  6. data/README.md +169 -0
  7. data/Rakefile +12 -0
  8. data/lib/generators/ratyrate/USAGE +0 -0
  9. data/lib/generators/ratyrate/ratyrate_generator.rb +56 -0
  10. data/lib/generators/ratyrate/templates/average_cache_migration.rb +17 -0
  11. data/lib/generators/ratyrate/templates/average_cache_model.rb +4 -0
  12. data/lib/generators/ratyrate/templates/big-star.png +0 -0
  13. data/lib/generators/ratyrate/templates/cache_migration.rb +19 -0
  14. data/lib/generators/ratyrate/templates/cache_model.rb +3 -0
  15. data/lib/generators/ratyrate/templates/cancel-off.png +0 -0
  16. data/lib/generators/ratyrate/templates/cancel-on.png +0 -0
  17. data/lib/generators/ratyrate/templates/jquery.raty.js +464 -0
  18. data/lib/generators/ratyrate/templates/mid-star.png +0 -0
  19. data/lib/generators/ratyrate/templates/migration.rb +20 -0
  20. data/lib/generators/ratyrate/templates/model.rb +7 -0
  21. data/lib/generators/ratyrate/templates/overall_average_migration.rb +16 -0
  22. data/lib/generators/ratyrate/templates/overall_average_model.rb +4 -0
  23. data/lib/generators/ratyrate/templates/rater_controller.rb +13 -0
  24. data/lib/generators/ratyrate/templates/ratyrate.js.erb +59 -0
  25. data/lib/generators/ratyrate/templates/star-half.png +0 -0
  26. data/lib/generators/ratyrate/templates/star-off.png +0 -0
  27. data/lib/generators/ratyrate/templates/star-on.png +0 -0
  28. data/lib/ratyrate/helpers.rb +144 -0
  29. data/lib/ratyrate/model.rb +153 -0
  30. data/lib/ratyrate/version.rb +3 -0
  31. data/lib/ratyrate.rb +7 -0
  32. data/ratyrate.gemspec +24 -0
  33. metadata +76 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: afb9049229e09fc34ff2b76ce661361b05914316
4
+ data.tar.gz: 97b29e7fd7793f1355e76ebdb8480dc7b2b804c7
5
+ SHA512:
6
+ metadata.gz: 137685240d3d6f07ec47aed48a9790ee7e8cbcd48133d6194fc1e416c0ebc8a717451ab8ecac41510c19b870db8c88d010533746e927d601ab3203b226d017e0
7
+ data.tar.gz: 5cd42119f1040208e7fb3c5b59ac926fc5712d03935d8fd8e794f808e09803778f0010c5480155af15de93984fe8e8dc1245e6f362daf9fd099ff8f2a2c7167a
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ .DS_Store
2
+ /pkg/*
3
+
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - "2.1.0"
4
+ # uncomment this line if your project needs to run something other than `rake`:
5
+ # script: bundle exec rspec spec
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem 'jquery-rails', '>= 3.1.1'
4
+
5
+ ruby '2.1.0'
6
+
7
+ # Specify your gem's dependencies in ratyrate.gemspec
8
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,51 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ ratyrate (1.0.9)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ actionpack (4.1.4)
10
+ actionview (= 4.1.4)
11
+ activesupport (= 4.1.4)
12
+ rack (~> 1.5.2)
13
+ rack-test (~> 0.6.2)
14
+ actionview (4.1.4)
15
+ activesupport (= 4.1.4)
16
+ builder (~> 3.1)
17
+ erubis (~> 2.7.0)
18
+ activesupport (4.1.4)
19
+ i18n (~> 0.6, >= 0.6.9)
20
+ json (~> 1.7, >= 1.7.7)
21
+ minitest (~> 5.1)
22
+ thread_safe (~> 0.1)
23
+ tzinfo (~> 1.1)
24
+ builder (3.2.2)
25
+ erubis (2.7.0)
26
+ i18n (0.6.11)
27
+ jquery-rails (3.1.1)
28
+ railties (>= 3.0, < 5.0)
29
+ thor (>= 0.14, < 2.0)
30
+ json (1.8.1)
31
+ minitest (5.4.0)
32
+ rack (1.5.2)
33
+ rack-test (0.6.2)
34
+ rack (>= 1.0)
35
+ railties (4.1.4)
36
+ actionpack (= 4.1.4)
37
+ activesupport (= 4.1.4)
38
+ rake (>= 0.8.7)
39
+ thor (>= 0.18.1, < 2.0)
40
+ rake (10.3.2)
41
+ thor (0.19.1)
42
+ thread_safe (0.3.4)
43
+ tzinfo (1.2.1)
44
+ thread_safe (~> 0.1)
45
+
46
+ PLATFORMS
47
+ ruby
48
+
49
+ DEPENDENCIES
50
+ jquery-rails (>= 3.1.1)
51
+ ratyrate!
data/README.md ADDED
@@ -0,0 +1,169 @@
1
+ # RatyRate Stars Rating Gem [![endorse](http://api.coderwall.com/wazery/endorsecount.png)](http://coderwall.com/wazery)
2
+
3
+ A Ruby Gem that wrap the functionality of [jQuery Raty](https://github.com/wbotelhos/raty) library, and provides optional IMDB style rating.
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/money-rails.png)](http://badge.fury.io/rb/money-rails)
6
+ [![Build Status](https://travis-ci.org/wazery/ratyrate.svg)](http://travis-ci.org/wazery/ratyrate)
7
+ [![Dependency Status](https://gemnasium.com/wazery/ratyrate.svg)](https://gemnasium.com/wazery/ratyrate)
8
+ [![Code Climate](https://codeclimate.com/github/wazery/ratyrate.png)](https://codeclimate.com/github/wazery/ratyrate)
9
+ [![License](http://img.shields.io/license/MIT.png?color=green)](http://opensource.org/licenses/MIT)
10
+ [![Support jQuery Raty](http://img.shields.io/gittip/wbotelhos.svg)](https://www.gittip.com/wazery "Git Tip")
11
+
12
+ ## Repository
13
+
14
+ This is a fork against the repository [muratguzel/ratyrate](https://github.com/muratguzel/ratyrate), the aim of this fork is to refresh the development in this Gem with a new scope and features, so please if you have any pull request issue it here, also I imported all the issues in the original repo.
15
+
16
+ ## Changelog from the main repository
17
+
18
+ 1. Exposed a lot of jQuery Raty plugin [features](http://wbotelhos.com/raty)
19
+ 1. Added cancel button that can be customized and inserted to left or right
20
+ 2. Added the ability to set custom star images for on, half or off state
21
+ 3. Added the ability to set a custom path for the images
22
+ 4. Added the ability to enable/disable half stars
23
+ 5. Added the ability to turn on/off half star
24
+ 2. Their is a new option now to disable or enable the rating after the first rate
25
+ 3. Added a star style to show just the score of the dimension, but this star is not editable
26
+ 4. Added an overall average star just like IMDB style
27
+ 3. Nothing else
28
+ 4. :wq
29
+
30
+ ## TODO
31
+
32
+ 1. Write RSpec tests for this Gem
33
+ 2. Create a Heroku app to illustrate this Gem's purpose and features (MovieStore)
34
+ 3. Add option to show the number of users who gave rates
35
+ 4. Add a share helper to Facebook, Twitter
36
+
37
+ ## Detailed view of the new features
38
+
39
+ ![Detailed view of the new featurews](https://dl.dropboxusercontent.com/u/71605080/RatyRate%20Features.png)
40
+
41
+ ## Instructions
42
+
43
+ ### Install
44
+
45
+ Add the ratyrate gem into your Gemfile
46
+
47
+ ```ruby
48
+ gem 'ratyrate'
49
+ ```
50
+
51
+ ### Generate
52
+
53
+ ```
54
+ rails g ratyrate User
55
+ ```
56
+
57
+ The generator takes one argument which is the name of your existing devise user model UserModelName. This is necessary to bind the user and rating datas.
58
+ Also the generator copies necessary files (jQuery Raty plugin files, star icons and JavaScript files)
59
+
60
+ Example:
61
+
62
+ Suppose you will have a devise user model which name is User. The devise generator and ratyrate generator should be like below
63
+
64
+ ```
65
+ rails g devise:install
66
+ rails g devise user
67
+
68
+ rails g ratyrate user # => user is the model generated by devise
69
+ ```
70
+
71
+ This generator will create Rate and RatingCache models and link to your user model.
72
+
73
+ ### Prepare
74
+
75
+ I suppose you have a car model
76
+
77
+ ```
78
+ rails g model car name:string
79
+ ```
80
+
81
+ You should add the ratyrate_rateable function with its dimensions option. You can add multiple dimensions.
82
+
83
+ ```ruby
84
+ class Car < ActiveRecord::Base
85
+ ratyrate_rateable "speed", "engine", "price"
86
+ end
87
+ ```
88
+
89
+ Then you need to add a call ratyrate_rater in the user model.
90
+
91
+ ```ruby
92
+ class User < ActiveRecord::Base
93
+ ratyrate_rater
94
+ end
95
+ ```
96
+
97
+ ### Using
98
+
99
+ There is a helper method which name is rating_for to add the star links. By default rating_for will display the average rating and accept the
100
+ new rating value from authenticated user.
101
+
102
+ ```erb
103
+ <%# show.html.erb -> /cars/1 %>
104
+
105
+ Speed : <%= rating_for @car, "speed" %>
106
+ Engine : <%= rating_for @car, "engine" %>
107
+ Price : <%= rating_for @car, "price" %>
108
+ ```
109
+
110
+ ### Available Options
111
+
112
+ 1- If you need to change the star number, you should use star option like below.
113
+ ```erb
114
+ Speed : <%= rating_for @car, "speed", :star => 10 %>
115
+ Speed : <%= rating_for @car, "engine", :star => 7 %>
116
+ Speed : <%= rating_for @car, "price" %>
117
+ ```
118
+ 2- To enable half stars use the option *enable_half*
119
+ ```erb
120
+ Speed : <%= rating_for @car, "speed", :enable_half => true %>
121
+ ```
122
+ 3- To show or hide the half stars use *half_show*
123
+ ```erb
124
+ Speed : <%= rating_for @car, "speed", :half_show => true %>
125
+ ```
126
+ 4- To change the path in which the star images (star-on.png, star-off.png, star-half.png, ..etc) are located use
127
+ ```erb
128
+ Speed : <%= rating_for @car, "speed", :star_path => true %>
129
+ ```
130
+
131
+ To just change one of the star images choose from these options (star_on, star_off, star_half)
132
+
133
+ 5- To add the cancel button to the left, or right of the stars use **(default is false)**
134
+ ```erb
135
+ Speed : <%= rating_for @car, "speed", :cancel => true %>
136
+ ```
137
+ 6- To change the place of the cancel button (left, or right) use **(default is left)**
138
+ ```erb
139
+ Speed : <%= rating_for @car, "speed", :cancel_place => left %>
140
+ ```
141
+ 7- To change the hint on the cancel button use **(default is "Cancel current rating!" )**
142
+ ```erb
143
+ Speed : <%= rating_for @car, "speed", :cancel_hint => "Cancel this rating!" %>
144
+ ```
145
+ 8- To change the image of the cancel on button use
146
+ ```erb
147
+ Speed : <%= rating_for @car, "speed", :cancel_on => "cancel-on2.png" %>
148
+ ```
149
+ 9- To change the image of the cancel off use
150
+ ```erb
151
+ Speed : <%= rating_for @car, "speed", :cancel_off => "cancel-off2.png" %>
152
+ ```
153
+ ### Other Helpers
154
+
155
+ You can use the *rating_for_user* helper method to show the star rating for the user.
156
+
157
+ ```erb
158
+ Speed : <%= rating_for_user @car, current_user, "speed", :star => 10 %>
159
+ ```
160
+
161
+ And you can use the *imdb_style_rating_for* to show a similar to IMDB rating style.
162
+
163
+ ```erb
164
+ Speed : <%= imdb_style_rating_for @car, current_user %>
165
+ ```
166
+
167
+ ## Feedback
168
+ If you find bugs please open a ticket at [https://github.com/wazery/ratyrate/issues](https://github.com/wazery/ratyrate/issues)
169
+
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ desc "Bundle the gem"
4
+ task :bundle do
5
+ sh('bundle install')
6
+ sh 'gem build *.gemspec'
7
+ sh 'gem install *.gem'
8
+ sh 'rm *.gem'
9
+ end
10
+
11
+ task(:default).clear
12
+ task :default => :bundle
File without changes
@@ -0,0 +1,56 @@
1
+ require 'rails/generators/migration'
2
+ require 'rails/generators/active_record'
3
+ class RatyrateGenerator < ActiveRecord::Generators::Base
4
+ include Rails::Generators::Migration
5
+
6
+ source_root File.expand_path('../templates', __FILE__)
7
+
8
+ desc "copying jquery.raty files to assets directory ..."
9
+ def copying
10
+ copy_file 'jquery.raty.js', 'app/assets/javascripts/jquery.raty.js'
11
+ copy_file 'star-on.png', 'app/assets/images/star-on.png'
12
+ copy_file 'star-off.png', 'app/assets/images/star-off.png'
13
+ copy_file 'star-half.png', 'app/assets/images/star-half.png'
14
+ copy_file 'mid-star.png', 'app/assets/images/mid-star.png'
15
+ copy_file 'big-star.png', 'app/assets/images/big-star.png'
16
+ copy_file 'cancel-on.png', 'app/assets/images/cancel-on.png'
17
+ copy_file 'cancel-off.png', 'app/assets/images/cancel-off.png'
18
+ copy_file 'ratyrate.js.erb', 'app/assets/javascripts/ratyrate.js.erb'
19
+ copy_file 'rater_controller.rb', 'app/controllers/rater_controller.rb'
20
+ end
21
+
22
+ desc "model is creating..."
23
+ def create_model
24
+ model_file = File.join('app/models', "#{file_path}.rb")
25
+ raise "User model (#{model_file}) must exits." unless File.exists?(model_file)
26
+ class_collisions 'Rate'
27
+ template 'model.rb', File.join('app/models', "rate.rb")
28
+ template 'cache_model.rb', File.join('app/models', "rating_cache.rb")
29
+ template 'average_cache_model.rb', File.join('app/models', "average_cache.rb")
30
+ template 'overall_average_model.rb', File.join('app/models', "overall_average.rb")
31
+ end
32
+
33
+ def add_rate_path_to_route
34
+ route "post '/rate' => 'rater#create', :as => 'rate'"
35
+ end
36
+
37
+ desc "cacheable rating average migration is creating ..."
38
+ def create_cacheable_migration
39
+ migration_template "cache_migration.rb", "db/migrate/create_rating_caches.rb"
40
+ end
41
+
42
+ desc "migration is creating ..."
43
+ def create_ratyrate_migration
44
+ migration_template "migration.rb", "db/migrate/create_rates.rb"
45
+ end
46
+
47
+ desc "average caches migration is creating ..."
48
+ def create_average_caches_migration
49
+ migration_template "average_cache_migration.rb", "db/migrate/create_average_caches.rb"
50
+ end
51
+
52
+ desc "overall averages migration is creating ..."
53
+ def create_overall_averages_migration
54
+ migration_template "overall_average_migration.rb", "db/migrate/create_overall_averages.rb"
55
+ end
56
+ end
@@ -0,0 +1,17 @@
1
+ class CreateAverageCaches < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table :average_caches do |t|
5
+ t.belongs_to :rater
6
+ t.belongs_to :rateable, :polymorphic => true
7
+ t.float :avg, :null => false
8
+ t.timestamps
9
+ end
10
+ end
11
+
12
+ def self.down
13
+ drop_table :average_caches
14
+ end
15
+
16
+ end
17
+
@@ -0,0 +1,4 @@
1
+ class AverageCache < ActiveRecord::Base
2
+ belongs_to :rater, :class_name => "<%= file_name.classify %>"
3
+ belongs_to :rateable, :polymorphic => true
4
+ end
@@ -0,0 +1,19 @@
1
+ class CreateRatingCaches < ActiveRecord::Migration
2
+
3
+ def self.up
4
+ create_table :rating_caches do |t|
5
+ t.belongs_to :cacheable, :polymorphic => true
6
+ t.float :avg, :null => false
7
+ t.integer :qty, :null => false
8
+ t.string :dimension
9
+ t.timestamps
10
+ end
11
+
12
+ add_index :rating_caches, [:cacheable_id, :cacheable_type]
13
+ end
14
+
15
+ def self.down
16
+ drop_table :rating_caches
17
+ end
18
+
19
+ end
@@ -0,0 +1,3 @@
1
+ class RatingCache < ActiveRecord::Base
2
+ belongs_to :cacheable, :polymorphic => true
3
+ end