solidus_reviews 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +322 -0
  3. data/.travis.yml +27 -14
  4. data/Gemfile +23 -8
  5. data/LICENSE.md +2 -2
  6. data/README.md +9 -11
  7. data/Rakefile +2 -0
  8. data/app/controllers/spree/admin/feedback_reviews_controller.rb +3 -1
  9. data/app/controllers/spree/admin/review_settings_controller.rb +3 -1
  10. data/app/controllers/spree/admin/reviews_controller.rb +9 -6
  11. data/app/controllers/spree/feedback_reviews_controller.rb +25 -19
  12. data/app/controllers/spree/products_controller_decorator.rb +2 -0
  13. data/app/controllers/spree/reviews_controller.rb +11 -7
  14. data/app/helpers/spree/api/api_helpers_decorator.rb +12 -0
  15. data/app/helpers/spree/reviews_helper.rb +15 -5
  16. data/app/models/spree/feedback_review.rb +5 -4
  17. data/app/models/spree/product_decorator.rb +5 -4
  18. data/app/models/spree/review.rb +28 -10
  19. data/app/models/spree/reviews_ability.rb +17 -3
  20. data/app/models/spree/reviews_configuration.rb +16 -8
  21. data/app/models/spree/user_decorator.rb +3 -0
  22. data/app/overrides/add_reviews_after_product_properties.rb +7 -5
  23. data/app/overrides/add_reviews_tab_to_admin.rb +12 -4
  24. data/app/overrides/add_reviews_to_admin_configuration_sidebar.rb +13 -5
  25. data/app/views/spree/admin/feedback_reviews/index.html.erb +9 -9
  26. data/app/views/spree/admin/review_settings/edit.html.erb +64 -35
  27. data/app/views/spree/admin/reviews/_form.html.erb +26 -5
  28. data/app/views/spree/admin/reviews/edit.html.erb +2 -2
  29. data/app/views/spree/admin/reviews/index.html.erb +100 -88
  30. data/app/views/spree/api/reviews/_review.json.jbuilder +8 -0
  31. data/app/views/spree/api/reviews/index.json.jbuilder +6 -0
  32. data/app/views/spree/api/reviews/show.json.jbuilder +3 -0
  33. data/app/views/spree/feedback_reviews/_form.html.erb +5 -5
  34. data/app/views/spree/feedback_reviews/_summary.html.erb +3 -3
  35. data/app/views/spree/feedback_reviews/create.js.erb +2 -2
  36. data/app/views/spree/reviews/_form.html.erb +15 -10
  37. data/app/views/spree/reviews/new.html.erb +2 -2
  38. data/app/views/spree/shared/_rating.html.erb +3 -3
  39. data/app/views/spree/shared/_review.html.erb +29 -19
  40. data/app/views/spree/shared/_review_summary.html.erb +3 -3
  41. data/app/views/spree/shared/_reviews.html.erb +6 -6
  42. data/app/views/spree/shared/_shortrating.html.erb +2 -2
  43. data/bin/rails +4 -2
  44. data/config/initializers/constants.rb +2 -0
  45. data/config/initializers/load_preferences.rb +2 -0
  46. data/config/locales/de-CH.yml +14 -1
  47. data/config/locales/de.yml +14 -1
  48. data/config/locales/en-GB.yml +14 -2
  49. data/config/locales/en.yml +14 -1
  50. data/config/locales/es.yml +14 -2
  51. data/config/locales/fr.yml +14 -2
  52. data/config/locales/it.yml +79 -0
  53. data/config/locales/pl.yml +14 -2
  54. data/config/locales/pt-BR.yml +14 -2
  55. data/config/locales/pt.yml +14 -2
  56. data/config/locales/ro.yml +15 -3
  57. data/config/locales/ru.yml +14 -2
  58. data/config/locales/sv.yml +14 -1
  59. data/config/locales/tr.yml +14 -2
  60. data/config/locales/uk.yml +14 -1
  61. data/config/locales/zh-CN.yml +14 -1
  62. data/config/locales/zh-TW.yml +14 -1
  63. data/config/routes.rb +18 -1
  64. data/db/migrate/20081020220724_create_reviews.rb +4 -2
  65. data/db/migrate/20101222083309_create_feedback_reviews.rb +5 -3
  66. data/db/migrate/20110406083603_add_rating_to_products.rb +7 -5
  67. data/db/migrate/20110606150524_add_user_to_reviews.rb +4 -2
  68. data/db/migrate/20110806093221_add_ip_address_to_reviews.rb +3 -1
  69. data/db/migrate/20120110172331_namespace_tables.rb +3 -1
  70. data/db/migrate/20120123141326_recalculate_ratings.rb +6 -5
  71. data/db/migrate/20120712182514_add_locale_to_reviews.rb +4 -2
  72. data/db/migrate/20120712182627_add_locale_to_feedback_reviews.rb +4 -2
  73. data/db/migrate/20140703200946_add_show_identifier_to_reviews.rb +3 -1
  74. data/db/migrate/20190613165528_add_verified_purchaser_to_reviews.rb +5 -0
  75. data/lib/controllers/spree/api/reviews_controller.rb +111 -0
  76. data/lib/generators/solidus_reviews/install/install_generator.rb +5 -4
  77. data/lib/solidus_reviews.rb +3 -1
  78. data/lib/solidus_reviews/factories.rb +3 -1
  79. data/lib/solidus_reviews/factories/feedback_review_factory.rb +6 -5
  80. data/lib/solidus_reviews/factories/review_factory.rb +19 -9
  81. data/lib/spree_reviews/engine.rb +7 -0
  82. data/solidus_reviews.gemspec +20 -18
  83. data/spec/controllers/admin/feedback_reviews_controller_spec.rb +9 -7
  84. data/spec/controllers/admin/review_settings_controller_spec.rb +18 -16
  85. data/spec/controllers/admin/reviews_controller_spec.rb +18 -16
  86. data/spec/controllers/feedback_reviews_controller_spec.rb +29 -25
  87. data/spec/controllers/products_controller_spec.rb +4 -2
  88. data/spec/controllers/reviews_controller_spec.rb +67 -40
  89. data/spec/controllers/spree/api/reviews_controller_spec.rb +233 -0
  90. data/spec/features/admin_spec.rb +3 -0
  91. data/spec/features/reviews_spec.rb +27 -11
  92. data/spec/helpers/review_helper_spec.rb +3 -2
  93. data/spec/models/feedback_review_spec.rb +19 -17
  94. data/spec/models/product_spec.rb +41 -19
  95. data/spec/models/review_spec.rb +100 -42
  96. data/spec/models/reviews_ability_spec.rb +10 -8
  97. data/spec/models/reviews_configuration_spec.rb +28 -19
  98. data/spec/spec_helper.rb +21 -35
  99. data/vendor/assets/javascripts/jquery.rating.js +389 -376
  100. metadata +108 -59
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ json.reviews(@reviews) do |review|
4
+ json.partial!("spree/api/reviews/review", review: review)
5
+ end
6
+ json.avg_rating(@product&.avg_rating)
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ json.partial!("spree/api/reviews/review", review: @review)
@@ -1,13 +1,13 @@
1
- <%= render 'spree/feedback_reviews/summary', :review => review %>
2
- <%= form_for((@feedback_review ||= review.feedback_reviews.build), :url => feedback_reviews_path(review), :method => :post, :remote => true) do |f| %>
1
+ <%= render 'spree/feedback_reviews/summary', review: review %>
2
+ <%= form_for((@feedback_review ||= review.feedback_reviews.build), url: feedback_reviews_path(review), method: :post, remote: true) do |f| %>
3
3
  <% unless @feedback_review.errors.empty? %>
