diff options
author | djones <dgjones@gmail.com> | 2010-09-21 17:20:08 +1200 |
---|---|---|
committer | djones <dgjones@gmail.com> | 2010-09-21 17:20:08 +1200 |
commit | f036f2a46f5c085505aff507f54518df8e283069 (patch) | |
tree | 5dd5bd48059066ceb0fef489d33e42d93e15c5df | |
parent | 18b2db513d5241738135cfd330e730c63abec277 (diff) | |
download | refinerycms-blog-f036f2a46f5c085505aff507f54518df8e283069.tar.gz refinerycms-blog-f036f2a46f5c085505aff507f54518df8e283069.tar.bz2 refinerycms-blog-f036f2a46f5c085505aff507f54518df8e283069.zip |
added publish date support. fixes bug where categories were showing posts that were technically supposed to be hidden from the end user
-rw-r--r-- | app/models/blog_category.rb | 13 | ||||
-rw-r--r-- | app/models/blog_post.rb | 10 | ||||
-rw-r--r-- | app/views/admin/blog/posts/_form.html.erb | 2 | ||||
-rw-r--r-- | app/views/blog/shared/_categories.html.erb | 2 | ||||
-rw-r--r-- | app/views/blog/shared/_post.html.erb | 44 | ||||
-rw-r--r-- | config/locales/en.yml | 1 | ||||
-rw-r--r-- | generators/refinery_blog/refinery_blog_generator.rb | 1 |
7 files changed, 47 insertions, 26 deletions
diff --git a/app/models/blog_category.rb b/app/models/blog_category.rb index 09d32de..c78a7a4 100644 --- a/app/models/blog_category.rb +++ b/app/models/blog_category.rb @@ -8,5 +8,16 @@ class BlogCategory < ActiveRecord::Base validates_uniqueness_of :title has_friendly_id :title, :use_slug => true - + + # this might be able to be optimised a little more + def post_count + count = 0 + + self.posts.each do |p| + count += 1 if p.live? + end + + count + end + end diff --git a/app/models/blog_post.rb b/app/models/blog_post.rb index 0470cf7..a9fe8c2 100644 --- a/app/models/blog_post.rb +++ b/app/models/blog_post.rb @@ -13,11 +13,15 @@ class BlogPost < ActiveRecord::Base default_scope :order => "created_at DESC" if Rails.version < '3.0.0' - named_scope :live, :conditions => {:draft => false} + named_scope :live, lambda { {:conditions => ["published_at < ? and draft = ?", Time.now, false]} } else - scope :live, :conditions => {:draft => false} + scope :live, lambda { where( "published_at < ? and draft = ?", Time.now, false) } end - + + def live? + !draft and published_at <= Time.now + end + def category_ids=(ids) self.categories = ids.reject{|id| id.blank?}.collect {|c_id| BlogCategory.find(c_id.to_i) rescue nil diff --git a/app/views/admin/blog/posts/_form.html.erb b/app/views/admin/blog/posts/_form.html.erb index bf964e9..941dd03 100644 --- a/app/views/admin/blog/posts/_form.html.erb +++ b/app/views/admin/blog/posts/_form.html.erb @@ -44,6 +44,8 @@ </li> <% end %> </ul> + <h3><%= t('admin.blog.posts.form.published_at') %></h3> + <%= f.datetime_select :published_at %> </div> <div class='hemisquare right_side'> </div> diff --git a/app/views/blog/shared/_categories.html.erb b/app/views/blog/shared/_categories.html.erb index fa26ceb..305e731 100644 --- a/app/views/blog/shared/_categories.html.erb +++ b/app/views/blog/shared/_categories.html.erb @@ -2,7 +2,7 @@ <ul id='categories'> <% @blog_categories.each do |category| %> <li<%= " class='selected'" if @category.present? and @category.id == category.id %>> - <%= link_to "#{category.title} (#{category.posts.count})", blog_category_url(category) %> + <%= link_to "#{category.title} (#{category.post_count})", blog_category_url(category) %> </li> <% end %> </ul>
\ No newline at end of file diff --git a/app/views/blog/shared/_post.html.erb b/app/views/blog/shared/_post.html.erb index 26f5fbf..46fc23b 100644 --- a/app/views/blog/shared/_post.html.erb +++ b/app/views/blog/shared/_post.html.erb @@ -1,22 +1,24 @@ -<li> - <h2><%= link_to post.title, blog_post_url(post) %></h2> - <p class='posted_at'> - <%= t('blog.shared.posts.created_at', :when => post.created_at.strftime('%d %B %Y')) %> - </p> - <div clas='clearfix'> - <%= truncate(post.body, - :length => RefinerySetting.find_or_set(:blog_post_teaser_length, 250), - :preserve_html_tags => true) %> - </div> - <p> - <%= link_to t('blog.shared.posts.read_more'), blog_post_url(post) %> +<% if post.live? %> + <li> + <h2><%= link_to post.title, blog_post_url(post) %></h2> + <p class='posted_at'> + <%= t('blog.shared.posts.created_at', :when => post.published_at.strftime('%d %B %Y')) %> + </p> + <div clas='clearfix'> + <%= truncate(post.body, + :length => RefinerySetting.find_or_set(:blog_post_teaser_length, 250), + :preserve_html_tags => true) %> + </div> + <p> + <%= link_to t('blog.shared.posts.read_more'), blog_post_url(post) %> - <span class='comment_count'> - <% if post.comments.any? %> - (<%= pluralize(post.comments.count, t('blog.shared.comments.singular')) %>) - <% else %> - (<%= t('blog.shared.comments.none') %>) - <% end %> - </span> - </p> -</li>
\ No newline at end of file + <span class='comment_count'> + <% if post.comments.any? %> + (<%= pluralize(post.comments.count, t('blog.shared.comments.singular')) %>) + <% else %> + (<%= t('blog.shared.comments.none') %>) + <% end %> + </span> + </p> + </li> +<% end %>
\ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index 5b5749c..f4a6659 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -37,6 +37,7 @@ en: advanced_options: Advanced Options toggle_advanced_options: Click to access meta tag settings and menu options save_as_draft: Save as Draft + published_at: Publish Date index: no_items_yet: 'There are no Blog Posts yet. Click "{{create}}" to add your first blog post.' post: diff --git a/generators/refinery_blog/refinery_blog_generator.rb b/generators/refinery_blog/refinery_blog_generator.rb index 0748bf9..36fce61 100644 --- a/generators/refinery_blog/refinery_blog_generator.rb +++ b/generators/refinery_blog/refinery_blog_generator.rb @@ -38,6 +38,7 @@ class RefineryBlogGenerator < Rails::Generator::NamedBase Rails::Generator::GeneratedAttribute.new('title', 'string'), Rails::Generator::GeneratedAttribute.new('body', 'text'), Rails::Generator::GeneratedAttribute.new('draft', 'boolean') + Rails::Generator::GeneratedAttribute.new('published_at', 'datetime') ], :id => true },{ :table_name => 'blog_comments', |