class SimpleNavigation::Configuration
Responsible for evaluating and handling the config/navigation.rb file.
Attributes
Public Class Methods
Evals the config_file for the given navigation_context
# File lib/simple_navigation/core/configuration.rb, line 21 def self.eval_config(navigation_context = :default) context = SimpleNavigation.config_files[navigation_context] SimpleNavigation.context_for_eval.instance_eval(context) end
Sets the config's default-settings
# File lib/simple_navigation/core/configuration.rb, line 32 def initialize @autogenerate_item_ids = true @auto_highlight = true @consider_item_names_as_safe = false end
Starts processing the configuration
# File lib/simple_navigation/core/configuration.rb, line 27 def self.run(&block) block.call Configuration.instance end
Public Instance Methods
# File lib/simple_navigation/core/configuration.rb, line 38 def active_leaf_class @active_leaf_class ||= 'simple-navigation-active-leaf' end
# File lib/simple_navigation/core/configuration.rb, line 42 def id_generator @id_generator ||= :to_s.to_proc end
This is the main method for specifying the navigation items. It can be used in two ways:
-
Declaratively specify your items in the config/navigation.rb file using a block. It then yields an SimpleNavigation::ItemContainer for adding navigation items.
-
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.
# File lib/simple_navigation/core/configuration.rb, line 70 def items(items_provider = nil, &block) if (items_provider && block) || (items_provider.nil? && block.nil?) fail('please specify either items_provider or block, but not both') end self.primary_navigation = ItemContainer.new if block block.call primary_navigation else primary_navigation.items = ItemsProvider.new(items_provider).items end end
Returns true if the config_file has already been evaluated.
# File lib/simple_navigation/core/configuration.rb, line 85 def loaded? !primary_navigation.nil? end
# File lib/simple_navigation/core/configuration.rb, line 89 def name_generator @name_generator ||= proc { |name| name } end
# File lib/simple_navigation/core/configuration.rb, line 93 def renderer @renderer ||= SimpleNavigation.default_renderer || SimpleNavigation::Renderer::List end
# File lib/simple_navigation/core/configuration.rb, line 98 def selected_class @selected_class ||= 'selected' end