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.
- checksums.yaml +4 -4
- data/.ruby-gemset +1 -1
- data/.ruby-version +1 -1
- data/README.md +9 -13
- data/app/assets/images/{hancock/rails_admin → rails-admin}/hancock_logo.svg +0 -0
- data/app/assets/javascripts/hancock/cms.coffee +1 -1
- data/app/assets/javascripts/hancock/rails_admin/cms.ui.coffee +38 -10
- data/app/assets/javascripts/jquery.placeholder.js +2 -3
- data/app/assets/javascripts/rails_admin/custom/ui.coffee +0 -1
- data/app/assets/stylesheets/hancock/cms/devise.sass +22 -36
- data/app/assets/stylesheets/hancock/rails_admin/cms.theming.sass +147 -364
- data/app/assets/stylesheets/rails_admin/custom/theming.sass +1 -1
- data/app/controllers/concerns/hancock/current_user.rb +1 -1
- data/app/controllers/concerns/hancock/decorators/home.rb +1 -1
- data/app/controllers/concerns/hancock/errors.rb +7 -6
- data/app/controllers/concerns/hancock/no_cache.rb +12 -0
- data/app/controllers/hancock/registrations_controller.rb +7 -2
- data/app/controllers/hancock/sessions_controller.rb +7 -3
- data/app/helpers/hancock/powered_helper.rb +3 -3
- data/app/models/concerns/hancock/boolean_field.rb +2 -7
- data/app/models/concerns/hancock/cacheable.rb +33 -0
- data/app/models/concerns/hancock/decorators/embedded_element.rb +9 -1
- data/app/models/concerns/hancock/enableable.rb +0 -1
- data/app/models/concerns/hancock/hash_field.rb +8 -9
- data/app/models/concerns/hancock/html_field.rb +3 -6
- data/app/models/concerns/hancock/mappable.rb +0 -1
- data/app/models/concerns/hancock/model_localizeable.rb +1 -4
- data/app/models/concerns/hancock/rails_admin_patch.rb +3 -22
- data/app/models/concerns/hancock/sort_field.rb +3 -26
- data/app/models/concerns/hancock/sortable.rb +0 -3
- data/app/views/blocks/_footer.html.slim +1 -1
- data/app/views/devise/passwords/edit.html.slim +2 -0
- data/app/views/devise/passwords/new.html.slim +2 -0
- data/app/views/devise/registrations/edit.html.slim +2 -0
- data/app/views/devise/registrations/new.html.slim +2 -0
- data/app/views/devise/sessions/new.html.slim +2 -0
- data/app/views/hancock/home/index.html.slim +1 -4
- data/app/views/layouts/application.html.slim +11 -20
- data/app/views/layouts/hancock/devise/confirmations.html.slim +4 -7
- data/app/views/layouts/hancock/devise/passwords.html.slim +4 -7
- data/app/views/layouts/hancock/devise/registrations.html.slim +4 -7
- data/app/views/layouts/hancock/devise/sessions.html.slim +4 -7
- data/app/views/layouts/hancock/devise/unlocks.html.slim +4 -7
- data/app/views/layouts/rails_admin/_footer.html.slim +2 -2
- data/app/views/layouts/rails_admin/_footer_navigation.html.slim +5 -21
- data/app/views/layouts/rails_admin/_navigation.html.slim +47 -13
- data/app/views/layouts/rails_admin/_secondary_navigation.html.slim +12 -5
- data/app/views/layouts/rails_admin/application.html.haml +39 -4
- data/app/views/rails_admin/main/_hancock_html.html.slim +2 -2
- data/app/views/rails_admin/main/_hancock_html_ml.html.slim +34 -31
- data/app/views/shared/_admin_link.html.slim +2 -4
- data/{app/models/concerns/hancock → config/initializers}/embedded_findable.rb +2 -2
- data/config/locales/en.hancock.yml +0 -1
- data/config/locales/ru.devise.yml +18 -22
- data/config/locales/ru.hancock.yml +5 -5
- data/config/locales/ru.rails_admin.yml +0 -3
- data/hancock_cms.gemspec +3 -6
- data/lib/filename_to_slug.rb +20 -0
- data/lib/generators/hancock/cms/ability_generator.rb +0 -1
- data/lib/generators/hancock/cms/admin_generator.rb +0 -1
- data/lib/generators/hancock/cms/application_generator.rb +0 -1
- data/lib/generators/hancock/cms/assets_generator.rb +0 -1
- data/lib/generators/hancock/cms/layout_generator.rb +0 -1
- data/lib/generators/hancock/cms/model_generator.rb +0 -1
- data/lib/generators/hancock/cms/models/templates/embedded_element.erb +2 -2
- data/lib/generators/hancock/cms/rack_generator.rb +0 -1
- data/lib/generators/hancock/cms/robots_generator.rb +0 -1
- data/lib/generators/hancock/cms/scripts_generator.rb +0 -1
- data/lib/generators/hancock/cms/templates/Gemfile.erb +4 -1
- data/lib/generators/hancock/cms/templates/ability.erb +1 -1
- data/lib/generators/hancock/cms/templates/admin.erb +6 -12
- data/lib/generators/hancock/cms/templates/assets/javascripts/application.coffee.erb +1 -1
- data/lib/generators/hancock/cms/templates/hancock_cms.erb +2 -4
- data/lib/generators/hancock/cms/templates/model.erb +6 -5
- data/lib/generators/hancock/cms/templates/robots.txt.erb +1 -5
- data/lib/generators/hancock/cms/templates/scripts/db_dump.sh.erb +1 -1
- data/lib/generators/hancock/cms/templates/scripts/server.sh +1 -1
- data/lib/generators/hancock/cms/templates/scripts/server_alt.sh +1 -1
- data/lib/generators/hancock/cms/unicorn_god_generator.rb +0 -1
- data/lib/generators/hancock/cms/utils.rb +0 -2
- data/lib/hancock/admin/embedded_element.rb +2 -10
- data/lib/hancock/admin.rb +21 -132
- data/lib/hancock/configuration.rb +2 -6
- data/lib/hancock/controller.rb +1 -10
- data/lib/hancock/engine.rb +34 -34
- data/lib/hancock/model.rb +5 -29
- data/lib/hancock/models/embedded_element.rb +0 -2
- data/lib/hancock/models/mongoid/embedded_element.rb +1 -20
- data/lib/hancock/plugin_configuration.rb +1 -1
- data/lib/hancock/rails_admin_ext/config.rb +14 -45
- data/lib/hancock/rails_admin_ext/hancock_hash.rb +1 -8
- data/lib/hancock/rails_admin_ext/hancock_html.rb +2 -17
- data/lib/hancock/rails_admin_ext/hancock_multiselect.rb +5 -1
- data/lib/hancock/rails_admin_ext/hancock_slugs.rb +6 -2
- data/lib/hancock/rails_admin_ext/patches/field_patch.rb +1 -2
- data/lib/hancock/rails_admin_ext/patches/group_patch.rb +0 -9
- data/lib/hancock/rails_admin_ext/patches/hancock_cms_group.rb +0 -2
- data/lib/hancock/version.rb +1 -1
- data/lib/hancock_cms.rb +13 -21
- data/lib/manual_slug/active_record.rb +8 -8
- data/lib/rails_admin/custom_show_in_app.rb +32 -21
- data/release.sh +1 -1
- data/template.rb +386 -37
- metadata +15 -88
- data/.gitattributes +0 -4
- data/app/assets/javascripts/hancock/rails_admin/en_ru_switcher.coffee +0 -90
- data/app/assets/javascripts/hancock/rails_admin/enum_with_custom.coffee +0 -41
- data/app/assets/javascripts/hancock/rails_admin/form_controls_fixed.coffee +0 -44
- data/app/assets/javascripts/hancock/rails_admin/leftside_hider.coffee +0 -106
- data/app/assets/javascripts/hancock/rails_admin/multiselect.coffee +0 -8
- data/app/assets/javascripts/hancock/rails_admin/navigation_dropdown.coffee +0 -25
- data/app/assets/javascripts/hancock/rails_admin/navigation_filter.coffee +0 -108
- data/app/assets/javascripts/hancock/rails_admin/navigation_scroll.coffee +0 -12
- data/app/assets/stylesheets/hancock/rails_admin/fieldsets.sass +0 -198
- data/app/helpers/hancock/settings_helper.rb +0 -44
- data/app/helpers/rails_admin/application/hancock_helper.rb +0 -19
- data/app/helpers/rails_admin/hancock/form_builder.rb +0 -44
- data/app/helpers/rails_admin/main/hancock_helper.rb +0 -27
- data/app/models/concerns/hancock/insertion_field.rb +0 -115
- data/app/views/blocks/_preloader.html.slim +0 -0
- data/app/views/layouts/rails_admin/_sidebar_navigation.html.slim +0 -2
- data/app/views/layouts/rails_admin/_sidebar_navigation_filter.html.slim +0 -3
- data/app/views/rails_admin/main/_enum_for_settings_kinds.html.slim +0 -24
- data/app/views/rails_admin/main/_form_hancock_enum.html.slim +0 -18
- data/app/views/rails_admin/main/_form_hancock_enum_with_custom.slim +0 -20
- data/app/views/rails_admin/main/edit.html.haml +0 -18
- data/app/views/rails_admin/main/new.html.haml +0 -17
- data/config/initializers/rails_admin_mongoid_patch.rb +0 -27
- data/lib/generators/hancock/cms/setup_generator.rb +0 -488
- data/lib/generators/hancock/cms/templates/assets/stylesheets/hancock/rails_admin/custom/theming.sass.erb +0 -0
- data/lib/hancock/rails_admin_ext/hancock_array.rb +0 -19
- data/lib/hancock/rails_admin_ext/hancock_enum.rb +0 -33
- data/lib/hancock/rails_admin_ext/hancock_enum_with_custom.rb +0 -34
- data/lib/hancock/rails_admin_ext/patches/fieldset_patch.rb +0 -14
- data/lib/hancock/rails_admin_ext/patches/has_fields.rb +0 -27
- data/lib/hancock/rails_admin_ext/patches/navigation_patch.rb +0 -25
- 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
|
|
File without changes
|
|
@@ -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,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
|