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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0f63a923ddc8a45dd33a59bc21f0f388b7889cc1
4
- data.tar.gz: c108f46620d426b8782a8c4b31696e3977d9d893
3
+ metadata.gz: d7d3ca2426580bad9e67e2103140b383dab75f3d
4
+ data.tar.gz: c4a7f799fada0a7a5b4e13ecb02053e383c4f49e
5
5
  SHA512:
6
- metadata.gz: 28b13653558630df92357813bcdf7e1f2e36824f462e81fbb82c890334e98d17171b5d8c979ccba6a644737c9d96aadee2d73dfe000bac36a83f8d76b36ebf44
7
- data.tar.gz: 225d4afbd5e10d3b8db5311a87c36716888870209c8b8b42d84c439df6e12be47905f34ea2376df216185c882dd5af0695f6fc127eba98798a72216c23c92616
6
+ metadata.gz: d1459c6e0eff7fc3977e13dcb53d4814f53f4582557d6451e853f2d93a413167d3a0687511e58066002bf442ee45526a0c36d043083d7006486893fbcccfaf02
7
+ data.tar.gz: cc0288f1716a8537d044e24e91905b186cf0613c6bacad89496435426ccec358fa5ba4ced92cb437f899ebc6d6753ff0af6ef8773e5d4f1912cdd8b70a55f481
data/Rakefile CHANGED
@@ -14,21 +14,14 @@ RDoc::Task.new(:rdoc) do |rdoc|
14
14
  rdoc.rdoc_files.include('lib/**/*.rb')
15
15
  end
16
16
 
17
- APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
17
+ APP_RAKEFILE = File.expand_path('../spec/dummy/Rakefile', __FILE__)
18
18
  load 'rails/tasks/engine.rake'
19
19
 
20
-
21
-
22
20
  Bundler::GemHelper.install_tasks
23
21
 
24
- require 'rake/testtask'
25
-
26
- Rake::TestTask.new(:test) do |t|
27
- t.libs << 'lib'
28
- t.libs << 'test'
29
- t.pattern = 'test/**/*_test.rb'
30
- t.verbose = false
31
- end
22
+ require 'rspec/core'
23
+ require 'rspec/core/rake_task'
32
24
 
25
+ RSpec::Core::RakeTask.new(:spec => 'app:db:test:prepare')
33
26
 
34
- task default: :test
27
+ task default: :spec
@@ -1,17 +1,3 @@
1
- getUrlParams = ->
2
- pl = /\+/g
3
- search = /([^&=]+)=?([^&]*)/g
4
-
5
- decode = (s) ->
6
- decodeURIComponent s.replace(pl, " ")
7
-
8
- query = window.location.search.substring(1)
9
- urlParams = {}
10
- urlParams[decode(match[1])] = decode(match[2]) while match = search.exec(query)
11
-
12
- urlParams
13
-
14
-
15
1
  initSelect = ->
16
2
  $item = $('.select2-add-link')
17
3
  url = $item.data('relListUrl')
@@ -30,25 +16,20 @@ initSelect = ->
30
16
  ajax :
31
17
  url : url
32
18
  dataType : 'json'
33
- data : (term) -> {q: term}
34
- results : (data) -> {results: data}
19
+ data : (term) -> {q : term}
20
+ results : (data) -> {results : data}
35
21
  ).on 'change', (e) ->
36
- sendNew(e.added)
22
+ sendNew(e.added.link_url)
37
23
 
38
24
 
39
- sendNew = (added) ->
25
+ sendNew = (linkUrl) ->
40
26
  $.ajax
41
- url : ajax_link(added.id)
27
+ url : linkUrl
42
28
  type : 'PUT'
43
- data : getUrlParams()
44
29
  success : ->
45
30
  location.reload()
46
31
 
47
32
 
48
- ajax_link = (id) ->
49
- location.href.substring(0, location.href.indexOf(location.search)) + '/' + id + '/link_relation'
50
-
51
-
52
33
  $ ->
53
34
  $(document)
54
35
  .on('ready page:load init-select', initSelect)
@@ -74,6 +74,7 @@ window.FormAjaxSubmit = ($form) ->
74
74
  # It finds all 'array' members of data hash,
75
75
  # and splits their values by ',', cleaning all
76
76
  # non-space characters.
77
+ #todo extract. All class need super refactoring. Sergey, you can do it :)
77
78
  for memb of items.data
78
79
  array = items.data[memb]
