camaleon_cms 2.4.3.11 → 2.4.3.12

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.

Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/camaleon_cms/admin/_post.js +1 -1
  3. data/app/assets/javascripts/camaleon_cms/admin/_posttype.js.coffee +7 -1
  4. data/app/controllers/camaleon_cms/admin/categories_controller.rb +1 -1
  5. data/app/controllers/camaleon_cms/admin/posts_controller.rb +3 -1
  6. data/app/controllers/camaleon_cms/admin/sessions_controller.rb +1 -0
  7. data/app/controllers/camaleon_cms/admin/settings/post_types_controller.rb +2 -0
  8. data/app/controllers/camaleon_cms/frontend_controller.rb +1 -0
  9. data/app/decorators/camaleon_cms/custom_fields_concern.rb +20 -9
  10. data/app/helpers/camaleon_cms/short_code_helper.rb +1 -1
  11. data/app/models/camaleon_cms/post_type.rb +1 -1
  12. data/app/uploaders/camaleon_cms_local_uploader.rb +2 -2
  13. data/app/views/camaleon_cms/admin/posts/_sidebar.html.erb +1 -1
  14. data/app/views/camaleon_cms/admin/settings/custom_fields/_render.html.erb +1 -0
  15. data/app/views/camaleon_cms/admin/settings/custom_fields/fields/_post_types.html.erb +1 -0
  16. data/app/views/camaleon_cms/admin/settings/custom_fields/form.html.erb +7 -0
  17. data/app/views/camaleon_cms/admin/settings/post_types/_form.html.erb +4 -2
  18. data/app/views/layouts/camaleon_cms/admin.html.erb +1 -1
  19. data/config/locales/camaleon_cms/admin/de.yml +1 -0
  20. data/config/locales/camaleon_cms/admin/en.yml +2 -1
  21. data/config/locales/camaleon_cms/admin/es.yml +2 -1
  22. data/lib/camaleon_cms/version.rb +1 -1
  23. data/lib/generators/camaleon_cms/gem_plugin_generator.rb +6 -4
  24. data/spec/dummy/db/schema.rb +130 -114
  25. data/spec/features/content_groups_spec.rb +2 -2
  26. data/spec/features/widgets_spec.rb +1 -1
  27. data/spec/support/custom_admin.html.erb +2 -1
  28. metadata +2 -4
  29. data/spec/dummy/db/test.sqlite3 +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9dc8afe6e7c379d3328182cf9beb596c2dfa9d48
4
- data.tar.gz: 079a90ef92547c8f8dbc3b3a9a65b9a6530ed151
3
+ metadata.gz: a88c2eae7a1687093b36edc1b7e114025c6f35c5
4
+ data.tar.gz: 2a4a338e0a9e7331d2c9ede64cb7a01a14ea2ce4
5
5
  SHA512:
6
- metadata.gz: 802f6d4b4211b05561bd69bc4122ff489509ce7b66c652acf9f75c8a699d2d3e1376380c78a550a83c7b38b26e2327a28b4c037875adc3659b727d76b6d9391d
7
- data.tar.gz: 15ae7e350976a0138e0dcddb1ff5afdc5797570b32a728d368780b43e252f4975f52ceffc5bb4af2b4b3c8084640e5f70cd9eba268d34fac19948398e4a4fbae
6
+ metadata.gz: e8058188fc6b86f8103fdb8391cddb1f3cade1c2ac0c178d91c71454bf0443de450891563303ea1363690f6a54e762debd50291113efc1e7cc01836c2698bf6b
7
+ data.tar.gz: 5cf62d58034bbe6d0e9e71677089648a154a91d3062ed9e6f88341e3c11af7b3ddc39200a21be5425a127a62041595762559072abf381a76cdfaea6fad2a2968
@@ -260,7 +260,7 @@ function cama_init_post(obj) {
260
260
  });
261
261
  }, on_close: function(modal){
262
262
  var panel_cats = $form.find("#post_right_bar .list-categories");
263
- $.get($form.find("#post_add_new_category").data('reload-url'), {categories: panel_cats.find("input:checkbox:checked").map(function(i, el){ return $(this).val(); }).get()}, function(res){ panel_cats.html(res); });
263
+ $.get($form.find("#post_add_new_category").data('reload-url'), {categories: panel_cats.find("input[name='categories[]']:checked").map(function(i, el){ return $(this).val(); }).get()}, function(res){ panel_cats.html(res); });
264
264
  }});
265
265
  /*********** end *************/
266
266
  }
@@ -18,4 +18,10 @@ window['cama_init_posttype_form'] = ->
18
18
  items.prop("disabled", false)
19
19
  else
20
20
  items.prop("disabled", true)
21
- ).trigger("change")
21
+ ).trigger("change")
22
+
23
+ # toggle single and multiple categories checkbox
24
+ cat_checks = form.find('input:checkbox[name="meta[has_category]"], input:checkbox[name="meta[has_single_category]"]')
25
+ cat_checks.change(->
26
+ cat_checks.not(this).prop("checked", false) if $(this).is(':checked')
27
+ ).filter(':checked').trigger('change')
@@ -44,7 +44,7 @@ class CamaleonCms::Admin::CategoriesController < CamaleonCms::AdminController
44
44
 
