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