diff options
author | Joe Sak <joe@joesak.com> | 2010-11-20 11:35:08 -0600 |
---|---|---|
committer | Joe Sak <joe@joesak.com> | 2010-11-20 11:35:08 -0600 |
commit | a214b9e7168890ce52c3336350663669cb938ce5 (patch) | |
tree | c815cd3f8feef60163d8ae1381550ea217d81ccd | |
parent | 43d8c3a7ff35b4ec79767a204c14b33d90f7f1ab (diff) | |
download | refinerycms-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.rb | 4 | ||||
-rw-r--r-- | app/models/blog_post.rb | 30 | ||||
-rw-r--r-- | app/views/blog/posts/show.html.erb | 7 | ||||
-rw-r--r-- | public/stylesheets/refinerycms-blog.css | 25 |
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) + " »"), @blog_post.next, :class => 'next' if @blog_post.next.present? %> + <%= link_to 'Blog Home', blog_root_path, :class => 'home' %> + <%= link_to "« ".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 |