45
45
  # return html category list used to reload categories list in post editor form
46
46
  def list
47
- render inline: post_type_html_inputs(@post_type, "categories", "categories" , "checkbox" , params[:categories] || [], "categorychecklist", true )
47
+ render inline: post_type_html_inputs(@post_type, "categories", "categories" , @post_type.get_option('has_single_category', false) ? 'radio' : "checkbox" , params[:categories] || [], "categorychecklist", true )
48
48
  end
49
49
 
50
50
  def destroy
@@ -29,7 +29,9 @@ class CamaleonCms::Admin::PostsController < CamaleonCms::AdminController
29
29
  params[:q] = (params[:q] || '').downcase
30
30
  posts_all = posts_all.where("LOWER(#{CamaleonCms::Post.table_name}.title) LIKE ?", "%#{params[:q]}%")
31
31
  end
32
-
32
+
33
+ posts_all = posts_all.where(user_id: current_user) if cannot?(:edit_other, @post_type) # filter only own contents
34
+
33
35
  @posts = posts_all
34
36
  params[:s] = 'published' unless params[:s].present?
35
37
  @lists_tab = params[:s]
@@ -148,6 +148,7 @@ class CamaleonCms::Admin::SessionsController < CamaleonCms::CamaleonController
148
148
 
149
149
  def before_hook_session
150
150
  session[:cama_current_language] = params[:cama_set_language].to_sym if params[:cama_set_language].present?
151
+ session[:cama_current_language] = nil if current_site.get_languages.exclude?(session[:cama_current_language])
151
152
  I18n.locale = params[:locale] || session[:cama_current_language] || current_site.get_languages.first
152
153
  hooks_run("session_before_load")
153
154
  end
@@ -18,6 +18,7 @@ class CamaleonCms::Admin::Settings::PostTypesController < CamaleonCms::Admin::Se
18
18
 
19
19
  def update
20
20
  if @post_type.update(@data_term)
21
+ @post_type.set_field_values(params.require(:field_options).permit!) if params[:field_options].present?
21
22
  flash[:notice] = t('camaleon_cms.admin.post_type.message.updated')
22
23
  redirect_to action: :index
23
24
  else
@@ -28,6 +29,7 @@ class CamaleonCms::Admin::Settings::PostTypesController < CamaleonCms::Admin::Se
28
29
  def create
29
30
  @post_type = current_site.post_types.new(@data_term)
30
31
  if @post_type.save
32
+ @post_type.set_field_values(params.require(:field_options).permit!) if params[:field_options].present?
31
33
  flash[:notice] = t('camaleon_cms.admin.post_type.message.created')
32
34
  redirect_to action: :index
33
35
  else
@@ -215,6 +215,7 @@ class CamaleonCms::FrontendController < CamaleonCms::CamaleonController
215
215
 
216
216
  @_site_options = current_site.options
217
217
  session[:cama_current_language] = params[:cama_set_language].to_sym if params[:cama_set_language].present?
218
+ session[:cama_current_language] = nil if current_site.get_languages.exclude?(session[:cama_current_language])
218
219
  I18n.locale = params[:locale] || session[:cama_current_language] || current_site.get_languages.first
219
220
  return page_not_found unless current_site.get_languages.include?(I18n.locale.to_sym) # verify if this locale is available for this site
220
221
 
@@ -27,29 +27,35 @@ module CamaleonCms::CustomFieldsConcern
27
27
  end
28
28
 
29
29
  # the same function as get_fields_grouped(..) but this returns translated and shortcodes evaluated
30
- def the_fields_grouped(field_keys)
30
+ def the_fields_grouped(field_keys, is_json_format = false)
31
31
  res = []
32
32
  object.get_fields_grouped(field_keys).each do |_group|
33
33
  group = {}.with_indifferent_access
34
34
  _group.keys.each do |k|
35
- group[k] = _group[k].map{|v| h.do_shortcode(v.to_s.translate(@_deco_locale), object) }
35
+ if is_json_format
36
+ group[k] = _group[k].map{|v| parse_html_json(v) }
37
+ else
38
+ group[k] = _group[k].map{|v| h.do_shortcode(v.to_s.translate(@_deco_locale), object) }
39
+ end
36
40
  end
37
41
  res << group
38
42
  end
39
43
  res
40
44
  end
41
45
 
46
+ # the same function as get_fields_grouped(..) but this returns translated and shortcodes evaluated
47
+ def the_field_grouped(field_key, is_json_format = false, is_multiple = false)
48
+ the_fields_grouped([field_key], is_json_format).map{|v| is_multiple ? v.values.first : v.values.try(:first).try(:first) }
49
+ # the_fields_grouped([field_key], is_json_format).map{|v| is_multiple ? v.values.first : v.values.first }
50
+ end
51
+
42
52
  # return custom field contents with key field_key (only for type attributes)