79
80
  if $.isArray(array)
@@ -86,6 +87,9 @@ window.FormAjaxSubmit = ($form) ->
86
87
 
87
88
  items.data[memb] = if newArray.length is 0 then [''] else newArray
88
89
 
90
+ input_method = @_$form.find('input[name="_method"]')
91
+ items['_method'] = input_method.val() if input_method instanceof jQuery
92
+
89
93
  $.ajax(
90
94
  url: @_$form.attr('action')
91
95
  type: @_$form.attr('method')
@@ -1,14 +1,35 @@
1
- #= require jquery
2
- #= require jquery_ujs
1
+ #= require jquery/dist/jquery
2
+ #= require jquery-ui/ui/core
3
+ #= require jquery-ui/ui/widget
4
+ #= require jquery-ui/ui/mouse
5
+ #= require jquery-ui/ui/draggable
6
+ #= require jquery-ui/ui/resizable
7
+ #= require jquery-ui/ui/sortable
8
+ #= require jquery-ui/ui/slider
9
+ #= require jquery-fileupload/js/jquery.fileupload
10
+ #= require jquery-fileupload/js/jquery.iframe-transport
11
+ #= require jquery-form/jquery.form
12
+ #= require jquery-serialize/jquery.serialize-object
13
+ #= require jquery-formrestrict/jquery.formrestrict
14
+ #= require jquery-validation/src/core
15
+ #= require jquery-validation/src/ajax
16
+ #= require jquery-validation/src/delegate
3
17
  #= require turbolinks
4
18
  #= require select2
5
19
  #= require ckeditor/init
6
- #= require magnific-popup
7
- #= require rademade_admin/library/underscore.js
8
- #= require rademade_admin/library/backbone.js
20
+ #= require magnific-popup/dist/jquery.magnific-popup
21
+ #= require flot/jquery.flot
22
+ #= require flot/jquery.flot.resize
23
+ #= require flot/jquery.flot.stack
24
+ #= require knob/js/jquery.knob
25
+ #= require uniform/jquery.uniform
26
+ #= require data-tables/media/js/jquery.dataTables
27
+ #= require wysihtml5/dist/wysihtml5-0.3.0
28
+ #= require underscore/underscore
29
+ #= require backbone/backbone
30
+ #= require bootstrap/dist/js/bootstrap
31
+ #= require bootstrap-datepicker/js/bootstrap-datepicker
9
32
  #= require_tree ./rademade_admin/library
10
- #= require jquery-fileupload/basic
11
- #= require_tree ./rademade_admin/form/library
12
33
  #= require_tree ./rademade_admin/form
13
34
  #= require_tree ./rademade_admin/app
14
35
  #= require_tree ./rademade_admin
@@ -1,7 +1,7 @@
1
1
  i.tool{
2
2
  height: 14px;
3
3
  width: 14px;
4
- background: url("<%=image_path('rademade_admin/icons/btn-tools.png')%>") no-repeat;
4
+ background: url("<%=image_path('rademade_admin/icons/btn-tool.png')%>") no-repeat;
5
5
  display: inline-block;
6
6
  margin-top: 1px;
7
7
  *margin-right: .3em;
@@ -0,0 +1,19 @@
1
+ /*
2
+ *= require jquery-fileupload/css/jquery.fileupload-ui
3
+ *= require select2/select2
4
+ *= require magnific-popup/dist/magnific-popup
5
+ *= require bootstrap/dist/css/bootstrap
6
+ *= require jquery-ui/themes/base/core
7
+ *= require jquery-ui/themes/base/slider
8
+ *= require uniform/themes/default/css/uniform.default
9
+ *= require_tree ./rademade_admin
10
+ */
11
+
12
+ .cke_chrome {
13
+ width: 76% !important;
14
+ overflow: hidden;
15
+ }
16
+
17
+ #sidebar-nav #dashboard-menu ul.submenu {
18
+ margin-left: -7px;
19
+ }
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  class AbstractController < ApplicationController
3
4
  include ::RademadeAdmin::UriHelper
@@ -20,5 +21,6 @@ module RademadeAdmin
20
21
  :message => 'Error occurred'
21
22
  }, :status => :unprocessable_entity
22
23
  end
24
+
23
25
  end
24
26
  end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  class AdminUsersController < ModelController
3
4
 
@@ -13,4 +14,4 @@ module RademadeAdmin
13
14
  end
14
15
 
15
16
  end
