hancock_cms 2.0.0.1 → 2.0.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aac27be322e86dbe06cbb665f135b45bcbaa2f26
4
- data.tar.gz: 32d116ff67f3e7e565eeeb3c2cc2b1f6e4d2bfbb
3
+ metadata.gz: '0596d7c61478cd10684f4d1c9c9b5361de0f3de5'
4
+ data.tar.gz: 4f4c14ff3ddf539e96ea445df5d0510986c7d4a8
5
5
  SHA512:
6
- metadata.gz: a7385fdec75273456f88842cae88d01435053caee1c479155790e9469ff551908fd4a1e8c1191faa28bfc7deed0985f70ef2e3598f9f9e26aaaa6953e6d069b7
7
- data.tar.gz: d418df9900372477a720aeae8c4d10fcf913939b0464b1cd792ef06e89b43277b33f9e2f6d00da04f48ecb868407744215f3f3cba5e2ac3a32f6ad137e4c2472
6
+ metadata.gz: 0747b77095baeadfe3bcd8c0dbc427234a2eb569586264bad110e5cc1d1e09fc971df94a63ddd0bbef331727fd0d065e4781a47d389943e9311dc45be81fcf1d
7
+ data.tar.gz: ef3f1fbd6012aecc0eecae628dc76365d60653e6b94525e670c4dafc6253bae1506bc3858633f05bab3ab7ead7046ef79d7b9504ab744a3e0c54e5d43d3ee7d3
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.4.0-preview1
1
+ 2.3.3
data/README.md CHANGED
@@ -29,7 +29,7 @@ And then execute:
29
29
 
30
30
  Or install it yourself as:
31
31
 
32
- $ gem install hancock_cms -v 2.0.0
32
+ $ gem install hancock_cms -v 2.0
33
33
 
34
34
  For activerecord, generate migrations and run them
35
35
 
@@ -48,7 +48,7 @@ Make sure you have rails 5.0 installed
48
48
  If not, uninstall rails and install again
49
49
 
50
50
  gem uninstall rails
51
- gem install rails -v 5.0.0
51
+ gem install rails -v 5.0
52
52
 
53
53
  Then, for mongoid:
54
54
 
@@ -11,6 +11,23 @@ if Hancock.mongoid?
11
11
  def default_cache_keys
12
12
  self.class.default_cache_keys
13
13
  end
14
+ def set_default_cache_keys(strategy = :append)
15
+ _old_keys = cache_keys
16
+
17
+ _keys = case strategy.to_sym
18
+ when :append
19
+ (_old_keys + default_cache_keys).uniq
20
+ when :overwrite, :replace
21
+ default_cache_keys
22
+ else
23
+ _old_keys
24
+ end
25
+ self
26
+ end
27
+ def set_default_cache_keys!(strategy = :append)
28
+ self.set_default_cache_keys(strategy) and self.save
29
+ end
30
+
14
31
 
15
32
  def cache_keys
16
33
  cache_keys_str.split(/\s+/).map { |k| k.strip }.reject { |k| k.blank? }
File without changes
@@ -6,19 +6,27 @@ html lang="ru"
6
6
  title= yield(:title) || page_title
7
7
  = yield :meta
8
8
  = csrf_meta_tags
9
- = render partial: 'blocks/favicon'
9
+
10
+ / - cache 'favicons', skip_digest: true do
11
+ / = render partial: 'blocks/favicon'
10
12
 
11
13
  - async = false #Rails.env.production?
12
14
  = stylesheet_link_tag "application", media: "all", async: async
13
15
  = javascript_include_tag "application", async: async
14
16
  /[if lt IE 9]
15
17
  = javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js", async: async
