hancock_cms 1.0.2.3 → 2.0.0

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.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-gemset +1 -1
  3. data/.ruby-version +1 -1
  4. data/README.md +9 -13
  5. data/app/assets/images/{hancock/rails_admin → rails-admin}/hancock_logo.svg +0 -0
  6. data/app/assets/javascripts/hancock/cms.coffee +1 -1
  7. data/app/assets/javascripts/hancock/rails_admin/cms.ui.coffee +38 -10
  8. data/app/assets/javascripts/jquery.placeholder.js +2 -3
  9. data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
  10. data/app/assets/stylesheets/hancock/cms/devise.sass +22 -36
  11. data/app/assets/stylesheets/hancock/rails_admin/cms.theming.sass +147 -364
  12. data/app/assets/stylesheets/rails_admin/custom/theming.sass +1 -1
  13. data/app/controllers/concerns/hancock/current_user.rb +1 -1
  14. data/app/controllers/concerns/hancock/decorators/home.rb +1 -1
  15. data/app/controllers/concerns/hancock/errors.rb +7 -6
  16. data/app/controllers/concerns/hancock/no_cache.rb +12 -0
  17. data/app/controllers/hancock/registrations_controller.rb +7 -2
  18. data/app/controllers/hancock/sessions_controller.rb +7 -3
  19. data/app/helpers/hancock/powered_helper.rb +3 -3
  20. data/app/models/concerns/hancock/boolean_field.rb +2 -7
  21. data/app/models/concerns/hancock/cacheable.rb +33 -0
  22. data/app/models/concerns/hancock/decorators/embedded_element.rb +9 -1
  23. data/app/models/concerns/hancock/enableable.rb +0 -1
  24. data/app/models/concerns/hancock/hash_field.rb +8 -9
  25. data/app/models/concerns/hancock/html_field.rb +3 -6
  26. data/app/models/concerns/hancock/mappable.rb +0 -1
  27. data/app/models/concerns/hancock/model_localizeable.rb +1 -4
  28. data/app/models/concerns/hancock/rails_admin_patch.rb +3 -22
  29. data/app/models/concerns/hancock/sort_field.rb +3 -26
  30. data/app/models/concerns/hancock/sortable.rb +0 -3
  31. data/app/views/blocks/_footer.html.slim +1 -1
  32. data/app/views/devise/passwords/edit.html.slim +2 -0
  33. data/app/views/devise/passwords/new.html.slim +2 -0
  34. data/app/views/devise/registrations/edit.html.slim +2 -0
  35. data/app/views/devise/registrations/new.html.slim +2 -0
  36. data/app/views/devise/sessions/new.html.slim +2 -0
  37. data/app/views/hancock/home/index.html.slim +1 -4
  38. data/app/views/layouts/application.html.slim +11 -20
  39. data/app/views/layouts/hancock/devise/confirmations.html.slim +4 -7
  40. data/app/views/layouts/hancock/devise/passwords.html.slim +4 -7
  41. data/app/views/layouts/hancock/devise/registrations.html.slim +4 -7
  42. data/app/views/layouts/hancock/devise/sessions.html.slim +4 -7
  43. data/app/views/layouts/hancock/devise/unlocks.html.slim +4 -7
  44. data/app/views/layouts/rails_admin/_footer.html.slim +2 -2
  45. data/app/views/layouts/rails_admin/_footer_navigation.html.slim +5 -21
  46. data/app/views/layouts/rails_admin/_navigation.html.slim +47 -13
  47. data/app/views/layouts/rails_admin/_secondary_navigation.html.slim +12 -5
  48. data/app/views/layouts/rails_admin/application.html.haml +39 -4
  49. data/app/views/rails_admin/main/_hancock_html.html.slim +2 -2
  50. data/app/views/rails_admin/main/_hancock_html_ml.html.slim +34 -31
  51. data/app/views/shared/_admin_link.html.slim +2 -4
  52. data/{app/models/concerns/hancock → config/initializers}/embedded_findable.rb +2 -2
  53. data/config/locales/en.hancock.yml +0 -1
  54. data/config/locales/ru.devise.yml +18 -22
  55. data/config/locales/ru.hancock.yml +5 -5
  56. data/config/locales/ru.rails_admin.yml +0 -3
  57. data/hancock_cms.gemspec +3 -6
  58. data/lib/filename_to_slug.rb +20 -0
  59. data/lib/generators/hancock/cms/ability_generator.rb +0 -1
  60. data/lib/generators/hancock/cms/admin_generator.rb +0 -1
  61. data/lib/generators/hancock/cms/application_generator.rb +0 -1
  62. data/lib/generators/hancock/cms/assets_generator.rb +0 -1
  63. data/lib/generators/hancock/cms/layout_generator.rb +0 -1
  64. data/lib/generators/hancock/cms/model_generator.rb +0 -1
  65. data/lib/generators/hancock/cms/models/templates/embedded_element.erb +2 -2
  66. data/lib/generators/hancock/cms/rack_generator.rb +0 -1
  67. data/lib/generators/hancock/cms/robots_generator.rb +0 -1
  68. data/lib/generators/hancock/cms/scripts_generator.rb +0 -1
  69. data/lib/generators/hancock/cms/templates/Gemfile.erb +4 -1
  70. data/lib/generators/hancock/cms/templates/ability.erb +1 -1
  71. data/lib/generators/hancock/cms/templates/admin.erb +6 -12
  72. data/lib/generators/hancock/cms/templates/assets/javascripts/application.coffee.erb +1 -1
  73. data/lib/generators/hancock/cms/templates/hancock_cms.erb +2 -4
  74. data/lib/generators/hancock/cms/templates/model.erb +6 -5
  75. data/lib/generators/hancock/cms/templates/robots.txt.erb +1 -5
  76. data/lib/generators/hancock/cms/templates/scripts/db_dump.sh.erb +1 -1
  77. data/lib/generators/hancock/cms/templates/scripts/server.sh +1 -1
  78. data/lib/generators/hancock/cms/templates/scripts/server_alt.sh +1 -1
  79. data/lib/generators/hancock/cms/unicorn_god_generator.rb +0 -1
  80. data/lib/generators/hancock/cms/utils.rb +0 -2
  81. data/lib/hancock/admin/embedded_element.rb +2 -10
  82. data/lib/hancock/admin.rb +21 -132
  83. data/lib/hancock/configuration.rb +2 -6
  84. data/lib/hancock/controller.rb +1 -10
  85. data/lib/hancock/engine.rb +34 -34
  86. data/lib/hancock/model.rb +5 -29
  87. data/lib/hancock/models/embedded_element.rb +0 -2
  88. data/lib/hancock/models/mongoid/embedded_element.rb +1 -20
  89. data/lib/hancock/plugin_configuration.rb +1 -1
  90. data/lib/hancock/rails_admin_ext/config.rb +14 -45
  91. data/lib/hancock/rails_admin_ext/hancock_hash.rb +1 -8
  92. data/lib/hancock/rails_admin_ext/hancock_html.rb +2 -17
  93. data/lib/hancock/rails_admin_ext/hancock_multiselect.rb +5 -1
  94. data/lib/hancock/rails_admin_ext/hancock_slugs.rb +6 -2
  95. data/lib/hancock/rails_admin_ext/patches/field_patch.rb +1 -2
  96. data/lib/hancock/rails_admin_ext/patches/group_patch.rb +0 -9
  97. data/lib/hancock/rails_admin_ext/patches/hancock_cms_group.rb +0 -2
  98. data/lib/hancock/version.rb +1 -1
  99. data/lib/hancock_cms.rb +13 -21
  100. data/lib/manual_slug/active_record.rb +8 -8
  101. data/lib/rails_admin/custom_show_in_app.rb +32 -21
  102. data/release.sh +1 -1
  103. data/template.rb +386 -37
  104. metadata +15 -88
  105. data/.gitattributes +0 -4
  106. data/app/assets/javascripts/hancock/rails_admin/en_ru_switcher.coffee +0 -90
  107. data/app/assets/javascripts/hancock/rails_admin/enum_with_custom.coffee +0 -41
  108. data/app/assets/javascripts/hancock/rails_admin/form_controls_fixed.coffee +0 -44
  109. data/app/assets/javascripts/hancock/rails_admin/leftside_hider.coffee +0 -106
  110. data/app/assets/javascripts/hancock/rails_admin/multiselect.coffee +0 -8
  111. data/app/assets/javascripts/hancock/rails_admin/navigation_dropdown.coffee +0 -25
  112. data/app/assets/javascripts/hancock/rails_admin/navigation_filter.coffee +0 -108
  113. data/app/assets/javascripts/hancock/rails_admin/navigation_scroll.coffee +0 -12
  114. data/app/assets/stylesheets/hancock/rails_admin/fieldsets.sass +0 -198
  115. data/app/helpers/hancock/settings_helper.rb +0 -44
  116. data/app/helpers/rails_admin/application/hancock_helper.rb +0 -19
  117. data/app/helpers/rails_admin/hancock/form_builder.rb +0 -44
  118. data/app/helpers/rails_admin/main/hancock_helper.rb +0 -27
  119. data/app/models/concerns/hancock/insertion_field.rb +0 -115
  120. data/app/views/blocks/_preloader.html.slim +0 -0
  121. data/app/views/layouts/rails_admin/_sidebar_navigation.html.slim +0 -2
  122. data/app/views/layouts/rails_admin/_sidebar_navigation_filter.html.slim +0 -3
  123. data/app/views/rails_admin/main/_enum_for_settings_kinds.html.slim +0 -24
  124. data/app/views/rails_admin/main/_form_hancock_enum.html.slim +0 -18
  125. data/app/views/rails_admin/main/_form_hancock_enum_with_custom.slim +0 -20
  126. data/app/views/rails_admin/main/edit.html.haml +0 -18
  127. data/app/views/rails_admin/main/new.html.haml +0 -17
  128. data/config/initializers/rails_admin_mongoid_patch.rb +0 -27
  129. data/lib/generators/hancock/cms/setup_generator.rb +0 -488
  130. data/lib/generators/hancock/cms/templates/assets/stylesheets/hancock/rails_admin/custom/theming.sass.erb +0 -0
  131. data/lib/hancock/rails_admin_ext/hancock_array.rb +0 -19
  132. data/lib/hancock/rails_admin_ext/hancock_enum.rb +0 -33
  133. data/lib/hancock/rails_admin_ext/hancock_enum_with_custom.rb +0 -34
  134. data/lib/hancock/rails_admin_ext/patches/fieldset_patch.rb +0 -14
  135. data/lib/hancock/rails_admin_ext/patches/has_fields.rb +0 -27
  136. data/lib/hancock/rails_admin_ext/patches/navigation_patch.rb +0 -25
  137. data/lib/hancock/rails_admin_settings_patch.rb +0 -216
