camaleon_cms 2.1.2.0 → 2.1.2.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.
- 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
|