16
- css:
17
- #{Settings.custom_css(default: '', kind: :css, label: "Дополнительный CSS")}
18
- javascript:
19
- #{Settings.custom_js(default: '', kind: :js, label: "Дополнительный JS")}
18
+ - cache 'layouts/application/custom_head', skip_digest: true do
19
+ - _cache_key = ['views/layouts/application/custom_head']
20
+ css:
21
+ #{Settings.ns('application_layout').custom_css(default: '', kind: :css, label: "Дополнительный CSS", cache_keys: _cache_key)}
22
+ javascript:
23
+ #{Settings.ns('application_layout').custom_js(default: '', kind: :js, label: "Дополнительный JS", cache_keys: _cache_key)}
24
+
25
+ body{class="application_layout #{controller_name} #{action_name} #{controller_name}_#{action_name}"}
20
26
 
21
- body{class="#{controller_name} #{action_name} #{controller_name}_#{action_name}"}
27
+ - cache 'preloader', skip_digest: true do
28
+ = render partial: 'blocks/preloader'
29
+
22
30
  #root role="main"
23
31
 
24
32
  header#header
@@ -32,4 +40,4 @@ html lang="ru"
32
40
  footer#footer
33
41
  = render partial: 'blocks/footer'
34
42
 
35
- = render partial: 'hancock/toplink/toplink'
43
+ = render partial: 'hancock/toplink/toplink'
@@ -0,0 +1,89 @@
1
+ # Patach for glebtv-mongoid_nested_set and rails5 (belongs_to is required)
2
+ require 'glebtv-mongoid_nested_set'
3
+
4
+ module Mongoid::Acts::NestedSet
5
+ module Base
6
+ # Configuration options are:
7
+ #
8
+ # * +:parent_field+ - field name to use for keeping the parent id (default: parent_id)
9
+ # * +:left_field+ - field name for left boundary data, default 'lft'
10
+ # * +:right_field+ - field name for right boundary data, default 'rgt'
11
+ # * +:outline_number_field+ - field name for the number field, default nil. If set,
12
+ # the value will be used as a field name to keep track of each node's
13
+ # "outline number" (e.g. 1.2.5).
14
+ # * +:scope+ - restricts what is to be considered a list. Given a symbol, it'll attach
15
+ # "_id" (if it hasn't been already) and use that as the foreign key restriction. You
16
+ # can also pass an array to scope by multiple attributes
17
+ # * +:dependent+ - behavior for cascading destroy. If set to :destroy, all the child
18
+ # objects are destroyed alongside this object by calling their destroy method. If set
19
+ # to :delete_all (default), all the child objects are deleted without calling their
20
+ # destroy method.
21
+ # * +:klass+ - class to use for queries (defaults to self)
22
+ #
23
+ # See Mongoid::Acts::NestedSet::ClassMethods for a list of class methods and
24
+ # Mongoid::Acts::NestedSet::InstanceMethods for a list of instance methods added to
25
+ # acts_as_nested_set models
26
+ def acts_as_nested_set(options = {})
27
+ options = {
28
+ :parent_field => 'parent_id',
29
+ :left_field => 'lft',
30
+ :right_field => 'rgt',
31
+ :outline_number_field => nil,
32
+ :dependent => :delete_all, # or :destroy
33
+ :klass => self,
34
+ }.merge(options)
35
+
36
+ if options[:scope].is_a?(Symbol) && options[:scope].to_s !~ /_id$/
37
+ options[:scope] = "#{options[:scope]}_id".intern
38
+ end
39
+
40
+ class_attribute :acts_as_nested_set_options, :instance_writer => false
41
+ self.acts_as_nested_set_options = options
42
+
43
+ unless self.is_a?(Document::ClassMethods)
44
+ include Document
45
+ include OutlineNumber if outline_number_field_name
46
+
47
+ field left_field_name, :type => Integer
48
+ field right_field_name, :type => Integer
49
+ field outline_number_field_name, :type => String if outline_number_field_name
50
+ field :depth, :type => Integer
51
+
52
+ has_many :children, :class_name => self.name, :foreign_key => parent_field_name, :inverse_of => :parent, :order => left_field_name.to_sym.asc
53
+ # was
54
+ # belongs_to :parent, :class_name => self.name, :foreign_key => parent_field_name
55
+ # became
56
+ belongs_to :parent, :class_name => self.name, :foreign_key => parent_field_name, required: false
57
+
58
+ attr_accessor :skip_before_destroy
59
+
60
+ define_callbacks :move, :terminator => callback_terminator
61
+
62
+ before_create :set_default_left_and_right
63
+ before_save :store_new_parent
64
+ after_save :move_to_new_parent
65
+ before_destroy :destroy_descendants
66
+
67
+ # no assignment to structure fields
68
+ [left_field_name, right_field_name].each do |field|
69
+ module_eval <<-"end_eval", __FILE__, __LINE__
70
+ def #{field}=(x)
71
+ raise NameError, "Unauthorized assignment to #{field}: it's an internal field handled by acts_as_nested_set code, use move_to_* methods instead.", "#{field}"
72
+ end
73
+ end_eval
74
+ end
75
+
76
+ scope :roots, lambda {
77
+ where(parent_field_name => nil).asc(left_field_name)
78
+ }
79
+ scope :leaves, lambda {
80
+ where("this.#{quoted_right_field_name} - this.#{quoted_left_field_name} == 1").asc(left_field_name)
81
+ }
82
+ scope :with_depth, lambda { |level|
83
+ where(:depth => level).asc(left_field_name)
84
+ }
85
+
86
+ end
87
+ end
88
+ end
89
+ end
@@ -100,6 +100,7 @@ remove_file 'config/initializers/session_store.rb'
100
100
  if mongoid
