2013-02-05 14:16:51 -05:00
|
|
|
require 'site_setting_extension'
|
2013-11-06 15:47:26 -05:00
|
|
|
require_dependency 'site_settings/yaml_loader'
|
2013-02-05 14:16:51 -05:00
|
|
|
|
|
|
|
class SiteSetting < ActiveRecord::Base
|
|
|
|
extend SiteSettingExtension
|
|
|
|
|
|
|
|
validates_presence_of :name
|
|
|
|
validates_presence_of :data_type
|
|
|
|
|
2013-11-06 15:47:26 -05:00
|
|
|
SiteSettings::YamlLoader.new("#{Rails.root}/config/site_settings.yml").load do |category, name, default, opts|
|
|
|
|
# TODO: category support
|
|
|
|
if opts.delete(:client)
|
|
|
|
client_setting(name.to_sym, default)
|
|
|
|
else
|
|
|
|
setting(name.to_sym, default, opts)
|
|
|
|
end
|
|
|
|
end
|
2013-10-23 19:05:51 -04:00
|
|
|
|
2013-10-30 15:45:13 -04:00
|
|
|
|
2013-02-14 12:57:26 -05:00
|
|
|
def self.call_discourse_hub?
|
2013-03-04 19:42:44 -05:00
|
|
|
self.enforce_global_nicknames? && self.discourse_org_access_key.present?
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
|
|
|
|
2013-02-26 11:27:59 -05:00
|
|
|
def self.topic_title_length
|
|
|
|
min_topic_title_length..max_topic_title_length
|
|
|
|
end
|
|
|
|
|
2013-06-04 17:58:25 -04:00
|
|
|
def self.private_message_title_length
|
|
|
|
min_private_message_title_length..max_topic_title_length
|
|
|
|
end
|
|
|
|
|
2013-02-28 13:54:12 -05:00
|
|
|
def self.post_length
|
|
|
|
min_post_length..max_post_length
|
|
|
|
end
|
2013-03-28 09:01:13 -04:00
|
|
|
|
2013-06-13 04:18:17 -04:00
|
|
|
def self.private_message_post_length
|
|
|
|
min_private_message_post_length..max_post_length
|
|
|
|
end
|
|
|
|
|
2013-06-21 16:31:40 -04:00
|
|
|
def self.top_menu_items
|
|
|
|
top_menu.split('|').map { |menu_item| TopMenuItem.new(menu_item) }
|
|
|
|
end
|
|
|
|
|
2013-03-28 09:01:13 -04:00
|
|
|
def self.homepage
|
2013-06-21 16:31:40 -04:00
|
|
|
top_menu_items[0].name
|
2013-03-28 09:01:13 -04:00
|
|
|
end
|
|
|
|
|
2013-07-15 19:59:23 -04:00
|
|
|
def self.anonymous_menu_items
|
|
|
|
@anonymous_menu_items ||= Set.new ['latest', 'hot', 'categories', 'category']
|
|
|
|
end
|
|
|
|
|
2013-03-28 09:01:13 -04:00
|
|
|
def self.anonymous_homepage
|
2013-07-15 19:59:23 -04:00
|
|
|
top_menu_items.map { |item| item.name }
|
|
|
|
.select { |item| anonymous_menu_items.include?(item) }
|
|
|
|
.first
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.authorized_uploads
|
|
|
|
authorized_extensions.tr(" ", "")
|
|
|
|
.split("|")
|
2013-08-01 19:27:48 -04:00
|
|
|
.map { |extension| (extension.start_with?(".") ? extension[1..-1] : extension).gsub(".", "\.") }
|
2013-03-28 09:01:13 -04:00
|
|
|
end
|
|
|
|
|
2013-07-15 19:59:23 -04:00
|
|
|
def self.authorized_upload?(file)
|
2013-08-01 19:27:48 -04:00
|
|
|
authorized_uploads.count > 0 && file.original_filename =~ /\.(#{authorized_uploads.join("|")})$/i
|
2013-07-10 16:54:05 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def self.images
|
2013-08-01 19:27:48 -04:00
|
|
|
@images ||= Set.new ["jpg", "jpeg", "png", "gif", "tif", "tiff", "bmp"]
|
2013-07-15 19:59:23 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def self.authorized_images
|
|
|
|
authorized_uploads.select { |extension| images.include?(extension) }
|
2013-07-10 16:54:05 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def self.authorized_image?(file)
|
2013-08-01 19:27:48 -04:00
|
|
|
authorized_images.count > 0 && file.original_filename =~ /\.(#{authorized_images.join("|")})$/i
|
2013-07-10 16:54:05 -04:00
|
|
|
end
|
|
|
|
|
2013-02-05 14:16:51 -05:00
|
|
|
end
|
2013-05-23 22:48:32 -04:00
|
|
|
|
|
|
|
# == Schema Information
|
|
|
|
#
|
|
|
|
# Table name: site_settings
|
|
|
|
#
|
|
|
|
# id :integer not null, primary key
|
|
|
|
# name :string(255) not null
|
|
|
|
# data_type :integer not null
|
|
|
|
# value :text
|
|
|
|
# created_at :datetime not null
|
|
|
|
# updated_at :datetime not null
|
|
|
|
#
|
|
|
|
|