camaleon_cms 2.5.3.1 → 2.6.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of camaleon_cms might be problematic. Click here for more details.

Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/app/apps/plugins/front_cache/front_cache_helper.rb +1 -1
  3. data/app/assets/images/camaleon_cms/language/md.png +0 -0
  4. data/app/models/camaleon_cms/ability.rb +94 -92
  5. data/app/models/camaleon_cms/category.rb +45 -44
  6. data/app/models/camaleon_cms/custom_field.rb +26 -25
  7. data/app/models/camaleon_cms/custom_field_group.rb +115 -114
  8. data/app/models/camaleon_cms/custom_fields_relationship.rb +21 -19
  9. data/app/models/camaleon_cms/media.rb +48 -44
  10. data/app/models/camaleon_cms/meta.rb +5 -3
  11. data/app/models/camaleon_cms/nav_menu.rb +27 -24
  12. data/app/models/camaleon_cms/nav_menu_item.rb +58 -54
  13. data/app/models/camaleon_cms/plugin.rb +62 -60
  14. data/app/models/camaleon_cms/post.rb +205 -227
  15. data/app/models/camaleon_cms/post_comment.rb +44 -42
  16. data/app/models/camaleon_cms/post_default.rb +65 -62
  17. data/app/models/camaleon_cms/post_relationship.rb +1 -2
  18. data/app/models/camaleon_cms/post_tag.rb +9 -6
  19. data/app/models/camaleon_cms/post_type.rb +170 -163
  20. data/app/models/camaleon_cms/site.rb +211 -203
  21. data/app/models/camaleon_cms/term_relationship.rb +16 -14
  22. data/app/models/camaleon_cms/term_taxonomy.rb +49 -54
  23. data/app/models/camaleon_cms/theme.rb +24 -23
  24. data/app/models/camaleon_cms/user.rb +18 -13
  25. data/app/models/camaleon_cms/user_role.rb +130 -128
  26. data/app/models/camaleon_cms/widget/assigned.rb +25 -21
  27. data/app/models/camaleon_cms/widget/main.rb +40 -36
  28. data/app/models/camaleon_cms/widget/sidebar.rb +20 -16
  29. data/app/validators/camaleon_cms/post_uniq_validator.rb +28 -0
  30. data/app/validators/camaleon_cms/uniq_validator.rb +9 -0
  31. data/config/locales/camaleon_cms/admin/ar.yml +1 -0
  32. data/config/locales/camaleon_cms/admin/de.yml +1 -0
  33. data/config/locales/camaleon_cms/admin/en.yml +82 -21
  34. data/config/locales/camaleon_cms/admin/fr.yml +1 -0
  35. data/config/locales/camaleon_cms/admin/it.yml +1 -0
  36. data/config/locales/camaleon_cms/admin/js/de.yml +51 -0
  37. data/config/locales/camaleon_cms/admin/js/en.yml +51 -0
  38. data/config/locales/camaleon_cms/admin/js/es.yml +53 -0
  39. data/config/locales/camaleon_cms/admin/js/it.yml +44 -0
  40. data/config/locales/camaleon_cms/admin/js/nl.yml +42 -0
  41. data/config/locales/camaleon_cms/admin/js/pt-BR.yml +44 -0
  42. data/config/locales/camaleon_cms/admin/js/ru.yml +51 -0
  43. data/config/locales/camaleon_cms/admin/js/uk.yml +51 -0
  44. data/config/locales/camaleon_cms/admin/js/zh-CN.yml +51 -0
  45. data/config/locales/camaleon_cms/admin/nl.yml +1 -0
  46. data/config/locales/camaleon_cms/admin/ru.yml +1 -0
  47. data/config/locales/camaleon_cms/admin/uk.yml +2 -1
  48. data/config/locales/camaleon_cms/admin/zh-CH.yml +1 -0
  49. data/config/locales/camaleon_cms/common.md +3 -0
  50. data/config/locales/camaleon_cms/common/ar.yml +66 -0
  51. data/config/locales/camaleon_cms/common/de.yml +66 -0
  52. data/config/locales/camaleon_cms/common/en.yml +63 -0
  53. data/config/locales/camaleon_cms/common/es.yml +66 -0
  54. data/config/locales/camaleon_cms/common/fr.yml +66 -0
  55. data/config/locales/camaleon_cms/common/it.yml +63 -0
  56. data/config/locales/camaleon_cms/common/md.yml +60 -0
  57. data/config/locales/camaleon_cms/common/nl.yml +64 -0
  58. data/config/locales/camaleon_cms/common/pt-BR.yml +65 -0
  59. data/config/locales/camaleon_cms/common/pt.yml +65 -0
  60. data/config/locales/camaleon_cms/common/ru.yml +66 -0
  61. data/config/locales/camaleon_cms/common/uk.yml +64 -0
  62. data/config/locales/camaleon_cms/common/zh-CN.yml +66 -0
  63. data/config/locales/camaleon_cms/languages/ar.yml +16 -0
  64. data/config/locales/camaleon_cms/languages/de.yml +16 -0
  65. data/config/locales/camaleon_cms/languages/en.yml +16 -0
  66. data/config/locales/camaleon_cms/languages/es.yml +16 -0
  67. data/config/locales/camaleon_cms/languages/it.yml +16 -0
  68. data/config/locales/camaleon_cms/languages/md.yml +15 -0
  69. data/config/locales/camaleon_cms/languages/nl.yml +16 -0
  70. data/config/locales/camaleon_cms/languages/pt-BR.yml +16 -0
  71. data/config/locales/camaleon_cms/languages/pt.yml +16 -0
  72. data/config/locales/camaleon_cms/languages/ru.yml +16 -0
  73. data/config/locales/camaleon_cms/languages/uk.yml +16 -0
  74. data/config/locales/camaleon_cms/languages/zh-CN.yml +16 -0
  75. data/config/locales/camaleon_cms/routes/de.yml +8 -0
  76. data/config/locales/camaleon_cms/routes/es.yml +8 -0
  77. data/config/locales/camaleon_cms/routes/fr.yml +8 -0
  78. data/config/locales/camaleon_cms/routes/it.yml +8 -0
  79. data/config/locales/camaleon_cms/routes/md.yml +8 -0
  80. data/config/locales/camaleon_cms/routes/pt-BR.yml +8 -0
  81. data/config/locales/camaleon_cms/routes/pt.yml +8 -0
  82. data/config/locales/camaleon_cms/routes/ru.yml +8 -0
  83. data/config/locales/camaleon_cms/routes/uk.yml +8 -0
  84. data/config/locales/camaleon_cms/routes/zh-CN.yml +8 -0
  85. data/config/locales/md.yml +207 -0
  86. data/lib/camaleon_cms/version.rb +1 -1
  87. data/spec/dummy/config/application.rb +14 -2
  88. metadata +102 -109
  89. data/config/locales/camaleon_cms/admin/js.yml +0 -435
  90. data/config/locales/camaleon_cms/common.yml +0 -786
  91. data/config/locales/camaleon_cms/languages.yml +0 -167
  92. data/config/locales/camaleon_cms/routes.yml +0 -71
  93. data/spec/dummy/db/development.sqlite3 +0 -0
  94. data/spec/dummy/db/test.sqlite3 +0 -0
  95. data/spec/dummy/log/development.log +0 -254
  96. data/spec/dummy/log/test.log +0 -46384
  97. data/spec/dummy/public/media/1/rails_tmp.png +0 -0
  98. data/spec/dummy/public/media/1/rails_tmp_1.png +0 -0
  99. data/spec/dummy/public/media/1/rails_tmp_2.png +0 -0
  100. data/spec/dummy/public/media/1/rails_tmp_3.png +0 -0
  101. data/spec/dummy/public/media/1/sample/rails_tmp.png +0 -0
  102. data/spec/dummy/public/media/1/sample/thumb/rails_tmp-png.png +0 -0
  103. data/spec/dummy/public/media/1/slide33.jpg +0 -0
  104. data/spec/dummy/public/media/1/thumb/rails_tmp-png.png +0 -0
  105. data/spec/dummy/public/media/1/thumb/rails_tmp-png_20x.png +0 -0
  106. data/spec/dummy/public/media/1/thumb/rails_tmp-png_300x300.png +0 -0
  107. data/spec/dummy/public/media/1/thumb/rails_tmp-png_505x350.png +0 -0
  108. data/spec/dummy/public/media/1/thumb/rails_tmp_1-png.png +0 -0
  109. data/spec/dummy/public/media/1/thumb/rails_tmp_2-png.png +0 -0
  110. data/spec/dummy/public/media/1/thumb/rails_tmp_3-png.png +0 -0
  111. data/spec/dummy/public/media/1/thumb/slide33-jpg.jpg +0 -0
  112. data/spec/dummy/tmp/capybara/screenshot_2019-09-04-09-19-13.472.html +0 -457
  113. data/spec/dummy/tmp/capybara/screenshot_2019-09-04-09-19-13.472.png +0 -0
  114. data/spec/dummy/tmp/capybara/screenshot_2019-09-04-09-19-28.693.html +0 -428
  115. data/spec/dummy/tmp/capybara/screenshot_2019-09-04-09-19-28.693.png +0 -0
  116. data/spec/dummy/tmp/capybara/screenshot_2019-09-04-09-22-45.502.html +0 -337
  117. data/spec/dummy/tmp/capybara/screenshot_2019-09-04-09-22-45.502.png +0 -0
  118. data/spec/support/fixtures/rails_tmp.png +0 -0
