simple-admin 0.1.0.pre.alpha
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/.codeclimate.yml +3 -0
- data/.gitattributes +1 -0
- data/.gitignore +17 -0
- data/.hound.yml +2 -0
- data/.inch.yml +4 -0
- data/.rspec +2 -0
- data/.rubocop.yml +68 -0
- data/.travis.yml +11 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/CONTRIBUTING.md +51 -0
- data/Gemfile +27 -0
- data/LICENSE.txt +21 -0
- data/README.md +87 -0
- data/Rakefile +20 -0
- data/app/assets/fonts/Simple-Line-Icons.woff +0 -0
- data/app/assets/javascripts/simple_admin/application.js +28 -0
- data/app/assets/stylesheets/simple_admin/application.scss +48 -0
- data/app/assets/stylesheets/simple_admin/global/buttons.css +473 -0
- data/app/assets/stylesheets/simple_admin/global/errors.css +12 -0
- data/app/assets/stylesheets/simple_admin/global/fontawesome-icons.css +3024 -0
- data/app/assets/stylesheets/simple_admin/global/fonts.css +560 -0
- data/app/assets/stylesheets/simple_admin/global/jquery.dataTables.css +169 -0
- data/app/assets/stylesheets/simple_admin/global/pagination.css +11 -0
- data/app/assets/stylesheets/simple_admin/global/reset.css +197 -0
- data/app/assets/stylesheets/simple_admin/global/simple-line-icons.css +672 -0
- data/app/assets/stylesheets/simple_admin/global/table.css +214 -0
- data/app/assets/stylesheets/simple_admin/global/tags.css +87 -0
- data/app/assets/stylesheets/simple_admin/page/aside.css +324 -0
- data/app/assets/stylesheets/simple_admin/page/header.css +332 -0
- data/app/assets/stylesheets/simple_admin/page/main-container.css +222 -0
- data/app/assets/stylesheets/simple_admin/page/sign_in.css +15 -0
- data/app/assets/stylesheets/simple_admin/tabs.css +26 -0
- data/app/controllers/simple_admin/admin/application_controller.rb +21 -0
- data/app/controllers/simple_admin/admin/search_controller.rb +29 -0
- data/app/controllers/simple_admin/admin/system/entities_controller.rb +37 -0
- data/app/controllers/simple_admin/admin/system/entity_field_types_controller.rb +31 -0
- data/app/controllers/simple_admin/admin/system/entity_fields_controller.rb +20 -0
- data/app/helpers/simple_admin_helper.rb +15 -0
- data/app/models/simple_admin/base.rb +14 -0
- data/app/models/simple_admin/entity.rb +50 -0
- data/app/models/simple_admin/entity_field.rb +77 -0
- data/app/models/simple_admin/entity_field_setting.rb +5 -0
- data/app/models/simple_admin/entity_field_type.rb +79 -0
- data/app/views/kaminari/_next_page.html.erb +5 -0
- data/app/views/kaminari/_page.html.erb +3 -0
- data/app/views/kaminari/_paginator.html.erb +26 -0
- data/app/views/kaminari/_prev_page.html.erb +5 -0
- data/app/views/layouts/devise.html.erb +11 -0
- data/app/views/layouts/simple_admin.html.erb +28 -0
- data/app/views/simple_admin/admin/resource/_form.html.erb +19 -0
- data/app/views/simple_admin/admin/resource/edit.html.erb +21 -0
- data/app/views/simple_admin/admin/resource/index.html.erb +13 -0
- data/app/views/simple_admin/admin/resource/new.html.erb +21 -0
- data/app/views/simple_admin/admin/search/index.html.erb +55 -0
- data/app/views/simple_admin/admin/shared/_aside.html.erb +46 -0
- data/app/views/simple_admin/admin/shared/_footer.html.erb +5 -0
- data/app/views/simple_admin/admin/shared/_header.html.erb +7 -0
- data/app/views/simple_admin/admin/shared/collection/_header.html.erb +12 -0
- data/app/views/simple_admin/admin/shared/collection/_table_body.html.erb +29 -0
- data/app/views/simple_admin/admin/shared/collection/_table_header.html.erb +11 -0
- data/app/views/simple_admin/admin/shared/components/_logout.html.erb +6 -0
- data/app/views/simple_admin/admin/shared/components/_search.html.erb +14 -0
- data/app/views/simple_admin/admin/shared/messages/_errors.html.erb +9 -0
- data/app/views/simple_admin/admin/shared/messages/_flash.html.erb +8 -0
- data/app/views/simple_admin/admin/system/entities/_form.html.erb +32 -0
- data/app/views/simple_admin/admin/system/entities/edit.html.erb +27 -0
- data/app/views/simple_admin/admin/system/entities/entity_fields/_form.html.erb +62 -0
- data/app/views/simple_admin/admin/system/entities/entity_fields/edit.html.erb +9 -0
- data/app/views/simple_admin/admin/system/entities/entity_fields/index.html.erb +39 -0
- data/app/views/simple_admin/admin/system/entities/entity_fields/new.html.erb +12 -0
- data/app/views/simple_admin/admin/system/entities/index.html.erb +59 -0
- data/app/views/simple_admin/admin/system/entities/new.html.erb +21 -0
- data/app/views/simple_admin/admin/system/entity_field_types/_form.html.erb +21 -0
- data/app/views/simple_admin/admin/system/entity_field_types/edit.html.erb +24 -0
- data/app/views/simple_admin/admin/system/entity_field_types/index.html.erb +55 -0
- data/app/views/simple_admin/admin/system/entity_field_types/new.html.erb +21 -0
- data/app/views/simple_admin/admin/system/entity_fields/create.js.erb +18 -0
- data/app/views/simple_admin/admin/system/entity_fields/destroy.js.erb +18 -0
- data/app/views/simple_admin/admin/system/entity_fields/update.js.erb +1 -0
- data/app/views/simple_admin/fields/boolean/_form.html.erb +6 -0
- data/app/views/simple_admin/fields/boolean/_index.html.erb +5 -0
- data/app/views/simple_admin/fields/image/_collection.html.erb +5 -0
- data/app/views/simple_admin/fields/image/_form.html.erb +6 -0
- data/app/views/simple_admin/fields/number/_collection.html.erb +5 -0
- data/app/views/simple_admin/fields/number/_form.html.erb +6 -0
- data/app/views/simple_admin/fields/password/_form.html.erb +6 -0
- data/app/views/simple_admin/fields/relation/_collection.html.erb +3 -0
- data/app/views/simple_admin/fields/relation/_form.html.erb +6 -0
- data/app/views/simple_admin/fields/select/_form.html.erb +8 -0
- data/app/views/simple_admin/fields/select/_index.html.erb +5 -0
- data/app/views/simple_admin/fields/string/_collection.html.erb +3 -0
- data/app/views/simple_admin/fields/string/_form.html.erb +6 -0
- data/app/views/simple_admin/fields/tags/_collection.html.erb +3 -0
- data/app/views/simple_admin/fields/tags/_form.html.erb +6 -0
- data/app/views/simple_admin/fields/text/_collection.html.erb +3 -0
- data/app/views/simple_admin/fields/text/_form.html.erb +6 -0
- data/bin/bundle +4 -0
- data/bin/rails +5 -0
- data/codecov.yml +21 -0
- data/config/locales/en.yml +23 -0
- data/config/locales/ru.yml +20 -0
- data/config/routes.rb +19 -0
- data/lib/generators/simple_admin/install_generator.rb +41 -0
- data/lib/generators/simple_admin/migration_generator.rb +24 -0
- data/lib/generators/templates/application_controller.rb +20 -0
- data/lib/generators/templates/initializers/simple_admin.rb.erb +3 -0
- data/lib/generators/templates/migrations/core_data_migration.rb +12 -0
- data/lib/generators/templates/migrations/core_migrations/entities_migration.rb +13 -0
- data/lib/generators/templates/migrations/core_migrations/entity_field_settings_migration.rb +12 -0
- data/lib/generators/templates/migrations/core_migrations/entity_field_types_migration.rb +12 -0
- data/lib/generators/templates/migrations/core_migrations/entity_fields_migration.rb +18 -0
- data/lib/generators/templates/user.rb +24 -0
- data/lib/generators/templates/views/devise/registrations/new.html.erb +46 -0
- data/lib/generators/templates/views/devise/sessions/new.html.erb +35 -0
- data/lib/generators/templates/views/devise/shared/_footer.html.erb +3 -0
- data/lib/simple_admin.rb +39 -0
- data/lib/simple_admin/config.rb +19 -0
- data/lib/simple_admin/engine.rb +15 -0
- data/lib/simple_admin/helpers/boolean_helper.rb +36 -0
- data/lib/simple_admin/helpers/url_helper.rb +29 -0
- data/lib/simple_admin/refinements/boolean.rb +36 -0
- data/lib/simple_admin/resource_controller/actions_builder.rb +40 -0
- data/lib/simple_admin/resource_controller/controller_builder.rb +31 -0
- data/lib/simple_admin/resource_controller/crudify.rb +111 -0
- data/lib/simple_admin/resource_controller/crudify_dynamic_resource.rb +55 -0
- data/lib/simple_admin/resource_controller/dynamic_fields.rb +53 -0
- data/lib/simple_admin/search.rb +23 -0
- data/lib/simple_admin/version.rb +3 -0
- data/simple_admin.gemspec +38 -0
- data/vendor/assets/fonts/Simple-Line-Icons.eot +0 -0
- data/vendor/assets/fonts/Simple-Line-Icons.ttf +0 -0
- data/vendor/assets/fonts/Simple-Line-Icons.woff +0 -0
- data/vendor/assets/fonts/fontawesome-webfont.eot +0 -0
- data/vendor/assets/fonts/fontawesome-webfont.svg +2671 -0
- data/vendor/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/fonts/fontawesome-webfont.woff +0 -0
- data/vendor/assets/fonts/fontawesome-webfont.woff2 +0 -0
- metadata +307 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module SimpleAdmin
|
|
2
|
+
module Helpers
|
|
3
|
+
module BooleanHelper
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
using Refinements::Boolean
|
|
8
|
+
|
|
9
|
+
class << self
|
|
10
|
+
def boolean_fields(*model_column_names)
|
|
11
|
+
model_column_names.each do |column_name|
|
|
12
|
+
build_humanized_method!(column_name)
|
|
13
|
+
build_predicate_method!(column_name)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def build_humanized_method!(column_name)
|
|
20
|
+
postfix = :humanized
|
|
21
|
+
|
|
22
|
+
define_method "#{column_name}_#{postfix}" do
|
|
23
|
+
public_send(column_name).humanize
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def build_predicate_method!(column_name)
|
|
28
|
+
define_method "#{column_name}?" do
|
|
29
|
+
public_send(column_name)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module SimpleAdmin
|
|
2
|
+
module Helpers
|
|
3
|
+
module UrlHelper
|
|
4
|
+
def resource_link(resource, method, namespace=:admin)
|
|
5
|
+
singular_name = resource.class.model_name.element
|
|
6
|
+
plural_name = singular_name.pluralize
|
|
7
|
+
|
|
8
|
+
postfix = :path
|
|
9
|
+
|
|
10
|
+
case method
|
|
11
|
+
when :index
|
|
12
|
+
resource_path = "#{namespace}_#{plural_name}_#{postfix}"
|
|
13
|
+
when :new
|
|
14
|
+
resource_path = "#{method}_#{namespace}_#{singular_name}_#{postfix}"
|
|
15
|
+
when :create
|
|
16
|
+
resource_path = "#{namespace}_#{plural_name}_#{postfix}"
|
|
17
|
+
when :edit
|
|
18
|
+
resource_path = "#{method}_#{namespace}_#{singular_name}_#{postfix}"
|
|
19
|
+
when :update
|
|
20
|
+
resource_path = "#{namespace}_#{singular_name}_#{postfix}"
|
|
21
|
+
when :destroy
|
|
22
|
+
resource_path = "#{namespace}_#{singular_name}_#{postfix}"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
public_send(resource_path, resource)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module SimpleAdmin
|
|
2
|
+
module Refinements
|
|
3
|
+
module Boolean
|
|
4
|
+
# Module with refinements for Boolean classes
|
|
5
|
+
# @since 0.1.0
|
|
6
|
+
|
|
7
|
+
refine TrueClass do
|
|
8
|
+
# Refinement for TrueClass, add humanize method
|
|
9
|
+
#
|
|
10
|
+
# @example True class humanize
|
|
11
|
+
# true.humanize
|
|
12
|
+
# => Yes
|
|
13
|
+
# true.humanize('Example')
|
|
14
|
+
# => Example
|
|
15
|
+
#
|
|
16
|
+
def humanize(format='Yes')
|
|
17
|
+
format
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
refine FalseClass do
|
|
22
|
+
# Refinement for FalseClass, add humanize method
|
|
23
|
+
#
|
|
24
|
+
# @example False class humanize
|
|
25
|
+
# false.humanize
|
|
26
|
+
# => No
|
|
27
|
+
# true.humanize('Example')
|
|
28
|
+
# => Example
|
|
29
|
+
#
|
|
30
|
+
def humanize(format='No')
|
|
31
|
+
format
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module SimpleAdmin
|
|
2
|
+
module ResourceController
|
|
3
|
+
class ActionsBuilder
|
|
4
|
+
# Build CRUD actions for controller
|
|
5
|
+
#
|
|
6
|
+
# @since 0.1.0
|
|
7
|
+
|
|
8
|
+
def self.initialize_actions!(controller_klass, model_name)
|
|
9
|
+
controller_klass.class_eval do
|
|
10
|
+
include ResourceController::DynamicFields
|
|
11
|
+
include ResourceController::Crudify
|
|
12
|
+
|
|
13
|
+
include Helpers::UrlHelper
|
|
14
|
+
|
|
15
|
+
def after_create_path
|
|
16
|
+
resource_link(model_klass.new, :index)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def after_update_path
|
|
20
|
+
resource_link(model_klass.new, :index)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def after_destroy_path
|
|
24
|
+
resource_link(model_klass.new, :index)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
define_method :model_klass do
|
|
28
|
+
model_name.constantize
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def template_path(controller_action=nil)
|
|
34
|
+
"simple_admin/admin/resource/#{controller_action || params[:action]}"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module SimpleAdmin
|
|
2
|
+
module ResourceController
|
|
3
|
+
class ControllerBuilder
|
|
4
|
+
# Build controller class by resource name
|
|
5
|
+
# @example ArticlesController
|
|
6
|
+
# controller_builder = SimpleAdmin::ResourceController::ControllerBuilder.new(:articles)
|
|
7
|
+
# controller_builder.build!
|
|
8
|
+
#
|
|
9
|
+
# => controller_builder.controller_klass
|
|
10
|
+
# => SimpleAdmin::Admin::ArticlesController
|
|
11
|
+
#
|
|
12
|
+
# @since 0.1.0
|
|
13
|
+
|
|
14
|
+
attr_reader :controller_name
|
|
15
|
+
|
|
16
|
+
def initialize(resource_name)
|
|
17
|
+
@controller_name = "#{resource_name.camelize}Controller"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def build!
|
|
21
|
+
unless SimpleAdmin::Admin.const_defined?(controller_name)
|
|
22
|
+
Admin.const_set(controller_name, Class.new(SimpleAdmin::Admin::ApplicationController))
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def controller_klass
|
|
27
|
+
Admin.const_get(controller_name)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
module SimpleAdmin
|
|
2
|
+
module ResourceController
|
|
3
|
+
module Crudify
|
|
4
|
+
# Concern that include all CRUD methods
|
|
5
|
+
#
|
|
6
|
+
# @example
|
|
7
|
+
# class PostsController
|
|
8
|
+
# include SimpleAdmin::ResourceController::Crudify
|
|
9
|
+
#
|
|
10
|
+
# def model_klass
|
|
11
|
+
# SimpleAdmin::Post
|
|
12
|
+
# end
|
|
13
|
+
#
|
|
14
|
+
# def after_create_path
|
|
15
|
+
# admin_posts_path
|
|
16
|
+
# end
|
|
17
|
+
#
|
|
18
|
+
# def after_update_path
|
|
19
|
+
# admin_posts_path
|
|
20
|
+
# end
|
|
21
|
+
#
|
|
22
|
+
# def after_destroy_path
|
|
23
|
+
# admin_posts_path
|
|
24
|
+
# end
|
|
25
|
+
#
|
|
26
|
+
# private
|
|
27
|
+
#
|
|
28
|
+
# def resource_params
|
|
29
|
+
# params.require(:simple_admin_post).permit(:title, :description)
|
|
30
|
+
# end
|
|
31
|
+
# end
|
|
32
|
+
#
|
|
33
|
+
# @since 0.1.0
|
|
34
|
+
|
|
35
|
+
extend ActiveSupport::Concern
|
|
36
|
+
|
|
37
|
+
included do
|
|
38
|
+
def index
|
|
39
|
+
@resources = model_klass.page(params[:page]).per(per_page)
|
|
40
|
+
@resource_name = resource_name
|
|
41
|
+
|
|
42
|
+
render template_path
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def new
|
|
46
|
+
@resource = model_klass.new
|
|
47
|
+
@resource_name = resource_name
|
|
48
|
+
|
|
49
|
+
render template_path
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def edit
|
|
53
|
+
@resource = model_klass.find(params[:id])
|
|
54
|
+
@resource_name = resource_name
|
|
55
|
+
|
|
56
|
+
render template_path
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def update
|
|
60
|
+
@resource = model_klass.find(params[:id])
|
|
61
|
+
|
|
62
|
+
if @resource.update(resource_params)
|
|
63
|
+
redirect_to after_update_path, notice: t('simple_admin.resource.update.success', resource_name: resource_name)
|
|
64
|
+
else
|
|
65
|
+
render template: template_path(:edit)
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def create
|
|
70
|
+
@resource =
|
|
71
|
+
if defined?(resource_modificator)
|
|
72
|
+
resource_modificator.build(resource_params)
|
|
73
|
+
else
|
|
74
|
+
model_klass.new(resource_params)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
if @resource.save
|
|
78
|
+
redirect_to after_create_path, notice: t('simple_admin.resource.create.success', resource_name: resource_name)
|
|
79
|
+
else
|
|
80
|
+
render template: template_path(:new)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def destroy
|
|
85
|
+
@resource = model_klass.find(params[:id])
|
|
86
|
+
@resource.destroy
|
|
87
|
+
|
|
88
|
+
redirect_to after_destroy_path, notice: t('simple_admin.resource.destroy.success', resource_name: resource_name)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
private
|
|
92
|
+
|
|
93
|
+
def resource_params
|
|
94
|
+
params.require(resource_params_name).permit(resource_attributes)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def resource_name
|
|
98
|
+
model_klass.model_name.element.capitalize
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def template_path(controller_action=nil)
|
|
102
|
+
"#{params[:controller]}/#{controller_action || params[:action]}"
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def per_page
|
|
106
|
+
SimpleAdmin::Config.per_page
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module SimpleAdmin
|
|
2
|
+
module ResourceController
|
|
3
|
+
module CrudifyDynamicResource
|
|
4
|
+
# Concern that include methods for remote actions
|
|
5
|
+
#
|
|
6
|
+
# @example
|
|
7
|
+
# class PostsController
|
|
8
|
+
# include SimpleAdmin::ResourceController::CrudifyDynamicResource
|
|
9
|
+
#
|
|
10
|
+
# def model_klass
|
|
11
|
+
# Post
|
|
12
|
+
# end
|
|
13
|
+
#
|
|
14
|
+
# private
|
|
15
|
+
#
|
|
16
|
+
# def resource_params
|
|
17
|
+
# params.require(:simple_admin_post).permit(:title, :description)
|
|
18
|
+
# end
|
|
19
|
+
# end
|
|
20
|
+
#
|
|
21
|
+
# @since 0.1.0
|
|
22
|
+
|
|
23
|
+
extend ActiveSupport::Concern
|
|
24
|
+
|
|
25
|
+
included do
|
|
26
|
+
def create
|
|
27
|
+
@resource = model_klass.new(resource_params)
|
|
28
|
+
@resource.save
|
|
29
|
+
|
|
30
|
+
respond_to do |format|
|
|
31
|
+
format.js { render layout: false }
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def update
|
|
36
|
+
@resource = model_klass.find(params[:id])
|
|
37
|
+
@resource.update(resource_params)
|
|
38
|
+
|
|
39
|
+
respond_to do |format|
|
|
40
|
+
format.js { render layout: false }
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def destroy
|
|
45
|
+
@resource = model_klass.find(params[:id])
|
|
46
|
+
@resource.destroy
|
|
47
|
+
|
|
48
|
+
respond_to do |format|
|
|
49
|
+
format.js { render layout: false }
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
module SimpleAdmin
|
|
2
|
+
module ResourceController
|
|
3
|
+
module DynamicFields
|
|
4
|
+
# Concern that include methods for getting entity and entity fields
|
|
5
|
+
# Working together with ResourceCrud
|
|
6
|
+
# @example PostsController with ResourceCrud and ResourceFields
|
|
7
|
+
# class PostsController
|
|
8
|
+
# include ResourceController::Crudify
|
|
9
|
+
# include SimpleAdmin::ResourceFields
|
|
10
|
+
#
|
|
11
|
+
# ...
|
|
12
|
+
# end
|
|
13
|
+
# @since 0.1.0
|
|
14
|
+
|
|
15
|
+
extend ActiveSupport::Concern
|
|
16
|
+
|
|
17
|
+
included do
|
|
18
|
+
before_action :initialize_fields_entities!
|
|
19
|
+
|
|
20
|
+
# Receives entity and entity fields by model class and field_presentation
|
|
21
|
+
#
|
|
22
|
+
# @since 0.1.0
|
|
23
|
+
def initialize_fields_entities!
|
|
24
|
+
@entity = SimpleAdmin::Entity.find_by(model_klass_name: model_klass.to_s)
|
|
25
|
+
@entity_fields = @entity.entity_fields.where(presentation: field_presentation)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def field_presentation
|
|
31
|
+
case params[:action]
|
|
32
|
+
when 'index'
|
|
33
|
+
:collection
|
|
34
|
+
when 'new'
|
|
35
|
+
:form
|
|
36
|
+
when 'create'
|
|
37
|
+
:form
|
|
38
|
+
when 'edit'
|
|
39
|
+
:form
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def resource_params_name
|
|
44
|
+
model_klass.model_name.singular
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def resource_attributes
|
|
48
|
+
SimpleAdmin::Entity.form_attributes(model_klass)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module SimpleAdmin
|
|
2
|
+
class Search
|
|
3
|
+
attr_reader :search_query, :resource_klass, :model_attributes
|
|
4
|
+
|
|
5
|
+
def initialize(search_query, resource_klass)
|
|
6
|
+
@search_query = search_query
|
|
7
|
+
@resource_klass = resource_klass
|
|
8
|
+
|
|
9
|
+
@model_attributes = SimpleAdmin::EntityField.joins(:entity)
|
|
10
|
+
.where(simple_admin_entities: { model_klass_name: resource_klass.to_s })
|
|
11
|
+
.search_indexable_columns
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def process
|
|
15
|
+
return [] if model_attributes.empty?
|
|
16
|
+
|
|
17
|
+
query = model_attributes.map { |model_attribute| "#{model_attribute} LIKE ?" }.join(' OR ')
|
|
18
|
+
query_arguments = model_attributes.map { "%#{search_query}%" }
|
|
19
|
+
|
|
20
|
+
resource_klass.where(query, *query_arguments)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
|
+
|
|
6
|
+
require 'simple_admin/version'
|
|
7
|
+
|
|
8
|
+
Gem::Specification.new do |spec|
|
|
9
|
+
spec.name = 'simple-admin'
|
|
10
|
+
spec.version = SimpleAdmin::VERSION
|
|
11
|
+
spec.authors = ['Dmitriy Strukov']
|
|
12
|
+
spec.email = ['dmitiry_strukov2011@mail.ru']
|
|
13
|
+
|
|
14
|
+
spec.summary = 'simple-admin'
|
|
15
|
+
spec.description = 'simple-admin'
|
|
16
|
+
spec.homepage = 'https://evil-raccoon.github.io/'
|
|
17
|
+
spec.license = 'MIT'
|
|
18
|
+
|
|
19
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
20
|
+
f.match(%r{^(test|spec|features)/})
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
spec.bindir = 'exe'
|
|
24
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
25
|
+
spec.require_paths = ['lib']
|
|
26
|
+
|
|
27
|
+
spec.add_development_dependency 'bundler', '~> 1.15'
|
|
28
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
|
29
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
|
30
|
+
|
|
31
|
+
spec.add_development_dependency 'actionpack'
|
|
32
|
+
spec.add_development_dependency 'actionview'
|
|
33
|
+
spec.add_development_dependency 'activerecord'
|
|
34
|
+
|
|
35
|
+
spec.add_dependency 'bootstrap-sass'
|
|
36
|
+
spec.add_dependency 'jquery-ui-rails'
|
|
37
|
+
spec.add_dependency 'kaminari'
|
|
38
|
+
end
|