Commit c5c14f9a7f7bd439df37beedf36309ae263627dd

Authored by Daniela Feitosa
Committed by Antonio Terceiro
1 parent 487f425f

ActionItem1220: admin can change nunber of news by folder

app/controllers/admin/admin_panel_controller.rb
@@ -41,8 +41,17 @@ class AdminPanelController < AdminController @@ -41,8 +41,17 @@ class AdminPanelController < AdminController
41 env.portal_folders = folders 41 env.portal_folders = folders
42 if env.save 42 if env.save
43 flash[:notice] = _('Saved the portal folders') 43 flash[:notice] = _('Saved the portal folders')
44 - redirect_to :action => 'index' 44 + redirect_to :action => 'set_portal_news_amount'
45 end 45 end
46 end 46 end
47 end 47 end
  48 +
  49 + def set_portal_news_amount
  50 + if request.post?
  51 + if @environment.update_attributes(params[:environment])
  52 + flash[:notice] = _('Saved the number of news on folders')
  53 + redirect_to :action => 'index'
  54 + end
  55 + end
  56 + end
48 end 57 end
app/models/environment.rb
@@ -625,6 +625,14 @@ class Environment < ActiveRecord::Base @@ -625,6 +625,14 @@ class Environment < ActiveRecord::Base
625 settings[:portal_folders] = folders ? folders.map(&:id) : nil 625 settings[:portal_folders] = folders ? folders.map(&:id) : nil
626 end 626 end
627 627
  628 + def news_amount_by_folder
  629 + (settings[:news_amount_by_folder] || 4)
  630 + end
  631 +
  632 + def news_amount_by_folder=(amount)
  633 + settings[:news_amount_by_folder] = amount.to_i
  634 + end
  635 +
628 def help_message_to_add_enterprise 636 def help_message_to_add_enterprise
629 self.settings['help_message_to_add_enterprise'] || '' 637 self.settings['help_message_to_add_enterprise'] || ''
630 end 638 end
app/views/admin_panel/set_portal_news_amount.rhtml 0 → 100644
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +<h1><%= _('News amount by folder') %></h1>
  2 +
  3 +<% labelled_form_for :environment, @environment do |f| %>
  4 +
  5 + <%= labelled_form_field _('Number of news'), select(:environment, :news_amount_by_folder, (1..10).to_a) %>
  6 +
  7 + <% button_bar do %>
  8 + <%= submit_button(:save, _('Save')) %>
  9 + <%= button(:cancel, _('Cancel'), :action => 'index') %>
  10 + <% end %>
  11 +
  12 +<% end %>
app/views/home/index.rhtml
@@ -38,7 +38,7 @@ @@ -38,7 +38,7 @@
38 <% content_tag(:div, :class => ["news-area", ['even', 'odd'][i%2]].join(' ')) do %> 38 <% content_tag(:div, :class => ["news-area", ['even', 'odd'][i%2]].join(' ')) do %>
39 <h3><%= link_to folder.title, folder.url %></h3> 39 <h3><%= link_to folder.title, folder.url %></h3>
40 <ul> 40 <ul>
41 - <% folder.news(4).each do |news| %> 41 + <% folder.news(environment.news_amount_by_folder).each do |news| %>
42 <li> <%= link_to(news.title, news.url) %></li> 42 <li> <%= link_to(news.title, news.url) %></li>
43 <% end%> 43 <% end%>
44 </ul> 44 </ul>
public/stylesheets/common.css
@@ -537,11 +537,10 @@ div.pending-tasks { @@ -537,11 +537,10 @@ div.pending-tasks {
537 537
538 .news-area { 538 .news-area {
539 border: 1px solid black; 539 border: 1px solid black;
540 - height: 170px; 540 + height: auto;
541 width: 49%; 541 width: 49%;
542 margin: 3px 0px; 542 margin: 3px 0px;
543 font-size: 11px; 543 font-size: 11px;
544 - overflow: hidden;  
545 } 544 }
546 545
547 #content .news-area h3 { 546 #content .news-area h3 {
@@ -552,7 +551,9 @@ div.pending-tasks { @@ -552,7 +551,9 @@ div.pending-tasks {
552 } 551 }
553 552
554 .news-area ul { 553 .news-area ul {
555 - padding: 2px; 554 + padding: 5px;
  555 + height: 125px;
  556 + overflow: auto;
556 } 557 }
557 558
558 .news-area li { 559 .news-area li {
test/functional/admin_panel_controller_test.rb
@@ -226,4 +226,21 @@ class AdminPanelControllerTest &lt; Test::Unit::TestCase @@ -226,4 +226,21 @@ class AdminPanelControllerTest &lt; Test::Unit::TestCase
226 226
227 assert_equal [], env.portal_folders 227 assert_equal [], env.portal_folders
228 end 228 end
  229 +
  230 + should 'have amount of news on portal' do
  231 + env = Environment.default
  232 + env.news_amount_by_folder = 5
  233 + env.save
  234 +
  235 + get :set_portal_news_amount
  236 + assert_tag :tag => 'select', :descendant => {:tag => 'option', :attributes => {:value => 5, :selected => 'selected'}}
  237 + end
  238 +
  239 + should 'save amount of news' do
  240 + post :set_portal_news_amount, :environment => { :news_amount_by_folder => '3' }
  241 + assert_redirected_to :action => 'index'
  242 +
  243 + assert_equal 3, Environment.default.news_amount_by_folder
  244 + end
  245 +
229 end 246 end
test/unit/environment_test.rb
@@ -786,4 +786,22 @@ class EnvironmentTest &lt; Test::Unit::TestCase @@ -786,4 +786,22 @@ class EnvironmentTest &lt; Test::Unit::TestCase
786 assert_equal 'tip message', env.tip_message_enterprise_activation_question 786 assert_equal 'tip message', env.tip_message_enterprise_activation_question
787 end 787 end
788 788
  789 + should 'have amount of news on portal folders' do
  790 + e = Environment.default
  791 +
  792 + assert_respond_to e, :news_amount_by_folder
  793 +
  794 + e.news_amount_by_folder = 2
  795 + e.save!; e.reload
  796 +
  797 + assert_equal 2, e.news_amount_by_folder
  798 + end
  799 +
  800 + should 'have default amount of news on portal folders' do
  801 + e = Environment.default
  802 +
  803 + assert_respond_to e, :news_amount_by_folder
  804 +
  805 + assert_equal 4, e.news_amount_by_folder
  806 + end
789 end 807 end