@@ -1,242 +1,250 @@
1
- class CamaleonCms::Site < CamaleonCms::TermTaxonomy
2
- # attrs: [name, description, slug]
3
- attr_accessor :site_domain
4
- include CamaleonCms::SiteDefaultSettings
5
- default_scope { where(taxonomy: :site).reorder(term_group: :desc) }
6
- cama_define_common_relationships('Site')
7
- has_many :post_types, :class_name => "CamaleonCms::PostType", foreign_key: :parent_id, dependent: :destroy
8
- has_many :nav_menus, :class_name => "CamaleonCms::NavMenu", foreign_key: :parent_id, dependent: :destroy, inverse_of: :site
9
- has_many :nav_menu_items, :class_name => "CamaleonCms::NavMenuItem", foreign_key: :term_group
10
- has_many :widgets, :class_name => "CamaleonCms::Widget::Main", foreign_key: :parent_id, dependent: :destroy
11
- has_many :sidebars, :class_name => "CamaleonCms::Widget::Sidebar", foreign_key: :parent_id, dependent: :destroy
12
- has_many :user_roles_rel, :class_name => "CamaleonCms::UserRole", foreign_key: :parent_id, dependent: :destroy
13
- has_many :custom_field_groups, :class_name => "CamaleonCms::CustomFieldGroup", foreign_key: :parent_id, dependent: :destroy
14
- has_many :term_taxonomies, :class_name => "CamaleonCms::TermTaxonomy", foreign_key: :parent_id
15
-
16
- has_many :posts, through: :post_types, :source => :posts
17
- has_many :plugins, :class_name => "CamaleonCms::Plugin", foreign_key: :parent_id, dependent: :destroy
18
- has_many :themes, :class_name => "CamaleonCms::Theme", foreign_key: :parent_id, dependent: :destroy
19
- has_many :public_media, ->{ where(is_public: true) }, class_name: 'CamaleonCms::Media', foreign_key: :site_id, dependent: :destroy
20
- has_many :private_media, ->{ where(is_public: false) }, class_name: 'CamaleonCms::Media', foreign_key: :site_id, dependent: :destroy
21
-
22
- after_create :default_settings
23
- after_create :set_default_user_roles
24
- after_save :update_routes
25
- before_destroy :destroy_site
26
- after_destroy :reload_routes
27
- validates_uniqueness_of :slug, scope: :taxonomy
28
-
29
- # all user roles for this site
30
- def user_roles
31
- if PluginRoutes.system_info["users_share_sites"]
32
- CamaleonCms::Site.main_site.user_roles_rel
33
- else
34
- user_roles_rel
1
+ module CamaleonCms
2
+ class Site < CamaleonCms::TermTaxonomy
3
+ include CamaleonCms::SiteDefaultSettings
4
+
5
+ # attrs: [name, description, slug]
6
+ attr_accessor :site_domain
7
+
8
+ default_scope { where(taxonomy: :site).reorder(term_group: :desc) }
9
+
10
+ cama_define_common_relationships('Site')
11
+ has_many :post_types, class_name: "CamaleonCms::PostType", foreign_key: :parent_id, dependent: :destroy
12
+ has_many :nav_menus, class_name: "CamaleonCms::NavMenu", foreign_key: :parent_id, dependent: :destroy, inverse_of: :site
13
+ has_many :nav_menu_items, class_name: "CamaleonCms::NavMenuItem", foreign_key: :term_group
14
+ has_many :widgets, class_name: "CamaleonCms::Widget::Main", foreign_key: :parent_id, dependent: :destroy
15
+ has_many :sidebars, class_name: "CamaleonCms::Widget::Sidebar", foreign_key: :parent_id, dependent: :destroy
16
+ has_many :user_roles_rel, class_name: "CamaleonCms::UserRole", foreign_key: :parent_id, dependent: :destroy
17
+ has_many :custom_field_groups, class_name: "CamaleonCms::CustomFieldGroup", foreign_key: :parent_id, dependent: :destroy
18
+ has_many :term_taxonomies, class_name: "CamaleonCms::TermTaxonomy", foreign_key: :parent_id
19
+
20
+ has_many :posts, through: :post_types, source: :posts
21
+ has_many :plugins, class_name: "CamaleonCms::Plugin", foreign_key: :parent_id, dependent: :destroy
22
+ has_many :themes, class_name: "CamaleonCms::Theme", foreign_key: :parent_id, dependent: :destroy
23
+ has_many :public_media, ->{ where(is_public: true) }, class_name: 'CamaleonCms::Media', foreign_key: :site_id, dependent: :destroy
24
+ has_many :private_media, ->{ where(is_public: false) }, class_name: 'CamaleonCms::Media', foreign_key: :site_id, dependent: :destroy
25
+
26
+ after_create :default_settings
27
+ after_create :set_default_user_roles
28
+ after_save :update_routes
29
+ before_destroy :destroy_site
30
+ after_destroy :reload_routes
31
+
32
+ validates_uniqueness_of :slug, scope: :taxonomy
33
+
34
+ # all user roles for this site
35
+ def user_roles
36
+ if PluginRoutes.system_info["users_share_sites"]
37
+ CamaleonCms::Site.main_site.user_roles_rel
38
+ else
39
+ user_roles_rel
40
+ end
35
41
  end