4
4
  <span class="error"><%= @feedback_review.errors[:rating] %></span>
5
5
  <br />
6
6
  <% end %>
7
- <%= Spree.t(:was_this_review_helpful) %>
7
+ <%= I18n.t("spree.was_this_review_helpful") %>
8
8
  <% for i in 1..NB_STARS %>
9
9
  <%= radio_button_tag "feedback_review[rating]",
10
- Spree.t('star', :count => i), false, :class => "star" %>
10
+ I18n.t("spree.star", count: i), false, class: "star" %>
11
11
  <% end %>
12
- <button class="feedback-review"><span><%= Spree.t(:say_yes) %></span></button>
12
+ <button class="feedback-review"><span><%= I18n.t("spree.say_yes") %></span></button>
13
13
  <% end %>
@@ -1,6 +1,6 @@
1
1
  <p>
2
- <%= Spree.t('voice', :count => review.feedback_reviews.count) %>.
3
- <span title="<%= pluralize(review.feedback_stars, 'star') %> <%= Spree.t('out_of_5') %>">
4
- <%= render 'spree/reviews/stars', :stars => review.feedback_stars %>
2
+ <%= I18n.t('spree.voice', count: review.feedback_reviews.count) %>.
3
+ <span title="<%= pluralize(review.feedback_stars, 'star') %> <%= I18n.t('spree.out_of_5') %>">
4
+ <%= render 'spree/reviews/stars', stars: review.feedback_stars %>
5
5
  </span> &nbsp;
