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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 85e1b055e6161ffaa93a6974f060af2f30d36d08
4
- data.tar.gz: 52cd5e9b93f954eb2211bd743221aa7f27c7e42a
3
+ metadata.gz: bae6a1664516d32407adf0eaf0e3dfd429373592
4
+ data.tar.gz: ed92a67c425fb5388354f1886a5ab9fdfcaad92a
5
5
  SHA512:
6
- metadata.gz: 22acb2602e5d8ea3f194be6d5923b61ea1fbef308b41e174ff619ee6e3e415f2f1d01af29669d668a6b6538121fd59f7e26aa10cbd04c701a7493369bc9839eb
7
- data.tar.gz: a54d8e653a938354ba5ce9976cfe0096909686ea0822d9ea40a87e803d59b2c6593b038e631f3544a6808b95461c2d98e0b4510edea1bbb0722fb9af3cc5fc45
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
- protect_from_forgery with: :exception
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
- if can?(:update, post_draft)
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
- render r[:render], (!r[:layout].nil? ? {layout: r[:layout]} : {})
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 = page_404.decorate
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-6'>
29
+ <div class='col-md-10'>
30
30
  #{will_paginate(items, will_paginate_options) rescue '' }
31
31
  </div>
32
- <div class='col-md-6 text-right total-items'>
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.each do |item|
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
- self.post_order = (post_type.posts.count) + 1
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 %>
@@ -1,3 +1,3 @@
1
1
  module CamaleonCms
2
- VERSION = '2.4.5.1'
2
+ VERSION = '2.4.5.2'
3
3
  end
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.1
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-09 00:00:00.000000000 Z
11
+ date: 2018-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bcrypt