From c5c14f9a7f7bd439df37beedf36309ae263627dd Mon Sep 17 00:00:00 2001 From: Daniela Feitosa Date: Wed, 9 Sep 2009 02:10:45 -0300 Subject: [PATCH] ActionItem1220: admin can change nunber of news by folder --- app/controllers/admin/admin_panel_controller.rb | 11 ++++++++++- app/models/environment.rb | 8 ++++++++ app/views/admin_panel/set_portal_news_amount.rhtml | 12 ++++++++++++ app/views/home/index.rhtml | 2 +- public/stylesheets/common.css | 7 ++++--- test/functional/admin_panel_controller_test.rb | 17 +++++++++++++++++ test/unit/environment_test.rb | 18 ++++++++++++++++++ 7 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 app/views/admin_panel/set_portal_news_amount.rhtml diff --git a/app/controllers/admin/admin_panel_controller.rb b/app/controllers/admin/admin_panel_controller.rb index 081ebcb..6fc0ade 100644 --- a/app/controllers/admin/admin_panel_controller.rb +++ b/app/controllers/admin/admin_panel_controller.rb @@ -41,8 +41,17 @@ class AdminPanelController < AdminController env.portal_folders = folders if env.save flash[:notice] = _('Saved the portal folders') - redirect_to :action => 'index' + redirect_to :action => 'set_portal_news_amount' end end end + + def set_portal_news_amount + if request.post? + if @environment.update_attributes(params[:environment]) + flash[:notice] = _('Saved the number of news on folders') + redirect_to :action => 'index' + end + end + end end diff --git a/app/models/environment.rb b/app/models/environment.rb index 53af908..5e8d163 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -625,6 +625,14 @@ class Environment < ActiveRecord::Base settings[:portal_folders] = folders ? folders.map(&:id) : nil end + def news_amount_by_folder + (settings[:news_amount_by_folder] || 4) + end + + def news_amount_by_folder=(amount) + settings[:news_amount_by_folder] = amount.to_i + end + def help_message_to_add_enterprise self.settings['help_message_to_add_enterprise'] || '' end diff --git a/app/views/admin_panel/set_portal_news_amount.rhtml b/app/views/admin_panel/set_portal_news_amount.rhtml new file mode 100644 index 0000000..9781d92 --- /dev/null +++ b/app/views/admin_panel/set_portal_news_amount.rhtml @@ -0,0 +1,12 @@ +

<%= _('News amount by folder') %>

+ +<% labelled_form_for :environment, @environment do |f| %> + + <%= labelled_form_field _('Number of news'), select(:environment, :news_amount_by_folder, (1..10).to_a) %> + + <% button_bar do %> + <%= submit_button(:save, _('Save')) %> + <%= button(:cancel, _('Cancel'), :action => 'index') %> + <% end %> + +<% end %> diff --git a/app/views/home/index.rhtml b/app/views/home/index.rhtml index 50e7a5e..d476348 100644 --- a/app/views/home/index.rhtml +++ b/app/views/home/index.rhtml @@ -38,7 +38,7 @@ <% content_tag(:div, :class => ["news-area", ['even', 'odd'][i%2]].join(' ')) do %>

<%= link_to folder.title, folder.url %>

diff --git a/public/stylesheets/common.css b/public/stylesheets/common.css index 57f8fa3..d40dcbe 100644 --- a/public/stylesheets/common.css +++ b/public/stylesheets/common.css @@ -537,11 +537,10 @@ div.pending-tasks { .news-area { border: 1px solid black; - height: 170px; + height: auto; width: 49%; margin: 3px 0px; font-size: 11px; - overflow: hidden; } #content .news-area h3 { @@ -552,7 +551,9 @@ div.pending-tasks { } .news-area ul { - padding: 2px; + padding: 5px; + height: 125px; + overflow: auto; } .news-area li { diff --git a/test/functional/admin_panel_controller_test.rb b/test/functional/admin_panel_controller_test.rb index b9da9a8..bdf078b 100644 --- a/test/functional/admin_panel_controller_test.rb +++ b/test/functional/admin_panel_controller_test.rb @@ -226,4 +226,21 @@ class AdminPanelControllerTest < Test::Unit::TestCase assert_equal [], env.portal_folders end + + should 'have amount of news on portal' do + env = Environment.default + env.news_amount_by_folder = 5 + env.save + + get :set_portal_news_amount + assert_tag :tag => 'select', :descendant => {:tag => 'option', :attributes => {:value => 5, :selected => 'selected'}} + end + + should 'save amount of news' do + post :set_portal_news_amount, :environment => { :news_amount_by_folder => '3' } + assert_redirected_to :action => 'index' + + assert_equal 3, Environment.default.news_amount_by_folder + end + end diff --git a/test/unit/environment_test.rb b/test/unit/environment_test.rb index d74e37e..03998ba 100644 --- a/test/unit/environment_test.rb +++ b/test/unit/environment_test.rb @@ -786,4 +786,22 @@ class EnvironmentTest < Test::Unit::TestCase assert_equal 'tip message', env.tip_message_enterprise_activation_question end + should 'have amount of news on portal folders' do + e = Environment.default + + assert_respond_to e, :news_amount_by_folder + + e.news_amount_by_folder = 2 + e.save!; e.reload + + assert_equal 2, e.news_amount_by_folder + end + + should 'have default amount of news on portal folders' do + e = Environment.default + + assert_respond_to e, :news_amount_by_folder + + assert_equal 4, e.news_amount_by_folder + end end -- libgit2 0.21.2