36
- end
37
42
 
38
- #select full_categories for the site, include all children categories
39
- def full_categories
40
- CamaleonCms::Category.where({site_id: self.id})
41
- end
43
+ #select full_categories for the site, include all children categories
44
+ def full_categories
45
+ CamaleonCms::Category.where(site_id: self.id)
46
+ end
42
47
 
43
- # all post_tags for this site
44
- def post_tags
45
- CamaleonCms::PostTag.includes(:post_type).where(post_type: self.post_types.pluck(:id))
46
- end
48
+ # all post_tags for this site
49
+ def post_tags
50
+ CamaleonCms::PostTag.includes(:post_type).where(post_type: post_types.pluck(:id))
51
+ end
47
52
 
48
- # all main categories for this site
49
- def categories
50
- CamaleonCms::Category.includes(:post_type_parent).where(post_type_parent: self.post_types.pluck(:id))
51
- end
53
+ # all main categories for this site
54
+ def categories
55
+ CamaleonCms::Category.includes(:post_type_parent).where(post_type_parent: post_types.pluck(:id))
56
+ end
52
57
 
53
- # return all languages configured by the admin
54
- # if it is empty, then return default locale
55
- def get_languages
56
- return @_languages if defined?(@_languages)
57
- l = get_meta("languages_site", [I18n.default_locale])
58
- @_languages = l.map { |x| x.to_sym } rescue [I18n.default_locale.to_sym]
59
- end
58
+ # return all languages configured by the admin
59
+ # if it is empty, then return default locale
60
+ def get_languages
61
+ return @_languages if defined?(@_languages)
60
62
 
