rademade_admin 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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,32 @@
1
+ #notice {
2
+ color: green;
3
+ }
4
+
5
+ .field_with_errors {
6
+ padding: 2px;
7
+ background-color: red;
8
+ display: table;
9
+ }
10
+
11
+ #error_explanation {
12
+ width: 450px;
13
+ border: 2px solid red;
14
+ padding: 7px;
15
+ padding-bottom: 0;
16
+ margin-bottom: 20px;
17
+ background-color: #f0f0f0;
18
+ h2 {
19
+ text-align: left;
20
+ font-weight: bold;
21
+ padding: 5px 5px 5px 15px;
22
+ font-size: 12px;
23
+ margin: -7px;
24
+ margin-bottom: 0px;
25
+ background-color: #c00;
26
+ color: #fff;
27
+ }
28
+ ul li {
29
+ font-size: 12px;
30
+ list-style: square;
31
+ }
32
+ }
@@ -0,0 +1,24 @@
1
+ module RademadeAdmin
2
+ class AbstractController < ApplicationController
3
+ include ::RademadeAdmin::UriHelper
4
+
5
+ layout 'rademade_admin'
6
+
7
+ before_action :require_login
8
+
9
+ rescue_from ::CanCan::AccessDenied do |exception|
10
+ redirect_to root_url, :alert => exception.message
11
+ end
12
+
13
+ def require_login
14
+ redirect_to :controller => 'dashboard', :action => 'login' unless user_signed_in?
15
+ end
16
+
17
+ def render_errors(errors)
18
+ render :json => {
19
+ :errors => errors,
20
+ :message => 'Error occurred'
21
+ }, :status => :unprocessable_entity
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,16 @@
1
+ module RademadeAdmin
2
+ class AdminUsersController < ModelController
3
+
4
+ options do
5
+ model 'RademadeAdmin::AdminUser'
6
+ list :email, :first_name, :last_name
7
+ form do
8
+ email
9
+ first_name
10
+ last_name
11
+ password
12
+ end
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,7 @@
1
+ module RademadeAdmin
2
+ class ApplicationController < ActionController::Base
3
+ def current_ability
4
+ @current_ability ||= RademadeAdmin::Ability.new(current_user)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,16 @@
1
+ module RademadeAdmin
2
+
3
+ class DashboardController < RademadeAdmin::AbstractController
4
+
5
+ skip_before_action :require_login, :only => [:login]
6
+
7
+ def index
8
+
9
+ end
10
+
11
+ def login
12
+ redirect_to :action => 'index' if user_signed_in?
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,122 @@
1
+ module RademadeAdmin
2
+ class ModelController < RademadeAdmin::AbstractController
3
+
4
+ extend RademadeAdmin::ModelOptions
5
+ include RademadeAdmin::Linker
6
+ include RademadeAdmin::InstanceOptions
7
+ include RademadeAdmin::Templates
8
+ include RademadeAdmin::Notifier
9
+
10
+ before_filter :load_options
11
+
12
+ def create
13
+ authorize! :create, model_class
14
+ saver = Saver.new(model_info, params)
15
+ saver.create_model
16
+ if saver.save_model
17
+ saver.save_aggregated_data
18
+ success_insert saver.item
19
+ else
20
+ render_errors saver.errors
21
+ end
22
+ end
23
+
24
+ def update
25
+ authorize! :update, model_class
26
+ saver = Saver.new(model_info, params)
27
+ if saver.update_model
28
+ saver.save_aggregated_data
29
+ success_update saver.item
30
+ else
31
+ render_errors saver.errors
32
+ end
33
+ end
34
+
35
+ def destroy
36
+ authorize! :destroy, model_class
37
+ @item = find_item(params[:id])
38
+ @item.delete if @item
39
+ success_delete @item
40
+ end
41
+
42
+ def autocomplete
43
+ 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)
48
+ end
49
+
50
+ # todo another action for related
51
+ def index
52
+ 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
+ respond_to do |format|
59
+ format.html { is_related_list ? render_template('related_index') : render_template }
60
+ format.json { render :json => @items }
61
+ end
62
+ end
63
+
64
+ def new
65
+ authorize! :create, model_class
66
+ @item = model_info.model.new
67
+ render_template
68
+ end
69
+
70
+ def edit
71
+ authorize! :update, model_class
72
+ @item = find_item(params[:id])
73
+ render_template
74
+ end
75
+
76
+ def unlink_relation
77
+ item = find_item(params[:id])
78
+ unlink(item)
79
+ item.save
80
+ success_unlink item
81
+ end
82
+
83
+ def link_relation
84
+ item = find_item(params[:id])
85
+ link(item)
86
+ item.save
87
+ success_link item
88
+ end
89
+
90
+ def show
91
+ authorize! :read, model_class
92
+ @item = find_item(params[:id])
93
+ respond_to do |format|
94
+ format.html { redirect_to :action => 'index' }
95
+ format.json { render :json => @item }
96
+ end
97
+ end
98
+
99
+ def form
100
+ authorize! :read, model_class
101
+ @item = params[:id].blank? ? model_info.model.new : find_item(params[:id])
102
+ render form_template_path(true), :layout => false
103
+ end
104
+
105
+ def re_sort
106
+ @sortable_service = RademadeAdmin::SortableService.new(model_info, params)
107
+ @sortable_service.re_sort_items
108
+ success_action
109
+ end
110
+
111
+ protected
112
+
113
+ def find_item(id)
114
+ model_info.model.find(id)
115
+ end
116
+
117
+ def render_template(template = action_name)
118
+ render abstract_template(template)
119
+ end
120
+
121
+ end
122
+ end
@@ -0,0 +1,22 @@
1
+ module RademadeAdmin
2
+ class SessionsController < RademadeAdmin::AbstractController
3
+
4
+ skip_before_action :require_login
5
+
6
+ def create
7
+ begin
8
+ user = RademadeAdmin::Login.admin( params )
9
+ sign_in user
10
+ render :json => user, :status => :ok
11
+ rescue RademadeAdmin::Login::Error => e
12
+ render :json => {:errors => e.field_messages}, :status => :precondition_failed
13
+ end
14
+ end
15
+
16
+ def logout
17
+ sign_out current_user
18
+ redirect_to :controller => 'dashboard', :action => 'login'
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,27 @@
1
+ # encoding: utf-8
2
+ module RademadeAdmin::FieldHelper
3
+
4
+ def field_to_label(field)
5
+ field.to_s.sub('_', ' ').capitalize
6
+ end
7
+
8
+ def pagination_option(number, name = 'paginate')
9
+ hash_params = request.query_parameters.clone
10
+ hash_params.delete(:page)
11
+ hash_params[name.to_sym] = number
12
+
13
+ options = '?' + hash_params.map do |k, v|
14
+ "#{k.to_s}=#{v}"
15
+ end.join('&')
16
+
17
+ selected = number == request.query_parameters[name.to_sym].to_i
18
+
19
+ content_tag(:option, number.to_s, selected: selected, value: request.path+options)
20
+ end
21
+
22
+ def input_attr(attrs = {})
23
+ attrs.merge :wrapper_html => {:class => 'form-group'},
24
+ :input_html => {:class => 'form-control'}
25
+ end
26
+
27
+ end
@@ -0,0 +1,63 @@
1
+ module RademadeAdmin::FormHelper
2
+
3
+ def admin_form(record, model, &block)
4
+ semantic_form_for(
5
+ record,
6
+ :url => record.new_record? ? admin_create_uri(model) : admin_update_uri(record),
7
+ :as => :data,
8
+ :html => {
9
+ :multipart => true,
10
+ :novalidate => true,
11
+ :autocomplete => 'off',
12
+ :class => (record.new_record? ? 'insert-item-form' : 'update-item-form') + ' form-horizontal',
13
+ },
14
+ &block
15
+ )
16
+ end
17
+
18
+ def admin_field(form, name, params, model_info, record)
19
+ attrs = admin_default_params(name).merge(admin_field_params(params))
20
+
21
+ field = form.input(name, input_attr(attrs))
22
+
23
+ if multiple_relation?(model_info, name)
24
+ link = admin_field_link_to_list(name, model_info, record).to_s
25
+ else
26
+ link = ''
27
+ end
28
+
29
+ concat field + link
30
+ end
31
+
32
+ def admin_default_params(name)
33
+ {:label => field_to_label(name)}
34
+ end
35
+
36
+ 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)
43
+ end
44
+
45
+ def admin_field_params(field_params)
46
+ if field_params.is_a? Hash
47
+ field_params
48
+ else
49
+ {:as => field_params}
50
+ end
51
+ end
52
+
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
@@ -0,0 +1,45 @@
1
+ module RademadeAdmin::MenuHelper
2
+
3
+ def main_menu
4
+ @model_infos = RademadeAdmin::Model::Graph.instance.root_models
5
+ menu = collect_children
6
+ menu.unshift({ :uri => url_for(:root), :name => 'Home', :ico => 'fa fa-home', :sub => [] })
7
+ menu
8
+ end
9
+
10
+ def active?(menu_item)
11
+ if menu_item[:is_current]
12
+ true
13
+ else
14
+ menu_item[:sub].each do |sub_item|
15
+ if active?(sub_item)
16
+ return true
17
+ end
18
+ end
19
+ false
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def collect_children(parent = nil)
26
+ menu = []
27
+ @model_infos.each do |model_info|
28
+ if model_info.parent_menu_item == parent
29
+ uri = admin_list_uri(model_info)
30
+ menu << {
31
+ :uri => uri,
32
+ :model_info => model_info,
33
+ :sub => collect_children(model_info.model.to_s),
34
+ :is_current => current_menu?(uri, model_info)
35
+ }
36
+ end
37
+ end
38
+ menu
39
+ end
40
+
41
+ def current_menu?(uri, model_info)
42
+ model_info == @model_info or (not uri.nil? and current_page?(uri))
43
+ end
44
+
45
+ end
@@ -0,0 +1,17 @@
1
+ module RademadeAdmin::NameHelper
2
+
3
+ def admin_list_name(model_info = @model_info, suffix = true)
4
+ list_name = model_info.item_name
5
+ if suffix
6
+ list_name += ' list'
7
+ else
8
+ list_name = list_name.pluralize
9
+ end
10
+ list_name
11
+ end
12
+
13
+ def admin_add_name(model_info = @model_info)
14
+ "Add #{model_info.item_name.downcase}"
15
+ end
16
+
17
+ end
@@ -0,0 +1,59 @@
1
+ module RademadeAdmin::UploadPreviewHelper
2
+
3
+ include ActionView::Helpers::TagHelper
4
+ include ActionView::Context
5
+
6
+ #@param uploader [CarrierWave::Uploader::Base]
7
+ def file_preview_html(uploader)
8
+ content_tag(:div, :class => 'image-preview-wrapper') do
9
+ if uploader.blank?
10
+ empty_file_html(uploader)
11
+ else
12
+ uploaded_file_html(uploader)
13
+ end
14
+ end
15
+ end
16
+
17
+ def empty_file_html(uploader)
18
+ content_tag(:span, 'File not chosen', {
19
+ :class => 'no-file'
20
+ })
21
+ end
22
+
23
+ def uploaded_file_html(uploader)
24
+ included_modules = uploader.class.ancestors
25
+ if included_modules.include? RademadeAdmin::Uploader::Photo
26
+ uploaded_image_preview(uploader)
27
+ elsif included_modules.include? RademadeAdmin::Uploader::Video
28
+ uploaded_video_preview(uploader)
29
+ else
30
+ uploaded_file_default_preview(uploader)
31
+ end
32
+ end
33
+
34
+ def uploaded_image_preview(uploader)
35
+ content_tag(:img, '', {
36
+ :src => uploader.resize(200, 200),
37
+ :class => 'image-preview',
38
+ :width => 200,
39
+ :height => 200
40
+ })
41
+ end
42
+
43
+ def uploaded_video_preview(uploader)
44
+ content_tag(:img, '', {
45
+ :src => uploader.thumb_path,
46
+ :class => 'video-preview',
47
+ :width => 300
48
+ })
49
+ end
50
+
51
+ def uploaded_file_default_preview(uploader)
52
+ file_path = uploader.file.file
53
+ text = File.basename(file_path) + ', ' + RademadeAdmin::FileInfoFormatter.format_size(File.size(file_path))
54
+ content_tag(:span, text, {
55
+ :class => 'file-uploaded'
56
+ })
57
+ end
58
+
59
+ end