rademade_admin 0.0.1 → 0.0.2

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 (186) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +5 -12
  3. data/app/assets/javascripts/rademade_admin/app/common/related-index.coffee +5 -24
  4. data/app/assets/javascripts/rademade_admin/form/form-ajax-submit.coffee +4 -0
  5. data/app/assets/javascripts/rademade_admin.coffee +28 -7
  6. data/app/assets/stylesheets/rademade_admin/detail_admin/icons.scss.erb +1 -1
  7. data/app/assets/stylesheets/rademade_admin.scss.erb +19 -0
  8. data/app/controllers/rademade_admin/abstract_controller.rb +2 -0
  9. data/app/controllers/rademade_admin/admin_users_controller.rb +2 -1
  10. data/app/controllers/rademade_admin/application_controller.rb +3 -0
  11. data/app/controllers/rademade_admin/dashboard_controller.rb +1 -1
  12. data/app/controllers/rademade_admin/model_controller.rb +48 -25
  13. data/app/controllers/rademade_admin/sessions_controller.rb +2 -1
  14. data/app/helpers/rademade_admin/field_helper.rb +30 -3
  15. data/app/helpers/rademade_admin/form_helper.rb +12 -18
  16. data/app/helpers/rademade_admin/menu_helper.rb +2 -1
  17. data/app/helpers/rademade_admin/name_helper.rb +2 -1
  18. data/app/helpers/rademade_admin/upload_preview_helper.rb +2 -1
  19. data/app/helpers/rademade_admin/uri_helper.rb +16 -0
  20. data/app/inputs/rademade_admin/admin_file_input.rb +2 -1
  21. data/app/inputs/rademade_admin/admin_select_input.rb +2 -1
  22. data/app/inputs/rademade_admin/admin_textarea_input.rb +2 -1
  23. data/app/inputs/rademade_admin/boolean_input.rb +2 -1
  24. data/app/models/rademade_admin/ability.rb +1 -1
  25. data/app/serializers/autocomplete/base_serializer.rb +49 -0
  26. data/app/serializers/autocomplete/link_serializer.rb +20 -0
  27. data/app/services/form_builder.rb +2 -1
  28. data/app/services/linker.rb +34 -0
  29. data/app/services/loader_service.rb +2 -1
  30. data/app/services/login/error.rb +2 -1
  31. data/app/services/login.rb +2 -1
  32. data/app/services/model_controller/instance_options.rb +1 -0
  33. data/app/services/model_controller/model_options.rb +2 -1
  34. data/app/services/model_controller/notifier.rb +2 -1
  35. data/app/services/model_controller/templates.rb +10 -12
  36. data/app/services/saver.rb +2 -1
  37. data/app/services/search/conditions/abstract.rb +42 -38
  38. data/app/services/search/conditions/autocomplete.rb +34 -28
  39. data/app/services/search/conditions/list.rb +30 -23
  40. data/app/services/search/conditions/part/where.rb +28 -0
  41. data/app/services/search/conditions/related_list.rb +54 -0
  42. data/app/services/search/query_adapter/abstract.rb +30 -39
  43. data/app/services/search/query_adapter/active_record.rb +33 -21
  44. data/app/services/search/query_adapter/mongoid.rb +38 -20
  45. data/app/services/search/searcher.rb +5 -4
  46. data/app/services/sortable_service.rb +2 -1
  47. data/app/services/video_service.rb +2 -1
  48. data/app/views/rademade_admin/_blocks/_menu.html.erb +7 -1
  49. data/app/views/rademade_admin/_blocks/_sub_menu.html.erb +0 -8
  50. data/app/views/rademade_admin/_layouts/inner/related_index_table.html.erb +1 -2
  51. data/app/views/rademade_admin/abstract/index.html.erb +6 -5
  52. data/app/views/rademade_admin/abstract/related_index.html.erb +11 -4
  53. data/config/initializers/bower_rails.rb +6 -0
  54. data/config/initializers/devise.rb +1 -0
  55. data/config/initializers/formtastic.rb +13 -0
  56. data/config/initializers/routes.rb +2 -1
  57. data/config/routes.rb +2 -1
  58. data/lib/rademade_admin/bower/performer.rb +14 -0
  59. data/lib/rademade_admin/configuration.rb +2 -1
  60. data/lib/rademade_admin/engine.rb +5 -1
  61. data/lib/rademade_admin/file_info_formatter.rb +2 -1
  62. data/lib/rademade_admin/hrml_buffer.rb +2 -1
  63. data/lib/rademade_admin/model/configuration/fields.rb +2 -1
  64. data/lib/rademade_admin/model/configuration.rb +2 -1
  65. data/lib/rademade_admin/model/data_adapter/active_record.rb +10 -4
  66. data/lib/rademade_admin/model/data_adapter/mongoid.rb +6 -1
  67. data/lib/rademade_admin/model/data_adapter.rb +6 -1
  68. data/lib/rademade_admin/model/graph.rb +2 -1
  69. data/lib/rademade_admin/model/info.rb +4 -3
  70. data/lib/rademade_admin/model/reflection/data.rb +2 -1
  71. data/lib/rademade_admin/model/reflection/uploader.rb +2 -2
  72. data/lib/rademade_admin/model/reflection.rb +5 -13
  73. data/lib/rademade_admin/routing/mapper.rb +4 -1
  74. data/lib/rademade_admin/routing/resource.rb +2 -1
  75. data/lib/rademade_admin/routing.rb +2 -1
  76. data/lib/rademade_admin/sortable.rb +1 -0
  77. data/lib/rademade_admin/uploader/photo.rb +2 -1
  78. data/lib/rademade_admin/uploader/video.rb +2 -1
  79. data/lib/rademade_admin/user.rb +1 -0
  80. data/lib/rademade_admin/version.rb +2 -1
  81. data/lib/rademade_admin.rb +8 -6
  82. data/lib/tasks/rademade_bower_install.rake +9 -0
  83. metadata +92 -339
  84. data/MIT-LICENSE +0 -20
  85. data/app/assets/fonts/rademade_admin/glyphicons-halflings-regular.eot +0 -0
  86. data/app/assets/fonts/rademade_admin/glyphicons-halflings-regular.svg +0 -228
  87. data/app/assets/fonts/rademade_admin/glyphicons-halflings-regular.ttf +0 -0
  88. data/app/assets/fonts/rademade_admin/glyphicons-halflings-regular.woff +0 -0
  89. data/app/assets/images/rademade_admin/datatables/back_disabled.png +0 -0
  90. data/app/assets/images/rademade_admin/datatables/back_enabled.png +0 -0
  91. data/app/assets/images/rademade_admin/datatables/back_enabled_hover.png +0 -0
  92. data/app/assets/images/rademade_admin/datatables/forward_disabled.png +0 -0
  93. data/app/assets/images/rademade_admin/datatables/forward_enabled.png +0 -0
  94. data/app/assets/images/rademade_admin/datatables/forward_enabled_hover.png +0 -0
  95. data/app/assets/images/rademade_admin/datatables/sort_asc.png +0 -0
  96. data/app/assets/images/rademade_admin/datatables/sort_asc_disabled.png +0 -0
  97. data/app/assets/images/rademade_admin/datatables/sort_both.png +0 -0
  98. data/app/assets/images/rademade_admin/datatables/sort_desc.png +0 -0
  99. data/app/assets/images/rademade_admin/datatables/sort_desc_disabled.png +0 -0
  100. data/app/assets/images/rademade_admin/jquery-ui/animated-overlay.gif +0 -0
  101. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  102. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  103. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_flat_10_000000_40x100.png +0 -0
  104. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  105. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  106. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
  107. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  108. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  109. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  110. data/app/assets/images/rademade_admin/jquery-ui/ui-icons_222222_256x240.png +0 -0
  111. data/app/assets/images/rademade_admin/jquery-ui/ui-icons_228ef1_256x240.png +0 -0
  112. data/app/assets/images/rademade_admin/jquery-ui/ui-icons_ef8c08_256x240.png +0 -0
  113. data/app/assets/images/rademade_admin/jquery-ui/ui-icons_ffd27a_256x240.png +0 -0
  114. data/app/assets/images/rademade_admin/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  115. data/app/assets/images/rademade_admin/select2/select2.png +0 -0
  116. data/app/assets/images/rademade_admin/select2/select2x2.png +0 -0
  117. data/app/assets/images/rademade_admin/select2/spinner.gif +0 -0
  118. data/app/assets/images/rademade_admin/uniform/bg-input-focus.png +0 -0
  119. data/app/assets/images/rademade_admin/uniform/bg-input.png +0 -0
  120. data/app/assets/images/rademade_admin/uniform/sprite.png +0 -0
  121. data/app/assets/javascripts/rademade_admin/form/library/jquery.form-serialize.js +0 -54
  122. data/app/assets/javascripts/rademade_admin/form/library/jquery.form.js +0 -1121
  123. data/app/assets/javascripts/rademade_admin/form/library/jquery.formrestrict.js +0 -27
  124. data/app/assets/javascripts/rademade_admin/form/library/jquery.validate.js +0 -1231
  125. data/app/assets/javascripts/rademade_admin/form/library/jquery.validate.messages_ru.js +0 -27
  126. data/app/assets/javascripts/rademade_admin/library/backbone.js +0 -1581
  127. data/app/assets/javascripts/rademade_admin/library/bootstrap/bootstrap.datepicker.js +0 -989
  128. data/app/assets/javascripts/rademade_admin/library/bootstrap/bootstrap.js +0 -1992
  129. data/app/assets/javascripts/rademade_admin/library/jquery/jquery-ui-1.10.4.custom.min.js +0 -6
  130. data/app/assets/javascripts/rademade_admin/library/jquery/jquery.dataTables.js +0 -12099
  131. data/app/assets/javascripts/rademade_admin/library/jquery/jquery.flot.js +0 -2960
  132. data/app/assets/javascripts/rademade_admin/library/jquery/jquery.flot.resize.js +0 -60
  133. data/app/assets/javascripts/rademade_admin/library/jquery/jquery.flot.stack.js +0 -188
  134. data/app/assets/javascripts/rademade_admin/library/jquery/jquery.knob.js +0 -661
  135. data/app/assets/javascripts/rademade_admin/library/jquery/jquery.uniform.min.js +0 -1
  136. data/app/assets/javascripts/rademade_admin/library/notifier.custom.js +0 -431
  137. data/app/assets/javascripts/rademade_admin/library/underscore.js +0 -1276
  138. data/app/assets/javascripts/rademade_admin/library/wysihtml5-0.3.0.js +0 -9463
  139. data/app/assets/stylesheets/rademade_admin/bootstrap/bootstrap.css.erb +0 -5911
  140. data/app/assets/stylesheets/rademade_admin/lib/jquery-ui-1.10.2.custom.css.erb +0 -544
  141. data/app/assets/stylesheets/rademade_admin/lib/select2.css.erb +0 -513
  142. data/app/assets/stylesheets/rademade_admin/lib/uniform.default.css.erb +0 -366
  143. data/app/assets/stylesheets/rademade_admin.css +0 -14
  144. data/app/models/rademade_admin/user.rb +0 -6
  145. data/app/serializers/autocomplete_serializer.rb +0 -46
  146. data/app/services/model_controller/linker.rb +0 -49
  147. data/test/dummy/README.rdoc +0 -28
  148. data/test/dummy/Rakefile +0 -6
  149. data/test/dummy/app/assets/javascripts/application.js +0 -13
  150. data/test/dummy/app/assets/stylesheets/application.css +0 -13
  151. data/test/dummy/app/controllers/application_controller.rb +0 -5
  152. data/test/dummy/app/controllers/rademade_admin/posts_controller.rb +0 -9
  153. data/test/dummy/app/controllers/rademade_admin/users_controller.rb +0 -14
  154. data/test/dummy/app/helpers/application_helper.rb +0 -2
  155. data/test/dummy/app/models/post.rb +0 -9
  156. data/test/dummy/app/models/user.rb +0 -7
  157. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  158. data/test/dummy/bin/bundle +0 -3
  159. data/test/dummy/bin/rails +0 -4
  160. data/test/dummy/bin/rake +0 -4
  161. data/test/dummy/config/application.rb +0 -29
  162. data/test/dummy/config/boot.rb +0 -5
  163. data/test/dummy/config/environment.rb +0 -5
  164. data/test/dummy/config/environments/development.rb +0 -29
  165. data/test/dummy/config/environments/production.rb +0 -80
  166. data/test/dummy/config/environments/test.rb +0 -36
  167. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  168. data/test/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  169. data/test/dummy/config/initializers/inflections.rb +0 -16
  170. data/test/dummy/config/initializers/mime_types.rb +0 -5
  171. data/test/dummy/config/initializers/rademade_admin.rb +0 -3
  172. data/test/dummy/config/initializers/secret_token.rb +0 -12
  173. data/test/dummy/config/initializers/session_store.rb +0 -3
  174. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  175. data/test/dummy/config/locales/en.yml +0 -23
  176. data/test/dummy/config/mongoid.yml +0 -6
  177. data/test/dummy/config/routes.rb +0 -8
  178. data/test/dummy/config.ru +0 -4
  179. data/test/dummy/db/development.sqlite3 +0 -0
  180. data/test/dummy/public/404.html +0 -58
  181. data/test/dummy/public/422.html +0 -58
  182. data/test/dummy/public/500.html +0 -57
  183. data/test/dummy/public/favicon.ico +0 -0
  184. data/test/integration/navigation_test.rb +0 -10
  185. data/test/rademade_admin_test.rb +0 -7
  186. data/test/test_helper.rb +0 -15
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin::MenuHelper
2
3
 
