hancock_cms 1.0.2.3 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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