varvet/godmin

View on GitHub
lib/godmin/helpers/application.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Godmin
  module Helpers
    module Application
      # Renders the provided partial with locals if it exists, otherwise
      # yields the given block. The lookup context call is cached for
      # each partial.
      def partial_override(partial, locals = {}, &block)
        @_partial_override ||= {}

        unless @_partial_override.key?(partial)
          @_partial_override[partial] = lookup_context.exists?(partial, nil, true)
        end

        if @_partial_override[partial]
          render partial: partial, locals: locals
        else
          capture(&block)
        end
      end

      # Wraps the policy helper so that it is always accessible, even when
      # authorization is not enabled. When that is the case, it returns a
      # policy that always returns true.
      def policy(resource)
        if authorization_enabled?
          super(resource)
        else
          Authorization::Policy.new(nil, nil, default: true)
        end
      end
    end
  end
end