6
6
  </p>
@@ -1,7 +1,7 @@
1
1
  <% if @feedback_review.valid? %>
2
- $("div#feedback_review_<%= @review.id %>").html("<%= escape_javascript(render('spree/feedback_reviews/summary', :review => @review)) %>");
2
+ $("div#feedback_review_<%= @review.id %>").html("<%= escape_javascript(render('spree/feedback_reviews/summary', review: @review)) %>");
3
3
  <% else %>
4
- $("div#feedback_review_<%= @review.id %>").html("<%= escape_javascript(render('spree/feedback_reviews/form', :review => @review)) %>");
4
+ $("div#feedback_review_<%= @review.id %>").html("<%= escape_javascript(render('spree/feedback_reviews/form', review: @review)) %>");
5
5
 
6
6
  <% end %>
7
7
  $(document).ready(function(){$("div#feedback_review_<%= @review.id %>").find(".star").rating({required:true});});
@@ -1,34 +1,39 @@
1
- <%= form_for review, :url => product_reviews_path(product), :html => {:method => :post} do |f| %>
2
- <%= render "spree/shared/error_messages", :target => review %>
1
+ <%= form_for review, url: product_reviews_path(product), html: { method: :post, multipart: true} do |f| %>
2
+ <%= render "spree/shared/error_messages", target: review %>
3
3
 
4
4
  <p class="review_rating_field">
5
5
  <%= f.label :rating %> <span class="required">*</span><br />
6
- <%= render "spree/reviews/stars", :stars => review.rating, :edit_enabled => true %>
6
+ <%= render "spree/reviews/stars", stars: review.rating, edit_enabled: true %>
7
7
  </p>
8
8
 
9
9
  <p class="review_name_field">
10
- <%= f.label :name %> <span class="required">*</span><br />
11
- <%= f.text_field :name, :maxlength => "255", :size => "50" %>
10
+ <%= f.label :name %><br />
11
+ <%= f.text_field :name, maxlength: "255", size: "50" %>
12
12
  </p>
13
13
 
14
14
  <p class="review_title_field">
15
15
  <%= f.label :title %><br />
16
- <%= f.text_field :title, :maxlength => "255", :size => "50" %>
16
+ <%= f.text_field :title, maxlength: "255", size: "50" %>
17
17
  </p>
18
18
 
19
19
  <p class="review_review_field">
20
- <%= f.label :review %> <span class="required">*</span><br />
21
- <%= f.text_area :review, :wrap => "virtual", :rows => "10", :cols => "50" %>
20
+ <%= f.label :review %><br />
21
+ <%= f.text_area :review, wrap: "virtual", rows: "10", cols: "50" %>
22
+ </p>
23
+
24
+ <p class="review_images_field">
25
+ <%= f.label :images %><br>
26
+ <%= f.file_field :images, :accept => "image/*", multiple: true %>
22
27
  </p>
23
28
 
24
29
  <% if Spree::Reviews::Config[:render_show_identifier_checkbox] %>
25
30
  <p class="review_show_identifier_field">
26
31
  <%= f.label :show_identifier %><br />
27
- <%= f.check_box :show_identifier, :wrap => "virtual", :rows => "10", :cols => "50", :checked => true %>
32
+ <%= f.check_box :show_identifier, wrap: "virtual", rows: "10", cols: "50", checked: true %>
28
33
  </p>
29
34
  <% end %>
30
35
 
31
36
  <p class="review_submit">
32
- <%= f.submit Spree.t(:submit_your_review), :class => "button bg_darkfirst" %>
37
+ <%= f.submit I18n.t("spree.submit_your_review"), class: "button bg_darkfirst" %>
33
38
  </p>
34
39
  <% end %>
