Class: SimpleNavigation::Configuration

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/simple_navigation/core/configuration.rb

Overview

Responsible for evaluating and handling the config/navigation.rb file.

Instance Attribute Summary (collapse)

Class Method Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (Configuration) initialize

Sets the config's default-settings



27
28
29
30
31
32
33
34
35
# File 'lib/simple_navigation/core/configuration.rb', line 27

def initialize
  @renderer = SimpleNavigation.default_renderer || SimpleNavigation::Renderer::List
  @selected_class = 'selected'
  @active_leaf_class = 'simple-navigation-active-leaf'
  @autogenerate_item_ids = true
  @id_generator = Proc.new {|id| id.to_s }
  @name_generator = Proc.new {|name| name}
  @auto_highlight = true
end

Instance Attribute Details

- (Object) active_leaf_class

Returns the value of attribute active_leaf_class



9
10
11
# File 'lib/simple_navigation/core/configuration.rb', line 9

def active_leaf_class
  @active_leaf_class
end

- (Object) auto_highlight

Returns the value of attribute auto_highlight



9
10
11
# File 'lib/simple_navigation/core/configuration.rb', line 9

def auto_highlight
  @auto_highlight
end

- (Object) autogenerate_item_ids

Returns the value of attribute autogenerate_item_ids



9
10
11
# File 'lib/simple_navigation/core/configuration.rb', line 9

def autogenerate_item_ids
  @autogenerate_item_ids
end

- (Object) id_generator

Returns the value of attribute id_generator



9
10
11
# File 'lib/simple_navigation/core/configuration.rb', line 9

def id_generator
  @id_generator
end

- (Object) name_generator

Returns the value of attribute name_generator



9
10
11
# File 'lib/simple_navigation/core/configuration.rb', line 9

def name_generator
  @name_generator
end

- (Object) primary_navigation (readonly)

Returns the value of attribute primary_navigation



10
11
12
# File 'lib/simple_navigation/core/configuration.rb', line 10

def primary_navigation
  @primary_navigation
end

- (Object) renderer

Returns the value of attribute renderer



9
10
11
# File 'lib/simple_navigation/core/configuration.rb', line 9

def renderer
  @renderer
end

- (Object) selected_class

Returns the value of attribute selected_class



9
10
11
# File 'lib/simple_navigation/core/configuration.rb', line 9

def selected_class
  @selected_class
end

Class Method Details

+ (Object) eval_config(navigation_context = :default)

Evals the config_file for the given navigation_context



15
16
17
# File 'lib/simple_navigation/core/configuration.rb', line 15

def eval_config(navigation_context = :default)
  SimpleNavigation.context_for_eval.instance_eval(SimpleNavigation.config_files[navigation_context])
end

+ (Object) run(&block)

Starts processing the configuration



20
21
22
# File 'lib/simple_navigation/core/configuration.rb', line 20

def run(&block)
  block.call Configuration.instance
end

Instance Method Details

- (Object) items(items_provider = nil, &block)

This is the main method for specifying the navigation items. It can be used in two ways:

  1. Declaratively specify your items in the config/navigation.rb file using a block. It then yields an SimpleNavigation::ItemContainer for adding navigation items.

  2. Directly provide your items to the method (e.g. when loading your items from the database).

Example for block style (configuration file)

config.items do |primary|
  primary.item :my_item, 'My item', my_item_path
  ...
end

To consider when directly providing items

items_provider should be:

  • a methodname (as symbol) that returns your items. The method needs to be available in the view (i.e. a helper method)

  • an object that responds to :items

  • an enumerable containing your items

The items you specify have to fullfill certain requirements. See SimpleNavigation::ItemAdapter for more details.



55
56
57
58
59
60
61
62
63
# File 'lib/simple_navigation/core/configuration.rb', line 55

def items(items_provider=nil, &block)
  raise 'please specify either items_provider or block, but not both' if (items_provider && block) || (items_provider.nil? && block.nil?)
  @primary_navigation = ItemContainer.new
  if block
    block.call @primary_navigation
  else
    @primary_navigation.items = SimpleNavigation::ItemsProvider.new(items_provider).items
  end
end

- (Boolean) loaded?

Returns true if the config_file has already been evaluated.



66
67
68
# File 'lib/simple_navigation/core/configuration.rb', line 66

def loaded?
  !@primary_navigation.nil?
end