hancock_cms 1.0.1 → 1.0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitattributes +4 -0
- data/app/assets/images/{rails-admin → hancock/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 +10 -38
- data/app/assets/javascripts/hancock/rails_admin/en_ru_switcher.coffee +90 -0
- data/app/assets/javascripts/hancock/rails_admin/enum_with_custom.coffee +41 -0
- data/app/assets/javascripts/hancock/rails_admin/form_controls_fixed.coffee +44 -0
- data/app/assets/javascripts/hancock/rails_admin/leftside_hider.coffee +106 -0
- data/app/assets/javascripts/hancock/rails_admin/multiselect.coffee +8 -0
- data/app/assets/javascripts/hancock/rails_admin/navigation_dropdown.coffee +25 -0
- data/app/assets/javascripts/hancock/rails_admin/navigation_filter.coffee +108 -0
- data/app/assets/javascripts/hancock/rails_admin/navigation_scroll.coffee +12 -0
- data/app/assets/javascripts/jquery.placeholder.js +3 -2
- data/app/assets/javascripts/rails_admin/custom/ui.coffee +1 -0
- data/app/assets/stylesheets/hancock/cms/devise.sass +4 -1
- data/app/assets/stylesheets/hancock/rails_admin/cms.theming.sass +364 -147
- data/app/assets/stylesheets/hancock/rails_admin/fieldsets.sass +198 -0
- data/app/assets/stylesheets/rails_admin/custom/theming.sass +1 -1
- data/app/controllers/concerns/hancock/decorators/home.rb +1 -1
- data/app/controllers/concerns/hancock/errors.rb +4 -6
- data/app/controllers/hancock/registrations_controller.rb +2 -7
- data/app/controllers/hancock/sessions_controller.rb +3 -7
- data/app/helpers/hancock/powered_helper.rb +3 -3
- data/app/helpers/hancock/settings_helper.rb +44 -0
- data/app/helpers/rails_admin/application/hancock_helper.rb +19 -0
- data/app/helpers/rails_admin/hancock/form_builder.rb +44 -0
- data/app/helpers/rails_admin/main/hancock_helper.rb +27 -0
- data/app/models/concerns/hancock/boolean_field.rb +7 -2
- data/app/models/concerns/hancock/decorators/embedded_element.rb +1 -9
- data/app/models/concerns/hancock/enableable.rb +1 -0
- data/app/models/concerns/hancock/hash_field.rb +9 -8
- data/app/models/concerns/hancock/html_field.rb +6 -3
- data/app/models/concerns/hancock/insertion_field.rb +115 -0
- data/app/models/concerns/hancock/mappable.rb +1 -0
- data/app/models/concerns/hancock/model_localizeable.rb +4 -1
- data/app/models/concerns/hancock/rails_admin_patch.rb +22 -3
- data/app/models/concerns/hancock/sort_field.rb +26 -3
- data/app/models/concerns/hancock/sortable.rb +3 -0
- data/app/views/blocks/_footer.html.slim +1 -1
- data/app/views/devise/passwords/edit.html.slim +0 -2
- data/app/views/devise/passwords/new.html.slim +0 -2
- data/app/views/devise/registrations/edit.html.slim +0 -2
- data/app/views/devise/registrations/new.html.slim +0 -2
- data/app/views/devise/sessions/new.html.slim +0 -2
- data/app/views/hancock/home/index.html.slim +4 -1
- data/app/views/layouts/application.html.slim +7 -6
- data/app/views/layouts/hancock/devise/confirmations.html.slim +7 -4
- data/app/views/layouts/hancock/devise/passwords.html.slim +7 -4
- data/app/views/layouts/hancock/devise/registrations.html.slim +7 -4
- data/app/views/layouts/hancock/devise/sessions.html.slim +7 -4
- data/app/views/layouts/hancock/devise/unlocks.html.slim +7 -4
- data/app/views/layouts/rails_admin/_footer.html.slim +2 -2
- data/app/views/layouts/rails_admin/_footer_navigation.html.slim +20 -4
- data/app/views/layouts/rails_admin/_navigation.html.slim +13 -47
- data/app/views/layouts/rails_admin/_secondary_navigation.html.slim +5 -12
- data/app/views/layouts/rails_admin/_sidebar_navigation.html.slim +2 -0
- data/app/views/layouts/rails_admin/_sidebar_navigation_filter.html.slim +3 -0
- data/app/views/layouts/rails_admin/application.html.haml +3 -1
- data/app/views/rails_admin/main/_enum_for_settings_kinds.html.slim +24 -0
- data/app/views/rails_admin/main/_form_hancock_enum_with_custom.slim +20 -0
- data/app/views/rails_admin/main/_hancock_html.html.slim +2 -2
- data/app/views/rails_admin/main/_hancock_html_ml.html.slim +31 -34
- data/app/views/rails_admin/main/edit.html.haml +18 -0
- data/app/views/rails_admin/main/new.html.haml +17 -0
- data/app/views/shared/_admin_link.html.slim +4 -3
- data/config/initializers/rails_admin_mongoid_patch.rb +27 -0
- data/config/locales/en.hancock.yml +1 -0
- data/config/locales/ru.devise.yml +22 -18
- data/config/locales/ru.hancock.yml +2 -0
- data/config/locales/ru.rails_admin.yml +3 -0
- data/hancock_cms.gemspec +4 -1
- data/lib/filename_to_slug.rb +0 -20
- data/lib/generators/hancock/cms/ability_generator.rb +1 -0
- data/lib/generators/hancock/cms/admin_generator.rb +1 -0
- data/lib/generators/hancock/cms/application_generator.rb +1 -0
- data/lib/generators/hancock/cms/assets_generator.rb +1 -0
- data/lib/generators/hancock/cms/layout_generator.rb +1 -0
- data/lib/generators/hancock/cms/model_generator.rb +1 -0
- data/lib/generators/hancock/cms/models/templates/embedded_element.erb +2 -2
- data/lib/generators/hancock/cms/rack_generator.rb +1 -0
- data/lib/generators/hancock/cms/robots_generator.rb +1 -0
- data/lib/generators/hancock/cms/scripts_generator.rb +1 -0
- data/lib/generators/hancock/cms/setup_generator.rb +149 -32
- data/lib/generators/hancock/cms/templates/Gemfile.erb +1 -4
- data/lib/generators/hancock/cms/templates/ability.erb +1 -1
- data/lib/generators/hancock/cms/templates/admin.erb +12 -4
- data/lib/generators/hancock/cms/templates/robots.txt.erb +5 -1
- data/lib/generators/hancock/cms/templates/scripts/db_dump.sh.erb +1 -1
- data/lib/generators/hancock/cms/unicorn_god_generator.rb +1 -0
- data/lib/generators/hancock/cms/utils.rb +2 -0
- data/lib/hancock/admin/embedded_element.rb +7 -2
- data/lib/hancock/admin.rb +141 -17
- data/lib/hancock/controller.rb +9 -0
- data/lib/hancock/engine.rb +28 -36
- data/lib/hancock/model.rb +6 -0
- data/lib/hancock/models/embedded_element.rb +2 -0
- data/lib/hancock/models/mongoid/embedded_element.rb +17 -0
- data/lib/hancock/plugin_configuration.rb +1 -1
- data/lib/hancock/rails_admin_ext/config.rb +21 -4
- data/lib/hancock/rails_admin_ext/hancock_array.rb +19 -0
- data/lib/hancock/rails_admin_ext/hancock_enum.rb +10 -0
- data/lib/hancock/rails_admin_ext/hancock_enum_with_custom.rb +34 -0
- data/lib/hancock/rails_admin_ext/hancock_hash.rb +8 -1
- data/lib/hancock/rails_admin_ext/hancock_html.rb +17 -2
- data/lib/hancock/rails_admin_ext/hancock_multiselect.rb +1 -5
- data/lib/hancock/rails_admin_ext/hancock_slugs.rb +0 -4
- data/lib/hancock/rails_admin_ext/patches/field_patch.rb +2 -1
- data/lib/hancock/rails_admin_ext/patches/fieldset_patch.rb +14 -0
- data/lib/hancock/rails_admin_ext/patches/group_patch.rb +9 -0
- data/lib/hancock/rails_admin_ext/patches/hancock_cms_group.rb +2 -0
- data/lib/hancock/rails_admin_ext/patches/has_fields.rb +27 -0
- data/lib/hancock/rails_admin_ext/patches/navigation_patch.rb +25 -0
- data/lib/hancock/rails_admin_settings_patch.rb +195 -11
- data/lib/hancock/version.rb +1 -1
- data/lib/hancock_cms.rb +10 -9
- data/lib/manual_slug/active_record.rb +8 -8
- data/lib/rails_admin/custom_show_in_app.rb +21 -32
- data/template.rb +11 -10
- metadata +74 -5
@@ -7,27 +7,51 @@ module Hancock::Cms
|
|
7
7
|
desc 'Hancock CMS Carcass generator'
|
8
8
|
def install
|
9
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
|
+
|
10
23
|
####### DEVISE #######
|
11
24
|
|
12
|
-
generate "devise:install"
|
25
|
+
generate "devise:install" if ["yes", "y"].include?(ask_with_timeout("generate `devise:install`?(y or yes)").downcase.strip)
|
13
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
|
14
35
|
inject_into_file 'config/initializers/devise.rb', after: /^end/ do <<-TEXT
|
15
36
|
|
16
37
|
Rails.application.config.to_prepare do
|
17
|
-
Devise::SessionsController.layout
|
18
|
-
Devise::RegistrationsController.layout
|
19
|
-
Devise::ConfirmationsController.layout
|
20
|
-
Devise::UnlocksController.layout
|
21
|
-
Devise::PasswordsController.layout
|
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 }
|
22
43
|
end
|
23
44
|
TEXT
|
24
45
|
end
|
25
|
-
|
26
|
-
|
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)
|
27
49
|
|
28
50
|
|
29
51
|
####### ROUTES #######
|
30
52
|
|
53
|
+
|
54
|
+
if ["yes", "y"].include?(ask_with_timeout("Set Hancock's routes? (y or yes)").downcase.strip)
|
31
55
|
remove_file 'config/routes.rb'
|
32
56
|
create_file 'config/routes.rb' do <<-TEXT
|
33
57
|
Rails.application.routes.draw do
|
@@ -37,27 +61,95 @@ Rails.application.routes.draw do
|
|
37
61
|
end
|
38
62
|
TEXT
|
39
63
|
end
|
64
|
+
end
|
40
65
|
|
41
66
|
|
42
67
|
####### INITIALIZERS #######
|
43
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
|
44
71
|
inject_into_file 'config/initializers/assets.rb', before: /\z/ do <<-TEXT
|
45
72
|
Rails.application.config.assets.precompile += %w( *.svg )
|
46
73
|
Rails.application.config.assets.precompile += %w( ckeditor/* )
|
47
74
|
Rails.application.config.assets.precompile += %w( codemirror.js codemirror.css codemirror/**/* )
|
48
75
|
TEXT
|
49
76
|
end
|
77
|
+
end
|
78
|
+
|
50
79
|
|
51
80
|
if mongoid
|
52
|
-
|
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
|
+
|
53
141
|
else
|
54
|
-
|
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']"
|
55
150
|
end
|
56
|
-
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)"
|
57
|
-
gsub_file 'config/initializers/ckeditor.rb', "# config.authorize_with :cancan", "config.authorize_with :cancancan"
|
58
|
-
gsub_file 'config/initializers/ckeditor.rb', "# config.assets_languages = ['en', 'uk']", "config.assets_languages = ['en', 'ru']"
|
59
151
|
|
60
|
-
if mongoid
|
152
|
+
if mongoid and ["yes", "y"].include?(ask_with_timeout("Set Hancock's config for cookies_serializer? (y or yes)").downcase.strip)
|
61
153
|
remove_file 'config/initializers/cookies_serializer.rb'
|
62
154
|
create_file 'config/initializers/cookies_serializer.rb' do <<-TEXT
|
63
155
|
# Be sure to restart your server when you modify this file.
|
@@ -73,7 +165,7 @@ gsub_file 'config/initializers/filter_parameter_logging.rb', "[:password]", "[:p
|
|
73
165
|
|
74
166
|
# generate 'paperclip_optimizer:install'
|
75
167
|
# remove_file 'config/initializers/paperclip_optimizer.rb'
|
76
|
-
|
168
|
+
generate "hancock:cms:paperclip_optimizer" if ["yes", "y"].include?(ask_with_timeout("generate `hancock:cms:paperclip_optimizer`? (y or yes)").downcase.strip)
|
77
169
|
|
78
170
|
# generate 'rails_email_preview:install'
|
79
171
|
# remove_file 'app/mailer_previews/contact_mailer_preview.rb'
|
@@ -86,12 +178,13 @@ gsub_file 'config/initializers/filter_parameter_logging.rb', "[:password]", "[:p
|
|
86
178
|
# TEXT
|
87
179
|
# end
|
88
180
|
|
89
|
-
generate "hancock:cms:config"
|
181
|
+
generate "hancock:cms:config" if ["yes", "y"].include?(ask_with_timeout("generate `hancock:cms:config`? (y or yes)").downcase.strip)
|
90
182
|
|
91
|
-
generate "hancock:cms:rack"
|
183
|
+
generate "hancock:cms:rack" if ["yes", "y"].include?(ask_with_timeout("generate `hancock:cms:rack`? (y or yes)").downcase.strip)
|
92
184
|
|
93
|
-
generate "hancock:cms:admin"
|
185
|
+
generate "hancock:cms:admin" if ["yes", "y"].include?(ask_with_timeout("generate `hancock:cms:admin`? (y or yes)").downcase.strip)
|
94
186
|
|
187
|
+
if ["yes", "y"].include?(ask_with_timeout("Set Hancock's config for session_store? (y or yes)").downcase.strip)
|
95
188
|
remove_file 'config/initializers/session_store.rb'
|
96
189
|
if mongoid
|
97
190
|
create_file 'config/initializers/session_store.rb' do <<-TEXT
|
@@ -111,16 +204,20 @@ Rails.application.config.session_store :active_record_store
|
|
111
204
|
TEXT
|
112
205
|
end
|
113
206
|
end
|
207
|
+
end
|
114
208
|
|
115
209
|
# unless mongoid
|
116
210
|
# generate 'simple_captcha'
|
117
211
|
# end
|
118
212
|
|
119
|
-
generate "simple_form:install"
|
213
|
+
generate "simple_form:install" if ["yes", "y"].include?(ask_with_timeout("generate `simple_form:install`? (y or yes)").downcase.strip)
|
214
|
+
|
120
215
|
|
121
216
|
|
122
217
|
####### CONTROLLERS #######
|
123
218
|
|
219
|
+
|
220
|
+
unless ApplicationController < Hancock::Controller
|
124
221
|
remove_file 'app/controllers/application_controller.rb'
|
125
222
|
create_file 'app/controllers/application_controller.rb' do <<-TEXT
|
126
223
|
class ApplicationController < ActionController::Base
|
@@ -128,12 +225,19 @@ class ApplicationController < ActionController::Base
|
|
128
225
|
end
|
129
226
|
TEXT
|
130
227
|
end
|
228
|
+
end
|
131
229
|
|
132
230
|
|
133
231
|
####### MODELS #######
|
134
232
|
|
135
|
-
generate "hancock:cms:ability"
|
233
|
+
generate "hancock:cms:ability" if ["yes", "y"].include?(ask_with_timeout("generate `hancock:cms:ability`? (y or yes)").downcase.strip)
|
136
234
|
|
235
|
+
gsub_user_rb = begin
|
236
|
+
(User < Hancock::Model).nil?
|
237
|
+
rescue
|
238
|
+
true
|
239
|
+
end
|
240
|
+
if gsub_user_rb
|
137
241
|
gsub_file 'app/models/user.rb', '# :confirmable, :lockable, :timeoutable and :omniauthable' do <<-TEXT
|
138
242
|
include Hancock::Model
|
139
243
|
include Hancock::Enableable
|
@@ -160,6 +264,7 @@ include Hancock::Model
|
|
160
264
|
TEXT
|
161
265
|
end
|
162
266
|
|
267
|
+
if ["yes", "y"].include?(ask_with_timeout("Set Hancock's User model? (y or yes)").downcase.strip)
|
163
268
|
gsub_file 'app/models/user.rb', ':registerable,', ' :lockable,'
|
164
269
|
if mongoid
|
165
270
|
gsub_file 'app/models/user.rb', '# field :failed_attempts', 'field :failed_attempts'
|
@@ -180,13 +285,13 @@ inject_into_file 'app/models/user.rb', before: /^end/ do <<-TEXT
|
|
180
285
|
AVAILABLE_ROLES = ["admin", "manager", "client"].freeze
|
181
286
|
|
182
287
|
AVAILABLE_ROLES.each do |r|
|
183
|
-
class_eval <<-
|
288
|
+
class_eval <<-RUBY
|
184
289
|
def \#{r}?
|
185
290
|
self.roles and self.roles.include?("\#{r}")
|
186
291
|
end
|
187
292
|
|
188
293
|
scope :\#{r.pluralize}, -> { any_in(roles: "\#{r}") }
|
189
|
-
|
294
|
+
RUBY
|
190
295
|
end
|
191
296
|
|
192
297
|
def self.generate_first_admin_user
|
@@ -220,6 +325,7 @@ inject_into_file 'app/models/user.rb', before: /^end/ do <<-TEXT
|
|
220
325
|
end
|
221
326
|
|
222
327
|
rails_admin do
|
328
|
+
navigation_icon 'icon-user'
|
223
329
|
list do
|
224
330
|
field :email
|
225
331
|
field :name
|
@@ -289,45 +395,53 @@ inject_into_file 'app/models/user.rb', before: /^end/ do <<-TEXT
|
|
289
395
|
TEXT
|
290
396
|
end
|
291
397
|
end
|
398
|
+
end
|
399
|
+
end
|
292
400
|
|
293
401
|
|
294
402
|
###### HANCOCK OTHERS ######
|
295
403
|
|
296
404
|
unless mongoid
|
297
|
-
|
298
|
-
|
405
|
+
generate "hancock:cms:migration"
|
406
|
+
generate "rails_admin_settings:migration"
|
299
407
|
end
|
300
408
|
|
409
|
+
if ["yes", "y"].include?(ask_with_timeout("Set Hancock's layout? (y or yes)").downcase.strip)
|
301
410
|
remove_file 'app/views/layouts/application.html.erb'
|
302
411
|
generate "hancock:cms:layout"
|
303
|
-
|
304
|
-
unless mongoid
|
305
|
-
rake "db:migrate"
|
306
412
|
end
|
307
413
|
|
308
414
|
run 'rails r "User.generate_first_admin_user"'
|
309
415
|
|
416
|
+
if ["yes", "y"].include?(ask_with_timeout("Set Hancock's assets? (y or yes)").downcase.strip)
|
310
417
|
remove_file 'app/assets/stylesheets/application.css'
|
311
418
|
remove_file 'app/assets/javascripts/application.js'
|
312
419
|
generate "hancock:cms:assets", app_name
|
420
|
+
end
|
313
421
|
|
422
|
+
if ["yes", "y"].include?(ask_with_timeout("Set Hancock's robots.txt? (y or yes)").downcase.strip)
|
314
423
|
remove_file 'public/robots.txt'
|
315
424
|
generate "hancock:cms:robots", app_name
|
425
|
+
end
|
316
426
|
|
427
|
+
if ["yes", "y"].include?(ask_with_timeout("Set Hancock's unicorn config? (y or yes)").downcase.strip)
|
317
428
|
#god+unicorn
|
318
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)
|
319
432
|
#scripts
|
320
433
|
generate "hancock:cms:scripts", app_name
|
434
|
+
end
|
321
435
|
|
322
436
|
FileUtils.cp(Pathname.new(destination_root).join('config', 'secrets.yml').to_s, Pathname.new(destination_root).join('config', 'secrets.yml.example').to_s)
|
323
437
|
|
324
438
|
unless mongoid
|
325
|
-
|
326
|
-
|
327
|
-
|
439
|
+
generate "paper_trail:install"
|
440
|
+
generate "friendly_id"
|
441
|
+
rake "db:migrate"
|
328
442
|
end
|
329
443
|
|
330
|
-
generate "rspec:install"
|
444
|
+
generate "rspec:install" if ["yes", "y"].include?(ask_with_timeout("generate `rspec:install`? (y or yes)").downcase.strip)
|
331
445
|
|
332
446
|
|
333
447
|
####### GIT #######
|
@@ -346,16 +460,19 @@ create_file '.gitignore' do <<-TEXT
|
|
346
460
|
/log/*.log
|
347
461
|
/tmp/*
|
348
462
|
/public/assets
|
349
|
-
/public/ckeditor_assets
|
463
|
+
# /public/ckeditor_assets
|
350
464
|
Gemfile.lock
|
351
465
|
TEXT
|
352
466
|
end
|
353
467
|
|
354
468
|
create_file 'extra/.gitkeep', ''
|
355
469
|
|
470
|
+
|
471
|
+
if ["yes", "y"].include?(ask_with_timeout("Do u want init git? (y or yes)").downcase.strip)
|
356
472
|
git :init
|
357
473
|
git add: "."
|
358
474
|
git commit: %Q{ -m 'Initial commit' }
|
475
|
+
end
|
359
476
|
|
360
477
|
end
|
361
478
|
|
@@ -8,7 +8,7 @@ gem 'sass-rails'
|
|
8
8
|
gem 'compass-rails'
|
9
9
|
gem 'compass'
|
10
10
|
|
11
|
-
#{if mongoid then "gem 'hancock_cms_mongoid'" else "gem 'hancock_cms_activerecord'" end}
|
11
|
+
#{if mongoid then "gem 'hancock_cms_mongoid'" else "gem 'hancock_cms_activerecord'" end}
|
12
12
|
|
13
13
|
gem 'devise'
|
14
14
|
|
@@ -20,9 +20,6 @@ gem 'cancancan'
|
|
20
20
|
gem 'unicorn'
|
21
21
|
gem 'x-real-ip'
|
22
22
|
|
23
|
-
#temp
|
24
|
-
#gem 'sentry-raven'
|
25
|
-
|
26
23
|
group :development do
|
27
24
|
gem 'better_errors'
|
28
25
|
gem 'binding_of_caller'
|
@@ -1,7 +1,12 @@
|
|
1
1
|
require 'rails_admin/custom_show_in_app'
|
2
2
|
|
3
|
+
require_relative 'hancock_cms'
|
4
|
+
# Add `require_relative '%hancock_plugin_name%'` here for configure it.
|
5
|
+
# `require_relative 'hancock_cms'` reconfigure it by default.
|
6
|
+
# So u need do it again. If u have some changes.
|
7
|
+
|
3
8
|
<% if Hancock.mongoid? %>
|
4
|
-
RailsAdminSettings.track_history!
|
9
|
+
RailsAdminSettings.track_history! if Hancock.config.history_tracking
|
5
10
|
<% end %>
|
6
11
|
|
7
12
|
RailsAdmin.config do |config|
|
@@ -37,8 +42,10 @@ RailsAdmin.config do |config|
|
|
37
42
|
edit
|
38
43
|
delete
|
39
44
|
|
40
|
-
|
41
|
-
|
45
|
+
if Hancock.config.history_tracking
|
46
|
+
history_index
|
47
|
+
history_show
|
48
|
+
end
|
42
49
|
|
43
50
|
toggle
|
44
51
|
# toggle_menu # for Hancock::Pages
|
@@ -52,10 +59,11 @@ RailsAdmin.config do |config|
|
|
52
59
|
config.excluded_models ||= []
|
53
60
|
config.excluded_models << [
|
54
61
|
'RailsAdmin::CustomShowInApp', 'HistoryTracker',
|
55
|
-
'Ckeditor::Asset', 'Ckeditor::AttachmentFile', 'Ckeditor::Picture',
|
62
|
+
'Ckeditor::Asset', 'Ckeditor::AttachmentFile', 'Ckeditor::Picture', 'Ckeditor::Folder',
|
56
63
|
'Hancock::EmbeddedElement'
|
57
64
|
]
|
58
65
|
config.excluded_models.flatten!
|
66
|
+
config.excluded_models.uniq!
|
59
67
|
end
|
60
68
|
|
61
69
|
# [required] fix for timezones to be displayed in local time instead of UTC
|
@@ -1,5 +1,9 @@
|
|
1
|
-
Host:
|
1
|
+
Host: http://<%= app_name.downcase %>.ru
|
2
2
|
User-Agent: *
|
3
3
|
Allow: /
|
4
4
|
Disallow: /admin
|
5
|
+
# Disallow: /account
|
6
|
+
Disallow: /ckeditor/*
|
7
|
+
# Disallow: /goto
|
8
|
+
# Disallow: /users
|
5
9
|
Sitemap: http://<%= app_name.downcase %>.ru/sitemap.xml.gz
|
@@ -4,6 +4,7 @@ module Hancock::Cms
|
|
4
4
|
module Generators
|
5
5
|
module Utils
|
6
6
|
module InstanceMethods
|
7
|
+
|
7
8
|
def display(output, color = :green)
|
8
9
|
say(" - #{output}", color)
|
9
10
|
end
|
@@ -15,6 +16,7 @@ module Hancock::Cms
|
|
15
16
|
ask(" ? #{wording} Press <enter> for [#{default_value}] >", :yellow).presence || default_value
|
16
17
|
end
|
17
18
|
end
|
19
|
+
|
18
20
|
end
|
19
21
|
end
|
20
22
|
end
|
@@ -1,21 +1,25 @@
|
|
1
1
|
module Hancock
|
2
2
|
module Admin
|
3
3
|
module EmbeddedElement
|
4
|
+
|
4
5
|
def self.config(nav_label = nil, fields = {})
|
5
6
|
if nav_label.is_a?(Hash)
|
6
7
|
nav_label, fields = nav_label[:nav_label], nav_label
|
7
8
|
elsif nav_label.is_a?(Array)
|
8
9
|
nav_label, fields = nil, nav_label
|
9
10
|
end
|
11
|
+
fields ||= {}
|
12
|
+
field_names = [:enabled, :name]
|
13
|
+
field_showings = Hancock::Admin.get_field_showings(fields, field_names)
|
10
14
|
|
11
15
|
Proc.new {
|
12
16
|
navigation_label(nav_label || I18n.t('hancock.cms'))
|
13
17
|
field :enabled, :toggle do
|
14
18
|
searchable false
|
15
|
-
end
|
19
|
+
end if field_showings[:enabled]
|
16
20
|
field :name, :string do
|
17
21
|
searchable true
|
18
|
-
end
|
22
|
+
end if field_showings[:name]
|
19
23
|
|
20
24
|
Hancock::RailsAdminGroupPatch::hancock_cms_group(self, fields)
|
21
25
|
|
@@ -24,6 +28,7 @@ module Hancock
|
|
24
28
|
end
|
25
29
|
}
|
26
30
|
end
|
31
|
+
|
27
32
|
end
|
28
33
|
end
|
29
34
|
end
|
data/lib/hancock/admin.rb
CHANGED
@@ -1,18 +1,45 @@
|
|
1
1
|
module Hancock
|
2
2
|
module Admin
|
3
|
-
def self.map_config(is_active = false)
|
3
|
+
def self.map_config(is_active = false, options = {})
|
4
|
+
if is_active.is_a?(Hash)
|
5
|
+
is_active, options = (is_active[:active] || false), is_active
|
6
|
+
end
|
7
|
+
fields = (options[:fields] ||= {})
|
8
|
+
field_names = [:slugs, :text_slug]
|
9
|
+
field_showings = get_field_showings(fields, field_names)
|
10
|
+
|
4
11
|
Proc.new {
|
5
12
|
active is_active
|
6
|
-
label I18n.t('hancock.map')
|
7
|
-
|
8
|
-
field :
|
9
|
-
|
13
|
+
label options[:label] || I18n.t('hancock.map')
|
14
|
+
|
15
|
+
field :address, :string do
|
16
|
+
searchable true
|
17
|
+
end if field_showings[:address]
|
18
|
+
|
19
|
+
field :map_address, :string do
|
20
|
+
searchable true
|
21
|
+
end if field_showings[:map_address]
|
22
|
+
|
23
|
+
field :map_hint, :string do
|
24
|
+
searchable true
|
25
|
+
end if field_showings[:map_hint]
|
26
|
+
|
10
27
|
field :coordinates, :string do
|
28
|
+
searchable true
|
11
29
|
read_only true
|
12
30
|
formatted_value{ bindings[:object].coordinates.to_json }
|
13
|
-
end
|
14
|
-
|
15
|
-
field :
|
31
|
+
end if field_showings[:coordinates]
|
32
|
+
|
33
|
+
field :lat do
|
34
|
+
searchable true
|
35
|
+
end if field_showings[:lat]
|
36
|
+
|
37
|
+
field :lon do
|
38
|
+
searchable true
|
39
|
+
end if field_showings[:lon]
|
40
|
+
|
41
|
+
|
42
|
+
Hancock::RailsAdminGroupPatch::hancock_cms_group(self, options[:fields])
|
16
43
|
|
17
44
|
if block_given?
|
18
45
|
yield self
|
@@ -20,28 +47,125 @@ module Hancock
|
|
20
47
|
}
|
21
48
|
end
|
22
49
|
|
23
|
-
def self.url_block(is_active = false)
|
50
|
+
def self.url_block(is_active = false, options = {})
|
51
|
+
if is_active.is_a?(Hash)
|
52
|
+
is_active, options = (is_active[:active] || false), is_active
|
53
|
+
end
|
54
|
+
fields = (options[:fields] ||= {})
|
55
|
+
field_names = [:slugs, :text_slug]
|
56
|
+
field_showings = get_field_showings(fields, field_names)
|
57
|
+
|
24
58
|
Proc.new {
|
25
59
|
active is_active
|
26
|
-
label I18n.t('hancock.url')
|
27
|
-
field :slugs, :hancock_slugs
|
28
|
-
field :text_slug
|
60
|
+
label options[:label] || I18n.t('hancock.url')
|
61
|
+
field :slugs, :hancock_slugs if field_showings[:slugs]
|
62
|
+
field :text_slug if field_showings[:text_slug]
|
63
|
+
|
64
|
+
Hancock::RailsAdminGroupPatch::hancock_cms_group(self, options[:fields])
|
65
|
+
|
66
|
+
if block_given?
|
67
|
+
yield self
|
68
|
+
end
|
29
69
|
}
|
30
70
|
end
|
31
71
|
|
32
72
|
def self.content_block(is_active = false, options = {})
|
33
73
|
if is_active.is_a?(Hash)
|
34
|
-
is_active,
|
74
|
+
is_active, options = (is_active[:active] || false), is_active
|
75
|
+
end
|
76
|
+
fields = (options[:fields] ||= {})
|
77
|
+
field_names = [:excerpt, :content]
|
78
|
+
field_showings = get_field_showings(fields, field_names)
|
79
|
+
|
80
|
+
Proc.new {
|
81
|
+
active is_active
|
82
|
+
label options[:label] || I18n.t('hancock.content')
|
83
|
+
field :excerpt, :hancock_html if field_showings[:excerpt]
|
84
|
+
field :content, :hancock_html if field_showings[:content]
|
85
|
+
|
86
|
+
Hancock::RailsAdminGroupPatch::hancock_cms_group(self, options[:fields] || {})
|
87
|
+
|
88
|
+
if block_given?
|
89
|
+
yield self
|
90
|
+
end
|
91
|
+
}
|
92
|
+
end
|
93
|
+
|
94
|
+
def self.categories_block(is_active = false, options = {})
|
95
|
+
if is_active.is_a?(Hash)
|
96
|
+
is_active, options = (is_active[:active] || false), is_active
|
97
|
+
end
|
98
|
+
fields = (options[:fields] ||= {})
|
99
|
+
field_names = [:main_category, :categories]
|
100
|
+
field_showings = get_field_showings(fields, field_names)
|
101
|
+
|
102
|
+
Proc.new {
|
103
|
+
active is_active
|
104
|
+
label options[:label] || I18n.t('hancock.categories')
|
105
|
+
|
106
|
+
field :main_category do
|
107
|
+
inline_add false
|
108
|
+
inline_edit false
|
109
|
+
end if field_showings[:main_category]
|
110
|
+
field :categories, :hancock_multiselect if field_showings[:categories]
|
111
|
+
|
112
|
+
Hancock::RailsAdminGroupPatch::hancock_cms_group(self, options[:fields] || {})
|
113
|
+
|
114
|
+
if block_given?
|
115
|
+
yield self
|
116
|
+
end
|
117
|
+
}
|
118
|
+
end
|
119
|
+
|
120
|
+
|
121
|
+
def self.insertions_block(is_active = false, options = {})
|
122
|
+
if is_active.is_a?(Hash)
|
123
|
+
is_active, options = (is_active[:active] || false), is_active
|
35
124
|
end
|
125
|
+
fields = (options[:fields] ||= {})
|
126
|
+
field_names = [:possible_insertions]
|
127
|
+
field_showings = get_field_showings(fields, field_names)
|
36
128
|
|
37
|
-
_excluded_fields = options.delete(:excluded_fields) || []
|
38
129
|
Proc.new {
|
39
130
|
active is_active
|
40
|
-
label I18n.t('hancock.
|
41
|
-
field :
|
42
|
-
|
131
|
+
label options[:label] || I18n.t('hancock.insertions')
|
132
|
+
field :possible_insertions do
|
133
|
+
read_only true
|
134
|
+
pretty_value do
|
135
|
+
("<dl class='possible_insertions_list'>" + bindings[:object].possible_insertions.map do |_ins|
|
136
|
+
"<dt>#{_ins}</dt><dd>#{bindings[:object].send(_ins)}</dd>"
|
137
|
+
end.join + "</dl>").html_safe
|
138
|
+
end
|
139
|
+
end if field_showings[:possible_insertions]
|
140
|
+
|
141
|
+
Hancock::RailsAdminGroupPatch::hancock_cms_group(self, options[:fields] || {})
|
142
|
+
|
143
|
+
if block_given?
|
144
|
+
yield self
|
145
|
+
end
|
146
|
+
|
147
|
+
Hancock::RailsAdminGroupPatch::hancock_cms_group(self, options[:fields] || {})
|
148
|
+
|
149
|
+
if block_given?
|
150
|
+
yield self
|
151
|
+
end
|
43
152
|
}
|
44
153
|
end
|
45
154
|
|
155
|
+
def self.get_field_showings(fields, field_names)
|
156
|
+
field_showings = field_names.map { |f| {f => true } }.inject(&:merge) || {}
|
157
|
+
if fields.is_a?(Hash)
|
158
|
+
field_names.each do |f|
|
159
|
+
field_showings[f] = (fields[f] != false)
|
160
|
+
end
|
161
|
+
elsif fields.is_a?(Array)
|
162
|
+
_fields = fields.map { |f| f[:fields] }.inject(&:merge) || {}
|
163
|
+
field_names.each do |f|
|
164
|
+
field_showings[f] = (_fields[f] != false)
|
165
|
+
end
|
166
|
+
end
|
167
|
+
field_showings
|
168
|
+
end
|
169
|
+
|
46
170
|
end
|
47
171
|
end
|