rademade_admin 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +34 -0
  4. data/app/assets/fonts/rademade_admin/glyphicons-halflings-regular.eot +0 -0
  5. data/app/assets/fonts/rademade_admin/glyphicons-halflings-regular.svg +228 -0
  6. data/app/assets/fonts/rademade_admin/glyphicons-halflings-regular.ttf +0 -0
  7. data/app/assets/fonts/rademade_admin/glyphicons-halflings-regular.woff +0 -0
  8. data/app/assets/images/rademade_admin/backgrounds/back-blue.jpg +0 -0
  9. data/app/assets/images/rademade_admin/backgrounds/back-green.jpg +0 -0
  10. data/app/assets/images/rademade_admin/backgrounds/back-orange.png +0 -0
  11. data/app/assets/images/rademade_admin/backgrounds/blueish.jpg +0 -0
  12. data/app/assets/images/rademade_admin/backgrounds/select-bg.png +0 -0
  13. data/app/assets/images/rademade_admin/datatables/back_disabled.png +0 -0
  14. data/app/assets/images/rademade_admin/datatables/back_enabled.png +0 -0
  15. data/app/assets/images/rademade_admin/datatables/back_enabled_hover.png +0 -0
  16. data/app/assets/images/rademade_admin/datatables/forward_disabled.png +0 -0
  17. data/app/assets/images/rademade_admin/datatables/forward_enabled.png +0 -0
  18. data/app/assets/images/rademade_admin/datatables/forward_enabled_hover.png +0 -0
  19. data/app/assets/images/rademade_admin/datatables/sort_asc.png +0 -0
  20. data/app/assets/images/rademade_admin/datatables/sort_asc_disabled.png +0 -0
  21. data/app/assets/images/rademade_admin/datatables/sort_both.png +0 -0
  22. data/app/assets/images/rademade_admin/datatables/sort_desc.png +0 -0
  23. data/app/assets/images/rademade_admin/datatables/sort_desc_disabled.png +0 -0
  24. data/app/assets/images/rademade_admin/icons/btn-attach.png +0 -0
  25. data/app/assets/images/rademade_admin/icons/btn-setting.png +0 -0
  26. data/app/assets/images/rademade_admin/icons/btn-shuffle.png +0 -0
  27. data/app/assets/images/rademade_admin/icons/btn-tool.png +0 -0
  28. data/app/assets/images/rademade_admin/icons/buble.png +0 -0
  29. data/app/assets/images/rademade_admin/icons/glyphicons-halflings-white.png +0 -0
  30. data/app/assets/images/rademade_admin/icons/glyphicons-halflings.png +0 -0
  31. data/app/assets/images/rademade_admin/icons/ico-arrow-black.png +0 -0
  32. data/app/assets/images/rademade_admin/icons/ico-gallery-edit.png +0 -0
  33. data/app/assets/images/rademade_admin/icons/ico-gallery-trash.png +0 -0
  34. data/app/assets/images/rademade_admin/icons/ico-mail.png +0 -0
  35. data/app/assets/images/rademade_admin/icons/ico-phone.png +0 -0
  36. data/app/assets/images/rademade_admin/icons/ico-table-delete.png +0 -0
  37. data/app/assets/images/rademade_admin/icons/ico-table-edit.png +0 -0
  38. data/app/assets/images/rademade_admin/icons/ico-table-new.png +0 -0
  39. data/app/assets/images/rademade_admin/icons/lens.png +0 -0
  40. data/app/assets/images/rademade_admin/icons/skin-nav-bullets.png +0 -0
  41. data/app/assets/images/rademade_admin/icons/table-icons.png +0 -0
  42. data/app/assets/images/rademade_admin/icons/table-img.png +0 -0
  43. data/app/assets/images/rademade_admin/jquery-ui/animated-overlay.gif +0 -0
  44. data/app/assets/images/rademade_admin/jquery-ui/slider-handler.png +0 -0
  45. data/app/assets/images/rademade_admin/jquery-ui/slider-handler2.png +0 -0
  46. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  47. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  48. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_flat_10_000000_40x100.png +0 -0
  49. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  50. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  51. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_glass_65_ffffff_1x400.png +0 -0
  52. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  53. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  54. data/app/assets/images/rademade_admin/jquery-ui/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  55. data/app/assets/images/rademade_admin/jquery-ui/ui-icons_222222_256x240.png +0 -0
  56. data/app/assets/images/rademade_admin/jquery-ui/ui-icons_228ef1_256x240.png +0 -0
  57. data/app/assets/images/rademade_admin/jquery-ui/ui-icons_ef8c08_256x240.png +0 -0
  58. data/app/assets/images/rademade_admin/jquery-ui/ui-icons_ffd27a_256x240.png +0 -0
  59. data/app/assets/images/rademade_admin/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  60. data/app/assets/images/rademade_admin/logos/logo-white.png +0 -0
  61. data/app/assets/images/rademade_admin/logos/logo.png +0 -0
  62. data/app/assets/images/rademade_admin/notifier-loader-clean.gif +0 -0
  63. data/app/assets/images/rademade_admin/notifier-loader-plastic.gif +0 -0
  64. data/app/assets/images/rademade_admin/placeholders/new-gallery-img.png +0 -0
  65. data/app/assets/images/rademade_admin/placeholders/no-img-gallery.png +0 -0
  66. data/app/assets/images/rademade_admin/select2/select2.png +0 -0
  67. data/app/assets/images/rademade_admin/select2/select2x2.png +0 -0
  68. data/app/assets/images/rademade_admin/select2/spinner.gif +0 -0
  69. data/app/assets/images/rademade_admin/uniform/bg-input-focus.png +0 -0
  70. data/app/assets/images/rademade_admin/uniform/bg-input.png +0 -0
  71. data/app/assets/images/rademade_admin/uniform/sprite.png +0 -0
  72. data/app/assets/javascripts/rademade_admin.coffee +14 -0
  73. data/app/assets/javascripts/rademade_admin/app/app.coffee +1 -0
  74. data/app/assets/javascripts/rademade_admin/app/common/dnd-sort.coffee +42 -0
  75. data/app/assets/javascripts/rademade_admin/app/common/pagination.coffee +6 -0
  76. data/app/assets/javascripts/rademade_admin/app/common/related-index.coffee +54 -0
  77. data/app/assets/javascripts/rademade_admin/app/common/relation-list.coffee +109 -0
  78. data/app/assets/javascripts/rademade_admin/app/common/sort-list.coffee +47 -0
  79. data/app/assets/javascripts/rademade_admin/app/common/uploader.coffee +53 -0
  80. data/app/assets/javascripts/rademade_admin/app/form-popup/collection.coffee +20 -0
  81. data/app/assets/javascripts/rademade_admin/app/form-popup/initializer.coffee +43 -0
  82. data/app/assets/javascripts/rademade_admin/app/form-popup/model.coffee +4 -0
  83. data/app/assets/javascripts/rademade_admin/app/form-popup/view.coffee +57 -0
  84. data/app/assets/javascripts/rademade_admin/app/forms/insert.coffee +7 -0
  85. data/app/assets/javascripts/rademade_admin/app/forms/login.coffee +4 -0
  86. data/app/assets/javascripts/rademade_admin/app/forms/remove.coffee +6 -0
  87. data/app/assets/javascripts/rademade_admin/app/notifier/initialize.js +31 -0
  88. data/app/assets/javascripts/rademade_admin/detail_admin/theme.js +56 -0
  89. data/app/assets/javascripts/rademade_admin/form/form-ajax-submit.coffee +153 -0
  90. data/app/assets/javascripts/rademade_admin/form/library/jquery.form-serialize.js +54 -0
  91. data/app/assets/javascripts/rademade_admin/form/library/jquery.form.js +1121 -0
  92. data/app/assets/javascripts/rademade_admin/form/library/jquery.formrestrict.js +27 -0
  93. data/app/assets/javascripts/rademade_admin/form/library/jquery.validate.js +1231 -0
  94. data/app/assets/javascripts/rademade_admin/form/library/jquery.validate.messages_ru.js +27 -0
  95. data/app/assets/javascripts/rademade_admin/library/backbone.js +1581 -0
  96. data/app/assets/javascripts/rademade_admin/library/bootstrap/bootstrap.datepicker.js +989 -0
  97. data/app/assets/javascripts/rademade_admin/library/bootstrap/bootstrap.js +1992 -0
  98. data/app/assets/javascripts/rademade_admin/library/ckeditor/config.js +12 -0
  99. data/app/assets/javascripts/rademade_admin/library/jquery/jquery-ui-1.10.4.custom.min.js +6 -0
  100. data/app/assets/javascripts/rademade_admin/library/jquery/jquery.dataTables.js +12099 -0
  101. data/app/assets/javascripts/rademade_admin/library/jquery/jquery.flot.js +2960 -0
  102. data/app/assets/javascripts/rademade_admin/library/jquery/jquery.flot.resize.js +60 -0
  103. data/app/assets/javascripts/rademade_admin/library/jquery/jquery.flot.stack.js +188 -0
  104. data/app/assets/javascripts/rademade_admin/library/jquery/jquery.knob.js +661 -0
  105. data/app/assets/javascripts/rademade_admin/library/jquery/jquery.tablednd.js +1 -0
  106. data/app/assets/javascripts/rademade_admin/library/jquery/jquery.uniform.min.js +1 -0
  107. data/app/assets/javascripts/rademade_admin/library/notifier.custom.js +431 -0
  108. data/app/assets/javascripts/rademade_admin/library/notifier.custom.min.js +15 -0
  109. data/app/assets/javascripts/rademade_admin/library/underscore.js +1276 -0
  110. data/app/assets/javascripts/rademade_admin/library/wysihtml5-0.3.0.js +9463 -0
  111. data/app/assets/stylesheets/rademade_admin.css +14 -0
  112. data/app/assets/stylesheets/rademade_admin/base.scss.erb +23 -0
  113. data/app/assets/stylesheets/rademade_admin/bootstrap/bootstrap-overrides.css.erb +341 -0
  114. data/app/assets/stylesheets/rademade_admin/bootstrap/bootstrap.css.erb +5911 -0
  115. data/app/assets/stylesheets/rademade_admin/bootstrap/main.scss.erb +78 -0
  116. data/app/assets/stylesheets/rademade_admin/detail_admin/chart-showcase.scss.erb +33 -0
  117. data/app/assets/stylesheets/rademade_admin/detail_admin/datatables.scss.erb +3 -0
  118. data/app/assets/stylesheets/rademade_admin/detail_admin/elements.scss.erb +665 -0
  119. data/app/assets/stylesheets/rademade_admin/detail_admin/error.scss.erb +19 -0
  120. data/app/assets/stylesheets/rademade_admin/detail_admin/form-showcase.scss.erb +87 -0
  121. data/app/assets/stylesheets/rademade_admin/detail_admin/form-wizard.scss.erb +261 -0
  122. data/app/assets/stylesheets/rademade_admin/detail_admin/gallery.scss.erb +106 -0
  123. data/app/assets/stylesheets/rademade_admin/detail_admin/grids.scss.erb +21 -0
  124. data/app/assets/stylesheets/rademade_admin/detail_admin/icons.scss.erb +115 -0
  125. data/app/assets/stylesheets/rademade_admin/detail_admin/index.scss.erb +290 -0
  126. data/app/assets/stylesheets/rademade_admin/detail_admin/layout.scss.erb +523 -0
  127. data/app/assets/stylesheets/rademade_admin/detail_admin/new-user.scss.erb +49 -0
  128. data/app/assets/stylesheets/rademade_admin/detail_admin/personal-info.scss.erb +144 -0
  129. data/app/assets/stylesheets/rademade_admin/detail_admin/popup.scss.erb +3 -0
  130. data/app/assets/stylesheets/rademade_admin/detail_admin/signin.scss.erb +128 -0
  131. data/app/assets/stylesheets/rademade_admin/detail_admin/tables.scss.erb +195 -0
  132. data/app/assets/stylesheets/rademade_admin/detail_admin/ui-elements.scss.erb +177 -0
  133. data/app/assets/stylesheets/rademade_admin/detail_admin/user-list.scss.erb +112 -0
  134. data/app/assets/stylesheets/rademade_admin/detail_admin/user-profile.scss.erb +169 -0
  135. data/app/assets/stylesheets/rademade_admin/detail_admin/web-app-icons.scss.erb +25 -0
  136. data/app/assets/stylesheets/rademade_admin/edit.css +7 -0
  137. data/app/assets/stylesheets/rademade_admin/file-upload.scss.erb +12 -0
  138. data/app/assets/stylesheets/rademade_admin/lib/bootstrap.datepicker.css.erb +302 -0
  139. data/app/assets/stylesheets/rademade_admin/lib/jquery-ui-1.10.2.custom.css.erb +544 -0
  140. data/app/assets/stylesheets/rademade_admin/lib/morris.css.erb +2 -0
  141. data/app/assets/stylesheets/rademade_admin/lib/select2.css.erb +513 -0
  142. data/app/assets/stylesheets/rademade_admin/lib/uniform.default.css.erb +366 -0
  143. data/app/assets/stylesheets/rademade_admin/notifier.custom.css.erb +661 -0
  144. data/app/assets/stylesheets/rademade_admin/scaffolds.scss.erb +32 -0
  145. data/app/controllers/rademade_admin/abstract_controller.rb +24 -0
  146. data/app/controllers/rademade_admin/admin_users_controller.rb +16 -0
  147. data/app/controllers/rademade_admin/application_controller.rb +7 -0
  148. data/app/controllers/rademade_admin/dashboard_controller.rb +16 -0
  149. data/app/controllers/rademade_admin/model_controller.rb +122 -0
  150. data/app/controllers/rademade_admin/sessions_controller.rb +22 -0
  151. data/app/helpers/rademade_admin/field_helper.rb +27 -0
  152. data/app/helpers/rademade_admin/form_helper.rb +63 -0
  153. data/app/helpers/rademade_admin/menu_helper.rb +45 -0
  154. data/app/helpers/rademade_admin/name_helper.rb +17 -0
  155. data/app/helpers/rademade_admin/upload_preview_helper.rb +59 -0
  156. data/app/helpers/rademade_admin/uri_helper.rb +104 -0
  157. data/app/inputs/rademade_admin/admin_file_input.rb +70 -0
  158. data/app/inputs/rademade_admin/admin_select_input.rb +81 -0
  159. data/app/inputs/rademade_admin/admin_textarea_input.rb +5 -0
  160. data/app/inputs/rademade_admin/boolean_input.rb +13 -0
  161. data/app/models/rademade_admin/ability.rb +39 -0
  162. data/app/models/rademade_admin/user.rb +6 -0
  163. data/app/serializers/autocomplete_serializer.rb +46 -0
  164. data/app/services/form_builder.rb +3 -0
  165. data/app/services/loader_service.rb +7 -0
  166. data/app/services/login.rb +18 -0
  167. data/app/services/login/error.rb +17 -0
  168. data/app/services/model_controller/instance_options.rb +38 -0
  169. data/app/services/model_controller/linker.rb +49 -0
  170. data/app/services/model_controller/model_options.rb +39 -0
  171. data/app/services/model_controller/notifier.rb +40 -0
  172. data/app/services/model_controller/templates.rb +27 -0
  173. data/app/services/saver.rb +69 -0
  174. data/app/services/search/conditions/abstract.rb +53 -0
  175. data/app/services/search/conditions/autocomplete.rb +44 -0
  176. data/app/services/search/conditions/list.rb +35 -0
  177. data/app/services/search/query_adapter/abstract.rb +54 -0
  178. data/app/services/search/query_adapter/active_record.rb +33 -0
  179. data/app/services/search/query_adapter/mongoid.rb +33 -0
  180. data/app/services/search/searcher.rb +19 -0
  181. data/app/services/sortable_service.rb +37 -0
  182. data/app/services/video_service.rb +22 -0
  183. data/app/views/layouts/rademade_admin.html.erb +13 -0
  184. data/app/views/rademade_admin/_blocks/_form_control.html.erb +5 -0
  185. data/app/views/rademade_admin/_blocks/_header.html.erb +30 -0
  186. data/app/views/rademade_admin/_blocks/_menu.html.erb +41 -0
  187. data/app/views/rademade_admin/_blocks/_pagination.html.erb +18 -0
  188. data/app/views/rademade_admin/_blocks/_sub_menu.html.erb +19 -0
  189. data/app/views/rademade_admin/_blocks/sub_menu/_link.html.erb +5 -0
  190. data/app/views/rademade_admin/_layouts/inner.html.erb +37 -0
  191. data/app/views/rademade_admin/_layouts/inner/form.html.erb +15 -0
  192. data/app/views/rademade_admin/_layouts/inner/index_table.html.erb +59 -0
  193. data/app/views/rademade_admin/_layouts/inner/related_index_table.html.erb +55 -0
  194. data/app/views/rademade_admin/abstract/_form.html.erb +10 -0
  195. data/app/views/rademade_admin/abstract/edit.html.erb +9 -0
  196. data/app/views/rademade_admin/abstract/form.html.erb +1 -0
  197. data/app/views/rademade_admin/abstract/index.html.erb +77 -0
  198. data/app/views/rademade_admin/abstract/new.html.erb +9 -0
  199. data/app/views/rademade_admin/abstract/related_index.html.erb +78 -0
  200. data/app/views/rademade_admin/dashboard/index.html.erb +9 -0
  201. data/app/views/rademade_admin/dashboard/login.html.erb +31 -0
  202. data/config/initializers/devise.rb +250 -0
  203. data/config/initializers/routes.rb +3 -0
  204. data/config/locales/devise.en.yml +59 -0
  205. data/config/routes.rb +17 -0
  206. data/lib/rademade_admin.rb +26 -0
  207. data/lib/rademade_admin/configuration.rb +17 -0
  208. data/lib/rademade_admin/engine.rb +22 -0
  209. data/lib/rademade_admin/file_info_formatter.rb +12 -0
  210. data/lib/rademade_admin/hrml_buffer.rb +14 -0
  211. data/lib/rademade_admin/model/configuration.rb +52 -0
  212. data/lib/rademade_admin/model/configuration/fields.rb +33 -0
  213. data/lib/rademade_admin/model/data_adapter.rb +59 -0
  214. data/lib/rademade_admin/model/data_adapter/active_record.rb +53 -0
  215. data/lib/rademade_admin/model/data_adapter/mongoid.rb +49 -0
  216. data/lib/rademade_admin/model/graph.rb +36 -0
  217. data/lib/rademade_admin/model/info.rb +106 -0
  218. data/lib/rademade_admin/model/reflection.rb +31 -0
  219. data/lib/rademade_admin/model/reflection/data.rb +47 -0
  220. data/lib/rademade_admin/model/reflection/uploader.rb +18 -0
  221. data/lib/rademade_admin/routing.rb +3 -0
  222. data/lib/rademade_admin/routing/mapper.rb +42 -0
  223. data/lib/rademade_admin/routing/resource.rb +6 -0
  224. data/lib/rademade_admin/sortable.rb +12 -0
  225. data/lib/rademade_admin/uploader/photo.rb +13 -0
  226. data/lib/rademade_admin/uploader/video.rb +11 -0
  227. data/lib/rademade_admin/user.rb +16 -0
  228. data/lib/rademade_admin/version.rb +3 -0
  229. data/lib/tasks/rademade_admin_tasks.rake +4 -0
  230. data/test/dummy/README.rdoc +28 -0
  231. data/test/dummy/Rakefile +6 -0
  232. data/test/dummy/app/assets/javascripts/application.js +13 -0
  233. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  234. data/test/dummy/app/controllers/application_controller.rb +5 -0
  235. data/test/dummy/app/controllers/rademade_admin/posts_controller.rb +9 -0
  236. data/test/dummy/app/controllers/rademade_admin/users_controller.rb +14 -0
  237. data/test/dummy/app/helpers/application_helper.rb +2 -0
  238. data/test/dummy/app/models/post.rb +9 -0
  239. data/test/dummy/app/models/user.rb +7 -0
  240. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  241. data/test/dummy/bin/bundle +3 -0
  242. data/test/dummy/bin/rails +4 -0
  243. data/test/dummy/bin/rake +4 -0
  244. data/test/dummy/config.ru +4 -0
  245. data/test/dummy/config/application.rb +29 -0
  246. data/test/dummy/config/boot.rb +5 -0
  247. data/test/dummy/config/environment.rb +5 -0
  248. data/test/dummy/config/environments/development.rb +29 -0
  249. data/test/dummy/config/environments/production.rb +80 -0
  250. data/test/dummy/config/environments/test.rb +36 -0
  251. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  252. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  253. data/test/dummy/config/initializers/inflections.rb +16 -0
  254. data/test/dummy/config/initializers/mime_types.rb +5 -0
  255. data/test/dummy/config/initializers/rademade_admin.rb +3 -0
  256. data/test/dummy/config/initializers/secret_token.rb +12 -0
  257. data/test/dummy/config/initializers/session_store.rb +3 -0
  258. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  259. data/test/dummy/config/locales/en.yml +23 -0
  260. data/test/dummy/config/mongoid.yml +6 -0
  261. data/test/dummy/config/routes.rb +8 -0
  262. data/test/dummy/db/development.sqlite3 +0 -0
  263. data/test/dummy/public/404.html +58 -0
  264. data/test/dummy/public/422.html +58 -0
  265. data/test/dummy/public/500.html +57 -0
  266. data/test/dummy/public/favicon.ico +0 -0
  267. data/test/integration/navigation_test.rb +10 -0
  268. data/test/rademade_admin_test.rb +7 -0
  269. data/test/test_helper.rb +15 -0
  270. metadata +691 -0