3
4
  def main_menu
@@ -42,4 +43,4 @@ module RademadeAdmin::MenuHelper
42
43
  model_info == @model_info or (not uri.nil? and current_page?(uri))
43
44
  end
44
45
 
45
- end
46
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin::NameHelper
2
3
 
3
4
  def admin_list_name(model_info = @model_info, suffix = true)
@@ -14,4 +15,4 @@ module RademadeAdmin::NameHelper
14
15
  "Add #{model_info.item_name.downcase}"
15
16
  end
16
17
 
17
- end
18
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin::UploadPreviewHelper
2
3
 
3
4
  include ActionView::Helpers::TagHelper
@@ -56,4 +57,4 @@ module RademadeAdmin::UploadPreviewHelper
56
57
  })
57
58
  end
58
59
 
59
- end
60
+ end
@@ -1,5 +1,15 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin::UriHelper
2
3
 
4
+ def admin_link_uri(model, parent, parent_id)
5
+ admin_model_url_for(model.class, {
6
+ :action => :link_relation,
7
+ :id => model.id,
8
+ :parent => parent,
9
+ :parent_id => parent_id
10
+ })
11
+ end
12
+
3
13
  def admin_unlink_uri(model, parent, parent_id)
4
14
  admin_model_url_for(model.class, {
5
15
  :action => :unlink_relation,
@@ -21,6 +31,12 @@ module RademadeAdmin::UriHelper
21
31
  }.merge(opts))