16
- end
17
+ end
@@ -1,7 +1,10 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  class ApplicationController < ActionController::Base
4
+
3
5
  def current_ability
4
6
  @current_ability ||= RademadeAdmin::Ability.new(current_user)
5
7
  end
8
+
6
9
  end
7
10
  end
@@ -1,5 +1,5 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
-
3
3
  class DashboardController < RademadeAdmin::AbstractController
4
4
 
5
5
  skip_before_action :require_login, :only => [:login]
@@ -1,8 +1,8 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  class ModelController < RademadeAdmin::AbstractController
3
4
 
4
5
  extend RademadeAdmin::ModelOptions
5
- include RademadeAdmin::Linker
6
6
  include RademadeAdmin::InstanceOptions
7
7
  include RademadeAdmin::Templates
8
8
  include RademadeAdmin::Notifier
@@ -15,7 +15,8 @@ module RademadeAdmin
15
15
  saver.create_model
16
16
  if saver.save_model
17
17
  saver.save_aggregated_data
18
- success_insert saver.item
18
+ @item = saver.item
19
+ success_insert @item
19
20
  else
20
21
  render_errors saver.errors
21
22
  end
@@ -26,7 +27,8 @@ module RademadeAdmin
26
27
  saver = Saver.new(model_info, params)
27
28
  if saver.update_model
28
29
  saver.save_aggregated_data
29
- success_update saver.item
30
+ @item = saver.item
31
+ success_update @item
30
32
  else
31
33
  render_errors saver.errors
32
34
  end
@@ -41,22 +43,34 @@ module RademadeAdmin
41
43
 
42
44
  def autocomplete
43
45
  authorize! :read, model_class
44
- search_conditions = Search::AutocompleteConditions.new(params, origin_fields, model_info.filter_fields)
45
- searcher = Search::Searcher.new model_info
46
- items = searcher.search search_conditions
47
- render :json => AutocompleteSerializer.new(items)
46
+ init_search Search::Conditions::Autocomplete.new(params, origin_fields, model_info.filter_fields)
47
+ render :json => Autocomplete::BaseSerializer.new(@items)
48
+ end
49
+
50
+ def link_autocomplete
51
+ authorize! :read, model_class
52
+ init_search Search::Conditions::Autocomplete.new(params, origin_fields, model_info.filter_fields)
53
+ render :json => Autocomplete::LinkSerializer.new(@items, params[:parent], params[:parent_id])
48
54
  end
49
55
 
50
- # todo another action for related
51
56
  def index
52
57
  authorize! :read, model_class
53
- is_related_list = !!params[:parent]
54
- search_conditions = Search::ListConditions.new(params, origin_fields)
55
- @searcher = Search::Searcher.new model_info
56
- @items = @searcher.search search_conditions, is_related_list
57
- @sortable_service = RademadeAdmin::SortableService.new(model_info, params)
58
+ init_search Search::Conditions::List.new(params, origin_fields)
59
+ init_sortable_service
60
+ respond_to do |format|
61
+ format.html { render_template }
62
+ format.json { render :json => @items }
63
+ end
64
+ end
65
+
66
+ def related_index
67
+ authorize! :read, model_class
68
+ init_search Search::Conditions::RelatedList.new(params, origin_fields)
69
+ init_sortable_service
70
+ @parent_model_info = RademadeAdmin::Model::Graph.instance.model_info(params[:parent])
71
+ @parent = @parent_model_info.model.find(params[:parent_id])
58
72
  respond_to do |format|
59
- format.html { is_related_list ? render_template('related_index') : render_template }
73
+ format.html { render_template }
60
74
  format.json { render :json => @items }
61
75
  end
62
76
  end
@@ -73,18 +87,12 @@ module RademadeAdmin
73
87
  render_template
74
88
  end
75
89
 
76
- def unlink_relation
77
- item = find_item(params[:id])
78
- unlink(item)
79
- item.save
80
- success_unlink item
90
+ def link_relation
91
+ process_link :link
81
92
  end
82
93
 
83
- def link_relation
84
- item = find_item(params[:id])
85
- link(item)
86
- item.save
87
- success_link item
94
+ def unlink_relation
95
+ process_link :unlink
88
96
  end
89
97
 
90
98
  def show
@@ -103,7 +111,7 @@ module RademadeAdmin
103
111
  end
104
112
 
105
113
  def re_sort
106
- @sortable_service = RademadeAdmin::SortableService.new(model_info, params)
114
+ init_sortable_service
107
115
  @sortable_service.re_sort_items