@@ -1,3 +1,3 @@
1
- <%= content_tag :h2, Spree.t(:leave_us_a_review_for, :name => @product.name), :class => 'new-review-title' %>
1
+ <%= content_tag :h2, I18n.t("spree.leave_us_a_review_for", name: @product.name), class: 'new-review-title' %>
2
2
 
3
- <%= render 'form', :review => @review, :product => @product %>
3
+ <%= render 'form', review: @review, product: @product %>
@@ -1,13 +1,13 @@
1
1
  <% stars = product.stars %>
2
2
  <% reviews_count = product.reviews_count %>
3
3
  <div class="ratings">
4
- <p><%= Spree.t('average_customer_rating') %>: </p>
4
+ <p><%= I18n.t('spree.average_customer_rating') %>: </p>
5
5
  <p class="ratings-stars">
6
6
  <span title="<%= txt_stars(stars) %>">
7
- <%= render 'spree/reviews/stars', :stars => stars %>
7
+ <%= render 'spree/reviews/stars', stars: stars %>
8
8
  </span>
9
9
  </p>
10
- <p class="ratings-basedupon">(<%= Spree.t('based_upon_review_count', :count => reviews_count) %>)</p>
10
+ <p class="ratings-basedupon">(<%= I18n.t('spree.based_upon_review_count', count: reviews_count) %>)</p>
11
11
  <div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
12
12
  <meta itemprop="ratingValue" content="<%= stars %>" />
13
13
  <meta itemprop="reviewCount" content="<%= reviews_count %>" />
@@ -1,28 +1,38 @@
1
1
  <div class="review" itemprop="reviews" itemscope itemtype="http://schema.org/Review">
2
2
  <span class="reviews-rating" title="<%= txt_stars(review.rating) %>">
3
- <%= render "spree/reviews/stars", :stars => review.rating %>
3
+ <%= render "spree/reviews/stars", stars: review.rating %>
4
4
  </span>
5
- <span itemprop="name"><%= review.title %></span>
6
- <br/>
7
- <span class="attribution"><%= Spree.t(:submitted_on) %> <strong><%= l review.created_at.to_date %></strong></span>
8
- <meta itemprop="datePublished" content="<%= review.created_at.to_date.to_s %>" />
5
+ <% if review.approved? || Spree::Reviews::Config[:display_unapproved_reviews] %>
6
+ <span itemprop="name"><%= review.title %></span>
7
+ <br/>
8
+ <span class="attribution"><%= I18n.t("spree.submitted_on") %> <strong><%= l review.created_at.to_date %></strong></span>
9
+ <meta itemprop="datePublished" content="<%= review.created_at.to_date.to_s %>" />
9
10
 
10
- <meta itemprop="reviewRating" content="<%= review.rating %>" />
11
- <% if review.show_identifier %>
12
- <% if Spree::Reviews::Config[:show_email] && review.user %>
13
- <span itemprop="author"><%= review.user.email %></span>
11
+ <meta itemprop="reviewRating" content="<%= review.rating %>" />
12
+ <% if review.show_identifier %>
13
+ <% if Spree::Reviews::Config[:show_email] && review.user %>
14
+ <span itemprop="author"><%= review.user.email %></span>
15
+ <% else %>
16
+ <span itemprop="author"><%= review.name %></span>
17
+ <% end %>
14
18
  <% else %>
15
- <span itemprop="author"><%= review.name %></span>
19
+ <span itemprop="author"><%= I18n.t("spree.anonymous") %></span>
16
20
  <% end %>
17
- <% else %>
18
- <span itemprop="author"><%= Spree.t(:anonymous) %></span>
19
- <% end %>
20
- <div itemprop="reviewBody">
21
- <%= simple_format(review.review) %>
22
- </div>
23
- <% if Spree::Reviews::Config[:feedback_rating] && (!Spree::Reviews::Config[:require_login] || spree_current_user) %>
24
- <div class="feedback_review" id="feedback_review_<%= review.id %>">
25
- <%= render "spree/feedback_reviews/form", :review => review %>
21
+ <% if Spree::Reviews::Config[:show_verified_purchaser] && review.verified_purchaser? %>
22
+ <div><%= I18n.t("spree.verified_purchaser") %></div>
23
+ <% end %>
24
+ <div itemprop="reviewBody">
25
+ <%= simple_format(review.review) %>
26
26
  </div>
