Class: CamaleonCms::Site
- Inherits:
-
TermTaxonomy
- Object
- ActiveRecord::Base
- TermTaxonomy
- CamaleonCms::Site
- Includes:
- SiteDefaultSettings
- Defined in:
- app/models/camaleon_cms/site.rb
Instance Attribute Summary collapse
-
#site_domain ⇒ Object
attrs: [name, description, slug].
Class Method Summary collapse
-
.main_site ⇒ Object
return main site.
Instance Method Summary collapse
-
#admin_per_page ⇒ Object
items per page to be listed on admin panel.
-
#assign_user(user) ⇒ Object
assign user to this site.
-
#categories ⇒ Object
all main categories for this site.
-
#front_comment_status ⇒ Object
frontend comments status for new comments on frontend.
-
#front_per_page ⇒ Object
items per page to be listed on frontend.
-
#full_categories ⇒ Object
select full_categories for the site, include all children categories.
-
#get_admin_language ⇒ Object
return current admin language configured for this site.
-
#get_anonymous_user ⇒ Object
return the anonymous user if the anonymous user not exist, will create one.
-
#get_domain ⇒ Object
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.
-
#get_languages ⇒ Object
return all languages configured by the admin if it is empty, then return default locale.
-
#get_plugin(plugin_slug) ⇒ Object
return plugin model with slug plugin_slug.
-
#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.
-
#get_theme_slug ⇒ Object
return current theme slug configured for this site if theme was not configured, then return system.json defined.
-
#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.
-
#is_active? ⇒ Boolean
check if current site is active or not.
-
#is_enable_captcha_for_comments? ⇒ Boolean
check if current site permit capctha for anonymous comments.
-
#is_inactive? ⇒ Boolean
check if current site is active or not.
-
#is_maintenance? ⇒ Boolean
check if current site is in maintenance or not.
-
#main_site? ⇒ Boolean
(also: #is_default?)
check if this site is the main site main site is a site that doesn’t have slug.
- #need_validate_email? ⇒ Boolean
-
#post_tags ⇒ Object
all post_tags for this site.
-
#security_user_register_captcha_enabled? ⇒ Boolean
security: user register form show captcha?.
-
#set_admin_language(language) ⇒ Object
set current admin language for this site.
-
#upload_directory(inner_directory = nil) ⇒ Object
return upload directory for this site (deprecated for cloud support).
-
#upload_directory_name ⇒ Object
return the directory name where to upload file for this site.
-
#user_roles ⇒ Object
all user roles for this site.
-
#users ⇒ Object
(also: #users_include_admins)
list all users of current site.
Methods included from SiteDefaultSettings
#default_settings, #set_default_user_roles
Methods inherited from TermTaxonomy
#children, #in_nav_menu_items, #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
Instance Attribute Details
#site_domain ⇒ Object
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_site ⇒ Object
return main site
129 130 131 |
# File 'app/models/camaleon_cms/site.rb', line 129 def self.main_site @main_site ||= CamaleonCms::Site.reorder(id: :asc).first end |
Instance Method Details
#admin_per_page ⇒ Object
items per page to be listed on admin panel
105 106 107 |
# File 'app/models/camaleon_cms/site.rb', line 105 def admin_per_page get_option("admin_per_page", 10) end |
#assign_user(user) ⇒ Object
assign user to this site
95 96 97 |
# File 'app/models/camaleon_cms/site.rb', line 95 def assign_user(user) user.assign_site(self) end |
#categories ⇒ Object
all main categories for this site
54 55 56 |
# File 'app/models/camaleon_cms/site.rb', line 54 def categories CamaleonCms::Category.includes(:post_type_parent).where(post_type_parent: post_types.pluck(:id)) end |
#front_comment_status ⇒ Object
frontend comments status for new comments on frontend
110 111 112 |
# File 'app/models/camaleon_cms/site.rb', line 110 def front_comment_status get_option("comment_status", "pending") end |
#front_per_page ⇒ Object
items per page to be listed on frontend
100 101 102 |
# File 'app/models/camaleon_cms/site.rb', line 100 def front_per_page get_option("front_per_page", 10) end |
#full_categories ⇒ Object
select full_categories for the site, include all children categories
44 45 46 |
# File 'app/models/camaleon_cms/site.rb', line 44 def full_categories CamaleonCms::Category.where(site_id: self.id) end |
#get_admin_language ⇒ Object
return current admin language configured for this site
68 69 70 |
# File 'app/models/camaleon_cms/site.rb', line 68 def get_admin_language [:_admin_theme] || "en" end |
#get_anonymous_user ⇒ Object
return the anonymous user if the anonymous user not exist, will create one
201 202 203 204 205 206 207 208 |
# File 'app/models/camaleon_cms/site.rb', line 201 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_domain ⇒ Object
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
213 214 215 |
# File 'app/models/camaleon_cms/site.rb', line 213 def get_domain @site_domain || (main_site? ? slug : (slug.include?(".") ? slug : "#{slug}.#{Cama::Site.main_site.slug}")) end |
#get_languages ⇒ Object
return all languages configured by the admin if it is empty, then return default locale
60 61 62 63 64 65 |
# File 'app/models/camaleon_cms/site.rb', line 60 def get_languages return @_languages if defined?(@_languages) l = ("languages_site", [I18n.default_locale]) @_languages = l.map { |x| x.to_sym } rescue [I18n.default_locale.to_sym] end |
#get_plugin(plugin_slug) ⇒ Object
return plugin model with slug plugin_slug
90 91 92 |
# File 'app/models/camaleon_cms/site.rb', line 90 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
85 86 87 |
# File 'app/models/camaleon_cms/site.rb', line 85 def get_theme(theme_slug = nil) themes.where(slug: (theme_slug || get_theme_slug), status: nil).first_or_create! end |
#get_theme_slug ⇒ Object
return current theme slug configured for this site if theme was not configured, then return system.json defined
79 80 81 |
# File 'app/models/camaleon_cms/site.rb', line 79 def get_theme_slug [:_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
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 |
# File 'app/models/camaleon_cms/site.rb', line 165 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 = self.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
185 186 187 |
# File 'app/models/camaleon_cms/site.rb', line 185 def is_active? status.blank? || status == 'active' end |
#is_enable_captcha_for_comments? ⇒ Boolean
check if current site permit capctha for anonymous comments
120 121 122 |
# File 'app/models/camaleon_cms/site.rb', line 120 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
190 191 192 |
# File 'app/models/camaleon_cms/site.rb', line 190 def is_inactive? status == 'inactive' end |
#is_maintenance? ⇒ Boolean
check if current site is in maintenance or not
195 196 197 |
# File 'app/models/camaleon_cms/site.rb', line 195 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
135 136 137 |
# File 'app/models/camaleon_cms/site.rb', line 135 def main_site? self.class.main_site == self end |
#need_validate_email? ⇒ Boolean
124 125 126 |
# File 'app/models/camaleon_cms/site.rb', line 124 def need_validate_email? get_option('need_validate_email', false) == true end |
#post_tags ⇒ Object
all post_tags for this site
49 50 51 |
# File 'app/models/camaleon_cms/site.rb', line 49 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?
115 116 117 |
# File 'app/models/camaleon_cms/site.rb', line 115 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
73 74 75 |
# File 'app/models/camaleon_cms/site.rb', line 73 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)
151 152 153 |
# File 'app/models/camaleon_cms/site.rb', line 151 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_name ⇒ Object
return the directory name where to upload file for this site
156 157 158 |
# File 'app/models/camaleon_cms/site.rb', line 156 def upload_directory_name "#{PluginRoutes.static_system_info["media_slug_folder"] ? slug : id}" end |
#user_roles ⇒ Object
all user roles for this site
35 36 37 38 39 40 41 |
# File 'app/models/camaleon_cms/site.rb', line 35 def user_roles if PluginRoutes.system_info["users_share_sites"] CamaleonCms::Site.main_site.user_roles_rel else user_roles_rel end end |
#users ⇒ Object Also known as: users_include_admins
list all users of current site
141 142 143 144 145 146 147 |
# File 'app/models/camaleon_cms/site.rb', line 141 def users if PluginRoutes.system_info["users_share_sites"] CamaleonCms::User.all else CamaleonCms::User.where(site_id: id) end end |