camaleon_cms 2.4.5.1 → 2.4.5.2
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/app/assets/javascripts/camaleon_cms/admin/_data.js +4 -0
- data/app/assets/javascripts/camaleon_cms/admin/_post.js +5 -1
- data/app/controllers/camaleon_cms/admin/media_controller.rb +1 -0
- data/app/controllers/camaleon_cms/camaleon_controller.rb +4 -2
- data/app/controllers/camaleon_cms/frontend_controller.rb +14 -5
- data/app/helpers/camaleon_cms/admin/application_helper.rb +2 -2
- data/app/helpers/camaleon_cms/admin/menus_helper.rb +2 -2
- data/app/helpers/camaleon_cms/uploader_helper.rb +10 -0
- data/app/models/camaleon_cms/post.rb +2 -1
- data/app/views/camaleon_cms/admin/post_tags/_form.html.erb +1 -1
- data/lib/camaleon_cms/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bae6a1664516d32407adf0eaf0e3dfd429373592
|
4
|
+
data.tar.gz: ed92a67c425fb5388354f1886a5ab9fdfcaad92a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c70de9d40fbdf31c47eacd42b76c66e907d1a478aa2ac5d41ec53bcc94b4cea30e6d6024aa29854a073c1dab218708849f6b0dc5995fa9ab315c6becab990348
|
7
|
+
data.tar.gz: 446f6d88e6fb65d1c348ae2ca634bc6ed8332d7645a1a32b7ab673ca4e11aa39e4cd4d2ad2878253241d554feb93ace5706bfa71afe81cc3c56566843bda253c
|
@@ -32,6 +32,10 @@ function cama_get_tinymce_settings(settings){
|
|
32
32
|
tinymce.triggerSave();
|
33
33
|
$('textarea#'+editor.id).trigger('change');
|
34
34
|
});
|
35
|
+
|
36
|
+
editor.on('PostProcess', function (ed) {
|
37
|
+
ed.content = ed.content.replace(/(<p><\/p>)/gi,'<br />');
|
38
|
+
});
|
35
39
|
|
36
40
|
editor.addMenuItem('append_line', {
|
37
41
|
text: 'New line at the end',
|
@@ -110,6 +110,10 @@ function cama_init_post(obj) {
|
|
110
110
|
var slug_tmp = null;
|
111
111
|
$input_slug.slugify($this, {
|
112
112
|
change: function (slug) {
|
113
|
+
if (slug == "") {
|
114
|
+
// generate 5-length random character slug when slugify result is empty
|
115
|
+
slug = Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 5);
|
116
|
+
}
|
113
117
|
slug_tmp = slug;
|
114
118
|
set_slug(slug);
|
115
119
|
}
|
@@ -294,4 +298,4 @@ function cama_upload_feature_image(data) {
|
|
294
298
|
$('#feature-image').show();
|
295
299
|
}
|
296
300
|
}, data));
|
297
|
-
}
|
301
|
+
}
|
@@ -55,6 +55,7 @@ class CamaleonCms::Admin::MediaController < CamaleonCms::AdminController
|
|
55
55
|
params[:folder] = params[:folder].gsub("//", "/") if params[:folder].present?
|
56
56
|
case params[:media_action]
|
57
57
|
when "new_folder"
|
58
|
+
params[:folder] = slugify_folder(params[:folder])
|
58
59
|
render partial: "render_folder_item", locals: { fname: params[:folder].split("/").last, folder: cama_uploader.add_folder(params[:folder])}
|
59
60
|
when "del_folder"
|
60
61
|
cama_uploader.delete_folder(params[:folder])
|
@@ -26,7 +26,9 @@ class CamaleonCms::CamaleonController < ApplicationController
|
|
26
26
|
after_action :cama_after_actions, except: [:render_error, :captcha]
|
27
27
|
# Prevent CSRF attacks by raising an exception.
|
28
28
|
# For APIs, you may want to use :null_session instead.
|
29
|
-
|
29
|
+
# Skip forgery check on .js files located in /assets/ to avoid CORS errors
|
30
|
+
# caused by requests for non-existent files.
|
31
|
+
protect_from_forgery with: :exception, unless: -> { request.fullpath.match? /\A\/assets\/.*\.js\z/ }
|
30
32
|
layout Proc.new { |controller| controller.request.xhr? ? false : 'default' }
|
31
33
|
helper_method :current_user
|
32
34
|
|
@@ -125,7 +127,7 @@ class CamaleonCms::CamaleonController < ApplicationController
|
|
125
127
|
end
|
126
128
|
end
|
127
129
|
end
|
128
|
-
|
130
|
+
|
129
131
|
unless ApplicationController.method_defined?(:current_user)
|
130
132
|
def current_user
|
131
133
|
cama_current_user
|
@@ -133,7 +133,12 @@ class CamaleonCms::FrontendController < CamaleonCms::CamaleonController
|
|
133
133
|
def draft_render
|
134
134
|
post_draft = current_site.posts.drafts.find(params[:draft_id])
|
135
135
|
@object = post_draft
|
136
|
-
|
136
|
+
|
137
|
+
# let a hook override the ability for certain roles see drafts
|
138
|
+
args = { permitted: false }
|
139
|
+
hooks_run("on_render_draft_permitted", args)
|
140
|
+
|
141
|
+
if args[:permitted] || can?(:update, post_draft)
|
137
142
|
render_post(post_draft)
|
138
143
|
else
|
139
144
|
page_not_found
|
@@ -143,7 +148,7 @@ class CamaleonCms::FrontendController < CamaleonCms::CamaleonController
|
|
143
148
|
# render a post
|
144
149
|
# post_or_slug_or_id: slug_post | id post | post object
|
145
150
|
# from_url: true/false => true (true, permit eval hooks "on_render_post")
|
146
|
-
def render_post(post_or_slug_or_id, from_url = false)
|
151
|
+
def render_post(post_or_slug_or_id, from_url = false, status = nil)
|
147
152
|
if post_or_slug_or_id.is_a?(String) # slug
|
148
153
|
@post = current_site.the_posts.find_by_slug(post_or_slug_or_id)
|
149
154
|
elsif post_or_slug_or_id.is_a?(Integer) # id
|
@@ -187,7 +192,12 @@ class CamaleonCms::FrontendController < CamaleonCms::CamaleonController
|
|
187
192
|
layout_ = meta_layout if meta_layout.present? && lookup_context.template_exists?("layouts/#{meta_layout}")
|
188
193
|
r = {post: @post, post_type: @post_type, layout: layout_, render: r_file}
|
189
194
|
hooks_run("on_render_post", r) if from_url
|
190
|
-
|
195
|
+
|
196
|
+
if status.present?
|
197
|
+
render r[:render], (!r[:layout].nil? ? {layout: r[:layout], status: status} : {status: status})
|
198
|
+
else
|
199
|
+
render r[:render], (!r[:layout].nil? ? {layout: r[:layout]} : {})
|
200
|
+
end
|
191
201
|
end
|
192
202
|
end
|
193
203
|
|
@@ -197,8 +207,7 @@ class CamaleonCms::FrontendController < CamaleonCms::CamaleonController
|
|
197
207
|
if @_site_options[:error_404].present? # render a custom error page
|
198
208
|
page_404 = current_site.posts.find(@_site_options[:error_404]) rescue ""
|
199
209
|
if page_404.present?
|
200
|
-
page_404
|
201
|
-
redirect_to page_404.the_url
|
210
|
+
render_post(page_404, false, :not_found)
|
202
211
|
return
|
203
212
|
end
|
204
213
|
end
|
@@ -26,10 +26,10 @@ module CamaleonCms::Admin::ApplicationHelper
|
|
26
26
|
custom_class = will_paginate_options[:panel_class]
|
27
27
|
will_paginate_options.delete(:panel_class)
|
28
28
|
"<div class='row #{custom_class} pagination_panel cama_ajax_request'>
|
29
|
-
<div class='col-md-
|
29
|
+
<div class='col-md-10'>
|
30
30
|
#{will_paginate(items, will_paginate_options) rescue '' }
|
31
31
|
</div>
|
32
|
-
<div class='col-md-
|
32
|
+
<div class='col-md-2 text-right total-items'>
|
33
33
|
<strong>#{I18n.t('camaleon_cms.admin.table.total', default: 'Total')}: #{items.total_entries rescue items.count} </strong>
|
34
34
|
</div>
|
35
35
|
</div>"
|
@@ -169,8 +169,8 @@ module CamaleonCms::Admin::MenusHelper
|
|
169
169
|
def _admin_menu_draw(items)
|
170
170
|
res = []
|
171
171
|
res << "<ul class='treeview-menu'>"
|
172
|
-
items.
|
173
|
-
res << "<li class='#{"xn-openable" if item.has_key?(:items)} #{'active' if is_active_menu(item[:key])}' #{item[:datas]}>
|
172
|
+
items.each_with_index do |item, index|
|
173
|
+
res << "<li class='#{"xn-openable" if item.has_key?(:items)} item_#{index + 1} #{'active' if is_active_menu(item[:key])}' #{item[:datas]}>
|
174
174
|
<a href='#{item[:url]}'><i class='fa fa-#{item[:icon]}'></i> #{item[:title]} #{'<i class="fa fa-angle-left pull-right"></i>' if item.has_key?(:items) }</a>
|
175
175
|
#{_admin_menu_draw(item[:items]) if item.has_key?(:items)}
|
176
176
|
</li>"
|
@@ -281,6 +281,16 @@ module CamaleonCms::UploaderHelper
|
|
281
281
|
}.call
|
282
282
|
end
|
283
283
|
|
284
|
+
def slugify(val)
|
285
|
+
val.to_s.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
|
286
|
+
end
|
287
|
+
|
288
|
+
def slugify_folder(val)
|
289
|
+
splitted_folder = val.split('/')
|
290
|
+
splitted_folder[-1] = slugify(splitted_folder.last)
|
291
|
+
splitted_folder.join('/')
|
292
|
+
end
|
293
|
+
|
284
294
|
private
|
285
295
|
# helper for resize and crop method
|
286
296
|
def cama_crop_offsets_by_gravity(gravity, original_dimensions, cropped_dimensions)
|
@@ -259,6 +259,7 @@ class CamaleonCms::Post < CamaleonCms::PostDefault
|
|
259
259
|
private
|
260
260
|
# calculate a post order when it is empty
|
261
261
|
def fix_post_order
|
262
|
-
|
262
|
+
last_post = post_type.posts.where.not(id: nil).last
|
263
|
+
self.post_order = last_post.present? ? last_post.post_order + 1 : 1
|
263
264
|
end
|
264
265
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<% @post_tag = CamaleonCms::PostTag.new if @post_tag.nil? %>
|
1
|
+
<% @post_tag = CamaleonCms::PostTag.new(parent_id: params[:post_type_id]) if @post_tag.nil? %>
|
2
2
|
<%= form_for @post_tag, as: "post_tag", url:{action: @post_tag.new_record? ? :create : :update} , html:{class: 'validate-post-tag cama_ajax_request'} do |f| %>
|
3
3
|
<%= f.hidden_field :parent_id %>
|
4
4
|
<%= f.hidden_field :taxonomy %>
|
data/lib/camaleon_cms/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: camaleon_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.5.
|
4
|
+
version: 2.4.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Owen Peredo Diaz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01
|
11
|
+
date: 2018-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bcrypt
|