data/template.rb CHANGED
@@ -2,12 +2,10 @@ rails_spec = (Gem.loaded_specs["railties"] || Gem.loaded_specs["rails"])
2
2
  version = rails_spec.version.to_s
3
3
 
4
4
  mongoid = options[:skip_active_record]
5
- actual_rails_version = "4.2.8"
6
- notsupported_rails_version = "5.x"
7
5
 
8
- if Gem::Version.new(version) < Gem::Version.new(actual_rails_version) or Gem::Version.new(version) >= Gem::Version.new(notsupported_rails_version)
6
+ if Gem::Version.new(version) < Gem::Version.new('5.0.0.1') or Gem::Version.new(version) >= Gem::Version.new('6.0.0')
9
7
  puts "You are using an incorrect version of Rails (#{version})"
10
- puts "Please update for #{actual_rails_version}"
8
+ puts "Please update for 5.0.0.1"
11
9
  puts "Stopping"
12
10
  exit 1
13
11
  end
@@ -22,32 +20,31 @@ remove_file 'Gemfile'
22
20
  create_file 'Gemfile' do <<-TEXT
23
21
  source 'https://rubygems.org'
24
22
 
25
- gem 'rails', '~> #{actual_rails_version}'#, '>= #{actual_rails_version}'
23
+ gem 'rails', '~> 5.0.0', '>= 5.0.0.1'
26
24
  #{if mongoid then "gem 'mongoid'" else "gem 'pg'" end}
