Sha256: 1d0ee456f5f144ba7d85a047ba253f3328543cad7388a8f3825ef913523e9735

Contents?: true

Size: 1.57 KB

Versions: 3

Compression:

Stored size: 1.57 KB

Contents

class Comfy::Admin::Blog::PostsController < Comfy::Admin::Cms::BaseController

  before_action :build_post, only: [:new, :create]
  before_action :load_post,  only: [:edit, :update, :destroy]
  before_action :authorize

  def index
    return redirect_to action: :new if @site.blog_posts.count == 0

    posts_scope = @site.blog_posts.
      includes(:categories).for_category(params[:categories]).order(published_at: :desc)
    @posts = comfy_paginate(posts_scope)
  end

  def new
    render
  end

  def create
    @post.save!
    flash[:success] = t('.created')
    redirect_to action: :edit, id: @post

  rescue ActiveRecord::RecordInvalid
    flash.now[:danger] = t('.create_failure')
    render action: :new
  end

  def edit
    render
  end

  def update
    @post.update_attributes!(post_params)
    flash[:success] = t('.updated')
    redirect_to action: :edit, id: @post

  rescue ActiveRecord::RecordInvalid
    flash.now[:danger] = t('.update_failure')
    render action: :edit
  end

  def destroy
    @post.destroy
    flash[:success] = t('.deleted')
    redirect_to action: :index
  end

protected

  def load_post
    @post = @site.blog_posts.find(params[:id])
  rescue ActiveRecord::RecordNotFound
    flash[:danger] = t('.not_found')
    redirect_to action: :index
  end

  def build_post
    layout = (@site.blog_posts.order(:created_at).last.try(:layout) || @site.layouts.order(:created_at).first)
    @post = @site.blog_posts.new(post_params)
    @post.published_at ||= Time.zone.now
    @post.layout ||= layout
  end

  def post_params
    params.fetch(:post, {}).permit!
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
comfy_blog-2.0.2 app/controllers/comfy/admin/blog/posts_controller.rb
comfy_blog-2.0.1 app/controllers/comfy/admin/blog/posts_controller.rb
comfy_blog-2.0.0 app/controllers/comfy/admin/blog/posts_controller.rb