Class: LinkBlockItem

Inherits:
ApplicationRecord show all
Includes:
Checkable, Toggleable
Defined in:
app/models/link_block_item.rb

Constant Summary collapse

BUTTON_TEXT_LIMIT =
50
META_LIMIT =
255
PRIORITY_RANGE =
(1..32767)
SLUG_LIMIT =
50
SLUG_PATTERN =
/\A[a-z][-_a-z0-9]*[a-z]\z/i
SLUG_PATTERN_HTML =
'^[a-zA-Z][-_a-zA_Z0-9]*[a-zA-Z]$'
TITLE_LIMIT =
255
TEXT_LIMIT =
5000
URL_LIMIT =
255

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.creation_parametersObject



44
45
46
# File 'app/models/link_block_item.rb', line 44

def self.creation_parameters
  entity_parameters + %i(link_block_id)
end

.entity_parametersObject



40
41
42
# File 'app/models/link_block_item.rb', line 40

def self.entity_parameters
  %i(body button_text button_url image image_alt_text priority slug title visible)
end

Instance Method Details

#change_priority(delta) ⇒ Object

Parameters:

  • delta (Integer)


57
58
59
60
61
62
63
64
65
66
67
# File 'app/models/link_block_item.rb', line 57

def change_priority(delta)
  new_priority = priority + delta
  criteria     = { priority: new_priority }
  adjacent     = self.class.siblings(link_block_id).find_by(criteria)
  if adjacent.is_a?(self.class) && (adjacent.id != id)
    adjacent.update!(priority: priority)
  end
  update(priority: new_priority)

  self.class.siblings(link_block_id).ordered_by_priority.map { |e| [e.id, e.priority] }.to_h
end


48
49
50
51
52
53
54
# File 'app/models/link_block_item.rb', line 48

def text_for_link
  if title.blank?
    slug.blank? ? "#{link_block.slug}-#{priority}" : slug
  else
    title
  end
end