43
53
  # translated and short codes evaluated like the content
44
54
  # this is for multiple values
45
55
  def the_json_fields(field_key)
46
56
  r = []
47
57
  object.get_fields(field_key).each do |text|
48
- _r = JSON.parse(text || '{}').with_indifferent_access
49
- _r.keys.each do |k|
50
- _r[k] = h.do_shortcode(_r[k].to_s.translate(@_deco_locale), object)
51
- end
52
- r << _r
58
+ r << parse_html_json(text)
53
59
  end
54
60
  r
55
61
  end
@@ -59,11 +65,16 @@ module CamaleonCms::CustomFieldsConcern
59
65
  # translated and short codes evaluated like the content
60
66
  # default_val: default value returned when this field was not registered
61
67
  def the_json_field(field_key, default_val = '')
62
- r = JSON.parse(object.get_field(field_key, default_val) || '{}').with_indifferent_access
68
+ parse_html_json(object.get_field(field_key, default_val))
69
+ end
70
+ alias_method :the_attribute_field, :the_json_field
71
+
72
+ private
73
+ def parse_html_json(json)
74
+ r = JSON.parse(json || '{}').with_indifferent_access
63
75
  r.keys.each do |k|
64
76
  r[k] = h.do_shortcode(r[k].to_s.translate(@_deco_locale), object)
65
77
  end
66
78
  r
67
79
  end
68
- alias_method :the_attribute_field, :the_json_field
69
80
  end
@@ -194,7 +194,7 @@ module CamaleonCms::ShortCodeHelper
194
194
  if attrs["field"].present? # model custom fields
195
195
  field = model.get_field_object(attrs["field"])
196
196
  if attrs["render_field"].present?
197
- return render :file => "custom_fields/#{field.options["field_key"]}", :locals => {object: model, field: field, field_key: attrs["field"], attibutes: attrs}
197
+ return render_to_string(template: "custom_fields/#{field.options["field_key"]}", layout: false, :locals => {object: model, field: field, field_key: attrs["field"], attibutes: attrs})
198
198
  else
199
199
  if attrs["index"]
200
200
  res = model.the_fields(attrs["field"])[attrs["index"].to_i-1] rescue ""
@@ -24,7 +24,7 @@ class CamaleonCms::PostType < CamaleonCms::TermTaxonomy
24
24
 
25
25
  # check if current post type manage categories
26
26
  def manage_categories?
27
- options[:has_category]
27
+ options[:has_category] || options[:has_single_category]
28
28
  end
29
29
 
30
30
  # hide or show this post type on admin -> contents -> menu
@@ -88,8 +88,8 @@ class CamaleonCmsLocalUploader < CamaleonCmsUploader
88
88
  end
89
89
 
90
90
  def delete_folder(key)
91
- file = File.join(@root_folder, key)
92
- FileUtils.rm(file) if File.exist? file
91
+ folder = File.join(@root_folder, key)
92
+ FileUtils.rm_rf(folder) if Dir.exist? folder
93
93
  reload
94
94
  end
95
95
 
@@ -96,7 +96,7 @@
96
96
  </div>
97
97
  <div class="panel-body ">
98
98
  <div class="form-group list-categories">
99
- <%= raw post_type_html_inputs(@post_type, "categories", "categories" , "checkbox" ,params[:categories] || (@post.new_record? ? [] : @post.categories.pluck("#{CamaleonCms::TermTaxonomy.table_name}.id")), "categorychecklist", true )%>
99
+ <%= raw post_type_html_inputs(@post_type, "categories", "categories" , @post_type.get_option('has_single_category', false) ? 'radio' : "checkbox" ,params[:categories] || (@post.new_record? ? [] : @post.categories.pluck("#{CamaleonCms::TermTaxonomy.table_name}.id")), "categorychecklist", true )%>
100
100
  </div>
101
101
  </div>
102
102
  </div>
@@ -34,6 +34,7 @@
34
34
  render(field.get_option('render') || (cama_custom_field_elements[field.get_option('field_key').to_sym][:render] rescue nil) || "camaleon_cms/admin/settings/custom_fields/fields/#{field.options[:field_key]}", field: field, values: nil, is_disabled: is_disabled, default_use: default_use, field_name: field_name)
35
35
  rescue => e
36
36
  Rails.logger.error "Camaleon CMS - Render Custom Fields Error: Custom field template was not found => #{e.message}: #{$!.backtrace}".cama_log_style(:red)
37
+ e.message
37
38
  end %>
38
39
  </div>
39
40
  </div>
@@ -1,5 +1,6 @@
1
1
  <div class="group-input-fields-content" data-callback-render="">
2
2
  <select name="<%= field_name %>[<%= field.slug %>][values][]" class="form-control input-value <%= 'is_translate' if field.options[:translate].to_s.to_bool %> <%= "required" if field.options[:required].to_s.to_bool %>" >
