camaleon_cms 2.3.0 → 2.3.1
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/README.md +1 -1
- data/app/controllers/camaleon_cms/admin/sessions_controller.rb +7 -3
- data/app/controllers/camaleon_cms/admin/settings_controller.rb +2 -2
- data/app/controllers/camaleon_cms/frontend_controller.rb +5 -0
- data/app/helpers/camaleon_cms/frontend/application_helper.rb +1 -0
- data/app/helpers/camaleon_cms/frontend/content_select_helper.rb +161 -0
- data/app/models/concerns/camaleon_cms/metas.rb +1 -1
- data/app/views/camaleon_cms/admin/posts/_sidebar.html.erb +2 -2
- data/app/views/camaleon_cms/admin/settings/_configuration_settings.html.erb +1 -1
- data/lib/camaleon_cms/version.rb +1 -1
- data/lib/plugin_routes.rb +33 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a2f40510933459726d45c615dddb3a2aa08a521d
|
4
|
+
data.tar.gz: 06896255a7dcecc0039d86c00ab0114e5c1c5497
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ec69cc71b0c772c1e3d9446526c7c0b21aad890b54a661712a46acace58645d7a10897c30d07c4fc064517199e31bd5b8fc4c334f5f9aea599a46843b9c6ef4
|
7
|
+
data.tar.gz: 2c5d72957463034ea92ea4e976636589b1416cc88ff551328b94233f774678b9265f853f1a2274755d44cf32ac876ffcf9d3b155560358c910ec12a685a81640
|
data/README.md
CHANGED
@@ -28,7 +28,7 @@
|
|
28
28
|
* Add the gem in your Gemfile
|
29
29
|
|
30
30
|
```
|
31
|
-
gem "camaleon_cms", '>=2.3.
|
31
|
+
gem "camaleon_cms", '>=2.3.1' # Stable versions 2.2.1, 2.1.1, 2.1.0
|
32
32
|
# gem "camaleon_cms", github: 'owen2345/camaleon-cms' # current development version
|
33
33
|
```
|
34
34
|
* Only Rails 5 support
|
@@ -17,7 +17,7 @@ class CamaleonCms::Admin::SessionsController < CamaleonCms::CamaleonController
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def login_post
|
20
|
-
data_user =
|
20
|
+
data_user = user_permit_data
|
21
21
|
cipher = Gibberish::AES::CBC.new(cama_get_session_id)
|
22
22
|
data_user[:password] = cipher.decrypt(data_user[:password]) rescue nil
|
23
23
|
@user = current_site.users.find_by_username(data_user[:username])
|
@@ -84,7 +84,7 @@ class CamaleonCms::Admin::SessionsController < CamaleonCms::CamaleonController
|
|
84
84
|
# TODO: Move this out of the controller
|
85
85
|
# send email reset password
|
86
86
|
if params[:user].present?
|
87
|
-
data_user =
|
87
|
+
data_user = user_permit_data
|
88
88
|
@user = current_site.users.find_by_email(data_user[:email])
|
89
89
|
if @user.present?
|
90
90
|
send_password_reset_email(@user)
|
@@ -103,7 +103,7 @@ class CamaleonCms::Admin::SessionsController < CamaleonCms::CamaleonController
|
|
103
103
|
if params[:user].present?
|
104
104
|
params[:user][:role] = PluginRoutes.system_info["default_user_role"]
|
105
105
|
params[:user][:is_valid_email] = false if current_site.need_validate_email?
|
106
|
-
user_data =
|
106
|
+
user_data = user_permit_data
|
107
107
|
result = cama_register_user(user_data, params[:meta])
|
108
108
|
if result[:result] == false && result[:type] == :captcha_error
|
109
109
|
@user.errors[:captcha] = t('camaleon_cms.admin.users.message.error_captcha')
|
@@ -158,4 +158,8 @@ class CamaleonCms::Admin::SessionsController < CamaleonCms::CamaleonController
|
|
158
158
|
end
|
159
159
|
end
|
160
160
|
|
161
|
+
def user_permit_data
|
162
|
+
params.require(:user).permit!
|
163
|
+
end
|
164
|
+
|
161
165
|
end
|
@@ -16,8 +16,8 @@ class CamaleonCms::Admin::SettingsController < CamaleonCms::AdminController
|
|
16
16
|
def site_saved
|
17
17
|
@site = current_site
|
18
18
|
if @site.update(params.require(:site).permit!)
|
19
|
-
@site.set_options(params[:
|
20
|
-
@site.
|
19
|
+
@site.set_options(params[:options]) if params[:options].present?
|
20
|
+
@site.set_metas(params[:metas]) if params[:metas].present?
|
21
21
|
@site.set_field_values(params[:field_options])
|
22
22
|
flash[:notice] = t('camaleon_cms.admin.settings.message.site_updated')
|
23
23
|
redirect_to action: :site
|
@@ -46,6 +46,7 @@ class CamaleonCms::FrontendController < CamaleonCms::CamaleonController
|
|
46
46
|
rescue
|
47
47
|
return page_not_found
|
48
48
|
end
|
49
|
+
@object = @post_type
|
49
50
|
@cama_visited_post_type = @post_type
|
50
51
|
@posts = @post_type.the_posts.paginate(:page => params[:page], :per_page => current_site.front_per_page).eager_load(:metas)
|
51
52
|
@categories = @post_type.categories.no_empty.eager_load(:metas).decorate
|
@@ -68,6 +69,7 @@ class CamaleonCms::FrontendController < CamaleonCms::CamaleonController
|
|
68
69
|
rescue
|
69
70
|
return page_not_found
|
70
71
|
end
|
72
|
+
@object = @post_tag
|
71
73
|
@cama_visited_tag = @post_tag
|
72
74
|
@posts = @post_tag.the_posts.paginate(:page => params[:page], :per_page => current_site.front_per_page).eager_load(:metas)
|
73
75
|
r_file = lookup_context.template_exists?("post_types/#{@post_type.the_slug}/post_tag") ? "post_types/#{@post_type.the_slug}/post_tag" : 'post_tag'
|
@@ -119,6 +121,7 @@ class CamaleonCms::FrontendController < CamaleonCms::CamaleonController
|
|
119
121
|
rescue
|
120
122
|
return page_not_found
|
121
123
|
end
|
124
|
+
@object = @user
|
122
125
|
@cama_visited_profile = true
|
123
126
|
layout_ = lookup_context.template_exists?("layouts/profile") ? "profile" : nil
|
124
127
|
r = {user: @user, layout: layout_, render: "profile"}; hooks_run("on_render_profile", r)
|
@@ -129,6 +132,7 @@ class CamaleonCms::FrontendController < CamaleonCms::CamaleonController
|
|
129
132
|
# render a post from draft
|
130
133
|
def draft_render
|
131
134
|
post_draft = current_site.posts.drafts.find(params[:draft_id])
|
135
|
+
@object = post_draft
|
132
136
|
if can?(:update, post_draft)
|
133
137
|
render_post(post_draft)
|
134
138
|
else
|
@@ -156,6 +160,7 @@ class CamaleonCms::FrontendController < CamaleonCms::CamaleonController
|
|
156
160
|
end
|
157
161
|
else
|
158
162
|
@post = @post.decorate
|
163
|
+
@object = @post
|
159
164
|
@cama_visited_post = @post
|
160
165
|
@post_type = @post.the_post_type
|
161
166
|
@comments = @post.the_comments
|
@@ -2,6 +2,7 @@ module CamaleonCms::Frontend::ApplicationHelper
|
|
2
2
|
include CamaleonCms::Frontend::SiteHelper
|
3
3
|
include CamaleonCms::Frontend::NavMenuHelper
|
4
4
|
include CamaleonCms::Frontend::SeoHelper
|
5
|
+
include CamaleonCms::Frontend::ContentSelectHelper
|
5
6
|
|
6
7
|
# add where conditionals to filter private/hidden/expired/drafts/unpublished
|
7
8
|
# note: only for post records
|
@@ -0,0 +1,161 @@
|
|
1
|
+
=begin
|
2
|
+
Camaleon CMS is a content management system
|
3
|
+
Copyright (C) 2015 by Owen Peredo Diaz
|
4
|
+
Email: owenperedo@gmail.com
|
5
|
+
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
6
|
+
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
7
|
+
See the GNU Affero General Public License (GPLv3) for more details.
|
8
|
+
=end
|
9
|
+
module CamaleonCms::Frontend::ContentSelectHelper
|
10
|
+
|
11
|
+
# select single post of post type
|
12
|
+
# the_post_type('post') do
|
13
|
+
# the_post('first-blog-post')
|
14
|
+
# end
|
15
|
+
def the_post(slug)
|
16
|
+
post = @object.the_post(slug)
|
17
|
+
process_in_block(post) do
|
18
|
+
yield(post) if block_given?
|
19
|
+
end
|
20
|
+
post
|
21
|
+
end
|
22
|
+
|
23
|
+
# select posts of post type
|
24
|
+
# the_post_type('post') do
|
25
|
+
# the_posts
|
26
|
+
# end
|
27
|
+
#
|
28
|
+
# the_post_type('post') do
|
29
|
+
# the_posts(limit: 10)
|
30
|
+
# end
|
31
|
+
def the_posts(options={})
|
32
|
+
@object.posts.visible_frontend.limit(options[:limit]).decorate
|
33
|
+
end
|
34
|
+
|
35
|
+
# select post type by just pass slug to parameter
|
36
|
+
# Example:
|
37
|
+
# the_post_type('post')
|
38
|
+
# the_post_type('page')
|
39
|
+
#
|
40
|
+
# the_post_type('post') do
|
41
|
+
# the_post('first-blog')
|
42
|
+
# end
|
43
|
+
def the_post_type(slug)
|
44
|
+
post_type = current_site.the_post_type(slug)
|
45
|
+
process_in_block(post_type) do
|
46
|
+
yield(post_type) if block_given?
|
47
|
+
end
|
48
|
+
post_type
|
49
|
+
end
|
50
|
+
|
51
|
+
# select comments of post
|
52
|
+
# the_post('blog')
|
53
|
+
# the_comments
|
54
|
+
# end
|
55
|
+
def the_comments(options={})
|
56
|
+
@object.comments.limit(options[:limit]).decorate if @object.present?
|
57
|
+
end
|
58
|
+
|
59
|
+
# select title of post
|
60
|
+
# the_post('blog') do
|
61
|
+
# the_title
|
62
|
+
# end
|
63
|
+
def the_title
|
64
|
+
@object.the_title if @object.present?
|
65
|
+
end
|
66
|
+
|
67
|
+
# select content of post
|
68
|
+
# the_post('blog') do
|
69
|
+
# the_content
|
70
|
+
# end
|
71
|
+
def the_content
|
72
|
+
@object.the_content.html_safe if @object.present?
|
73
|
+
end
|
74
|
+
|
75
|
+
# select url of post
|
76
|
+
# the_post('blog') do
|
77
|
+
# the_url
|
78
|
+
# end
|
79
|
+
def the_url
|
80
|
+
@object.the_url if @object.present?
|
81
|
+
end
|
82
|
+
|
83
|
+
# select thumbnail of post
|
84
|
+
# the_post('blog') do
|
85
|
+
# the_thumbnail
|
86
|
+
# end
|
87
|
+
def the_thumbnail
|
88
|
+
@object.the_thumb_url if @object.present?
|
89
|
+
end
|
90
|
+
|
91
|
+
# select slug of post, post type ... (@object)
|
92
|
+
# the_post('blog') do
|
93
|
+
# the_slug
|
94
|
+
# end
|
95
|
+
def the_slug
|
96
|
+
@object.the_slug if @object.present?
|
97
|
+
end
|
98
|
+
|
99
|
+
# select excerpt of post
|
100
|
+
# the_post('blog') do
|
101
|
+
# the_excerpt
|
102
|
+
# end
|
103
|
+
def the_excerpt(chars=200)
|
104
|
+
@object.the_excerpt(chars) if @object.present?
|
105
|
+
end
|
106
|
+
|
107
|
+
# select custome field from object
|
108
|
+
# the_post('blog') do
|
109
|
+
# the_field('extra-content')
|
110
|
+
# end
|
111
|
+
def the_field(slug)
|
112
|
+
@object.the_field(slug) if @object.present?
|
113
|
+
end
|
114
|
+
|
115
|
+
# loop through each post of post type
|
116
|
+
# each_post_of('post') do
|
117
|
+
# the_title
|
118
|
+
# end
|
119
|
+
#
|
120
|
+
# each_post_of('post', limit: 10) do
|
121
|
+
# the_title
|
122
|
+
# end
|
123
|
+
def each_post_of(post_type_slug, options={})
|
124
|
+
the_post_type(post_type_slug) do
|
125
|
+
the_posts(options).each do |post|
|
126
|
+
process_in_block(post) do
|
127
|
+
yield(post) if block_given?
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
# loop through each category of post type
|
134
|
+
# each_category_of('post') do
|
135
|
+
# the_title
|
136
|
+
# end
|
137
|
+
#
|
138
|
+
# each_category_of('post', limit: 4) do
|
139
|
+
# the_title
|
140
|
+
# end
|
141
|
+
def each_category_of(post_type_slug, options={})
|
142
|
+
the_post_type(post_type_slug) do
|
143
|
+
the_categories(options).each do |category|
|
144
|
+
process_in_block(category) do
|
145
|
+
yield(category) if block_given?
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
# allow object to be global varaible in block
|
152
|
+
# work_in_block_of(post) do
|
153
|
+
# the_field('extra-content')
|
154
|
+
# end
|
155
|
+
def process_in_block(object)
|
156
|
+
temp_object = @object
|
157
|
+
@object = object
|
158
|
+
yield
|
159
|
+
@object = temp_object
|
160
|
+
end
|
161
|
+
end
|
@@ -80,7 +80,7 @@ module CamaleonCms::Metas extend ActiveSupport::Concern
|
|
80
80
|
def set_options(h = {}, meta_key = "_default")
|
81
81
|
if h.present?
|
82
82
|
data = options(meta_key)
|
83
|
-
(h.is_a?(ActionController::Parameters) ? h.
|
83
|
+
(h.is_a?(ActionController::Parameters) ? h.to_hash : h).to_sym.each do |key, value|
|
84
84
|
data[key] = fix_meta_var(value)
|
85
85
|
end
|
86
86
|
set_meta(meta_key, data)
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<div class="panel-body ">
|
5
5
|
<div class="row">
|
6
6
|
<% if @post.draft? && !@post.parent.present? %>
|
7
|
-
<div class="col-md-12 input-submit"><%= f.submit "#{ (@post.new_record?) ? t('camaleon_cms.admin.page_title.create') : t('camaleon_cms.admin.button.update')}", class: "btn btn-success btn-lg btn-block"
|
7
|
+
<div class="col-md-12 input-submit"><%= f.submit "#{ (@post.new_record?) ? t('camaleon_cms.admin.page_title.create') : t('camaleon_cms.admin.button.update')}", class: "btn btn-success btn-lg btn-block" %></div>
|
8
8
|
<% elsif @post.draft? && @post.parent.present? %>
|
9
9
|
<div class="col-md-12 input-submit"><%= f.submit "#{ t('camaleon_cms.admin.button.recover') }", class: "btn btn-success btn-lg btn-block", onclick: "$('#post_status').val('#{@post.get_option('draft_status')}')" %></div>
|
10
10
|
<% else %>
|
@@ -40,7 +40,7 @@
|
|
40
40
|
<label class=" control-label"><%= t('camaleon_cms.admin.post_type.published')%></label>
|
41
41
|
<select id="post_status" name="post[status]" class="form-control select">
|
42
42
|
<% if can? :publish_post, @post_type %>
|
43
|
-
<option class="
|
43
|
+
<option class="" value="published" <%= (@post[:status] == "published") ? "selected": "" %> ><%= t('camaleon_cms.admin.post_type.published')%></option>
|
44
44
|
<% end %>
|
45
45
|
<option value="pending" <%= (@post[:status] == "pending") ? "selected": "" %>><%= t('camaleon_cms.admin.table.pending')%></option>
|
46
46
|
<option value="draft" <%= (@post[:status] == "draft") ? "selected": "" %>><%= t('camaleon_cms.admin.table.draft')%></option>
|
@@ -46,7 +46,7 @@
|
|
46
46
|
</div>
|
47
47
|
<div class="form-group">
|
48
48
|
<label for=""><%= t('camaleon_cms.admin.settings.allow_user_registration') %></label><br>
|
49
|
-
<%= check_box :
|
49
|
+
<%= check_box :options, :permit_create_account, {checked: @site.get_option('permit_create_account', false), class: "icheckbox0"}, "true", "" %>
|
50
50
|
</div>
|
51
51
|
<div class="form-group">
|
52
52
|
<label for=""><%= t('camaleon_cms.admin.settings.security.captcha_user_register') %></label><br>
|
data/lib/camaleon_cms/version.rb
CHANGED
data/lib/plugin_routes.rb
CHANGED
@@ -95,6 +95,14 @@ class PluginRoutes
|
|
95
95
|
cache_variable("statis_system_info", settings)
|
96
96
|
end
|
97
97
|
alias_method :system_info, :static_system_info
|
98
|
+
|
99
|
+
def isRails4?
|
100
|
+
Rails.version.to_s[0].to_i == 4
|
101
|
+
end
|
102
|
+
|
103
|
+
def isRails5?
|
104
|
+
Rails.version.to_s[0].to_i == 5
|
105
|
+
end
|
98
106
|
end
|
99
107
|
|
100
108
|
# reload routes
|
@@ -339,3 +347,28 @@ class PluginRoutes
|
|
339
347
|
Gem.available?(name)
|
340
348
|
end
|
341
349
|
end
|
350
|
+
|
351
|
+
#********* fix missing helper method for breadcrumb on rails gem **********#
|
352
|
+
if PluginRoutes.isRails5?
|
353
|
+
module BreadcrumbsOnRails
|
354
|
+
module ActionController extend ActiveSupport::Concern
|
355
|
+
def self.included(base = nil, &block)
|
356
|
+
if base.nil?
|
357
|
+
@_included_block = block
|
358
|
+
else
|
359
|
+
super
|
360
|
+
end
|
361
|
+
end
|
362
|
+
|
363
|
+
included do |base|
|
364
|
+
extend ClassMethods
|
365
|
+
helper HelperMethods if respond_to? :helper
|
366
|
+
helper_method :add_breadcrumb, :breadcrumbs if respond_to? :helper_method
|
367
|
+
|
368
|
+
unless base.respond_to?(:before_action)
|
369
|
+
base.alias_method :before_action, :before_filter
|
370
|
+
end
|
371
|
+
end
|
372
|
+
end
|
373
|
+
end
|
374
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: camaleon_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.
|
4
|
+
version: 2.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Owen Peredo Diaz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bcrypt
|
@@ -42,14 +42,14 @@ dependencies:
|
|
42
42
|
name: draper
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1.3'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.3'
|
55
55
|
- !ruby/object:Gem::Dependency
|
@@ -498,6 +498,7 @@ files:
|
|
498
498
|
- app/helpers/camaleon_cms/content_helper.rb
|
499
499
|
- app/helpers/camaleon_cms/email_helper.rb
|
500
500
|
- app/helpers/camaleon_cms/frontend/application_helper.rb
|
501
|
+
- app/helpers/camaleon_cms/frontend/content_select_helper.rb
|
501
502
|
- app/helpers/camaleon_cms/frontend/nav_menu_helper.rb
|
502
503
|
- app/helpers/camaleon_cms/frontend/seo_helper.rb
|
503
504
|
- app/helpers/camaleon_cms/frontend/site_helper.rb
|