camaleon_cms 2.9.0 → 2.9.2
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.
- checksums.yaml +4 -4
- data/README.md +12 -5
- data/app/apps/plugins/front_cache/admin_controller.rb +1 -0
- data/app/apps/plugins/front_cache/front_cache_helper.rb +23 -14
- data/app/apps/plugins/visibility_post/visibility_post_helper.rb +1 -1
- data/app/apps/themes/default/views/category.html.erb +1 -1
- data/app/apps/themes/default/views/post_tag.html.erb +1 -1
- data/app/apps/themes/default/views/post_type.html.erb +1 -1
- data/app/apps/themes/default/views/search.html.erb +1 -1
- data/app/apps/themes/new/views/category.html.erb +1 -1
- data/app/apps/themes/new/views/post_tag.html.erb +1 -1
- data/app/apps/themes/new/views/post_type.html.erb +1 -1
- data/app/apps/themes/new/views/search.html.erb +1 -1
- data/app/controllers/camaleon_cms/admin/appearances/nav_menus_controller.rb +22 -5
- data/app/controllers/camaleon_cms/admin/appearances/widgets/assign_controller.rb +4 -2
- data/app/controllers/camaleon_cms/admin/appearances/widgets/main_controller.rb +3 -3
- data/app/controllers/camaleon_cms/admin/appearances/widgets/sidebar_controller.rb +2 -2
- data/app/controllers/camaleon_cms/admin/categories_controller.rb +9 -5
- data/app/controllers/camaleon_cms/admin/media_controller.rb +18 -5
- data/app/controllers/camaleon_cms/admin/post_tags_controller.rb +7 -4
- data/app/controllers/camaleon_cms/admin/posts/drafts_controller.rb +1 -1
- data/app/controllers/camaleon_cms/admin/posts_controller.rb +7 -4
- data/app/controllers/camaleon_cms/admin/sessions_controller.rb +2 -2
- data/app/controllers/camaleon_cms/admin/settings/custom_fields_controller.rb +33 -11
- data/app/controllers/camaleon_cms/admin/settings/post_types_controller.rb +13 -4
- data/app/controllers/camaleon_cms/admin/settings/sites_controller.rb +7 -4
- data/app/controllers/camaleon_cms/admin/settings_controller.rb +7 -4
- data/app/controllers/camaleon_cms/admin/user_roles_controller.rb +2 -2
- data/app/controllers/camaleon_cms/admin/users_controller.rb +23 -14
- data/app/controllers/camaleon_cms/admin_controller.rb +8 -0
- data/app/controllers/camaleon_cms/apps/plugins_admin_controller.rb +5 -0
- data/app/controllers/concerns/camaleon_cms/admin/custom_fields_concern.rb +29 -0
- data/app/decorators/camaleon_cms/post_decorator.rb +1 -1
- data/app/decorators/camaleon_cms/user_decorator.rb +1 -1
- data/app/helpers/camaleon_cms/admin/application_helper.rb +17 -17
- data/app/helpers/camaleon_cms/admin/post_type_helper.rb +25 -22
- data/app/helpers/camaleon_cms/comment_helper.rb +74 -40
- data/app/helpers/camaleon_cms/frontend/content_select_helper.rb +1 -1
- data/app/helpers/camaleon_cms/frontend/nav_menu_helper.rb +7 -7
- data/app/helpers/camaleon_cms/html_helper.rb +15 -1
- data/app/helpers/camaleon_cms/session_helper.rb +13 -1
- data/app/helpers/camaleon_cms/site_helper.rb +16 -3
- data/app/helpers/camaleon_cms/uploader_helper.rb +102 -51
- data/app/models/camaleon_cms/ability.rb +54 -102
- data/app/models/camaleon_cms/category.rb +2 -0
- data/app/models/camaleon_cms/custom_field.rb +14 -0
- data/app/models/camaleon_cms/custom_field_group.rb +38 -1
- data/app/models/camaleon_cms/custom_fields_relationship.rb +1 -1
- data/app/models/camaleon_cms/meta.rb +4 -0
- data/app/models/camaleon_cms/nav_menu.rb +2 -0
- data/app/models/camaleon_cms/nav_menu_item.rb +2 -0
- data/app/models/camaleon_cms/plugin.rb +2 -0
- data/app/models/camaleon_cms/post.rb +1 -1
- data/app/models/camaleon_cms/post_comment.rb +4 -0
- data/app/models/camaleon_cms/post_tag.rb +2 -0
- data/app/models/camaleon_cms/post_type.rb +3 -1
- data/app/models/camaleon_cms/site.rb +2 -0
- data/app/models/camaleon_cms/term_taxonomy.rb +1 -23
- data/app/models/camaleon_cms/theme.rb +2 -0
- data/app/models/camaleon_cms/user_role.rb +13 -0
- data/app/models/camaleon_cms/widget/main.rb +2 -0
- data/app/models/camaleon_cms/widget/sidebar.rb +2 -0
- data/app/models/camaleon_record.rb +40 -0
- data/app/models/concerns/camaleon_cms/custom_fields_read.rb +7 -7
- data/app/models/concerns/camaleon_cms/metas.rb +10 -6
- data/app/models/concerns/camaleon_cms/normalize_attrs.rb +26 -0
- data/app/models/concerns/camaleon_cms/user_methods.rb +6 -2
- data/app/models/current_request.rb +16 -0
- data/app/uploaders/camaleon_cms_aws_uploader.rb +8 -1
- data/app/validators/camaleon_cms/post_uniq_validator.rb +21 -8
- data/app/views/camaleon_cms/admin/appearances/nav_menus/_left_menu_items.html.erb +2 -2
- data/app/views/camaleon_cms/admin/appearances/widgets/main/form.html.erb +1 -1
- data/app/views/camaleon_cms/admin/categories/index.html.erb +1 -1
- data/app/views/camaleon_cms/admin/comments/index.html.erb +2 -2
- data/app/views/camaleon_cms/admin/comments/list.html.erb +1 -1
- data/app/views/camaleon_cms/admin/post_tags/index.html.erb +1 -1
- data/app/views/camaleon_cms/admin/posts/_sidebar.html.erb +1 -1
- data/app/views/camaleon_cms/admin/posts/index.html.erb +3 -3
- data/app/views/camaleon_cms/admin/search.html.erb +1 -1
- data/app/views/camaleon_cms/admin/settings/custom_fields/_render.html.erb +23 -2
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_select_eval.html.erb +1 -1
- data/app/views/camaleon_cms/admin/settings/custom_fields/form.html.erb +6 -5
- data/app/views/camaleon_cms/admin/settings/custom_fields/index.html.erb +1 -1
- data/app/views/camaleon_cms/admin/settings/post_types/index.html.erb +1 -1
- data/app/views/camaleon_cms/admin/settings/sites/index.html.erb +1 -1
- data/app/views/camaleon_cms/admin/user_roles/form.html.erb +79 -5
- data/app/views/camaleon_cms/admin/user_roles/index.html.erb +1 -1
- data/app/views/camaleon_cms/admin/users/index.html.erb +1 -1
- data/app/views/layouts/camaleon_cms/admin/_flash_messages.html.erb +2 -2
- data/config/initializers/custom_initializers.rb +2 -2
- data/config/locales/camaleon_cms/admin/ar.yml +6 -2
- data/config/locales/camaleon_cms/admin/de.yml +6 -2
- data/config/locales/camaleon_cms/admin/en.yml +6 -2
- data/config/locales/camaleon_cms/admin/es.yml +6 -2
- data/config/locales/camaleon_cms/admin/fr.yml +6 -2
- data/config/locales/camaleon_cms/admin/it.yml +6 -2
- data/config/locales/camaleon_cms/admin/nl.yml +7 -2
- data/config/locales/camaleon_cms/admin/pt-BR.yml +6 -2
- data/config/locales/camaleon_cms/admin/pt.yml +6 -2
- data/config/locales/camaleon_cms/admin/ru.yml +6 -2
- data/config/locales/camaleon_cms/admin/uk.yml +6 -2
- data/config/locales/camaleon_cms/admin/zh-CH.yml +6 -2
- data/db/migrate/20150611161134_post_table_into_utf8.rb +14 -14
- data/db/migrate/20150926095310_rename_column_posts.rb +3 -3
- data/db/migrate/20151212095328_add_confirm_token_to_users.rb +3 -3
- data/db/migrate/20160504155652_add_feature_to_posts.rb +1 -1
- data/db/migrate/20160504155653_move_first_name_of_users.rb +2 -2
- data/db/migrate/20160609121449_add_group_to_custom_field_values.rb +1 -1
- data/db/migrate/20161215202255_drop_user_relationship_table.rb +1 -1
- data/db/migrate/20180124132318_create_media.rb +1 -1
- data/db/migrate/20180704211100_adjust_field_length.rb +1 -1
- data/lib/camaleon_cms/version.rb +1 -1
- data/lib/ext/string.rb +3 -3
- data/lib/plugin_routes.rb +6 -6
- data/lib/tasks/custom_fields_roles.rake +56 -0
- metadata +65 -8
|
@@ -574,7 +574,10 @@ uk:
|
|
|
574
574
|
requires_different_email: 'Потрібні інші ел. пошта '
|
|
575
575
|
created_pending_validate_email: "Користувач був створений, будь ласка, підтвердіть вашу електронну пошту"
|
|
576
576
|
new_photo: 'Нова фотографія'
|
|
577
|
-
|
|
577
|
+
other_permissions: 'Інші роздільності'
|
|
578
|
+
select_eval_modal:
|
|
579
|
+
title: 'Небезпечний дозвіл'
|
|
580
|
+
description: 'Дозвіл select_eval дозволяє виконувати динамічний код з параметрів користувацьких полів. Увімкнення може призвести до довільного виконання коду, витоку даних і повної компрометації сайту, якщо обробляється недовірений вміст.'
|
|
578
581
|
profile: 'Профіль'
|
|
579
582
|
slogan: 'Слоган'
|
|
580
583
|
type_contents: 'Тип Контенту'
|
|
@@ -600,7 +603,7 @@ uk:
|
|
|
600
603
|
media: 'Permission to the midsection'
|
|
601
604
|
publish: 'Вам потрібен дозвіл на Створення, редагування, Редагування інших або Опублікувати щоб включити цей дозвіл'
|
|
602
605
|
themes: 'Дозвіл тим на розділ'
|
|
603
|
-
widgets: '
|
|
606
|
+
widgets: 'Уможливлено редагування віджетів, зокрема збереження непродезінфікованого коду.'
|
|
604
607
|
menus: 'Дозвіл на розділ Меню'
|
|
605
608
|
plugins: 'Дозвіл на розділ Плагінів'
|
|
606
609
|
users: 'Дозвіл на створення, редагування і видалення користувачів'
|
|
@@ -651,6 +654,7 @@ uk:
|
|
|
651
654
|
error_created: "Бічна панель не створена."
|
|
652
655
|
error_updated: "Бічна панель не оновлена."
|
|
653
656
|
error_deleted: "Бічна панель видалена."
|
|
657
|
+
warning: "Попередження: Віджети можуть зберігати непродезінфіковані HTML та Javascript. Вводьте лише той код, який ви розумієте та якому довіряєте."
|
|
654
658
|
intro:
|
|
655
659
|
profile: "Тут ви можете побачити налаштування вашого профілю."
|
|
656
660
|
content: "Цей блок містить всі групи контенту вашого сайту. Кожен контент може мати різну структуру, яких можна налаштувати в Налаштування => Група контентів"
|
|
@@ -607,7 +607,10 @@ zh-CN:
|
|
|
607
607
|
role_can_not_be_deleted: '无法删除此角色'
|
|
608
608
|
user_can_not_delete_own_account: '用户不能删除自己的帐户'
|
|
609
609
|
new_photo: '新建照片'
|
|
610
|
-
|
|
610
|
+
other_permissions: '其他权限'
|
|
611
|
+
select_eval_modal:
|
|
612
|
+
title: '危险权限'
|
|
613
|
+
description: 'select_eval 权限允许从自定义字段选项中执行动态代码。启用后,如果评估不受信任的内容,可能导致任意代码执行、数据泄露以及站点被完全攻陷。'
|
|
611
614
|
profile: '资料'
|
|
612
615
|
slogan: '标语'
|
|
613
616
|
type_contents: '内容的类型'
|
|
@@ -633,7 +636,7 @@ zh-CN:
|
|
|
633
636
|
media: '媒体资源部分'
|
|
634
637
|
publish: '开启该权限,允许创建,编辑, 或公开'
|
|
635
638
|
themes: '主题部分'
|
|
636
|
-
widgets: '
|
|
639
|
+
widgets: '允许编辑小部件,包括保存未经清理的代码。'
|
|
637
640
|
menus: '菜单部分'
|
|
638
641
|
plugins: '插件部分'
|
|
639
642
|
users: '创建,编辑,删除用户'
|
|
@@ -684,6 +687,7 @@ zh-CN:
|
|
|
684
687
|
error_created: '侧边栏创建失败'
|
|
685
688
|
error_updated: '侧边栏更新失败'
|
|
686
689
|
error_deleted: "侧边栏已删除."
|
|
690
|
+
warning: "警告:小组件可以存储未经清理的 HTML 和 Javascript。仅输入您理解和信任的代码。"
|
|
687
691
|
intro:
|
|
688
692
|
profile: "在这个地方,您可以看到您的个人资料选项."
|
|
689
693
|
content: "此块包含您网站的所有内容组。 每个内容可以具有在 设置 => 内容组"
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
class PostTableIntoUtf8 < CamaManager.migration_class
|
|
2
2
|
def change
|
|
3
3
|
if table_exists? CamaleonCms::User.table_name
|
|
4
|
-
add_column(CamaleonCms::User.table_name, :email, :string
|
|
5
|
-
add_column(CamaleonCms::User.table_name, :username, :string
|
|
6
|
-
add_column(CamaleonCms::User.table_name, :role, :string, default: 'client', index: true
|
|
7
|
-
add_column(CamaleonCms::User.table_name, :parent_id, :integer
|
|
8
|
-
add_column(CamaleonCms::User.table_name, :site_id, :integer, index: true, default: -1
|
|
9
|
-
add_column(CamaleonCms::User.table_name, :auth_token, :string
|
|
4
|
+
add_column(CamaleonCms::User.table_name, :email, :string, if_not_exists: true)
|
|
5
|
+
add_column(CamaleonCms::User.table_name, :username, :string, if_not_exists: true)
|
|
6
|
+
add_column(CamaleonCms::User.table_name, :role, :string, default: 'client', index: true, if_not_exists: true)
|
|
7
|
+
add_column(CamaleonCms::User.table_name, :parent_id, :integer, if_not_exists: true)
|
|
8
|
+
add_column(CamaleonCms::User.table_name, :site_id, :integer, index: true, default: -1, if_not_exists: true)
|
|
9
|
+
add_column(CamaleonCms::User.table_name, :auth_token, :string, if_not_exists: true)
|
|
10
10
|
else
|
|
11
11
|
create_table CamaleonCms::User.table_name do |t|
|
|
12
12
|
t.string "username", index: true
|
|
@@ -26,7 +26,7 @@ class PostTableIntoUtf8 < CamaManager.migration_class
|
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
create_table "#{PluginRoutes.static_system_info["db_prefix"]}term_taxonomy" do |t|
|
|
29
|
+
create_table "#{PluginRoutes.static_system_info["db_prefix"]}term_taxonomy", if_not_exists: true do |t|
|
|
30
30
|
t.string "taxonomy", index: true
|
|
31
31
|
t.text "description", limit: 1073741823
|
|
32
32
|
t.integer "parent_id", index: true
|
|
@@ -41,7 +41,7 @@ class PostTableIntoUtf8 < CamaManager.migration_class
|
|
|
41
41
|
t.belongs_to :user, index: true#, foreign_key: true
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
create_table "#{PluginRoutes.static_system_info["db_prefix"]}posts" do |t|
|
|
44
|
+
create_table "#{PluginRoutes.static_system_info["db_prefix"]}posts", if_not_exists: true do |t|
|
|
45
45
|
t.string "title"
|
|
46
46
|
t.string "slug", index: true
|
|
47
47
|
t.text "content", limit: 1073741823
|
|
@@ -58,13 +58,13 @@ class PostTableIntoUtf8 < CamaManager.migration_class
|
|
|
58
58
|
t.belongs_to :user, index: true#, foreign_key: true
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
create_table "#{PluginRoutes.static_system_info["db_prefix"]}term_relationships" do |t|
|
|
61
|
+
create_table "#{PluginRoutes.static_system_info["db_prefix"]}term_relationships", if_not_exists: true do |t|
|
|
62
62
|
t.integer "objectid", index: true
|
|
63
63
|
t.integer "term_order", index: true
|
|
64
64
|
t.belongs_to :term_taxonomy, index: true
|
|
65
65
|
end
|
|
66
66
|
|
|
67
|
-
create_table "#{PluginRoutes.static_system_info["db_prefix"]}user_relationships" do |t|
|
|
67
|
+
create_table "#{PluginRoutes.static_system_info["db_prefix"]}user_relationships", if_not_exists: true do |t|
|
|
68
68
|
t.integer "term_order"
|
|
69
69
|
t.integer "active", default: 1
|
|
70
70
|
|
|
@@ -72,7 +72,7 @@ class PostTableIntoUtf8 < CamaManager.migration_class
|
|
|
72
72
|
t.belongs_to :user, index: true
|
|
73
73
|
end
|
|
74
74
|
|
|
75
|
-
create_table "#{PluginRoutes.static_system_info["db_prefix"]}comments" do |t|
|
|
75
|
+
create_table "#{PluginRoutes.static_system_info["db_prefix"]}comments", if_not_exists: true do |t|
|
|
76
76
|
t.string "author"
|
|
77
77
|
t.string "author_email"
|
|
78
78
|
t.string "author_url"
|
|
@@ -87,7 +87,7 @@ class PostTableIntoUtf8 < CamaManager.migration_class
|
|
|
87
87
|
t.timestamps null: false
|
|
88
88
|
end
|
|
89
89
|
|
|
90
|
-
create_table "#{PluginRoutes.static_system_info["db_prefix"]}custom_fields" do |t|
|
|
90
|
+
create_table "#{PluginRoutes.static_system_info["db_prefix"]}custom_fields", if_not_exists: true do |t|
|
|
91
91
|
t.string "object_class", index: true
|
|
92
92
|
t.string "name"
|
|
93
93
|
t.string "slug", index: true
|
|
@@ -100,7 +100,7 @@ class PostTableIntoUtf8 < CamaManager.migration_class
|
|
|
100
100
|
t.string "status"
|
|
101
101
|
end
|
|
102
102
|
|
|
103
|
-
create_table "#{PluginRoutes.static_system_info["db_prefix"]}custom_fields_relationships" do |t|
|
|
103
|
+
create_table "#{PluginRoutes.static_system_info["db_prefix"]}custom_fields_relationships", if_not_exists: true do |t|
|
|
104
104
|
t.integer "objectid", index: true
|
|
105
105
|
t.integer "custom_field_id", index: true
|
|
106
106
|
t.integer "term_order"
|
|
@@ -109,7 +109,7 @@ class PostTableIntoUtf8 < CamaManager.migration_class
|
|
|
109
109
|
t.string "custom_field_slug", index: true
|
|
110
110
|
end
|
|
111
111
|
|
|
112
|
-
create_table "#{PluginRoutes.static_system_info["db_prefix"]}metas" do |t|
|
|
112
|
+
create_table "#{PluginRoutes.static_system_info["db_prefix"]}metas", if_not_exists: true do |t|
|
|
113
113
|
t.string "key", index: true
|
|
114
114
|
t.text "value", limit: 1073741823
|
|
115
115
|
t.integer "objectid", index: true
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# change post structure to optimize query speed
|
|
2
2
|
class RenameColumnPosts < CamaManager.migration_class
|
|
3
3
|
def change
|
|
4
|
-
remove_column "#{PluginRoutes.static_system_info["db_prefix"]}posts", :comment_count
|
|
5
|
-
add_column "#{PluginRoutes.static_system_info["db_prefix"]}posts", :post_order, :integer, default: 0
|
|
6
|
-
add_column "#{PluginRoutes.static_system_info["db_prefix"]}posts", :taxonomy_id, :integer, default: nil, index: true
|
|
4
|
+
remove_column "#{PluginRoutes.static_system_info["db_prefix"]}posts", :comment_count, if_exists: true
|
|
5
|
+
add_column "#{PluginRoutes.static_system_info["db_prefix"]}posts", :post_order, :integer, default: 0, if_not_exists: true
|
|
6
|
+
add_column "#{PluginRoutes.static_system_info["db_prefix"]}posts", :taxonomy_id, :integer, default: nil, index: true, if_not_exists: true
|
|
7
7
|
CamaleonCms::Post.all.each do |post|
|
|
8
8
|
begin
|
|
9
9
|
post_id = post.get_post_type_depre.id
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
class AddConfirmTokenToUsers < CamaManager.migration_class
|
|
2
2
|
def change
|
|
3
|
-
add_column CamaleonCms::User.table_name, :confirm_email_token, :string, default: nil
|
|
4
|
-
add_column CamaleonCms::User.table_name, :confirm_email_sent_at, :datetime, default: nil
|
|
5
|
-
add_column CamaleonCms::User.table_name, :is_valid_email, :boolean, default: true
|
|
3
|
+
add_column CamaleonCms::User.table_name, :confirm_email_token, :string, default: nil, if_not_exists: true
|
|
4
|
+
add_column CamaleonCms::User.table_name, :confirm_email_sent_at, :datetime, default: nil, if_not_exists: true
|
|
5
|
+
add_column CamaleonCms::User.table_name, :is_valid_email, :boolean, default: true, if_not_exists: true
|
|
6
6
|
end
|
|
7
7
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
class AddFeatureToPosts < CamaManager.migration_class
|
|
2
2
|
def change
|
|
3
|
-
add_column "#{PluginRoutes.static_system_info["db_prefix"]}posts", :is_feature, :boolean, default: false
|
|
3
|
+
add_column "#{PluginRoutes.static_system_info["db_prefix"]}posts", :is_feature, :boolean, default: false, if_not_exists: true
|
|
4
4
|
end
|
|
5
5
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
class MoveFirstNameOfUsers < CamaManager.migration_class
|
|
2
2
|
def change
|
|
3
|
-
add_column CamaleonCms::User.table_name, :first_name, :string
|
|
4
|
-
add_column CamaleonCms::User.table_name, :last_name, :string
|
|
3
|
+
add_column CamaleonCms::User.table_name, :first_name, :string, if_not_exists: true
|
|
4
|
+
add_column CamaleonCms::User.table_name, :last_name, :string, if_not_exists: true
|
|
5
5
|
CamaleonCms::User.all.each do |u|
|
|
6
6
|
u.update_columns(first_name: u.get_meta('first_name'), last_name: u.get_meta('last_name')) if u.get_meta('first_name').present?
|
|
7
7
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
class AddGroupToCustomFieldValues < CamaManager.migration_class
|
|
2
2
|
def change
|
|
3
|
-
add_column "#{PluginRoutes.static_system_info["db_prefix"]}custom_fields_relationships", :group_number, :integer, default: 0
|
|
3
|
+
add_column "#{PluginRoutes.static_system_info["db_prefix"]}custom_fields_relationships", :group_number, :integer, default: 0, if_not_exists: true
|
|
4
4
|
end
|
|
5
5
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
class CreateMedia < CamaManager.migration_class
|
|
2
2
|
def change
|
|
3
|
-
create_table "#{PluginRoutes.static_system_info["db_prefix"]}media" do |t|
|
|
3
|
+
create_table "#{PluginRoutes.static_system_info["db_prefix"]}media", if_not_exists: true do |t|
|
|
4
4
|
t.references :site, index: true
|
|
5
5
|
t.string :name, index: true
|
|
6
6
|
t.boolean :is_folder, index: true, default: false
|
|
@@ -2,7 +2,7 @@ class AdjustFieldLength < CamaManager.migration_class
|
|
|
2
2
|
def change
|
|
3
3
|
post_table = CamaleonCms::Post.table_name
|
|
4
4
|
change_column post_table, :title, :text
|
|
5
|
-
remove_index(post_table, :slug
|
|
5
|
+
remove_index(post_table, :slug, if_exists: true)
|
|
6
6
|
change_column post_table, :slug, :text
|
|
7
7
|
add_index post_table, :slug, length: 255
|
|
8
8
|
change_column "#{PluginRoutes.static_system_info["db_prefix"]}term_taxonomy", :name, :text
|
data/lib/camaleon_cms/version.rb
CHANGED
data/lib/ext/string.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
class String
|
|
2
2
|
def to_bool
|
|
3
|
-
return true if self == true || self =~
|
|
4
|
-
return false if self == false || blank? || self =~
|
|
3
|
+
return true if self == true || self =~ /(true|t|yes|y|1)$/i
|
|
4
|
+
return false if self == false || blank? || self =~ /(false|f|no|n|0)$/i
|
|
5
5
|
|
|
6
6
|
raise ArgumentError, "invalid value for Boolean: \"#{self}\""
|
|
7
7
|
end
|
|
@@ -111,7 +111,7 @@ class String
|
|
|
111
111
|
name = name.gsub(sanitize_regexp, '_')
|
|
112
112
|
name = "_#{name}" if name =~ /\A\.+\z/
|
|
113
113
|
name = 'unnamed' if name.empty?
|
|
114
|
-
name
|
|
114
|
+
name
|
|
115
115
|
end
|
|
116
116
|
|
|
117
117
|
# return cleaned model class name
|
data/lib/plugin_routes.rb
CHANGED
|
@@ -174,12 +174,12 @@ class PluginRoutes
|
|
|
174
174
|
@@all_sites = nil
|
|
175
175
|
@@_vars.each { |v| class_variable_set("@@cache_#{v}", nil) }
|
|
176
176
|
Rails.application.reload_routes!
|
|
177
|
-
@@_after_reload.uniq.each
|
|
177
|
+
@@_after_reload.uniq.each(&:call)
|
|
178
178
|
end
|
|
179
179
|
|
|
180
|
-
#
|
|
180
|
+
# Add a callable (Proc/Lambda) to run after routes reload; strings are not supported.
|
|
181
181
|
def self.add_after_reload_routes(command)
|
|
182
|
-
@@_after_reload << command
|
|
182
|
+
@@_after_reload << (command.is_a?(String) ? raise(ArgumentError, 'Expected a callable (Proc/Lambda), not a String') : command)
|
|
183
183
|
end
|
|
184
184
|
|
|
185
185
|
# return all enabled plugins []
|
|
@@ -275,7 +275,7 @@ class PluginRoutes
|
|
|
275
275
|
|
|
276
276
|
def self.cache_variable(var_name, value = nil)
|
|
277
277
|
@@_vars.push(var_name).uniq!
|
|
278
|
-
# if Rails.env != "development" # disable cache plugin routes for
|
|
278
|
+
# if Rails.env != "development" # disable cache plugin routes for development mode
|
|
279
279
|
cache = begin
|
|
280
280
|
class_variable_get("@@cache_#{var_name}")
|
|
281
281
|
rescue StandardError
|
|
@@ -376,9 +376,9 @@ class PluginRoutes
|
|
|
376
376
|
return r unless r.nil? || r == []
|
|
377
377
|
|
|
378
378
|
res = get_gem_themes
|
|
379
|
-
entries = [
|
|
379
|
+
entries = %w[. ..]
|
|
380
380
|
res.each { |theme| entries << theme['key'] }
|
|
381
|
-
|
|
381
|
+
Dir["#{apps_dir}/themes/*"].each do |path|
|
|
382
382
|
entry = path.split('/').last
|
|
383
383
|
config = File.join(path, 'config', 'config.json')
|
|
384
384
|
next if entries.include?(entry) || !File.directory?(path) || !File.exist?(config)
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
namespace :camaleon_cms do
|
|
2
|
+
desc 'Backfill user roles to include custom_fields manager permission'
|
|
3
|
+
task backfill_custom_fields_permission: :environment do
|
|
4
|
+
Rails.logger.info 'Backfilling custom_fields manager permission for existing user roles...'
|
|
5
|
+
CamaleonCms::UserRole.find_each do |role|
|
|
6
|
+
key = "_manager_#{role.parent_id}"
|
|
7
|
+
begin
|
|
8
|
+
current_role = role.get_meta(key)
|
|
9
|
+
# if the role already has settings/managers, skip; otherwise add custom_fields => 1
|
|
10
|
+
if current_role.blank? || (!current_role.is_a?(Hash) || current_role['custom_fields'].blank?)
|
|
11
|
+
current_role = (current_role.is_a?(Hash) ? current_role : {}).merge!('custom_fields' => 1)
|
|
12
|
+
role.set_meta(key, current_role)
|
|
13
|
+
Rails.logger.info "Updated role=#{role.slug} site_id=#{role.parent_id}"
|
|
14
|
+
else
|
|
15
|
+
Rails.logger.info "Skipped role=#{role.slug} site_id=#{role.parent_id} (already has custom_fields)"
|
|
16
|
+
end
|
|
17
|
+
rescue StandardError => e
|
|
18
|
+
Rails.logger.info "Failed to update role=#{role.slug}: #{e.message}"
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
Rails.logger.info 'Done.'
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
desc 'Backfill admin user roles to include select_eval permission'
|
|
25
|
+
task backfill_select_eval_permission: :environment do
|
|
26
|
+
Rails.logger.info 'Backfilling select_eval permission for admin roles...'
|
|
27
|
+
updated_count = 0
|
|
28
|
+
skipped_count = 0
|
|
29
|
+
|
|
30
|
+
CamaleonCms::UserRole.where(slug: 'admin', term_group: -1).find_each do |role|
|
|
31
|
+
site_id = role.parent_id
|
|
32
|
+
key = "_manager_#{site_id}"
|
|
33
|
+
begin
|
|
34
|
+
current_meta = role.get_meta(key, {})
|
|
35
|
+
|
|
36
|
+
# Only update if role doesn't already have select_eval
|
|
37
|
+
if !current_meta[:select_eval]
|
|
38
|
+
updated_meta = current_meta.merge(select_eval: 1)
|
|
39
|
+
role.set_meta(key, updated_meta)
|
|
40
|
+
Rails.logger.info "✓ Updated admin role site_id=#{site_id}"
|
|
41
|
+
updated_count += 1
|
|
42
|
+
else
|
|
43
|
+
Rails.logger.info " Skipped admin role site_id=#{site_id} (already has select_eval)"
|
|
44
|
+
skipped_count += 1
|
|
45
|
+
end
|
|
46
|
+
rescue StandardError => e
|
|
47
|
+
Rails.logger.info "✗ Failed to update admin role site_id=#{site_id}: #{e.message}"
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
Rails.logger.info "\nSummary:"
|
|
52
|
+
Rails.logger.info " Updated: #{updated_count} admin roles"
|
|
53
|
+
Rails.logger.info " Skipped: #{skipped_count} admin roles"
|
|
54
|
+
Rails.logger.info "\nDone! All admin roles now have select_eval permission."
|
|
55
|
+
end
|
|
56
|
+
end
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: camaleon_cms
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.9.
|
|
4
|
+
version: 2.9.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Owen Peredo Diaz
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: addressable
|
|
@@ -204,14 +203,14 @@ dependencies:
|
|
|
204
203
|
requirements:
|
|
205
204
|
- - "~>"
|
|
206
205
|
- !ruby/object:Gem::Version
|
|
207
|
-
version: '2.
|
|
206
|
+
version: '2.6'
|
|
208
207
|
type: :runtime
|
|
209
208
|
prerelease: false
|
|
210
209
|
version_requirements: !ruby/object:Gem::Requirement
|
|
211
210
|
requirements:
|
|
212
211
|
- - "~>"
|
|
213
212
|
- !ruby/object:Gem::Version
|
|
214
|
-
version: '2.
|
|
213
|
+
version: '2.6'
|
|
215
214
|
- !ruby/object:Gem::Dependency
|
|
216
215
|
name: sprockets-rails
|
|
217
216
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -268,6 +267,34 @@ dependencies:
|
|
|
268
267
|
- - ">="
|
|
269
268
|
- !ruby/object:Gem::Version
|
|
270
269
|
version: '0'
|
|
270
|
+
- !ruby/object:Gem::Dependency
|
|
271
|
+
name: net-http
|
|
272
|
+
requirement: !ruby/object:Gem::Requirement
|
|
273
|
+
requirements:
|
|
274
|
+
- - ">="
|
|
275
|
+
- !ruby/object:Gem::Version
|
|
276
|
+
version: '0'
|
|
277
|
+
type: :runtime
|
|
278
|
+
prerelease: false
|
|
279
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
280
|
+
requirements:
|
|
281
|
+
- - ">="
|
|
282
|
+
- !ruby/object:Gem::Version
|
|
283
|
+
version: '0'
|
|
284
|
+
- !ruby/object:Gem::Dependency
|
|
285
|
+
name: tempfile
|
|
286
|
+
requirement: !ruby/object:Gem::Requirement
|
|
287
|
+
requirements:
|
|
288
|
+
- - ">="
|
|
289
|
+
- !ruby/object:Gem::Version
|
|
290
|
+
version: '0'
|
|
291
|
+
type: :runtime
|
|
292
|
+
prerelease: false
|
|
293
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
294
|
+
requirements:
|
|
295
|
+
- - ">="
|
|
296
|
+
- !ruby/object:Gem::Version
|
|
297
|
+
version: '0'
|
|
271
298
|
- !ruby/object:Gem::Dependency
|
|
272
299
|
name: aws-sdk-s3
|
|
273
300
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -282,6 +309,34 @@ dependencies:
|
|
|
282
309
|
- - "~>"
|
|
283
310
|
- !ruby/object:Gem::Version
|
|
284
311
|
version: '1'
|
|
312
|
+
- !ruby/object:Gem::Dependency
|
|
313
|
+
name: brakeman
|
|
314
|
+
requirement: !ruby/object:Gem::Requirement
|
|
315
|
+
requirements:
|
|
316
|
+
- - ">="
|
|
317
|
+
- !ruby/object:Gem::Version
|
|
318
|
+
version: '0'
|
|
319
|
+
type: :development
|
|
320
|
+
prerelease: false
|
|
321
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
322
|
+
requirements:
|
|
323
|
+
- - ">="
|
|
324
|
+
- !ruby/object:Gem::Version
|
|
325
|
+
version: '0'
|
|
326
|
+
- !ruby/object:Gem::Dependency
|
|
327
|
+
name: bundler-audit
|
|
328
|
+
requirement: !ruby/object:Gem::Requirement
|
|
329
|
+
requirements:
|
|
330
|
+
- - ">="
|
|
331
|
+
- !ruby/object:Gem::Version
|
|
332
|
+
version: '0'
|
|
333
|
+
type: :development
|
|
334
|
+
prerelease: false
|
|
335
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
336
|
+
requirements:
|
|
337
|
+
- - ">="
|
|
338
|
+
- !ruby/object:Gem::Version
|
|
339
|
+
version: '0'
|
|
285
340
|
- !ruby/object:Gem::Dependency
|
|
286
341
|
name: byebug
|
|
287
342
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -730,6 +785,7 @@ files:
|
|
|
730
785
|
- app/controllers/camaleon_cms/apps/themes_front_controller.rb
|
|
731
786
|
- app/controllers/camaleon_cms/camaleon_controller.rb
|
|
732
787
|
- app/controllers/camaleon_cms/frontend_controller.rb
|
|
788
|
+
- app/controllers/concerns/camaleon_cms/admin/custom_fields_concern.rb
|
|
733
789
|
- app/controllers/concerns/camaleon_cms/frontend_concern.rb
|
|
734
790
|
- app/decorators/camaleon_cms/application_decorator.rb
|
|
735
791
|
- app/decorators/camaleon_cms/category_decorator.rb
|
|
@@ -805,8 +861,10 @@ files:
|
|
|
805
861
|
- app/models/concerns/camaleon_cms/common_relationships.rb
|
|
806
862
|
- app/models/concerns/camaleon_cms/custom_fields_read.rb
|
|
807
863
|
- app/models/concerns/camaleon_cms/metas.rb
|
|
864
|
+
- app/models/concerns/camaleon_cms/normalize_attrs.rb
|
|
808
865
|
- app/models/concerns/camaleon_cms/site_default_settings.rb
|
|
809
866
|
- app/models/concerns/camaleon_cms/user_methods.rb
|
|
867
|
+
- app/models/current_request.rb
|
|
810
868
|
- app/models/plugins.rb
|
|
811
869
|
- app/models/themes.rb
|
|
812
870
|
- app/uploaders/camaleon_cms_aws_uploader.rb
|
|
@@ -1130,11 +1188,11 @@ files:
|
|
|
1130
1188
|
- lib/plugin_routes.rb
|
|
1131
1189
|
- lib/tasks/camaleon_cms/camaleon_tasks.rake
|
|
1132
1190
|
- lib/tasks/camaleon_cms/rspec_test.rake
|
|
1191
|
+
- lib/tasks/custom_fields_roles.rake
|
|
1133
1192
|
homepage: https://camaleon.website
|
|
1134
1193
|
licenses:
|
|
1135
1194
|
- MIT
|
|
1136
1195
|
metadata: {}
|
|
1137
|
-
post_install_message:
|
|
1138
1196
|
rdoc_options: []
|
|
1139
1197
|
require_paths:
|
|
1140
1198
|
- lib
|
|
@@ -1152,8 +1210,7 @@ requirements:
|
|
|
1152
1210
|
- rails >= 6.1
|
|
1153
1211
|
- ruby >= 3.0
|
|
1154
1212
|
- imagemagick
|
|
1155
|
-
rubygems_version: 3.
|
|
1156
|
-
signing_key:
|
|
1213
|
+
rubygems_version: 3.6.9
|
|
1157
1214
|
specification_version: 4
|
|
1158
1215
|
summary: Camaleon is a CMS for Ruby on Rails as an alternative to Wordpress.
|
|
1159
1216
|
test_files: []
|