app/helpers/para/admin/page_helper.rb in para-0.8.10 vs app/helpers/para/admin/page_helper.rb in para-0.8.11

- old
+ new

@@ -1,16 +1,20 @@ module Para module Admin module PageHelper def page_top_bar(options = {}) - content_tag(:div, class: 'page-title row') do + top_bar = content_tag(:div, class: 'page-title row') do content_tag(:h1, options[:title]) + if (actions = actions_for(options[:type])) actions.map(&method(:build_action)).join('').html_safe end end + + # Return both top bar and component navigation to be displayed at the top of the + # page. + top_bar + component_navigation end def build_action(action) link_options = action.fetch(:link_options, {}) link_options[:class] ||= "btn btn-default btn-shadow" @@ -27,9 +31,29 @@ def actions_for(type) Para.config.page_actions_for(type).map do |action| instance_eval(&action) end.compact + end + + def component_navigation + parent_component = ( + @component.parent_component || + @component.child_components.any? && @component + ) + + return unless parent_component + + # If the component has a `model_type` option, therefore, an associated model, + # we try to render the partial from the relative path of the model, else we + # use the component class as the base target path + partial_target = parent_component.try(:model_type) || parent_component + + render partial: find_partial_for(partial_target, :navigation), + locals: { + parent_component: parent_component, + active_component: @component + } end end end end