app/controllers/comfy/blog/posts_controller.rb
# frozen_string_literal: true
class Comfy::Blog::PostsController < Comfy::Cms::BaseController
include Comfy::Paginate
def index
scope =
if params[:year]
scope = @cms_site.blog_posts.published.for_year(params[:year])
params[:month] ? scope.for_month(params[:month]) : scope
else
@cms_site.blog_posts.published
end
scope = scope.for_category(params[:category]) if params[:category]
scope = scope.order(:published_at).reverse_order
@blog_posts = comfy_paginate(scope, per_page: ComfyBlog.config.posts_per_page)
render layout: ComfyBlog.config.app_layout
end
def show
load_post
render layout: app_layout
rescue ActiveRecord::RecordNotFound
render cms_page: "/404", status: 404
end
private
def load_post
post_scope = @cms_site.blog_posts.published.where(slug: params[:slug])
@cms_post =
if params[:year] && params[:month]
post_scope.where(year: params[:year], month: params[:month]).first!
else
post_scope.first!
end
@cms_layout = @cms_post.layout
end
def app_layout
return false unless @cms_layout
@cms_layout.app_layout.present? ? @cms_layout.app_layout : false
end
end