Sha256: 5f5d444d20c0d79b3fd645a85dfedf82eb0874a59f631fdf5348e56855acd4ad

Contents?: true

Size: 1.9 KB

Versions: 2

Compression:

Stored size: 1.9 KB

Contents

class Admin::BannersController < Admin::ApplicationController

  before_action :load_set, only: [:new, :create]
  before_action :load_record, only: [:edit, :update, :destroy]
  respond_to :html
  layout false

  def new
    @banner = @banner_set.banners.new(start_date: Time.zone.today)
    respond_with @banner
  end

  def create
    @banner = @banner_set.banners.build
    @banner.attributes = banner_params

    last_banner = SpudBanner.select(:sort_order)
                            .where(spud_banner_set_id: @banner_set.id)
                            .order(sort_order: :desc).first
    @banner.sort_order = last_banner.sort_order + 1 if last_banner

    if @banner.save
      flash.now[:notice] = 'Banner created successfully'
      render 'show'
    else
      render 'new', status: :unprocessable_entity
    end
  end

  def edit
    respond_with @banner
  end

  def update
    if @banner.update(banner_params)
      flash.now[:notice] = 'Banner created successfully'
      render 'show'
    else
      render 'edit', status: :unprocessable_entity
    end
  end

  def destroy
    @banner.destroy
    head :ok
  end

  # rubocop:disable Rails/SkipsModelValidations
  def sort
    banner_ids = params[:spud_banner_ids]
    banners = SpudBanner.where(id: banner_ids).to_a
    SpudBanner.transaction do
      banner_ids.each_with_index do |id, index|
        banner = banners.select { |b| b.id == id.to_i }.first
        banner.update_column(:sort_order, index)
      end
      banners.last.owner.touch
    end
    head :ok
  end
  # rubocop:enable Rails/SkipsModelValidations

  private

  def load_set
    @banner_set = SpudBannerSet.find_by!(id: params[:banner_set_id])
  end

  def load_record
    @banner = SpudBanner.find_by!(id: params[:id])
  end

  def banner_params
    params.require(:spud_banner).permit(
      :banner, :link_to, :link_target, :title, :alt, :sort_order, :rich_text, :start_date, :end_date
    )
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tb_banners-1.3.2 app/controllers/admin/banners_controller.rb
tb_banners-1.3.1 app/controllers/admin/banners_controller.rb