camaleon_cms 2.4.5.1 → 2.4.5.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.
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
|