101
101
  create_file 'config/initializers/session_store.rb' do <<-TEXT
102
102
  # Be sure to restart your server when you modify this file.
103
+
103
104
  #Rails.application.config.session_store :cookie_store, key: '_#{app_name.tableize.singularize}_session'
104
105
  Rails.application.config.session_store :mongoid_store
105
106
  TEXT
@@ -108,6 +109,7 @@ else
108
109
  generate 'active_record_store:session_migration'
109
110
  create_file 'config/initializers/session_store.rb' do <<-TEXT
110
111
  # Be sure to restart your server when you modify this file.
112
+
111
113
  #Rails.application.config.session_store :cookie_store, key: '_#{app_name.tableize.singularize}_session'
112
114
  Rails.application.config.session_store :active_record_store
113
115
  TEXT
@@ -143,10 +145,20 @@ include Hancock::Model
143
145
  def self.manager_can_default_actions
144
146
  [:show, :read]
145
147
  end
146
- def manager_cannot_actions
148
+ def self.manager_cannot_actions
147
149
  [:new, :create, :delete, :destroy]
148
150
  end
151
+
152
+ ######################### RailsAdminUserAbilities #########################
153
+ # def self.rails_admin_user_defined_visible_actions
154
+ # [:user_abilities]
155
+ # end
156
+ # has_one :ability, class_name: "RailsAdminUserAbilities::UserAbility", as: :rails_admin_user_abilitable
157
+ # scope :for_rails_admin, -> { where(:roles.in => ['admin', 'manager']) } # could be any you want, just need to
158
+ ###########################################################################
159
+
149
160
  cattr_accessor :current_user
161
+
150
162
  # Include default devise modules. Others available are:
151
163
  # :confirmable, :lockable, :timeoutable and :omniauthable
152
164
  TEXT
@@ -159,27 +171,37 @@ gsub_file 'app/models/user.rb', '# field :unlock_token', 'field :unlock_token'
159
171
  gsub_file 'app/models/user.rb', '# field :locked_at', 'field :locked_at'
160
172
 
161
173
  inject_into_file 'app/models/user.rb', before: /^end/ do <<-TEXT
174
+
162
175
  field :name, type: String
163
176
  field :login, type: String
