Sha256: bee35ea6293ea310d9bb09fffe1674ac6836b6936ca76067040ebaa9ccf6d713

Contents?: true

Size: 1.81 KB

Versions: 1

Compression:

Stored size: 1.81 KB

Contents

module Para
  module Admin
    module PageHelper
      def page_top_bar(options = {})
        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"

        content_tag(:div, class: 'actions-control pull-right') do
          link_to(action[:url], link_options) do
            (
              (fa_icon(action[:icon], class: 'fa-fw') if action[:icon]) +
              action[:label]
            ).html_safe
          end
        end
      end

      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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
para-0.8.11 app/helpers/para/admin/page_helper.rb