camaleon_cms 2.5.3.1 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of camaleon_cms might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/apps/plugins/front_cache/front_cache_helper.rb +1 -1
- data/app/assets/images/camaleon_cms/language/md.png +0 -0
- data/app/models/camaleon_cms/ability.rb +94 -92
- data/app/models/camaleon_cms/category.rb +45 -44
- data/app/models/camaleon_cms/custom_field.rb +26 -25
- data/app/models/camaleon_cms/custom_field_group.rb +115 -114
- data/app/models/camaleon_cms/custom_fields_relationship.rb +21 -19
- data/app/models/camaleon_cms/media.rb +48 -44
- data/app/models/camaleon_cms/meta.rb +5 -3
- data/app/models/camaleon_cms/nav_menu.rb +27 -24
- data/app/models/camaleon_cms/nav_menu_item.rb +58 -54
- data/app/models/camaleon_cms/plugin.rb +62 -60
- data/app/models/camaleon_cms/post.rb +205 -227
- data/app/models/camaleon_cms/post_comment.rb +44 -42
- data/app/models/camaleon_cms/post_default.rb +65 -62
- data/app/models/camaleon_cms/post_relationship.rb +1 -2
- data/app/models/camaleon_cms/post_tag.rb +9 -6
- data/app/models/camaleon_cms/post_type.rb +170 -163
- data/app/models/camaleon_cms/site.rb +211 -203
- data/app/models/camaleon_cms/term_relationship.rb +16 -14
- data/app/models/camaleon_cms/term_taxonomy.rb +49 -54
- data/app/models/camaleon_cms/theme.rb +24 -23
- data/app/models/camaleon_cms/user.rb +18 -13
- data/app/models/camaleon_cms/user_role.rb +130 -128
- data/app/models/camaleon_cms/widget/assigned.rb +25 -21
- data/app/models/camaleon_cms/widget/main.rb +40 -36
- data/app/models/camaleon_cms/widget/sidebar.rb +20 -16
- data/app/validators/camaleon_cms/post_uniq_validator.rb +28 -0
- data/app/validators/camaleon_cms/uniq_validator.rb +9 -0
- data/config/locales/camaleon_cms/admin/ar.yml +1 -0
- data/config/locales/camaleon_cms/admin/de.yml +1 -0
- data/config/locales/camaleon_cms/admin/en.yml +82 -21
- data/config/locales/camaleon_cms/admin/fr.yml +1 -0
- data/config/locales/camaleon_cms/admin/it.yml +1 -0
- data/config/locales/camaleon_cms/admin/js/de.yml +51 -0
- data/config/locales/camaleon_cms/admin/js/en.yml +51 -0
- data/config/locales/camaleon_cms/admin/js/es.yml +53 -0
- data/config/locales/camaleon_cms/admin/js/it.yml +44 -0
- data/config/locales/camaleon_cms/admin/js/nl.yml +42 -0
- data/config/locales/camaleon_cms/admin/js/pt-BR.yml +44 -0
- data/config/locales/camaleon_cms/admin/js/ru.yml +51 -0
- data/config/locales/camaleon_cms/admin/js/uk.yml +51 -0
- data/config/locales/camaleon_cms/admin/js/zh-CN.yml +51 -0
- data/config/locales/camaleon_cms/admin/nl.yml +1 -0
- data/config/locales/camaleon_cms/admin/ru.yml +1 -0
- data/config/locales/camaleon_cms/admin/uk.yml +2 -1
- data/config/locales/camaleon_cms/admin/zh-CH.yml +1 -0
- data/config/locales/camaleon_cms/common.md +3 -0
- data/config/locales/camaleon_cms/common/ar.yml +66 -0
- data/config/locales/camaleon_cms/common/de.yml +66 -0
- data/config/locales/camaleon_cms/common/en.yml +63 -0
- data/config/locales/camaleon_cms/common/es.yml +66 -0
- data/config/locales/camaleon_cms/common/fr.yml +66 -0
- data/config/locales/camaleon_cms/common/it.yml +63 -0
- data/config/locales/camaleon_cms/common/md.yml +60 -0
- data/config/locales/camaleon_cms/common/nl.yml +64 -0
- data/config/locales/camaleon_cms/common/pt-BR.yml +65 -0
- data/config/locales/camaleon_cms/common/pt.yml +65 -0
- data/config/locales/camaleon_cms/common/ru.yml +66 -0
- data/config/locales/camaleon_cms/common/uk.yml +64 -0
- data/config/locales/camaleon_cms/common/zh-CN.yml +66 -0
- data/config/locales/camaleon_cms/languages/ar.yml +16 -0
- data/config/locales/camaleon_cms/languages/de.yml +16 -0
- data/config/locales/camaleon_cms/languages/en.yml +16 -0
- data/config/locales/camaleon_cms/languages/es.yml +16 -0
- data/config/locales/camaleon_cms/languages/it.yml +16 -0
- data/config/locales/camaleon_cms/languages/md.yml +15 -0
- data/config/locales/camaleon_cms/languages/nl.yml +16 -0
- data/config/locales/camaleon_cms/languages/pt-BR.yml +16 -0
- data/config/locales/camaleon_cms/languages/pt.yml +16 -0
- data/config/locales/camaleon_cms/languages/ru.yml +16 -0
- data/config/locales/camaleon_cms/languages/uk.yml +16 -0
- data/config/locales/camaleon_cms/languages/zh-CN.yml +16 -0
- data/config/locales/camaleon_cms/routes/de.yml +8 -0
- data/config/locales/camaleon_cms/routes/es.yml +8 -0
- data/config/locales/camaleon_cms/routes/fr.yml +8 -0
- data/config/locales/camaleon_cms/routes/it.yml +8 -0
- data/config/locales/camaleon_cms/routes/md.yml +8 -0
- data/config/locales/camaleon_cms/routes/pt-BR.yml +8 -0
- data/config/locales/camaleon_cms/routes/pt.yml +8 -0
- data/config/locales/camaleon_cms/routes/ru.yml +8 -0
- data/config/locales/camaleon_cms/routes/uk.yml +8 -0
- data/config/locales/camaleon_cms/routes/zh-CN.yml +8 -0
- data/config/locales/md.yml +207 -0
- data/lib/camaleon_cms/version.rb +1 -1
- data/spec/dummy/config/application.rb +14 -2
- metadata +102 -109
- data/config/locales/camaleon_cms/admin/js.yml +0 -435
- data/config/locales/camaleon_cms/common.yml +0 -786
- data/config/locales/camaleon_cms/languages.yml +0 -167
- data/config/locales/camaleon_cms/routes.yml +0 -71
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +0 -254
- data/spec/dummy/log/test.log +0 -46384
- data/spec/dummy/public/media/1/rails_tmp.png +0 -0
- data/spec/dummy/public/media/1/rails_tmp_1.png +0 -0
- data/spec/dummy/public/media/1/rails_tmp_2.png +0 -0
- data/spec/dummy/public/media/1/rails_tmp_3.png +0 -0
- data/spec/dummy/public/media/1/sample/rails_tmp.png +0 -0
- data/spec/dummy/public/media/1/sample/thumb/rails_tmp-png.png +0 -0
- data/spec/dummy/public/media/1/slide33.jpg +0 -0
- data/spec/dummy/public/media/1/thumb/rails_tmp-png.png +0 -0
- data/spec/dummy/public/media/1/thumb/rails_tmp-png_20x.png +0 -0
- data/spec/dummy/public/media/1/thumb/rails_tmp-png_300x300.png +0 -0
- data/spec/dummy/public/media/1/thumb/rails_tmp-png_505x350.png +0 -0
- data/spec/dummy/public/media/1/thumb/rails_tmp_1-png.png +0 -0
- data/spec/dummy/public/media/1/thumb/rails_tmp_2-png.png +0 -0
- data/spec/dummy/public/media/1/thumb/rails_tmp_3-png.png +0 -0
- data/spec/dummy/public/media/1/thumb/slide33-jpg.jpg +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2019-09-04-09-19-13.472.html +0 -457
- data/spec/dummy/tmp/capybara/screenshot_2019-09-04-09-19-13.472.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2019-09-04-09-19-28.693.html +0 -428
- data/spec/dummy/tmp/capybara/screenshot_2019-09-04-09-19-28.693.png +0 -0
- data/spec/dummy/tmp/capybara/screenshot_2019-09-04-09-22-45.502.html +0 -337
- data/spec/dummy/tmp/capybara/screenshot_2019-09-04-09-22-45.502.png +0 -0
- data/spec/support/fixtures/rails_tmp.png +0 -0
@@ -1,242 +1,250 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
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
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
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
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
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
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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
|
-
|
62
|
-
|
63
|
-
|
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
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
67
|
+
# return current admin language configured for this site
|
68
|
+
def get_admin_language
|
69
|
+
options[:_admin_theme] || "en"
|
70
|
+
end
|
70
71
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
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
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
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
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
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
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
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
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
94
|
+
# assign user to this site
|
95
|
+
def assign_user(user)
|
96
|
+
user.assign_site(self)
|
97
|
+
end
|
97
98
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
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
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
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
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
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
|
-
|
119
|
-
|
120
|
-
|
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
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
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
|
-
|
128
|
-
|
129
|
-
|
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
|
-
|
135
|
-
|
136
|
-
|
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
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
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
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
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
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
slugs.
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
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
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
184
|
+
# check if current site is active or not
|
185
|
+
def is_active?
|
186
|
+
status.blank? || status == 'active'
|
187
|
+
end
|
181
188
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
189
|
+
# check if current site is active or not
|
190
|
+
def is_inactive?
|
191
|
+
status == 'inactive'
|
192
|
+
end
|
186
193
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
194
|
+
# check if current site is in maintenance or not
|
195
|
+
def is_maintenance?
|
196
|
+
status == 'maintenance'
|
197
|
+
end
|
191
198
|
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
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
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
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
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
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
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
227
|
+
# assign all users to this new site
|
228
|
+
# DEPRECATED
|
229
|
+
def set_all_users
|
230
|
+
return
|
231
|
+
end
|
225
232
|
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
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
|
-
|
233
|
-
|
234
|
-
|
239
|
+
def reload_routes
|
240
|
+
PluginRoutes.reload
|
241
|
+
end
|
235
242
|
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
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
|