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