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.
Files changed (169) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +43 -0
  4. data/Rakefile +21 -0
  5. data/app/assets/images/itsf/backend/favicon.png +0 -0
  6. data/app/assets/javascripts/itsf/backend/application.js +21 -0
  7. data/app/assets/javascripts/itsf/backend/application/ace.coffee +51 -0
  8. data/app/assets/javascripts/itsf/backend/application/acts-as-list.coffee +21 -0
  9. data/app/assets/javascripts/itsf/backend/application/auto-submit.coffee +21 -0
  10. data/app/assets/javascripts/itsf/backend/application/autofocus-last.coffee +4 -0
  11. data/app/assets/javascripts/itsf/backend/application/drop-down-hover.coffee +8 -0
  12. data/app/assets/javascripts/itsf/backend/application/itsf-logo.coffee +24 -0
  13. data/app/assets/javascripts/itsf/backend/vendor/jQueryRotate.js +339 -0
  14. data/app/assets/javascripts/itsf/backend/vendor/jquery.redirect.js +119 -0
  15. data/app/assets/javascripts/itsf_backend.js +1 -0
  16. data/app/assets/stylesheets/itsf/backend/application.css.less +30 -0
  17. data/app/assets/stylesheets/itsf/backend/application/ace.css.less +6 -0
  18. data/app/assets/stylesheets/itsf/backend/application/basic-page.css.less +10 -0
  19. data/app/assets/stylesheets/itsf/backend/application/bootstrap-extensions.css.less +48 -0
  20. data/app/assets/stylesheets/itsf/backend/application/bottom-margin-extension.css.less +9 -0
  21. data/app/assets/stylesheets/itsf/backend/application/button-responsive.css.less +7 -0
  22. data/app/assets/stylesheets/itsf/backend/application/check-box-margin-fix.css.less +5 -0
  23. data/app/assets/stylesheets/itsf/backend/application/code.css.less +6 -0
  24. data/app/assets/stylesheets/itsf/backend/application/form-errors.css.less +6 -0
  25. data/app/assets/stylesheets/itsf/backend/application/form-inline-margin-fixes.css.less +9 -0
  26. data/app/assets/stylesheets/itsf/backend/application/hexagon.css.less +161 -0
  27. data/app/assets/stylesheets/itsf/backend/application/itsf-dashboard-panels.css.less +9 -0
  28. data/app/assets/stylesheets/itsf/backend/application/itsf-logo.css.less +107 -0
  29. data/app/assets/stylesheets/itsf/backend/application/navigation-logo.css.less +5 -0
  30. data/app/assets/stylesheets/itsf/backend/application/panel-footer-pagination.css.less +8 -0
  31. data/app/assets/stylesheets/itsf/backend/application/panel-with-actions.css.less +21 -0
  32. data/app/assets/stylesheets/itsf/backend/application/table-actions.css.less +9 -0
  33. data/app/assets/stylesheets/itsf/backend/application/table-responsive.css.less +3 -0
  34. data/app/assets/stylesheets/itsf/backend/bootstrap_and_overrides.css.less +34 -0
  35. data/app/assets/stylesheets/itsf/backend/vendor/timeline.min.css +1 -0
  36. data/app/assets/stylesheets/itsf_backend.css +3 -0
  37. data/app/concerns/routing/service_concern.rb +12 -0
  38. data/app/controllers/concerns/controller/acts_as_list_concern.rb +13 -0
  39. data/app/controllers/concerns/controller/acts_as_published_concern.rb +13 -0
  40. data/app/controllers/concerns/controller/pagination_concern.rb +15 -0
  41. data/app/controllers/concerns/controller/pundit_namespaced_authorize_concern.rb +19 -0
  42. data/app/controllers/concerns/controller/ransack_concern.rb +25 -0
  43. data/app/controllers/concerns/controller/rest_actions_concern_with_pundit.rb +93 -0
  44. data/app/controllers/itsf/backend/application_controller.rb +6 -0
  45. data/app/controllers/itsf/backend/base_controller.rb +34 -0
  46. data/app/controllers/itsf/backend/dashboard_controller.rb +20 -0
  47. data/app/controllers/itsf/backend/home_controller.rb +27 -0
  48. data/app/controllers/itsf/backend/resource/base_controller.rb +35 -0
  49. data/app/controllers/itsf/backend/service/base_controller.rb +29 -0
  50. data/app/extensions/concerns/head_row/acts_as_list_extensions.rb +11 -0
  51. data/app/extensions/concerns/head_row/association_extensions.rb +14 -0
  52. data/app/extensions/concerns/head_row/paperclip_extensions.rb +11 -0
  53. data/app/extensions/concerns/head_row/published_extensions.rb +11 -0
  54. data/app/extensions/concerns/head_row/ransack_extensions.rb +7 -0
  55. data/app/extensions/concerns/head_row/timestamp_extensions.rb +21 -0
  56. data/app/extensions/concerns/object_extensions.rb +8 -0
  57. data/app/extensions/concerns/ransack_form_builder_extensions.rb +72 -0
  58. data/app/extensions/concerns/resource_row/acts_as_list_extensions.rb +28 -0
  59. data/app/extensions/concerns/resource_row/association_extensions.rb +22 -0
  60. data/app/extensions/concerns/resource_row/paperclip_extensions.rb +18 -0
  61. data/app/extensions/concerns/resource_row/published_extensions.rb +24 -0
  62. data/app/extensions/concerns/resource_row/timestamp_extensions.rb +23 -0
  63. data/app/extensions/concerns/simple_form_form_builder_extensions.rb +28 -0
  64. data/app/helpers/itsf/backend/application_helper.rb +9 -0
  65. data/app/policies/itsf/backend/base_policy.rb +67 -0
  66. data/app/policies/itsf/backend/dashboard_policy.rb +14 -0
  67. data/app/policies/itsf/backend/engine_policy.rb +14 -0
  68. data/app/policies/itsf/backend/service/base_policy.rb +29 -0
  69. data/app/presenters/bootstrap_table_presenter.rb.old +106 -0
  70. data/app/views/itsf/backend/dashboard/_dashboard_panel.html.haml +18 -0
  71. data/app/views/itsf/backend/dashboard/index.html.haml +7 -0
  72. data/app/views/itsf/backend/home/_dashboard_panel.html.haml +26 -0
  73. data/app/views/itsf/backend/home/_index_extras.html.haml +0 -0
  74. data/app/views/itsf/backend/home/index.html.haml +14 -0
  75. data/app/views/itsf/backend/i18n/_navigation.html.haml +10 -0
  76. data/app/views/itsf/backend/resource/base/_form.html.haml +2 -0
  77. data/app/views/itsf/backend/resource/base/_form_errors.html.haml +6 -0
  78. data/app/views/itsf/backend/resource/base/_scopes.html.haml +1 -0
  79. data/app/views/itsf/backend/resource/base/_search.html.haml +3 -0
  80. data/app/views/itsf/backend/resource/base/_show.html.haml +2 -0
  81. data/app/views/itsf/backend/resource/base/_show_extras.html.haml +0 -0
  82. data/app/views/itsf/backend/resource/base/_table.html.haml +2 -0
  83. data/app/views/itsf/backend/resource/base/_table_actions.html.haml +15 -0
  84. data/app/views/itsf/backend/resource/base/edit.html.haml +17 -0
  85. data/app/views/itsf/backend/resource/base/index.html.haml +48 -0
  86. data/app/views/itsf/backend/resource/base/new.html.haml +15 -0
  87. data/app/views/itsf/backend/resource/base/show.html.haml +28 -0
  88. data/app/views/itsf/backend/service/base/_form.html.haml +0 -0
  89. data/app/views/itsf/backend/service/base/_form_errors.html.haml +6 -0
  90. data/app/views/itsf/backend/service/base/_messages.html.erb +5 -0
  91. data/app/views/itsf/backend/service/base/index.html.haml +18 -0
  92. data/app/views/itsf/backend/service/base/invoke.html.haml +16 -0
  93. data/app/views/itsf/backend/service/base/success.html.haml +13 -0
  94. data/app/views/layouts/itsf/backend/_footer.html.haml +1 -0
  95. data/app/views/layouts/itsf/backend/_logo.html.haml +4 -0
  96. data/app/views/layouts/itsf/backend/_main_navigation.html.haml +6 -0
  97. data/app/views/layouts/itsf/backend/_main_navigation_drop_down.html.haml +20 -0
  98. data/app/views/layouts/itsf/backend/base.html.haml +56 -0
  99. data/config/initializers/assets.rb +3 -0
  100. data/config/initializers/extend_object.rb +1 -0
  101. data/config/initializers/extend_ransack_form_builder.rb +4 -0
  102. data/config/initializers/extend_simple_form_form_builder.rb +5 -0
  103. data/config/locales/de.yml +104 -0
  104. data/config/locales/en.yml +99 -0
  105. data/config/rbac.yml +7 -0
  106. data/config/routes.rb +3 -0
  107. data/lib/generators/itsf/backend/home_controller/home_controller_generator.rb +77 -0
  108. data/lib/generators/itsf/backend/home_controller/templates/home_controller.rb +6 -0
  109. data/lib/generators/itsf/backend/home_controller/templates/routes.source +2 -0
  110. data/lib/generators/itsf/backend/install/install_generator.rb +23 -0
  111. data/lib/generators/itsf/backend/install/templates/backend_controller.rb +2 -0
  112. data/lib/generators/itsf/backend/install/templates/initializer.rb +95 -0
  113. data/lib/generators/itsf/backend/install/templates/routes.source +9 -0
  114. data/lib/generators/itsf/backend/resource/resource_generator.rb +96 -0
  115. data/lib/generators/itsf/backend/resource/templates/controller.rb +34 -0
  116. data/lib/generators/itsf/backend/resource/templates/routes.source +2 -0
  117. data/lib/itsf/backend.rb +11 -0
  118. data/lib/itsf/backend/configuration.rb +38 -0
  119. data/lib/itsf/backend/engine.rb +16 -0
  120. data/lib/itsf/backend/features.rb +13 -0
  121. data/lib/itsf/backend/policies.rb +13 -0
  122. data/lib/itsf/backend/spec_helpers.rb +47 -0
  123. data/lib/itsf/backend/version.rb +5 -0
  124. data/lib/itsf_backend.rb +21 -0
  125. data/lib/tasks/itsf/backend_tasks.rake +4 -0
  126. data/spec/dummy/README.rdoc +28 -0
  127. data/spec/dummy/Rakefile +6 -0
  128. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  129. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  130. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  131. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  132. data/spec/dummy/app/models/post.rb +2 -0
  133. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  134. data/spec/dummy/bin/bundle +3 -0
  135. data/spec/dummy/bin/rails +4 -0
  136. data/spec/dummy/bin/rake +4 -0
  137. data/spec/dummy/bin/setup +29 -0
  138. data/spec/dummy/config.ru +4 -0
  139. data/spec/dummy/config/application.rb +38 -0
  140. data/spec/dummy/config/boot.rb +5 -0
  141. data/spec/dummy/config/database.yml +25 -0
  142. data/spec/dummy/config/environment.rb +5 -0
  143. data/spec/dummy/config/environments/development.rb +41 -0
  144. data/spec/dummy/config/environments/production.rb +79 -0
  145. data/spec/dummy/config/environments/test.rb +42 -0
  146. data/spec/dummy/config/initializers/assets.rb +11 -0
  147. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  148. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  149. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  150. data/spec/dummy/config/initializers/inflections.rb +16 -0
  151. data/spec/dummy/config/initializers/itsf_backend.rb +15 -0
  152. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  153. data/spec/dummy/config/initializers/session_store.rb +3 -0
  154. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  155. data/spec/dummy/config/locales/en.yml +23 -0
  156. data/spec/dummy/config/routes.rb +56 -0
  157. data/spec/dummy/config/secrets.yml +22 -0
  158. data/spec/dummy/db/migrate/20151024185112_create_posts.rb +10 -0
  159. data/spec/dummy/db/schema.rb +15 -0
  160. data/spec/dummy/public/404.html +67 -0
  161. data/spec/dummy/public/422.html +67 -0
  162. data/spec/dummy/public/500.html +66 -0
  163. data/spec/dummy/public/favicon.ico +0 -0
  164. data/spec/factories/posts.rb +6 -0
  165. data/spec/models/post_spec.rb +5 -0
  166. data/spec/rails_helper.rb +52 -0
  167. data/spec/spec_helper.rb +90 -0
  168. data/spec/support/addons.rb +3 -0
  169. metadata +688 -0
@@ -0,0 +1,6 @@
1
+ module <%= controller_namespace %>
2
+ class HomeController < Itsf::Backend::HomeController
3
+ def index
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,2 @@
1
+
2
+ root to: 'home#index'
@@ -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,2 @@
1
+ class BackendController < ApplicationController
2
+ 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
@@ -0,0 +1,2 @@
1
+
2
+ resources :<%= route_resource_name %>
@@ -0,0 +1,11 @@
1
+ require 'itsf/backend/configuration'
2
+ require 'itsf/backend/features'
3
+ require 'itsf/backend/policies'
4
+
5
+ module Itsf
6
+ module Backend
7
+ extend Configuration
8
+ extend Features
9
+ extend Policies
10
+ end
11
+ end
@@ -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
@@ -0,0 +1,5 @@
1
+ module Itsf
2
+ module Backend
3
+ VERSION = '1.0.1'
4
+ end
5
+ end
@@ -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'