3
+ <option value=""></option>
3
4
  <% current_site.the_post_types.decorate.each do |ptype| %>
4
5
  <option value="<%= ptype.id %>"><%= ptype.the_title %></option>
5
6
  <% end %>
@@ -34,6 +34,13 @@
34
34
  <%= f.label t('camaleon_cms.admin.settings.where_display_group') %><br>
35
35
  <select id="select_assign_group" name="custom_field_group[assign_group]" class="form-control required">
36
36
  <option value="">&nbsp;</option>
37
+
38
+ <optgroup label="<%= t('camaleon_cms.admin.settings.in_post_type_settings_of', default: 'In Post Type settings of') %>">
39
+ <% current_site.post_types.each do |pt| pt = pt.decorate; value = "PostType,#{pt.id}" %>
40
+ <option value="<%= value %>"><%= pt.the_title %></option>
41
+ <% end %>
42
+ </optgroup>
43
+
37
44
  <optgroup label="<%= t('camaleon_cms.admin.settings.posts_in') %>">
38
45
  <% current_site.post_types.each do |pt| pt = pt.decorate; value = "PostType_Post,#{pt.id}" %>
39
46
  <option value="<%= value %>" data-help="<%= "#{t('camaleon_cms.admin.settings.tooltip.add_custom_field_posts')}"+ pt.the_title %>"><%= pt.the_title %></option>
@@ -64,8 +64,10 @@
64
64
 
65
65
  <div class="form-group">
66
66
  <input name="meta[has_category]" type="hidden" value="false"/>
67
- <label class="check0"><input name="meta[has_category]" type="checkbox" class="icheckbox0" value="true" <%= 'checked' if @post_type.get_option('has_category', false) %>/>&nbsp; <%= t('camaleon_cms.admin.table.manage_category') %></label>
67
+ <label class="check0"><input name="meta[has_category]" type="checkbox" class="icheckbox0" value="true" <%= 'checked' if @post_type.get_option('has_category', false) %>/>&nbsp; <%= t('camaleon_cms.admin.table.manage_category', default: 'Manage Multiple Categories') %></label>
68
68
  <%= raw cama_html_tooltip("#{t('camaleon_cms.admin.post_type.tooltip.permission_asing_categories')}", 'right') %>
69
+ <input name="meta[has_single_category]" type="hidden" value="false"/>
70
+ <label style="float: right;"><input name="meta[has_single_category]" type="checkbox" class="icheckbox0" value="true" <%= 'checked' if @post_type.get_option('has_single_category', false) %>/>&nbsp; <%= t('camaleon_cms.admin.table.manage_single_category', default: 'Manage Single Category') %></label>
69
71
  </div>
70
72
  <div class="form-group">
71
73
  <input name="meta[has_tags]" type="hidden" value="false"/>
@@ -149,7 +151,7 @@
149
151
  </div>
150
152
  </div>
151
153
  <% if groups.present? %>
152
- <div id="post_type_setting_custom">
154
+ <div role="tabpanel" class="tab-pane" id="post_type_setting_custom">
153
155
  <%= render partial: "camaleon_cms/admin/settings/custom_fields/render", locals: {record: @post_type, field_groups: groups} %>
154
156
  </div>
155
157
  <% end %>
