module Tramway::Admin

Constants

VERSION

Attributes

customized_admin_navbar[R]

Public Class Methods

action_is_available?(record, project:, role:, model_name:, action:) click to toggle source
# File lib/tramway/admin.rb, line 56
def action_is_available?(record, project:, role:, model_name:, action:)
  project = project.underscore.to_sym unless project.is_a? Symbol
  actions = select_actions(project: project, role: role, model_name: model_name)
  availability = actions&.select do |a|
    if a.is_a? Symbol
      a == action.to_sym
    elsif a.is_a? Hash
      a.keys.first.to_sym == action.to_sym
    end
  end&.first

  return false unless availability.present?
  return true if availability.is_a? Symbol

  availability.values.first.call record
end
engine_class(project) click to toggle source
# File lib/tramway/admin.rb, line 29
def engine_class(project)
  class_name = "::Tramway::#{project.to_s.camelize}"
  class_name.classify.safe_constantize
end
get_models_by_key(checked_models, project, role) click to toggle source
# File lib/tramway/admin.rb, line 38
def get_models_by_key(checked_models, project, role)
  unless project.present?
    error = Tramway::Error.new(
      plugin: :admin,
      method: :get_models_by_key,
      message: "Looks like you have not create at least one instance of #{Tramway::Core.application.model_class} model OR Tramway Application Model is nil"
    )
    raise error.message
  end
  checked_models && checked_models[project]&.dig(role)&.keys || []
end
models_array(models_type:, role:) click to toggle source
# File lib/tramway/admin.rb, line 50
def models_array(models_type:, role:)
  instance_variable_get("@#{models_type}_models")&.map do |projects|
    projects.last[role]&.keys
  end&.flatten || []
end
project_is_engine?(project) click to toggle source
# File lib/tramway/admin.rb, line 34
def project_is_engine?(project)
  engine_class(project)
end
select_actions(project:, role:, model_name:) click to toggle source
# File lib/tramway/admin.rb, line 73
def select_actions(project:, role:, model_name:)
  stringify_keys(@singleton_models&.dig(project, role))&.dig(model_name) || stringify_keys(@available_models&.dig(project, role))&.dig(model_name)
end
stringify_keys(hash) click to toggle source
# File lib/tramway/admin.rb, line 77
def stringify_keys(hash)
  hash&.reduce({}) do |new_hash, pair|
    new_hash.merge! pair[0].to_s => pair[1]
  end
end