27
25
 
28
26
  gem 'sass'
29
- gem 'sass-rails'
27
+ gem 'sass-rails', '~> 5.0'
30
28
  gem 'compass'
31
29
  gem 'compass-rails'
32
30
 
31
+ gem 'remotipart', github: 'mshibuya/remotipart'
32
+ gem 'rails_admin', '>= 1.0.0.rc'
33
+ # #{if mongoid then "gem 'hancock_cms_mongoid'" else "gem 'hancock_cms_activerecord'" end}, github: 'red-rocks/hancock_cms', branch: 'rails5'
34
+ #{if mongoid then "gem 'hancock_cms_mongoid'" else "gem 'hancock_cms_activerecord'" end}, path: "/home/ack/www/redrocks/hancock"
35
+
33
36
  # #{if mongoid then "gem 'glebtv-mongoid-paperclip'" else "gem 'paperclip'" end}
34
37
  # gem "image_optim"
35
38
  # gem "paperclip-optimizer"
36
39
  # gem 'ack-paperclip-meta', github: "red-rocks/paperclip-meta"
37
40
 
38
41
  # gem 'rails_admin_multiple_file_upload'
39
- gem 'rails_admin_user_abilities'#, '~> 0.1'
40
42
  # gem 'rails_admin_user_abilities', github: "red-rocks/rails_admin_user_abilities"
