module AdminIt::Controller

Public Class Methods

included(base) click to toggle source
# File lib/admin_it/controller.rb, line 4
def self.included(base)
  base.class_eval do
    include Pundit if AdminIt::Env.pundit?
    before_filter :authenticate_user!

    attr_reader :context
    helper_method :context, :resource
    helper AdminIt::Helpers
    helper AdminIt::Engine.routes.url_helpers

    if AdminIt::Env.pundit?
      collections = @resource.collections.map(&:context_name)
      after_action :verify_authorized, except: collections
      after_action :verify_policy_scoped, only: collections
    end
  end
end

Public Instance Methods

redirect_to_default() click to toggle source
# File lib/admin_it/controller.rb, line 26
def redirect_to_default
  if context.child?
    redirect_to(context.parent.class.url(context.parent, section: context.section))
  else
    redirect_to(resource[resource.default_context].url)
  end
end
resource() click to toggle source
# File lib/admin_it/controller.rb, line 22
def resource
  self.class.instance_variable_get(:@resource)
end

Private Instance Methods

load_context(context_class) { || ... } click to toggle source
# File lib/admin_it/controller.rb, line 36
def load_context(context_class)
  @context = context_class.new(self)
  yield if block_given?
  layout = ['admin_it', params[:layout]].compact.join('_')
  unless performed?
    if layout == 'admin_it' && !request.query_parameters.empty?
      redirect_to request.path
    else
      Request.get(request).process!
      render template: "admin_it/#{context.name}", layout: layout
    end
  end
  @context.save
end