Sha256: cb50351709578c36b70521f77322d9c942ffa46f97cdb961f6a97b4cfb992503

Contents?: true

Size: 1.53 KB

Versions: 48

Compression:

Stored size: 1.53 KB

Contents

module Hyrax
  class PresenterRenderer
    include ActionView::Helpers::TranslationHelper

    def initialize(presenter, view_context)
      @presenter = presenter
      @view_context = view_context
    end

    def value(field_name, locals = {})
      render_show_field_partial(field_name, locals)
    end

    def label(field)
      t(:"#{model_name.param_key}.#{field}",
        scope: label_scope,
        default: [:"defaults.#{field}", field.to_s.humanize]).presence
    end

    def fields(terms, &_block)
      @view_context.safe_join(terms.map { |term| yield self, term })
    end

    private

      def render_show_field_partial(field_name, locals)
        partial = find_field_partial(field_name)
        @view_context.render partial, locals.merge(key: field_name, record: @presenter)
      end

      def find_field_partial(field_name)
        ["#{collection_path}/show_fields/_#{field_name}", "records/show_fields/_#{field_name}",
         "#{collection_path}/show_fields/_default", "records/show_fields/_default"].find do |partial|
          Rails.logger.debug "Looking for show field partial #{partial}"
          return partial.sub(/\/_/, '/') if partial_exists?(partial)
        end
      end

      def collection_path
        @collection_path ||= ActiveSupport::Inflector.tableize(model_name)
      end

      def partial_exists?(partial)
        @view_context.lookup_context.find_all(partial).any?
      end

      def label_scope
        :"simple_form.labels"
      end

      def model_name
        @presenter.model_name
      end
  end
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
hyrax-2.9.6 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.9.5 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.9.4 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.9.3 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.9.2 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.9.1 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.9.0 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.8.0 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.7.2 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.7.1 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.7.0 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.6.0 app/presenters/hyrax/presenter_renderer.rb
hyrax-3.0.0.pre.rc1 app/presenters/hyrax/presenter_renderer.rb
hyrax-3.0.0.pre.beta3 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.5.1 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.5.0 app/presenters/hyrax/presenter_renderer.rb
hyrax-3.0.0.pre.beta2 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.4.1 app/presenters/hyrax/presenter_renderer.rb
hyrax-3.0.0.pre.beta1 app/presenters/hyrax/presenter_renderer.rb
hyrax-2.4.0 app/presenters/hyrax/presenter_renderer.rb