61
- # return current admin language configured for this site
62
- def get_admin_language
63
- options[:_admin_theme] || "en"
64
- end
63
+ l = get_meta("languages_site", [I18n.default_locale])
64
+ @_languages = l.map { |x| x.to_sym } rescue [I18n.default_locale.to_sym]
65
+ end
65
66
 
66
- # set current admin language for this site
67
- def set_admin_language(language)
68
- set_option("_admin_theme", language)
69
- end
67
+ # return current admin language configured for this site
68
+ def get_admin_language
69
+ options[:_admin_theme] || "en"
70
+ end
70
71
 
71
- # return current theme slug configured for this site
72
- # if theme was not configured, then return system.json defined
73
- def get_theme_slug
74
- options[:_theme] || PluginRoutes.system_info["default_template"]
75
- end
72
+ # set current admin language for this site
73
+ def set_admin_language(language)
74
+ set_option("_admin_theme", language)
75
+ end
76
76
 
77
- # return theme model with slug theme_slug for this site
78
- # theme_slug: (optional) if it is null, this will return current theme for this site
79
- def get_theme(theme_slug = nil)
80
- self.themes.where(slug: (theme_slug || get_theme_slug), status: nil).first_or_create!
81
- end
77
+ # return current theme slug configured for this site
78
+ # if theme was not configured, then return system.json defined
79
+ def get_theme_slug
80
+ options[:_theme] || PluginRoutes.system_info["default_template"]
81
+ end
82
82
 
