Sha256: 365c757cbfceb4f2b98c566cd4c038e947bb05e59d867d662d23a234a81a2b97

Contents?: true

Size: 1.32 KB

Versions: 8

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

module Katalyst
  module Navigation
    class ItemsController < BaseController
      before_action :set_menu
      before_action :set_item, except: %i[new create]

      def new
        render locals: { item: @menu.items.build(type: new_item_params) }
      end

      def create
        item = @menu.items.build(item_params)
        if item.save
          render :update, locals: { item: item, previous: @menu.items.build(type: item.type) }
        else
          render :new, status: :unprocessable_entity, locals: { item: item }
        end
      end

      def edit
        render locals: { item: @item }
      end

      def update
        @item.attributes = item_params

        if @item.valid?
          previous = @item
          @item    = @item.dup.tap(&:save!)
          render locals: { item: @item, previous: previous }
        else
          render :edit, status: :unprocessable_entity, locals: { item: @item }
        end
      end

      private

      def new_item_params
        params[:type] || Link.name
      end

      def item_params
        params.require(:item).permit(%i[title url visible http_method new_tab type])
      end

      def set_menu
        @menu = Menu.find(params[:menu_id])
      end

      def set_item
        @item = @menu.items.find(params[:id])
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
katalyst-navigation-1.2.0 app/controllers/katalyst/navigation/items_controller.rb
katalyst-navigation-1.1.2 app/controllers/katalyst/navigation/items_controller.rb
katalyst-navigation-1.1.1 app/controllers/katalyst/navigation/items_controller.rb
katalyst-navigation-1.1.0 app/controllers/katalyst/navigation/items_controller.rb
katalyst-navigation-1.0.3 app/controllers/katalyst/navigation/items_controller.rb
katalyst-navigation-1.0.2 app/controllers/katalyst/navigation/items_controller.rb
katalyst-navigation-1.0.1 app/controllers/katalyst/navigation/items_controller.rb
katalyst-navigation-1.0.0 app/controllers/katalyst/navigation/items_controller.rb