itsf_backend 1.0.1
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +43 -0
- data/Rakefile +21 -0
- data/app/assets/images/itsf/backend/favicon.png +0 -0
- data/app/assets/javascripts/itsf/backend/application.js +21 -0
- data/app/assets/javascripts/itsf/backend/application/ace.coffee +51 -0
- data/app/assets/javascripts/itsf/backend/application/acts-as-list.coffee +21 -0
- data/app/assets/javascripts/itsf/backend/application/auto-submit.coffee +21 -0
- data/app/assets/javascripts/itsf/backend/application/autofocus-last.coffee +4 -0
- data/app/assets/javascripts/itsf/backend/application/drop-down-hover.coffee +8 -0
- data/app/assets/javascripts/itsf/backend/application/itsf-logo.coffee +24 -0
- data/app/assets/javascripts/itsf/backend/vendor/jQueryRotate.js +339 -0
- data/app/assets/javascripts/itsf/backend/vendor/jquery.redirect.js +119 -0
- data/app/assets/javascripts/itsf_backend.js +1 -0
- data/app/assets/stylesheets/itsf/backend/application.css.less +30 -0
- data/app/assets/stylesheets/itsf/backend/application/ace.css.less +6 -0
- data/app/assets/stylesheets/itsf/backend/application/basic-page.css.less +10 -0
- data/app/assets/stylesheets/itsf/backend/application/bootstrap-extensions.css.less +48 -0
- data/app/assets/stylesheets/itsf/backend/application/bottom-margin-extension.css.less +9 -0
- data/app/assets/stylesheets/itsf/backend/application/button-responsive.css.less +7 -0
- data/app/assets/stylesheets/itsf/backend/application/check-box-margin-fix.css.less +5 -0
- data/app/assets/stylesheets/itsf/backend/application/code.css.less +6 -0
- data/app/assets/stylesheets/itsf/backend/application/form-errors.css.less +6 -0
- data/app/assets/stylesheets/itsf/backend/application/form-inline-margin-fixes.css.less +9 -0
- data/app/assets/stylesheets/itsf/backend/application/hexagon.css.less +161 -0
- data/app/assets/stylesheets/itsf/backend/application/itsf-dashboard-panels.css.less +9 -0
- data/app/assets/stylesheets/itsf/backend/application/itsf-logo.css.less +107 -0
- data/app/assets/stylesheets/itsf/backend/application/navigation-logo.css.less +5 -0
- data/app/assets/stylesheets/itsf/backend/application/panel-footer-pagination.css.less +8 -0
- data/app/assets/stylesheets/itsf/backend/application/panel-with-actions.css.less +21 -0
- data/app/assets/stylesheets/itsf/backend/application/table-actions.css.less +9 -0
- data/app/assets/stylesheets/itsf/backend/application/table-responsive.css.less +3 -0
- data/app/assets/stylesheets/itsf/backend/bootstrap_and_overrides.css.less +34 -0
- data/app/assets/stylesheets/itsf/backend/vendor/timeline.min.css +1 -0
- data/app/assets/stylesheets/itsf_backend.css +3 -0
- data/app/concerns/routing/service_concern.rb +12 -0
- data/app/controllers/concerns/controller/acts_as_list_concern.rb +13 -0
- data/app/controllers/concerns/controller/acts_as_published_concern.rb +13 -0
- data/app/controllers/concerns/controller/pagination_concern.rb +15 -0
- data/app/controllers/concerns/controller/pundit_namespaced_authorize_concern.rb +19 -0
- data/app/controllers/concerns/controller/ransack_concern.rb +25 -0
- data/app/controllers/concerns/controller/rest_actions_concern_with_pundit.rb +93 -0
- data/app/controllers/itsf/backend/application_controller.rb +6 -0
- data/app/controllers/itsf/backend/base_controller.rb +34 -0
- data/app/controllers/itsf/backend/dashboard_controller.rb +20 -0
- data/app/controllers/itsf/backend/home_controller.rb +27 -0
- data/app/controllers/itsf/backend/resource/base_controller.rb +35 -0
- data/app/controllers/itsf/backend/service/base_controller.rb +29 -0
- data/app/extensions/concerns/head_row/acts_as_list_extensions.rb +11 -0
- data/app/extensions/concerns/head_row/association_extensions.rb +14 -0
- data/app/extensions/concerns/head_row/paperclip_extensions.rb +11 -0
- data/app/extensions/concerns/head_row/published_extensions.rb +11 -0
- data/app/extensions/concerns/head_row/ransack_extensions.rb +7 -0
- data/app/extensions/concerns/head_row/timestamp_extensions.rb +21 -0
- data/app/extensions/concerns/object_extensions.rb +8 -0
- data/app/extensions/concerns/ransack_form_builder_extensions.rb +72 -0
- data/app/extensions/concerns/resource_row/acts_as_list_extensions.rb +28 -0
- data/app/extensions/concerns/resource_row/association_extensions.rb +22 -0
- data/app/extensions/concerns/resource_row/paperclip_extensions.rb +18 -0
- data/app/extensions/concerns/resource_row/published_extensions.rb +24 -0
- data/app/extensions/concerns/resource_row/timestamp_extensions.rb +23 -0
- data/app/extensions/concerns/simple_form_form_builder_extensions.rb +28 -0
- data/app/helpers/itsf/backend/application_helper.rb +9 -0
- data/app/policies/itsf/backend/base_policy.rb +67 -0
- data/app/policies/itsf/backend/dashboard_policy.rb +14 -0
- data/app/policies/itsf/backend/engine_policy.rb +14 -0
- data/app/policies/itsf/backend/service/base_policy.rb +29 -0
- data/app/presenters/bootstrap_table_presenter.rb.old +106 -0
- data/app/views/itsf/backend/dashboard/_dashboard_panel.html.haml +18 -0
- data/app/views/itsf/backend/dashboard/index.html.haml +7 -0
- data/app/views/itsf/backend/home/_dashboard_panel.html.haml +26 -0
- data/app/views/itsf/backend/home/_index_extras.html.haml +0 -0
- data/app/views/itsf/backend/home/index.html.haml +14 -0
- data/app/views/itsf/backend/i18n/_navigation.html.haml +10 -0
- data/app/views/itsf/backend/resource/base/_form.html.haml +2 -0
- data/app/views/itsf/backend/resource/base/_form_errors.html.haml +6 -0
- data/app/views/itsf/backend/resource/base/_scopes.html.haml +1 -0
- data/app/views/itsf/backend/resource/base/_search.html.haml +3 -0
- data/app/views/itsf/backend/resource/base/_show.html.haml +2 -0
- data/app/views/itsf/backend/resource/base/_show_extras.html.haml +0 -0
- data/app/views/itsf/backend/resource/base/_table.html.haml +2 -0
- data/app/views/itsf/backend/resource/base/_table_actions.html.haml +15 -0
- data/app/views/itsf/backend/resource/base/edit.html.haml +17 -0
- data/app/views/itsf/backend/resource/base/index.html.haml +48 -0
- data/app/views/itsf/backend/resource/base/new.html.haml +15 -0
- data/app/views/itsf/backend/resource/base/show.html.haml +28 -0
- data/app/views/itsf/backend/service/base/_form.html.haml +0 -0
- data/app/views/itsf/backend/service/base/_form_errors.html.haml +6 -0
- data/app/views/itsf/backend/service/base/_messages.html.erb +5 -0
- data/app/views/itsf/backend/service/base/index.html.haml +18 -0
- data/app/views/itsf/backend/service/base/invoke.html.haml +16 -0
- data/app/views/itsf/backend/service/base/success.html.haml +13 -0
- data/app/views/layouts/itsf/backend/_footer.html.haml +1 -0
- data/app/views/layouts/itsf/backend/_logo.html.haml +4 -0
- data/app/views/layouts/itsf/backend/_main_navigation.html.haml +6 -0
- data/app/views/layouts/itsf/backend/_main_navigation_drop_down.html.haml +20 -0
- data/app/views/layouts/itsf/backend/base.html.haml +56 -0
- data/config/initializers/assets.rb +3 -0
- data/config/initializers/extend_object.rb +1 -0
- data/config/initializers/extend_ransack_form_builder.rb +4 -0
- data/config/initializers/extend_simple_form_form_builder.rb +5 -0
- data/config/locales/de.yml +104 -0
- data/config/locales/en.yml +99 -0
- data/config/rbac.yml +7 -0
- data/config/routes.rb +3 -0
- data/lib/generators/itsf/backend/home_controller/home_controller_generator.rb +77 -0
- data/lib/generators/itsf/backend/home_controller/templates/home_controller.rb +6 -0
- data/lib/generators/itsf/backend/home_controller/templates/routes.source +2 -0
- data/lib/generators/itsf/backend/install/install_generator.rb +23 -0
- data/lib/generators/itsf/backend/install/templates/backend_controller.rb +2 -0
- data/lib/generators/itsf/backend/install/templates/initializer.rb +95 -0
- data/lib/generators/itsf/backend/install/templates/routes.source +9 -0
- data/lib/generators/itsf/backend/resource/resource_generator.rb +96 -0
- data/lib/generators/itsf/backend/resource/templates/controller.rb +34 -0
- data/lib/generators/itsf/backend/resource/templates/routes.source +2 -0
- data/lib/itsf/backend.rb +11 -0
- data/lib/itsf/backend/configuration.rb +38 -0
- data/lib/itsf/backend/engine.rb +16 -0
- data/lib/itsf/backend/features.rb +13 -0
- data/lib/itsf/backend/policies.rb +13 -0
- data/lib/itsf/backend/spec_helpers.rb +47 -0
- data/lib/itsf/backend/version.rb +5 -0
- data/lib/itsf_backend.rb +21 -0
- data/lib/tasks/itsf/backend_tasks.rake +4 -0
- data/spec/dummy/README.rdoc +28 -0
- data/spec/dummy/Rakefile +6 -0
- data/spec/dummy/app/assets/javascripts/application.js +13 -0
- data/spec/dummy/app/assets/stylesheets/application.css +15 -0
- data/spec/dummy/app/controllers/application_controller.rb +5 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/models/post.rb +2 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/bin/setup +29 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +38 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +41 -0
- data/spec/dummy/config/environments/production.rb +79 -0
- data/spec/dummy/config/environments/test.rb +42 -0
- data/spec/dummy/config/initializers/assets.rb +11 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/itsf_backend.rb +15 -0
- data/spec/dummy/config/initializers/mime_types.rb +4 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +56 -0
- data/spec/dummy/config/secrets.yml +22 -0
- data/spec/dummy/db/migrate/20151024185112_create_posts.rb +10 -0
- data/spec/dummy/db/schema.rb +15 -0
- data/spec/dummy/public/404.html +67 -0
- data/spec/dummy/public/422.html +67 -0
- data/spec/dummy/public/500.html +66 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/factories/posts.rb +6 -0
- data/spec/models/post_spec.rb +5 -0
- data/spec/rails_helper.rb +52 -0
- data/spec/spec_helper.rb +90 -0
- data/spec/support/addons.rb +3 -0
- metadata +688 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Itsf
|
|
2
|
+
module Backend
|
|
3
|
+
module Generators
|
|
4
|
+
class InstallGenerator < Rails::Generators::Base
|
|
5
|
+
desc 'Generates the intializer'
|
|
6
|
+
|
|
7
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
8
|
+
|
|
9
|
+
def generate_intializer
|
|
10
|
+
copy_file 'initializer.rb', 'config/initializers/001_itsf_backend.rb'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def generate_routes
|
|
14
|
+
route File.read(File.join(File.expand_path('../templates', __FILE__), 'routes.source'))
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def generate_controller
|
|
18
|
+
copy_file 'backend_controller.rb', 'app/controllers/backend_controller.rb'
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
Itsf::Backend.configure do |config|
|
|
2
|
+
# Manually disable features
|
|
3
|
+
#
|
|
4
|
+
# Default: config.disabled_features: []
|
|
5
|
+
#
|
|
6
|
+
config.disabled_features = []
|
|
7
|
+
|
|
8
|
+
# Set the base controller the backend dashboards
|
|
9
|
+
#
|
|
10
|
+
# Default: config.dashboard_base_controller = 'BackendController'
|
|
11
|
+
#
|
|
12
|
+
config.dashboard_base_controller = 'BackendController'
|
|
13
|
+
|
|
14
|
+
# Set the base controller for module home controllers
|
|
15
|
+
#
|
|
16
|
+
# Default: config.home_base_controller = 'BackendController'
|
|
17
|
+
#
|
|
18
|
+
config.home_base_controller = 'BackendController'
|
|
19
|
+
|
|
20
|
+
# Set the base controller for resouce controllers
|
|
21
|
+
#
|
|
22
|
+
# Default: config.resource_base_controller = 'BackendController'
|
|
23
|
+
#
|
|
24
|
+
config.resource_base_controller = 'BackendController'
|
|
25
|
+
|
|
26
|
+
# Register backend engines here. They will be added to the backend menu
|
|
27
|
+
#
|
|
28
|
+
# Example: config.backend_engines = %w( MyEngine::Engine ).map(&:constantize)
|
|
29
|
+
#
|
|
30
|
+
# Default: config.backend_engines = %w().map(&:constantize)
|
|
31
|
+
#
|
|
32
|
+
config.backend_engines = %w(
|
|
33
|
+
).map(&:constantize)
|
|
34
|
+
|
|
35
|
+
# Proc that will be used to build the backend title link. The first and only
|
|
36
|
+
# argument is the view.
|
|
37
|
+
#
|
|
38
|
+
# Default: config.title_link = Proc.new do |view|
|
|
39
|
+
# view.link_to(
|
|
40
|
+
# view.t('.title', application_name: Rails.application.class.parent_name.underscore.titleize),
|
|
41
|
+
# view.main_app.itsf_backend_path,
|
|
42
|
+
# class: 'navbar-brand'
|
|
43
|
+
# )
|
|
44
|
+
# end
|
|
45
|
+
config.title_link = Proc.new do |view|
|
|
46
|
+
view.link_to(
|
|
47
|
+
view.t('.title', application_name: Rails.application.class.parent_name.underscore.titleize),
|
|
48
|
+
view.main_app.itsf_backend_path,
|
|
49
|
+
class: 'navbar-brand'
|
|
50
|
+
)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Proc that will be used to mount engines.
|
|
54
|
+
#
|
|
55
|
+
# Default:
|
|
56
|
+
#
|
|
57
|
+
# config.engine_mount_point = Proc.new { |router, engine|
|
|
58
|
+
# router.mount(
|
|
59
|
+
# engine => I18n.t(
|
|
60
|
+
# "routes.mount.#{engine.engine_name}",
|
|
61
|
+
# default: "/#{engine.name.deconstantize.underscore}"
|
|
62
|
+
# )
|
|
63
|
+
# )
|
|
64
|
+
# }
|
|
65
|
+
config.engine_mount_point = Proc.new { |router, engine|
|
|
66
|
+
router.mount(
|
|
67
|
+
engine => I18n.t(
|
|
68
|
+
"routes.mount.#{engine.engine_name}",
|
|
69
|
+
default: "/#{engine.name.deconstantize.underscore}"
|
|
70
|
+
)
|
|
71
|
+
)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
# Methods, that will be tried on a resource to generate a nice title
|
|
75
|
+
#
|
|
76
|
+
# Default: config.resource_title_methods = [:human, :name, :email, :to_s]
|
|
77
|
+
#
|
|
78
|
+
config.resource_title_methods = [:human, :name, :email, :to_s]
|
|
79
|
+
|
|
80
|
+
# This attributes will be hidden by default in index, show, edit and update views.
|
|
81
|
+
#
|
|
82
|
+
# Default: config.hidden_attributes = [:id, :friendly_id, :lft, :rgt, :depth]
|
|
83
|
+
#
|
|
84
|
+
config.hidden_attributes_for = {
|
|
85
|
+
edit: [:id, :slug, :lft, :rgt, :depth, :created_at, :updated_at],
|
|
86
|
+
index: [:id, :slug, :lft, :rgt, :depth],
|
|
87
|
+
show: [:id, :slug, :lft, :rgt, :depth]
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
# Sets the default pagination size
|
|
91
|
+
#
|
|
92
|
+
# Default config.default_pagination_size = 15
|
|
93
|
+
#
|
|
94
|
+
config.default_pagination_size = 15
|
|
95
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
|
|
2
|
+
localized do
|
|
3
|
+
Itsf::Backend::Configuration.engine_mount_point.call(self, Itsf::Backend::Engine)
|
|
4
|
+
# mount Itsf::Backend::Engine => '/backend'
|
|
5
|
+
|
|
6
|
+
Itsf::Backend::Configuration.backend_engines.each do |engine|
|
|
7
|
+
Itsf::Backend::Configuration.engine_mount_point.call(self, engine)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
require 'erb'
|
|
2
|
+
|
|
3
|
+
module Itsf
|
|
4
|
+
module Backend
|
|
5
|
+
module Generators
|
|
6
|
+
class ResourceGenerator < Rails::Generators::NamedBase
|
|
7
|
+
desc 'Generates an admin resource'
|
|
8
|
+
|
|
9
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
10
|
+
|
|
11
|
+
def test
|
|
12
|
+
p class_name
|
|
13
|
+
p class_path
|
|
14
|
+
p file_path
|
|
15
|
+
p human_name
|
|
16
|
+
p i18n_scope
|
|
17
|
+
# p indent
|
|
18
|
+
p index_helper
|
|
19
|
+
# p inside_template
|
|
20
|
+
p inside_template?
|
|
21
|
+
# p module_namespacing
|
|
22
|
+
p mountable_engine?
|
|
23
|
+
p namespace
|
|
24
|
+
p namespaced?
|
|
25
|
+
# p namespaced_class_path
|
|
26
|
+
# p namespaced_file_path
|
|
27
|
+
# p namespaced_path
|
|
28
|
+
p plural_file_name
|
|
29
|
+
p plural_name
|
|
30
|
+
p plural_table_name
|
|
31
|
+
p pluralize_table_names?
|
|
32
|
+
p regular_class_path
|
|
33
|
+
p route_url
|
|
34
|
+
p singular_name
|
|
35
|
+
p singular_table_name
|
|
36
|
+
p table_name
|
|
37
|
+
# p template
|
|
38
|
+
p uncountable?
|
|
39
|
+
# p wrap_with_namespace
|
|
40
|
+
|
|
41
|
+
p admin_controller_file_path
|
|
42
|
+
p admin_controller_file_name
|
|
43
|
+
p controller_base_path
|
|
44
|
+
p controller_name
|
|
45
|
+
p params_key
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def generate_controller
|
|
49
|
+
template 'controller.rb', File.join(admin_controller_file_path, admin_controller_file_name)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def generate_routes
|
|
53
|
+
route ERB.new(routes_source).result(binding)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
private
|
|
57
|
+
|
|
58
|
+
def admin_controller_file_path
|
|
59
|
+
File.join controller_base_path, *class_path, 'backend'
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def admin_controller_file_name
|
|
63
|
+
"#{plural_name}_controller.rb"
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def controller_base_path
|
|
67
|
+
%w(app controllers)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def controller_name
|
|
71
|
+
"#{module_namespace}::Backend::#{demodulized_class_name.pluralize}Controller"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def demodulized_class_name
|
|
75
|
+
class_name.demodulize
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def module_namespace
|
|
79
|
+
class_path.join('/').camelize
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def params_key
|
|
83
|
+
class_name.demodulize.underscore
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def route_resource_name
|
|
87
|
+
plural_name
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def routes_source
|
|
91
|
+
File.read(File.join(File.expand_path('../templates', __FILE__), 'routes.source'))
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
class <%= controller_name %> < Itsf::Backend::BaseController
|
|
2
|
+
def self.resource_class
|
|
3
|
+
# Set the resource class here.
|
|
4
|
+
#
|
|
5
|
+
# Default: <%= class_name %>
|
|
6
|
+
#
|
|
7
|
+
<%= class_name %>
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def collection_scope
|
|
13
|
+
# Customize the collection scope here for collection retrival (i.e. for the
|
|
14
|
+
# index action).
|
|
15
|
+
#
|
|
16
|
+
# Example: current_user.posts.includes(:comments)
|
|
17
|
+
#
|
|
18
|
+
# Default: super
|
|
19
|
+
#
|
|
20
|
+
super
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def permitted_params
|
|
24
|
+
# Set the allowed params, for your create and update methods.
|
|
25
|
+
#
|
|
26
|
+
# Example: params
|
|
27
|
+
# .require(:<%= params_key %>)
|
|
28
|
+
# .permit(:title, :body)
|
|
29
|
+
#
|
|
30
|
+
params
|
|
31
|
+
.require(:<%= params_key %>)
|
|
32
|
+
.permit()
|
|
33
|
+
end
|
|
34
|
+
end
|
data/lib/itsf/backend.rb
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'active_support/core_ext/module/delegation'
|
|
2
|
+
require 'active_support/core_ext/module/attribute_accessors'
|
|
3
|
+
|
|
4
|
+
module Itsf
|
|
5
|
+
module Backend
|
|
6
|
+
module Configuration
|
|
7
|
+
def configure
|
|
8
|
+
yield self
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
mattr_accessor(:backend_engines) { [] }
|
|
12
|
+
mattr_accessor(:resource_base_controller) { '::ApplicationController' }
|
|
13
|
+
mattr_accessor(:service_base_controller) { '::ApplicationController' }
|
|
14
|
+
mattr_accessor(:dashboard_base_controller) { '::ApplicationController' }
|
|
15
|
+
mattr_accessor(:home_base_controller) { '::ApplicationController' }
|
|
16
|
+
mattr_accessor :engine_mount_point
|
|
17
|
+
mattr_accessor :title_link
|
|
18
|
+
mattr_accessor :resource_title_methods
|
|
19
|
+
mattr_accessor(:disabled_features) { [] }
|
|
20
|
+
mattr_accessor(:hidden_attributes_for) do
|
|
21
|
+
{ index: [], show: [], edit: [] }
|
|
22
|
+
end
|
|
23
|
+
mattr_accessor(:default_pagination_size) { 15 }
|
|
24
|
+
|
|
25
|
+
def registered_controllers
|
|
26
|
+
backend_engines.call.collect do |engine|
|
|
27
|
+
"#{engine.parent}::Configuration".constantize.registered_controllers.call
|
|
28
|
+
end.flatten
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def registered_resources
|
|
32
|
+
registered_controllers.call.collect do |controller|
|
|
33
|
+
controller.resource_class if controller.respond_to?(:resource_class)
|
|
34
|
+
end.compact
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module Itsf
|
|
2
|
+
module Backend
|
|
3
|
+
class Engine < ::Rails::Engine
|
|
4
|
+
isolate_namespace Itsf::Backend
|
|
5
|
+
|
|
6
|
+
config.generators do |g|
|
|
7
|
+
g.test_framework :rspec, fixture: false
|
|
8
|
+
g.fixture_replacement :factory_girl, dir: 'spec/factories'
|
|
9
|
+
g.assets false
|
|
10
|
+
g.helper false
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
config.paths.add root.join(*%w(app extensions concerns)).to_s, eager_load: true
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Itsf
|
|
2
|
+
module Backend
|
|
3
|
+
module Features
|
|
4
|
+
def gem_available?(name)
|
|
5
|
+
Gem::Specification.find_all_by_name(name.to_s).any?
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def features?(name)
|
|
9
|
+
Gem::Specification.find_all_by_name(name.to_s).any? && !Itsf::Backend::Configuration.disabled_features.include?(name)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Itsf
|
|
2
|
+
module Backend
|
|
3
|
+
module Policies
|
|
4
|
+
def policies
|
|
5
|
+
Itsf::Backend::BasePolicy.subclasses
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def policy_permissions
|
|
9
|
+
policies.collect { |klass| klass.instance_methods(false) + klass.superclass.instance_methods(false).collect { |method_name| "#{klass.to_s.underscore}/#{method_name}" } }.flatten.delete_if { |method_name| method_name.to_s !~ /\?$/ }.collect { |permission| permission.chomp('?') }
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Itsf
|
|
2
|
+
module Backend
|
|
3
|
+
module SpecHelpers
|
|
4
|
+
def ensure_backend_engine_homepage(engine_class)
|
|
5
|
+
expect(current_path).to eq(engine_path(engine_class))
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def backend_path
|
|
9
|
+
"#{itsf_backend_path}/"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def engine_path(engine_class)
|
|
13
|
+
send("#{engine_class.engine_name}_path")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def link_to_controller_action(controller_class, action_name, instance = nil)
|
|
17
|
+
if instance
|
|
18
|
+
"link-to-#{controller_class.name.underscore.gsub('_controller', '').gsub(/[\/_]/, '-')}-#{instance.to_param}-#{action_name}"
|
|
19
|
+
else
|
|
20
|
+
"link-to-#{controller_class.name.underscore.gsub('_controller', '').gsub(/[\/_]/, '-')}-#{action_name}"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def create_resource_instance_for_controller(controller_class)
|
|
25
|
+
create(controller_class.resource_class.name.underscore.tr('/', '_'))
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def ensure_current_action(_engine_class, controller_class, action_name, instance = nil)
|
|
29
|
+
case action_name
|
|
30
|
+
when :index
|
|
31
|
+
expect(page).to have_content(controller_class.resource_class.model_name.human(count: :other))
|
|
32
|
+
when :new
|
|
33
|
+
expect(page).to have_content(I18n.t('itsf.backend.base.new.title', resource_name: controller_class.resource_class.model_name.human))
|
|
34
|
+
when :show
|
|
35
|
+
expect(page).to have_content(instance.try_all(*Itsf::Backend::Configuration.resource_title_methods))
|
|
36
|
+
when :edit
|
|
37
|
+
expect(page).to have_content(I18n.t('itsf.backend.base.edit.title', resource_name: instance.class.model_name.human))
|
|
38
|
+
when :destroy
|
|
39
|
+
expect(page).to have_content(instance.class.model_name.human(count: :other))
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Can't use this because of bug: undefined method `segment_keys' for nil:NilClass
|
|
43
|
+
# expect(current_path).to eq(engine_class.routes.url_for(controller: controller_class.controller_name, action: action_name))
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
data/lib/itsf_backend.rb
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'ace-rails-ap'
|
|
2
|
+
require 'coffee-rails'
|
|
3
|
+
require 'cocoon'
|
|
4
|
+
require 'kaminari'
|
|
5
|
+
require 'kaminari-i18n'
|
|
6
|
+
require 'bootstrap-kaminari-views'
|
|
7
|
+
require 'jquery-rails'
|
|
8
|
+
require 'jquery-ui-rails'
|
|
9
|
+
require 'haml-rails'
|
|
10
|
+
require 'pundit'
|
|
11
|
+
require 'rails-i18n'
|
|
12
|
+
require 'less-rails'
|
|
13
|
+
require 'resource_renderer'
|
|
14
|
+
require 'responders'
|
|
15
|
+
require 'route_translator'
|
|
16
|
+
require 'simple_display'
|
|
17
|
+
require 'simple_form'
|
|
18
|
+
require 'twitter-bootstrap-rails'
|
|
19
|
+
|
|
20
|
+
require 'itsf/backend'
|
|
21
|
+
require 'itsf/backend/engine'
|