Module: EffectivePostsHelper
- Defined in:
- app/helpers/effective_posts_helper.rb
Instance Method Summary collapse
- #effective_post_path(post, opts = nil) ⇒ 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: 'Read more', omission: '...', length: 200) ⇒ 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) ⇒ Object
- #read_more_link(post, options) ⇒ Object (also: #readmore_link)
-
#recent_posts(user: current_user, category: 'posts', limit: EffectivePosts.per_page) ⇒ Object
Recent Posts.
- #render_post(post) ⇒ Object
- #render_post_categories(reverse: false) ⇒ Object
- #render_recent_posts(user: current_user, category: 'posts', 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
#effective_post_path(post, opts = nil) ⇒ Object
4 5 6 7 8 9 10 11 12 13 |
# File 'app/helpers/effective_posts_helper.rb', line 4 def effective_post_path(post, opts = nil) category = post.category.to_s.downcase opts ||= {} if 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 |
#link_to_post_category(category, options = {}) ⇒ Object
65 66 67 68 69 70 |
# File 'app/helpers/effective_posts_helper.rb', line 65 def link_to_post_category(category, = {}) category = category.to_s.downcase href = EffectivePosts.use_category_routes ? "/#{category}" : effective_posts.posts_path(category: category.to_s) link_to(category.to_s.titleize, href, ) end |
#link_to_submit_post(label = 'Submit a post', options = {}) ⇒ Object
Submitting a Post
98 99 100 |
# File 'app/helpers/effective_posts_helper.rb', line 98 def link_to_submit_post(label = 'Submit a post', = {}) link_to(label, effective_posts.new_post_path, ) end |
#post_categories ⇒ Object
Post Categories
57 58 59 |
# File 'app/helpers/effective_posts_helper.rb', line 57 def post_categories categories = EffectivePosts.categories end |
#post_excerpt(post, read_more_link: true, label: 'Read more', omission: '...', length: 200) ⇒ 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’
33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/helpers/effective_posts_helper.rb', line 33 def post_excerpt(post, read_more_link: true, label: 'Read more', omission: '...', length: 200) content = effective_region(post, :body, :editable => false) { '<p>Default content</p>'.html_safe } divider = content.index(Effective::Snippets::ReadMoreDivider::TOKEN) read_more = (read_more_link && label.present?) ? readmore_link(post, label: label) : '' CGI.unescapeHTML(if divider.present? truncate_html(content, Effective::Snippets::ReadMoreDivider::TOKEN, '') + read_more elsif length.present? truncate_html(content, length, omission) + read_more else content end).html_safe end |
#post_meta(post) ⇒ Object
19 20 21 22 23 24 25 26 |
# File 'app/helpers/effective_posts_helper.rb', line 19 def (post) [ 'Published', "on #{post.published_at.strftime('%B %d, %Y at %l:%M %p')}", ("to #{link_to_post_category(post.category)}" if 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
48 49 50 51 52 |
# File 'app/helpers/effective_posts_helper.rb', line 48 def read_more_link(post, ) content_tag(:p, class: 'post-read-more') do link_to((.delete(:label) || 'Read more'), effective_post_path(post), (.delete(:class) || {class: 'btn btn-primary'}).reverse_merge()) end end |
#recent_posts(user: current_user, category: 'posts', limit: EffectivePosts.per_page) ⇒ Object
Recent Posts
74 75 76 77 |
# File 'app/helpers/effective_posts_helper.rb', line 74 def recent_posts(user: current_user, category: 'posts', limit: EffectivePosts.per_page) @recent_posts ||= {} @recent_posts[category] ||= Effective::Post.posts(user: user, category: category).limit(limit) end |
#render_post(post) ⇒ Object
15 16 17 |
# File 'app/helpers/effective_posts_helper.rb', line 15 def render_post(post) render(partial: 'effective/posts/post', locals: { post: post }) end |
#render_post_categories(reverse: false) ⇒ Object
61 62 63 |
# File 'app/helpers/effective_posts_helper.rb', line 61 def render_post_categories(reverse: false) render(partial: '/effective/posts/categories', locals: { categories: (reverse ? post_categories.reverse : post_categories) }) end |
#render_recent_posts(user: current_user, category: 'posts', limit: EffectivePosts.per_page) ⇒ Object
79 80 81 82 |
# File 'app/helpers/effective_posts_helper.rb', line 79 def render_recent_posts(user: current_user, category: 'posts', 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
92 93 94 95 |
# File 'app/helpers/effective_posts_helper.rb', line 92 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
86 87 88 89 90 |
# File 'app/helpers/effective_posts_helper.rb', line 86 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 |