83
- # return plugin model with slug plugin_slug
84
- def get_plugin(plugin_slug)
85
- self.plugins.where(slug: plugin_slug).first_or_create!
86
- end
83
+ # return theme model with slug theme_slug for this site
84
+ # theme_slug: (optional) if it is null, this will return current theme for this site
85
+ def get_theme(theme_slug = nil)
86
+ themes.where(slug: (theme_slug || get_theme_slug), status: nil).first_or_create!
87
+ end
87
88
 
88
- # assign user to this site
89
- def assign_user(user)
90
- user.assign_site(self)
91
- end
89
+ # return plugin model with slug plugin_slug
90
+ def get_plugin(plugin_slug)
91
+ plugins.where(slug: plugin_slug).first_or_create!
92
+ end
92
93
 
93
- # items per page to be listed on frontend
94
- def front_per_page
95
- get_option("front_per_page", 10)
96
- end
94
+ # assign user to this site
95
+ def assign_user(user)
96
+ user.assign_site(self)
97
+ end
97
98
 
98
- # items per page to be listed on admin panel
99
- def admin_per_page
100
- get_option("admin_per_page", 10)
101
- end
99
+ # items per page to be listed on frontend
100
+ def front_per_page
101
+ get_option("front_per_page", 10)
102
+ end
102
103
 
103
- # frontend comments status for new comments on frontend
104
- def front_comment_status
105
- get_option("comment_status", "pending")
106
- end
104
+ # items per page to be listed on admin panel
105
+ def admin_per_page
106
+ get_option("admin_per_page", 10)
107
+ end
107
108
 
108
- # security: user register form show captcha?
109
- def security_user_register_captcha_enabled?
110
- get_option('security_captcha_user_register', false) == true
111
- end
112
-
113
- # check if current site permit capctha for anonymous comments
114
- def is_enable_captcha_for_comments?
115
- get_option('enable_captcha_for_comments', false)
116
- end
109
+ # frontend comments status for new comments on frontend
110
+ def front_comment_status
111
+ get_option("comment_status", "pending")
112
+ end
117
113
 
118
- def need_validate_email?
119
- get_option('need_validate_email', false) == true
120
- end
114
+ # security: user register form show captcha?
115
+ def security_user_register_captcha_enabled?
116
+ get_option('security_captcha_user_register', false) == true
117
+ end
121
118
 
122
- # return main site
123
- def self.main_site
124
- @main_site ||= CamaleonCms::Site.reorder(id: :asc).first
125
- end
119
+ # check if current site permit capctha for anonymous comments
120
+ def is_enable_captcha_for_comments?
121
+ get_option('enable_captcha_for_comments', false)
122
+ end
126
123
 
127
- # check if this site is the main site
128
- # main site is a site that doesn't have slug
129
- def main_site?
130
- self.class.main_site == self
131
- end
132
- alias_method :is_default?, :main_site?
124
+ def need_validate_email?
125
+ get_option('need_validate_email', false) == true
126
+ end
133
127
 
