aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordjones <dgjones@gmail.com>2010-09-21 17:20:08 +1200
committerdjones <dgjones@gmail.com>2010-09-21 17:20:08 +1200
commitf036f2a46f5c085505aff507f54518df8e283069 (patch)
tree5dd5bd48059066ceb0fef489d33e42d93e15c5df
parent18b2db513d5241738135cfd330e730c63abec277 (diff)
downloadrefinerycms-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.rb13
-rw-r--r--app/models/blog_post.rb10
-rw-r--r--app/views/admin/blog/posts/_form.html.erb2
-rw-r--r--app/views/blog/shared/_categories.html.erb2
-rw-r--r--app/views/blog/shared/_post.html.erb44
-rw-r--r--config/locales/en.yml1
-rw-r--r--generators/refinery_blog/refinery_blog_generator.rb1
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',