module SimpleNavigation
module Renderer
# This is the base class for all renderers.
#
# A renderer is responsible for rendering an ItemContainer and its containing items to HTML.
class Base
include ActionView::Helpers::UrlHelper
include ActionView::Helpers::TagHelper
attr_reader :controller
class << self
# Delegates method calls to the controller.
def controller_method(*methods)
methods.each do |method|
delegate method, :to => :controller
end
end
end
controller_method :form_authenticity_token, :protect_against_forgery?, :request_forgery_protection_token
def initialize #:nodoc:
@controller = SimpleNavigation.controller
end
# Renders the specified ItemContainer to HTML.
#
# If include_sub_navigation is set to true, the renderer should nest the sub_navigation for the active navigation
# inside that navigation item.
#
# A renderer should also take the option SimpleNavigation.config.render_all_levels into account. If it is set to true then it should render all navigation levels
# independent of the include_sub_navigation option.
#
def render(item_container, include_sub_navigation=false)
raise 'subclass responsibility'
end
end
end
end