164
177
  field :roles, type: Array, default: []
178
+
165
179
  before_save do
166
180
  self.roles ||= []
167
181
  self.roles.reject! { |r| r.blank? }
168
182
  end
183
+
169
184
  AVAILABLE_ROLES = ["admin", "manager", "client"]
185
+
170
186
  AVAILABLE_ROLES.each do |r|
171
187
  class_eval <<-EVAL
172
188
  def \#{r}?
173
189
  self.roles and self.roles.include?("\#{r}")
174
190
  end
191
+
175
192
  scope :\#{r.pluralize}, -> { any_in(roles: "\#{r}") }
176
193
  EVAL
177
194
  end
195
+
178
196
  def self.generate_first_admin_user
179
197
  if ::User.admins.all.count == 0
180
198
  _email_pass = 'admin@#{app_name.dasherize.downcase}.ru'
181
199
  if ::User.new(roles: ["admin"], email: _email_pass, password: _email_pass, password_confirmation: _email_pass).save
200
+ puts "#################################################################################"
201
+ puts "#################################################################################"
182
202
  puts "AdminUser with email and password '\#{_email_pass}' was created!"
203
+ puts "#################################################################################"
204
+ puts "#################################################################################"
183
205
  else
184
206
  puts 'Creating AdminUser error'
185
207
  end
@@ -187,6 +209,7 @@ inject_into_file 'app/models/user.rb', before: /^end/ do <<-TEXT
187
209
  puts 'AdminUsers are here already'
188
210
  end
189
211
  end
212
+
190
213
  def self.generate_first_manager_user
191
214
  if ::User.managers.all.count == 0
192
215
  _email_pass = 'manager@#{app_name.dasherize.downcase}.ru'
@@ -199,6 +222,7 @@ inject_into_file 'app/models/user.rb', before: /^end/ do <<-TEXT
199
222
  puts 'ManagerUsers are here already'
200
223
  end
201
224
  end
225
+
202
226
  rails_admin do
203
227
  list do
204
228
  field :email
@@ -211,6 +235,7 @@ inject_into_file 'app/models/user.rb', before: /^end/ do <<-TEXT
211
235
  end
212
236
  end
213
237
  end
238
+
214
239
  edit do
215
240
  group :login do
216
241
  active false
@@ -228,21 +253,25 @@ inject_into_file 'app/models/user.rb', before: /^end/ do <<-TEXT
228
253
  end
229
254
  end
230
255
  end
256
+
231
257
  group :roles do
232
258
  active false
233
259
  field :roles, :enum do
234
260
  enum do
235
261
  AVAILABLE_ROLES
236
262
  end
263
+
237
264
  multiple do
238
265
  true
239
266
  end
267
+
240
268
  visible do
241
269
  render_object = (bindings[:controller] || bindings[:view])
242
270
  render_object and render_object.current_user.admin?
243
271
  end
244
272
  end
245
273
  end
274
+
246
275
  group :password do
247
276
  active false
248
277
  field :password do
@@ -259,6 +288,7 @@ inject_into_file 'app/models/user.rb', before: /^end/ do <<-TEXT
259
288
  end
260
289
  end
261
290
  end
291
+
262
292
  end
263
293
  TEXT
264
294
  end
@@ -315,6 +345,7 @@ create_file '.gitignore' do <<-TEXT
315
345
  # git config --global core.excludesfile '~/.gitignore_global'
316
346
  .idea
