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.

Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/admin/actions.js +14 -3
  3. data/app/assets/javascripts/admin/admin-manifest.js +1 -4
  4. data/app/assets/javascripts/admin/custom_fields.js +2 -2
  5. data/app/assets/javascripts/admin/data.js +68 -102
  6. data/app/assets/javascripts/admin/libraries.js +46 -87
  7. data/app/assets/javascripts/admin/modal.js +15 -3
  8. data/app/assets/javascripts/admin/post.js +2 -2
  9. data/app/assets/stylesheets/admin/admin-manifest.css +1 -2
  10. data/app/assets/stylesheets/admin/custom_admin.css.scss +3 -1
  11. data/app/controllers/admin/sessions_controller.rb +21 -14
  12. data/app/controllers/admin/users_controller.rb +7 -4
  13. data/app/controllers/api/api_controller.rb +28 -0
  14. data/app/controllers/api/v1/category_controller.rb +7 -0
  15. data/app/controllers/api/v1/page_controller.rb +8 -0
  16. data/app/controllers/api/v1/post_controller.rb +8 -0
  17. data/app/controllers/concerns/frontend_concern.rb +1 -17
  18. data/app/decorators/category_decorator.rb +1 -1
  19. data/app/helpers/camaleon_helper.rb +15 -0
  20. data/app/helpers/html_helper.rb +1 -0
  21. data/app/helpers/session_helper.rb +18 -3
  22. data/app/models/site.rb +17 -11
  23. data/app/views/admin/posts/_sidebar.html.erb +9 -7
  24. data/app/views/admin/posts/form.html.erb +4 -1
  25. data/app/views/admin/sessions/register.html.erb +8 -6
  26. data/app/views/admin/settings/custom_fields/_render.html.erb +3 -2
  27. data/app/views/admin/settings/custom_fields/fields/audio.html.erb +1 -1
  28. data/app/views/admin/settings/custom_fields/fields/checkbox.html.erb +1 -1
  29. data/app/views/admin/settings/custom_fields/fields/checkboxes.html.erb +1 -1
  30. data/app/views/admin/settings/custom_fields/fields/colorpicker.html.erb +1 -1
  31. data/app/views/admin/settings/custom_fields/fields/date.html.erb +1 -1
  32. data/app/views/admin/settings/custom_fields/fields/editor.html.erb +1 -1
  33. data/app/views/admin/settings/custom_fields/fields/email.html.erb +1 -1
  34. data/app/views/admin/settings/custom_fields/fields/field_attrs.html.erb +2 -2
  35. data/app/views/admin/settings/custom_fields/fields/file.html.erb +1 -1
  36. data/app/views/admin/settings/custom_fields/fields/image.html.erb +1 -1
  37. data/app/views/admin/settings/custom_fields/fields/numeric.html.erb +1 -1
  38. data/app/views/admin/settings/custom_fields/fields/phone.html.erb +1 -1
  39. data/app/views/admin/settings/custom_fields/fields/posts.html.erb +1 -1
  40. data/app/views/admin/settings/custom_fields/fields/radio.html.erb +1 -1
  41. data/app/views/admin/settings/custom_fields/fields/select.html.erb +1 -1
  42. data/app/views/admin/settings/custom_fields/fields/text_area.html.erb +1 -1
  43. data/app/views/admin/settings/custom_fields/fields/text_box.html.erb +1 -1
  44. data/app/views/admin/settings/custom_fields/fields/url.html.erb +1 -1
  45. data/app/views/admin/settings/custom_fields/fields/users.html.erb +1 -1
  46. data/app/views/admin/settings/custom_fields/fields/video.html.erb +1 -1
  47. data/app/views/admin/settings/custom_fields/index.html.erb +54 -8
  48. data/app/views/admin/settings/site.html.erb +170 -151
  49. data/app/views/admin/users/form.html.erb +19 -23
  50. data/app/views/default_theme/sitemap.html.erb +19 -0
  51. data/app/views/default_theme/sitemap.xml.builder +48 -0
  52. data/app/views/layouts/admin.html.erb +3 -13
  53. data/app/views/layouts/admin/_footer.html.erb +10 -3
  54. data/app/views/layouts/admin/_header.html.erb +1 -1
  55. data/config/initializers/doorkeeper.rb +128 -0
  56. data/config/initializers/rufus_cron.rb +3 -3
  57. data/config/initializers/sass.rb +0 -62
  58. data/config/locales/admin/en.yml +3 -2
  59. data/config/locales/admin/es.yml +2 -0
  60. data/config/locales/admin/js.yml +9 -38
  61. data/config/locales/doorkeeper.en.yml +123 -0
  62. data/config/routes.rb +12 -0
  63. data/config/routes/admin.rb +0 -3
  64. data/db/migrate/20150930115030_doorkeeper_configuration.rb +45 -0
  65. data/lib/camaleon_cms/engine.rb +2 -0
  66. data/lib/camaleon_cms/version.rb +1 -1
  67. data/lib/generators/camaleon_cms/gem_plugin_template/app/models/plugins/my_plugin/my_plugin.rb +1 -6
  68. data/lib/generators/cplugin_template/app/apps/plugins/my_plugin/models/my_plugin.rb +0 -5
  69. data/lib/generators/ctheme_template/app/apps/themes/my_theme/assets/js/main.js +1 -1
  70. data/lib/plugin_routes.rb +12 -8
  71. metadata +38 -46
  72. data/app/assets/javascripts/admin/grid-editor.js +0 -532
  73. data/app/assets/javascripts/audio/alert.mp3 +0 -0
  74. data/app/assets/javascripts/audio/fail.mp3 +0 -0
  75. data/app/assets/javascripts/jquery-1.11.3.min.js +0 -5
  76. data/app/assets/stylesheets/admin/grid-editor.css.scss +0 -15
  77. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/css/style.css +0 -84
  78. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/editor_plugin.js +0 -1
  79. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/editor_plugin_src.js +0 -90
  80. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/img/youtube.png +0 -0
  81. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/index.html +0 -86
  82. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/js/scripts.js +0 -1
  83. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/js/scripts_src.js +0 -81
  84. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/en.js +0 -3
  85. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/en_dlg.js +0 -12
  86. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/es.js +0 -3
  87. data/app/assets/stylesheets/tinymce/plugins/youtubeIframe/langs/es_dlg.js +0 -12
  88. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/bootstrap.css +0 -2228
  89. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/content.css +0 -189
  90. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/dialog.css +0 -295
  91. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/butt2.png +0 -0
  92. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/button-bg.png +0 -0
  93. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/buttons.png +0 -0
  94. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/down_arrow.gif +0 -0
  95. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/fade-butt.png +0 -0
  96. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/icons.png +0 -0
  97. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/items.gif +0 -0
  98. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/menu-arrow.png +0 -0
  99. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/menu-check.png +0 -0
  100. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/progress.gif +0 -0
  101. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/tabs.gif +0 -0
  102. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/img/toolbarbg.png +0 -0
  103. data/app/assets/stylesheets/tinymce/themes/advanced/skins/bootstrap/ui.css +0 -1163
  104. data/app/controllers/admin/grid_editor_controller.rb +0 -55
  105. data/app/views/admin/grid_editor/form.html.erb +0 -31
  106. data/app/views/admin/grid_editor/index.html.erb +0 -29
  107. data/config/sitemap.rb +0 -56
  108. data/lib/generators/camaleon_cms/gem_theme_template/app/controllers/plugins/my_plugin/admin_controller.rb +0 -8
  109. data/lib/generators/camaleon_cms/gem_theme_template/app/controllers/plugins/my_plugin/front_controller.rb +0 -8
  110. data/lib/generators/camaleon_cms/gem_theme_template/app/helpers/plugins/my_plugin/main_helper.rb +0 -22
  111. data/lib/generators/camaleon_cms/gem_theme_template/app/models/plugins/my_plugin/my_plugin.rb +0 -12
  112. data/lib/generators/camaleon_cms/gem_theme_template/app/views/plugins/my_plugin/admin/index.html.erb +0 -2
  113. data/lib/generators/camaleon_cms/gem_theme_template/app/views/plugins/my_plugin/front/index.html.erb +0 -2
  114. data/lib/generators/camaleon_cms/gem_theme_template/app/views/plugins/my_plugin/layouts/readme.txt +0 -2
  115. 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($.extend({}, DATA.tiny_mce.advanced, {selector: '.tinymce_textarea:not(.translated-item)', language: CURRENT_LOCALE, height: '480px', onPostRender: onEditorPostRender}));
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
 