27
+ <% review.images.each do |image| %>
28
+ <div itemprop="image">
29
+ <%= link_to image_tag(image.url(:product)), image.url(:original) %>
30
+ </div>
31
+ <% end %>
32
+ <% if Spree::Reviews::Config[:feedback_rating] && (!Spree::Reviews::Config[:require_login] || spree_current_user) %>
33
+ <div class="feedback_review" id="feedback_review_<%= review.id %>">
34
+ <%= render "spree/feedback_reviews/form", review: review %>
35
+ </div>
36
+ <% end %>
27
37
  <% end %>
28
38
  </div>
@@ -1,9 +1,9 @@
1
1
  <div id="reviews">
2
- <%= render 'spree/shared/rating', :locals => @product, :review => 0 %>
2
+ <%= render 'spree/shared/rating', locals: @product, review: 0 %>
3
3
  <% for review in (Spree::Reviews::Config[:track_locale] ? @product.reviews.localized(I18n.locale) : @product.reviews).default_approval_filter.preview %>
4
- <%= render 'spree/shared/review', :review => review %>
4
+ <%= render 'spree/shared/review', review: review %>
5
5
  <% end %>
6
6
  <% if Spree::Reviews::Config[:feedback_rating] && (!Spree::Reviews::Config[:require_login] || spree_current_user) %>
7
- <%= link_to Spree.t('write_your_own_review'), new_product_review_path(@product), :class => "button" %>
7
+ <%= link_to I18n.t("spree.write_your_own_review"), new_product_review_path(@product), class: "button" %>
8
8
  <% end %>
9
9
  </div>
@@ -1,15 +1,15 @@
1
1
  <div id="reviews">
2
- <h6 class="product-section-title"><%= Spree.t(:reviews) %></h6>
2
+ <h6 class="product-section-title"><%= I18n.t("spree.reviews") %></h6>
3
3
  <% if Spree::Reviews::Config[:include_unapproved_reviews] == false and @product.reviews.approved.count == 0 %>
4
- <p class="reviews-none"><%= Spree.t('no_reviews_available') %></p>
4
+ <p class="reviews-none"><%= I18n.t("spree.no_reviews_available") %></p>
5
5
  <% else %>
6
- <%= render 'spree/shared/rating', :product => @product, :review => 0 %>
6
+ <%= render 'spree/shared/rating', product: @product, review: 0 %>
7
7
  <% for review in (Spree::Reviews::Config[:track_locale] ? @product.reviews.localized(I18n.locale) : @product.reviews).default_approval_filter.preview %>
8
- <%= render 'spree/shared/review', :review => review %>
8
+ <%= render 'spree/shared/review', review: review %>
9
9
  <% end %>
10
10
  <% end %>
11
11
  <% if !Spree::Reviews::Config[:require_login] || spree_current_user %>
12
- <%= link_to Spree.t('write_your_own_review'), new_product_review_path(@product), :class => "button",
13
- :rel => 'nofollow' %>
12
+ <%= link_to I18n.t("spree.write_your_own_review"), new_product_review_path(@product), class: "button",
13
+ rel: 'nofollow' %>
14
14
  <% end %>
15
15
  </div>
@@ -1,9 +1,9 @@
1
1
  <% stars = product.stars %>
2
2
  <% reviews_count = product.reviews_count %>
3
3
  <span style="float:left;" title="<%= txt_stars(stars) %>">
4
- <%= render 'spree/reviews/stars', :stars => stars %>
4
+ <%= render 'spree/reviews/stars', stars: stars %>
5
5
  </span>
6
6
  <span style="float:right;">
7
- <%= Spree::Review.model_name.human(:count => reviews_count) %>
7
+ <%= Spree::Review.model_name.human(count: reviews_count) %>
8
8
  </span>
9
9
  <br/>
data/bin/rails CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
2
4
  # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
5
 
4
- ENGINE_PATH = File.expand_path('../..', __FILE__)
5
- load File.expand_path('../../spec/dummy/script/rails', __FILE__)
6
+ ENGINE_PATH = File.expand_path('..', __dir__)
7
+ load File.expand_path('../spec/dummy/script/rails', __dir__)
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  NB_STARS = 5
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Spree
2
4
  module Reviews
3
5
  Config = Spree::ReviewsConfiguration.new
@@ -15,6 +15,16 @@ de-CH:
15
15
  spree/review:
16
16
  one: eine Rezension
17
17
  other: "%{count} Rezensionen"
