Class: CamaleonCms::Site

Inherits:
TermTaxonomy show all
Includes:
SiteDefaultSettings
Defined in:
app/models/camaleon_cms/site.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from SiteDefaultSettings

#default_settings, #set_default_user_roles

Methods inherited from TermTaxonomy

#children, #in_nav_menu_items, inherited, #skip_slug_validation?

Methods included from CustomFieldsRead

#add_custom_field_group, #add_custom_field_to_default_group, #get_field_groups, #get_field_object, #get_field_value, #get_field_values, #get_field_values_hash, #get_fields_grouped, #get_fields_object, #get_user_field_groups, #save_field_value, #set_field_value, #set_field_values, #update_field_value

Methods included from Metas

#delete_meta, #delete_option, #fix_save_metas_options_no_changed, #get_meta, #get_option, #options, #save_metas_options, #save_metas_options_skip, #set_meta, #set_metas, #set_option, #set_options

Methods inherited from CamaleonRecord

#cama_build_cache_key, #cama_fetch_cache, #cama_get_cache, #cama_remove_cache, #cama_set_cache

Instance Attribute Details

#site_domainObject

attrs: [name, description, slug]



6
7
8
# File 'app/models/camaleon_cms/site.rb', line 6

def site_domain
  @site_domain
end

Class Method Details

.main_siteObject

return main site



137
138
139
# File 'app/models/camaleon_cms/site.rb', line 137

def self.main_site
  @main_site ||= CamaleonCms::Site.reorder(id: :asc).first
end

Instance Method Details

#admin_per_pageObject

items per page to be listed on admin panel



113
114
115
# File 'app/models/camaleon_cms/site.rb', line 113

def admin_per_page
  get_option('admin_per_page', 10)
end

#assign_user(user) ⇒ Object

assign user to this site



103
104
105
# File 'app/models/camaleon_cms/site.rb', line 103

def assign_user(user)
  user.assign_site(self)
end

#categoriesObject

all main categories for this site



58
59
60
# File 'app/models/camaleon_cms/site.rb', line 58

def categories
  CamaleonCms::Category.includes(:post_type_parent).where(post_type_parent: post_types.pluck(:id))
end

#front_comment_statusObject

frontend comments status for new comments on frontend



118
119
120
# File 'app/models/camaleon_cms/site.rb', line 118

def front_comment_status
  get_option('comment_status', 'pending')
end

#front_per_pageObject

items per page to be listed on frontend



108
109
110
# File 'app/models/camaleon_cms/site.rb', line 108

def front_per_page
  get_option('front_per_page', 10)
end

#full_categoriesObject

select full_categories for the site, include all children categories



48
49
50
# File 'app/models/camaleon_cms/site.rb', line 48

def full_categories
  CamaleonCms::Category.where(site_id: id)
end

#get_admin_languageObject

return current admin language configured for this site



76
77
78
# File 'app/models/camaleon_cms/site.rb', line 76

def get_admin_language
  options[:_admin_theme] || 'en'
end

#get_anonymous_userObject

return the anonymous user if the anonymous user not exist, will create one



210
211
212
213
214
215
216
217
218
# File 'app/models/camaleon_cms/site.rb', line 210

def get_anonymous_user
  user = users.where(username: 'anonymous').first
  unless user.present?
    pass = "anonymous#{rand(9999)}"
    user = users.create({ email: '[email protected]', username: 'anonymous', password: pass,
                          password_confirmation: pass, first_name: 'Anonymous' })
  end
  user
end

#get_domainObject

return the domain for current site sample: mysite.com | sample.mysite.com also, you can define custom domain for this site by: my_site.site_domain = ‘my_site.com’ # used for sites with different domains to call from console or task



223
224
225
226
227
228
229
# File 'app/models/camaleon_cms/site.rb', line 223

def get_domain
  @site_domain || (if main_site?
                     slug
                   else
                     (slug.include?('.') ? slug : "#{slug}.#{Cama::Site.main_site.slug}")
                   end)
end

#get_languagesObject

return all languages configured by the admin if it is empty, then return default locale



64
65
66
67
68
69
70
71
72
73
# File 'app/models/camaleon_cms/site.rb', line 64

def get_languages
  return @_languages if defined?(@_languages)

  l = get_meta('languages_site', [I18n.default_locale])
  @_languages = begin
    l.map(&:to_sym)
  rescue StandardError
    [I18n.default_locale.to_sym]
  end
end

#get_plugin(plugin_slug) ⇒ Object

return plugin model with slug plugin_slug



98
99
100
# File 'app/models/camaleon_cms/site.rb', line 98

def get_plugin(plugin_slug)
  plugins.where(slug: plugin_slug).first_or_create!
end

#get_theme(theme_slug = nil) ⇒ Object

return theme model with slug theme_slug for this site theme_slug: (optional) if it is null, this will return current theme for this site



