Commit efed6b836732e1ab14069c9e4f1b170c1b014e61

Authored by Antonio Terceiro
2 parents 6345edbf e645e6a1

Merge branch 'portal_news_config' into 'master'

Allow admins to define the number of news on portal

See merge request !470
app/controllers/public/home_controller.rb
... ... @@ -2,13 +2,13 @@ class HomeController < PublicController
2 2  
3 3 def index
4 4 @has_news = false
5   - if environment.enabled?('use_portal_community') && environment.portal_community
  5 + if environment.portal_enabled
6 6 @has_news = true
7 7 @news_cache_key = environment.portal_news_cache_key(FastGettext.locale)
8 8 if !read_fragment(@news_cache_key)
9 9 portal_community = environment.portal_community
10   - @highlighted_news = portal_community.news(2, true)
11   - @portal_news = portal_community.news(7, true) - @highlighted_news
  10 + @highlighted_news = portal_community.news(environment.highlighted_news_amount, true)
  11 + @portal_news = portal_community.news(environment.portal_news_amount, true).offset(environment.highlighted_news_amount)
12 12 @area_news = environment.portal_folders
13 13 end
14 14 end
... ...
app/models/environment.rb
... ... @@ -3,7 +3,7 @@
3 3 # domains.
4 4 class Environment < ActiveRecord::Base
5 5  
6   - attr_accessible :name, :is_default, :signup_welcome_text_subject, :signup_welcome_text_body, :terms_of_use, :message_for_disabled_enterprise, :news_amount_by_folder, :default_language, :languages, :description, :organization_approval_method, :enabled_plugins, :enabled_features, :redirection_after_login, :redirection_after_signup, :contact_email, :theme, :reports_lower_bound, :noreply_email, :signup_welcome_screen_body, :members_whitelist_enabled, :members_whitelist
  6 + attr_accessible :name, :is_default, :signup_welcome_text_subject, :signup_welcome_text_body, :terms_of_use, :message_for_disabled_enterprise, :news_amount_by_folder, :default_language, :languages, :description, :organization_approval_method, :enabled_plugins, :enabled_features, :redirection_after_login, :redirection_after_signup, :contact_email, :theme, :reports_lower_bound, :noreply_email, :signup_welcome_screen_body, :members_whitelist_enabled, :members_whitelist, :highlighted_news_amount, :portal_news_amount
7 7  
8 8 has_many :users
9 9  
... ... @@ -268,6 +268,8 @@ class Environment &lt; ActiveRecord::Base
268 268 settings_items :description, :type => String, :default => '<div style="text-align: center"><a href="http://noosfero.org/"><img src="/images/noosfero-network.png" alt="Noosfero"/></a></div>'
269 269 settings_items :local_docs, :type => Array, :default => []
270 270 settings_items :news_amount_by_folder, :type => Integer, :default => 4
  271 + settings_items :highlighted_news_amount, :type => Integer, :default => 2
  272 + settings_items :portal_news_amount, :type => Integer, :default => 5
271 273 settings_items :help_message_to_add_enterprise, :type => String, :default => ''
272 274 settings_items :tip_message_enterprise_activation_question, :type => String, :default => ''
273 275  
... ...
app/views/admin_panel/set_portal_community.html.erb
... ... @@ -18,7 +18,7 @@
18 18 <%= button 'ok', _('Enable'), {:action => 'manage_portal_community', :activate => 1} %>
19 19 <% end %>
20 20 <%= button 'folder', _('Select Portal Folders'), {:action => 'set_portal_folders'} %>
21   - <%= button 'edit', _('Define Amount by Folder'), {:action => 'set_portal_news_amount'} %>
  21 + <%= button 'edit', _('Define news amount on portal'), {:action => 'set_portal_news_amount'} %>
22 22 <%= button 'delete', _('Remove'), { :action => 'unset_portal_community'} %>
23 23 <% end %>
24 24 <% end %>
... ...
app/views/admin_panel/set_portal_news_amount.html.erb
1   -<h1><%= _('News amount by folder') %></h1>
  1 +<h1><%= _('News amount on portal') %></h1>
2 2  
3 3 <%= labelled_form_for :environment do |f| %>
4 4  
5   - <%= labelled_form_field _('Number of news'), select(:environment, :news_amount_by_folder, (1..10).to_a) %>
  5 + <%= labelled_form_field _('Number of highlighted news'), select(:environment, :highlighted_news_amount, (0..10).to_a) %>
  6 + <%= labelled_form_field _('Number of portal news'), select(:environment, :portal_news_amount, (0..10).to_a) %>
  7 + <%= labelled_form_field _('Number of news by folder'), select(:environment, :news_amount_by_folder, (1..10).to_a) %>
6 8  
7 9 <% button_bar do %>
8 10 <%= submit_button(:save, _('Save')) %>
... ...
test/functional/admin_panel_controller_test.rb
... ... @@ -334,10 +334,12 @@ class AdminPanelControllerTest &lt; ActionController::TestCase
334 334 end
335 335  
336 336 should 'save amount of news' do
337   - post :set_portal_news_amount, :environment => { :news_amount_by_folder => '3' }
  337 + post :set_portal_news_amount, :environment => { :news_amount_by_folder => '3', :highlighted_news_amount => '2', :portal_news_amount => '5' }
338 338 assert_redirected_to :action => 'index'
339 339  
340 340 assert_equal 3, Environment.default.news_amount_by_folder
  341 + assert_equal 2, Environment.default.highlighted_news_amount
  342 + assert_equal 5, Environment.default.portal_news_amount
341 343 end
342 344  
343 345 should 'display plugins links' do
... ...
test/unit/environment_test.rb
... ... @@ -1056,6 +1056,30 @@ class EnvironmentTest &lt; ActiveSupport::TestCase
1056 1056 assert_equal 4, e.news_amount_by_folder
1057 1057 end
1058 1058  
  1059 + should 'have amount of highlighted news' do
  1060 + e = Environment.default
  1061 +
  1062 + assert_respond_to e, :highlighted_news_amount
  1063 +
  1064 + assert_equal 2, e.highlighted_news_amount
  1065 + e.highlighted_news_amount = 4
  1066 + e.save!
  1067 +
  1068 + assert_equal 4, Environment.default.highlighted_news_amount
  1069 + end
  1070 +
  1071 + should 'have amount of portal news' do
  1072 + e = Environment.default
  1073 +
  1074 + assert_respond_to e, :portal_news_amount
  1075 +
  1076 + assert_equal 5, e.portal_news_amount
  1077 + e.portal_news_amount = 2
  1078 + e.save!
  1079 +
  1080 + assert_equal 2, Environment.default.portal_news_amount
  1081 + end
  1082 +
1059 1083 should 'list tags with their counts' do
1060 1084 person = fast_create(Person)
1061 1085 person.articles.create!(:name => 'article 1', :tag_list => 'first-tag')
... ...