From b08287d1c8fe632d9fa4e11477594bd02345f294 Mon Sep 17 00:00:00 2001 From: Marcos Ronaldo Date: Mon, 23 May 2016 16:52:48 -0300 Subject: [PATCH] organization_ratings: add intial_page option --- plugins/organization_ratings/db/migrate/20160523193515_add_initial_page_to_organization_ratings_config.rb | 9 +++++++++ plugins/organization_ratings/lib/organization_ratings_block.rb | 4 ++++ plugins/organization_ratings/lib/organization_ratings_config.rb | 1 + plugins/organization_ratings/test/unit/organization_rating_config_test.rb | 30 ++++++++++++++++++++++-------- plugins/organization_ratings/views/blocks/organization_ratings.html.erb | 2 +- plugins/organization_ratings/views/organization_ratings_plugin_admin/index.html.erb | 6 ++++++ 6 files changed, 43 insertions(+), 9 deletions(-) create mode 100644 plugins/organization_ratings/db/migrate/20160523193515_add_initial_page_to_organization_ratings_config.rb diff --git a/plugins/organization_ratings/db/migrate/20160523193515_add_initial_page_to_organization_ratings_config.rb b/plugins/organization_ratings/db/migrate/20160523193515_add_initial_page_to_organization_ratings_config.rb new file mode 100644 index 0000000..6745372 --- /dev/null +++ b/plugins/organization_ratings/db/migrate/20160523193515_add_initial_page_to_organization_ratings_config.rb @@ -0,0 +1,9 @@ +class AddInitialPageToOrganizationRatingsConfig < ActiveRecord::Migration + def up + add_column :organization_ratings_configs, :ratings_on_initial_page, :integer, :default => 3 + end + + def down + remove_column :organization_ratings_configs, :ratings_on_initial_page + end +end diff --git a/plugins/organization_ratings/lib/organization_ratings_block.rb b/plugins/organization_ratings/lib/organization_ratings_block.rb index 745ea65..c7286a0 100644 --- a/plugins/organization_ratings/lib/organization_ratings_block.rb +++ b/plugins/organization_ratings/lib/organization_ratings_block.rb @@ -13,6 +13,10 @@ class OrganizationRatingsBlock < Block env_organization_ratings_config.per_page end + def ratings_on_initial_page + env_organization_ratings_config.ratings_on_initial_page + end + def cacheable? false end diff --git a/plugins/organization_ratings/lib/organization_ratings_config.rb b/plugins/organization_ratings/lib/organization_ratings_config.rb index 982d408..709479c 100644 --- a/plugins/organization_ratings/lib/organization_ratings_config.rb +++ b/plugins/organization_ratings/lib/organization_ratings_config.rb @@ -4,6 +4,7 @@ class OrganizationRatingsConfig < ApplicationRecord attr_accessible :cooldown, :default_rating, :order, :per_page attr_accessible :vote_once, :are_moderated, :environment_id + attr_accessible :ratings_on_initial_page ORDER_OPTIONS = {recent: _('More Recent'), best: _('Best Ratings')} diff --git a/plugins/organization_ratings/test/unit/organization_rating_config_test.rb b/plugins/organization_ratings/test/unit/organization_rating_config_test.rb index 9833c06..e2b2bfc 100644 --- a/plugins/organization_ratings/test/unit/organization_rating_config_test.rb +++ b/plugins/organization_ratings/test/unit/organization_rating_config_test.rb @@ -29,15 +29,29 @@ class OrganizationRatingConfigTest < ActiveSupport::TestCase assert_equal "must be greater than or equal to 0", @organization_ratings_config.errors[:cooldown].first end - # test "communities ratings per page validation" do - # environment = Environment.new :communities_ratings_per_page => 4 - # environment.valid? + test "communities ratings per page validation" do + @organization_ratings_config.per_page = 4 - # assert_equal "must be greater than or equal to 5", environment.errors[:communities_ratings_per_page].first + refute @organization_ratings_config.valid? - # environment.communities_ratings_per_page = 21 - # environment.valid? + assert_equal "must be greater than or equal to 5", @organization_ratings_config.errors[:per_page].first - # assert_equal "must be less than or equal to 20", environment.errors[:communities_ratings_per_page].first - # end + @organization_ratings_config.per_page = 21 + refute @organization_ratings_config.valid? + + assert_equal "must be less than or equal to 20", @organization_ratings_config.errors[:per_page].first + end + + should "ratings block use initial_page config" do + @organization_ratings_config.ratings_on_initial_page = 4 + @organization_ratings_config.save! + block = OrganizationRatingsBlock.new + assert_equal block.ratings_on_initial_page, 4 + end + + should "ratings block show 3 ratings on initial page by default" do + @organization_ratings_config.save! + block = OrganizationRatingsBlock.new + assert_equal block.ratings_on_initial_page, 3 + end end diff --git a/plugins/organization_ratings/views/blocks/organization_ratings.html.erb b/plugins/organization_ratings/views/blocks/organization_ratings.html.erb index 6059a08..906263a 100644 --- a/plugins/organization_ratings/views/blocks/organization_ratings.html.erb +++ b/plugins/organization_ratings/views/blocks/organization_ratings.html.erb @@ -7,7 +7,7 @@ <% else %>
<% block.get_ratings(block.owner.id).each_with_index do |r, index| %> - <% break if index >= block.limit_number_of_ratings %> + <% break if index >= block.ratings_on_initial_page %> <%= render :partial => "shared/user_rating_container", :locals => {:user_rate => r} %> <% end %> diff --git a/plugins/organization_ratings/views/organization_ratings_plugin_admin/index.html.erb b/plugins/organization_ratings/views/organization_ratings_plugin_admin/index.html.erb index d06bc4d..ac0a107 100644 --- a/plugins/organization_ratings/views/organization_ratings_plugin_admin/index.html.erb +++ b/plugins/organization_ratings/views/organization_ratings_plugin_admin/index.html.erb @@ -43,6 +43,12 @@ <%= c.select :per_page, 5..20 %> + + <%= _('Ratings amount on initial page') %> + + <%= c.select :ratings_on_initial_page, 1..10 %> + +
<%= button_bar do %> -- libgit2 0.21.2