debian-mirror-gitlab/app/models/appearance.rb

88 lines
2.6 KiB
Ruby
Raw Normal View History

2018-11-18 11:00:15 +05:30
# frozen_string_literal: true
2019-07-07 11:18:12 +05:30
class Appearance < ApplicationRecord
2018-11-08 19:23:39 +05:30
include CacheableAttributes
2016-11-03 12:29:30 +05:30
include CacheMarkdownField
2018-05-09 12:01:36 +05:30
include ObjectStorage::BackgroundMove
2018-11-08 19:23:39 +05:30
include WithUploads
2016-11-03 12:29:30 +05:30
cache_markdown_field :description
2018-03-17 18:26:18 +05:30
cache_markdown_field :new_project_guidelines
2020-05-24 23:13:21 +05:30
cache_markdown_field :profile_image_guidelines
2019-07-07 11:18:12 +05:30
cache_markdown_field :header_message, pipeline: :broadcast_message
cache_markdown_field :footer_message, pipeline: :broadcast_message
2016-11-03 12:29:30 +05:30
2016-04-02 18:10:28 +05:30
validates :logo, file_size: { maximum: 1.megabyte }
validates :header_logo, file_size: { maximum: 1.megabyte }
2019-07-07 11:18:12 +05:30
validates :message_background_color, allow_blank: true, color: true
validates :message_font_color, allow_blank: true, color: true
2020-05-24 23:13:21 +05:30
validates :profile_image_guidelines, length: { maximum: 4096 }
2016-04-02 18:10:28 +05:30
2017-09-10 17:25:29 +05:30
validate :single_appearance_row, on: :create
2020-03-09 13:42:32 +05:30
default_value_for :title, ''
default_value_for :description, ''
default_value_for :new_project_guidelines, ''
2020-05-24 23:13:21 +05:30
default_value_for :profile_image_guidelines, ''
2020-03-09 13:42:32 +05:30
default_value_for :header_message, ''
default_value_for :footer_message, ''
2019-07-07 11:18:12 +05:30
default_value_for :message_background_color, '#E75E40'
default_value_for :message_font_color, '#FFFFFF'
default_value_for :email_header_and_footer_enabled, false
2016-04-02 18:10:28 +05:30
mount_uploader :logo, AttachmentUploader
mount_uploader :header_logo, AttachmentUploader
2018-11-08 19:23:39 +05:30
mount_uploader :favicon, FaviconUploader
2018-03-17 18:26:18 +05:30
2018-11-08 19:23:39 +05:30
# Overrides CacheableAttributes.current_without_cache
def self.current_without_cache
first
2017-09-10 17:25:29 +05:30
end
def single_appearance_row
if self.class.any?
2020-04-08 14:13:33 +05:30
errors.add(:base, _('Only 1 appearances row can exist'))
2017-09-10 17:25:29 +05:30
end
end
2019-02-15 15:39:39 +05:30
def logo_path
logo_system_path(logo, 'logo')
end
def header_logo_path
logo_system_path(header_logo, 'header_logo')
end
def favicon_path
logo_system_path(favicon, 'favicon')
end
2019-07-07 11:18:12 +05:30
def show_header?
header_message.present?
end
def show_footer?
footer_message.present?
end
2019-02-15 15:39:39 +05:30
private
def logo_system_path(logo, mount_type)
# Legacy attachments may not have have an associated Upload record,
# so fallback to the AttachmentUploader#url if this is the
# case. AttachmentUploader#path doesn't work because for a local
# file, this is an absolute path to the file.
return logo&.url unless logo&.upload
# If we're using a CDN, we need to use the full URL
asset_host = ActionController::Base.asset_host
local_path = Gitlab::Routing.url_helpers.appearance_upload_path(
filename: logo.filename,
id: logo.upload.model_id,
model: 'appearance',
mounted_as: mount_type)
Gitlab::Utils.append_path(asset_host, local_path)
end
2016-04-02 18:10:28 +05:30
end