Module: EffectivePostsHelper
- Defined in:
 - app/helpers/effective_posts_helper.rb
 
Instance Method Summary collapse
- #admin_post_status_badge(post) ⇒ Object
 - #effective_post_category_path(category, opts = nil) ⇒ Object
 - #effective_post_path(post, opts = nil) ⇒ Object
 - #effective_posts_header_tags ⇒ Object
 - #link_to_post_category(category, options = {}) ⇒ Object
 - 
  
    
      #link_to_submit_post(label = 'Submit a post', options = {})  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Submitting a Post.
 - 
  
    
      #post_categories  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Post Categories.
 - 
  
    
      #post_excerpt(post, read_more_link: true, label: 'Continue reading', omission: '...', length: nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Only supported options are: :label => ‘Read more’ to set the label of the ‘Read More’ link :omission => ‘…’ passed to the final text node’s truncate :length => 200 to set the max inner_text length of the content All other options are passed to the link_to ‘Read more’.
 - #post_meta(post, date: true, datetime: false, category: true, author: true) ⇒ Object
 - #read_more_link(post, options = {}) ⇒ Object (also: #readmore_link)
 - 
  
    
      #recent_news(user: current_user, category: 'news', limit: EffectivePosts.per_page)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Recent News.
 - 
  
    
      #recent_posts(user: current_user, category: nil, limit: EffectivePosts.per_page)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Recent Posts.
 - #render_post(post) ⇒ Object
 - #render_post_categories(reverse: false) ⇒ Object
 - #render_recent_news(user: current_user, category: 'news', limit: EffectivePosts.per_page) ⇒ Object
 - #render_recent_posts(user: current_user, category: nil, limit: EffectivePosts.per_page) ⇒ Object
 - #render_upcoming_events(user: current_user, category: 'events', limit: EffectivePosts.per_page) ⇒ Object
 - 
  
    
      #upcoming_events(user: current_user, category: 'events', limit: EffectivePosts.per_page)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Upcoming Events.
 
Instance Method Details
#admin_post_status_badge(post) ⇒ Object
      65 66 67 68 69 70 71 72 73  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 65 def admin_post_status_badge(post) return nil unless EffectivePosts.(self, :admin, :effective_posts) if post.draft? content_tag(:span, 'DRAFT', class: 'badge badge-info') elsif post.published? == false content_tag(:span, "TO BE PUBLISHED AT #{post.published_at.strftime('%F %H:%M')}", class: 'badge badge-info') end end  | 
  
#effective_post_category_path(category, opts = nil) ⇒ Object
      31 32 33 34 35 36 37 38 39 40 41 42 43 44  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 31 def effective_post_category_path(category, opts = nil) return effective_posts.posts_path unless category.present? category = category.to_s.downcase opts ||= {} if EffectivePosts.use_blog_routes "/blog/category/#{category}" elsif EffectivePosts.use_category_routes "/#{category}" else effective_posts.posts_path(opts.merge(category: category)) end end  | 
  
#effective_post_path(post, opts = nil) ⇒ Object
      18 19 20 21 22 23 24 25 26 27 28 29  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 18 def effective_post_path(post, opts = nil) category = post.category.to_s.downcase opts ||= {} if EffectivePosts.use_blog_routes effective_posts.post_path(post, opts) elsif EffectivePosts.use_category_routes effective_posts.post_path(post, opts).sub('/posts', "/#{category}") else effective_posts.post_path(post, opts.merge(category: category)) end end  | 
  
#effective_posts_header_tags ⇒ Object
      5 6 7 8 9 10 11 12 13 14 15 16  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 5 def return unless @post.present? && @post.kind_of?(Effective::Post) @effective_pages_og_type = 'article' = [ tag(:meta, itemprop: 'author', content: @post.user.to_s), tag(:meta, itemprop: 'publisher', content: @post.user.to_s), tag(:meta, itemprop: 'datePublised', content: @post.published_at.strftime('%FT%T%:z')), tag(:meta, itemprop: 'headline', content: @post.title) ].join("\n").html_safe end  | 
  
#link_to_post_category(category, options = {}) ⇒ Object
      46 47 48 49  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 46 def link_to_post_category(category, = {}) category = category.to_s.downcase link_to(category.to_s.titleize, effective_post_category_path(category), title: category.to_s.titleize) end  | 
  
#link_to_submit_post(label = 'Submit a post', options = {}) ⇒ Object
Submitting a Post
      154 155 156  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 154 def link_to_submit_post(label = 'Submit a post', = {}) link_to(label, effective_posts.new_post_path, ) end  | 
  
#post_categories ⇒ Object
Post Categories
      109 110 111  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 109 def post_categories categories = EffectivePosts.categories end  | 
  
