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 %>
- <% folder.news(4).each do |news| %>
+ <% folder.news(environment.news_amount_by_folder).each do |news| %>
- <%= link_to(news.title, news.url) %>
<% end%>
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