41
- gem 'rails_admin_model_settings'#, '~> 0.2'
42
43
  # gem 'rails_admin_model_settings', github: "red-rocks/rails_admin_model_settings"
43
44
 
44
- #{if mongoid then "gem 'hancock_cms_mongoid'" else "gem 'hancock_cms_activerecord'" end}, github: 'red-rocks/hancock_cms', branch: 'rails4'
45
- # #{if mongoid then "gem 'hancock_cms_mongoid'" else "gem 'hancock_cms_activerecord'" end}, path: "/home/ack/www/redrocks/hancock"
46
-
47
- # gem 'recaptcha', require: 'recaptcha/rails'
48
- # gem 'glebtv-simple_captcha'
45
+ gem 'devise'
49
46
 
50
- gem 'slim-rails', '3.1.1'
47
+ gem 'slim-rails'
51
48
  gem 'rs_russian'
52
49
  gem 'cancancan'
53
50
 
@@ -55,31 +52,27 @@ gem 'cancancan'
55
52
  gem 'unicorn'
56
53
  gem 'x-real-ip'
57
54
 
55
+ gem 'sentry-raven'
56
+
58
57
  group :development do
59
58
  gem 'better_errors'
60
59
  gem 'binding_of_caller'
61
60
  gem 'pry-rails'
62
- gem 'spring'
63
61
 
64
- # gem 'capistrano', require: false
65
- #
66
- # gem 'rvm1-capistrano3', require: false
67
- # gem 'glebtv-capistrano-unicorn', require: false
68
- # gem 'capistrano-bundler', require: false
69
- # gem 'capistrano-rails', require: false
70
-
71
- # gem 'hipchat'
72
- # gem 'coffee-rails-source-maps'
73
- # gem 'compass-rails-source-maps'
62
+ # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
63
+ gem 'web-console'
64
+ gem 'listen', '~> 3.0.5'
65
+ # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
66
+ gem 'spring'
67
+ gem 'spring-watcher-listen', '~> 2.0.0'
74
68
 
75
- gem 'ack_favicon_maker_rails', '~> 1.0.1'
76
- # gem 'ack_favicon_maker_rails', github: 'ack43/favicon_maker_rails'
69
+ gem 'ack_favicon_maker_rails', github: 'ack43/favicon_maker_rails'
77
70
 
78
71
  # gem 'rails_email_preview', '~> 1.0.3'
79
72
 
80
73
  gem 'image_optim_pack'
81
74
 
82
- gem 'puma'
75
+ gem 'puma', '~> 3.0'
83
76
  end
