Sha256: 753386812d1856d31968bd0cde3cb030340dc02b563570ba9588e88b761171c2

Contents?: true

Size: 1.21 KB

Versions: 6

Compression:

Stored size: 1.21 KB

Contents

module AbAdmin
  module Menu
    class Group < BaseGroup
      def initialize(title, options, &block)
        @menu_tree = []
        @raw_title = title
        @title = title.is_a?(Symbol) ? I18n.t(title, scope: [:admin, :navigation]) : title
        @options = options
        instance_eval &block if block_given?
      end

      def render(template)
        return if @options[:if] && !call_method_or_proc_on(template, @options[:if])
        return if @options[:unless] && call_method_or_proc_on(template, @options[:unless])

        wrapper_class = "dropdown-wrap-#{@raw_title}" if @raw_title.is_a?(Symbol)
        <<-HTML.html_safe
      <li class="dropdown #{wrapper_class}">
        <a class="dropdown-toggle" href="#{@options[:url] || '#'}" >#{title(template)}<b class="caret"></b></a>
        <ul class="dropdown-menu">#{render_nested(template)}</ul>
      <li>
        HTML
      end

      private

      def title(template)
        return @title unless @options[:badge]
        badge = call_method_or_proc_on(template, @options[:badge])
        return @title if !badge || badge == 0
        "#{@title}&nbsp;<span class='badge badge-#{@options[:badge_type] || 'important'}'>#{badge}</span>".html_safe
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ab_admin-0.9.0 lib/ab_admin/menu/group.rb
ab_admin-0.8.3 lib/ab_admin/menu/group.rb
ab_admin-0.8.2 lib/ab_admin/menu/group.rb
ab_admin-0.8.1 lib/ab_admin/menu/group.rb
ab_admin-0.8.0 lib/ab_admin/menu/group.rb
ab_admin-0.7.0 lib/ab_admin/menu/group.rb