aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoe Sak <joe@joesak.com>2010-11-20 11:35:08 -0600
committerJoe Sak <joe@joesak.com>2010-11-20 11:35:08 -0600
commita214b9e7168890ce52c3336350663669cb938ce5 (patch)
treec815cd3f8feef60163d8ae1381550ea217d81ccd
parent43d8c3a7ff35b4ec79767a204c14b33d90f7f1ab (diff)
downloadrefinerycms-blog-a214b9e7168890ce52c3336350663669cb938ce5.tar.gz
refinerycms-blog-a214b9e7168890ce52c3336350663669cb938ce5.tar.bz2
refinerycms-blog-a214b9e7168890ce52c3336350663669cb938ce5.zip
Added Next, Previous Article & Home navigation
-rw-r--r--app/helpers/blog_posts_helper.rb4
-rw-r--r--app/models/blog_post.rb30
-rw-r--r--app/views/blog/posts/show.html.erb7
-rw-r--r--public/stylesheets/refinerycms-blog.css25
4 files changed, 58 insertions, 8 deletions
diff --git a/app/helpers/blog_posts_helper.rb b/app/helpers/blog_posts_helper.rb
index fb90e94..a74ec33 100644
--- a/app/helpers/blog_posts_helper.rb
+++ b/app/helpers/blog_posts_helper.rb
@@ -19,4 +19,8 @@ module BlogPostsHelper
html += '</nav></section>'
html.html_safe
end
+
+ def next_or_previous?(post)
+ post.next.present? or post.prev.present?
+ end
end
diff --git a/app/models/blog_post.rb b/app/models/blog_post.rb
index 562a9b9..471be72 100644
--- a/app/models/blog_post.rb
+++ b/app/models/blog_post.rb
@@ -9,27 +9,41 @@ class BlogPost < ActiveRecord::Base
validates_uniqueness_of :title
has_friendly_id :title, :use_slug => true
-
- default_scope :order => "published_at DESC"
if Rails.version < '3.0.0'
- named_scope :by_archive, lambda { |archive_date| {:conditions => ['published_at between ? and ?', archive_date.beginning_of_month, archive_date.end_of_month]} }
+ named_scope :by_archive, lambda { |archive_date| {:conditions => ['published_at between ? and ?', archive_date.beginning_of_month, archive_date.end_of_month], :order => "published_at DESC"} }
else
scope :by_archive, lambda { |archive_date|
- where ['published_at between ? and ?', archive_date.beginning_of_month, archive_date.end_of_month]
+ where(['published_at between ? and ?', archive_date.beginning_of_month, archive_date.end_of_month]).order("published_at DESC")
}
end
if Rails.version < '3.0.0'
- named_scope :all_previous, :conditions => ['published_at <= ?', Time.now.beginning_of_month]
+ named_scope :all_previous, :conditions => ['published_at <= ?', Time.now.beginning_of_month], :order => "published_at DESC"
else
- scope :all_previous, where(['published_at <= ?', Time.now.beginning_of_month])
+ scope :all_previous, where(['published_at <= ?', Time.now.beginning_of_month]).order("published_at DESC")
end
if Rails.version < '3.0.0'
- named_scope :live, lambda { {:conditions => ["published_at < ? and draft = ?", Time.now, false]} }
+ named_scope :live, lambda { {:conditions => ["published_at < ? and draft = ?", Time.now, false], :order => "published_at DESC"} }
+ else
+ scope :live, lambda { where( "published_at < ? and draft = ?", Time.now, false).order("published_at DESC") }
+ end
+
+ if Rails.version < '3.0.0'
+ named_scope :previous, lambda { |i| { :conditions => ["published_at < ?", i.published_at], :order => "published_at DESC", :limit => 1 } }
+ named_scope :next, lambda { |i| { :condtions => ["published_at > ?", i.published_at], :order => "published_at ASC", :limit => 1 } }
else
- scope :live, lambda { where( "published_at < ? and draft = ?", Time.now, false) }
+ scope :previous, lambda { |i| where(["published_at < ?", i.published_at]).order("published_at DESC").limit(1) }
+ scope :next, lambda { |i| where(["published_at > ?", i.published_at]).order("published_at ASC").limit(1) }
+ end
+
+ def next
+ self.class.next(self).first
+ end
+
+ def prev
+ self.class.previous(self).first
end
def live?
diff --git a/app/views/blog/posts/show.html.erb b/app/views/blog/posts/show.html.erb
index f8d4b35..6d11197 100644
--- a/app/views/blog/posts/show.html.erb
+++ b/app/views/blog/posts/show.html.erb
@@ -31,6 +31,13 @@
<span class="st_sharethis" displayText="ShareThis"></span>
<% end %>
</article>
+ <% if next_or_previous?(@blog_post) -%>
+ <nav id="next_prev_article">
+ <%= link_to raw(truncate(@blog_post.next.title) + "&nbsp;&#187;"), @blog_post.next, :class => 'next' if @blog_post.next.present? %>
+ <%= link_to 'Blog Home', blog_root_path, :class => 'home' %>
+ <%= link_to "&#171;&nbsp;".html_safe + truncate(@blog_post.prev.title), @blog_post.prev, :class => 'prev' if @blog_post.prev.present? %>
+ </nav><!-- /next_prev_article -->
+ <% end -%>
<% if BlogPost.comments_allowed? %>
<aside id="comments">
<h2><%= t('.comments.title') %></h2>
diff --git a/public/stylesheets/refinerycms-blog.css b/public/stylesheets/refinerycms-blog.css
index 35c2ef5..5bf6cc6 100644
--- a/public/stylesheets/refinerycms-blog.css
+++ b/public/stylesheets/refinerycms-blog.css
@@ -22,4 +22,29 @@
display: block;
padding-left: 25px;
background: url('/images/refinerycms-blog/rss-feed.png') no-repeat;
+}
+#next_prev_article{
+ overflow:hidden;
+ margin:10px 0;
+ position:relative;
+ height:30px;
+}
+#next_prev_article a{
+ display:block;
+ width:33%;
+ height:30px;
+ line-height:30px;
+ position:absolute;
+ top:0;
+}
+#next_prev_article a.prev{
+ left:0;
+}
+#next_prev_article a.home{
+ left:33%;
+ text-align:center;
+}
+#next_prev_article a.next{
+ text-align:right;
+ right:0;
} \ No newline at end of file