spree_reviews 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +43 -0
- data/Rakefile +120 -0
- data/TODO +8 -0
- data/app/controllers/admin/feedback_reviews_controller.rb +16 -0
- data/app/controllers/admin/review_settings_controller.rb +13 -0
- data/app/controllers/admin/reviews_controller.rb +36 -0
- data/app/controllers/feedback_reviews_controller.rb +17 -0
- data/app/controllers/reviews_controller.rb +30 -0
- data/app/helpers/admin/feedback_reviews_helper.rb +2 -0
- data/app/helpers/feedback_reviews_helper.rb +2 -0
- data/app/helpers/reviews_helper.rb +17 -0
- data/app/models/feedback_review.rb +10 -0
- data/app/models/product_decorator.rb +14 -0
- data/app/models/rating.rb +20 -0
- data/app/models/review.rb +20 -0
- data/app/models/reviews_configuration.rb +7 -0
- data/app/views/admin/feedback_reviews/index.html.erb +21 -0
- data/app/views/admin/review_settings/edit.html.erb +18 -0
- data/app/views/admin/review_settings/show.html.erb +18 -0
- data/app/views/admin/reviews/_form.html.erb +10 -0
- data/app/views/admin/reviews/edit.html.erb +17 -0
- data/app/views/admin/reviews/index.html.erb +45 -0
- data/app/views/feedback_reviews/_form.html.erb +14 -0
- data/app/views/feedback_reviews/_summary.html.erb +6 -0
- data/app/views/feedback_reviews/create.js.erb +7 -0
- data/app/views/reviews/_fine_print.html.erb +7 -0
- data/app/views/reviews/_stars.html.erb +21 -0
- data/app/views/reviews/_stars0.html.erb +1 -0
- data/app/views/reviews/_stars1.html.erb +1 -0
- data/app/views/reviews/_stars2.html.erb +1 -0
- data/app/views/reviews/_stars3.html.erb +1 -0
- data/app/views/reviews/_stars4.html.erb +1 -0
- data/app/views/reviews/_stars5.html.erb +1 -0
- data/app/views/reviews/index.html.erb +2 -0
- data/app/views/reviews/new.html.erb +47 -0
- data/app/views/reviews/submissionguidelines.html.erb +6 -0
- data/app/views/reviews/terms.html.erb +6 -0
- data/app/views/shared/_rating.html.erb +16 -0
- data/app/views/shared/_review.html.erb +14 -0
- data/app/views/shared/_review_summary.html.erb +13 -0
- data/app/views/shared/_reviews.html.erb +9 -0
- data/app/views/shared/_shortrating.html.erb +11 -0
- data/config/locales/de.yml +40 -0
- data/config/locales/en-GB.yml +23 -0
- data/config/locales/en.yml +53 -0
- data/config/locales/fr-FR.yml +19 -0
- data/config/locales/ru.yml +47 -0
- data/config/routes.rb +22 -0
- data/db/migrate/20081020220700_create_ratings.rb +14 -0
- data/db/migrate/20081020220724_create_reviews.rb +18 -0
- data/db/migrate/20101222083309_create_feedback_reviews.rb +17 -0
- data/db/sample/ratings.yml +16 -0
- data/db/sample/reviews.yml +59 -0
- data/lib/spree/reviews/config.rb +11 -0
- data/lib/spree_reviews.rb +17 -0
- data/lib/spree_reviews_hook.rb +17 -0
- data/lib/tasks/reviews_extension_tasks.rake +25 -0
- data/public/images/delete.gif +0 -0
- data/public/images/star.gif +0 -0
- data/public/javascripts/jquery.rating.js +11 -0
- data/public/stylesheets/reviews.css +44 -0
- data/spec/controllers/reviews_controller_spec.rb +15 -0
- data/spec/helpers/reviews_helper_spec.rb +11 -0
- data/spec/models/ratings_spec.rb +11 -0
- data/spec/models/reviews_spec.rb +11 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +37 -0
- data/spec/views/reviews/submit_view_spec.rb +12 -0
- data/spree_reviews.gemspec +22 -0
- metadata +145 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
fr-FR:
|
2
|
+
write_your_own_review: "Ecrivez un commentaire"
|
3
|
+
review_management: "Gestion des commentaires"
|
4
|
+
review_management_description: "Gestion des commentaires envoyés par les utilisateurs"
|
5
|
+
back_reviews: "Revenir aux commentaires"
|
6
|
+
are_you_sure_review: "Êtes-vous sûr de vouloir supprimer ce commentaire ?"
|
7
|
+
info_approve_review: "Commentaire approuvé"
|
8
|
+
error_approve_review: "Erreur lors de la validation du commentaire"
|
9
|
+
approve: "Approuvé"
|
10
|
+
leave_us_a_review: "Donnez votre avis sur "
|
11
|
+
review_successfully_sumbitted: "Avis soumis à modération"
|
12
|
+
rating: "Note"
|
13
|
+
submit_your_review: "Valider votre commentaire"
|
14
|
+
reviews:
|
15
|
+
review_settings: Review Settings
|
16
|
+
manage_review_settings: Control the display of reviews
|
17
|
+
preview_size: Size of the review snippets
|
18
|
+
include_unapproved: Include unapproved reviews in listings
|
19
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
ru:
|
2
|
+
write_your_own_review: Оставьте свой отзыв
|
3
|
+
review_management: Управление отзывами
|
4
|
+
review_management_description: Управляйте отзывами покупателей
|
5
|
+
back_reviews: Назад к отзывам
|
6
|
+
are_you_sure_review: Вы уверены, что хотите удалить отзыв?
|
7
|
+
info_approve_review: Отзыв одобрен
|
8
|
+
error_approve_review: Ошибка при одобрении отзыва
|
9
|
+
approve: Одобрить
|
10
|
+
leave_us_a_review_for: Пожалуйста, оставьте отзыв и оценку для
|
11
|
+
review_successfully_submitted: Ваш отзыв был успешно отправлен
|
12
|
+
rating: Оценка
|
13
|
+
submit_your_review: Оставить отзыв
|
14
|
+
review_content: Содержание
|
15
|
+
review_title: Заголовок
|
16
|
+
reviews:
|
17
|
+
review_settings: Настройки отзывов покупателей
|
18
|
+
manage_review_settings: Control the display of reviews
|
19
|
+
preview_size: Size of the review snippets
|
20
|
+
include_unapproved: Включать неодобренные пока отзывы в список
|
21
|
+
your_name: Ваше имя
|
22
|
+
your_location: Город
|
23
|
+
average_customer_rating: Average rating
|
24
|
+
the_fine_print: The fine print
|
25
|
+
terms_text: All opinions must comply with our terms and conditions
|
26
|
+
approved_text: Unlocked comments will be published within 1-2 business days.
|
27
|
+
guideline_text: We reserve the right not to post opinions unrelated to your product
|
28
|
+
"terms and conditions": Terms & Conditions
|
29
|
+
"review guidelines": Review Guidelines
|
30
|
+
date_: Date
|
31
|
+
for: for
|
32
|
+
Unapproved_reviews: Unapproved
|
33
|
+
Approved_reviews: Approved
|
34
|
+
from: from
|
35
|
+
by: by
|
36
|
+
submitted_on: Submitted on
|
37
|
+
based_upon: "на основе"
|
38
|
+
review:
|
39
|
+
zero: "0 озывов"
|
40
|
+
one: "1 отзыв"
|
41
|
+
few: "%{count} отзыва"
|
42
|
+
other: "%{count} отзывов"
|
43
|
+
|
44
|
+
feedback: Feedback
|
45
|
+
stars: Stars
|
46
|
+
feedback_review_for: "Review: '%{review}'"
|
47
|
+
|
data/config/routes.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
namespace :admin do
|
3
|
+
resources :feedback_reviews
|
4
|
+
resources :reviews do
|
5
|
+
member do
|
6
|
+
get :approve
|
7
|
+
end
|
8
|
+
resources :feedback_reviews
|
9
|
+
end
|
10
|
+
resource :review_settings
|
11
|
+
end
|
12
|
+
|
13
|
+
resources :products do
|
14
|
+
resources :reviews do
|
15
|
+
collection do
|
16
|
+
get :terms
|
17
|
+
get "submissionguidelines"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
match "/reviews/:review_id/feedback(.:format)" => "feedback_reviews#create", :via => :post, :as => "feedback_review"
|
22
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class CreateReviews < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :reviews do |t|
|
4
|
+
t.integer :product_id
|
5
|
+
t.string :name
|
6
|
+
t.string :location
|
7
|
+
t.integer :rating
|
8
|
+
t.text :title
|
9
|
+
t.text :review
|
10
|
+
t.boolean :approved, :default => false
|
11
|
+
t.timestamps
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.down
|
16
|
+
drop_table :reviews
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateFeedbackReviews < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :feedback_reviews do |t|
|
4
|
+
t.integer :user_id
|
5
|
+
t.integer :review_id, :null => false
|
6
|
+
t.integer :rating, :default => 0
|
7
|
+
t.text :comment
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
add_index :feedback_reviews, :review_id
|
11
|
+
add_index :feedback_reviews, :user_id
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.down
|
15
|
+
drop_table :feedback_reviews
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
<%
|
2
|
+
require 'faker'
|
3
|
+
%>
|
4
|
+
r1:
|
5
|
+
product: ror_tote
|
6
|
+
name: <%= Faker::Name.first_name %> <%= Faker::Name.last_name %>
|
7
|
+
location: here
|
8
|
+
rating: 4
|
9
|
+
title: "more uses for this item"
|
10
|
+
review: <%= Faker::Lorem.paragraph %>
|
11
|
+
approved: true
|
12
|
+
r2:
|
13
|
+
product: ror_tote
|
14
|
+
name: <%= Faker::Name.first_name %> <%= Faker::Name.last_name %>
|
15
|
+
location: here
|
16
|
+
rating: 3
|
17
|
+
title: "further comments"
|
18
|
+
review: <%= Faker::Lorem.paragraph %>
|
19
|
+
approved: false
|
20
|
+
r3:
|
21
|
+
product: ror_ringer
|
22
|
+
name: <%= Faker::Name.first_name %> <%= Faker::Name.last_name %>
|
23
|
+
location: here
|
24
|
+
rating: 4
|
25
|
+
title: "essential wear"
|
26
|
+
review: <%= Faker::Lorem.paragraph %>
|
27
|
+
approved: false
|
28
|
+
r4:
|
29
|
+
product: apache_baseball_jersey
|
30
|
+
name: <%= Faker::Name.first_name %> <%= Faker::Name.last_name %>
|
31
|
+
location: here
|
32
|
+
rating: 2
|
33
|
+
title: "not impressed"
|
34
|
+
review: <%= Faker::Lorem.paragraph %>
|
35
|
+
approved: true
|
36
|
+
r5:
|
37
|
+
product: ror_ringer
|
38
|
+
name: <%= Faker::Name.first_name %> <%= Faker::Name.last_name %>
|
39
|
+
location: an office
|
40
|
+
rating: 5
|
41
|
+
title: "I have one for every day of the week"
|
42
|
+
review: <%= Faker::Lorem.paragraph %>
|
43
|
+
approved: true
|
44
|
+
r6:
|
45
|
+
product: ror_ringer
|
46
|
+
name: <%= Faker::Name.first_name %> <%= Faker::Name.last_name %>
|
47
|
+
location: here
|
48
|
+
rating: 4
|
49
|
+
title: "cooler than my toga"
|
50
|
+
review: <%= Faker::Lorem.paragraph %>
|
51
|
+
approved: true
|
52
|
+
r7:
|
53
|
+
product: ror_ringer
|
54
|
+
name: <%= Faker::Name.first_name %> <%= Faker::Name.last_name %>
|
55
|
+
location: emerald city
|
56
|
+
rating: 2
|
57
|
+
title: "my other half didn't like it"
|
58
|
+
review: <%= Faker::Lorem.paragraph %>
|
59
|
+
approved: false
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Spree::Reviews
|
2
|
+
class Config < Spree::Config
|
3
|
+
class << self
|
4
|
+
def instance
|
5
|
+
return nil unless ActiveRecord::Base.connection.tables.include?('configurations')
|
6
|
+
ReviewsConfiguration.find_or_create_by_name("Reviews configuration")
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spree_core'
|
2
|
+
require 'spree_reviews_hook'
|
3
|
+
|
4
|
+
module SpreeReviews
|
5
|
+
class Engine < Rails::Engine
|
6
|
+
|
7
|
+
config.autoload_paths += %W(#{config.root}/lib)
|
8
|
+
|
9
|
+
def self.activate
|
10
|
+
Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
|
11
|
+
Rails.env.production? ? require(c) : load(c)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
config.to_prepare &method(:activate).to_proc
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class SpreeReviewsHooks < Spree::ThemeSupport::HookListener
|
2
|
+
insert_after :product_properties, 'shared/reviews'
|
3
|
+
insert_after :inside_head do
|
4
|
+
%(<%= stylesheet_link_tag('reviews.css') %>)
|
5
|
+
end
|
6
|
+
|
7
|
+
insert_after :admin_product_sub_tabs do
|
8
|
+
%(
|
9
|
+
<%= tab(:reviews, :label => 'review_management') %>
|
10
|
+
)
|
11
|
+
end
|
12
|
+
|
13
|
+
insert_after :admin_configurations_menu do
|
14
|
+
%(<%= configurations_menu_item(t('reviews.review_settings'), admin_review_settings_path, t('reviews.manage_review_settings')) %>)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
namespace :spree_reviews do
|
2
|
+
desc "Copies all migrations and assets (NOTE: This will be obsolete with Rails 3.1)"
|
3
|
+
task :install do
|
4
|
+
Rake::Task['spree_reviews:install:migrations'].invoke
|
5
|
+
Rake::Task['spree_reviews:install:assets'].invoke
|
6
|
+
end
|
7
|
+
|
8
|
+
namespace :install do
|
9
|
+
desc "Copies all migrations (NOTE: This will be obsolete with Rails 3.1)"
|
10
|
+
task :migrations do
|
11
|
+
source = File.join(File.dirname(__FILE__), '..', '..', 'db')
|
12
|
+
destination = File.join(Rails.root, 'db')
|
13
|
+
puts "INFO: Mirroring assets from #{source} to #{destination}"
|
14
|
+
Spree::FileUtilz.mirror_files(source, destination)
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Copies all assets (NOTE: This will be obsolete with Rails 3.1)"
|
18
|
+
task :assets do
|
19
|
+
source = File.join(File.dirname(__FILE__), '..', '..', 'public')
|
20
|
+
destination = File.join(Rails.root, 'public')
|
21
|
+
puts "INFO: Mirroring assets from #{source} to #{destination}"
|
22
|
+
Spree::FileUtilz.mirror_files(source, destination)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
Binary file
|
Binary file
|
@@ -0,0 +1,11 @@
|
|
1
|
+
/*
|
2
|
+
### jQuery Star Rating Plugin v3.12 - 2009-04-16 ###
|
3
|
+
* Home: http://www.fyneworks.com/jquery/star-rating/
|
4
|
+
* Code: http://code.google.com/p/jquery-star-rating-plugin/
|
5
|
+
*
|
6
|
+
* Dual licensed under the MIT and GPL licenses:
|
7
|
+
* http://www.opensource.org/licenses/mit-license.php
|
8
|
+
* http://www.gnu.org/licenses/gpl.html
|
9
|
+
###
|
10
|
+
*/
|
11
|
+
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';5(1O.1t)(7($){5($.29.1x)1I{1m.23("1u",P,z)}1F(e){}$.p.4=7(j){5(3.K==0)l 3;5(E J[0]==\'1j\'){5(3.K>1){8 k=J;l 3.W(7(){$.p.4.H($(3),k)})};$.p.4[J[0]].H(3,$.1T(J).21(1)||[]);l 3};8 j=$.10({},$.p.4.18,j||{});3.1v(\'.9-4-1l\').n(\'9-4-1l\').W(7(){8 a=(3.1J||\'1K-4\').1L(/\\[|\\]+/g,"1S");8 b=$(3.1U||1m.1X);8 c=$(3);8 d=b.6(\'4\')||{y:0};8 e=d[a];8 f;5(e)f=e.6(\'4\');5(e&&f){f.y++}B{f=$.10({},j||{},($.1k?c.1k():($.1H?c.6():s))||{},{y:0,C:[],u:[]});f.t=d.y++;e=$(\'<1M 12="9-4-1Q"/>\');c.1R(e);e.n(\'4-T-13-S\');5(c.R(\'Q\'))f.m=z;e.1a(f.A=$(\'<O 12="4-A"><a 14="\'+f.A+\'">\'+f.15+\'</a></O>\').1d(7(){$(3).4(\'N\');$(3).n(\'9-4-M\')}).1b(7(){$(3).4(\'v\');$(3).D(\'9-4-M\')}).1h(7(){$(3).4(\'w\')}).6(\'4\',f))};8 g=$(\'<O 12="9-4 q-\'+f.t+\'"><a 14="\'+(3.14||3.1p)+\'">\'+3.1p+\'</a></O>\');e.1a(g);5(3.U)g.R(\'U\',3.U);5(3.17)g.n(3.17);5(f.1V)f.x=2;5(E f.x==\'19\'&&f.x>0){8 h=($.p.11?g.11():0)||f.1c;8 i=(f.y%f.x),V=1y.1z(h/f.x);g.11(V).1A(\'a\').1B({\'1C-1D\':\'-\'+(i*V)+\'1E\'})};5(f.m)g.n(\'9-4-1e\');B g.n(\'9-4-1G\').1d(7(){$(3).4(\'1f\');$(3).4(\'G\')}).1b(7(){$(3).4(\'v\');$(3).4(\'F\')}).1h(7(){$(3).4(\'w\')});5(3.L)f.o=g;c.1i();c.1N(7(){$(3).4(\'w\')});g.6(\'4.r\',c.6(\'4.9\',g));f.C[f.C.K]=g[0];f.u[f.u.K]=c[0];f.q=d[a]=e;f.1P=b;c.6(\'4\',f);e.6(\'4\',f);g.6(\'4\',f);b.6(\'4\',d)});$(\'.4-T-13-S\').4(\'v\').D(\'4-T-13-S\');l 3};$.10($.p.4,{G:7(){8 a=3.6(\'4\');5(!a)l 3;5(!a.G)l 3;8 b=$(3).6(\'4.r\')||$(3.Z==\'X\'?3:s);5(a.G)a.G.H(b[0],[b.I(),$(\'a\',b.6(\'4.9\'))[0]])},F:7(){8 a=3.6(\'4\');5(!a)l 3;5(!a.F)l 3;8 b=$(3).6(\'4.r\')||$(3.Z==\'X\'?3:s);5(a.F)a.F.H(b[0],[b.I(),$(\'a\',b.6(\'4.9\'))[0]])},1f:7(){8 a=3.6(\'4\');5(!a)l 3;5(a.m)l;3.4(\'N\');3.1n().1o().Y(\'.q-\'+a.t).n(\'9-4-M\')},N:7(){8 a=3.6(\'4\');5(!a)l 3;5(a.m)l;a.q.1W().Y(\'.q-\'+a.t).D(\'9-4-1q\').D(\'9-4-M\')},v:7(){8 a=3.6(\'4\');5(!a)l 3;3.4(\'N\');5(a.o){a.o.6(\'4.r\').R(\'L\',\'L\');a.o.1n().1o().Y(\'.q-\'+a.t).n(\'9-4-1q\')}B $(a.u).1r(\'L\');a.A[a.m||a.1Y?\'1i\':\'1Z\']();3.20()[a.m?\'n\':\'D\'](\'9-4-1e\')},w:7(a){8 b=3.6(\'4\');5(!b)l 3;5(b.m)l;b.o=s;5(E a!=\'1s\'){5(E a==\'19\')l $(b.C[a]).4(\'w\');5(E a==\'1j\')$.W(b.C,7(){5($(3).6(\'4.r\').I()==a)$(3).4(\'w\')})}B b.o=3[0].Z==\'X\'?3.6(\'4.9\'):(3.22(\'.q-\'+b.t)?3:s);3.6(\'4\',b);3.4(\'v\');8 c=$(b.o?b.o.6(\'4.r\'):s);5(b.1g)b.1g.H(c[0],[c.I(),$(\'a\',b.o)[0]])},m:7(a,b){8 c=3.6(\'4\');5(!c)l 3;c.m=a||a==1s?z:P;5(b)$(c.u).R("Q","Q");B $(c.u).1r("Q");3.6(\'4\',c);3.4(\'v\')},24:7(){3.4(\'m\',z,z)},25:7(){3.4(\'m\',P,P)}});$.p.4.18={A:\'26 27\',15:\'\',x:0,1c:16};$(7(){$(\'r[28=1w].9\').4()})})(1t);',62,134,'|||this|rating|if|data|function|var|star||||||||||||return|readOnly|addClass|current|fn|rater|input|null|serial|inputs|draw|select|split|count|true|cancel|else|stars|removeClass|typeof|blur|focus|apply|val|arguments|length|checked|hover|drain|div|false|disabled|attr|drawn|to|id|spw|each|INPUT|filter|tagName|extend|width|class|be|title|cancelValue||className|options|number|append|mouseout|starWidth|mouseover|readonly|fill|callback|click|hide|string|metadata|applied|document|prevAll|andSelf|value|on|removeAttr|undefined|jQuery|BackgroundImageCache|not|radio|msie|Math|floor|find|css|margin|left|px|catch|live|meta|try|name|unnamed|replace|span|change|window|context|control|before|_|makeArray|form|half|children|body|required|show|siblings|slice|is|execCommand|disable|enable|Cancel|Rating|type|browser'.split('|'),0,{}))
|
@@ -0,0 +1,44 @@
|
|
1
|
+
#reviews div.header {
|
2
|
+
font-size: 12pt;
|
3
|
+
font-weight: bold;
|
4
|
+
border-bottom: 1px #2222aa dashed;
|
5
|
+
margin-top: 10px;
|
6
|
+
margin-bottom: 10px;
|
7
|
+
}
|
8
|
+
#reviews div.review {
|
9
|
+
border-bottom: 1px #2222aa dashed;
|
10
|
+
margin-bottom: 10px;
|
11
|
+
}
|
12
|
+
#reviews div.review span.title {
|
13
|
+
font-size: 11pt;
|
14
|
+
font-weight: bold;
|
15
|
+
}
|
16
|
+
#reviews div.review span.attribution {
|
17
|
+
font-size: 8pt;
|
18
|
+
}
|
19
|
+
|
20
|
+
.lit {
|
21
|
+
background-color: #aaaaaa;
|
22
|
+
color: #0000bb;
|
23
|
+
margin-right: 1px;
|
24
|
+
padding-left: 1px;
|
25
|
+
}
|
26
|
+
.unlit {
|
27
|
+
background-color: #aaaaaa;
|
28
|
+
color: #000000;
|
29
|
+
margin-right: 1px;
|
30
|
+
padding-left: 1px;
|
31
|
+
}
|
32
|
+
|
33
|
+
/* jQuery.Rating Plugin CSS - http://www.fyneworks.com/jquery/star-rating/ */
|
34
|
+
div.rating-cancel,div.star-rating{float:left;width:17px;height:15px;text-indent:-999em;cursor:pointer;display:block;background:transparent;overflow:hidden}
|
35
|
+
div.rating-cancel,div.rating-cancel a{background: transparent url('/images/delete.gif') no-repeat scroll 0 -16px;}
|
36
|
+
div.star-rating,div.star-rating a{background:url('/images/star.gif') no-repeat 0 0px}
|
37
|
+
div.rating-cancel a,div.star-rating a{display:block;width:16px;height:100%;background-position:0 0px;border:0}
|
38
|
+
div.star-rating-on a{background-position:0 -16px!important}
|
39
|
+
div.star-rating-hover a{background-position:0 -32px}
|
40
|
+
/* Read Only CSS */
|
41
|
+
div.star-rating-readonly a{cursor:default !important}
|
42
|
+
/* Partial Star CSS */
|
43
|
+
div.star-rating{background:transparent!important;overflow:hidden!important}
|
44
|
+
/* END jQuery.Rating Plugin CSS */
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe ReviewsController do
|
4
|
+
|
5
|
+
#Delete these examples and add some real ones
|
6
|
+
it "should use ReviewsController" do
|
7
|
+
controller.should be_an_instance_of(ReviewsController)
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
it "GET 'submit' should be successful" do
|
12
|
+
get 'submit'
|
13
|
+
response.should be_success
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe ReviewsHelper do
|
4
|
+
|
5
|
+
#Delete this example and add some real ones or delete this file
|
6
|
+
it "should include the ReviewsHelper" do
|
7
|
+
included_modules = self.metaclass.send :included_modules
|
8
|
+
included_modules.should include(ReviewsHelper)
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
unless defined? SPREE_ROOT
|
2
|
+
ENV["RAILS_ENV"] = "test"
|
3
|
+
case
|
4
|
+
when ENV["SPREE_ENV_FILE"]
|
5
|
+
require ENV["SPREE_ENV_FILE"]
|
6
|
+
when File.dirname(__FILE__) =~ %r{vendor/SPREE/vendor/extensions}
|
7
|
+
require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../../")}/config/environment"
|
8
|
+
else
|
9
|
+
require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../")}/config/environment"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
require "#{SPREE_ROOT}/spec/spec_helper"
|
13
|
+
|
14
|
+
if File.directory?(File.dirname(__FILE__) + "/scenarios")
|
15
|
+
Scenario.load_paths.unshift File.dirname(__FILE__) + "/scenarios"
|
16
|
+
end
|
17
|
+
if File.directory?(File.dirname(__FILE__) + "/matchers")
|
18
|
+
Dir[File.dirname(__FILE__) + "/matchers/*.rb"].each {|file| require file }
|
19
|
+
end
|
20
|
+
|
21
|
+
Spec::Runner.configure do |config|
|
22
|
+
# config.use_transactional_fixtures = true
|
23
|
+
# config.use_instantiated_fixtures = false
|
24
|
+
# config.fixture_path = RAILS_ROOT + '/spec/fixtures'
|
25
|
+
|
26
|
+
# You can declare fixtures for each behaviour like this:
|
27
|
+
# describe "...." do
|
28
|
+
# fixtures :table_a, :table_b
|
29
|
+
#
|
30
|
+
# Alternatively, if you prefer to declare them only once, you can
|
31
|
+
# do so here, like so ...
|
32
|
+
#
|
33
|
+
# config.global_fixtures = :table_a, :table_b
|
34
|
+
#
|
35
|
+
# If you declare global fixtures, be aware that they will be declared
|
36
|
+
# for all of your examples, even those that don't use them.
|
37
|
+
end
|