Commit 0ce4ec09561fd251d804ff6d972457bbbec43cdf
1 parent
a2d83d73
Exists in
master
and in
22 other branches
Limiting blog and forum view to 15 posts
Showing
6 changed files
with
39 additions
and
2 deletions
Show diff stats
app/models/blog.rb
app/models/forum.rb
... | ... | @@ -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)) %> | ... | ... |
... | ... | @@ -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 | ... | ... |