317
347
  .idea/*
348
+
318
349
  /.bundle
319
350
  /log/*.log
320
351
  /tmp/*
@@ -333,7 +364,7 @@ git commit: %Q{ -m 'Initial commit' }
333
364
  end
334
365
 
335
366
  def mongoid
336
- defined? Mongoid
367
+ !!defined? Mongoid
337
368
  end
338
369
 
339
370
  def app_name
@@ -1,5 +1,5 @@
1
1
  #!/bin/sh
2
2
 
3
3
  PORT=3000
4
- echo 'server will by started at '$PORT
4
+ echo 'server will be started at '$PORT
5
5
  rails s -b 0.0.0.0 -p $PORT -e development
@@ -1,5 +1,5 @@
1
1
  #!/bin/sh
2
2
 
3
3
  PORT=4000
4
- echo 'server will by started at '$PORT
4
+ echo 'server will be started at '$PORT
5
5
  rails s -b 0.0.0.0 -p $PORT -e development
@@ -40,6 +40,16 @@ module Hancock
40
40
 
41
41
  action_unvisible_for(:custom_show_in_app, Proc.new { false })
42
42
  action_visible_for(:model_settings, Proc.new { false })
43
+
44
+ if defined?(RailsAdminNestedSet)
45
+ action_visible_for(:nested_set, Proc.new { false })
46
+ end
47
+
48
+ if defined?(RailsAdminMultipleFileUpload)
49
+ action_visible_for(:multiple_file_upload, Proc.new { false })
50
+ action_visible_for(:multiple_file_upload_collection, Proc.new { false })
51
+ end
52
+
43
53
  end
44
54
 
45
55
  def add_action(action_name)
@@ -81,7 +91,7 @@ module Hancock
81
91
  def actions_config(rails_admin_actions)
82
92
 
83
93
  @actions_list.each do |action|
84
- if rails_admin_actions.respond_to?(action)
94
+ if rails_admin_actions.respond_to?(action) and !RailsAdmin::Config::Actions.all.map { |a| a.class.name.demodulize.underscore }.include?(action.to_s)
85
95
  rails_admin_actions.send(action) do
86
96
  visible do
87
97
  if !bindings or bindings[:abstract_model].blank?
@@ -1,3 +1,3 @@
1
1
  module Hancock
2
- VERSION = "2.0.0.1".freeze
2
+ VERSION = "2.0.0.2".freeze
3
3
  end
data/lib/hancock_cms.rb CHANGED
@@ -76,7 +76,7 @@ module Hancock
76
76
  Hancock::MODELS << model unless Hancock::MODELS.include?(model)
77
77
  end
78
78
  def register_plugin(plugin)
79
- Hancock::PLUGINS << plugin unless Hancock::MODELS.include?(plugin)
79
+ Hancock::PLUGINS << plugin unless Hancock::PLUGINS.include?(plugin)
80
80
  end
81
81
 
82
82
  def clear_history_from_empty_objects
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hancock_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.1
4
+ version: 2.0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Kiseliev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-08 00:00:00.000000000 Z
11
+ date: 2016-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -307,6 +307,7 @@ files:
307
307
  - app/views/blocks/_favicon.html.slim
308
308
  - app/views/blocks/_footer.html.slim
309
309
  - app/views/blocks/_header.html.slim
310
+ - app/views/blocks/_preloader.html.slim
310
311
  - app/views/devise/passwords/edit.html.slim
311
312
  - app/views/devise/passwords/new.html.slim
312
313
  - app/views/devise/registrations/edit.html.slim
@@ -344,6 +345,7 @@ files:
344
345
  - app/views/shared/_admin_link.html.slim
345
346
  - app/views/shared/_messages.html.slim
346
347
  - config/initializers/hancock_cms.rb
348
+ - config/initializers/nested_set_patch.rb
347
349
  - config/initializers/simple_captcha.rb
348
350
  - config/locales/en.hancock.yml
349
351
  - config/locales/en.hancock_admin.yml
@@ -449,7 +451,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
449
451
  version: '0'
450
452
  requirements: []
451
453
  rubyforge_project:
452
- rubygems_version: 2.5.1
454
+ rubygems_version: 2.5.2
453
455
  signing_key:
454
456
  specification_version: 4
455
457
  summary: Please DO NOT use this gem directly, use hancock_cms_mongoid or hancock_cms_activerecord