134
- # list all users of current site
135
- def users
136
- if PluginRoutes.system_info["users_share_sites"]
137
- CamaleonCms::User.all
138
- else
139
- CamaleonCms::User.where(site_id: self.id)
128
+ # return main site
129
+ def self.main_site
130
+ @main_site ||= CamaleonCms::Site.reorder(id: :asc).first
140
131
  end
141
- end
142
- alias_method :users_include_admins, :users
143
132
 
144
- # return upload directory for this site (deprecated for cloud support)
145
- def upload_directory(inner_directory = nil)
146
- File.join(Rails.public_path, "/media/#{PluginRoutes.static_system_info["media_slug_folder"] ? self.slug : self.id}", inner_directory.to_s)
147
- end
133
+ # check if this site is the main site
134
+ # main site is a site that doesn't have slug
135
+ def main_site?
136
+ self.class.main_site == self
137
+ end
138
+ alias_method :is_default?, :main_site?
139
+
140
+ # list all users of current site
141
+ def users
142
+ if PluginRoutes.system_info["users_share_sites"]
143
+ CamaleonCms::User.all
144
+ else
145
+ CamaleonCms::User.where(site_id: id)
146
+ end
147
+ end
148
+ alias_method :users_include_admins, :users
148
149
 
149
- # return the directory name where to upload file for this site
150
- def upload_directory_name
151
- "#{PluginRoutes.static_system_info["media_slug_folder"] ? self.slug : self.id}"
152
- end
150
+ # return upload directory for this site (deprecated for cloud support)
151
+ def upload_directory(inner_directory = nil)
152
+ File.join(Rails.public_path, "/media/#{PluginRoutes.static_system_info["media_slug_folder"] ? slug : id}", inner_directory.to_s)
153
+ end
153
154
 
154
- # return an available slug for a new post
155
- # slug: (String) possible slug value
156
- # post_id: (integer, optional) current post id
157
- # sample: ("<!--:es-->features-1<!--:--><!--:en-->caract-1<!--:-->") | ("features")
158
- # return: (String) available slugs
159
- def get_valid_post_slug(slug, post_id=nil)
160
- slugs = slug.translations
161
- if slugs.present?
162
- slugs.each do |k, v|
163
- slugs[k] = get_valid_post_slug(v)
164
- end
165
- slugs.to_translate
166
- else
167
- res = slug
168
- (1..9999).each do |i|
169
- p = self.posts.find_by_slug(res)
170
- break if !p.present? || (p.present? && p.id == post_id)
171
- res = "#{slug}-#{i}"
155
+ # return the directory name where to upload file for this site
156
+ def upload_directory_name
157
+ "#{PluginRoutes.static_system_info["media_slug_folder"] ? slug : id}"
158
+ end
159
+
160
+ # return an available slug for a new post
161
+ # slug: (String) possible slug value
162
+ # post_id: (integer, optional) current post id
163
+ # sample: ("<!--:es-->features-1<!--:--><!--:en-->caract-1<!--:-->") | ("features")
164
+ # return: (String) available slugs
165
+ def get_valid_post_slug(slug, post_id=nil)
166
+ slugs = slug.translations
167
+ if slugs.present?
168
+ slugs.each do |k, v|
169
+ slugs[k] = get_valid_post_slug(v)
170
+ end
171
+ slugs.to_translate
172
+ else
173
+ res = slug
174
+ (1..9999).each do |i|
175
+ p = self.posts.find_by_slug(res)
176
+ break if !p.present? || (p.present? && p.id == post_id)
177
+
178
+ res = "#{slug}-#{i}"
179
+ end
180
+ res
172
181
  end
173
- res
174
182
  end
175
- end
176
183
 
177
- # check if current site is active or not
178
- def is_active?
179
- !self.status.present? || self.status == 'active'
180
- end
184
+ # check if current site is active or not
185
+ def is_active?
186
+ status.blank? || status == 'active'
187
+ end
181
188
 
