Sha256: 652fd120c7d29f58a701ed20049d71899c93e3c03222c361ec3fe274187027f7

Contents?: true

Size: 1.48 KB

Versions: 79

Compression:

Stored size: 1.48 KB

Contents

module Pageflow
  module Admin
    class Tabs
      # @api private
      def initialize
        @tabs = {}
      end

      # Display additional tabs on admin resource pages.
      #
      # @param [Symbol] resource_name A resource name like `:entry`,
      #   `:user` or `:account`
      # @param [Hash] options
      # @option options [Symbol] :name Unique identifier.
      # @option options [Arbre::Component] :component Component to
      #   render as tab contents
      # @option options [Symbol] :required_role (`nil`) Requires the
      #   current user to either have an account or entry membership
      #   with at least the given role. By default all users can see
      #   the tab.
      # @option options [Symbol] :required_account_role (`nil`)
      #   Requires the current user to have an account membership with
      #   at least the given role. By default all users can see the
      #   tab. This option only takes effect for the entry resource.
      # @option options [Boolean] :admin_only (`false`) Allow only
      #   admins to see the tab.
      def register(resource_name, options)
        @tabs[resource_name] ||= []
        @tabs[resource_name] << options
      end

      # @api private
      def find_by_resource(resource)
        @tabs.fetch(resource_name(resource), []).map do |options|
          Tab.new(options, resource)
        end
      end

      private

      def resource_name(resource)
        resource.class.model_name.param_key.to_sym
      end
    end
  end
end

Version data entries

79 entries across 79 versions & 1 rubygems

Version Path
pageflow-15.8.0 lib/pageflow/admin/tabs.rb
pageflow-14.5.2 lib/pageflow/admin/tabs.rb
pageflow-15.7.1 lib/pageflow/admin/tabs.rb
pageflow-15.7.0 lib/pageflow/admin/tabs.rb
pageflow-15.6.1 lib/pageflow/admin/tabs.rb
pageflow-15.6.0 lib/pageflow/admin/tabs.rb
pageflow-15.5.0 lib/pageflow/admin/tabs.rb
pageflow-15.4.0 lib/pageflow/admin/tabs.rb
pageflow-15.3.0 lib/pageflow/admin/tabs.rb
pageflow-15.2.2 lib/pageflow/admin/tabs.rb
pageflow-15.2.1 lib/pageflow/admin/tabs.rb
pageflow-15.2.0 lib/pageflow/admin/tabs.rb
pageflow-15.1.2 lib/pageflow/admin/tabs.rb
pageflow-15.1.1 lib/pageflow/admin/tabs.rb
pageflow-15.1.0 lib/pageflow/admin/tabs.rb
pageflow-15.1.0.rc0 lib/pageflow/admin/tabs.rb
pageflow-15.1.0.beta6 lib/pageflow/admin/tabs.rb
pageflow-15.1.0.beta5 lib/pageflow/admin/tabs.rb
pageflow-15.1.0.beta4 lib/pageflow/admin/tabs.rb
pageflow-15.1.0.beta3 lib/pageflow/admin/tabs.rb