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
@@ -1,17 +0,0 @@
1
- :ruby
2
- opts = {
3
- builder: (defined?(RailsAdmin::Hancock::FormBuilder) ? RailsAdmin::Hancock::FormBuilder : RailsAdmin::FormBuilder),
4
- url: new_path(model_name: @abstract_model.to_param),
5
- as: @abstract_model.param_key,
6
- html: {
7
- multipart: true,
8
- class: "form-horizontal denser",
9
- data: {
10
- title: @page_name
11
- }
12
- }
13
- }
14
- = rails_admin_form_for @object, opts do |form|
15
- = form.generate action: :create
16
- / = hancock_rails_admin_form_for @object, opts do |form|
17
- / = form.generate action: :create
@@ -1,27 +0,0 @@
1
- require 'rails_admin/adapters/mongoid'
2
- module RailsAdmin
3
- module Adapters
4
- module Mongoid
5
-
6
- def sort_by(options, scope)
7
- return scope unless options[:sort]
8
-
9
- case options[:sort]
10
- when String
11
- field_name, collection_name = options[:sort].split('.').reverse
12
- # if collection_name && collection_name != table_name
13
- # raise('sorting by associated model column is not supported in Non-Relational databases')
14
- # end
15
- when Symbol
16
- field_name = options[:sort].to_s
17
- end
18
- if options[:sort_reverse]
19
- scope.asc field_name
20
- else
21
- scope.desc field_name
22
- end
23
- end
24
-
25
- end
26
- end
27
- end
@@ -1,488 +0,0 @@
1
- require 'rails/generators'
2
- # require "rails/generators/rails/app/app_generator"
3
-
4
- module Hancock::Cms
5
- class SetupGenerator < Rails::Generators::Base
6
-
7
- desc 'Hancock CMS Carcass generator'
8
- def install
9
-
10
- def ask_with_timeout(question, timeout = 5)
11
- ask(question)
12
- # # temp
13
- # begin
14
- # Timeout::timeout(timeout) {
15
- # ask("#{question} | U have only #{timeout} second(s)!")
16
- # }
17
- # rescue
18
- # puts ""
19
- # ""
20
- # end
21
- end
22
-
23
- ####### DEVISE #######
24
-
25
- generate "devise:install" if ["yes", "y"].include?(ask_with_timeout("generate `devise:install`?(y or yes)").downcase.strip)
26
- gsub_file 'config/initializers/devise.rb', "'please-change-me-at-config-initializers-devise@example.com'", "'noreply@#{app_name.dasherize.downcase}.ru'"
27
-
28
- if ["yes", "y"].include?(ask_with_timeout("Set Hancock's layout for devise? (y or yes)").downcase.strip)
29
- _sessions_layout = Devise::SessionsController._layout == "hancock/devise/sessions"
30
- _registration_layout = Devise::RegistrationsController._layout == "hancock/devise/registrations"
31
- _confirmations_layout = Devise::ConfirmationsController._layout == "hancock/devise/confirmations"
32
- _unlocks_layout = Devise::UnlocksController._layout == "hancock/devise/unlocks"
33
- _passwords_layout = Devise::PasswordsController._layout == "hancock/devise/passwords"
34
- if !_sessions_layout or !_registration_layout or !_confirmations_layout or !_unlocks_layout or !_passwords_layout
35
- inject_into_file 'config/initializers/devise.rb', after: /^end/ do <<-TEXT
36
-
37
- Rails.application.config.to_prepare do
38
- #{'Devise::SessionsController.layout "hancock/devise/sessions"' unless _sessions_layout }
39
- #{'Devise::RegistrationsController.layout "hancock/devise/registrations"' unless _registration_layout }
40
- #{'Devise::ConfirmationsController.layout "hancock/devise/confirmations"' unless _confirmations_layout }
41
- #{'Devise::UnlocksController.layout "hancock/devise/unlocks"' unless _unlocks_layout }
42
- #{'Devise::PasswordsController.layout "hancock/devise/passwords"' unless _passwords_layout }
43
- end
44
- TEXT
45
- end
46
- end
47
- end
48
- generate "devise", "User", "--routes=false" if ["yes", "y"].include?(ask_with_timeout("generate `devise User --routes=false`?(y or yes)").downcase.strip)
49
-
50
-
51
- ####### ROUTES #######
52
-
53
-
54
- if ["yes", "y"].include?(ask_with_timeout("Set Hancock's routes? (y or yes)").downcase.strip)
55
- remove_file 'config/routes.rb'
56
- create_file 'config/routes.rb' do <<-TEXT
57
- Rails.application.routes.draw do
58
- devise_for :users, controllers: {sessions: 'hancock/sessions'}
59
- mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
60
- hancock_cms_routes
61
- end
62
- TEXT
63
- end
64
- end
65
-
66
-
67
- ####### INITIALIZERS #######
68
-
69
- add_assets_precompiled = ["*.svg", 'ckeditor/*', 'codemirror.js', 'codemirror.css', 'codemirror/**/*']
70
- if (Rails.application.config.assets.precompile & add_assets_precompiled).length < add_assets_precompiled.length
71
- inject_into_file 'config/initializers/assets.rb', before: /\z/ do <<-TEXT
72
- Rails.application.config.assets.precompile += %w( *.svg )
73
- Rails.application.config.assets.precompile += %w( ckeditor/* )
74
- Rails.application.config.assets.precompile += %w( codemirror.js codemirror.css codemirror/**/* )
75
- TEXT
76
- end
77
- end
78
-
79
-
80
- if mongoid
81
- if defined?(Paperclip)
82
- generate "ckeditor:install", "--orm=mongoid", "--backend=paperclip" if ["yes", "y"].include?(ask_with_timeout("generate `ckeditor:install --orm=mongoid --backend=paperclip`?(y or yes)").downcase.strip)
83
- require 'ckeditor/orm/mongoid'
84
- require Rails.root.join("app", "models", "ckeditor", "asset.rb")
85
- if defined?(Ckeditor::Asset)
86
- unless Ckeditor::Asset < Hancock::Model
87
- inject_into_file 'app/models/ckeditor/asset.rb', before: /^end/ do <<-TEXT
88
- include Hancock::Model
89
- TEXT
90
- end
91
- end
92
- end
93
- if ["yes", "y"].include?(ask_with_timeout("Set Hancock's config for Ckeditor::Picture? (y or yes)").downcase.strip)
94
- remove_file 'app/models/ckeditor/picture.rb'
95
- create_file 'app/models/ckeditor/picture.rb' do <<-TEXT
96
- class Ckeditor::Picture < Ckeditor::Asset
97
- # has_mongoid_attached_file :data,
98
- # url: '/ckeditor_assets/pictures/:id/:style_:basename.:extension',
99
- # path: ':rails_root/public/ckeditor_assets/pictures/:id/:style_:basename.:extension',
100
- # styles: { content: '800>', thumb: '118x100#' }
101
-
102
- include Hancock::Gallery::Paperclipable
103
- hancock_cms_attached_file :data,
104
- url: '/ckeditor_assets/pictures/:id/:style/:basename.:extension',
105
- path: ':rails_root/public/ckeditor_assets/pictures/:id/:style/:basename.:extension'
106
- def data_styles
107
- if data_svg?
108
- {}
109
- else
110
- { content: '800>', thumb: '118x100#' }
111
- end
112
- end
113
-
114
- validates_attachment_size :data, less_than: 2.megabytes
115
- validates_attachment_presence :data
116
- validates_attachment_content_type :data, content_type: /\\Aimage/
117
-
118
- def url_content
119
- # url(:content)
120
- if data_svg?
121
- url
122
- else
123
- url(:content)
124
- end
125
- end
126
-
127
- def url_thumb
128
- # url(:thumb)
129
- if data_svg?
130
- url
131
- else
132
- url(:thumb)
133
- end
134
- end
135
- end
136
- TEXT
137
- end
138
- end
139
- end
140
-
141
- else
142
- if defined?(Paperclip)
143
- generate "ckeditor:install", "--orm=active_record", "--backend=paperclip" if ["yes", "y"].include?(ask_with_timeout("generate `ckeditor:install --orm=active_record --backend=paperclip`?(y or yes)").downcase.strip)
144
- end
145
- end
146
- if File.exists?(Rails.root.join 'config/initializers/ckeditor.rb')
147
- 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)"
148
- gsub_file 'config/initializers/ckeditor.rb', "# config.authorize_with :cancan", "# config.authorize_with :cancancan"
149
- gsub_file 'config/initializers/ckeditor.rb', "# config.assets_languages = ['en', 'uk']", "config.assets_languages = ['en', 'ru']"
150
- end
151
-
152
- if mongoid and ["yes", "y"].include?(ask_with_timeout("Set Hancock's config for cookies_serializer? (y or yes)").downcase.strip)
153
- remove_file 'config/initializers/cookies_serializer.rb'
154
- create_file 'config/initializers/cookies_serializer.rb' do <<-TEXT
155
- # Be sure to restart your server when you modify this file.
156
- # json serializer breaks Devise + Mongoid. DO NOT ENABLE
157
- # See https://github.com/plataformatec/devise/pull/2882
158
- # Rails.application.config.action_dispatch.cookies_serializer = :json
159
- Rails.application.config.action_dispatch.cookies_serializer = :marshal
160
- TEXT
161
- end
162
- end
163
-
164
- gsub_file 'config/initializers/filter_parameter_logging.rb', "[:password]", "[:password, :password_confirmation]"
165
-
166
- # generate 'paperclip_optimizer:install'
167
- # remove_file 'config/initializers/paperclip_optimizer.rb'
168
- generate "hancock:cms:paperclip_optimizer" if ["yes", "y"].include?(ask_with_timeout("generate `hancock:cms:paperclip_optimizer`? (y or yes)").downcase.strip)
169
-
170
- # generate 'rails_email_preview:install'
171
- # remove_file 'app/mailer_previews/contact_mailer_preview.rb'
172
- # create_file 'app/mailer_previews/contact_mailer_preview.rb' do <<-TEXT
173
- # class ContactMailerPreview
174
- # def new_message_email
175
- # Hancock::Feedback::ContactMailer.new_message_email(Hancock::Feedback::ContactMessage.all.to_a.sample)
176
- # end
177
- # end
178
- # TEXT
179
- # end
180
-
181
- generate "hancock:cms:config" if ["yes", "y"].include?(ask_with_timeout("generate `hancock:cms:config`? (y or yes)").downcase.strip)
182
-
183
- generate "hancock:cms:rack" if ["yes", "y"].include?(ask_with_timeout("generate `hancock:cms:rack`? (y or yes)").downcase.strip)
184
-
185
- generate "hancock:cms:admin" if ["yes", "y"].include?(ask_with_timeout("generate `hancock:cms:admin`? (y or yes)").downcase.strip)
186
-
187
- if ["yes", "y"].include?(ask_with_timeout("Set Hancock's config for session_store? (y or yes)").downcase.strip)
188
- remove_file 'config/initializers/session_store.rb'
189
- if mongoid
190
- create_file 'config/initializers/session_store.rb' do <<-TEXT
191
- # Be sure to restart your server when you modify this file.
192
-
193
- #Rails.application.config.session_store :cookie_store, key: '_#{app_name.tableize.singularize}_session'
194
- Rails.application.config.session_store :mongoid_store
195
- TEXT
196
- end
197
- else
198
- generate 'active_record_store:session_migration'
199
- create_file 'config/initializers/session_store.rb' do <<-TEXT
200
- # Be sure to restart your server when you modify this file.
201
-
202
- #Rails.application.config.session_store :cookie_store, key: '_#{app_name.tableize.singularize}_session'
203
- Rails.application.config.session_store :active_record_store
204
- TEXT
205
- end
206
- end
207
- end
208
-
209
- # unless mongoid
210
- # generate 'simple_captcha'
211
- # end
212
-
213
- generate "simple_form:install" if ["yes", "y"].include?(ask_with_timeout("generate `simple_form:install`? (y or yes)").downcase.strip)
214
-
215
-
216
-
217
- ####### CONTROLLERS #######
218
-
219
-
220
- unless ApplicationController < Hancock::Controller
221
- remove_file 'app/controllers/application_controller.rb'
222
- create_file 'app/controllers/application_controller.rb' do <<-TEXT
223
- class ApplicationController < ActionController::Base
224
- include Hancock::Controller
225
- end
226
- TEXT
227
- end
228
- end
229
-
230
-
231
- ####### MODELS #######
232
-
233
- generate "hancock:cms:ability" if ["yes", "y"].include?(ask_with_timeout("generate `hancock:cms:ability`? (y or yes)").downcase.strip)
234
-
235
- gsub_user_rb = begin
236
- (User < Hancock::Model).nil?
237
- rescue
238
- true
239
- end
240
- if gsub_user_rb
241
- gsub_file 'app/models/user.rb', '# :confirmable, :lockable, :timeoutable and :omniauthable' do <<-TEXT
242
- include Hancock::Model
243
- include Hancock::Enableable
244
- include Hancock::RailsAdminPatch
245
- def self.manager_can_default_actions
246
- [:show, :read]
247
- end
248
- def self.manager_cannot_actions
249
- [:new, :create, :delete, :destroy]
250
- end
251
-
252
- ######################### RailsAdminUserAbilities #########################
253
- # def self.rails_admin_user_defined_visible_actions
254
- # [:user_abilities]
255
- # end
256
- # has_one :ability, class_name: "RailsAdminUserAbilities::UserAbility", as: :rails_admin_user_abilitable
257
- # scope :for_rails_admin, -> { where(:roles.in => ['admin', 'manager']) } # could be any you want, just need to
258
- ###########################################################################
259
-
260
- cattr_accessor :current_user
261
-
262
- # Include default devise modules. Others available are:
263
- # :confirmable, :lockable, :timeoutable and :omniauthable
264
- TEXT
265
- end
266
-
267
- if ["yes", "y"].include?(ask_with_timeout("Set Hancock's User model? (y or yes)").downcase.strip)
268
- gsub_file 'app/models/user.rb', ':registerable,', ' :lockable,'
269
- if mongoid
270
- gsub_file 'app/models/user.rb', '# field :failed_attempts', 'field :failed_attempts'
271
- gsub_file 'app/models/user.rb', '# field :unlock_token', 'field :unlock_token'
272
- gsub_file 'app/models/user.rb', '# field :locked_at', 'field :locked_at'
273
-
274
- inject_into_file 'app/models/user.rb', before: /^end/ do <<-TEXT
275
-
276
- field :name, type: String
277
- field :login, type: String
278
- field :roles, type: Array, default: []
279
-
280
- before_save do
281
- self.roles ||= []
282
- self.roles.reject! { |r| r.blank? }
283
- end
284
-
285
- AVAILABLE_ROLES = ["admin", "manager", "client"].freeze
286
-
287
- AVAILABLE_ROLES.each do |r|
288
- class_eval <<-RUBY
289
- def \#{r}?
290
- self.roles and self.roles.include?("\#{r}")
291
- end
292
-
293
- scope :\#{r.pluralize}, -> { any_in(roles: "\#{r}") }
294
- RUBY
295
- end
296
-
297
- def self.generate_first_admin_user
298
- if ::User.admins.all.count == 0
299
- _email_pass = 'admin@#{app_name.dasherize.downcase}.ru'
300
- if ::User.new(roles: ["admin"], email: _email_pass, password: _email_pass, password_confirmation: _email_pass).save
301
- puts "#################################################################################"
302
- puts "#################################################################################"
303
- puts "AdminUser with email and password '\#{_email_pass}' was created!"
304
- puts "#################################################################################"
305
- puts "#################################################################################"
306
- else
307
- puts 'Creating AdminUser error'
308
- end
309
- else
310
- puts 'AdminUsers are here already'
311
- end
312
- end
313
-
314
- def self.generate_first_manager_user
315
- if ::User.managers.all.count == 0
316
- _email_pass = 'manager@#{app_name.dasherize.downcase}.ru'
317
- if ::User.create(roles: ["manager"], email: _email_pass, password: _email_pass, password_confirmation: _email_pass)
318
- puts "ManagerUser with email and password '\#{_email_pass}' was created!"
319
- else
320
- puts 'Creating ManagerUser error'
321
- end
322
- else
323
- puts 'ManagerUsers are here already'
324
- end
325
- end
326
-
327
- rails_admin do
328
- navigation_icon 'icon-user'
329
- list do
330
- field :email
331
- field :name
332
- field :login
333
- field :roles do
334
- pretty_value do
335
- render_object = (bindings[:controller] || bindings[:view])
336
- render_object.content_tag(:p, bindings[:object].roles.join(", ")) if render_object
337
- end
338
- end
339
- end
340
-
341
- edit do
342
- group :login do
343
- active false
344
- field :email, :string do
345
- visible do
346
- render_object = (bindings[:controller] || bindings[:view])
347
- render_object and (render_object.current_user.admin? or (render_object.current_user.manager? and render_object.current_user == bindings[:object]))
348
- end
349
- end
350
- field :name, :string
351
- field :login, :string do
352
- visible do
353
- render_object = (bindings[:controller] || bindings[:view])
354
- render_object and render_object.current_user.admin?
355
- end
356
- end
357
- end
358
-
359
- group :roles do
360
- active false
361
- field :roles, :hancock_enum do
362
- enum do
363
- ::User::AVAILABLE_ROLES
364
- end
365
-
366
- multiple do
367
- true
368
- end
369
-
370
- visible do
371
- render_object = (bindings[:controller] || bindings[:view])
372
- render_object and render_object.current_user.admin?
373
- end
374
- end
375
- end
376
-
377
- group :password do
378
- active false
379
- field :password do
380
- visible do
381
- render_object = (bindings[:controller] || bindings[:view])
382
- render_object and (render_object.current_user.admin? or render_object.current_user == bindings[:object])
383
- end
384
- end
385
- field :password_confirmation do
386
- visible do
387
- render_object = (bindings[:controller] || bindings[:view])
388
- render_object and (render_object.current_user.admin? or render_object.current_user == bindings[:object])
389
- end
390
- end
391
- end
392
- end
393
-
394
- end
395
- TEXT
396
- end
397
- end
398
- end
399
- end
400
-
401
-
402
- ###### HANCOCK OTHERS ######
403
-
404
- unless mongoid
405
- generate "hancock:cms:migration"
406
- generate "rails_admin_settings:migration"
407
- end
408
-
409
- if ["yes", "y"].include?(ask_with_timeout("Set Hancock's layout? (y or yes)").downcase.strip)
410
- remove_file 'app/views/layouts/application.html.erb'
411
- generate "hancock:cms:layout"
412
- end
413
-
414
- run 'rails r "User.generate_first_admin_user"'
415
-
416
- if ["yes", "y"].include?(ask_with_timeout("Set Hancock's assets? (y or yes)").downcase.strip)
417
- remove_file 'app/assets/stylesheets/application.css'
418
- remove_file 'app/assets/javascripts/application.js'
419
- generate "hancock:cms:assets", app_name
420
- end
421
-
422
- if ["yes", "y"].include?(ask_with_timeout("Set Hancock's robots.txt? (y or yes)").downcase.strip)
423
- remove_file 'public/robots.txt'
424
- generate "hancock:cms:robots", app_name
425
- end
426
-
427
- if ["yes", "y"].include?(ask_with_timeout("Set Hancock's unicorn config? (y or yes)").downcase.strip)
428
- #god+unicorn
429
- generate "hancock:cms:unicorn_god", app_name
430
- end
431
- if ["yes", "y"].include?(ask_with_timeout("Set Hancock's scripts? (y or yes)").downcase.strip)
432
- #scripts
433
- generate "hancock:cms:scripts", app_name
434
- end
435
-
436
- FileUtils.cp(Pathname.new(destination_root).join('config', 'secrets.yml').to_s, Pathname.new(destination_root).join('config', 'secrets.yml.example').to_s)
437
-
438
- unless mongoid
439
- generate "paper_trail:install"
440
- generate "friendly_id"
441
- rake "db:migrate"
442
- end
443
-
444
- generate "rspec:install" if ["yes", "y"].include?(ask_with_timeout("generate `rspec:install`? (y or yes)").downcase.strip)
445
-
446
-
447
- ####### GIT #######
448
-
449
- remove_file '.gitignore'
450
- create_file '.gitignore' do <<-TEXT
451
- # See https://help.github.com/articles/ignoring-files for more about ignoring files.
452
- #
453
- # If you find yourself ignoring temporary files generated by your text editor
454
- # or operating system, you probably want to add a global ignore instead:
455
- # git config --global core.excludesfile '~/.gitignore_global'
456
- .idea
457
- .idea/*
458
-
459
- /.bundle
460
- /log/*.log
461
- /tmp/*
462
- /public/assets
463
- # /public/ckeditor_assets
464
- Gemfile.lock
465
- TEXT
466
- end
467
-
468
- create_file 'extra/.gitkeep', ''
469
-
470
-
471
- if ["yes", "y"].include?(ask_with_timeout("Do u want init git? (y or yes)").downcase.strip)
472
- git :init
473
- git add: "."
474
- git commit: %Q{ -m 'Initial commit' }
475
- end
476
-
477
- end
478
-
479
- def mongoid
480
- !!defined? Mongoid
481
- end
482
-
483
- def app_name
484
- Rails.application.class.parent_name
485
- end
486
-
487
- end
488
- end
@@ -1,19 +0,0 @@
1
- require 'hancock/rails_admin_ext/hancock_enum_with_custom'
2
-
3
- module RailsAdmin
4
- module Config
5
- module Fields
6
- module Types
7
- class HancockArray < RailsAdmin::Config::Fields::Types::HancockEnumWithCustom
8
- # Register field type for the type loader
9
- RailsAdmin::Config::Fields::Types.register(self)
10
-
11
- register_instance_option :multiple do
12
- true
13
- end
14
-
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,33 +0,0 @@
1
- require 'rails_admin/config/fields/types/enum'
2
-
3
- module RailsAdmin
4
- module Config
5
- module Fields
6
- module Types
7
- class HancockEnum < RailsAdmin::Config::Fields::Types::Enum
8
- # Register field type for the type loader
9
- RailsAdmin::Config::Fields::Types.register(self)
10
-
11
- register_instance_option :searchable do
12
- true
13
- end
14
- register_instance_option :searchable_columns do
15
- [{column: "#{abstract_model.table_name}.#{enum_method}" , type: :string}]
16
- end
17
- register_instance_option :queryable do
18
- true
19
- end
20
-
21
- register_instance_option :partial do
22
- :form_hancock_enum
23
- end
24
-
25
- register_instance_option :help do
26
- 'Двойной клик перемещает между списками'
27
- end
28
-
29
- end
30
- end
31
- end
32
- end
33
- end
@@ -1,34 +0,0 @@
1
- require 'hancock/rails_admin_ext/hancock_enum'
2
-
3
- module RailsAdmin
4
- module Config
5
- module Fields
6
- module Types
7
- class HancockEnumWithCustom < RailsAdmin::Config::Fields::Types::HancockEnum
8
- # Register field type for the type loader
9
- RailsAdmin::Config::Fields::Types.register(self)
10
- register_instance_option :help do
11
- 'Выберите из списка или введите свой вариант'
12
- end
13
-
14
- register_instance_option :enum do
15
- []
16
- end
17
-
18
- register_instance_option :unique do
19
- true
20
- end
21
-
22
- register_instance_option :selection do
23
- ([enum] + [form_value]).flatten.uniq
24
- end
25
-
26
- register_instance_option :partial do
27
- :form_hancock_enum_with_custom
28
- end
29
-
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,14 +0,0 @@
1
- require 'rails_admin'
2
- module RailsAdmin
3
- module Config
4
- module Fields
5
-
6
- class Group
7
- register_instance_option :leftside_hider do
8
- true
9
- end
10
- end
11
-
12
- end
13
- end
14
- end
@@ -1,27 +0,0 @@
1
- require 'rails_admin'
2
- module RailsAdmin
3
- module Config
4
- # Provides accessors and autoregistering of model's fields.
5
- module HasFields
6
-
7
- protected
8
-
9
- # Raw fields.
10
- # Recursively returns parent section's raw fields
11
- # Duping it if accessed for modification.
12
- def _fields(readonly = false)
13
- return @_fields if @_fields
14
- return @_ro_fields if readonly && @_ro_fields
15
-
16
- if self.class == RailsAdmin::Config::Sections::Base
17
- @_ro_fields = @_fields = RailsAdmin::Config::Fields.factory(self)
18
- else
19
- # parent is RailsAdmin::Config::Model, recursion is on Section's classes
20
- @_ro_fields ||= parent.send(self.class.superclass.to_s.underscore.split('/').last)._fields(true)
21
- @_ro_fields.freeze if Rails.env.production? or Rails.env.staging?
22
- end
23
- readonly ? @_ro_fields : (@_fields ||= @_ro_fields.collect(&:clone))
24
- end
25
- end
26
- end
27
- end
@@ -1,25 +0,0 @@
1
- require 'rails_admin'
2
- module RailsAdmin
3
- module Config
4
-
5
- class Model
6
- register_instance_option :navigation_icon do
7
- abstract_model.model.try('rails_admin_navigation_icon')
8
- end
9
-
10
- register_instance_option :name_synonyms do
11
- if name_synonyms_method
12
- ret = abstract_model.model.try(name_synonyms_method)
13
- ret = ret.join(" ") if ret.is_a?(Array)
14
- else
15
- ret = ''
16
- end
17
- ret.freeze
18
- end
19
- register_instance_option :name_synonyms_method do
20
- :rails_admin_name_synonyms
21
- end
22
- end
23
-
24
- end
25
- end