#post_excerpt(post, read_more_link: true, label: 'Continue reading', omission: '...', length: nil) ⇒ Object
Only supported options are: :label => ‘Read more’ to set the label of the ‘Read More’ link :omission => ‘…’ passed to the final text node’s truncate :length => 200 to set the max inner_text length of the content All other options are passed to the link_to ‘Read more’
      80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 80 def post_excerpt(post, read_more_link: true, label: 'Continue reading', omission: '...', length: nil) content = effective_region(post, :body, editable: false) { '<p>Default content</p>'.html_safe } divider = content.index(Effective::Snippets::ReadMoreDivider::TOKEN) excerpt = post.excerpt.to_s read_more = (read_more_link && label.present?) ? readmore_link(post, label: label) : '' html = ( if divider.present? truncate_html(content, Effective::Snippets::ReadMoreDivider::TOKEN, '') elsif length.present? truncate_html(excerpt, length, omission) else excerpt end ).html_safe (html + read_more).html_safe end  | 
  
#post_meta(post, date: true, datetime: false, category: true, author: true) ⇒ Object
      55 56 57 58 59 60 61 62 63  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 55 def (post, date: true, datetime: false, category: true, author: true) [ 'Published', ("on #{post.published_at.strftime('%B %d, %Y')}" if date), ("on #{post.published_at.strftime('%B %d, %Y at %l:%M %p')}" if datetime), ("to #{link_to_post_category(post.category)}" if category && Array(EffectivePosts.categories).length > 1), ("by #{post.user.to_s.presence || 'Unknown'}" if && EffectivePosts. && post.user.present?) ].compact.join(' ').html_safe end  | 
  
#read_more_link(post, options = {}) ⇒ Object Also known as: readmore_link
      100 101 102 103 104  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 100 def read_more_link(post, = {}) content_tag(:p, class: 'post-read-more') do link_to((.delete(:label) || 'Continue reading'), effective_post_path(post), (.delete(:class) || {class: ''}).reverse_merge()) end end  | 
  
#recent_news(user: current_user, category: 'news', limit: EffectivePosts.per_page) ⇒ Object
Recent News
      130 131 132 133  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 130 def recent_news(user: current_user, category: 'news', limit: EffectivePosts.per_page) @recent_news ||= {} @recent_news[category] ||= Effective::Post.posts(user: user, category: category).limit(limit) end  | 
  
#recent_posts(user: current_user, category: nil, limit: EffectivePosts.per_page) ⇒ Object
Recent Posts
      119 120 121 122  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 119 def recent_posts(user: current_user, category: nil, limit: EffectivePosts.per_page) @recent_posts ||= {} @recent_posts[category] ||= Effective::Post.posts(user: user, category: category).limit(limit) end  | 
  
#render_post(post) ⇒ Object
      51 52 53  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 51 def render_post(post) render(partial: 'effective/posts/post', locals: { post: post }) end  | 
  
#render_post_categories(reverse: false) ⇒ Object
      113 114 115  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 113 def render_post_categories(reverse: false) render(partial: '/effective/posts/categories', locals: { categories: (reverse ? post_categories.reverse : post_categories) }) end  | 
  
#render_recent_news(user: current_user, category: 'news', limit: EffectivePosts.per_page) ⇒ Object
      135 136 137 138  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 135 def render_recent_news(user: current_user, category: 'news', limit: EffectivePosts.per_page) posts = recent_news(user: user, category: category, limit: limit) render partial: '/effective/posts/recent_posts', locals: { posts: posts } end  | 
  
#render_recent_posts(user: current_user, category: nil, limit: EffectivePosts.per_page) ⇒ Object
      124 125 126 127  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 124 def render_recent_posts(user: current_user, category: nil, limit: EffectivePosts.per_page) posts = recent_posts(user: user, category: category, limit: limit) render partial: '/effective/posts/recent_posts', locals: { posts: posts } end  | 
  
#render_upcoming_events(user: current_user, category: 'events', limit: EffectivePosts.per_page) ⇒ Object
      148 149 150 151  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 148 def render_upcoming_events(user: current_user, category: 'events', limit: EffectivePosts.per_page) posts = upcoming_events(user: user, category: category, limit: limit) render partial: '/effective/posts/upcoming_events', locals: { posts: posts } end  | 
  
#upcoming_events(user: current_user, category: 'events', limit: EffectivePosts.per_page) ⇒ Object
Upcoming Events
      142 143 144 145 146  | 
    
      # File 'app/helpers/effective_posts_helper.rb', line 142 def upcoming_events(user: current_user, category: 'events', limit: EffectivePosts.per_page) @upcoming_events ||= {} @upcoming_events[category] ||= Effective::Post.posts(user: user, category: category).limit(limit) .reorder(:start_at).where('start_at > ?', Time.zone.now) end  |