22
32
  end
23
33
 
34
+ def admin_link_autocomplete_uri(model, opts = {})
35
+ admin_model_url_for(model, {
36
+ :action => :link_autocomplete
37
+ }.merge(opts))
38
+ end
39
+
24
40
  def admin_new_uri(model)
25
41
  admin_model_url_for(model, {
26
42
  :action => :new
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  class AdminFileInput < Formtastic::Inputs::FileInput
3
4
 
@@ -67,4 +68,4 @@ module RademadeAdmin
67
68
  end
68
69
 
69
70
  end
70
- end
71
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  class AdminSelectInput < Formtastic::Inputs::SelectInput
3
4
 
@@ -78,4 +79,4 @@ module RademadeAdmin
78
79
  end
79
80
 
80
81
  end
81
- end
82
+ end
@@ -1,5 +1,6 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  class AdminTextareaInput < Formtastic::Inputs::TextInput
3
4
 
4
5
  end
5
- end
6
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  class BooleanInput < Formtastic::Inputs::BooleanInput
3
4
 
@@ -10,4 +11,4 @@ module RademadeAdmin
10
11
  end
11
12
 
12
13
  end
13
- end
14
+ end
@@ -1,4 +1,4 @@
1
- # encoding: utf-8
1
+ # -*- encoding : utf-8 -*-
2
2
  module RademadeAdmin
3
3
  class Ability
4
4
  include CanCan::Ability
@@ -0,0 +1,49 @@
1
+ # -*- encoding : utf-8 -*-
2
+ ##
3
+ # Class: AutocompleteSerializer
4
+ #
5
+ # Creates hash (ready for JSON serialization) with
6
+ # pairs of id => value to show in the autocomplete
7
+ # select UI.
8
+ #
9
+ # The output format of to_json is optimized for 'Select2'
10
+ # autocomplete UI.
11
+ #
12
+ # It would generate JSON of models :id and :text. Text is determined by
13
+ # #to_autocomplete method, or by #to_s.
14
+ module Autocomplete
15
+ class BaseSerializer
16
+ include RademadeAdmin::UriHelper
17
+
18
+ def initialize(collection)
19
+ @collection = collection
20
+ end
21
+
22
+ def as_json
23
+ build_json
24
+ end
25
+
26
+ # args are left for backward compatibility
27
+ # to Rails :json renderer
28
+ def to_json(*args)
29
+ as_json.to_json
30
+ end
31
+
32
+ protected
33
+
34
+ def item_to_json(item)
35
+ {
36
+ :id => item.id.to_s,
37
+ :text => (item.respond_to?(:to_autocomplete) ? item.to_autocomplete : item.to_s),
38
+ :edit_url => admin_edit_form_uri(item)
39
+ }
40
+ end
41
+
42
+ private
43
+
44
+ def build_json
45
+ @collection.map { |item| item_to_json(item) }
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module Autocomplete
3
+ class LinkSerializer < BaseSerializer
4
+
5
+ def initialize(collection, parent, parent_id)
6
+ super(collection)
7
+ @parent = parent
8
+ @parent_id = parent_id
9
+ end
10
+
11
+ protected
12
+
13
+ def item_to_json(item)
14
+ super(item).merge({
15
+ :link_url => admin_link_uri(item, @parent, @parent_id)
16
+ })
17
+ end
18
+
19
+ end
20
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  class RademadeAdmin::FormBuilder < Formtastic::FormBuilder
2
3
 
3
- end
4
+ end
@@ -0,0 +1,34 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module RademadeAdmin
3
+ class Linker
4
+
5
+ def initialize(model_info, parent_model, parent_id)
6
+ @model_info = model_info
7
+ @parent_model_info = RademadeAdmin::Model::Graph.instance.model_info(parent_model)
8
+ @parent = @parent_model_info.model.find(parent_id)
9
+ end
10
+
11
+ def link(id)
12
+ process_link { |old_data| old_data << parse_id(id) }
13
+ end
14
+
15
+ def unlink(id)
16
+ process_link { |old_data| old_data - [parse_id(id)] }
17
+ end
18
+
19
+ private
20
+
21
+ def process_link
22
+ related_name = @model_info.model_name.tableize.gsub('/', '_').to_sym # todo extract method or better guessing of related name
23
+ association = @parent_model_info.reflect_on_association(related_name)
24
+ foreign_key = @parent_model_info.association_foreign_key(association)
25
+ @parent.send(foreign_key + '=', yield(@parent.send(foreign_key)))
26
+ @parent.save
27
+ end
28
+
29
+ def parse_id(id)
30
+ Integer(id) rescue id.to_s
31
+ end
32
+
33
+ end
34
+ end
@@ -1,7 +1,8 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  class LoaderService
3
4
  def self.const_get(name)
4
5
  name.classify.constantize
5
6
  end
6
7
  end
7
- end
8
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  class Login
3
4
  class Error < Exception
@@ -14,4 +15,4 @@ module RademadeAdmin
14
15
  end
15
16
  end
16
17
  end
17
- end
18
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  class Login
3
4
  def self.admin(params)
@@ -15,4 +16,4 @@ module RademadeAdmin
15
16
  raise Error.new( message, field )
16
17
  end
17
18
  end
18
- end
19
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  module InstanceOptions
3
4
 
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  module ModelOptions
3
4
 
@@ -36,4 +37,4 @@ module RademadeAdmin
36
37
  end
37
38
 
38
39
  end
39
- end
40
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  module Notifier
3
4
 
@@ -37,4 +38,4 @@ module RademadeAdmin
37
38
  end
38
39
 
39
40
  end
40
- end
41
+ end
@@ -1,27 +1,25 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  module Templates
3
4
 
4
5
  def native_template_folder
5
- # 7 = "Admin::".length
6
+ # 15 = "RademadeAdmin::".length
6
7
  # 11 = "Controller".length
7
8
  # e.g. RademadeAdmin::QuestionAnswer::UsersController to "question_answer/users"
8
- self.class.to_s[7..-11].underscore
9
- end
10
-
11
- def template_folder
12
- #todo save in static variable
13
- template_exists?('_form', "rademade_admin/#{native_template_folder}") ? native_template_folder : 'abstract'
9
+ @native_template_folder ||= self.class.to_s[15..-11].underscore
14
10
  end
15
11
 
16
12
  def form_template_path(real = false)
17
- "rademade_admin/#{template_folder}/" + (real ? '_' : '') + 'form'
13
+ abstract_template((real ? '_' : '') + 'form')
18
14
  end
19
15
 
20
16
  def abstract_template(template)
21
- #todo if template doesn't exist in user application => render abstract template (form or view)
22
- "rademade_admin/abstract/#{template}"
23
- #unless template_exists?(template, "admin/#{native_template_folder}")
17
+ if template_exists?(template, "rademade_admin/#{native_template_folder}")
18
+ "rademade_admin/#{native_template_folder}/#{template}"
19
+ else
20
+ "rademade_admin/abstract/#{template}"
21
+ end
24
22
  end
25
23
 
26
24
  end
27
- end
25
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  class Saver
3
4
 
@@ -66,4 +67,4 @@ module RademadeAdmin
66
67
  end
67
68
 
68
69
  end
69
- end
70
+ end
@@ -1,53 +1,57 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  module Search
3
- class Abstract
4
+ module Conditions
5
+ class Abstract
4
6
 
5
- attr_reader :params
7
+ attr_reader :params
6
8
 
7
- def initialize(params, origin_fields)
8
- @params = params
9
- @origin_fields = origin_fields
10
- end
9
+ def initialize(params, origin_fields)
10
+ @params = params
11
+ @origin_fields = origin_fields
12
+ end
11
13
 
12
- def conditions
13
- @conditions ||= init_conditions
14
- end
14
+ def conditions
15
+ @conditions ||= init_conditions
16
+ end
15
17
 
16
- protected
18
+ def base_condition(model)
19
+ model.unscoped
20
+ end
17
21
 
18
- def init_conditions
19
- {
20
- :where => where,
21
- :order => order,
22
- :page => page,
23
- :per_page => per_page,
24
- :limit => limit
25
- }
26
- end
22
+ protected
27
23
 
28
- def where
29
- {
30
- :or => {},
31
- :and => {}
32
- }
33
- end
24
+ def init_conditions
25
+ {
26
+ :where => where,
27
+ :order => order,
28
+ :page => page,
29
+ :per_page => per_page,
30
+ :limit => limit
31
+ }
32
+ end
34
33
 
35
- def order
36
- {}
37
- end
34
+ def where
35
+ nil
36
+ end
38
37
 
39
- def page
40
- nil
41
- end
38
+ def order
39
+ {}
40
+ end
42
41
 
43
- def per_page
44
- nil
45
- end
42
+ def page
43
+ nil
44
+ end
46
45
 
47
- def limit
48
- nil
49
- end
46
+ def per_page
47
+ nil
48
+ end
50
49
 
50
+ def limit
51
+ nil
52
+ end
53
+
54
+ end
51
55
  end
52
56
  end
53
- end
57
+ end
@@ -1,44 +1,50 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'search/conditions/abstract'
3
+
1
4
  module RademadeAdmin
2
5
  module Search
3
- class AutocompleteConditions < Abstract
6
+ module Conditions
7
+ class Autocomplete < Abstract
4
8
 
5
- def initialize(params, origin_fields, filter_fields)
6
- super(params, origin_fields)
7
- @filter_fields = filter_fields
8
- end
9
+ def initialize(params, origin_fields, filter_fields)
10
+ super(params, origin_fields)
11
+ @filter_fields = filter_fields
12
+ end
9
13
 
10
- protected
14
+ protected
11
15
 
12
- def where
13
- # todo hierarchical
14
- @where_conditions = super
15
- append_query_condition
16
- append_search_params
17
- @where_conditions
18
- end
16
+ def where
17
+ @where_conditions = Where.new(:and)
18
+ append_query_condition
19
+ append_search_params
20
+ @where_conditions
21
+ end
19
22
 
20
- def limit
21
- 10
22
- end
23
+ def limit
24
+ 10
25
+ end
23
26
 
24
- private
27
+ private
25
28
 
26
- def append_query_condition
27
- unless @params[:q].present?
28
- @filter_fields.each do |field|
29
- @where_conditions[:or][field] = /#{@params[:q]}/i
29
+ def append_query_condition
30
+ if @params[:q].present?
31
+ query_where = Where.new(:or)
32
+ @filter_fields.each do |field|
33
+ query_where.add(field, /#{@params[:q]}/i)
34
+ end
35
+ @where_conditions.sub_add(query_where)
30
36
  end
31
37
  end
32
- end
33
38
 
34
- def append_search_params
35
- if @params[:search].present?
36
- @params[:search].each do |key, value|
37
- @where_conditions[:and][key.to_sym] = value if @origin_fields.include? key.to_s
39
+ def append_search_params
40
+ if @params[:search].present?
41
+ @params[:search].each do |key, value|
42
+ @where_conditions.add(key.to_sym, value) if @origin_fields.include? key.to_s
43
+ end
38
44
  end
39
45
  end
40
- end
41
46
 
47
+ end
42
48
  end
43
49
  end
44
- end
50
+ end