182
- # check if current site is active or not
183
- def is_inactive?
184
- self.status == 'inactive'
185
- end
189
+ # check if current site is active or not
190
+ def is_inactive?
191
+ status == 'inactive'
192
+ end
186
193
 
187
- # check if current site is in maintenance or not
188
- def is_maintenance?
189
- self.status == 'maintenance'
190
- end
194
+ # check if current site is in maintenance or not
195
+ def is_maintenance?
196
+ status == 'maintenance'
197
+ end
191
198
 
192
- # return the anonymous user
193
- # if the anonymous user not exist, will create one
194
- def get_anonymous_user
195
- user = self.users.where(username: 'anonymous').first
196
- unless user.present?
197
- pass = "anonymous#{rand(9999)}"
198
- user = self.users.create({email: 'anonymous_user@local.com', username: 'anonymous', password: pass, password_confirmation: pass, first_name: 'Anonymous'})
199
+ # return the anonymous user
200
+ # if the anonymous user not exist, will create one
201
+ def get_anonymous_user
202
+ user = users.where(username: 'anonymous').first
203
+ unless user.present?
204
+ pass = "anonymous#{rand(9999)}"
205
+ user = users.create({email: 'anonymous_user@local.com', username: 'anonymous', password: pass, password_confirmation: pass, first_name: 'Anonymous'})
206
+ end
207
+ user
199
208
  end
200
- user
201
- end
202
209
 
203
- # return the domain for current site
204
- # sample: mysite.com | sample.mysite.com
205
- # 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
206
- def get_domain
207
- @site_domain || (main_site? ? slug : (slug.include?(".") ? slug : "#{slug}.#{Cama::Site.main_site.slug}"))
208
- end
210
+ # return the domain for current site
211
+ # sample: mysite.com | sample.mysite.com
212
+ # 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
+ def get_domain
214
+ @site_domain || (main_site? ? slug : (slug.include?(".") ? slug : "#{slug}.#{Cama::Site.main_site.slug}"))
215
+ end
209
216
 
210
- private
211
- # destroy all things before site destroy
212
- def destroy_site
213
- unless PluginRoutes.system_info["users_share_sites"]
214
- CamaleonCms::User.where(site_id: self.id).destroy_all
217
+ private
218
+ # destroy all things before site destroy
219
+ def destroy_site
220
+ unless PluginRoutes.system_info["users_share_sites"]
221
+ CamaleonCms::User.where(site_id: id).destroy_all
222
+ end
223
+ FileUtils.rm_rf(File.join(Rails.public_path, "/media/#{upload_directory_name}").to_s) # destroy current media directory
224
+ users.destroy_all unless PluginRoutes.system_info["users_share_sites"] # destroy all users assigned fot this site
215
225
  end
216
- FileUtils.rm_rf(File.join(Rails.public_path, "/media/#{upload_directory_name}").to_s) # destroy current media directory
217
- users.destroy_all unless PluginRoutes.system_info["users_share_sites"] # destroy all users assigned fot this site
218
- end
219
226
 
220
- # assign all users to this new site
221
- # DEPRECATED
222
- def set_all_users
223
- return
224
- end
227
+ # assign all users to this new site
228
+ # DEPRECATED
229
+ def set_all_users
230
+ return
231
+ end
225
232
 
226
- # update all routes of the system
227
- # reload system routes for this site
228
- def update_routes
229
- PluginRoutes.reload if cama_attr_changed?(:slug)
230
- end
233
+ # update all routes of the system
234
+ # reload system routes for this site
235
+ def update_routes
236
+ PluginRoutes.reload if cama_attr_changed?(:slug)
237
+ end
231
238
 
232
- def reload_routes
233
- PluginRoutes.reload
234
- end
239
+ def reload_routes
240
+ PluginRoutes.reload
241
+ end
235
242
 
236
- def before_validating
237
- slug = self.slug
238
- slug = self.name if slug.blank?
239
- self.name = slug unless self.name.present?
240
- self.slug = slug.to_s.try(:downcase)
243
+ def before_validating
244
+ slug = self.slug
245
+ slug = name if slug.blank?
246
+ self.name = slug if name.blank?
247
+ self.slug = slug.to_s.try(:downcase)
248
+ end
241
249
  end
242
250
  end