108
116
  success_action
109
117
  end
@@ -118,5 +126,20 @@ module RademadeAdmin
118
126
  render abstract_template(template)
119
127
  end
120
128
 
129
+ def init_search(search_conditions)
130
+ @searcher = Search::Searcher.new model_info
131
+ @items = @searcher.search search_conditions
132
+ end
133
+
134
+ def init_sortable_service
135
+ @sortable_service = RademadeAdmin::SortableService.new(model_info, params)
136
+ end
137
+
138
+ def process_link(method)
139
+ linker = Linker.new(model_info, params[:parent], params[:parent_id])
140
+ linker.send(method, params[:id])
141
+ send("success_#{method}", find_item(params[:id]))
142
+ end
143
+
121
144
  end
122
145
  end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin
2
3
  class SessionsController < RademadeAdmin::AbstractController
3
4
 
@@ -5,7 +6,7 @@ module RademadeAdmin
5
6
 
6
7
  def create
7
8
  begin
8
- user = RademadeAdmin::Login.admin( params )
9
+ user = RademadeAdmin::Login.admin(params)
9
10
  sign_in user
10
11
  render :json => user, :status => :ok
11
12
  rescue RademadeAdmin::Login::Error => e
@@ -1,8 +1,29 @@
1
- # encoding: utf-8
1
+ # -*- encoding : utf-8 -*-
2
2
  module RademadeAdmin::FieldHelper
3
3
 
4
4
  def field_to_label(field)
5
- field.to_s.sub('_', ' ').capitalize
5
+ if configured_field?(field) and field.values.first[:label].present?
6
+ field.values.first[:label]
7
+ else
8
+ field.to_s.humanize
9
+ end
10
+ end
11
+
12
+ def field_name(field)
13
+ configured_field?(field) ? field.keys.first : field
14
+ end
15
+
16
+ def field_value(field, item)
17
+ if configured_field?(field)
18
+ if field.values.first[:method].present?
19
+ method_name = field.values.first[:method]
20
+ else
21
+ method_name = field.keys.first
22
+ end
23
+ else
24
+ method_name = field
25
+ end
26
+ item.send(method_name)
6
27
  end
7
28
 
8
29
  def pagination_option(number, name = 'paginate')
@@ -24,4 +45,10 @@ module RademadeAdmin::FieldHelper
24
45
  :input_html => {:class => 'form-control'}
25
46
  end
26
47
 
27
- end
48
+ private
49
+
50
+ def configured_field?(field)
51
+ field.is_a? Hash
52
+ end
53
+
54
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module RademadeAdmin::FormHelper
2
3
 
3
4
  def admin_form(record, model, &block)
@@ -20,7 +21,7 @@ module RademadeAdmin::FormHelper
20
21
 
21
22
  field = form.input(name, input_attr(attrs))
22
23
 
23
- if multiple_relation?(model_info, name)
24
+ if model_info.model_reflection.many_relation? name
24
25
  link = admin_field_link_to_list(name, model_info, record).to_s
25
26
  else
26
27
  link = ''
@@ -34,12 +35,15 @@ module RademadeAdmin::FormHelper
34
35
  end
35
36
 
36
37
  def admin_field_link_to_list(name, model_info, record)
37
- uri = admin_model_url_for(model_info.reflect_on_association(name).class_name, {
38
- :action => :index,
39
- :parent => model_info.model,
40
- :parent_id => record.id.to_s
41
- })
42
- link_to(field_to_label(name).pluralize + ' list', uri)
38
+ if record.id
39
+ related_model = model_info.reflect_on_association(name).class_name
40
+ uri = admin_model_url_for(related_model, {
41
+ :action => :related_index,
42
+ :parent => model_info.model,
43
+ :parent_id => record.id.to_s
44
+ })
45
+ link_to(RademadeAdmin::Model::Graph.instance.model_info(related_model).item_name + ' list', uri) if uri
46
+ end
43
47
  end
44
48
 
45
49
  def admin_field_params(field_params)
@@ -50,14 +54,4 @@ module RademadeAdmin::FormHelper
50
54
  end
51
55
  end
52
56
 
53
- private
54
-
55
- def multiple_relation?(model_info, name)
56
- association = model_info.reflect_on_association(name)
57
- if association
58
- inner_model = association.class_name.to_s
59
- model_info.has_many.include? inner_model
60
- end
61
- end
62
-
63
- end
57
+ end