camaleon_cms 1.0.4 → 1.0.5
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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/admin/actions.js +14 -3
- data/app/assets/javascripts/admin/admin-manifest.js +1 -4
- data/app/assets/javascripts/admin/custom_fields.js +2 -2
- data/app/assets/javascripts/admin/data.js +68 -102
- data/app/assets/javascripts/admin/libraries.js +46 -87
- data/app/assets/javascripts/admin/modal.js +15 -3
- data/app/assets/javascripts/admin/post.js +2 -2
- data/app/assets/stylesheets/admin/admin-manifest.css +1 -2
- data/app/assets/stylesheets/admin/custom_admin.css.scss +3 -1
- data/app/controllers/admin/sessions_controller.rb +21 -14
- data/app/controllers/admin/users_controller.rb +7 -4
- data/app/controllers/api/api_controller.rb +28 -0
- data/app/controllers/api/v1/category_controller.rb +7 -0
- data/app/controllers/api/v1/page_controller.rb +8 -0
- data/app/controllers/api/v1/post_controller.rb +8 -0
- data/app/controllers/concerns/frontend_concern.rb +1 -17
- data/app/decorators/category_decorator.rb +1 -1
- data/app/helpers/camaleon_helper.rb +15 -0
- data/app/helpers/html_helper.rb +1 -0
- data/app/helpers/session_helper.rb +18 -3
- data/app/models/site.rb +17 -11
- data/app/views/admin/posts/_sidebar.html.erb +9 -7
- data/app/views/admin/posts/form.html.erb +4 -1
- data/app/views/admin/sessions/register.html.erb +8 -6
- data/app/views/admin/settings/custom_fields/_render.html.erb +3 -2
- data/app/views/admin/settings/custom_fields/fields/audio.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/checkbox.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/checkboxes.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/colorpicker.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/date.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/editor.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/email.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/field_attrs.html.erb +2 -2
- data/app/views/admin/settings/custom_fields/fields/file.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/image.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/numeric.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/phone.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/posts.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/radio.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/select.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/text_area.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/text_box.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/url.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/users.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/fields/video.html.erb +1 -1
- data/app/views/admin/settings/custom_fields/index.html.erb +54 -8
- data/app/views/admin/settings/site.html.erb +170 -151
- data/app/views/admin/users/form.html.erb +19 -23
- data/app/views/default_theme/sitemap.html.erb +19 -0
- data/app/views/default_theme/sitemap.xml.builder +48 -0
- data/app/views/layouts/admin.html.erb +3 -13
- data/app/views/layouts/admin/_footer.html.erb +10 -3
- data/app/views/layouts/admin/_header.html.erb +1 -1
- data/config/initializers/doorkeeper.rb +128 -0
- data/config/initializers/rufus_cron.rb +3 -3
- data/config/initializers/sass.rb +0 -62
- data/config/locales/admin/en.yml +3 -2
- data/config/locales/admin/es.yml +2 -0
- data/config/locales/admin/js.yml +9 -38
- data/config/locales/doorkeeper.en.yml +123 -0
- data/config/routes.rb +12 -0
- data/config/routes/admin.rb +0 -3
- data/db/migrate/20150930115030_doorkeeper_configuration.rb +45 -0
- data/lib/camaleon_cms/engine.rb +2 -0
- data/lib/camaleon_cms/version.rb +1 -1
- data/lib/generators/camaleon_cms/gem_plugin_template/app/models/plugins/my_plugin/my_plugin.rb +1 -6
- data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/models/my_plugin.rb +0 -5
- data/lib/generators/ctheme_template/app/apps/themes/my_theme/assets/js/main.js +1 -1
- data/lib/plugin_routes.rb +12 -8
- metadata +38 -46
- data/app/assets/javascripts/admin/grid-editor.js +0 -532
- data/app/assets/javascripts/audio/alert.mp3 +0 -0
- data/app/assets/javascripts/audio/fail.mp3 +0 -0
- data/app/assets/javascripts/jquery-1.11.3.min.js +0 -5
- data/app/assets/stylesheets/admin/grid-editor.css.scss +0 -15
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/css/style.css +0 -84
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/editor_plugin.js +0 -1
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/editor_plugin_src.js +0 -90
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/img/youtube.png +0 -0
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/index.html +0 -86
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/js/scripts.js +0 -1
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/js/scripts_src.js +0 -81
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/en.js +0 -3
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/en_dlg.js +0 -12
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/es.js +0 -3
- data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/es_dlg.js +0 -12
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/bootstrap.css +0 -2228
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/content.css +0 -189
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/dialog.css +0 -295
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/butt2.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/button-bg.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/buttons.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/down_arrow.gif +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/fade-butt.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/icons.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/items.gif +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/menu-arrow.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/menu-check.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/progress.gif +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/tabs.gif +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/toolbarbg.png +0 -0
- data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/ui.css +0 -1163
- data/app/controllers/admin/grid_editor_controller.rb +0 -55
- data/app/views/admin/grid_editor/form.html.erb +0 -31
- data/app/views/admin/grid_editor/index.html.erb +0 -29
- data/config/sitemap.rb +0 -56
- data/lib/generators/camaleon_cms/gem_theme_template/app/controllers/plugins/my_plugin/admin_controller.rb +0 -8
- data/lib/generators/camaleon_cms/gem_theme_template/app/controllers/plugins/my_plugin/front_controller.rb +0 -8
- data/lib/generators/camaleon_cms/gem_theme_template/app/helpers/plugins/my_plugin/main_helper.rb +0 -22
- data/lib/generators/camaleon_cms/gem_theme_template/app/models/plugins/my_plugin/my_plugin.rb +0 -12
- data/lib/generators/camaleon_cms/gem_theme_template/app/views/plugins/my_plugin/admin/index.html.erb +0 -2
- data/lib/generators/camaleon_cms/gem_theme_template/app/views/plugins/my_plugin/front/index.html.erb +0 -2
- data/lib/generators/camaleon_cms/gem_theme_template/app/views/plugins/my_plugin/layouts/readme.txt +0 -2
- data/lib/generators/camaleon_cms/gem_theme_template/config/camaleon_plugin.json +0 -21
@@ -168,7 +168,7 @@ function init_post(obj){
|
|
168
168
|
}
|
169
169
|
});
|
170
170
|
|
171
|
-
tinymce.init(
|
171
|
+
tinymce.init(cama_get_tinymce_settings({selector: '.tinymce_textarea:not(.translated-item)', height: '480px', onPostRender: onEditorPostRender}));
|
172
172
|
|
173
173
|
$form.validate();
|
174
174
|
/*
|
@@ -182,7 +182,7 @@ function init_post(obj){
|
|
182
182
|
$("#post_status").change(function(){
|
183
183
|
$('#post-actions .btn[data-type]').hide();
|
184
184
|
$('#post-actions .btn[data-type="'+ $(this).val() +'"]').show();
|
185
|
-
})
|
185
|
+
});
|
186
186
|
|
187
187
|
// here all later actions
|
188
188
|
var form_later_actions = function(){
|
@@ -18,8 +18,7 @@
|
|
18
18
|
*= require ./elfinder/elfinder-theme
|
19
19
|
*= require ./bootstrap-datetimepicker
|
20
20
|
*= require ./bootstrap-datepicker
|
21
|
-
*= require ./tageditor/jquery.tag-editor
|
22
|
-
*= require ./grid-editor
|
23
21
|
*= require ./introjs/introjs.min
|
22
|
+
*= require ./tageditor/jquery.tag-editor
|
24
23
|
*/
|
25
24
|
|
@@ -28,15 +28,15 @@ class Admin::SessionsController < CamaleonController
|
|
28
28
|
@user = current_site.users.find_by_username(data_user[:username])
|
29
29
|
captcha_validate = captcha_verify_if_under_attack("login")
|
30
30
|
r = {user: @user, params: params, password: data_user[:password], captcha_validate: captcha_validate}; hooks_run("user_before_login", r)
|
31
|
-
if captcha_validate && @user &&
|
31
|
+
if captcha_validate && @user && @user.authenticate(data_user[:password])
|
32
32
|
captcha_reset_attack("login")
|
33
33
|
login_user(@user, params[:remember_me].present?)
|
34
34
|
else
|
35
35
|
captcha_increment_attack("login")
|
36
36
|
if captcha_validate
|
37
|
-
flash[:error] =
|
37
|
+
flash[:error] = t('admin.login.message.fail')
|
38
38
|
else
|
39
|
-
flash[:error] =
|
39
|
+
flash[:error] = "Invalid captcha"
|
40
40
|
end
|
41
41
|
@user = current_site.users.new(data_user)
|
42
42
|
render 'admin/sessions/login'
|
@@ -91,7 +91,7 @@ class Admin::SessionsController < CamaleonController
|
|
91
91
|
html = "<p>#{t('admin.login.message.hello')}, <b>#{@user.fullname}</b></p>
|
92
92
|
<p>#{t('admin.login.message.reset_url')}:</p>
|
93
93
|
<p><a href='#{reset_url}'><b>#{reset_url}</b></a></p> "
|
94
|
-
sendmail(@user.email,t('admin.login.message.subject_email'), html)
|
94
|
+
sendmail(@user.email, t('admin.login.message.subject_email'), html)
|
95
95
|
|
96
96
|
flash[:notice] = t('admin.login.message.send_mail_succes')
|
97
97
|
redirect_to admin_login_path
|
@@ -112,21 +112,28 @@ class Admin::SessionsController < CamaleonController
|
|
112
112
|
user_data = params[:user]
|
113
113
|
|
114
114
|
@user = current_site.users.new(user_data)
|
115
|
-
r = {user: @user, params: params}; hooks_run(
|
116
|
-
|
117
|
-
|
118
|
-
r = {user: @user, message: t('admin.users.message.created'), redirect_url: admin_login_path}; hooks_run("user_after_register", r)
|
119
|
-
flash[:notice] = r[:message]
|
120
|
-
redirect_to r[:redirect_url]
|
121
|
-
else
|
115
|
+
r = {user: @user, params: params}; hooks_run('user_before_register', r)
|
116
|
+
|
117
|
+
if current_site.security_user_register_captcha_enabled? && !captcha_verified?
|
122
118
|
@first_name = params[:meta][:first_name]
|
123
119
|
@last_name = params[:meta][:last_name]
|
124
120
|
|
125
|
-
@user.errors[:captcha]
|
126
|
-
render
|
121
|
+
@user.errors[:captcha] = t('admin.users.message.error_captcha')
|
122
|
+
render 'register'
|
123
|
+
else
|
124
|
+
if @user.save
|
125
|
+
@user.set_meta_from_form(params[:meta])
|
126
|
+
r = {user: @user, message: t('admin.users.message.created'), redirect_url: admin_login_path}; hooks_run('user_after_register', r)
|
127
|
+
flash[:notice] = r[:message]
|
128
|
+
redirect_to r[:redirect_url]
|
129
|
+
else
|
130
|
+
@first_name = params[:meta][:first_name]
|
131
|
+
@last_name = params[:meta][:last_name]
|
132
|
+
render 'register'
|
133
|
+
end
|
127
134
|
end
|
128
135
|
else
|
129
|
-
render
|
136
|
+
render 'register'
|
130
137
|
end
|
131
138
|
end
|
132
139
|
|
@@ -8,7 +8,7 @@
|
|
8
8
|
=end
|
9
9
|
class Admin::UsersController < AdminController
|
10
10
|
before_action :validate_role, except: [:profile, :profile_edit]
|
11
|
-
before_action :set_user, only: ['show','edit','update','destroy']
|
11
|
+
before_action :set_user, only: ['show', 'edit', 'update', 'destroy']
|
12
12
|
|
13
13
|
def index
|
14
14
|
@users = current_site.users.paginate(:page => params[:page], :per_page => current_site.admin_per_page)
|
@@ -31,7 +31,7 @@ class Admin::UsersController < AdminController
|
|
31
31
|
|
32
32
|
if params[:password]
|
33
33
|
if @user.authenticate(params[:password][:password_old])
|
34
|
-
|
34
|
+
render json: @user.update(params[:password]) ? {message: 'update'} : {errors: @user.errors.full_messages.join(', ')}
|
35
35
|
else
|
36
36
|
render json: {errors: t('admin.users.message.incorrect_old_password')}
|
37
37
|
end
|
@@ -44,14 +44,17 @@ class Admin::UsersController < AdminController
|
|
44
44
|
|
45
45
|
def edit
|
46
46
|
admin_breadcrumb_add("#{t('admin.button.edit')}")
|
47
|
-
render 'form'
|
47
|
+
r = {user: @user, render: 'form' }
|
48
|
+
hooks_run('user_edit', r)
|
49
|
+
render r[:render]
|
48
50
|
end
|
49
51
|
|
50
52
|
def update
|
51
53
|
if @user.update(params[:user])
|
52
54
|
@user.set_meta_from_form(params[:meta]) if params[:meta].present?
|
53
55
|
@user.set_field_values(params[:field_options])
|
54
|
-
|
56
|
+
r = {user: @user, message: t('admin.users.message.updated'), params: params}; hooks_run('user_after_edited', r)
|
57
|
+
flash[:notice] = r[:message]
|
55
58
|
redirect_to action: :index
|
56
59
|
else
|
57
60
|
render 'form'
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class Api::ApiController < ActionController::Base
|
2
|
+
include CamaleonHelper
|
3
|
+
include SessionHelper
|
4
|
+
include SiteHelper
|
5
|
+
include HtmlHelper
|
6
|
+
include UserRolesHelper
|
7
|
+
include ShortCodeHelper
|
8
|
+
include PluginsHelper
|
9
|
+
include ThemeHelper
|
10
|
+
include HooksHelper
|
11
|
+
include ContentHelper
|
12
|
+
include CaptchaHelper
|
13
|
+
include UploaderHelper
|
14
|
+
|
15
|
+
before_action -> { doorkeeper_authorize! :client }
|
16
|
+
respond_to :json
|
17
|
+
|
18
|
+
def account
|
19
|
+
render json: current_resource_owner
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def current_resource_owner
|
25
|
+
User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -9,23 +9,7 @@
|
|
9
9
|
module FrontendConcern extend ActiveSupport::Concern
|
10
10
|
# visiting sitemap.xml
|
11
11
|
def sitemap
|
12
|
-
|
13
|
-
if File.exists?(path)
|
14
|
-
respond_to do |format|
|
15
|
-
format.html do
|
16
|
-
@xml = File.read(path)
|
17
|
-
render "sitemap"
|
18
|
-
end
|
19
|
-
format.xml { render(xml: open(path).read) }
|
20
|
-
end
|
21
|
-
else
|
22
|
-
Thread.abort_on_exception=true
|
23
|
-
Thread.new do
|
24
|
-
%x(rake camaleon_cms:sitemap)
|
25
|
-
ActiveRecord::Base.connection.close
|
26
|
-
end
|
27
|
-
render text: "Sitemap not found. Generating... Please wait and refresh later.", status: :not_found
|
28
|
-
end
|
12
|
+
|
29
13
|
end
|
30
14
|
|
31
15
|
# accessing for robots.txt
|
@@ -24,7 +24,7 @@ class CategoryDecorator < TermTaxonomyDecorator
|
|
24
24
|
# in return object, you can add custom where's or pagination like here:
|
25
25
|
# http://edgeguides.rubyonrails.org/active_record_querying.html
|
26
26
|
def the_categories
|
27
|
-
object.
|
27
|
+
object.children
|
28
28
|
end
|
29
29
|
|
30
30
|
# return a child category from this category with id (integer) or by slug (string)
|
@@ -71,4 +71,19 @@ module CamaleonHelper
|
|
71
71
|
def is_admin_request?
|
72
72
|
!(@_admin_menus.nil?)
|
73
73
|
end
|
74
|
+
|
75
|
+
# generate loop categories html sitemap links
|
76
|
+
# this is a helper for sitemap generator to print categories, sub categories and post contents in html list format
|
77
|
+
def cama_sitemap_cats_generator(cats)
|
78
|
+
res = []
|
79
|
+
cats.decorate.each do |cat|
|
80
|
+
res_posts = []
|
81
|
+
cat.the_posts.decorate.each do |post|
|
82
|
+
res_posts << "<li><a href='#{post.the_url}'>#{post.the_title}</a></li>"
|
83
|
+
end
|
84
|
+
res << "<li><h4><a href='#{cat.the_url}'>#{cat.the_title}</a></h4><ul>#{res_posts.join("")}</ul></li>"
|
85
|
+
res << cama_sitemap_cats_generator(cat.the_categories)
|
86
|
+
end
|
87
|
+
res.join("")
|
88
|
+
end
|
74
89
|
end
|
data/app/helpers/html_helper.rb
CHANGED
@@ -112,6 +112,7 @@ module HtmlHelper
|
|
112
112
|
libs[:validate] = {js: ['admin/jquery.validate']}
|
113
113
|
libs[:nav_menu] = {css: ['admin/nestable/jquery.nestable', "admin/nav-menu"], js: ["admin/jquery.nestable", 'admin/nav-menu']}
|
114
114
|
libs[:elfinder_front] = {js: ['elfinder_front.js']}
|
115
|
+
libs[:admin_intro] = {js: ['admin/introjs/intro.min'], css: ["admin/introjs/introjs.min"]}
|
115
116
|
libs
|
116
117
|
end
|
117
118
|
end
|
@@ -11,7 +11,7 @@ module SessionHelper
|
|
11
11
|
# user: User model
|
12
12
|
# remember_me: true/false (remember session permanently)
|
13
13
|
def login_user(user, remember_me = false, redirect_url = nil)
|
14
|
-
c = {value: [user.auth_token, request.user_agent, request.ip], expires: 24.hours.from_now
|
14
|
+
c = {value: [user.auth_token, request.user_agent, request.ip], expires: 24.hours.from_now}
|
15
15
|
# c[:domain] = :all if PluginRoutes.system_info["users_share_sites"].present? && Site.main_site.get_meta("share_sessions", true) && !cookies[:login].present?
|
16
16
|
c[:domain] = :all if PluginRoutes.system_info["users_share_sites"].present? && Site.count > 1
|
17
17
|
c[:expires] = 1.month.from_now if remember_me
|
@@ -33,9 +33,24 @@ module SessionHelper
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
+
def login_user_with_password(username, password, remember_me=false, redirect_url = nil)
|
37
|
+
data_user = {}
|
38
|
+
cipher = Gibberish::AES::CBC.new(get_session_id)
|
39
|
+
data_user[:password] = cipher.decrypt(password) rescue nil
|
40
|
+
@user = current_site.users.find_by_username(username)
|
41
|
+
r = {user: @user, params: params, password: data_user[:password], captcha_validate: true}; hooks_run('user_before_login', r)
|
42
|
+
if @user && @user.authenticate(data_user[:password])
|
43
|
+
login_user(@user, remember_me, redirect_url)
|
44
|
+
else
|
45
|
+
#TODO change flash error
|
46
|
+
#flash[:error] = t('admin.login.message.fail')
|
47
|
+
end
|
48
|
+
@user if @user
|
49
|
+
end
|
50
|
+
|
36
51
|
# check if current host is heroku
|
37
52
|
def on_heroku?
|
38
|
-
ENV.keys.any? {|var_name| var_name.match(/(heroku|dyno)/i) }
|
53
|
+
ENV.keys.any? { |var_name| var_name.match(/(heroku|dyno)/i) }
|
39
54
|
end
|
40
55
|
|
41
56
|
# switch current session user into other (user)
|
@@ -73,7 +88,7 @@ module SessionHelper
|
|
73
88
|
# return the role for current user
|
74
89
|
# if not logged in, then return 'public'
|
75
90
|
def current_role
|
76
|
-
(signin?)? current_user.role : 'public'
|
91
|
+
(signin?) ? current_user.role : 'public'
|
77
92
|
end
|
78
93
|
|
79
94
|
# return current user logged in
|
data/app/models/site.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
class Site < TermTaxonomy
|
10
10
|
# attrs: [name, description, slug]
|
11
11
|
default_scope { where(taxonomy: :site).reorder(term_group: :desc) }
|
12
|
-
has_many :metas, ->{ where(object_class: 'Site')}, :class_name => "Meta", foreign_key: :objectid, dependent: :destroy
|
12
|
+
has_many :metas, -> { where(object_class: 'Site') }, :class_name => "Meta", foreign_key: :objectid, dependent: :destroy
|
13
13
|
has_many :post_types, :class_name => "PostType", foreign_key: :parent_id, dependent: :destroy
|
14
14
|
has_many :nav_menus, :class_name => "NavMenu", foreign_key: :parent_id, dependent: :destroy
|
15
15
|
has_many :widgets, :class_name => "Widget::Main", foreign_key: :parent_id, dependent: :destroy
|
@@ -43,7 +43,7 @@ class Site < TermTaxonomy
|
|
43
43
|
|
44
44
|
#select full_categories for the site, include all children categories
|
45
45
|
def full_categories
|
46
|
-
|
46
|
+
Category.where({term_group: self.id})
|
47
47
|
end
|
48
48
|
|
49
49
|
# all post_tags for this site
|
@@ -111,6 +111,11 @@ class Site < TermTaxonomy
|
|
111
111
|
get_option("comment_status", "pending")
|
112
112
|
end
|
113
113
|
|
114
|
+
# security: user register form show captcha?
|
115
|
+
def security_user_register_captcha_enabled?
|
116
|
+
get_option('security_captcha_user_register', true) == true
|
117
|
+
end
|
118
|
+
|
114
119
|
# auto create default user roles
|
115
120
|
def set_default_user_roles(post_type = nil)
|
116
121
|
user_role = self.user_roles.where({slug: 'admin', term_group: -1}).first_or_create({name: 'Administrator', description: 'Default roles admin'})
|
@@ -134,7 +139,7 @@ class Site < TermTaxonomy
|
|
134
139
|
}
|
135
140
|
else
|
136
141
|
pts = self.post_types.all.pluck(:id)
|
137
|
-
UserRole::ROLES[:post_type].each { |value| d[value[:key]] = pts}
|
142
|
+
UserRole::ROLES[:post_type].each { |value| d[value[:key]] = pts }
|
138
143
|
end
|
139
144
|
|
140
145
|
user_role.set_meta("_post_type_#{self.id}", d || {})
|
@@ -151,7 +156,7 @@ class Site < TermTaxonomy
|
|
151
156
|
}
|
152
157
|
else
|
153
158
|
pts = self.post_types.all.pluck(:id)
|
154
|
-
UserRole::ROLES[:post_type].each { |value| d[value[:key]] = pts
|
159
|
+
UserRole::ROLES[:post_type].each { |value| d[value[:key]] = pts if value[:key].to_s == 'edit' }
|
155
160
|
end
|
156
161
|
|
157
162
|
user_role.set_meta("_post_type_#{self.id}", d || {})
|
@@ -177,6 +182,7 @@ class Site < TermTaxonomy
|
|
177
182
|
def main_site?
|
178
183
|
@_is_default_site ||= (Site.first.id == self.id)
|
179
184
|
end
|
185
|
+
|
180
186
|
alias_method :is_default?, :main_site?
|
181
187
|
|
182
188
|
# list all users of current site
|
@@ -184,7 +190,7 @@ class Site < TermTaxonomy
|
|
184
190
|
if PluginRoutes.system_info["users_share_sites"]
|
185
191
|
User.where(site_id: -1)
|
186
192
|
else
|
187
|
-
User.where(site_id: self.id)#.where("site_id = ? or role = ?", self.id, 'admin')
|
193
|
+
User.where(site_id: self.id) #.where("site_id = ? or role = ?", self.id, 'admin')
|
188
194
|
end
|
189
195
|
end
|
190
196
|
|
@@ -233,7 +239,7 @@ class Site < TermTaxonomy
|
|
233
239
|
|
234
240
|
# default structure for each new site
|
235
241
|
def default_settings
|
236
|
-
default_post_type =
|
242
|
+
default_post_type = [
|
237
243
|
{
|
238
244
|
name: 'Post',
|
239
245
|
description: 'Posts',
|
@@ -266,10 +272,10 @@ class Site < TermTaxonomy
|
|
266
272
|
|
267
273
|
default_post_type.each do |pt|
|
268
274
|
model_pt = self.post_types.create({
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
275
|
+
name: pt[:name],
|
276
|
+
slug: pt[:name].to_s.parameterize,
|
277
|
+
description: pt[:description]
|
278
|
+
})
|
273
279
|
if model_pt.valid?
|
274
280
|
model_pt.set_meta('_default', pt[:options])
|
275
281
|
if pt[:options][:has_category]
|
@@ -294,7 +300,7 @@ class Site < TermTaxonomy
|
|
294
300
|
content = "<p style='text-align: center;'><img width='155' height='155' src='http://camaleon.tuzitio.com/media/132/logo2.png' alt='logo' /></p><p><strong>Camaleon CMS</strong> is a free and open-source tool and a fexible content management system (CMS) based on <a href='rubyonrails.org'>Ruby on Rails 4</a> and MySQL. </p> <p>With Camaleon you can do the following:</p> <ul> <li>Create instantly a lot of sites in the same installation</li> <li>Manage your content information in several languages</li> <li>Extend current functionality by plugins (MVC structure and no more echo or prints anywhere)</li> <li>Create or install different themes for each site</li> <li>Create your own structure without coding anything (adapt Camaleon as you want and not you for Camaleon)</li> <li>Create your store and start to sell your products using our plugins</li> <li>Avoid web attacks</li> <li>Compare the speed and enjoy the speed of your new Camaleon site</li> <li>Customize or create your themes for mobile support</li> <li>Support more visitors at the same time</li> <li>Manage your information with a panel like wordpress </li> <li>All urls are oriented for SEO</li> <li>Multiples roles of users</li> </ul>"
|
295
301
|
end
|
296
302
|
user = self.users.admin_scope.first
|
297
|
-
user = self.users.admin_scope.create({email: 'admin@local.com', username: 'admin', password: 'admin', password_confirmation: 'admin'
|
303
|
+
user = self.users.admin_scope.create({email: 'admin@local.com', username: 'admin', password: 'admin', password_confirmation: 'admin'}) unless user.present?
|
298
304
|
post = pt.posts.create({title: title, slug: slug, content: content, user_id: user.id, status: 'published'})
|
299
305
|
@nav_menu.append_menu_item({label: title, type: 'post', link: post.id})
|
300
306
|
end
|
@@ -50,11 +50,13 @@
|
|
50
50
|
</select>
|
51
51
|
</div>
|
52
52
|
<!-- templates -->
|
53
|
-
<% if @post.manage_template?(@post_type)
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
53
|
+
<% if @post.manage_template?(@post_type) %>
|
54
|
+
<% if (template_files = get_list_template_files).present? %>
|
55
|
+
<div class="form-group">
|
56
|
+
<label class="control-label"><%= t('admin.post_type.template')%></label>
|
57
|
+
<%= select("meta", "template", template_files, { include_blank: true, selected: (params[:meta][:template] rescue false || @post.meta[:template] ) }, {class: 'form-control'}) %>
|
58
|
+
</div>
|
59
|
+
<% end %>
|
58
60
|
|
59
61
|
<!-- layouts -->
|
60
62
|
<% if (layout_files = get_list_layouts_files).present? %>
|
@@ -90,7 +92,7 @@
|
|
90
92
|
</div>
|
91
93
|
</div>
|
92
94
|
<% end %>
|
93
|
-
<% if @post_type.manage_tags
|
95
|
+
<% if @post_type.manage_tags? %>
|
94
96
|
<div class="panel panel-default panel-lite">
|
95
97
|
<div class="panel-heading">
|
96
98
|
<h3 class="panel-title"><%= t('admin.post_type.tags')%></h3>
|
@@ -133,4 +135,4 @@
|
|
133
135
|
</div>
|
134
136
|
</div>
|
135
137
|
<% end %>
|
136
|
-
</div>
|
138
|
+
</div>
|
@@ -8,7 +8,10 @@
|
|
8
8
|
<div class="panel-heading">
|
9
9
|
<h4 class="pull-left">
|
10
10
|
<span class="fa fa-file-o"></span>
|
11
|
-
|
11
|
+
<% if !@post.new_record? %>
|
12
|
+
<%= "#{t('admin.page_title.edit')} #{@post_type.the_title}: #{@post_decorate.the_title}" %> <%= raw @post_decorate.the_status.html_safe %>
|
13
|
+
<% end %>
|
14
|
+
<%#= raw(t('admin.page_title.edit') + " " + @post_type.the_title.to_s + ": " + @post_decorate.the_title + " #{@post_decorate.the_status}") if !@post.new_record? %>
|
12
15
|
<%= link_to raw("#{t('admin.button.view_draft')}"), {action: :edit, id: @post.drafts.pluck('id')}, id: "view_draft", class: "label label-warning label-form", title: "#{t('admin.button.view_draft')}", target: '_blank' if @post.drafts.present? %>
|
13
16
|
<%= t('admin.page_title.create') + " " + @post_type.the_title.to_s if @post.new_record? %>
|
14
17
|
</h4>
|