@@ -158,9 +158,11 @@
158
158
  }
159
159
  }
160
160
 
161
+ // intro js custom
161
162
  .main-header.introjs-fixParent{
162
163
  width: 100%;
163
164
  .navbar{
164
165
  width: 100%;
165
166
  }
166
- }
167
+ }
168
+ //.introjs-skipbutton{ display: none; }
@@ -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 && @user.authenticate(data_user[:password])
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] = t('admin.login.message.fail')
37
+ flash[:error] = t('admin.login.message.fail')
38
38
  else
39
- flash[:error] = "Invalid captcha"
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("user_before_register", r)
116
- if captcha_verified? && @user.save
117
- @user.set_meta_from_form(params[:meta])
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] = t('admin.users.message.error_captcha')
126
- render "register"
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 "register"
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
- render json: @user.update(params[:password]) ? {message: 'update'} : {errors: @user.errors.full_messages.join(', ')}
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
- flash[:notice] = t('admin.users.message.updated')
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
@@ -0,0 +1,7 @@
1
+ class Api::V1::CategoryController < Api::ApiController
2
+
3
+ def categories
4
+ render json: current_site.full_categories
5
+ end
6
+
7
+ end
@@ -0,0 +1,8 @@
1
+ class Api::V1::PageController < Api::ApiController
2
+
3
+ def index
4
+ post_type = current_site.post_types.find_by_slug('page')
5
+ render json: post_type.posts
6
+ end
7
+
8
+ end
@@ -0,0 +1,8 @@
1
+ class Api::V1::PostController < Api::ApiController
2
+
3
+ def index
4
+ post_type = current_site.post_types.find_by_slug('post')
5
+ render json: post_type.posts
6
+ end
7
+
8
+ end
@@ -9,23 +9,7 @@
9
9
  module FrontendConcern extend ActiveSupport::Concern
