46 lines
1.4 KiB
Ruby
46 lines
1.4 KiB
Ruby
class CreatorSettingsForm
|
|
include ActiveModel::Model
|
|
include ActiveModel::Attributes
|
|
|
|
attribute :checked_code_of_conduct, :boolean, default: false
|
|
attribute :checked_terms_and_conditions, :boolean, default: false
|
|
attribute :community_name, :string
|
|
attribute :invite_only_mode, :boolean
|
|
attribute :logo
|
|
attribute :primary_brand_color_hex, :string
|
|
attribute :public, :boolean
|
|
|
|
validates :community_name, :primary_brand_color_hex, presence: true
|
|
|
|
validates :checked_code_of_conduct, inclusion: { in: [true, false] }
|
|
validates :checked_terms_and_conditions, inclusion: { in: [true, false] }
|
|
validates :invite_only_mode, inclusion: { in: [true, false] }
|
|
validates :public, inclusion: { in: [true, false] }
|
|
|
|
attr_accessor :success
|
|
|
|
def save
|
|
::Settings::Community.community_name = community_name
|
|
::Settings::UserExperience.primary_brand_color_hex = primary_brand_color_hex
|
|
::Settings::Authentication.invite_only_mode = invite_only_mode
|
|
::Settings::UserExperience.public = public
|
|
|
|
if logo
|
|
logo_uploader = upload_logo(logo)
|
|
::Settings::General.original_logo = logo_uploader.url
|
|
::Settings::General.resized_logo = logo_uploader.resized_logo.url
|
|
end
|
|
@success = true
|
|
rescue StandardError => e
|
|
errors.add(:base, e.message)
|
|
@success = false
|
|
end
|
|
|
|
private
|
|
|
|
def upload_logo(image)
|
|
LogoUploader.new.tap do |uploader|
|
|
uploader.store!(image)
|
|
end
|
|
end
|
|
end
|