18
+ errors:
19
+ models:
20
+ spree/review:
21
+ attributes:
22
+ rating:
23
+ you_must_enter_value_for_rating: "Bitte geben Sie eine Bewertung an."
24
+ spree/feedback_review:
25
+ attributes:
26
+ rating:
27
+ you_must_enter_value_for_rating: "Bitte geben Sie eine Bewertung an."
18
28
  spree:
19
29
  approval_status: Freischaltungsstatus
20
30
  approve: Freischalten
@@ -41,16 +51,19 @@ de-CH:
41
51
  reviews: Rezensionen
42
52
  admin:
43
53
  tab:
54
+ reviews: Rezensionen
44
55
  review_management: Rezensionen
45
56
  review_successfully_submitted: "Ihre Rezension wurde erfolgreich übertragen. Vielen Dank!"
46
57
  spree_reviews:
47
58
  feedback_rating: Feedback für Rezensionen erlauben
59
+ display_unapproved: Zeigen Sie nicht genehmigte Bewertungen in Auflistungen an
48
60
  include_unapproved: Unveröffentlichte Rezensionen anzeigen
49
61
  manage_review_settings: Einstellungen für die Darstellung von Rezensionen
50
62
  preview_size: Größe der Vorschau
51
63
  require_login: Login erforderlich
52
64
  review_settings: Rezensionseinstellungen
53
65
  show_email: E-Mail Adressen anzeigen
66
+ show_verified_purchaser: Verifizierten Käufer anzeigen
54
67
  track_locale: Sprache des Benutzers tracken
55
68
  star:
56
69
  one: "ein Sternchen"
@@ -59,10 +72,10 @@ de-CH:
59
72
  submit_your_review: Rezension abschicken
60
73
  submitted_on: Eingeschickt am
61
74
  unapproved_reviews: Nicht freigeschaltete Rezensionen
75
+ verified_purchaser: Verifizierter Käufer
62
76
  voice:
63
77
  one: "Eine Stimme"
64
78
  other: "%{count} Stimmen"
65
79
  was_this_review_helpful: War diese Rezension für Sie hilfreich?
66
80
  write_your_own_review: Rezension schreiben
67
- you_must_enter_value_for_rating: "Bitte geben Sie eine Bewertung an."
68
81
  anonymous: Anonym
@@ -15,6 +15,16 @@ de:
15
15
  spree/review:
16
16
  one: eine Rezension
17
17
  other: "%{count} Rezensionen"
18
+ errors:
19
+ models:
20
+ spree/review:
21
+ attributes:
22
+ rating:
23
+ you_must_enter_value_for_rating: "Bitte geben Sie eine Bewertung an."
24
+ spree/feedback_review:
25
+ attributes:
26
+ rating:
27
+ you_must_enter_value_for_rating: "Bitte geben Sie eine Bewertung an."
18
28
  spree:
19
29
  approval_status: Freischaltungsstatus
20
30
  approve: Freischalten
@@ -41,16 +51,19 @@ de:
41
51
  reviews: Rezensionen
42
52
  admin:
43
53
  tab:
54
+ reviews: Rezensionen
44
55
  review_management: Rezensionen
45
56
  review_successfully_submitted: Ihre Rezension wurde erfolgreich übertragen. Vielen Dank!
46
57
  spree_reviews:
47
58
  feedback_rating: Feedback für Rezensionen erlauben
59
+ display_unapproved: Zeigen Sie nicht genehmigte Bewertungen in Auflistungen an
48
60
  include_unapproved: Unveröffentlichte Rezensionen anzeigen
49
61
  manage_review_settings: Einstellungen für die Darstellung von Rezensionen
50
62
  preview_size: Größe der Vorschau
51
63
  require_login: Login erforderlich
52
64
  review_settings: Rezensionseinstellungen
53
65
  show_email: E-Mail Adressen anzeigen
66
+ show_verified_purchaser: Verifizierten Käufer anzeigen
54
67
  track_locale: Sprache des Benutzers tracken
55
68
  star:
56
69
  one: "ein Sternchen"
@@ -59,10 +72,10 @@ de:
59
72
  submit_your_review: Rezension abschicken
60
73
  submitted_on: Eingeschickt am
61
74
  unapproved_reviews: Nicht freigeschaltete Rezensionen
75
+ verified_purchaser: Verifizierter Käufer
62
76
  voice:
