Sha256: 7ce035be708c7ee435601570d1ab42bf06b636f643c22a26e2ad4f1ad2eef2fa

Contents?: true

Size: 1.36 KB

Versions: 2

Compression:

Stored size: 1.36 KB

Contents

# frozen_string_literal: true

require "active_support"
require "active_support/core_ext"

require_relative "menu_tree/version"
require_relative "menu_tree/logging"
require_relative "menu_tree/config"
require_relative "menu_tree/dsl"

module ActiveAdmin
  # ActiveAdmin::MenuTree class
  module MenuTree
    class Error < StandardError; end

    class << self
      include ActiveAdmin::MenuTree::Logging

      def setup
        raise ActiveAdmin::MenuTree::Error, "No block given, require a block" unless block_given?

        yield(config)

        ActiveAdmin.before_load do |aa_config|
          ActiveAdmin::DSL.prepend ActiveAdmin::MenuTree::DSL

          setup_menu_options(aa_config)
        end
      end

      def config
        @config ||= Config.new
      end

      private

      def setup_menu_options(aa_config)
        comments_menu = config.find_menu_option(id: "Comment")
        aa_config.comments_menu = comments_menu if comments_menu.present?

        menu_options = config.menu_options
                             .reject{ |item| item[:id] == "Comment" }

        ActiveAdmin::MenuTree.log_debug("menu_options: #{menu_options.inspect}")
        aa_config.namespace :admin do |admin|
          admin.build_menu do |menu|
            menu_options.each do |option|
              menu.add(**option.dup)
            end
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
activeadmin-menu_tree-0.3.0 lib/activeadmin/menu_tree.rb
activeadmin-menu_tree-0.2.3 lib/activeadmin/menu_tree.rb