camaleon_cms 2.1.2.0 → 2.1.2.1
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 +1 -1
- data/app/assets/javascripts/camaleon_cms/admin/_custom_fields.js +5 -3
- data/app/assets/javascripts/camaleon_cms/admin/_libraries.js +2 -0
- data/app/assets/javascripts/camaleon_cms/admin/_post.js +4 -14
- data/app/assets/javascripts/camaleon_cms/admin/jquery.validate.js +1 -1
- data/app/assets/javascripts/camaleon_cms/admin/nav_menu.js.coffee +1 -1
- data/app/assets/javascripts/camaleon_cms/admin/uploader/_media_manager.js.coffee +5 -5
- data/app/controllers/camaleon_cms/admin/appearances/nav_menus_controller.rb +1 -1
- data/app/controllers/camaleon_cms/admin/categories_controller.rb +2 -2
- data/app/controllers/camaleon_cms/admin/media_controller.rb +4 -2
- data/app/controllers/camaleon_cms/admin/plugins_controller.rb +4 -0
- data/app/controllers/camaleon_cms/admin/post_tags_controller.rb +2 -2
- data/app/controllers/camaleon_cms/admin/posts_controller.rb +2 -2
- data/app/controllers/camaleon_cms/admin/sessions_controller.rb +0 -5
- data/app/controllers/camaleon_cms/admin/settings_controller.rb +3 -1
- data/app/controllers/camaleon_cms/admin/users_controller.rb +2 -2
- data/app/controllers/camaleon_cms/apps/plugins_front_controller.rb +3 -1
- data/app/controllers/camaleon_cms/apps/themes_front_controller.rb +4 -1
- data/app/controllers/camaleon_cms/frontend_controller.rb +11 -3
- data/app/decorators/camaleon_cms/custom_fields_concern.rb +24 -0
- data/app/decorators/camaleon_cms/post_decorator.rb +11 -0
- data/app/helpers/camaleon_cms/admin/custom_fields_helper.rb +1 -1
- data/app/helpers/camaleon_cms/frontend/nav_menu_helper.rb +45 -2
- data/app/helpers/camaleon_cms/session_helper.rb +3 -6
- data/app/helpers/camaleon_cms/uploader_helper.rb +23 -7
- data/app/models/camaleon_cms/category.rb +5 -5
- data/app/models/camaleon_cms/custom_field_group.rb +2 -1
- data/app/models/camaleon_cms/nav_menu.rb +3 -2
- data/app/models/camaleon_cms/nav_menu_item.rb +10 -3
- data/app/models/camaleon_cms/post.rb +10 -2
- data/app/models/camaleon_cms/post_default.rb +4 -9
- data/app/models/camaleon_cms/post_tag.rb +1 -1
- data/app/models/camaleon_cms/post_type.rb +6 -5
- data/app/models/camaleon_cms/site.rb +2 -2
- data/app/models/camaleon_cms/term_taxonomy.rb +0 -10
- data/app/models/camaleon_cms/user.rb +2 -10
- data/app/models/concerns/camaleon_cms/custom_fields_read.rb +17 -9
- data/app/models/concerns/camaleon_cms/metas.rb +8 -0
- data/app/uploaders/camaleon_cms_uploader.rb +6 -4
- data/app/views/camaleon_cms/_flash_messages.html.erb +9 -5
- data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_items.html.erb +1 -1
- data/app/views/camaleon_cms/admin/appearances/nav_menus/_menu_items_list.html.erb +1 -1
- data/app/views/camaleon_cms/admin/categories/_form.html.erb +1 -9
- data/app/views/camaleon_cms/admin/media/index.html.erb +1 -1
- data/app/views/camaleon_cms/admin/posts/_sidebar.html.erb +8 -2
- data/app/views/camaleon_cms/admin/sessions/register.html.erb +2 -2
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_field_attrs.html.erb +2 -2
- data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_image.html.erb +2 -2
- data/app/views/camaleon_cms/admin/settings/custom_fields/index.html.erb +1 -1
- data/app/views/camaleon_cms/admin/settings/post_types/_form.html.erb +4 -0
- data/app/views/camaleon_cms/admin/settings/site.html.erb +2 -2
- data/app/views/camaleon_cms/admin/users/form.html.erb +3 -16
- data/app/views/camaleon_cms/default_theme/partials/_categories_list.html.erb +1 -1
- data/app/views/camaleon_cms/default_theme/partials/_comments.html.erb +2 -2
- data/app/views/camaleon_cms/default_theme/partials/_comments_list2.html.erb +24 -0
- data/app/views/camaleon_cms/default_theme/partials/_sidebar.html.erb +40 -20
- data/app/views/camaleon_cms/default_theme/post_type.html.erb +1 -2
- data/config/initializers/active_record_extension.rb +5 -5
- data/config/locales/camaleon_cms/admin/es.yml +2 -0
- data/config/locales/camaleon_cms/common.yml +1 -0
- data/db/migrate/20160504155652_add_feature_to_posts.rb +5 -0
- data/db/migrate/20160504155653_move_first_name_of_users.rb +9 -0
- data/lib/camaleon_cms/version.rb +1 -1
- data/lib/ext/string.rb +11 -1
- data/lib/generators/camaleon_cms/theme_template/app/apps/themes/my_theme/main_helper.rb +10 -7
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c4b91e4d676cfa8c8e63bbbdc8babcac88ebcba4
|
4
|
+
data.tar.gz: 5f4faf55c0c1328f0b30142dae585924641e91d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d1337afdf804b923538aa6edad015c4b427d4d5581513476ecf0144ba12a61f1b47781cbbcd956941d0c340a94bfed281569620a7b523c121e7d680299fa4fe
|
7
|
+
data.tar.gz: fcbdf1271ad46b913a7d2c773004a09f2962aadaf15ad34871a10197783e29651a2684ec3dcfbf20904ece1864d21e9a1b2f46b7a2decb1e7cd60cc9bcea2219
|
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.1.
|
31
|
+
gem "camaleon_cms", '>=2.1.2.0' # Stable versions 2.1.2.0,2.1.1.4, 2.1.1, 2.1.0
|
32
32
|
# gem "camaleon_cms", github: 'owen2345/camaleon-cms' # current development version
|
33
33
|
```
|
34
34
|
* Install required Gem and dependencies
|
@@ -16,8 +16,8 @@ function build_custom_field(values, multiple, field_key, rand, default_value) {
|
|
16
16
|
|
17
17
|
if (value) field.find('.input-value').val(value);
|
18
18
|
$sortable.append(field);
|
19
|
-
if
|
20
|
-
|
19
|
+
if(callback) eval(callback + "(field, value);")
|
20
|
+
if(callback_set_value) eval(callback_set_value + "(field, value);")
|
21
21
|
field_counter ++;
|
22
22
|
}
|
23
23
|
|
@@ -113,7 +113,7 @@ function custom_field_editor($field) {
|
|
113
113
|
}
|
114
114
|
function custom_field_field_attrs_val($field, value) {
|
115
115
|
if ($field) {
|
116
|
-
var data = $.parseJSON(value);
|
116
|
+
var data = $.parseJSON(value || '{}');
|
117
117
|
$field.find('.input-attr').val(data.attr);
|
118
118
|
$field.find('.input-value').val(data.value)
|
119
119
|
$field.find('.input-attr, .input-value').filter('.is_translate').addClass('translatable').Translatable(ADMIN_TRANSLATIONS);
|
@@ -163,6 +163,8 @@ function load_upload_image_field(dom) {
|
|
163
163
|
$.fn.upload_filemanager({
|
164
164
|
formats: "image",
|
165
165
|
dimension: $input.attr("data-dimension"),
|
166
|
+
versions: $input.attr("data-versions"),
|
167
|
+
thumb_size: $input.attr("data-thumb_size"),
|
166
168
|
selected: function (file, response) {
|
167
169
|
$input.val(file.url);
|
168
170
|
}
|
@@ -81,6 +81,8 @@ var init_form_validations = function (form) {
|
|
81
81
|
$that.val(file.url).trigger("change");
|
82
82
|
},
|
83
83
|
dimension: $that.attr('data-dimension') || options["dimension"],
|
84
|
+
versions: $that.attr('data-versions') || options["versions"],
|
85
|
+
thumb_size: $that.attr('data-thumb_size') || options["thumb_size"],
|
84
86
|
title: $that.attr('title') || options["title"],
|
85
87
|
});
|
86
88
|
return false;
|
@@ -176,7 +176,6 @@ function init_post(obj) {
|
|
176
176
|
tinymce.init(cama_get_tinymce_settings({
|
177
177
|
selector: '.tinymce_textarea:not(.translated-item)',
|
178
178
|
height: '480px',
|
179
|
-
onPostRender: onEditorPostRender,
|
180
179
|
base_path: obj.base_path
|
181
180
|
}));
|
182
181
|
|
@@ -266,16 +265,7 @@ function init_post(obj) {
|
|
266
265
|
/*********** end *************/
|
267
266
|
}
|
268
267
|
setTimeout(form_later_actions, 1000);
|
269
|
-
|
270
|
-
// wait for render editors
|
271
|
-
var wait_render;
|
272
|
-
|
273
|
-
function onEditorPostRender(editor) {
|
274
|
-
if (wait_render) clearTimeout(wait_render);
|
275
|
-
wait_render = setTimeout(function () {
|
276
|
-
$form.data("hash", get_hash_form());
|
277
|
-
}, 1000);
|
278
|
-
}
|
268
|
+
setTimeout(function(){ $form.data("hash", get_hash_form()); }, 2000);
|
279
269
|
|
280
270
|
function get_hash_form() {
|
281
271
|
for (editor in tinymce.editors) {
|
@@ -293,8 +283,8 @@ function init_post(obj) {
|
|
293
283
|
}
|
294
284
|
|
295
285
|
// thumbnail updloader
|
296
|
-
function upload_feature_image() {
|
297
|
-
$.fn.upload_filemanager({
|
286
|
+
function upload_feature_image(data) {
|
287
|
+
$.fn.upload_filemanager($.extend({
|
298
288
|
formats: "image",
|
299
289
|
selected: function (image) {
|
300
290
|
var image_url = image.url;
|
@@ -303,5 +293,5 @@ function upload_feature_image() {
|
|
303
293
|
$('#feature-image .meta strong').html(image.name);
|
304
294
|
$('#feature-image').show();
|
305
295
|
}
|
306
|
-
});
|
296
|
+
}, data));
|
307
297
|
}
|
@@ -112,7 +112,7 @@
|
|
112
112
|
$.validator.addMethod("file_format", function (value, element) {
|
113
113
|
var formats = $(element).attr("data-formats");
|
114
114
|
var ext = value.split(".").pop().toLowerCase();
|
115
|
-
if (formats)
|
115
|
+
if (formats && value)
|
116
116
|
return ($.inArray("video", formats.split(",")) >= 0 && $.cama_check_video_url(value)) || $.inArray($.file_formats[ext], formats.split(",")) >= 0 || $.inArray(ext, formats.split(",")) >= 0
|
117
117
|
|
118
118
|
return true;
|
@@ -59,7 +59,7 @@ window["cama_init_media"] = (media_panel) ->
|
|
59
59
|
########## file uploader
|
60
60
|
p_upload = media_panel.find(".cama_media_fileuploader")
|
61
61
|
customFileData = ->
|
62
|
-
return {folder: media_panel.attr("data-folder").replace(/\/{2,}/g, '/'), formats: media_panel.attr("data-formats") }
|
62
|
+
return {folder: media_panel.attr("data-folder").replace(/\/{2,}/g, '/'), formats: media_panel.attr("data-formats"), versions: media_panel.attr("data-versions"), thumb_size: media_panel.attr("data-thumb_size") }
|
63
63
|
|
64
64
|
p_upload.uploadFile({
|
65
65
|
url: p_upload.attr("data-url"),
|
@@ -209,12 +209,12 @@ window["cama_init_media"] = (media_panel) ->
|
|
209
209
|
).validate()
|
210
210
|
|
211
211
|
$ ->
|
212
|
-
# sample: $.fn.upload_url({url: 'http://camaleon.tuzitio.com/media/132/logo2.png', dimension: '120x120', folder: 'my_folder'})
|
212
|
+
# sample: $.fn.upload_url({url: 'http://camaleon.tuzitio.com/media/132/logo2.png', dimension: '120x120', versions: '200x200', folder: 'my_folder', thumb_size: '100x100'})
|
213
213
|
# dimension: default current dimension
|
214
214
|
# folder: default current folder
|
215
215
|
$.fn.upload_url = (args)->
|
216
216
|
media_panel = $("#cama_media_gallery")
|
217
|
-
data = {folder: media_panel.attr("data-folder").replace(/\/{2,}/g, '/'), media_action: "crop_url", formats: media_panel.attr("data-formats"), onerror: (message) ->
|
217
|
+
data = {folder: media_panel.attr("data-folder").replace(/\/{2,}/g, '/'), media_action: "crop_url", formats: media_panel.attr("data-formats"), versions: media_panel.attr("data-versions"), thumb_size: media_panel.attr("data-thumb_size"), onerror: (message) ->
|
218
218
|
$.fn.alert({type: 'error', content: message, title: I18n("msg.error_uploading")})
|
219
219
|
}
|
220
220
|
$.extend(data, args); on_error = data["onerror"]; delete data["onerror"];
|
@@ -234,12 +234,12 @@ $ ->
|
|
234
234
|
|
235
235
|
# jquery library for modal updaloder
|
236
236
|
$ ->
|
237
|
-
# sample: $.fn.upload_filemanager({title: "My title", formats: "image,video", dimension: "30x30", selected: function(file){ alert(file["name"]) }})
|
237
|
+
# sample: $.fn.upload_filemanager({title: "My title", formats: "image,video", dimension: "30x30", versions: '100x100,200x200', thumb_size: '100x100', selected: function(file){ alert(file["name"]) }})
|
238
238
|
# file structure: {"name":"422.html","size":1547, "url":"http://localhost:3000/media/1/422.html", "format":"doc","type":"text/html"}
|
239
239
|
# dimension: dimension: "30x30" | "x30" | dimension: "30x"
|
240
240
|
$.fn.upload_filemanager = (args)->
|
241
241
|
args = args || {}
|
242
|
-
open_modal({title: args["title"] || I18n("msg.media_title"), id: 'cama_modal_file_uploader', modal_size: "modal-lg", mode: "ajax", url: root_admin_url+"/media/ajax", ajax_params: {media_formats: args["formats"], dimension: args["dimension"] }, callback: (modal)->
|
242
|
+
open_modal({title: args["title"] || I18n("msg.media_title"), id: 'cama_modal_file_uploader', modal_size: "modal-lg", mode: "ajax", url: root_admin_url+"/media/ajax", ajax_params: {media_formats: args["formats"], dimension: args["dimension"], versions: args["versions"], thumb_size: args["thumb_size"] }, callback: (modal)->
|
243
243
|
if args["selected"]
|
244
244
|
window["callback_media_uploader"] = args["selected"]
|
245
245
|
modal.css("z-index", args["zindex"] || 99999).children(".modal-dialog").css("width", "90%")
|
@@ -91,7 +91,7 @@ class CamaleonCms::Admin::Appearances::NavMenusController < CamaleonCms::AdminCo
|
|
91
91
|
parent_id = params[:nav_menu_id] if parent_id.nil?
|
92
92
|
items.each do |index, _item|
|
93
93
|
item = current_site.nav_menu_items.find(_item['id'])
|
94
|
-
item.
|
94
|
+
item.update_columns parent_id: parent_id, term_order: index
|
95
95
|
reorder_items(_item['children'], _item['id'], false) if _item['children'].present?
|
96
96
|
end
|
97
97
|
render(inline: '') if is_root
|
@@ -26,7 +26,7 @@ class CamaleonCms::Admin::CategoriesController < CamaleonCms::AdminController
|
|
26
26
|
|
27
27
|
def update
|
28
28
|
if @category.update(params[:category])
|
29
|
-
@category.
|
29
|
+
@category.set_options(params[:meta])
|
30
30
|
@category.set_field_values(params[:field_options])
|
31
31
|
flash[:notice] = t('camaleon_cms.admin.post_type.message.updated')
|
32
32
|
redirect_to action: :index
|
@@ -39,7 +39,7 @@ class CamaleonCms::Admin::CategoriesController < CamaleonCms::AdminController
|
|
39
39
|
data_term = params[:category]
|
40
40
|
@category = @post_type.categories.new(data_term)
|
41
41
|
if @category.save
|
42
|
-
@category.
|
42
|
+
@category.set_options(params[:meta])
|
43
43
|
@category.set_field_values(params[:field_options])
|
44
44
|
flash[:notice] = t('camaleon_cms.admin.post_type.message.created')
|
45
45
|
redirect_to action: :index
|
@@ -39,7 +39,9 @@ class CamaleonCms::Admin::MediaController < CamaleonCms::AdminController
|
|
39
39
|
|
40
40
|
# do background actions in fog
|
41
41
|
def actions
|
42
|
-
|
42
|
+
if params[:media_action] != 'crop_url'
|
43
|
+
authorize! :manager, :media
|
44
|
+
end
|
43
45
|
params[:folder] = params[:folder].gsub("//", "/") if params[:folder].present?
|
44
46
|
case params[:media_action]
|
45
47
|
when "new_folder"
|
@@ -65,7 +67,7 @@ class CamaleonCms::Admin::MediaController < CamaleonCms::AdminController
|
|
65
67
|
def upload(settings = {})
|
66
68
|
f = {error: "File not found."}
|
67
69
|
if params[:file_upload].present?
|
68
|
-
f = upload_file(params[:file_upload], {folder: params[:folder], dimension: params['dimension'], formats: params[:formats]}.merge(settings))
|
70
|
+
f = upload_file(params[:file_upload], {folder: params[:folder], dimension: params['dimension'], formats: params[:formats], versions: params[:versions], thumb_size: params[:thumb_size]}.merge(settings))
|
69
71
|
end
|
70
72
|
|
71
73
|
render(partial: "render_file_item", locals:{ file: f }) unless f[:error].present?
|
@@ -17,11 +17,13 @@ class CamaleonCms::Admin::PluginsController < CamaleonCms::AdminController
|
|
17
17
|
status = params[:status].to_bool
|
18
18
|
if status == true # to inactivate
|
19
19
|
plugin = plugin_uninstall(params[:id])
|
20
|
+
hooks_run("plugin_#{params[:id]}_after_uninstall", {plugin: plugin})
|
20
21
|
flash[:notice] = "Plugin \"#{plugin.title}\" #{t('camaleon_cms.admin.message.was_inactivated')}"
|
21
22
|
end
|
22
23
|
|
23
24
|
unless status # to activate
|
24
25
|
plugin = plugin_install(params[:id])
|
26
|
+
hooks_run("plugin_#{params[:id]}_after_install", {plugin: plugin})
|
25
27
|
flash[:notice] = "Plugin \"#{plugin.title}\" #{t('camaleon_cms.admin.message.was_activated')}"
|
26
28
|
end
|
27
29
|
PluginRoutes.reload
|
@@ -32,6 +34,7 @@ class CamaleonCms::Admin::PluginsController < CamaleonCms::AdminController
|
|
32
34
|
def upgrade
|
33
35
|
plugin = plugin_upgrade(params[:plugin_id])
|
34
36
|
flash[:notice] = "Plugin \"#{plugin.title}\" #{t('camaleon_cms.admin.message.was_upgraded')}"
|
37
|
+
hooks_run("plugin_#{params[:plugin_id]}_after_upgrade", {plugin: plugin})
|
35
38
|
PluginRoutes.reload
|
36
39
|
redirect_to action: :index
|
37
40
|
end
|
@@ -43,6 +46,7 @@ class CamaleonCms::Admin::PluginsController < CamaleonCms::AdminController
|
|
43
46
|
else
|
44
47
|
flash[:error] = "Plugin \"#{plugin.title}\" #{t('camaleon_cms.admin.message.can_not_be_removed')}"
|
45
48
|
end
|
49
|
+
hooks_run("plugin_#{params[:id]}_after_destroy", {plugin: plugin})
|
46
50
|
redirect_to action: :index
|
47
51
|
end
|
48
52
|
|
@@ -29,7 +29,7 @@ class CamaleonCms::Admin::PostTagsController < CamaleonCms::AdminController
|
|
29
29
|
# save changes of a post tag
|
30
30
|
def update
|
31
31
|
if @post_tag.update(params[:post_tag])
|
32
|
-
@post_tag.
|
32
|
+
@post_tag.set_options(params[:meta]) if params[:meta].present?
|
33
33
|
@post_tag.set_field_values(params[:field_options])
|
34
34
|
flash[:notice] = t('camaleon_cms.admin.post_type.message.updated')
|
35
35
|
redirect_to action: :index
|
@@ -43,7 +43,7 @@ class CamaleonCms::Admin::PostTagsController < CamaleonCms::AdminController
|
|
43
43
|
data_term = params[:post_tag]
|
44
44
|
@post_tag = @post_type.post_tags.new(data_term)
|
45
45
|
if @post_tag.save
|
46
|
-
@post_tag.
|
46
|
+
@post_tag.set_options(params[:meta]) if params[:meta].present?
|
47
47
|
@post_tag.set_field_values(params[:field_options])
|
48
48
|
flash[:notice] = t('camaleon_cms.admin.post_type.message.created')
|
49
49
|
redirect_to action: :index
|
@@ -78,7 +78,7 @@ class CamaleonCms::Admin::PostsController < CamaleonCms::AdminController
|
|
78
78
|
r = {post: @post, post_type: @post_type}; hooks_run("create_post", r)
|
79
79
|
@post = r[:post]
|
80
80
|
if @post.valid?
|
81
|
-
@post.
|
81
|
+
@post.set_metas(params[:meta])
|
82
82
|
@post.set_field_values(params[:field_options])
|
83
83
|
@post.set_option("keywords", post_data[:keywords])
|
84
84
|
flash[:notice] = t('camaleon_cms.admin.post.message.created', post_type: @post_type.decorate.the_title)
|
@@ -106,7 +106,7 @@ class CamaleonCms::Admin::PostsController < CamaleonCms::AdminController
|
|
106
106
|
r = {post: @post, post_type: @post_type}; hooks_run("update_post", r)
|
107
107
|
@post = r[:post]
|
108
108
|
if @post.update(post_data)
|
109
|
-
@post.
|
109
|
+
@post.set_metas(params[:meta])
|
110
110
|
@post.set_field_values(params[:field_options])
|
111
111
|
@post.set_option("keywords", post_data[:keywords])
|
112
112
|
hooks_run("updated_post", {post: @post, post_type: @post_type})
|
@@ -114,9 +114,6 @@ class CamaleonCms::Admin::SessionsController < CamaleonCms::CamaleonController
|
|
114
114
|
user_data = params[:user]
|
115
115
|
result = cama_register_user(user_data, params[:meta])
|
116
116
|
if result[:result] == false && result[:type] == :captcha_error
|
117
|
-
@first_name = params[:meta][:first_name]
|
118
|
-
@last_name = params[:meta][:last_name]
|
119
|
-
|
120
117
|
@user.errors[:captcha] = t('camaleon_cms.admin.users.message.error_captcha')
|
121
118
|
render 'register'
|
122
119
|
elsif result[:result]
|
@@ -125,8 +122,6 @@ class CamaleonCms::Admin::SessionsController < CamaleonCms::CamaleonController
|
|
125
122
|
r = {user: @user, redirect_url: result[:redirect_url]}; hooks_run('user_registered', r)
|
126
123
|
redirect_to r[:redirect_url]
|
127
124
|
else
|
128
|
-
@first_name = params[:meta][:first_name]
|
129
|
-
@last_name = params[:meta][:last_name]
|
130
125
|
render 'register'
|
131
126
|
end
|
132
127
|
else
|
@@ -22,11 +22,13 @@ class CamaleonCms::Admin::SettingsController < CamaleonCms::AdminController
|
|
22
22
|
def site_saved
|
23
23
|
@site = current_site
|
24
24
|
if @site.update(params[:site])
|
25
|
-
@site.
|
25
|
+
@site.set_options(params[:meta]) if params[:meta].present?
|
26
26
|
@site.set_multiple_options(params[:options])
|
27
27
|
@site.set_field_values(params[:field_options])
|
28
28
|
theme = @site.get_theme.decorate
|
29
29
|
theme.set_field_values(params[:theme_fields]) if params[:theme_fields].present?
|
30
|
+
theme.set_options(params[:theme_option]) if params[:theme_option].present?
|
31
|
+
theme.set_metas(params[:theme_meta]) if params[:theme_meta].present?
|
30
32
|
flash[:notice] = t('camaleon_cms.admin.settings.message.site_updated')
|
31
33
|
hook_run(theme.settings, "on_theme_settings", theme)
|
32
34
|
redirect_to action: :site
|
@@ -35,7 +35,7 @@ class CamaleonCms::Admin::UsersController < CamaleonCms::AdminController
|
|
35
35
|
|
36
36
|
def update
|
37
37
|
if @user.update(params[:user])
|
38
|
-
@user.
|
38
|
+
@user.set_metas(params[:meta]) if params[:meta].present?
|
39
39
|
@user.set_field_values(params[:field_options])
|
40
40
|
r = {user: @user, message: t('camaleon_cms.admin.users.message.updated'), params: params}; hooks_run('user_after_edited', r)
|
41
41
|
flash[:notice] = r[:message]
|
@@ -74,7 +74,7 @@ class CamaleonCms::Admin::UsersController < CamaleonCms::AdminController
|
|
74
74
|
user_data = params[:user]
|
75
75
|
@user = current_site.users.new(user_data)
|
76
76
|
if @user.save
|
77
|
-
@user.
|
77
|
+
@user.set_metas(params[:meta]) if params[:meta].present?
|
78
78
|
@user.set_field_values(params[:field_options])
|
79
79
|
r={user: @user}; hooks_run('user_created', r)
|
80
80
|
flash[:notice] = t('camaleon_cms.admin.users.message.created')
|
@@ -15,8 +15,8 @@ class CamaleonCms::Apps::PluginsFrontController < CamaleonCms::FrontendControlle
|
|
15
15
|
"themes/#{current_theme.slug}/views/layouts/index"
|
16
16
|
end
|
17
17
|
}
|
18
|
-
private
|
19
18
|
|
19
|
+
private
|
20
20
|
def init_plugin
|
21
21
|
plugin_name = params[:controller].split("/")[1]
|
22
22
|
@plugin = current_site.plugins.where(slug: plugin_name).first_or_create
|
@@ -26,5 +26,7 @@ class CamaleonCms::Apps::PluginsFrontController < CamaleonCms::FrontendControlle
|
|
26
26
|
return
|
27
27
|
end
|
28
28
|
lookup_context.prefixes.prepend(params[:controller].sub("plugins/#{plugin_name}", "#{plugin_name}/views")) if !@plugin.settings["gem_mode"].present?
|
29
|
+
lookup_context.prefixes.append("themes/#{current_theme.slug}") if current_theme.settings["gem_mode"]
|
30
|
+
lookup_context.prefixes.append("themes/#{current_theme.slug}/views") unless current_theme.settings["gem_mode"]
|
29
31
|
end
|
30
32
|
end
|
@@ -15,6 +15,9 @@ class CamaleonCms::Apps::ThemesFrontController < CamaleonCms::FrontendController
|
|
15
15
|
theme_name = params[:controller].split("/")[1]
|
16
16
|
@theme = current_theme
|
17
17
|
return render_error(404) unless current_theme.slug == theme_name
|
18
|
-
lookup_context.prefixes
|
18
|
+
lookup_context.prefixes = []
|
19
|
+
lookup_context.prefixes.prepend(params[:controller].sub("themes/#{theme_name}", "themes/#{theme_name}/views")) unless current_theme.settings["gem_mode"]
|
20
|
+
lookup_context.prefixes.append("themes/#{current_theme.slug}") if current_theme.settings["gem_mode"]
|
21
|
+
lookup_context.prefixes.append("themes/#{current_theme.slug}/views") unless current_theme.settings["gem_mode"]
|
19
22
|
end
|
20
23
|
end
|
@@ -39,8 +39,12 @@ class CamaleonCms::FrontendController < CamaleonCms::CamaleonController
|
|
39
39
|
@cama_visited_category = @category
|
40
40
|
@children = @category.children.no_empty.decorate
|
41
41
|
@posts = @category.the_posts.paginate(:page => params[:page], :per_page => current_site.front_per_page).eager_load(:metas)
|
42
|
-
r_file = lookup_context.template_exists?("
|
43
|
-
|
42
|
+
r_file = lookup_context.template_exists?("post_types/#{@post_type.the_slug}/category_#{@category.the_slug}") ? "post_types/#{@post_type.the_slug}/category_#{@post_type.the_slug}" : nil # specific template category with specific slug within a posttype
|
43
|
+
r_file = lookup_context.template_exists?("post_types/#{@post_type.the_slug}/category") ? "post_types/#{@post_type.the_slug}/category" : nil unless r_file.present? # default template category for all categories within a posttype
|
44
|
+
r_file = lookup_context.template_exists?("categories/#{@category.the_slug}") ? "categories/#{@category.the_slug}" : 'category' unless r_file.present? # default template category for all categories for all posttypes
|
45
|
+
|
46
|
+
layout_ = lookup_context.template_exists?("layouts/post_types/#{@post_type.the_slug}/category") ? "post_types/#{@post_type.the_slug}/category" : nil unless layout_.present? # layout for all categories within a posttype
|
47
|
+
layout_ = lookup_context.template_exists?("layouts/categories/#{@category.the_slug}") ? "categories/#{@category.the_slug}" : (self.send :_layout) unless layout_.present? # layout for categories for all post types
|
44
48
|
r = {category: @category, layout: layout_, render: r_file}; hooks_run("on_render_category", r)
|
45
49
|
render r[:render], layout: r[:layout]
|
46
50
|
end
|
@@ -72,7 +76,9 @@ class CamaleonCms::FrontendController < CamaleonCms::CamaleonController
|
|
72
76
|
end
|
73
77
|
@cama_visited_tag = @post_tag
|
74
78
|
@posts = @post_tag.the_posts.paginate(:page => params[:page], :per_page => current_site.front_per_page).eager_load(:metas)
|
75
|
-
r_file = lookup_context.template_exists?("
|
79
|
+
r_file = lookup_context.template_exists?("post_types/#{@post_type.the_slug}/post_tag_#{@post_tag.the_slug}") ? "post_types/#{@post_type.the_slug}/post_tag_#{@post_tag.the_slug}" : nil
|
80
|
+
r_file = lookup_context.template_exists?("post_types/#{@post_type.the_slug}/post_tag") ? "post_types/#{@post_type.the_slug}/post_tag" : nil unless r_file.present?
|
81
|
+
r_file = lookup_context.template_exists?("post_tags/#{@post_tag.the_slug}") ? "post_tags/#{@post_tag.the_slug}" : "post_tag" unless r_file.present?
|
76
82
|
layout_ = lookup_context.template_exists?("layouts/post_tags/#{@post_tag.the_slug}") ? "post_tags/#{@post_tag.the_slug}" : (self.send :_layout)
|
77
83
|
r = {post_tag: @post_tag, layout: layout_, render: r_file}; hooks_run("on_render_post_tag", r)
|
78
84
|
render r[:render], layout: r[:layout]
|
@@ -169,6 +175,8 @@ class CamaleonCms::FrontendController < CamaleonCms::CamaleonController
|
|
169
175
|
r_file = @post.get_template(@post_type)
|
170
176
|
elsif home_page.present? && @post.id.to_s == home_page
|
171
177
|
r_file = "index"
|
178
|
+
elsif lookup_context.template_exists?("post_types/#{@post_type.the_slug}/single")
|
179
|
+
r_file = "post_types/#{@post_type.the_slug}/single"
|
172
180
|
elsif lookup_context.template_exists?("#{@post_type.slug}")
|
173
181
|
r_file = "#{@post_type.slug}"
|
174
182
|
else
|
@@ -37,4 +37,28 @@ module CamaleonCms::CustomFieldsConcern
|
|
37
37
|
end
|
38
38
|
r
|
39
39
|
end
|
40
|
+
|
41
|
+
# return custom field contents with key field_key (only for type attributes)
|
42
|
+
# translated and short codes evaluated like the content
|
43
|
+
# this is for multiple values
|
44
|
+
def the_attribute_fields(field_key)
|
45
|
+
r = []
|
46
|
+
object.get_fields(field_key).each do |text|
|
47
|
+
_r = JSON.parse(text || '{}')
|
48
|
+
_r['attr'] = h.do_shortcode(_r['attr'].to_s.translate(@_deco_locale), object)
|
49
|
+
_r['value'] = h.do_shortcode(_r['value'].to_s.translate(@_deco_locale), object)
|
50
|
+
r << _r
|
51
|
+
end
|
52
|
+
r
|
53
|
+
end
|
54
|
+
|
55
|
+
# return custom field content with key field_key (only for type attributes)
|
56
|
+
# translated and short codes evaluated like the content
|
57
|
+
# default_val: default value returned when this field was not registered
|
58
|
+
def the_attribute_field(field_key, default_val = '')
|
59
|
+
r = JSON.parse(object.get_field(field_key, default_val) || '{}')
|
60
|
+
r['attr'] = h.do_shortcode(r['attr'].to_s.translate(@_deco_locale), object)
|
61
|
+
r['value'] = h.do_shortcode(r['value'].to_s.translate(@_deco_locale), object)
|
62
|
+
r
|
63
|
+
end
|
40
64
|
end
|
@@ -40,6 +40,7 @@ class CamaleonCms::PostDecorator < CamaleonCms::ApplicationDecorator
|
|
40
40
|
th = object.get_meta("thumb")
|
41
41
|
th.present? ? th : (default || object.post_type.get_option('default_thumb', nil) || h.asset_url("camaleon_cms/image-not-found.png"))
|
42
42
|
end
|
43
|
+
alias_method :the_image_url, :the_thumb_url
|
43
44
|
|
44
45
|
# check if this page has registered the thumbnail
|
45
46
|
def has_thumb?
|
@@ -236,4 +237,14 @@ class CamaleonCms::PostDecorator < CamaleonCms::ApplicationDecorator
|
|
236
237
|
res.html_safe
|
237
238
|
end
|
238
239
|
|
240
|
+
# return all related posts of current post
|
241
|
+
def the_related_posts
|
242
|
+
ptype = self.the_post_type
|
243
|
+
ptype.the_posts.joins(:categories).where("#{CamaleonCms::TermRelationship.table_name}" => {term_taxonomy_id: the_categories.pluck(:id)})
|
244
|
+
end
|
245
|
+
|
246
|
+
# fix for "Using Draper::Decorator without inferred source class"
|
247
|
+
def self.object_class_name
|
248
|
+
'CamaleonCms::Post'
|
249
|
+
end
|
239
250
|
end
|