Class: CamaleonCms::Site
- Inherits:
-
TermTaxonomy
- Object
- ActiveRecord::Base
- TermTaxonomy
- CamaleonCms::Site
- Defined in:
- app/models/camaleon_cms/site.rb
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_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_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.
-
#set_default_user_roles(post_type = nil) ⇒ Object
auto create default user roles.
-
#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
list all users of current site.
-
#users_include_admins ⇒ Object
return all users including administrators.
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
Class Method Details
.main_site ⇒ Object
return main site
169 170 171 |
# File 'app/models/camaleon_cms/site.rb', line 169 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
96 97 98 |
# File 'app/models/camaleon_cms/site.rb', line 96 def admin_per_page get_option("admin_per_page", 10) end |
#assign_user(user) ⇒ Object
assign user to this site
86 87 88 |
# File 'app/models/camaleon_cms/site.rb', line 86 def assign_user(user) user.assign_site(self) end |
#categories ⇒ Object
all main categories for this site
46 47 48 |
# File 'app/models/camaleon_cms/site.rb', line 46 def categories CamaleonCms::Category.includes(:post_type_parent).where(post_type_parent: self.post_types.pluck(:id)) end |
#front_comment_status ⇒ Object
frontend comments status for new comments on frontend
101 102 103 |
# File 'app/models/camaleon_cms/site.rb', line 101 def front_comment_status get_option("comment_status", "pending") end |
#front_per_page ⇒ Object
items per page to be listed on frontend
91 92 93 |
# File 'app/models/camaleon_cms/site.rb', line 91 def front_per_page get_option("front_per_page", 10) end |
#full_categories ⇒ Object
select full_categories for the site, include all children categories
36 37 38 |
# File 'app/models/camaleon_cms/site.rb', line 36 def full_categories CamaleonCms::Category.where({term_group: self.id}) end |
#get_admin_language ⇒ Object
return current admin language configured for this site
59 60 61 |
# File 'app/models/camaleon_cms/site.rb', line 59 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
249 250 251 252 253 254 255 256 |
# File 'app/models/camaleon_cms/site.rb', line 249 def get_anonymous_user user = self.users.where(username: 'anonymous').first unless user.present? pass = "anonymous#{rand(9999)}" user = self.users.create({email: '[email protected]', username: 'anonymous', password: pass, password_confirmation: pass, first_name: 'Anonymous'}) end user end |
#get_languages ⇒ Object
return all languages configured by the admin if it is empty, then return default locale
52 53 54 55 56 |
# File 'app/models/camaleon_cms/site.rb', line 52 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
81 82 83 |
# File 'app/models/camaleon_cms/site.rb', line 81 def get_plugin(plugin_slug) self.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
76 77 78 |
# File 'app/models/camaleon_cms/site.rb', line 76 def get_theme(theme_slug = nil) self.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
70 71 72 |
# File 'app/models/camaleon_cms/site.rb', line 70 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
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 |
# File 'app/models/camaleon_cms/site.rb', line 214 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
233 234 235 |
# File 'app/models/camaleon_cms/site.rb', line 233 def is_active? !self.status.present? || self.status == 'active' end |
#is_inactive? ⇒ Boolean
check if current site is active or not
238 239 240 |
# File 'app/models/camaleon_cms/site.rb', line 238 def is_inactive? self.status == 'inactive' end |
#is_maintenance? ⇒ Boolean
check if current site is in maintenance or not
243 244 245 |
# File 'app/models/camaleon_cms/site.rb', line 243 def is_maintenance? self.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
175 176 177 |
# File 'app/models/camaleon_cms/site.rb', line 175 def main_site? self.class.main_site == self end |
#need_validate_email? ⇒ Boolean
110 111 112 |
# File 'app/models/camaleon_cms/site.rb', line 110 def need_validate_email? get_option('need_validate_email', false) == true end |
#post_tags ⇒ Object
all post_tags for this site
41 42 43 |
# File 'app/models/camaleon_cms/site.rb', line 41 def CamaleonCms::PostTag.includes(:post_type).where(post_type: self.post_types.pluck(:id)) end |
#security_user_register_captcha_enabled? ⇒ Boolean
security: user register form show captcha?
106 107 108 |
# File 'app/models/camaleon_cms/site.rb', line 106 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
64 65 66 |
# File 'app/models/camaleon_cms/site.rb', line 64 def set_admin_language(language) set_option("_admin_theme", language) end |
#set_default_user_roles(post_type = nil) ⇒ Object
auto create default user roles
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'app/models/camaleon_cms/site.rb', line 115 def set_default_user_roles(post_type = nil) user_role = self.user_roles.where({slug: 'admin', term_group: -1}).first_or_create({name: 'Administrator', description: 'Default roles admin'}) if user_role.valid? d, m = {}, {} pts = self.post_types.all.pluck(:id) CamaleonCms::UserRole::ROLES[:post_type].each { |value| d[value[:key]] = pts } CamaleonCms::UserRole::ROLES[:manager].each { |value| m[value[:key]] = 1 } user_role.("_post_type_#{self.id}", d || {}) user_role.("_manager_#{self.id}", m || {}) end user_role = self.user_roles.where({slug: 'editor'}).first_or_create({name: 'Editor', description: 'Editor Role'}) if user_role.valid? d = {} if post_type.present? d = user_role.("_post_type_#{self.id}", {}) CamaleonCms::UserRole::ROLES[:post_type].each { |value| value_old = d[value[:key].to_sym] || [] d[value[:key].to_sym] = value_old + [post_type.id] } else pts = self.post_types.all.pluck(:id) CamaleonCms::UserRole::ROLES[:post_type].each { |value| d[value[:key]] = pts } end user_role.("_post_type_#{self.id}", d || {}) end user_role = self.user_roles.where({slug: 'contributor'}).first_or_create({name: 'Contributor', description: 'Contributor Role'}) if user_role.valid? d = {} if post_type.present? d = user_role.("_post_type_#{self.id}", {}) CamaleonCms::UserRole::ROLES[:post_type].each { |value| value_old = d[value[:key].to_sym] || [] d[value[:key].to_sym] = value_old + [post_type.id] if value[:key].to_s == 'edit' } else pts = self.post_types.all.pluck(:id) CamaleonCms::UserRole::ROLES[:post_type].each { |value| d[value[:key]] = pts if value[:key].to_s == 'edit' } end user_role.("_post_type_#{self.id}", d || {}) end unless post_type.present? user_role = self.user_roles.where({slug: 'client', term_group: -1}).first_or_create({name: 'Client', description: 'Default roles client'}) if user_role.valid? user_role.("_post_type_#{self.id}", {}) user_role.("_manager_#{self.id}", {}) end end end |
#upload_directory(inner_directory = nil) ⇒ Object
return upload directory for this site (deprecated for cloud support)
200 201 202 |
# File 'app/models/camaleon_cms/site.rb', line 200 def upload_directory(inner_directory = nil) File.join(Rails.public_path, "/media/#{PluginRoutes.static_system_info["media_slug_folder"] ? self.slug : self.id}", inner_directory.to_s) end |
#upload_directory_name ⇒ Object
return the directory name where to upload file for this site
205 206 207 |
# File 'app/models/camaleon_cms/site.rb', line 205 def upload_directory_name "#{PluginRoutes.static_system_info["media_slug_folder"] ? self.slug : self.id}" end |
#user_roles ⇒ Object
all user roles for this site
27 28 29 30 31 32 33 |
# File 'app/models/camaleon_cms/site.rb', line 27 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
list all users of current site
182 183 184 185 186 187 188 |
# File 'app/models/camaleon_cms/site.rb', line 182 def users if PluginRoutes.system_info["users_share_sites"] CamaleonCms::User.where(site_id: -1) else CamaleonCms::User.where(site_id: self.id) end end |
#users_include_admins ⇒ Object
return all users including administrators
191 192 193 194 195 196 197 |
# File 'app/models/camaleon_cms/site.rb', line 191 def users_include_admins if PluginRoutes.system_info["users_share_sites"] CamaleonCms::User.where(site_id: -1) else CamaleonCms::User.where("site_id = ? or role = ?", self.id, 'admin') end end |