rademade_admin 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +5 -12
- data/app/assets/javascripts/rademade_admin/app/common/related-index.coffee +5 -24
- data/app/assets/javascripts/rademade_admin/form/form-ajax-submit.coffee +4 -0
- data/app/assets/javascripts/rademade_admin.coffee +28 -7
- data/app/assets/stylesheets/rademade_admin/detail_admin/icons.scss.erb +1 -1
- data/app/assets/stylesheets/rademade_admin.scss.erb +19 -0
- data/app/controllers/rademade_admin/abstract_controller.rb +2 -0
- data/app/controllers/rademade_admin/admin_users_controller.rb +2 -1
- data/app/controllers/rademade_admin/application_controller.rb +3 -0
- data/app/controllers/rademade_admin/dashboard_controller.rb +1 -1
- data/app/controllers/rademade_admin/model_controller.rb +48 -25
- data/app/controllers/rademade_admin/sessions_controller.rb +2 -1
- data/app/helpers/rademade_admin/field_helper.rb +30 -3
- data/app/helpers/rademade_admin/form_helper.rb +12 -18
- data/app/helpers/rademade_admin/menu_helper.rb +2 -1
- data/app/helpers/rademade_admin/name_helper.rb +2 -1
- data/app/helpers/rademade_admin/upload_preview_helper.rb +2 -1
- data/app/helpers/rademade_admin/uri_helper.rb +16 -0
- data/app/inputs/rademade_admin/admin_file_input.rb +2 -1
- data/app/inputs/rademade_admin/admin_select_input.rb +2 -1
- data/app/inputs/rademade_admin/admin_textarea_input.rb +2 -1
- data/app/inputs/rademade_admin/boolean_input.rb +2 -1
- data/app/models/rademade_admin/ability.rb +1 -1
- data/app/serializers/autocomplete/base_serializer.rb +49 -0
- data/app/serializers/autocomplete/link_serializer.rb +20 -0
- data/app/services/form_builder.rb +2 -1
- data/app/services/linker.rb +34 -0
- data/app/services/loader_service.rb +2 -1
- data/app/services/login/error.rb +2 -1
- data/app/services/login.rb +2 -1
- data/app/services/model_controller/instance_options.rb +1 -0
- data/app/services/model_controller/model_options.rb +2 -1
- data/app/services/model_controller/notifier.rb +2 -1
- data/app/services/model_controller/templates.rb +10 -12
- data/app/services/saver.rb +2 -1
- data/app/services/search/conditions/abstract.rb +42 -38
- data/app/services/search/conditions/autocomplete.rb +34 -28
- data/app/services/search/conditions/list.rb +30 -23
- data/app/services/search/conditions/part/where.rb +28 -0
- data/app/services/search/conditions/related_list.rb +54 -0
- data/app/services/search/query_adapter/abstract.rb +30 -39
- data/app/services/search/query_adapter/active_record.rb +33 -21
- data/app/services/search/query_adapter/mongoid.rb +38 -20
- data/app/services/search/searcher.rb +5 -4
- data/app/services/sortable_service.rb +2 -1
- data/app/services/video_service.rb +2 -1
- data/app/views/rademade_admin/_blocks/_menu.html.erb +7 -1
- data/app/views/rademade_admin/_blocks/_sub_menu.html.erb +0 -8
- data/app/views/rademade_admin/_layouts/inner/related_index_table.html.erb +1 -2
- data/app/views/rademade_admin/abstract/index.html.erb +6 -5
- data/app/views/rademade_admin/abstract/related_index.html.erb +11 -4
- data/config/initializers/bower_rails.rb +6 -0
- data/config/initializers/devise.rb +1 -0
- data/config/initializers/formtastic.rb +13 -0
- data/config/initializers/routes.rb +2 -1
- data/config/routes.rb +2 -1
- data/lib/rademade_admin/bower/performer.rb +14 -0
- data/lib/rademade_admin/configuration.rb +2 -1
- data/lib/rademade_admin/engine.rb +5 -1
- data/lib/rademade_admin/file_info_formatter.rb +2 -1
- data/lib/rademade_admin/hrml_buffer.rb +2 -1
- data/lib/rademade_admin/model/configuration/fields.rb +2 -1
- data/lib/rademade_admin/model/configuration.rb +2 -1
- data/lib/rademade_admin/model/data_adapter/active_record.rb +10 -4
- data/lib/rademade_admin/model/data_adapter/mongoid.rb +6 -1
- data/lib/rademade_admin/model/data_adapter.rb +6 -1
- data/lib/rademade_admin/model/graph.rb +2 -1
- data/lib/rademade_admin/model/info.rb +4 -3
- data/lib/rademade_admin/model/reflection/data.rb +2 -1
- data/lib/rademade_admin/model/reflection/uploader.rb +2 -2
- data/lib/rademade_admin/model/reflection.rb +5 -13
- data/lib/rademade_admin/routing/mapper.rb +4 -1
- data/lib/rademade_admin/routing/resource.rb +2 -1
- data/lib/rademade_admin/routing.rb +2 -1
- data/lib/rademade_admin/sortable.rb +1 -0
- data/lib/rademade_admin/uploader/photo.rb +2 -1
- data/lib/rademade_admin/uploader/video.rb +2 -1
- data/lib/rademade_admin/user.rb +1 -0
- data/lib/rademade_admin/version.rb +2 -1
- data/lib/rademade_admin.rb +8 -6
- data/lib/tasks/rademade_bower_install.rake +9 -0
- metadata +92 -339
- data/MIT-LICENSE +0 -20
- data/app/assets/fonts/rademade_admin/glyphicons-halflings-regular.eot +0 -0
- data/app/assets/fonts/rademade_admin/glyphicons-halflings-regular.svg +0 -228
- data/app/assets/fonts/rademade_admin/glyphicons-halflings-regular.ttf +0 -0
- data/app/assets/fonts/rademade_admin/glyphicons-halflings-regular.woff +0 -0
- data/app/assets/images/rademade_admin/datatables/back_disabled.png +0 -0
- data/app/assets/images/rademade_admin/datatables/back_enabled.png +0 -0
- data/app/assets/images/rademade_admin/datatables/back_enabled_hover.png +0 -0
- data/app/assets/images/rademade_admin/datatables/forward_disabled.png +0 -0
- data/app/assets/images/rademade_admin/datatables/forward_enabled.png +0 -0
- data/app/assets/images/rademade_admin/datatables/forward_enabled_hover.png +0 -0
- data/app/assets/images/rademade_admin/datatables/sort_asc.png +0 -0
- data/app/assets/images/rademade_admin/datatables/sort_asc_disabled.png +0 -0
- data/app/assets/images/rademade_admin/datatables/sort_both.png +0 -0
- data/app/assets/images/rademade_admin/datatables/sort_desc.png +0 -0
- data/app/assets/images/rademade_admin/datatables/sort_desc_disabled.png +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/animated-overlay.gif +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/ui-bg_flat_10_000000_40x100.png +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/ui-icons_222222_256x240.png +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/ui-icons_228ef1_256x240.png +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/ui-icons_ef8c08_256x240.png +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/ui-icons_ffd27a_256x240.png +0 -0
- data/app/assets/images/rademade_admin/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
- data/app/assets/images/rademade_admin/select2/select2.png +0 -0
- data/app/assets/images/rademade_admin/select2/select2x2.png +0 -0
- data/app/assets/images/rademade_admin/select2/spinner.gif +0 -0
- data/app/assets/images/rademade_admin/uniform/bg-input-focus.png +0 -0
- data/app/assets/images/rademade_admin/uniform/bg-input.png +0 -0
- data/app/assets/images/rademade_admin/uniform/sprite.png +0 -0
- data/app/assets/javascripts/rademade_admin/form/library/jquery.form-serialize.js +0 -54
- data/app/assets/javascripts/rademade_admin/form/library/jquery.form.js +0 -1121
- data/app/assets/javascripts/rademade_admin/form/library/jquery.formrestrict.js +0 -27
- data/app/assets/javascripts/rademade_admin/form/library/jquery.validate.js +0 -1231
- data/app/assets/javascripts/rademade_admin/form/library/jquery.validate.messages_ru.js +0 -27
- data/app/assets/javascripts/rademade_admin/library/backbone.js +0 -1581
- data/app/assets/javascripts/rademade_admin/library/bootstrap/bootstrap.datepicker.js +0 -989
- data/app/assets/javascripts/rademade_admin/library/bootstrap/bootstrap.js +0 -1992
- data/app/assets/javascripts/rademade_admin/library/jquery/jquery-ui-1.10.4.custom.min.js +0 -6
- data/app/assets/javascripts/rademade_admin/library/jquery/jquery.dataTables.js +0 -12099
- data/app/assets/javascripts/rademade_admin/library/jquery/jquery.flot.js +0 -2960
- data/app/assets/javascripts/rademade_admin/library/jquery/jquery.flot.resize.js +0 -60
- data/app/assets/javascripts/rademade_admin/library/jquery/jquery.flot.stack.js +0 -188
- data/app/assets/javascripts/rademade_admin/library/jquery/jquery.knob.js +0 -661
- data/app/assets/javascripts/rademade_admin/library/jquery/jquery.uniform.min.js +0 -1
- data/app/assets/javascripts/rademade_admin/library/notifier.custom.js +0 -431
- data/app/assets/javascripts/rademade_admin/library/underscore.js +0 -1276
- data/app/assets/javascripts/rademade_admin/library/wysihtml5-0.3.0.js +0 -9463
- data/app/assets/stylesheets/rademade_admin/bootstrap/bootstrap.css.erb +0 -5911
- data/app/assets/stylesheets/rademade_admin/lib/jquery-ui-1.10.2.custom.css.erb +0 -544
- data/app/assets/stylesheets/rademade_admin/lib/select2.css.erb +0 -513
- data/app/assets/stylesheets/rademade_admin/lib/uniform.default.css.erb +0 -366
- data/app/assets/stylesheets/rademade_admin.css +0 -14
- data/app/models/rademade_admin/user.rb +0 -6
- data/app/serializers/autocomplete_serializer.rb +0 -46
- data/app/services/model_controller/linker.rb +0 -49
- data/test/dummy/README.rdoc +0 -28
- data/test/dummy/Rakefile +0 -6
- data/test/dummy/app/assets/javascripts/application.js +0 -13
- data/test/dummy/app/assets/stylesheets/application.css +0 -13
- data/test/dummy/app/controllers/application_controller.rb +0 -5
- data/test/dummy/app/controllers/rademade_admin/posts_controller.rb +0 -9
- data/test/dummy/app/controllers/rademade_admin/users_controller.rb +0 -14
- data/test/dummy/app/helpers/application_helper.rb +0 -2
- data/test/dummy/app/models/post.rb +0 -9
- data/test/dummy/app/models/user.rb +0 -7
- data/test/dummy/app/views/layouts/application.html.erb +0 -14
- data/test/dummy/bin/bundle +0 -3
- data/test/dummy/bin/rails +0 -4
- data/test/dummy/bin/rake +0 -4
- data/test/dummy/config/application.rb +0 -29
- data/test/dummy/config/boot.rb +0 -5
- data/test/dummy/config/environment.rb +0 -5
- data/test/dummy/config/environments/development.rb +0 -29
- data/test/dummy/config/environments/production.rb +0 -80
- data/test/dummy/config/environments/test.rb +0 -36
- data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/test/dummy/config/initializers/filter_parameter_logging.rb +0 -4
- data/test/dummy/config/initializers/inflections.rb +0 -16
- data/test/dummy/config/initializers/mime_types.rb +0 -5
- data/test/dummy/config/initializers/rademade_admin.rb +0 -3
- data/test/dummy/config/initializers/secret_token.rb +0 -12
- data/test/dummy/config/initializers/session_store.rb +0 -3
- data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
- data/test/dummy/config/locales/en.yml +0 -23
- data/test/dummy/config/mongoid.yml +0 -6
- data/test/dummy/config/routes.rb +0 -8
- data/test/dummy/config.ru +0 -4
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/public/404.html +0 -58
- data/test/dummy/public/422.html +0 -58
- data/test/dummy/public/500.html +0 -57
- data/test/dummy/public/favicon.ico +0 -0
- data/test/integration/navigation_test.rb +0 -10
- data/test/rademade_admin_test.rb +0 -7
- data/test/test_helper.rb +0 -15
@@ -1,35 +1,42 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require 'search/conditions/abstract'
|
3
|
+
|
1
4
|
module RademadeAdmin
|
2
5
|
module Search
|
3
|
-
|
6
|
+
module Conditions
|
7
|
+
class List < Abstract
|
4
8
|
|
5
|
-
|
9
|
+
protected
|
6
10
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
11
|
+
def where
|
12
|
+
where_conditions = Where.new(:and)
|
13
|
+
@params.slice(*@origin_fields).each do |field, value|
|
14
|
+
where_conditions.add(field, value)
|
15
|
+
end
|
16
|
+
where_conditions
|
17
|
+
end
|
12
18
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
19
|
+
def order
|
20
|
+
field = @params[:sort] || default_order_field
|
21
|
+
direction = @params[:direction] || :asc
|
22
|
+
[{field => direction}]
|
23
|
+
end
|
18
24
|
|
19
|
-
|
20
|
-
|
21
|
-
|
25
|
+
def page
|
26
|
+
@params[:page] || 1
|
27
|
+
end
|
22
28
|
|
23
|
-
|
24
|
-
|
25
|
-
|
29
|
+
def per_page
|
30
|
+
@params[:paginate] || 20
|
31
|
+
end
|
26
32
|
|
27
|
-
|
33
|
+
private
|
28
34
|
|
29
|
-
|
30
|
-
|
31
|
-
|
35
|
+
def default_order_field
|
36
|
+
@origin_fields.include?('position') ? :position : :id
|
37
|
+
end
|
32
38
|
|
39
|
+
end
|
33
40
|
end
|
34
41
|
end
|
35
|
-
end
|
42
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
module RademadeAdmin
|
3
|
+
module Search
|
4
|
+
module Conditions
|
5
|
+
class Where
|
6
|
+
|
7
|
+
attr_reader :type, :parts
|
8
|
+
|
9
|
+
def initialize(type)
|
10
|
+
@type = type
|
11
|
+
@parts = []
|
12
|
+
end
|
13
|
+
|
14
|
+
def add(field, value)
|
15
|
+
@parts << {
|
16
|
+
:field => field,
|
17
|
+
:value => value
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
def sub_add(where)
|
22
|
+
@parts << where
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require 'search/conditions/abstract'
|
3
|
+
|
4
|
+
module RademadeAdmin
|
5
|
+
module Search
|
6
|
+
module Conditions
|
7
|
+
class RelatedList < Abstract
|
8
|
+
|
9
|
+
def base_condition(model)
|
10
|
+
model_related_name = model.to_s.tableize.gsub('/', '_').to_sym
|
11
|
+
@params[:parent].constantize.find(@params[:parent_id]).send(model_related_name)
|
12
|
+
end
|
13
|
+
|
14
|
+
protected
|
15
|
+
|
16
|
+
def where
|
17
|
+
where_conditions = Where.new(:and)
|
18
|
+
@params.slice(*@origin_fields).each do |field, value|
|
19
|
+
where_conditions.add(field, value)
|
20
|
+
end
|
21
|
+
where_conditions
|
22
|
+
end
|
23
|
+
|
24
|
+
def order
|
25
|
+
field = @params[:sort] || default_order_field
|
26
|
+
[{field => direction}]
|
27
|
+
end
|
28
|
+
|
29
|
+
def page
|
30
|
+
@params[:page] || 1
|
31
|
+
end
|
32
|
+
|
33
|
+
def per_page
|
34
|
+
@params[:paginate] || 20
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def default_order_field
|
40
|
+
@origin_fields.include?('position') ? :position : :id
|
41
|
+
end
|
42
|
+
|
43
|
+
def direction
|
44
|
+
if @params[:direction].present?
|
45
|
+
@params[:direction].to_sym
|
46
|
+
else
|
47
|
+
:asc
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -1,54 +1,45 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
module RademadeAdmin
|
2
3
|
module Search
|
3
|
-
|
4
|
+
module QueryAdapter
|
5
|
+
class Abstract
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
|
-
def apply_conditions(search_conditions, is_related_list)
|
10
|
-
# todo something with is_related_list
|
11
|
-
@params = search_conditions.params
|
12
|
-
@result = is_related_list ? related_base_condition : base_condition
|
13
|
-
search_conditions.conditions.each do |query_part, values|
|
14
|
-
@result = self.send(query_part, values) unless values.nil?
|
7
|
+
def initialize(model)
|
8
|
+
@model = model
|
15
9
|
end
|
16
|
-
@result
|
17
|
-
end
|
18
10
|
|
19
|
-
|
11
|
+
def apply_conditions(search_conditions)
|
12
|
+
@params = search_conditions.params
|
13
|
+
@result = search_conditions.base_condition(@model)
|
14
|
+
search_conditions.conditions.each do |query_part, values|
|
15
|
+
@result = self.send(query_part, values) unless values.nil?
|
16
|
+
end
|
17
|
+
@result
|
18
|
+
end
|
20
19
|
|
21
|
-
|
22
|
-
@model.unscoped
|
23
|
-
end
|
20
|
+
protected
|
24
21
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
model_related_name = @model.to_s.demodulize.pluralize.downcase.to_sym
|
29
|
-
parent_model.find(parent_id).send(model_related_name).unscoped
|
30
|
-
end
|
22
|
+
def where(where_conditions)
|
23
|
+
@result
|
24
|
+
end
|
31
25
|
|
32
|
-
|
33
|
-
|
34
|
-
|
26
|
+
def order(order_conditions)
|
27
|
+
@result
|
28
|
+
end
|
35
29
|
|
36
|
-
|
37
|
-
|
38
|
-
|
30
|
+
def page(page_condition)
|
31
|
+
@result.page(page_condition)
|
32
|
+
end
|
39
33
|
|
40
|
-
|
41
|
-
|
42
|
-
|
34
|
+
def per_page(per_page_condition)
|
35
|
+
@result.per(per_page_condition)
|
36
|
+
end
|
43
37
|
|
44
|
-
|
45
|
-
|
46
|
-
|
38
|
+
def limit(limit_condition)
|
39
|
+
@result.limit(limit_condition)
|
40
|
+
end
|
47
41
|
|
48
|
-
def limit(limit_condition)
|
49
|
-
@result.limit(limit_condition)
|
50
42
|
end
|
51
|
-
|
52
43
|
end
|
53
44
|
end
|
54
|
-
end
|
45
|
+
end
|
@@ -1,33 +1,45 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require 'search/query_adapter/abstract'
|
3
|
+
|
1
4
|
module RademadeAdmin
|
2
5
|
module Search
|
3
|
-
|
6
|
+
module QueryAdapter
|
7
|
+
class ActiveRecord < Abstract
|
8
|
+
|
9
|
+
protected
|
10
|
+
|
11
|
+
def where(where_conditions)
|
12
|
+
@values = []
|
13
|
+
condition = collect_where_conditions(where_conditions)
|
14
|
+
@result.where([condition, *@values])
|
15
|
+
end
|
4
16
|
|
5
|
-
|
17
|
+
def order(order_conditions)
|
18
|
+
order_conditions.each do |order_condition|
|
19
|
+
@result = @result.order(order_condition)
|
20
|
+
end
|
21
|
+
@result
|
22
|
+
end
|
6
23
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
if value.is_a? Array
|
14
|
-
condition += "#{field} IN (?)"
|
24
|
+
def collect_where_conditions(where_conditions)
|
25
|
+
condition = ''
|
26
|
+
where_conditions.parts.each do |part|
|
27
|
+
condition += " #{where_conditions.type.to_s.capitalize} " unless condition.empty?
|
28
|
+
if part.is_a? RademadeAdmin::Search::Conditions::Where
|
29
|
+
condition += "(#{collect_where_conditions(part)})"
|
15
30
|
else
|
16
|
-
|
31
|
+
if part[:value].is_a? Array
|
32
|
+
condition += "#{part[:field]} IN (?)"
|
33
|
+
else
|
34
|
+
condition += "#{part[:field]} = ?"
|
35
|
+
end
|
36
|
+
@values << part[:value]
|
17
37
|
end
|
18
|
-
values << value
|
19
38
|
end
|
39
|
+
condition
|
20
40
|
end
|
21
|
-
@result.where([condition, *values])
|
22
|
-
end
|
23
41
|
|
24
|
-
def order(order_conditions)
|
25
|
-
order_conditions.each do |order_condition|
|
26
|
-
@result = @result.order(order_condition)
|
27
|
-
end
|
28
|
-
@result
|
29
42
|
end
|
30
|
-
|
31
43
|
end
|
32
44
|
end
|
33
|
-
end
|
45
|
+
end
|
@@ -1,33 +1,51 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require 'search/query_adapter/abstract'
|
3
|
+
|
1
4
|
module RademadeAdmin
|
2
5
|
module Search
|
3
|
-
|
6
|
+
module QueryAdapter
|
7
|
+
class Mongoid < Abstract
|
8
|
+
|
9
|
+
protected
|
4
10
|
|
5
|
-
|
11
|
+
WHERE_METHOD_MAP = { :or => :or, :and => :where }.freeze
|
6
12
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
13
|
+
def where(where_conditions)
|
14
|
+
if defined?(::Mongoid::Paranoia) and @model.ancestors.include? ::Mongoid::Paranoia
|
15
|
+
where_condition = RademadeAdmin::Search::Conditions::Where.new(:and)
|
16
|
+
where_condition.add(:deleted_at, nil)
|
17
|
+
where_condition.sub_add(where_conditions) if where_conditions
|
18
|
+
where_conditions = where_condition
|
19
|
+
end
|
20
|
+
collect_where_condition(where_conditions, @result)
|
11
21
|
end
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
22
|
+
|
23
|
+
def order(order_conditions)
|
24
|
+
order_conditions.each do |order_condition|
|
25
|
+
@result = @result.order_by(order_condition)
|
26
|
+
end
|
27
|
+
@result
|
28
|
+
end
|
29
|
+
|
30
|
+
def collect_where_condition(where_conditions, result)
|
31
|
+
where_method = WHERE_METHOD_MAP[where_conditions.type]
|
32
|
+
where_conditions.parts.each do |part|
|
33
|
+
if part.is_a? RademadeAdmin::Search::Conditions::Where
|
34
|
+
result = result.send(where_method, where_sub_condition(part))
|
35
|
+
else
|
36
|
+
field = part[:field]
|
37
|
+
field = field.in if part[:value].is_a? Array
|
38
|
+
result = result.send(where_method, field => part[:value])
|
17
39
|
end
|
18
|
-
@result = @result.send(method_map[type], field => value)
|
19
40
|
end
|
41
|
+
result
|
20
42
|
end
|
21
|
-
@result
|
22
|
-
end
|
23
43
|
|
24
|
-
|
25
|
-
|
26
|
-
@result = @result.order_by(order_condition)
|
44
|
+
def where_sub_condition(where_sub_conditions)
|
45
|
+
collect_where_condition(where_sub_conditions, @model.all).selector
|
27
46
|
end
|
28
|
-
|
47
|
+
|
29
48
|
end
|
30
|
-
|
31
49
|
end
|
32
50
|
end
|
33
|
-
end
|
51
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
1
2
|
module RademadeAdmin
|
2
3
|
module Search
|
3
4
|
class Searcher
|
@@ -6,14 +7,14 @@ module RademadeAdmin
|
|
6
7
|
@model_info = model_info
|
7
8
|
end
|
8
9
|
|
9
|
-
def search(search_conditions
|
10
|
-
query_adapter.apply_conditions(search_conditions
|
10
|
+
def search(search_conditions)
|
11
|
+
query_adapter.apply_conditions(search_conditions)
|
11
12
|
end
|
12
13
|
|
13
14
|
def query_adapter
|
14
|
-
@query_adapter ||= "RademadeAdmin::Search::#{@model_info.model_reflection.orm_type}".constantize.new(@model_info.model)
|
15
|
+
@query_adapter ||= "RademadeAdmin::Search::QueryAdapter::#{@model_info.model_reflection.orm_type}".constantize.new(@model_info.model)
|
15
16
|
end
|
16
17
|
|
17
18
|
end
|
18
19
|
end
|
19
|
-
end
|
20
|
+
end
|
@@ -31,7 +31,13 @@
|
|
31
31
|
</a><%
|
32
32
|
|
33
33
|
if has_sub_items
|
34
|
-
|
34
|
+
%><ul class="submenu"><%
|
35
|
+
concat render 'rademade_admin/_blocks/sub_menu/link', {
|
36
|
+
:uri => admin_list_uri(menu_item[:model_info]),
|
37
|
+
:title => admin_list_name(menu_item[:model_info])
|
38
|
+
}
|
39
|
+
concat render 'rademade_admin/_blocks/sub_menu', :menu_item => menu_item
|
40
|
+
%></ul><%
|
35
41
|
end
|
36
42
|
|
37
43
|
%></li><%
|
@@ -1,12 +1,4 @@
|
|
1
1
|
<ul class="submenu"><%
|
2
|
-
concat render 'rademade_admin/_blocks/sub_menu/link', {
|
3
|
-
:uri => admin_list_uri(menu_item[:model_info]),
|
4
|
-
:title => admin_list_name(menu_item[:model_info])
|
5
|
-
}
|
6
|
-
concat render 'rademade_admin/_blocks/sub_menu/link', {
|
7
|
-
:uri => admin_new_uri(menu_item[:model_info]),
|
8
|
-
:title => admin_add_name(menu_item[:model_info])
|
9
|
-
}
|
10
2
|
menu_item[:sub].each do |sub_item|
|
11
3
|
concat render 'rademade_admin/_blocks/sub_menu/link', {
|
12
4
|
:uri => admin_list_uri(sub_item[:model_info]),
|