Module: Viewable

Extended by:
ActiveSupport::Concern
Included in:
Block, Form, Image, Link, Page, Select, Text
Defined in:
app/models/viewable.rb,
app/models/viewable/form.rb,
app/models/viewable/link.rb,
app/models/viewable/page.rb,
app/models/viewable/text.rb,
app/models/viewable/block.rb,
app/models/viewable/image.rb,
app/models/viewable/select.rb,
app/models/viewable/field/url.rb,
app/models/viewable/field/uuid.rb,
app/presenters/viewable/form_presenter.rb,
app/presenters/viewable/link_presenter.rb,
app/presenters/viewable/page_presenter.rb,
app/presenters/viewable/text_presenter.rb,
app/presenters/viewable/view_presenter.rb,
app/presenters/viewable/block_presenter.rb,
app/presenters/viewable/image_presenter.rb,
app/presenters/viewable/select_presenter.rb,
app/presenters/viewable/link_list_presenter.rb,
app/presenters/viewable/select_list_presenter.rb

Defined Under Namespace

Modules: Field Classes: Block, BlockPresenter, Form, FormPresenter, Image, ImagePresenter, Link, LinkListPresenter, LinkPresenter, Page, PagePresenter, Select, SelectListPresenter, SelectPresenter, Text, TextPresenter, ViewPresenter

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.modelsObject



79
80
81
# File 'app/models/viewable.rb', line 79

def models
  @_models ||= names.map{ |name| "Viewable::#{name.camelize}" }
end

.namesObject



83
84
85
# File 'app/models/viewable.rb', line 83

def names
  @_names ||= CMS.rb_all_names 'app/models/viewable'
end

Instance Method Details

#list(locale = nil) ⇒ Object



59
60
61
62
63
# File 'app/models/viewable.rb', line 59

def list(locale = nil)
  self.class.includes(:unique_key)
    .where(unique_keys: { viewable_type: viewable_type, view_path: view_path, name: unique_key_name })
    .where(unique_keys: { locale: locale || self.locale })
end

#other_locales(position = nil) ⇒ Object



65
66
67
68
69
70
# File 'app/models/viewable.rb', line 65

def other_locales(position = nil)
  self.class.includes(:unique_key)
    .where(unique_keys: { viewable_type: viewable_type, view_path: view_path, name: unique_key_name })
    .where(unique_keys: { position: position || self.position })
    .where.not(unique_keys: { locale: locale })
end

#short_typeObject



55
56
57
# File 'app/models/viewable.rb', line 55

def short_type
  viewable_type.demodulize.underscore
end

#unique_key_hash(locale = nil) ⇒ Object



72
73
74
75
76
# File 'app/models/viewable.rb', line 72

def unique_key_hash(locale = nil)
  unique_key
    .slice(:viewable_type, :view_path, :name, :position)
    .merge(locale: locale || self.locale)
end