10
10
  # visiting sitemap.xml
11
11
  def sitemap
12
- path = Rails.root.join("public", "sitemaps", current_site.slug, "sitemap.xml")
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.categories
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
@@ -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
- Category.where({term_group: self.id})
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 if value[:key].to_s == 'edit'}
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
- name: pt[:name],
270
- slug: pt[:name].to_s.parameterize,
271
- description: pt[:description]
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>&nbsp;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>&nbsp;and MySQL.&nbsp;</p> <p>With Camaleon you can do the following:</p> <ul> <li>Create instantly a lot of sites&nbsp;in the same installation</li> <li>Manage your content information in several languages</li> <li>Extend current functionality by&nbsp;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&nbsp;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&nbsp;more visitors at the same time</li> <li>Manage your information with a panel like wordpress&nbsp;</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' }) unless user.present?
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) && (template_files = get_list_template_files).present? %>
54
- <div class="form-group">
55
- <label class="control-label"><%= t('admin.post_type.template')%></label>
56
- <%= select("meta", "template", template_files, { include_blank: true, selected: (params[:meta][:template] rescue false || @post.meta[:template] ) }, {class: 'form-control'}) %>
57
- </div>
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
- <%= raw(t('admin.page_title.edit') + " " + @post_type.the_title.to_s + ": " + @post_decorate.the_title + " #{@post_decorate.the_status}") if !@post.new_record? %>
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>