84
77
 
85
78
  group :test do
@@ -91,29 +84,40 @@ group :test do
91
84
  gem 'factory_girl_rails'
92
85
  end
93
86
 
94
- # #{if mongoid then "gem 'mongo_session_store-rails4'" else "gem 'activerecord-session_store'" end}
87
+ # #{if mongoid then "gem 'mongo_session_store-rails5'" else "gem 'activerecord-session_store'" end}
95
88
 
96
89
  gem 'slim'
97
90
  gem 'sprockets'
98
91
 
99
- gem 'uglifier'
92
+ gem 'coffee-rails', '~> 4.2'
93
+ gem 'uglifier', '>= 1.3.0'
94
+
95
+ # gem 'jbuilder', '~> 2.5'
96
+
97
+ group :development, :test do
98
+ # Call 'byebug' anywhere in the code to stop execution and get a debugger console
99
+ gem 'byebug', platform: :mri
100
+ end
101
+
102
+ gem 'glebtv_mongoid_userstamp', '0.7.0'
103
+
104
+ # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
105
+ gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
100
106
 
101
107
  group :production do
102
- # gem 'sentry-raven'
103
108
  gem "god"
104
109
  end
105
-
106
- gem 'glebtv_mongoid_userstamp', '0.6.2'
107
110
  TEXT
108
111
  end
109
112
 
110
- RVM_RUBY_VERSION = "2.3.3"
113
+ RVM_RUBY_VERSION = "2.4.0-preview1"
111
114
  create_file '.ruby-version', "#{RVM_RUBY_VERSION}\n"
112
115
  create_file '.ruby-gemset', "#{app_name.underscore}\n"
116
+ # run "rvm use #{RVM_RUBY_VERSION} && rvm gemset create #{app_name}"
117
+ # run "rvm use #{RVM_RUBY_VERSION}@#{app_name} && gem install bundler"
118
+ # run "rvm gemset list"
119
+ run 'bundle install --without production'
113
120
 
114
- run "rvm #{RVM_RUBY_VERSION} do rvm gemset create #{app_name.underscore}"
115
- run "rvm #{RVM_RUBY_VERSION}@#{app_name.underscore} do gem install bundler"
116
- run "rvm #{RVM_RUBY_VERSION}@#{app_name.underscore} do bundle install --without production"
117
121
 
118
122
  ####### CONFIG #######
119
123
 
@@ -188,6 +192,8 @@ require "active_model/railtie"
188
192
  #{'#' if mongoid}require "active_record/railtie"
189
193
  require "action_controller/railtie"
190
194
  # require "action_mailer/railtie" # mailer is off by default
195
+ # require "active_job/railtie"
196
+ # require "action_cable/engine"
191
197
  require "action_mailer/railtie"
192
198
  require "action_view/railtie"
193
199
  require "sprockets/railtie"
@@ -226,3 +232,346 @@ module #{app_name.underscore.camelcase}
226
232
  end
227
233
  TEXT
228
234
  end
