Class: BaseBlock

Inherits:
Forest::ApplicationRecord show all
Defined in:
app/models/blocks/base_block.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Forest::ApplicationRecord

cache_key, cache_key_name, csv_columns, #expire_cache_key, expire_cache_key, statusable?, #statusable?, to_csv_template, #to_friendly_param, #to_label, #to_select2_response, #to_select2_selection, versionable, #versionable

Class Method Details

.display_iconObject

Override to add a Bootstrap 3 glyphicon next to the block’s title.



16
17
18
# File 'app/models/blocks/base_block.rb', line 16

def self.display_icon
  'glyphicon glyphicon-tree-conifer'
end

.display_nameObject

Override to customize the display name of the block.



11
12
13
# File 'app/models/blocks/base_block.rb', line 11

def self.display_name
  'Base Block'
end

.kindObject



20
21
22
# File 'app/models/blocks/base_block.rb', line 20

def self.kind
  BlockKind.find_by_name(name)
end

Instance Method Details

#as_indexed_json(options = {}) ⇒ Object



129
130
131
132
133
# File 'app/models/blocks/base_block.rb', line 129

def as_indexed_json(options={})
  self.as_json({
    only: indexed_attributes
  })
end

#block?Boolean



32
33
34
# File 'app/models/blocks/base_block.rb', line 32

def block?
  true
end

#block_idObject



56
57
58
# File 'app/models/blocks/base_block.rb', line 56

def block_id
  "#{self.model_name.singular.dasherize}-#{self.id}"
end

#block_kindObject



60
61
62
# File 'app/models/blocks/base_block.rb', line 60

def block_kind
  @block_kind ||= BlockKind.find_by_name(self.class.name)
end

#block_layoutObject



72
73
74
# File 'app/models/blocks/base_block.rb', line 72

def block_layout
  block_slot.block_layout
end

#block_recordObject



64
65
66
# File 'app/models/blocks/base_block.rb', line 64

def block_record
  @block_record ||= block_slot.block_record
end

#block_record_idObject



68
69
70
# File 'app/models/blocks/base_block.rb', line 68

def block_record_id
  block_record.block_record.id
end

#blocksObject



76
77
78
# File 'app/models/blocks/base_block.rb', line 76

def blocks
  block_record.blocks(block_layout: block_layout)
end

#css_classObject

Override to add css classes to a block’s wrapper.



37
38
# File 'app/models/blocks/base_block.rb', line 37

def css_class
end

#css_stylesObject

Override to add css styles to a block’s wrapper.



41
42
# File 'app/models/blocks/base_block.rb', line 41

def css_styles
end

#data_attributesObject

Override to add data attributes to a block’s wrapper. Make sure this is a hash.



45
46
# File 'app/models/blocks/base_block.rb', line 45

def data_attributes
end

#display_iconObject



48
49
50
# File 'app/models/blocks/base_block.rb', line 48

def display_icon
  self.class.display_icon
end

#display_nameObject



24
25
26
# File 'app/models/blocks/base_block.rb', line 24

def display_name
  self.class.display_name
end

#even_of_kind?Boolean



100
101
102
# File 'app/models/blocks/base_block.rb', line 100

def even_of_kind?
  blocks.kind(self.class).index(self).even?
end

#first?Boolean



84
85
86
# File 'app/models/blocks/base_block.rb', line 84

def first?
  index == 0
end

#first_of_kind?Boolean



92
93
94
# File 'app/models/blocks/base_block.rb', line 92

def first_of_kind?
  blocks.first_of_kind(self.class) == self
end

#hidden?Boolean



28
29
30
# File 'app/models/blocks/base_block.rb', line 28

def hidden?
  false
end

#indexObject



80
81
82
# File 'app/models/blocks/base_block.rb', line 80

def index
  blocks.index(self)
end

#indexed_attributesObject

Override this in your block to define which attributes should be indexed for search



123
124
125
126
127
# File 'app/models/blocks/base_block.rb', line 123

def indexed_attributes
  self.class.columns.select { |c| %i(text string).include?(c.type) }
         .collect(&:name)
         .reject { |c| c =~ /_url$/ } - non_indexed_attributes
end

#last?Boolean



88
89
90
# File 'app/models/blocks/base_block.rb', line 88

def last?
  index == blocks.length - 1
end

#last_of_kind?Boolean



96
97
98
# File 'app/models/blocks/base_block.rb', line 96

def last_of_kind?
  blocks.last_of_kind(self.class) == self
end

#nextObject



113
114
115
116
# File 'app/models/blocks/base_block.rb', line 113

def next
  return nil if last?
  blocks[index + 1]
end

#non_indexed_attributesObject



118
119
120
# File 'app/models/blocks/base_block.rb', line 118

def non_indexed_attributes
  %W(id created_at updated_at)
end

#odd_of_kind?Boolean



104
105
106
# File 'app/models/blocks/base_block.rb', line 104

def odd_of_kind?
  blocks.kind(self.class).index(self).odd?
end

#permitted_paramsObject



52
53
54
# File 'app/models/blocks/base_block.rb', line 52

def permitted_params
  self.class.permitted_params
end

#previousObject



108
109
110
111
# File 'app/models/blocks/base_block.rb', line 108

def previous
  return nil if first?
  blocks[index - 1]
end