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