camaleon_cms 2.4.3.5 → 2.4.3.6
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/README.md +5 -5
- data/app/apps/themes/camaleon_first/views/layouts/{mailer.html.erb → camaleon_cms/mailer.html.erb} +0 -0
- data/app/apps/themes/camaleon_first/views/{html_mailer/mailer.html.erb → mailer.html.erb} +0 -0
- data/app/assets/javascripts/camaleon_cms/admin/jquery.validate.js +3 -3
- data/app/assets/javascripts/camaleon_cms/admin/tinymce/langs/zh-CN.js +10 -1
- data/app/assets/stylesheets/camaleon_cms/admin/uploader/_uploadfile.css.scss +14 -2
- data/app/controllers/camaleon_cms/admin/appearances/nav_menus_controller.rb +4 -3
- data/app/controllers/camaleon_cms/admin/categories_controller.rb +3 -0
- data/app/controllers/camaleon_cms/admin/comments_controller.rb +1 -0
- data/app/controllers/camaleon_cms/admin/posts/drafts_controller.rb +1 -1
- data/app/controllers/camaleon_cms/admin/posts_controller.rb +21 -7
- data/app/controllers/camaleon_cms/admin/sessions_controller.rb +0 -2
- data/app/controllers/camaleon_cms/admin/settings_controller.rb +1 -1
- data/app/controllers/camaleon_cms/admin/users_controller.rb +14 -3
- data/app/controllers/camaleon_cms/frontend_controller.rb +1 -1
- data/app/controllers/concerns/camaleon_cms/frontend_concern.rb +4 -4
- data/app/decorators/camaleon_cms/application_decorator.rb +1 -1
- data/app/decorators/camaleon_cms/post_decorator.rb +2 -2
- data/app/decorators/camaleon_cms/post_type_decorator.rb +3 -1
- data/app/decorators/camaleon_cms/user_decorator.rb +4 -0
- data/app/helpers/camaleon_cms/admin/application_helper.rb +1 -1
- data/app/helpers/camaleon_cms/admin/custom_fields_helper.rb +8 -8
- data/app/helpers/camaleon_cms/admin/menus_helper.rb +1 -1
- data/app/helpers/camaleon_cms/camaleon_helper.rb +5 -0
- data/app/helpers/camaleon_cms/uploader_helper.rb +1 -1
- data/app/models/camaleon_cms/post.rb +13 -6
- data/app/models/camaleon_cms/post_type.rb +1 -1
- data/app/models/camaleon_cms/site.rb +1 -1
- data/app/models/camaleon_cms/user_role.rb +8 -0
- data/app/models/concerns/camaleon_cms/custom_fields_read.rb +9 -7
- data/app/models/concerns/camaleon_cms/user_methods.rb +11 -1
- data/app/uploaders/camaleon_cms_local_uploader.rb +4 -2
- data/app/uploaders/camaleon_cms_uploader.rb +1 -1
- data/app/views/camaleon_cms/admin/categories/index.html.erb +2 -2
- data/app/views/camaleon_cms/admin/post_tags/index.html.erb +2 -2
- data/app/views/camaleon_cms/admin/posts/_sidebar.html.erb +1 -1
- data/app/views/camaleon_cms/admin/posts/index.html.erb +3 -2
- data/app/views/camaleon_cms/admin/sessions/forgot.html.erb +2 -2
- data/app/views/camaleon_cms/admin/sessions/login.html.erb +3 -5
- data/app/views/camaleon_cms/admin/sessions/register.html.erb +1 -1
- data/app/views/camaleon_cms/admin/settings/_configuration_settings.html.erb +2 -2
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_posts.html.erb +1 -1
- data/app/views/camaleon_cms/admin/user_roles/index.html.erb +8 -2
- data/app/views/camaleon_cms/admin/users/form.html.erb +2 -2
- data/app/views/camaleon_cms/admin/users/index.html.erb +8 -1
- data/app/views/layouts/camaleon_cms/admin.html.erb +2 -2
- data/config/initializers/active_record_extension.rb +9 -0
- data/config/initializers/assets.rb +1 -1
- data/config/locales/camaleon_cms/admin/en.yml +1 -1
- data/config/locales/camaleon_cms/admin/es.yml +2 -2
- data/config/locales/camaleon_cms/admin/fr.yml +1 -1
- data/config/locales/camaleon_cms/admin/it.yml +1 -1
- data/config/locales/camaleon_cms/admin/js.yml +40 -40
- data/config/locales/camaleon_cms/admin/nl.yml +1 -1
- data/config/locales/camaleon_cms/admin/pt-BR.yml +1 -1
- data/config/locales/camaleon_cms/admin/pt.yml +1 -1
- data/config/locales/camaleon_cms/admin/ru.yml +1 -1
- data/config/locales/camaleon_cms/admin/zh-CH.yml +56 -30
- data/config/routes/frontend.rb +53 -14
- data/lib/camaleon_cms/engine.rb +4 -2
- data/lib/camaleon_cms/version.rb +1 -1
- data/lib/ext/string.rb +10 -2
- data/lib/generators/camaleon_cms/gem_plugin_generator.rb +3 -2
- data/spec/dummy/db/schema.rb +11 -0
- data/spec/dummy/log/test.log +56824 -0
- data/spec/features/pages_spec.rb +2 -1
- data/spec/features/posts_spec.rb +3 -1
- data/spec/spec_helper.rb +2 -2
- data/spec/support/common.rb +2 -2
- metadata +6 -10
- data/app/assets/javascripts/camaleon_cms/admin/login.js.coffee +0 -7
- data/app/assets/javascripts/camaleon_cms/admin/login_manifest.js +0 -15
- data/app/assets/javascripts/camaleon_cms/gibberish-aes.js +0 -1017
- data/lib/ext/aes_crypt.rb +0 -246
- data/spec/dummy/db/test.sqlite3 +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b264403b317f1fc7b159a14442421358ab80d98
|
4
|
+
data.tar.gz: bd2ddf3797fc12138f8d0080767ae8517af75e36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e739c3983fb4c3cb399f1c53ac56505821fb810468af2e014c8e413d0be7f9362a8b0a18c02d73a2691ba8fd75522b1dd45909fb5dda600a1f3e6cfc87d75fc
|
7
|
+
data.tar.gz: b668dba2056ce6b4daa25b149a876316f0143e8c15a98730ab6b255b966d9488cea61d09629b1436378896e65a317cd4e1c23c071152ed5e6eb3e350fb862479
|
data/README.md
CHANGED
@@ -46,15 +46,15 @@
|
|
46
46
|
|
47
47
|
Add in your Gemfile draper for Rails 5
|
48
48
|
```
|
49
|
-
gem 'draper',
|
49
|
+
gem 'draper', '~> 3'
|
50
50
|
```
|
51
|
-
|
51
|
+
Be careful with sass-rails, recommended v5 (Camaleon doesn't support for sprockets >= 4 which is included in sass-rails 6)
|
52
52
|
```
|
53
53
|
gem 'sass-rails', '~> 5.0'
|
54
54
|
```
|
55
|
-
|
55
|
+
Update bundle
|
56
56
|
```
|
57
|
-
|
57
|
+
bundle update
|
58
58
|
```
|
59
59
|
|
60
60
|
* Install required Gem and dependencies
|
@@ -172,7 +172,7 @@ http://camaleon.tuzitio.com/license.html
|
|
172
172
|
RAILS_ENV=test bundle exec rake app:db:migrate
|
173
173
|
RAILS_ENV=test bundle exec rake app:db:test:prepare
|
174
174
|
```
|
175
|
-
* Configure/Install
|
175
|
+
* Configure/Install Poltergeist and change your phanthomjs path in spec/spec_helper.rb
|
176
176
|
|
177
177
|
* Run testing
|
178
178
|
```
|
data/app/apps/themes/camaleon_first/views/layouts/{mailer.html.erb → camaleon_cms/mailer.html.erb}
RENAMED
File without changes
|
File without changes
|
@@ -5,8 +5,7 @@
|
|
5
5
|
|
6
6
|
//***************customization*****************/
|
7
7
|
// jquery custom validations and default values
|
8
|
-
(function
|
9
|
-
|
8
|
+
jQuery(function(){
|
10
9
|
// file formats
|
11
10
|
$.file_formats = {
|
12
11
|
jpg: "image",
|
@@ -120,4 +119,5 @@
|
|
120
119
|
jQuery.validator.addClassRules({
|
121
120
|
file_format: {file_format: true}
|
122
121
|
});
|
123
|
-
|
122
|
+
$('form.cama_form_validate').validate();
|
123
|
+
});
|
@@ -129,6 +129,15 @@ tinymce.addI18n('zh-CN',{
|
|
129
129
|
"Poster": "\u5c01\u9762",
|
130
130
|
"Alternative source": "\u955c\u50cf",
|
131
131
|
"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
|
132
|
+
"Insert file": "插入文件",
|
133
|
+
"Media": "媒体文件",
|
134
|
+
"Image": "图片",
|
135
|
+
"Link": "链接",
|
136
|
+
"New line at the end": "在末尾插入新行",
|
137
|
+
"New line": "新行",
|
138
|
+
"Date/time": "日期/时间",
|
139
|
+
"Template": "模板",
|
140
|
+
"Insert/edit media": "插入/编辑媒体文件",
|
132
141
|
"Insert video": "\u63d2\u5165\u89c6\u9891",
|
133
142
|
"Embed": "\u5185\u5d4c",
|
134
143
|
"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
|
@@ -216,4 +225,4 @@ tinymce.addI18n('zh-CN',{
|
|
216
225
|
"View": "\u89c6\u56fe",
|
217
226
|
"Table": "\u8868\u683c",
|
218
227
|
"Format": "\u683c\u5f0f"
|
219
|
-
});
|
228
|
+
});
|
@@ -10,6 +10,11 @@
|
|
10
10
|
padding: 5px 5px 5px 15px
|
11
11
|
}
|
12
12
|
|
13
|
+
.ajax-file-upload-filename {
|
14
|
+
overflow: auto;
|
15
|
+
max-width: 100%;
|
16
|
+
}
|
17
|
+
|
13
18
|
.ajax-file-upload-filesize {
|
14
19
|
width: 50px;
|
15
20
|
height: auto;
|
@@ -20,7 +25,7 @@ vertical-align:middle;
|
|
20
25
|
.ajax-file-upload-progress {
|
21
26
|
margin: 5px 10px 5px 0px;
|
22
27
|
position: relative;
|
23
|
-
width:
|
28
|
+
width: 98%;
|
24
29
|
border: 1px solid #ddd;
|
25
30
|
padding: 1px;
|
26
31
|
border-radius: 3px;
|
@@ -221,6 +226,13 @@ margin: 5px 10px 5px 0px;
|
|
221
226
|
font-size: 120px;
|
222
227
|
}
|
223
228
|
}
|
229
|
+
.p_label {
|
230
|
+
span {
|
231
|
+
overflow: auto;
|
232
|
+
max-width: 100%;
|
233
|
+
display: inline-block;
|
234
|
+
}
|
235
|
+
}
|
224
236
|
.p_footer{
|
225
237
|
border-top: 1px solid #ccc;
|
226
238
|
margin-top: 12px;
|
@@ -241,4 +253,4 @@ margin: 5px 10px 5px 0px;
|
|
241
253
|
width: 100% !important;
|
242
254
|
}
|
243
255
|
}
|
244
|
-
}
|
256
|
+
}
|
@@ -55,7 +55,7 @@ class CamaleonCms::Admin::Appearances::NavMenusController < CamaleonCms::AdminCo
|
|
55
55
|
def save_custom_settings
|
56
56
|
@nav_menu_item = current_site.nav_menu_items.find(params[:id])
|
57
57
|
@nav_menu_item.set_field_values(params.require(:field_options).permit!)
|
58
|
-
|
58
|
+
head :ok
|
59
59
|
end
|
60
60
|
|
61
61
|
# render edit external menu item
|
@@ -75,7 +75,7 @@ class CamaleonCms::Admin::Appearances::NavMenusController < CamaleonCms::AdminCo
|
|
75
75
|
def delete_menu_item
|
76
76
|
# @nav_menu = current_site.nav_menus.find(params[:nav_menu_id])
|
77
77
|
current_site.nav_menu_items.find(params[:id]).destroy
|
78
|
-
|
78
|
+
head :ok
|
79
79
|
end
|
80
80
|
|
81
81
|
# update the reorder of items
|
@@ -102,7 +102,8 @@ class CamaleonCms::Admin::Appearances::NavMenusController < CamaleonCms::AdminCo
|
|
102
102
|
|
103
103
|
if params[:custom_items].present? # custom menu items
|
104
104
|
params[:custom_items].each do |index, item|
|
105
|
-
|
105
|
+
type = item['kind'].present? ? item['kind'] : 'external'
|
106
|
+
item = @nav_menu.append_menu_item({label: item['label'], link: item['url'], type: type})
|
106
107
|
items << item
|
107
108
|
end
|
108
109
|
end
|
@@ -17,9 +17,12 @@ class CamaleonCms::Admin::CategoriesController < CamaleonCms::AdminController
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def update
|
20
|
+
hooks_run("update_category", {category: @category, post_type: @post_type})
|
21
|
+
|
20
22
|
if @category.update(params.require(:category).permit!)
|
21
23
|
@category.set_options(params[:meta])
|
22
24
|
@category.set_field_values(params[:field_options])
|
25
|
+
hooks_run("updated_category", {category: @category, post_type: @post_type})
|
23
26
|
flash[:notice] = t('camaleon_cms.admin.post_type.message.updated')
|
24
27
|
redirect_to action: :index
|
25
28
|
else
|
@@ -48,7 +48,7 @@ class CamaleonCms::Admin::Posts::DraftsController < CamaleonCms::Admin::PostsCon
|
|
48
48
|
post_data = params.require(:post).permit!
|
49
49
|
post_data.delete(:created_at) unless params[:post][:created_at].present?
|
50
50
|
post_data.delete(:updated_at) unless params[:post][:updated_at].present?
|
51
|
-
post_data[:status] = '
|
51
|
+
post_data[:status] = 'draft_child'
|
52
52
|
post_data[:post_parent] = params[:post_id]
|
53
53
|
post_data[:user_id] = cama_current_user.id unless post_data[:user_id].present?
|
54
54
|
post_data[:data_tags] = params[:tags].to_s
|
@@ -35,14 +35,15 @@ class CamaleonCms::Admin::PostsController < CamaleonCms::AdminController
|
|
35
35
|
@lists_tab = params[:s]
|
36
36
|
add_breadcrumb I18n.t("camaleon_cms.admin.post_type.#{params[:s]}") if params[:s].present?
|
37
37
|
case params[:s]
|
38
|
-
when "published", "pending", "
|
39
|
-
@posts = @posts.
|
40
|
-
|
38
|
+
when "published", "pending", "trash"
|
39
|
+
@posts = @posts.send(params[:s])
|
40
|
+
when "draft"
|
41
|
+
@posts = @posts.drafts
|
41
42
|
when "all"
|
42
43
|
@posts = @posts.no_trash
|
43
44
|
end
|
44
45
|
|
45
|
-
@btns = {published: "#{t('camaleon_cms.admin.post_type.published')} (#{posts_all.
|
46
|
+
@btns = {published: "#{t('camaleon_cms.admin.post_type.published')} (#{posts_all.published.size})", all: "#{t('camaleon_cms.admin.post_type.all')} (#{posts_all.no_trash.size})", pending: "#{t('camaleon_cms.admin.post_type.pending')} (#{posts_all.pending.size})", draft: "#{t('camaleon_cms.admin.post_type.draft')} (#{posts_all.drafts.size})", trash: "#{t('camaleon_cms.admin.post_type.trash')} (#{posts_all.trash.size})"}
|
46
47
|
r = {posts: @posts, post_type: @post_type, btns: @btns, all_posts: posts_all, render: 'index', per_page: per_page }
|
47
48
|
hooks_run("list_post", r)
|
48
49
|
per_page = 9999999 if @post_type.manage_hierarchy?
|
@@ -91,13 +92,24 @@ class CamaleonCms::Admin::PostsController < CamaleonCms::AdminController
|
|
91
92
|
end
|
92
93
|
|
93
94
|
def update
|
94
|
-
@post = @post.parent if @post.draft? && @post.parent.present?
|
95
|
-
authorize! :update, @post
|
96
|
-
@post.drafts.destroy_all
|
97
95
|
post_data = get_post_data
|
96
|
+
delete_drafts = false
|
97
|
+
if @post.draft_child? && @post.parent.present?
|
98
|
+
# This is a draft (as a child of the original post)
|
99
|
+
original_parent = @post.parent.parent
|
100
|
+
post_data[:post_parent] = original_parent.present? ? original_parent.id : nil
|
101
|
+
@post = @post.parent
|
102
|
+
delete_drafts = true
|
103
|
+
elsif @post.draft?
|
104
|
+
# This is a normal draft (post whose status was set to 'draft')
|
105
|
+
@post.status = 'published' if post_data[:status].blank?
|
106
|
+
end
|
107
|
+
authorize! :update, @post
|
98
108
|
r = {post: @post, post_type: @post_type}; hooks_run("update_post", r)
|
99
109
|
@post = r[:post]
|
100
110
|
if @post.update(post_data)
|
111
|
+
# delete drafts only on successful update operation
|
112
|
+
@post.drafts.destroy_all if delete_drafts
|
101
113
|
@post.set_metas(params[:meta])
|
102
114
|
@post.set_field_values(params[:field_options])
|
103
115
|
@post.set_options(params[:options])
|
@@ -116,6 +128,7 @@ class CamaleonCms::Admin::PostsController < CamaleonCms::AdminController
|
|
116
128
|
# @post.children.destroy_all unless @post.draft? TODO: why delete children?
|
117
129
|
@post.update_column('status', 'trash')
|
118
130
|
@post.update_extra_data
|
131
|
+
hooks_run("trashed_post", {post: @post, post_type: @post_type})
|
119
132
|
flash[:notice] = t('camaleon_cms.admin.post.message.trash', post_type: @post_type.decorate.the_title)
|
120
133
|
redirect_to action: :index, s: params[:s]
|
121
134
|
end
|
@@ -125,6 +138,7 @@ class CamaleonCms::Admin::PostsController < CamaleonCms::AdminController
|
|
125
138
|
authorize! :update, @post
|
126
139
|
@post.update_column('status', @post.options[:status_default] || 'pending')
|
127
140
|
@post.update_extra_data
|
141
|
+
hooks_run("restored_post", {post: @post, post_type: @post_type})
|
128
142
|
flash[:notice] = t('camaleon_cms.admin.post.message.restore', post_type: @post_type.decorate.the_title)
|
129
143
|
redirect_to action: :index, s: params[:s]
|
130
144
|
end
|
@@ -18,8 +18,6 @@ class CamaleonCms::Admin::SessionsController < CamaleonCms::CamaleonController
|
|
18
18
|
|
19
19
|
def login_post
|
20
20
|
data_user = user_permit_data
|
21
|
-
cipher = Gibberish::AES::CBC.new(cama_get_session_id)
|
22
|
-
data_user[:password] = cipher.decrypt(data_user[:password]) rescue nil
|
23
21
|
@user = current_site.users.by_username(data_user[:username]).first
|
24
22
|
captcha_validate = captcha_verify_if_under_attack("login")
|
25
23
|
r = {user: @user, params: params, password: data_user[:password], captcha_validate: captcha_validate, stop_process: false}; hooks_run("user_before_login", r)
|
@@ -68,7 +68,7 @@ class CamaleonCms::Admin::SettingsController < CamaleonCms::AdminController
|
|
68
68
|
def test_email
|
69
69
|
begin
|
70
70
|
CamaleonCms::HtmlMailer.sender(params[:email], 'Test', {content: 'Test content'}).deliver_now
|
71
|
-
|
71
|
+
head :ok
|
72
72
|
rescue => e
|
73
73
|
render inline: e.message, status: 502
|
74
74
|
end
|
@@ -27,7 +27,7 @@ class CamaleonCms::Admin::UsersController < CamaleonCms::AdminController
|
|
27
27
|
|
28
28
|
def update
|
29
29
|
r={user: @user}; hooks_run('user_update', r)
|
30
|
-
if @user.update(
|
30
|
+
if @user.update(user_params)
|
31
31
|
@user.set_metas(params[:meta]) if params[:meta].present?
|
32
32
|
@user.set_field_values(params[:field_options])
|
33
33
|
r = {user: @user, message: t('camaleon_cms.admin.users.message.updated'), params: params}; hooks_run('user_after_edited', r)
|
@@ -80,7 +80,9 @@ class CamaleonCms::Admin::UsersController < CamaleonCms::AdminController
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def destroy
|
83
|
-
if @user.
|
83
|
+
if current_user.id == @user.id
|
84
|
+
flash[:error] = t('camaleon_cms.admin.users.message.user_can_not_delete_own_account', default: 'User can not delete own account')
|
85
|
+
elsif @user.destroy
|
84
86
|
flash[:notice] = t('camaleon_cms.admin.users.message.deleted')
|
85
87
|
r={user: @user}; hooks_run('user_destroyed', r)
|
86
88
|
end
|
@@ -99,7 +101,16 @@ class CamaleonCms::Admin::UsersController < CamaleonCms::AdminController
|
|
99
101
|
end
|
100
102
|
|
101
103
|
def user_id_param
|
102
|
-
|
104
|
+
params[:id] || params[:user_id]
|
105
|
+
end
|
106
|
+
|
107
|
+
def user_params
|
108
|
+
parameters = params.require(:user)
|
109
|
+
if current_user.role_grantor?(@user)
|
110
|
+
parameters.permit(:username, :email, :role, :first_name, :last_name)
|
111
|
+
else
|
112
|
+
parameters.permit(:username, :email, :first_name, :last_name)
|
113
|
+
end
|
103
114
|
end
|
104
115
|
|
105
116
|
def set_user
|
@@ -156,7 +156,7 @@ class CamaleonCms::FrontendController < CamaleonCms::CamaleonController
|
|
156
156
|
if params[:format] == 'html' || !params[:format].present?
|
157
157
|
page_not_found()
|
158
158
|
else
|
159
|
-
|
159
|
+
head 404
|
160
160
|
end
|
161
161
|
else
|
162
162
|
@post = @post.decorate
|
@@ -31,14 +31,14 @@ module CamaleonCms::FrontendConcern extend ActiveSupport::Concern
|
|
31
31
|
@post = current_site.posts.find_by_id(params[:post_id]).decorate
|
32
32
|
user = cama_current_user
|
33
33
|
comment_data = {}
|
34
|
-
if
|
34
|
+
if user.present?
|
35
|
+
comment_data[:author] = user.fullname
|
36
|
+
comment_data[:author_email] = user.email
|
37
|
+
elsif current_site.get_option('permit_anonimos_comment', false)
|
35
38
|
user = current_site.get_anonymous_user
|
36
39
|
comment_data[:is_anonymous] = true
|
37
40
|
comment_data[:author] = params[:post_comment][:name]
|
38
41
|
comment_data[:author_email] = params[:post_comment][:email]
|
39
|
-
else
|
40
|
-
comment_data[:author] = user.fullname
|
41
|
-
comment_data[:author_email] = user.email
|
42
42
|
end
|
43
43
|
|
44
44
|
if @post.can_commented? && user.present?
|
@@ -26,7 +26,7 @@ class CamaleonCms::ApplicationDecorator < Draper::Decorator
|
|
26
26
|
|
27
27
|
# return updated at date formatted
|
28
28
|
def the_updated_at(format = :long)
|
29
|
-
h.l(object.
|
29
|
+
h.l(object.updated_at, format: format.to_sym)
|
30
30
|
end
|
31
31
|
|
32
32
|
# draw breadcrumb for this model
|
@@ -150,7 +150,7 @@ class CamaleonCms::PostDecorator < CamaleonCms::ApplicationDecorator
|
|
150
150
|
when "published"
|
151
151
|
color = "info"
|
152
152
|
status = I18n.t('camaleon_cms.admin.post_type.published', default: 'Published')
|
153
|
-
when "draft"
|
153
|
+
when "draft", "draft_child"
|
154
154
|
color = "warning"
|
155
155
|
status = I18n.t('camaleon_cms.admin.table.draft', default: 'Draft')
|
156
156
|
when "trash"
|
@@ -227,7 +227,7 @@ class CamaleonCms::PostDecorator < CamaleonCms::ApplicationDecorator
|
|
227
227
|
# return all related posts of current post
|
228
228
|
def the_related_posts
|
229
229
|
ptype = self.the_post_type
|
230
|
-
ptype.the_posts.joins(:categories).where("#{CamaleonCms::TermRelationship.table_name}" => {term_taxonomy_id: the_categories.pluck(:id)})
|
230
|
+
ptype.the_posts.joins(:categories).where("#{CamaleonCms::TermRelationship.table_name}" => {term_taxonomy_id: the_categories.pluck(:id)}).distinct
|
231
231
|
end
|
232
232
|
|
233
233
|
# fix for "Using Draper::Decorator without inferred source class"
|
@@ -10,7 +10,9 @@ class CamaleonCms::PostTypeDecorator < CamaleonCms::TermTaxonomyDecorator
|
|
10
10
|
args[:locale] = get_locale unless args.include?(:locale)
|
11
11
|
args[:format] = args[:format] || "html"
|
12
12
|
as_path = args.delete(:as_path)
|
13
|
-
|
13
|
+
route = "cama_post_type_#{self.id}_#{as_path.present? ? "path" : "url"}"
|
14
|
+
PluginRoutes.reload unless Rails.application.routes.url_helpers.method_defined?(route.to_sym)
|
15
|
+
h.cama_url_to_fixed(route, args)
|
14
16
|
end
|
15
17
|
|
16
18
|
# return the public url with group structure
|
@@ -51,6 +51,10 @@ class CamaleonCms::UserDecorator < CamaleonCms::ApplicationDecorator
|
|
51
51
|
h.current_site.posts.where(user_id: object.id)
|
52
52
|
end
|
53
53
|
|
54
|
+
def role_grantor?(other_user)
|
55
|
+
h.can?(:manage, :users) && id != other_user.id
|
56
|
+
end
|
57
|
+
|
54
58
|
def self.object_class_name
|
55
59
|
'CamaleonCms::User'
|
56
60
|
end
|
@@ -30,7 +30,7 @@ module CamaleonCms::Admin::ApplicationHelper
|
|
30
30
|
#{will_paginate(items, will_paginate_options) rescue '' }
|
31
31
|
</div>
|
32
32
|
<div class='col-md-6 text-right total-items'>
|
33
|
-
<strong
|
33
|
+
<strong>#{I18n.t('camaleon_cms.admin.table.total', default: 'Total')}: #{items.total_entries rescue items.count} </strong>
|
34
34
|
</div>
|
35
35
|
</div>"
|
36
36
|
end
|
@@ -42,7 +42,7 @@ module CamaleonCms::Admin::CustomFieldsHelper
|
|
42
42
|
}
|
43
43
|
items[:radio] = {
|
44
44
|
key: 'radio',
|
45
|
-
label: 'Radio',
|
45
|
+
label: t('camaleon_cms.admin.custom_field.fields.radio', default: 'Radio'),
|
46
46
|
options: {
|
47
47
|
required: true,
|
48
48
|
multiple: false,
|
@@ -57,7 +57,7 @@ module CamaleonCms::Admin::CustomFieldsHelper
|
|
57
57
|
|
58
58
|
items[:checkbox] = {
|
59
59
|
key: 'checkbox',
|
60
|
-
label: 'Checkbox',
|
60
|
+
label: t('camaleon_cms.admin.custom_field.fields.checkbox', default: 'Checkbox'),
|
61
61
|
options: {
|
62
62
|
required: true,
|
63
63
|
multiple: false,
|
@@ -67,7 +67,7 @@ module CamaleonCms::Admin::CustomFieldsHelper
|
|
67
67
|
}
|
68
68
|
items[:checkboxes] = {
|
69
69
|
key: 'checkboxes',
|
70
|
-
label: 'Checkboxes',
|
70
|
+
label: t('camaleon_cms.admin.custom_field.fields.checkboxes', default: 'Checkboxes'),
|
71
71
|
options: {
|
72
72
|
required: false,
|
73
73
|
multiple: false,
|
@@ -80,7 +80,7 @@ module CamaleonCms::Admin::CustomFieldsHelper
|
|
80
80
|
}
|
81
81
|
items[:audio] = {
|
82
82
|
key: 'audio',
|
83
|
-
label: 'Audio',
|
83
|
+
label: t('camaleon_cms.admin.custom_field.fields.audio', default: 'Audio'),
|
84
84
|
options: {
|
85
85
|
required: true,
|
86
86
|
multiple: true,
|
@@ -147,7 +147,7 @@ module CamaleonCms::Admin::CustomFieldsHelper
|
|
147
147
|
}
|
148
148
|
items[:editor] = {
|
149
149
|
key: 'editor',
|
150
|
-
label: 'Editor',
|
150
|
+
label: t('camaleon_cms.admin.custom_field.fields.editor', default: 'Editor'),
|
151
151
|
options: {
|
152
152
|
required: false,
|
153
153
|
multiple: true,
|
@@ -229,7 +229,7 @@ module CamaleonCms::Admin::CustomFieldsHelper
|
|
229
229
|
}
|
230
230
|
items[:url] = {
|
231
231
|
key: 'url',
|
232
|
-
label: 'URL',
|
232
|
+
label: t('camaleon_cms.admin.custom_field.fields.url', default: 'URL'),
|
233
233
|
options: {
|
234
234
|
required: true,
|
235
235
|
multiple: true,
|
@@ -240,7 +240,7 @@ module CamaleonCms::Admin::CustomFieldsHelper
|
|
240
240
|
}
|
241
241
|
items[:video] = {
|
242
242
|
key: 'video',
|
243
|
-
label: 'Video',
|
243
|
+
label: t('camaleon_cms.admin.custom_field.fields.video', default: 'Video'),
|
244
244
|
options: {
|
245
245
|
required: true,
|
246
246
|
multiple: true,
|
@@ -292,7 +292,7 @@ module CamaleonCms::Admin::CustomFieldsHelper
|
|
292
292
|
multiple: true
|
293
293
|
}
|
294
294
|
}
|
295
|
-
|
295
|
+
|
296
296
|
# evaluate the content of command value on listing
|
297
297
|
# sample command: options_from_collection_for_select(current_site.the_posts("commerce").decorate, :id, :the_title)
|
298
298
|
items[:select_eval] = {
|