Sha256: 2c85b11449b6167feb884ed3ec6bc2295828c6169113af8dae4778d11f0db085

Contents?: true

Size: 1.55 KB

Versions: 9

Compression:

Stored size: 1.55 KB

Contents

class EditableBlock < ApplicationRecord
  include Checkable
  include Toggleable

  DESCRIPTION_LIMIT = 250
  NAME_LIMIT        = 50
  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

  toggleable :visible, :raw_output

  mount_uploader :image, EditablePageImageUploader

  belongs_to :language, optional: true

  validates_presence_of :name
  validates_uniqueness_of :slug, scope: [:language_id]
  validates_format_of :slug, with: SLUG_PATTERN
  validates_length_of :slug, maximum: SLUG_LIMIT
  validates_length_of :name, maximum: NAME_LIMIT
  validates_length_of :title, maximum: TITLE_LIMIT
  validates_length_of :lead, maximum: TEXT_LIMIT
  validates_length_of :body, maximum: TEXT_LIMIT
  validates_length_of :footer, maximum: TEXT_LIMIT

  scope :ordered_by_slug, -> { order('slug asc, language_id asc nulls first') }
  scope :visible, -> { where(visible: true) }
  scope :list_for_administration, -> { ordered_by_slug }

  # @param [String] slug
  # @param [String] language_code
  def self.localized_block(slug, language_code)
    language = Language.find_by(code: language_code)
    criteria = { visible: true, slug: slug }
    find_by(criteria.merge(language: language)) || find_by(criteria)
  end

  def self.entity_parameters
    %i[body description footer image language_id lead name raw_output slug title visible]
  end

  # @param [User] user
  def editable_by?(user)
    UserPrivilege.user_has_privilege?(user, :content_manager)
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
biovision-base-0.41.190905.0 app/models/editable_block.rb
biovision-base-0.39.190804.1 app/models/editable_block.rb
biovision-base-0.37.190607.0 app/models/editable_block.rb
biovision-base-0.36.190526.0 app/models/editable_block.rb
biovision-base-0.34.190331.1 app/models/editable_block.rb
biovision-base-0.22.180920.0 app/models/editable_block.rb
biovision-base-0.21.180812.0 app/models/editable_block.rb
biovision-base-0.20.180731.0 app/models/editable_block.rb
biovision-base-0.19.180703.1 app/models/editable_block.rb