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 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