93
94
95
# File 'app/models/camaleon_cms/site.rb', line 93

def get_theme(theme_slug = nil)
  themes.where(slug: (theme_slug || get_theme_slug), status: nil).first_or_create!
end

#get_theme_slugObject

return current theme slug configured for this site if theme was not configured, then return system.json defined



87
88
89
# File 'app/models/camaleon_cms/site.rb', line 87

def get_theme_slug
  options[:_theme] || PluginRoutes.system_info['default_template']
end

#get_valid_post_slug(slug, post_id = nil) ⇒ Object

return an available slug for a new post slug: (String) possible slug value post_id: (integer, optional) current post id sample: (“<!–:es–>features-1<!–:–><!–:en–>caract-1<!–:–>”) | (“features”) return: (String) available slugs



174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# File 'app/models/camaleon_cms/site.rb', line 174

def get_valid_post_slug(slug, post_id = nil)
  slugs = slug.translations
  if slugs.present?
    slugs.each do |k, v|
      slugs[k] = get_valid_post_slug(v)
    end
    slugs.to_translate
  else
    res = slug
    (1..9999).each do |i|
      p = posts.find_by_slug(res)
      break if !p.present? || (p.present? && p.id == post_id)

      res = "#{slug}-#{i}"
    end
    res
  end
end

#is_active?Boolean

check if current site is active or not

Returns:

  • (Boolean)


194
195
196
# File 'app/models/camaleon_cms/site.rb', line 194

def is_active?
  status.blank? || status == 'active'
end

#is_enable_captcha_for_comments?Boolean

check if current site permit capctha for anonymous comments

Returns:

  • (Boolean)


128
129
130
# File 'app/models/camaleon_cms/site.rb', line 128

def is_enable_captcha_for_comments?
  get_option('enable_captcha_for_comments', false)
end

#is_inactive?Boolean

check if current site is active or not

Returns:

  • (Boolean)


199
200
201
# File 'app/models/camaleon_cms/site.rb', line 199

def is_inactive?
  status == 'inactive'
end

#is_maintenance?Boolean

check if current site is in maintenance or not

Returns:

  • (Boolean)


204
205
206
# File 'app/models/camaleon_cms/site.rb', line 204

def is_maintenance?
  status == 'maintenance'
end

#main_site?Boolean Also known as: is_default?

check if this site is the main site main site is a site that doesn’t have slug

Returns:

  • (Boolean)


143
144
145
# File 'app/models/camaleon_cms/site.rb', line 143

def main_site?
  self.class.main_site == self
end

#need_validate_email?Boolean

Returns:

  • (Boolean)


132
133
134
# File 'app/models/camaleon_cms/site.rb', line 132

def need_validate_email?
  get_option('need_validate_email', false) == true
end

#post_tagsObject

all post_tags for this site



53
54
55
# File 'app/models/camaleon_cms/site.rb', line 53

def 
  CamaleonCms::PostTag.includes(:post_type).where(post_type: post_types.pluck(:id))
end

#security_user_register_captcha_enabled?Boolean

security: user register form show captcha?

Returns:

  • (Boolean)


123
124
125
# File 'app/models/camaleon_cms/site.rb', line 123

def security_user_register_captcha_enabled?
  get_option('security_captcha_user_register', false) == true
end

#set_admin_language(language) ⇒ Object

set current admin language for this site



81
82
83
# File 'app/models/camaleon_cms/site.rb', line 81

def set_admin_language(language)
  set_option('_admin_theme', language)
end

#upload_directory(inner_directory = nil) ⇒ Object

return upload directory for this site (deprecated for cloud support)



159
160
161
162
# File 'app/models/camaleon_cms/site.rb', line 159

def upload_directory(inner_directory = nil)
  File.join(Rails.public_path, "/media/#{PluginRoutes.static_system_info['media_slug_folder'] ? slug : id}",
            inner_directory.to_s)
end

#upload_directory_nameObject

return the directory name where to upload file for this site



165
166
167
# File 'app/models/camaleon_cms/site.rb', line 165

def upload_directory_name
  (PluginRoutes.static_system_info['media_slug_folder'] ? slug : id).to_s
end

#user_rolesObject

all user roles for this site



39
40
41
42
43
44
45
# File 'app/models/camaleon_cms/site.rb', line 39

def user_roles
  if PluginRoutes.system_info['users_share_sites']
    CamaleonCms::Site.main_site.user_roles_rel
  else
    user_roles_rel
  end
end

#usersObject Also known as: users_include_admins

list all users of current site



149
150
151
152
153
154
155
# File 'app/models/camaleon_cms/site.rb', line 149

def users
  if PluginRoutes.system_info['users_share_sites']
    CamaleonCms::User.all
  else
    CamaleonCms::User.where(site_id: id)
  end
end