235
+
236
+
237
+ ####### DEVISE #######
238
+
239
+ generate "devise:install"
240
+ gsub_file 'config/initializers/devise.rb', "'please-change-me-at-config-initializers-devise@example.com'", "'noreply@#{app_name.dasherize.downcase}.ru'"
241
+ inject_into_file 'config/initializers/devise.rb', after: /^end/ do <<-TEXT
242
+ Rails.application.config.to_prepare do
243
+ Devise::SessionsController.layout "hancock/devise/sessions"
244
+ Devise::RegistrationsController.layout "hancock/devise/registrations"
245
+ Devise::ConfirmationsController.layout "hancock/devise/confirmations"
246
+ Devise::UnlocksController.layout "hancock/devise/unlocks"
247
+ Devise::PasswordsController.layout "hancock/devise/passwords"
248
+ end
249
+ TEXT
250
+ end
251
+
252
+ generate "devise", "User"
253
+
254
+
255
+ ####### ROUTES #######
256
+
257
+ remove_file 'config/routes.rb'
258
+ create_file 'config/routes.rb' do <<-TEXT
259
+ Rails.application.routes.draw do
260
+ devise_for :users, controllers: {sessions: 'hancock/sessions'}
261
+
262
+ mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
263
+ mount Ckeditor::Engine => '/ckeditor'
264
+
265
+ hancock_cms_routes
266
+ end
267
+ TEXT
268
+ end
269
+
270
+
271
+ ####### INITIALIZERS #######
272
+
273
+ inject_into_file 'config/initializers/assets.rb', before: /\z/ do <<-TEXT
274
+ Rails.application.config.assets.precompile += %w( *.svg )
275
+ Rails.application.config.assets.precompile += %w( ckeditor/* )
276
+ Rails.application.config.assets.precompile += %w( codemirror.js codemirror.css codemirror/**/* )
277
+ TEXT
278
+ end
279
+
280
+ gsub_file 'config/initializers/backtrace_silencers.rb',
281
+ "# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }",
282
+ "Rails.backtrace_cleaner.add_silencer { |line| line =~ /lib\\/(haml|slim|sass|scss|coffee|compass)/ }"
283
+
284
+ if mongoid
285
+ generate "ckeditor:install", "--orm=mongoid", "--backend=paperclip"
286
+ else
287
+ generate "ckeditor:install", "--orm=active_record", "--backend=paperclip"
288
+ end
289
+ gsub_file 'config/initializers/ckeditor.rb', "# config.image_file_types = %w(jpg jpeg png gif tiff)", "config.image_file_types = %w(jpg jpeg png gif tiff svg)"
290
+ gsub_file 'config/initializers/ckeditor.rb', "# config.authorize_with :cancan", "config.authorize_with :cancancan"
291
+ gsub_file 'config/initializers/ckeditor.rb', "# config.assets_languages = ['en', 'uk']", "config.assets_languages = ['en', 'ru']"
292
+
293
+ if mongoid
294
+ remove_file 'config/initializers/cookies_serializer.rb'
295
+ create_file 'config/initializers/cookies_serializer.rb' do <<-TEXT
296
+ # Be sure to restart your server when you modify this file.
297
+ # json serializer breaks Devise + Mongoid. DO NOT ENABLE
298
+ # See https://github.com/plataformatec/devise/pull/2882
299
+ # Rails.application.config.action_dispatch.cookies_serializer = :json
300
+ Rails.application.config.action_dispatch.cookies_serializer = :marshal
301
+ TEXT
302
+ end
303
+ end
304
+
305
+ gsub_file 'config/initializers/filter_parameter_logging.rb', "[:password]", "[:password, :password_confirmation]"
306
+
307
+ # generate 'paperclip_optimizer:install'
308
+ # remove_file 'config/initializers/paperclip_optimizer.rb'
309
+ # generate "hancock:cms:paperclip_optimizer"
310
+
311
+ # generate 'rails_email_preview:install'
312
+ # remove_file 'app/mailer_previews/contact_mailer_preview.rb'
313
+ # create_file 'app/mailer_previews/contact_mailer_preview.rb' do <<-TEXT
314
+ # class ContactMailerPreview
315
+ # def new_message_email
316
+ # Hancock::Feedback::ContactMailer.new_message_email(Hancock::Feedback::ContactMessage.all.to_a.sample)
317
+ # end
318
+ # end
319
+ # TEXT
320
+ # end
321
+
322
+ generate "hancock:cms:config"
323
+
324
+ generate "hancock:cms:rack"
325
+
326
+ generate "hancock:cms:admin"
327
+
328
+ remove_file 'config/initializers/session_store.rb'
329
+ if mongoid
330
+ create_file 'config/initializers/session_store.rb' do <<-TEXT
331
+ # Be sure to restart your server when you modify this file.
332
+
333
+ #Rails.application.config.session_store :cookie_store, key: '_#{app_name.tableize.singularize}_session'
334
+ Rails.application.config.session_store :mongoid_store
335
+ TEXT
336
+ end
337
+ else
338
+ generate 'active_record_store:session_migration'
339
+ create_file 'config/initializers/session_store.rb' do <<-TEXT
340
+ # Be sure to restart your server when you modify this file.
341
+
342
+ #Rails.application.config.session_store :cookie_store, key: '_#{app_name.tableize.singularize}_session'
343
+ Rails.application.config.session_store :active_record_store
344
+ TEXT
345
+ end
346
+ end
347
+
348
+ # unless mongoid
349
+ # generate 'simple_captcha'
350
+ # end
351
+
352
+ generate "simple_form:install"
353
+
354
+
355
+ ####### CONTROLLERS #######
356
+
357
+ remove_file 'app/controllers/application_controller.rb'
358
+ create_file 'app/controllers/application_controller.rb' do <<-TEXT
359
+ class ApplicationController < ActionController::Base
360
+ include Hancock::Controller
361
+ end
362
+ TEXT
363
+ end
364
+
365
+
366
+ ####### MODELS #######
367
+
368
+ generate "hancock:cms:ability"
369
+
370
+ gsub_file 'app/models/user.rb', '# :confirmable, :lockable, :timeoutable and :omniauthable' do <<-TEXT
371
+ include Hancock::Model
372
+ include Hancock::Enableable
373
+ include Hancock::RailsAdminPatch
374
+ def self.manager_can_default_actions
375
+ [:show, :read]
376
+ end
377
+ def manager_cannot_actions
378
+ [:new, :create, :delete, :destroy]
379
+ end
380
+
381
+ cattr_accessor :current_user
382
+
383
+ # Include default devise modules. Others available are:
384
+ # :confirmable, :lockable, :timeoutable and :omniauthable
385
+ TEXT
386
+ end
387
+
388
+ gsub_file 'app/models/user.rb', ':registerable,', ' :lockable,'
389
+ if mongoid
390
+ gsub_file 'app/models/user.rb', '# field :failed_attempts', 'field :failed_attempts'
391
+ gsub_file 'app/models/user.rb', '# field :unlock_token', 'field :unlock_token'
392
+ gsub_file 'app/models/user.rb', '# field :locked_at', 'field :locked_at'
393
+
394
+ inject_into_file 'app/models/user.rb', before: /^end/ do <<-TEXT
395
+
396
+ field :name, type: String
397
+ field :login, type: String
398
+ field :roles, type: Array, default: []
399
+
400
+ before_save do
401
+ self.roles ||= []
402
+ self.roles.reject! { |r| r.blank? }
403
+ end
404
+
405
+ AVAILABLE_ROLES = ["admin", "manager", "client"]
406
+
407
+ AVAILABLE_ROLES.each do |r|
408
+ class_eval <<-EVAL
409
+ def \#{r}?
410
+ self.roles and self.roles.include?("\#{r}")
411
+ end
412
+
413
+ scope :\#{r.pluralize}, -> { any_in(roles: "\#{r}") }
414
+ EVAL
415
+ end
416
+
417
+ def self.generate_first_admin_user
418
+ if ::User.admins.all.count == 0
419
+ _email_pass = 'admin@#{app_name.dasherize.downcase}.ru'
420
+ if ::User.new(roles: ["admin"], email: _email_pass, password: _email_pass, password_confirmation: _email_pass).save
421
+ puts "AdminUser with email and password '\#{_email_pass}' was created!"
422
+ else
423
+ puts 'Creating AdminUser error'
424
+ end
425
+ else
426
+ puts 'AdminUsers are here already'
427
+ end
428
+ end
429
+
430
+ def self.generate_first_manager_user
431
+ if ::User.managers.all.count == 0
432
+ _email_pass = 'manager@#{app_name.dasherize.downcase}.ru'
433
+ if ::User.create(roles: ["manager"], email: _email_pass, password: _email_pass, password_confirmation: _email_pass)
434
+ puts "ManagerUser with email and password '\#{_email_pass}' was created!"
435
+ else
436
+ puts 'Creating ManagerUser error'
437
+ end
438
+ else
439
+ puts 'ManagerUsers are here already'
440
+ end
441
+ end
442
+
443
+ rails_admin do
444
+ list do
445
+ field :email
446
+ field :name
447
+ field :login
448
+ field :roles do
449
+ pretty_value do
450
+ render_object = (bindings[:controller] || bindings[:view])
451
+ render_object.content_tag(:p, bindings[:object].roles.join(", ")) if render_object
452
+ end
453
+ end
454
+ end
455
+
456
+ edit do
457
+ group :login do
458
+ active false
459
+ field :email, :string do
460
+ visible do
461
+ render_object = (bindings[:controller] || bindings[:view])
462
+ render_object and (render_object.current_user.admin? or (render_object.current_user.manager? and render_object.current_user == bindings[:object]))
463
+ end
464
+ end
465
+ field :name, :string
466
+ field :login, :string do
467
+ visible do
468
+ render_object = (bindings[:controller] || bindings[:view])
469
+ render_object and render_object.current_user.admin?
470
+ end
471
+ end
472
+ end
473
+
474
+ group :roles do
475
+ active false
476
+ field :roles, :enum do
477
+ enum do
478
+ AVAILABLE_ROLES
479
+ end
480
+
481
+ multiple do
482
+ true
483
+ end
484
+
485
+ visible do
486
+ render_object = (bindings[:controller] || bindings[:view])
487
+ render_object and render_object.current_user.admin?
488
+ end
489
+ end
490
+ end
491
+
492
+ group :password do
493
+ active false
494
+ field :password do
495
+ visible do
496
+ render_object = (bindings[:controller] || bindings[:view])
497
+ render_object and (render_object.current_user.admin? or render_object.current_user == bindings[:object])
498
+ end
499
+ end
500
+ field :password_confirmation do
501
+ visible do
502
+ render_object = (bindings[:controller] || bindings[:view])
503
+ render_object and (render_object.current_user.admin? or render_object.current_user == bindings[:object])
504
+ end
505
+ end
506
+ end
507
+ end
508
+
509
+ end
510
+ TEXT
511
+ end
512
+ end
513
+
514
+
515
+ ###### HANCOCK OTHERS ######
516
+
517
+ unless mongoid
518
+ generate "hancock:cms:migration"
519
+ generate "rails_admin_settings:migration"
520
+ end
521
+
522
+ remove_file 'app/views/layouts/application.html.erb'
523
+ generate "hancock:cms:layout"
524
+
525
+ unless mongoid
526
+ rake "db:migrate"
527
+ end
528
+
529
+ remove_file 'app/assets/stylesheets/application.css'
530
+ remove_file 'app/assets/javascripts/application.js'
531
+ generate "hancock:cms:assets", app_name
532
+
533
+ remove_file 'public/robots.txt'
534
+ generate "hancock:cms:robots", app_name
535
+
536
+ #god+unicorn
537
+ generate "hancock:cms:unicorn_god", app_name
538
+ #scripts
539
+ generate "hancock:cms:scripts", app_name
540
+
541
+ FileUtils.cp(Pathname.new(destination_root).join('config', 'secrets.yml').to_s, Pathname.new(destination_root).join('config', 'secrets.yml.example').to_s)
542
+
543
+ unless mongoid
544
+ generate "paper_trail:install"
545
+ generate "friendly_id"
546
+ rake "db:migrate"
547
+ end
548
+
549
+ generate "rspec:install"
550
+
551
+
552
+ ####### GIT #######
553
+
554
+ remove_file '.gitignore'
555
+ create_file '.gitignore' do <<-TEXT
556
+ # See https://help.github.com/articles/ignoring-files for more about ignoring files.
557
+ #
558
+ # If you find yourself ignoring temporary files generated by your text editor
559
+ # or operating system, you probably want to add a global ignore instead:
560
+ # git config --global core.excludesfile '~/.gitignore_global'
561
+ .idea
562
+ .idea/*
563
+
564
+ /.bundle
565
+ /log/*.log
566
+ /tmp/*
567
+ /public/assets
568
+ /public/ckeditor_assets
569
+ Gemfile.lock
570
+ TEXT
571
+ end
572
+
573
+ create_file 'extra/.gitkeep', ''
574
+
575
+ git :init
576
+ git add: "."
577
+ git commit: %Q{ -m 'Initial commit' }