@@ -16,6 +16,7 @@
16
16
  var tinymce_global_settings = {language_url: "<%= asset_path("camaleon_cms/admin/tinymce/langs/#{current_locale}.js") %>", custom_css: [], custom_toolbar: [], post_render: [], init: [], setups: [], settings: []};
17
17
  var I18n_data = <%= I18n.backend.respond_to?(:translations) ? I18n.backend.send(:translations)[current_locale.to_sym][:camaleon_cms][:admin][:js].to_json.html_safe : !!(I18n.backend.backends[1] && I18n.backend.backends[1].backends[1]) ? I18n.backend.backends[1].backends[1].send(:translations)[current_locale.to_sym][:camaleon_cms][:admin][:js].to_json.html_safe : "{}" rescue "{}" %>
18
18
  </script>
19
+ <%= render file: Rails.root.join('..', '..', 'spec/support/custom_admin') if Rails.env.test? %>
19
20
  <%= javascript_include_tag "camaleon_cms/admin/admin-manifest" %>
20
21
 
21
22
  <%= javascript_include_tag "camaleon_cms/admin/jquery_validate/#{current_locale}.js" if current_locale != 'en' %>
@@ -27,7 +28,6 @@
27
28
  <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
28
29
  <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
29
30
  <![endif]-->
30
- <%= render file: Rails.root.join('..', '..', 'spec/support/custom_admin') if Rails.env.test? %>
31
31
  </head>
32
32
  <body class="hold-transition skin-blue sidebar-mini" data-intro="<%= current_site.get_option("save_intro") %>">
33
33
  <%= yield :before_content if content_for? :before_content %>
@@ -393,6 +393,7 @@ de:
393
393
  permission_login_facebook: 'Login via Facebook erlauben?'
394
394
  permission_login_google: 'Login via Google+ erlauben?'
395
395
  posts_in: 'Posts in'
396
+ in_post_type_settings_of: 'In den Post Type Einstellungen von'
396
397
  settings: 'Einstellungen'
397
398
  tooltip:
398
399
  add_custom_field_posts: 'Füge selbsterstelltes Feld hinzu in Posts von '
@@ -393,6 +393,7 @@ en:
393
393
  permission_login_facebook: 'Permission to Login with Facebook'
394
394
  permission_login_google: 'Permission to Login with Google+'
395
395
  posts_in: 'Posts in'
396
+ in_post_type_settings_of: 'In Post Type settings of'
396
397
  settings: 'Settings'
397
398
  tooltip:
398
399
  add_custom_field_posts: 'Add Custom Field in Posts of '
@@ -489,7 +490,7 @@ en:
489
490
  linkedin: 'Linkedin'
490
491
  login: 'Login'
491
492
  logo: 'Logo'
492
- manage_category: 'Manage Category'
493
+ manage_category: 'Manage Multiple Categories'
493
494
  manage_content: 'Manage Content'
494
495
  manage_picture: 'Manage Picture'
495
496
  manage_seo: 'Manage Seo'
@@ -469,7 +469,8 @@ es:
469
469
  linkedin: 'Linkedin'
470
470
  login: 'Iniciar Sesión'
471
471
  logo: 'Logo'
472
- manage_category: 'Gestionar categoría'
472
+ manage_category: 'Gestionar multiples categorías'
473
+ manage_single_category: 'Gestionar una sola categoría'
473
474
  manage_content: 'Gestionar el contenido'
474
475
  manage_picture: 'Gestionar Imagen'
475
476
  manage_seo: 'Gestionar Imagen'
@@ -1,3 +1,3 @@
1
1
  module CamaleonCms
2
- VERSION = '2.4.3.11'
2
+ VERSION = '2.4.3.12'
3
3
  end
@@ -11,7 +11,7 @@ module CamaleonCms
11
11
  plugin_dir = Rails.root.join("apps", "plugins", get_plugin_name).to_s
12
12
  plugin_dir_path = "apps/plugins/#{get_plugin_name}"
13
13
  if behavior == :revoke
14
- FileUtils.rm_r(plugin_dir)
14
+ FileUtils.rm_r(plugin_dir) if Dir.exist?(plugin_dir)
15
15
  append_to_file Rails.root.join("Gemfile") do
16
16
  "\n\ngem '#{get_plugin_name}', path: '#{plugin_dir_path}'"
17
17
  end
@@ -91,9 +91,11 @@ module CamaleonCms
91
91
  end
92
92
  end"
93
93
  end
94
-
95
- append_to_file Rails.root.join("Gemfile") do
96
- "\n\ngem '#{get_plugin_name}', path: '#{plugin_dir_path}'"
94
+
95
+ if PluginRoutes.isRails4?
96
+ append_to_file Rails.root.join("Gemfile") do
97
+ "\n\ngem '#{get_plugin_name}', path: '#{plugin_dir_path}'"
98
+ end
97
99
  end
98
100
 
99
101
  # destroy non used files
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  # This file is auto-generated from the current state of the database. Instead
2
3
  # of editing this file, please use the migrations feature of Active Record to
3
4
  # incrementally modify your database, and then regenerate this schema definition.
@@ -12,166 +13,181 @@
12
13
 
13
14
  ActiveRecord::Schema.define(version: 20161215202255) do
14
15
 
15
- create_table "comments", force: :cascade do |t|
16
- t.string "author"
17
- t.string "author_email"
18
- t.string "author_url"
19
- t.string "author_IP"
20
- t.text "content"
21
- t.string "approved", default: "pending"
22
- t.string "agent"
23
- t.string "typee"
24
- t.integer "comment_parent"
25
- t.integer "post_id"
26
- t.integer "user_id"
16
+ create_table "ar_internal_metadata", primary_key: "key", force: :cascade do |t|
17
+ t.string "value"
27
18
  t.datetime "created_at", null: false
28
19
  t.datetime "updated_at", null: false
29
- t.index ["approved"], name: "index_comments_on_approved"
30
- t.index ["comment_parent"], name: "index_comments_on_comment_parent"
31
- t.index ["post_id"], name: "index_comments_on_post_id"
32
- t.index ["user_id"], name: "index_comments_on_user_id"
33
20
  end
34
21
 
22
+ create_table "comments", force: :cascade do |t|
23
+ t.string "author"
24
+ t.string "author_email"
25
+ t.string "author_url"
26
+ t.string "author_IP"
27
+ t.text "content"
28
+ t.string "approved", default: "pending"
29
+ t.string "agent"
30
+ t.string "typee"
31
+ t.integer "comment_parent"
32
+ t.integer "post_id"
33
+ t.integer "user_id"
34
+ t.datetime "created_at", null: false
35
+ t.datetime "updated_at", null: false
36
+ end
37
+
38
+ add_index "comments", ["approved"], name: "index_comments_on_approved"
39
+ add_index "comments", ["comment_parent"], name: "index_comments_on_comment_parent"
40
+ add_index "comments", ["post_id"], name: "index_comments_on_post_id"
41
+ add_index "comments", ["user_id"], name: "index_comments_on_user_id"
42
+
35
43
  create_table "custom_fields", force: :cascade do |t|
36
- t.string "object_class"
37
- t.string "name"
38
- t.string "slug"
44
+ t.string "object_class"
45
+ t.string "name"
46
+ t.string "slug"
39
47
  t.integer "objectid"
40
48
  t.integer "parent_id"
41
49
  t.integer "field_order"
42
- t.integer "count", default: 0
43
- t.boolean "is_repeat", default: false
44
- t.text "description"
45
- t.string "status"
46
- t.index ["object_class"], name: "index_custom_fields_on_object_class"
47
- t.index ["objectid"], name: "index_custom_fields_on_objectid"
48
- t.index ["parent_id"], name: "index_custom_fields_on_parent_id"
49
- t.index ["slug"], name: "index_custom_fields_on_slug"
50
+ t.integer "count", default: 0
51
+ t.boolean "is_repeat", default: false
52
+ t.text "description"
53
+ t.string "status"
50
54
  end
51
55
 
56
+ add_index "custom_fields", ["object_class"], name: "index_custom_fields_on_object_class"
57
+ add_index "custom_fields", ["objectid"], name: "index_custom_fields_on_objectid"
58
+ add_index "custom_fields", ["parent_id"], name: "index_custom_fields_on_parent_id"
59
+ add_index "custom_fields", ["slug"], name: "index_custom_fields_on_slug"
60
+
52
61
  create_table "custom_fields_relationships", force: :cascade do |t|
53
62
  t.integer "objectid"
54
63
  t.integer "custom_field_id"
55
64
  t.integer "term_order"
56
- t.string "object_class"
57
- t.text "value", limit: 1073741823
58
- t.string "custom_field_slug"
59
- t.integer "group_number", default: 0
60
- t.index ["custom_field_id"], name: "index_custom_fields_relationships_on_custom_field_id"
61
- t.index ["custom_field_slug"], name: "index_custom_fields_relationships_on_custom_field_slug"
62
- t.index ["object_class"], name: "index_custom_fields_relationships_on_object_class"
63
- t.index ["objectid"], name: "index_custom_fields_relationships_on_objectid"
65
+ t.string "object_class"
66
+ t.text "value", limit: 1073741823
67
+ t.string "custom_field_slug"
68
+ t.integer "group_number", default: 0
64
69
  end
65
70
 
71
+ add_index "custom_fields_relationships", ["custom_field_id"], name: "index_custom_fields_relationships_on_custom_field_id"
72
+ add_index "custom_fields_relationships", ["custom_field_slug"], name: "index_custom_fields_relationships_on_custom_field_slug"
73
+ add_index "custom_fields_relationships", ["object_class"], name: "index_custom_fields_relationships_on_object_class"
74
+ add_index "custom_fields_relationships", ["objectid"], name: "index_custom_fields_relationships_on_objectid"
75
+
66
76
  create_table "metas", force: :cascade do |t|
67
- t.string "key"
68
- t.text "value", limit: 1073741823
77
+ t.string "key"
78
+ t.text "value", limit: 1073741823
69
79
  t.integer "objectid"
70
- t.string "object_class"
71
- t.index ["key"], name: "index_metas_on_key"
72
- t.index ["object_class"], name: "index_metas_on_object_class"
73
- t.index ["objectid"], name: "index_metas_on_objectid"
80
+ t.string "object_class"
74
81
  end
75
82
 
83
+ add_index "metas", ["key"], name: "index_metas_on_key"
84
+ add_index "metas", ["object_class"], name: "index_metas_on_object_class"
85
+ add_index "metas", ["objectid"], name: "index_metas_on_objectid"
86
+
76
87
  create_table "plugins_attacks", force: :cascade do |t|
77
- t.string "path"
78
- t.string "browser_key"
79
- t.integer "site_id"
88
+ t.string "path"
89
+ t.string "browser_key"
90
+ t.integer "site_id"
80
91
  t.datetime "created_at"
81
- t.index ["browser_key"], name: "index_plugins_attacks_on_browser_key"
82
- t.index ["path"], name: "index_plugins_attacks_on_path"
83
- t.index ["site_id"], name: "index_plugins_attacks_on_site_id"
84
92
  end
85
93
 
94
+ add_index "plugins_attacks", ["browser_key"], name: "index_plugins_attacks_on_browser_key"
95
+ add_index "plugins_attacks", ["path"], name: "index_plugins_attacks_on_path"
96
+ add_index "plugins_attacks", ["site_id"], name: "index_plugins_attacks_on_site_id"
97
+
86
98
  create_table "plugins_contact_forms", force: :cascade do |t|
87
- t.integer "site_id"
88
- t.integer "count"
89
- t.integer "parent_id"
90
- t.string "name"
91
- t.string "slug"
92
- t.text "description"
93
- t.text "value"
94
- t.text "settings"
99
+ t.integer "site_id"
100
+ t.integer "count"
101
+ t.integer "parent_id"
102
+ t.string "name"
103
+ t.string "slug"
104
+ t.text "description"
105
+ t.text "value"
106
+ t.text "settings"
95
107
  t.datetime "created_at"
96
108
  t.datetime "updated_at"
97
109
  end
98
110
 
99
111
  create_table "posts", force: :cascade do |t|
100
- t.string "title"
101
- t.string "slug"
102
- t.text "content", limit: 1073741823
103
- t.text "content_filtered", limit: 1073741823
104
- t.string "status", default: "published"
112
+ t.string "title"
113
+ t.string "slug"
114
+ t.text "content", limit: 1073741823
115
+ t.text "content_filtered", limit: 1073741823
116
+ t.string "status", default: "published"
105
117
  t.datetime "published_at"
106
- t.integer "post_parent"
107
- t.string "visibility", default: "public"
108
- t.text "visibility_value"
109
- t.string "post_class", default: "Post"
110
- t.datetime "created_at", null: false
111
- t.datetime "updated_at", null: false
112
- t.integer "user_id"
113
- t.integer "post_order", default: 0
114
- t.integer "taxonomy_id"
115
- t.boolean "is_feature", default: false
116
- t.index ["post_class"], name: "index_posts_on_post_class"
117
- t.index ["post_parent"], name: "index_posts_on_post_parent"
118
- t.index ["slug"], name: "index_posts_on_slug"
119
- t.index ["status"], name: "index_posts_on_status"
120
- t.index ["user_id"], name: "index_posts_on_user_id"
118
+ t.integer "post_parent"
119
+ t.string "visibility", default: "public"
120
+ t.text "visibility_value"
121
+ t.string "post_class", default: "Post"
122
+ t.datetime "created_at", null: false
123
+ t.datetime "updated_at", null: false
124
+ t.integer "user_id"
125
+ t.integer "post_order", default: 0
126
+ t.integer "taxonomy_id"
127
+ t.boolean "is_feature", default: false
121
128
  end
122
129
 
130
+ add_index "posts", ["post_class"], name: "index_posts_on_post_class"
131
+ add_index "posts", ["post_parent"], name: "index_posts_on_post_parent"
132
+ add_index "posts", ["slug"], name: "index_posts_on_slug"
133
+ add_index "posts", ["status"], name: "index_posts_on_status"
134
+ add_index "posts", ["user_id"], name: "index_posts_on_user_id"
135
+
123
136
  create_table "term_relationships", force: :cascade do |t|
124
137
  t.integer "objectid"
125
138
  t.integer "term_order"
126
139
  t.integer "term_taxonomy_id"
127
- t.index ["objectid"], name: "index_term_relationships_on_objectid"
128
- t.index ["term_order"], name: "index_term_relationships_on_term_order"
129
- t.index ["term_taxonomy_id"], name: "index_term_relationships_on_term_taxonomy_id"
130
140
  end
131
141
 
142
+ add_index "term_relationships", ["objectid"], name: "index_term_relationships_on_objectid"
143
+ add_index "term_relationships", ["term_order"], name: "index_term_relationships_on_term_order"
144
+ add_index "term_relationships", ["term_taxonomy_id"], name: "index_term_relationships_on_term_taxonomy_id"
145
+
132
146
  create_table "term_taxonomy", force: :cascade do |t|
133
- t.string "taxonomy"
134
- t.text "description", limit: 1073741823
135
- t.integer "parent_id"
136
- t.integer "count"
137
- t.string "name"
138
- t.string "slug"
139
- t.integer "term_group"
140
- t.integer "term_order"
141
- t.string "status"
142
- t.datetime "created_at", null: false
143
- t.datetime "updated_at", null: false
144
- t.integer "user_id"
145
- t.index ["parent_id"], name: "index_term_taxonomy_on_parent_id"
146
- t.index ["slug"], name: "index_term_taxonomy_on_slug"
147
- t.index ["taxonomy"], name: "index_term_taxonomy_on_taxonomy"
148
- t.index ["term_order"], name: "index_term_taxonomy_on_term_order"
149
- t.index ["user_id"], name: "index_term_taxonomy_on_user_id"
147
+ t.string "taxonomy"
148
+ t.text "description", limit: 1073741823
149
+ t.integer "parent_id"
150
+ t.integer "count"
151
+ t.string "name"
152
+ t.string "slug"
153
+ t.integer "term_group"
154
+ t.integer "term_order"
155
+ t.string "status"
156
+ t.datetime "created_at", null: false
157
+ t.datetime "updated_at", null: false
158
+ t.integer "user_id"
150
159
  end
151
160
 
161
+ add_index "term_taxonomy", ["parent_id"], name: "index_term_taxonomy_on_parent_id"
162
+ add_index "term_taxonomy", ["slug"], name: "index_term_taxonomy_on_slug"
163
+ add_index "term_taxonomy", ["taxonomy"], name: "index_term_taxonomy_on_taxonomy"
164
+ add_index "term_taxonomy", ["term_order"], name: "index_term_taxonomy_on_term_order"
165
+ add_index "term_taxonomy", ["user_id"], name: "index_term_taxonomy_on_user_id"
166
+
152
167
  create_table "users", force: :cascade do |t|
153
- t.string "username"
154
- t.string "role", default: "client"
155
- t.string "email"
156
- t.string "slug"
157
- t.string "password_digest"
158
- t.string "auth_token"
159
- t.string "password_reset_token"
160
- t.integer "parent_id"
168
+ t.string "username"
169
+ t.string "role", default: "client"
170
+ t.string "email"
171
+ t.string "slug"
172
+ t.string "password_digest"
173
+ t.string "auth_token"
174
+ t.string "password_reset_token"
175
+ t.integer "parent_id"
161
176
  t.datetime "password_reset_sent_at"
162
177
  t.datetime "last_login_at"
163
- t.datetime "created_at", null: false
164
- t.datetime "updated_at", null: false
165
- t.integer "site_id", default: -1
166
- t.string "confirm_email_token"
178
+ t.datetime "created_at", null: false
179
+ t.datetime "updated_at", null: false
180
+ t.integer "site_id", default: -1
181
+ t.string "confirm_email_token"
167
182
  t.datetime "confirm_email_sent_at"
168
- t.boolean "is_valid_email", default: true
169
- t.string "first_name"
170
- t.string "last_name"
171
- t.index ["email"], name: "index_users_on_email"
172
- t.index ["role"], name: "index_users_on_role"
173
- t.index ["site_id"], name: "index_users_on_site_id"
174
- t.index ["username"], name: "index_users_on_username"
183
+ t.boolean "is_valid_email", default: true
184
+ t.string "first_name"
185
+ t.string "last_name"
175
186
  end
176
187
 
188
+ add_index "users", ["email"], name: "index_users_on_email"
189
+ add_index "users", ["role"], name: "index_users_on_role"
190
+ add_index "users", ["site_id"], name: "index_users_on_site_id"
191
+ add_index "users", ["username"], name: "index_users_on_username"
192
+
177
193
  end
@@ -11,7 +11,7 @@ describe "the Content Groups", js: true do
11
11
  fill_in 'post_type_name', :with => 'Test cat'
12
12
  fill_in 'post_type_slug', :with => 'test-content'
13
13
  fill_in 'post_type_description', :with => 'test-content descri'
14
- check("Manage Category")
14
+ check("Manage Multiple Categories")
15
15
  click_button 'Submit'
16
16
  end
17
17
  expect(page).to have_css('.alert-success')
@@ -24,7 +24,7 @@ describe "the Content Groups", js: true do
24
24
  all("table .btn-default").last.click
25
25
  end
26
26
  within("#post_type_form") do
27
- expect(page).to have_checked_field("Manage Category")
27
+ expect(page).to have_checked_field("Manage Multiple Categories")
28
28
  fill_in 'post_type_name', :with => 'Test cat updated'
29
29
  fill_in 'post_type_slug', :with => 'test-content'
30
30
  click_button 'Submit'
@@ -1,5 +1,5 @@
1
1
  require "rails_helper"
2
- describe "the Themes", js: true do
2
+ describe "the Widgets", js: true do
3
3
  login_success
4
4
 
5
5
  it "Widgets list" do
@@ -1 +1,2 @@
1
- <!--<style>.fa::before{ content: "i" !important; } </style>-->
1
+ <!--<style>.fa::before{ content: "i" !important; } </style>-->
2
+ <script>window['URL'] = '';</script> <!--FIX for undefined URL on tinymce-->
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.3.11
4
+ version: 2.4.3.12
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: 2017-08-01 00:00:00.000000000 Z
11
+ date: 2017-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bcrypt
@@ -1046,7 +1046,6 @@ files:
1046
1046
  - spec/dummy/config/routes.rb
1047
1047
  - spec/dummy/config/secrets.yml
1048
1048
  - spec/dummy/db/schema.rb
1049
- - spec/dummy/db/test.sqlite3
1050
1049
  - spec/features/categories_spec.rb
1051
1050
  - spec/features/comments_spec.rb
1052
1051
  - spec/features/contact_form_spec.rb
@@ -1136,7 +1135,6 @@ test_files:
1136
1135
  - spec/dummy/config/secrets.yml
1137
1136
  - spec/dummy/config.ru
1138
1137
  - spec/dummy/db/schema.rb
1139
- - spec/dummy/db/test.sqlite3
1140
1138
  - spec/dummy/Rakefile
1141
1139
  - spec/dummy/README.rdoc
1142
1140
  - spec/features/categories_spec.rb
Binary file