class Hippo::Screen::Definition

Attributes

extension_id[RW]

Public Class Methods

new(id, extension_id) click to toggle source
# File lib/hippo/screen/definition.rb, line 22
def initialize(id, extension_id)
    self.identifier = id
    @extension_id = extension_id
    @extension    = extension_id.underscore.camelize
end

Public Instance Methods

as_json() click to toggle source
# File lib/hippo/screen/definition.rb, line 58
def as_json
    {
        id:    identifier,
        title: title,
        icon:  icon,
        model: model_class,
        view:  view_class,
        access: model_access,
        group_id: group_id,
        extension: extension,
        description: description,
        asset: asset_path
    }
end
asset_path() click to toggle source
# File lib/hippo/screen/definition.rb, line 54
def asset_path
    (asset && asset =~ /\//) ? asset : "#{@extension_id}/screens/#{asset || identifier}"
end
group() click to toggle source
# File lib/hippo/screen/definition.rb, line 28
def group
    GROUPS[@group_id]
end
has_file_matching?(pattern) click to toggle source
# File lib/hippo/screen/definition.rb, line 32
def has_file_matching?(pattern)
    Pathname.glob(root_path.join(pattern)).any?
end
model() click to toggle source
# File lib/hippo/screen/definition.rb, line 42
def model
    return nil if @model_class.blank?
    @model_class.safe_constantize || (@extension_id.camelize + '::' + @model_class).safe_constantize
end
root_path() click to toggle source
# File lib/hippo/screen/definition.rb, line 36
def root_path
    ext = Hippo::Extensions.for_identifier(@extension_id)
    raise "Unable to find extension '#{@extension_id}' for screen group" unless ext
    ext.root_path.join('client', url_prefix, identifier)
end
to_json() click to toggle source
# File lib/hippo/screen/definition.rb, line 73
def to_json
    Oj.dump(as_json, mode: :compat)
end
viewable_by?(user) click to toggle source
# File lib/hippo/screen/definition.rb, line 47
def viewable_by?(user)
    if roles.present?
        return (roles & user.role_names).any?
    end
    model.nil? || user.can_read?(self)
end