63
77
  one: "Eine Stimme"
64
78
  other: "%{count} Stimmen"
65
79
  was_this_review_helpful: War diese Rezension für Sie hilfreich?
66
80
  write_your_own_review: Rezension schreiben
67
- you_must_enter_value_for_rating: "Bitte geben Sie eine Bewertung an."
68
81
  anonymous: Anonym
@@ -14,6 +14,16 @@ en-GB:
14
14
  spree/review:
15
15
  one: one review
16
16
  other: "%{count} reviews"
17
+ errors:
18
+ models:
19
+ spree/review:
20
+ attributes:
21
+ rating:
22
+ you_must_enter_value_for_rating: "You must enter a value for rating."
23
+ spree/feedback_review:
24
+ attributes:
25
+ rating:
26
+ you_must_enter_value_for_rating: "You must enter a value for rating."
17
27
  spree:
18
28
  approval_status: Approval status
19
29
  approve: Approve
@@ -40,16 +50,19 @@ en-GB:
40
50
  reviews: Reviews
41
51
  admin:
42
52
  tab:
53
+ reviews: Reviews
43
54
  review_management: Reviews
44
55
  review_successfully_submitted: Review was successfully submitted
45
56
  spree_reviews:
46
57
  feedback_rating: Rate feedback
58
+ display_unapproved: Display unapproved reviews in listings
47
59
  include_unapproved: Include unapproved reviews in listings
48
60
  manage_review_settings: Control the display of reviews
49
61
  preview_size: Size of the review snippets
50
62
  require_login: Require user to be logged in
51
63
  review_settings: Review Settings
52
64
  show_email: Show email addresses
65
+ show_verified_purchaser: Show verified purchaser
53
66
  track_locale: Track user's locale
54
67
  star:
55
68
  one: "1"
@@ -58,11 +71,10 @@ en-GB:
58
71
  submit_your_review: Submit your review
59
72
  submitted_on: Submitted on
60
73
  unapproved_reviews: Unapproved
74
+ verified_purchaser: Verified purchaser
61
75
  voice:
62
76
  one: "1 voice"
63
77
  other: "%{count} voices"
64
78
  was_this_review_helpful: "Was this review helpful to you?"
65
79
  write_your_own_review: Write your own review
66
- you_must_enter_value_for_rating: "You must enter a value for rating."
67
80
  anonymous: Anonymous
68
-
@@ -15,6 +15,16 @@ en:
15
15
  spree/review:
16
16
  one: one review
17
17
  other: "%{count} reviews"
18
+ errors:
19
+ models:
20
+ spree/review:
21
+ attributes:
22
+ rating:
23
+ you_must_enter_value_for_rating: "You must enter a value for rating."
24
+ spree/feedback_review:
25
+ attributes:
26
+ rating:
27
+ you_must_enter_value_for_rating: "You must enter a value for rating."
18
28
  spree:
19
29
  approval_status: Approval status
20
30
  approve: Approve
@@ -40,16 +50,19 @@ en:
40
50
  reviews: Reviews
41
51
  admin:
42
52
  tab:
53
+ reviews: Reviews
43
54
  review_management: Reviews
44
55
  review_successfully_submitted: Review was successfully submitted
45
56
  spree_reviews:
46
57
  feedback_rating: Rate feedback
58
+ display_unapproved: Display unapproved reviews in listings
47
59
  include_unapproved: Include unapproved reviews in listings
48
60
  manage_review_settings: Control the display of reviews
49
61
  preview_size: Size of the review snippets
50
62
  require_login: Require user to be logged in
51
63
  review_settings: Review Settings
52
64
  show_email: Show email addresses
65
+ show_verified_purchaser: Show verified purchaser
53
66
  track_locale: Track user's locale
54
67
  star:
55
68
  one: "1"
@@ -58,10 +71,10 @@ en:
58
71
  submit_your_review: Submit your review
59
72
  submitted_on: Submitted on
60
73
  unapproved_reviews: Unapproved
74
+ verified_purchaser: Verified purchaser
61
75
  voice:
62
76
  one: "1 voice"
63
77
  other: "%{count} voices"
64
78
  was_this_review_helpful: "Was this review helpful to you?"
65
79
  write_your_own_review: Write your own review
66
- you_must_enter_value_for_rating: "You must enter a value for rating."
67
80
  anonymous: Anonymous