Commit 0ce4ec09561fd251d804ff6d972457bbbec43cdf

Authored by Rodrigo Souto
1 parent a2d83d73

Limiting blog and forum view to 15 posts

app/models/blog.rb
1 1 class Blog < Folder
2 2  
3 3 acts_as_having_posts
  4 + include PostsLimit
4 5  
5 6 #FIXME This should be used until there is a migration to fix all blogs that
6 7 # already have folders inside them
... ...
app/models/forum.rb
1 1 class Forum < Folder
2 2  
3 3 acts_as_having_posts :order => 'updated_at DESC'
  4 + include PostsLimit
4 5  
5 6 def self.type_name
6 7 _('Forum')
... ...
app/models/posts_limit.rb 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +module PostsLimit
  2 + module ClassMethods
  3 + def posts_per_page_limit
  4 + 15
  5 + end
  6 +
  7 + def posts_per_page_options
  8 + [5, 10, 15]
  9 + end
  10 + end
  11 +
  12 + def self.included(klass)
  13 + klass.send(:extend, PostsLimit::ClassMethods)
  14 + klass.class_eval do
  15 + def posts_per_page_with_limit
  16 + [self.class.posts_per_page_limit, posts_per_page_without_limit].min
  17 + end
  18 + alias_method_chain :posts_per_page, :limit
  19 + end
  20 + end
  21 +end
... ...
app/views/cms/_blog.rhtml
... ... @@ -56,7 +56,7 @@
56 56  
57 57 <%= labelled_form_field(_('How to display posts:'), f.select(:visualization_format, [ [ _('Full post'), 'full'], [ _('First paragraph'), 'short'] ])) %>
58 58  
59   -<%= labelled_form_field(_('Posts per page:'), f.select(:posts_per_page, [5, 10, 20, 50, 100])) %>
  59 +<%= labelled_form_field(_('Posts per page:'), f.select(:posts_per_page, Blog.posts_per_page_options)) %>
60 60  
61 61 <%= labelled_check_box(_("List only translated posts"), 'article[display_posts_in_current_language]', '1', @article.display_posts_in_current_language?) %>
62 62  
... ...
app/views/cms/_forum.rhtml
... ... @@ -10,4 +10,4 @@
10 10  
11 11 <%= labelled_form_field(_('Description:'), text_area(:article, :body, :cols => 64, :rows => 10)) %>
12 12  
13   -<%= labelled_form_field(_('Posts per page:'), f.select(:posts_per_page, [5, 10, 20, 50, 100])) %>
  13 +<%= labelled_form_field(_('Posts per page:'), f.select(:posts_per_page, Forum.posts_per_page_options)) %>
... ...
test/unit/posts_limit_test.rb 0 → 100644
... ... @@ -0,0 +1,14 @@
  1 +require File.dirname(__FILE__) + '/../test_helper'
  2 +
  3 +class PostsLimitTest < ActiveSupport::TestCase
  4 +
  5 + CLASSES = [Blog, Forum]
  6 +
  7 + should 'limit posts per_page_page' do
  8 + CLASSES.each do |klass|
  9 + object = klass.new
  10 + object.posts_per_page = klass.posts_per_page_limit + 1
  11 + assert_equal klass.posts_per_page_limit, object.posts_per_page
  12 + end
  13 + end
  14 +end
... ...