Commit c5c14f9a7f7bd439df37beedf36309ae263627dd
Committed by
Antonio Terceiro
1 parent
487f425f
Exists in
master
and in
28 other branches
ActionItem1220: admin can change nunber of news by folder
Showing
7 changed files
with
70 additions
and
5 deletions
Show diff stats
app/controllers/admin/admin_panel_controller.rb
| ... | ... | @@ -41,8 +41,17 @@ class AdminPanelController < AdminController |
| 41 | 41 | env.portal_folders = folders |
| 42 | 42 | if env.save |
| 43 | 43 | flash[:notice] = _('Saved the portal folders') |
| 44 | - redirect_to :action => 'index' | |
| 44 | + redirect_to :action => 'set_portal_news_amount' | |
| 45 | 45 | end |
| 46 | 46 | end |
| 47 | 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 | 57 | end | ... | ... |
app/models/environment.rb
| ... | ... | @@ -625,6 +625,14 @@ class Environment < ActiveRecord::Base |
| 625 | 625 | settings[:portal_folders] = folders ? folders.map(&:id) : nil |
| 626 | 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 | 636 | def help_message_to_add_enterprise |
| 629 | 637 | self.settings['help_message_to_add_enterprise'] || '' |
| 630 | 638 | end | ... | ... |
| ... | ... | @@ -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 | 38 | <% content_tag(:div, :class => ["news-area", ['even', 'odd'][i%2]].join(' ')) do %> |
| 39 | 39 | <h3><%= link_to folder.title, folder.url %></h3> |
| 40 | 40 | <ul> |
| 41 | - <% folder.news(4).each do |news| %> | |
| 41 | + <% folder.news(environment.news_amount_by_folder).each do |news| %> | |
| 42 | 42 | <li> <%= link_to(news.title, news.url) %></li> |
| 43 | 43 | <% end%> |
| 44 | 44 | </ul> | ... | ... |
public/stylesheets/common.css
| ... | ... | @@ -537,11 +537,10 @@ div.pending-tasks { |
| 537 | 537 | |
| 538 | 538 | .news-area { |
| 539 | 539 | border: 1px solid black; |
| 540 | - height: 170px; | |
| 540 | + height: auto; | |
| 541 | 541 | width: 49%; |
| 542 | 542 | margin: 3px 0px; |
| 543 | 543 | font-size: 11px; |
| 544 | - overflow: hidden; | |
| 545 | 544 | } |
| 546 | 545 | |
| 547 | 546 | #content .news-area h3 { |
| ... | ... | @@ -552,7 +551,9 @@ div.pending-tasks { |
| 552 | 551 | } |
| 553 | 552 | |
| 554 | 553 | .news-area ul { |
| 555 | - padding: 2px; | |
| 554 | + padding: 5px; | |
| 555 | + height: 125px; | |
| 556 | + overflow: auto; | |
| 556 | 557 | } |
| 557 | 558 | |
| 558 | 559 | .news-area li { | ... | ... |
test/functional/admin_panel_controller_test.rb
| ... | ... | @@ -226,4 +226,21 @@ class AdminPanelControllerTest < Test::Unit::TestCase |
| 226 | 226 | |
| 227 | 227 | assert_equal [], env.portal_folders |
| 228 | 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 | 246 | end | ... | ... |
test/unit/environment_test.rb
| ... | ... | @@ -786,4 +786,22 @@ class EnvironmentTest < Test::Unit::TestCase |
| 786 | 786 | assert_equal 'tip message', env.tip_message_enterprise_activation_question |
| 787 | 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 | 807 | end | ... | ... |