@@ -0,0 +1,49 @@
1
+ module RademadeAdmin
2
+ module Linker
3
+
4
+ def link(item)
5
+ if has_one_relation?
6
+ set_attribute(item, params[:parent_id])
7
+ else
8
+ old_data = get_attribute(item)
9
+ old_data << params[:parent_id]
10
+ set_attribute(item, old_data)
11
+ end
12
+
13
+ end
14
+
15
+ def unlink(item)
16
+ if has_one_relation?
17
+ set_attribute(item, nil)
18
+ else
19
+ old_data = get_attribute(item)
20
+ new_data = old_data - Array(params[:parent_id])
21
+ set_attribute(item, new_data)
22
+ end
23
+
24
+ end
25
+
26
+ private
27
+
28
+ def has_one_relation?
29
+ model_info.has_one.include? params[:parent]
30
+ end
31
+
32
+ def relation_suffix
33
+ has_one_relation? ? '_id' : '_ids'
34
+ end
35
+
36
+ def get_attribute(item)
37
+ item.send(relation_field)
38
+ end
39
+
40
+ def relation_field
41
+ params[:parent].downcase + relation_suffix
42
+ end
43
+
44
+ def set_attribute(item, new_value)
45
+ item.send(relation_field + '=', new_value)
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,39 @@
1
+ module RademadeAdmin
2
+ module ModelOptions
3
+
4
+ def options(&options_block)
5
+ configuration.instance_eval &options_block
6
+ end
7
+
8
+ def model_name
9
+ configuration.model_name
10
+ end
11
+
12
+ def item_name
13
+ configuration.item_name
14
+ end
15
+
16
+ def parent_menu_item
17
+ configuration.parent_menu_item
18
+ end
19
+
20
+ def model_class
21
+ configuration.model_class
22
+ end
23
+
24
+ def model_info
25
+ @model_info ||= Model::Graph.instance.model_info(model_class)
26
+ end
27
+
28
+ def init_model_info(model_reflection)
29
+ Model::Info.new(model_reflection, configuration)
30
+ end
31
+
32
+ private
33
+
34
+ def configuration
35
+ @configuration ||= Model::Configuration.new(controller_name)
36
+ end
37
+
38
+ end
39
+ end
@@ -0,0 +1,40 @@
1
+ module RademadeAdmin
2
+ module Notifier
3
+
4
+ def success_action
5
+ render :json => {
6
+ :message => 'ok'
7
+ }
8
+ end
9
+
10
+ def success_insert(item)
11
+ success_message(item, 'was inserted!', {
12
+ :form_action => admin_update_uri(item)
13
+ })
14
+ end
15
+
16
+ def success_update(item)
17
+ success_message(item, 'data was updated!')
18
+ end
19
+
20
+ def success_delete(item)
21
+ success_message(item, 'was deleted!')
22
+ end
23
+
24
+ def success_unlink(item)
25
+ success_message(item, 'was unlinked from entity!')
26
+ end
27
+
28
+ def success_link(item)
29
+ success_message(item, 'was linked to entity!')
30
+ end
31
+
32
+ def success_message(item, action_message, additional_data = {})
33
+ render :json => {
34
+ :data => item,
35
+ :message => "#{item_name.capitalize} #{action_message}"
36
+ }.merge(additional_data)
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,27 @@
1
+ module RademadeAdmin
2
+ module Templates
3
+
4
+ def native_template_folder
5
+ # 7 = "Admin::".length
6
+ # 11 = "Controller".length
7
+ # 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'
14
+ end
15
+
16
+ def form_template_path(real = false)
17
+ "rademade_admin/#{template_folder}/" + (real ? '_' : '') + 'form'
18
+ end
19
+
20
+ 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}")
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,69 @@
1
+ module RademadeAdmin
2
+ class Saver
3
+
4
+ attr_reader :item
5
+
6
+ def initialize(model_info, params)
7
+ @model_info = model_info
8
+ @params = params
9
+ end
10
+
11
+ def create_model
12
+ @item = @model_info.model.new filter_data_params
13
+ end
14
+
15
+ def update_model
16
+ @item = @model_info.model.find(@params[:id])
17
+ item.update filter_data_params
18
+ end
19
+
20
+ def save_model
21
+ item.save @params
22
+ end
23
+
24
+ def save_aggregated_data
25
+ save_model_relations
26
+ save_model_uploads
27
+ item.save!
28
+ end
29
+
30
+ def errors
31
+ item.errors
32
+ end
33
+
34
+ private
35
+
36
+ def save_model_relations
37
+ data = @params[:data]
38
+ model_reflection = @model_info.model_reflection
39
+ model_reflection.relations.each do |name, rel|
40
+ assoc_key = model_reflection.association_foreign_key(rel)
41
+ if data.has_key? assoc_key
42
+ ids = data[assoc_key]
43
+ ids.reject! { |id| id.empty? } if ids.kind_of?(Array)
44
+ item.send(assoc_key + '=', ids)
45
+ end
46
+ end
47
+ end
48
+
49
+ def save_model_uploads
50
+ data = @params[:data]
51
+ @model_info.model_reflection.uploaders.each do |name, _|
52
+ if data.has_key?(name) and not data[name].blank?
53
+ image_path = CarrierWave.root + data[name].to_s
54
+ setter_method = (name.to_s + '=').to_sym
55
+ begin
56
+ item.send(setter_method, File.open(image_path))
57
+ rescue
58
+ #rm_todo clear image
59
+ end
60
+ end
61
+ end
62
+ end
63
+
64
+ def filter_data_params
65
+ @params.require(:data).permit(@model_info.save_form_fields)
66
+ end
67
+
68
+ end
69
+ end
@@ -0,0 +1,53 @@
1
+ module RademadeAdmin
2
+ module Search
3
+ class Abstract
4
+
5
+ attr_reader :params
6
+
7
+ def initialize(params, origin_fields)
8
+ @params = params
9
+ @origin_fields = origin_fields
10
+ end
11
+
12
+ def conditions
13
+ @conditions ||= init_conditions
14
+ end
15
+
16
+ protected
17
+
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
27
+
28
+ def where
29
+ {
30
+ :or => {},
31
+ :and => {}
32
+ }
33
+ end
34
+
35
+ def order
36
+ {}
37
+ end
38
+
39
+ def page
40
+ nil
41
+ end
42
+
43
+ def per_page
44
+ nil
45
+ end
46
+
47
+ def limit
48
+ nil
49
+ end
50
+
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,44 @@
1
+ module RademadeAdmin
2
+ module Search
3
+ class AutocompleteConditions < Abstract
4
+
5
+ def initialize(params, origin_fields, filter_fields)
6
+ super(params, origin_fields)
7
+ @filter_fields = filter_fields
8
+ end
9
+
10
+ protected
11
+
12
+ def where
13
+ # todo hierarchical
14
+ @where_conditions = super
15
+ append_query_condition
16
+ append_search_params
17
+ @where_conditions
18
+ end
19
+
20
+ def limit
21
+ 10
22
+ end
23
+
24
+ private
25
+
26
+ def append_query_condition
27
+ unless @params[:q].present?
28
+ @filter_fields.each do |field|
29
+ @where_conditions[:or][field] = /#{@params[:q]}/i
30
+ end
31
+ end
32
+ end
33
+
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
38
+ end
39
+ end
40
+ end
41
+
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,35 @@
1
+ module RademadeAdmin
2
+ module Search
3
+ class ListConditions < Abstract
4
+
5
+ protected
6
+
7
+ def where
8
+ where_conditions = super
9
+ where_conditions[:and] = @params.slice(*@origin_fields)
10
+ where_conditions
11
+ end
12
+
13
+ def order
14
+ field = @params[:sort] || default_order_field
15
+ direction = @params[:direction] || :asc
16
+ [{field => direction}]
17
+ end
18
+
19
+ def page
20
+ @params[:page] || 1
21
+ end
22
+
23
+ def per_page
24
+ @params[:paginate] || 20
25
+ end
26
+
27
+ private
28
+
29
+ def default_order_field
30
+ @origin_fields.include?('position') ? :position : :id
31
+ end
32
+
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,54 @@
1
+ module RademadeAdmin
2
+ module Search
3
+ class QueryAdapter
4
+
5
+ def initialize(model)
6
+ @model = model
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?
15
+ end
16
+ @result
17
+ end
18
+
19
+ protected
20
+
21
+ def base_condition
22
+ @model.unscoped
23
+ end
24
+
25
+ def related_base_condition
26
+ parent_model = @params[:parent].constantize
27
+ parent_id = @params[:parent_id]
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
31
+
32
+ def where(where_conditions)
33
+ @result
34
+ end
35
+
36
+ def order(order_conditions)
37
+ @result
38
+ end
39
+
40
+ def page(page_condition)
41
+ @result.page(page_condition)
42
+ end
43
+
44
+ def per_page(per_page_condition)
45
+ @result.per(per_page_condition)
46
+ end
47
+
48
+ def limit(limit_condition)
49
+ @result.limit(limit_condition)
50
+ end
51
+
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,33 @@
1
+ module RademadeAdmin
2
+ module Search
3
+ class ActiveRecord < Abstract
4
+
5
+ protected
6
+
7
+ def where(where_conditions)
8
+ values = []
9
+ condition = ''
10
+ where_conditions.each do |type, conditions|
11
+ conditions.each do |field, value|
12
+ condition += " #{type.to_s.capitalize} " unless condition.empty?
13
+ if value.is_a? Array
14
+ condition += "#{field} IN (?)"
15
+ else
16
+ condition += "#{field} = ?"
17
+ end
18
+ values << value
19
+ end
20
+ end
21
+ @result.where([condition, *values])
22
+ end
23
+
24
+ def order(order_conditions)
25
+ order_conditions.each do |order_condition|
26
+ @result = @result.order(order_condition)
27
+ end
28
+ @result
29
+ end
30
+
31
+ end
32
+ end
33
+ end