rademade_admin 0.0.3 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (223) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  3. data/app/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  4. data/app/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  5. data/app/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  6. data/app/assets/images/rademade_admin/ico/btn-attach.png +0 -0
  7. data/app/assets/images/rademade_admin/logos/logo.png +0 -0
  8. data/app/assets/javascripts/rademade_admin.coffee +8 -4
  9. data/app/assets/javascripts/rademade_admin/app/app.coffee +2 -1
  10. data/app/assets/javascripts/rademade_admin/app/common/datetime-picker.coffee +7 -0
  11. data/app/assets/javascripts/rademade_admin/app/common/dnd-sort.coffee +23 -32
  12. data/app/assets/javascripts/rademade_admin/app/common/droplist.coffee +8 -0
  13. data/app/assets/javascripts/rademade_admin/app/common/lang-panel.coffee +6 -0
  14. data/app/assets/javascripts/rademade_admin/app/common/related-index.coffee +6 -9
  15. data/app/assets/javascripts/rademade_admin/app/common/sort-list.coffee +10 -14
  16. data/app/assets/javascripts/rademade_admin/app/common/uploader.coffee +3 -3
  17. data/app/assets/javascripts/rademade_admin/app/form-popup/initializer.coffee +24 -37
  18. data/app/assets/javascripts/rademade_admin/app/form-popup/view.coffee +32 -18
  19. data/app/assets/javascripts/rademade_admin/app/forms/remove.coffee +4 -3
  20. data/app/assets/javascripts/rademade_admin/app/select2/model.coffee +7 -0
  21. data/app/assets/javascripts/rademade_admin/app/select2/related/collection-view.coffee +35 -0
  22. data/app/assets/javascripts/rademade_admin/app/select2/related/collection.coffee +28 -0
  23. data/app/assets/javascripts/rademade_admin/app/select2/related/model.coffee +15 -0
  24. data/app/assets/javascripts/rademade_admin/app/select2/related/view.coffee +40 -0
  25. data/app/assets/javascripts/rademade_admin/app/select2/view.coffee +78 -0
  26. data/app/assets/javascripts/rademade_admin/form/form-ajax.coffee +48 -0
  27. data/app/assets/javascripts/rademade_admin/form/form-initializater.coffee +45 -0
  28. data/app/assets/javascripts/rademade_admin/form/form-validation.coffee +42 -0
  29. data/app/assets/javascripts/rademade_admin/form/form.coffee +62 -0
  30. data/app/assets/javascripts/rademade_admin/library/ckeditor/config.js +14 -12
  31. data/app/assets/stylesheets/{rademade_admin/bootstrap → old/-bootstrap}/bootstrap-overrides.css.erb +0 -0
  32. data/app/assets/stylesheets/{rademade_admin/bootstrap → old/-bootstrap}/main.scss.erb +0 -0
  33. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/chart-showcase.scss.erb +0 -0
  34. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/datatables.scss.erb +0 -0
  35. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/elements.scss.erb +0 -0
  36. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/error.scss.erb +0 -0
  37. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/form-showcase.scss.erb +0 -0
  38. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/form-wizard.scss.erb +0 -0
  39. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/gallery.scss.erb +0 -0
  40. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/grids.scss.erb +0 -0
  41. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/icons.scss.erb +0 -0
  42. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/index.scss.erb +0 -0
  43. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/layout.scss.erb +0 -0
  44. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/new-user.scss.erb +0 -0
  45. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/personal-info.scss.erb +0 -0
  46. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/popup.scss.erb +0 -0
  47. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/signin.scss.erb +0 -0
  48. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/tables.scss.erb +0 -0
  49. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/ui-elements.scss.erb +0 -0
  50. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/user-list.scss.erb +0 -0
  51. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/user-profile.scss.erb +0 -0
  52. data/app/assets/stylesheets/{rademade_admin/detail_admin → old/-detail_admin}/web-app-icons.scss.erb +0 -0
  53. data/app/assets/stylesheets/{rademade_admin/lib → old/-lib}/bootstrap.datepicker.css.erb +0 -0
  54. data/app/assets/stylesheets/{rademade_admin/lib → old/-lib}/morris.css.erb +0 -0
  55. data/app/assets/stylesheets/{rademade_admin → old}/base.scss.erb +0 -0
  56. data/app/assets/stylesheets/{rademade_admin → old}/edit.css +0 -0
  57. data/app/assets/stylesheets/{rademade_admin → old}/file-upload.scss.erb +0 -0
  58. data/app/assets/stylesheets/{rademade_admin → old}/notifier.custom.css.erb +0 -0
  59. data/app/assets/stylesheets/{rademade_admin → old}/scaffolds.scss.erb +0 -0
  60. data/app/assets/stylesheets/rademade_admin.sass.erb +96 -0
  61. data/app/assets/stylesheets/rademade_admin/base/main.sass +71 -0
  62. data/app/assets/stylesheets/rademade_admin/blocks/buttons/main.sass +81 -0
  63. data/app/assets/stylesheets/rademade_admin/blocks/form/input.sass +29 -0
  64. data/app/assets/stylesheets/rademade_admin/blocks/form/label.sass +31 -0
  65. data/app/assets/stylesheets/rademade_admin/blocks/form/select.sass +26 -0
  66. data/app/assets/stylesheets/rademade_admin/blocks/form/select2.sass +67 -0
  67. data/app/assets/stylesheets/rademade_admin/blocks/form/table.sass +42 -0
  68. data/app/assets/stylesheets/rademade_admin/blocks/form/texarea.sass +20 -0
  69. data/app/assets/stylesheets/rademade_admin/blocks/header/_logo.sass +7 -0
  70. data/app/assets/stylesheets/rademade_admin/blocks/header/_menu.sass +80 -0
  71. data/app/assets/stylesheets/rademade_admin/blocks/header/_search.sass +37 -0
  72. data/app/assets/stylesheets/rademade_admin/blocks/page/content/_main.sass +11 -0
  73. data/app/assets/stylesheets/rademade_admin/blocks/page/headline/main.sass +44 -0
  74. data/app/assets/stylesheets/rademade_admin/blocks/page/menu/_main.sass +31 -0
  75. data/app/assets/stylesheets/rademade_admin/lib/datepicker.sass +373 -0
  76. data/app/assets/stylesheets/rademade_admin/lib/glyphicon.sass.erb +618 -0
  77. data/app/assets/stylesheets/rademade_admin/lib/notifier.css.erb +661 -0
  78. data/app/assets/stylesheets/rademade_admin/lib/uploader.sass +66 -0
  79. data/app/assets/stylesheets/rademade_admin/mixins/clear.sass +5 -0
  80. data/app/assets/stylesheets/rademade_admin/mixins/fonts.sass +8 -0
  81. data/app/assets/stylesheets/rademade_admin/mixins/sprite.sass +7 -0
  82. data/app/assets/stylesheets/rademade_admin/mixins/text-overflow.sass +6 -0
  83. data/app/assets/stylesheets/rademade_admin/mixins/user-select.sass +5 -0
  84. data/app/assets/stylesheets/rademade_admin/modules/breadcrumbs/main.sass +30 -0
  85. data/app/assets/stylesheets/rademade_admin/modules/errors/error.sass.erb +19 -0
  86. data/app/assets/stylesheets/rademade_admin/modules/form/main.sass +15 -0
  87. data/app/assets/stylesheets/rademade_admin/modules/header/main.sass +6 -0
  88. data/app/assets/stylesheets/rademade_admin/modules/login/_main.sass +79 -0
  89. data/app/assets/stylesheets/rademade_admin/modules/main-menu/main.sass +0 -0
  90. data/app/assets/stylesheets/rademade_admin/modules/page/main.sass +16 -0
  91. data/app/assets/stylesheets/rademade_admin/modules/pagination/main.sass +51 -0
  92. data/app/assets/stylesheets/rademade_admin/modules/popup/new.sass +18 -0
  93. data/app/assets/stylesheets/rademade_admin/var/colors.sass +0 -0
  94. data/app/assets/stylesheets/rademade_admin/var/images.sass +2 -0
  95. data/app/assets/stylesheets/rademade_admin/var/width.sass +13 -0
  96. data/app/controllers/rademade_admin/abstract_controller.rb +18 -2
  97. data/app/controllers/rademade_admin/application_controller.rb +1 -1
  98. data/app/controllers/rademade_admin/dashboard_controller.rb +1 -1
  99. data/app/controllers/rademade_admin/file_controller.rb +25 -0
  100. data/app/controllers/rademade_admin/model_controller.rb +66 -47
  101. data/app/controllers/rademade_admin/sessions_controller.rb +3 -3
  102. data/app/helpers/rademade_admin/field_helper.rb +21 -32
  103. data/app/helpers/rademade_admin/form_helper.rb +57 -27
  104. data/app/helpers/rademade_admin/menu_helper.rb +12 -5
  105. data/app/helpers/rademade_admin/uri_helper.rb +50 -62
  106. data/app/inputs/rademade_admin/date_time_input.rb +13 -0
  107. data/app/inputs/rademade_admin/file_input.rb +72 -0
  108. data/app/inputs/rademade_admin/related_select_input.rb +78 -0
  109. data/app/serializers/autocomplete/link_serializer.rb +6 -4
  110. data/app/services/linker.rb +8 -14
  111. data/app/services/login.rb +5 -3
  112. data/app/services/model_controller/breadcrumbs.rb +36 -0
  113. data/app/services/model_controller/instance_options.rb +7 -5
  114. data/app/services/model_controller/model_options.rb +10 -7
  115. data/app/services/model_controller/notifier.rb +10 -6
  116. data/app/services/model_controller/templates.rb +4 -3
  117. data/app/services/relation_service.rb +11 -0
  118. data/app/services/saver.rb +59 -24
  119. data/app/services/search/conditions/abstract.rb +15 -14
  120. data/app/services/search/conditions/autocomplete.rb +11 -9
  121. data/app/services/search/conditions/list.rb +6 -5
  122. data/app/services/search/conditions/related_list.rb +17 -13
  123. data/app/services/search/{conditions/part/where.rb → part/abstract.rb} +7 -9
  124. data/app/services/search/part/order.rb +17 -0
  125. data/app/services/search/part/where.rb +19 -0
  126. data/app/services/sortable_service.rb +27 -27
  127. data/app/services/template_service.rb +68 -0
  128. data/app/services/upload/preview_service.rb +86 -0
  129. data/app/views/layouts/rademade_admin.html.erb +13 -4
  130. data/app/views/rademade_admin/_blocks/_header.html.erb +35 -28
  131. data/app/views/rademade_admin/_blocks/_menu.html.erb +20 -23
  132. data/app/views/rademade_admin/_blocks/_on_page_select.html.erb +15 -0
  133. data/app/views/rademade_admin/_blocks/_pagination.html.erb +1 -18
  134. data/app/views/rademade_admin/_blocks/_sub_menu.html.erb +3 -3
  135. data/app/views/rademade_admin/_blocks/form/_control.html.erb +3 -0
  136. data/app/views/rademade_admin/_blocks/form/_lang_panel.html.erb +19 -0
  137. data/app/views/rademade_admin/_blocks/sub_menu/_link.html.erb +6 -5
  138. data/app/views/rademade_admin/_blocks/table/_head.html.erb +13 -0
  139. data/app/views/rademade_admin/_layouts/inner.html.erb +21 -33
  140. data/app/views/rademade_admin/_layouts/inner/form.html.erb +6 -13
  141. data/app/views/rademade_admin/_layouts/inner/index_table.html.erb +31 -55
  142. data/app/views/rademade_admin/_layouts/inner/related_index_table.html.erb +26 -54
  143. data/app/views/rademade_admin/abstract/_form.html.erb +6 -9
  144. data/app/views/rademade_admin/abstract/edit.html.erb +3 -8
  145. data/app/views/rademade_admin/abstract/index.html.erb +38 -67
  146. data/app/views/rademade_admin/abstract/new.html.erb +3 -8
  147. data/app/views/rademade_admin/abstract/related.html.erb +48 -0
  148. data/app/views/rademade_admin/dashboard/index.html.erb +4 -5
  149. data/app/views/rademade_admin/dashboard/login.html.erb +19 -30
  150. data/config/initializers/carrier_wave/mongoid.rb +48 -0
  151. data/config/initializers/ckeditor.rb +3 -0
  152. data/config/initializers/kaminari_route_proxy.rb +16 -0
  153. data/config/initializers/simple_form.rb +147 -0
  154. data/config/initializers/simple_form/rademade_component.rb +9 -0
  155. data/config/initializers/simple_form/wrappers.rb +28 -0
  156. data/config/locales/rademade_admin.en.yml +28 -0
  157. data/config/locales/simple_form.en.yml +26 -0
  158. data/config/routes.rb +1 -2
  159. data/lib/rademade_admin.rb +7 -5
  160. data/lib/rademade_admin/bower/performer.rb +1 -1
  161. data/lib/rademade_admin/breadcrumbs/render/rademade.rb +31 -0
  162. data/lib/rademade_admin/engine.rb +2 -2
  163. data/lib/rademade_admin/input/related_select_input/model_data.rb +40 -0
  164. data/lib/rademade_admin/input/related_select_input/related_list.rb +60 -0
  165. data/lib/rademade_admin/model/adapter/data.rb +119 -0
  166. data/lib/rademade_admin/model/adapter/data/active_record.rb +109 -0
  167. data/lib/rademade_admin/model/adapter/data/mongoid.rb +77 -0
  168. data/{app/services/search/query_adapter/abstract.rb → lib/rademade_admin/model/adapter/query.rb} +15 -5
  169. data/lib/rademade_admin/model/adapter/query/active_record.rb +50 -0
  170. data/lib/rademade_admin/model/adapter/query/mongoid.rb +57 -0
  171. data/lib/rademade_admin/model/configuration.rb +43 -16
  172. data/lib/rademade_admin/model/configuration/field_label.rb +16 -0
  173. data/lib/rademade_admin/model/configuration/fields.rb +47 -21
  174. data/lib/rademade_admin/model/configuration/fields_labels.rb +31 -0
  175. data/lib/rademade_admin/model/configuration/form_field.rb +27 -0
  176. data/lib/rademade_admin/model/configuration/form_fields.rb +18 -0
  177. data/lib/rademade_admin/model/configuration/list_field.rb +21 -0
  178. data/lib/rademade_admin/model/configuration/list_fields.rb +18 -0
  179. data/lib/rademade_admin/model/graph.rb +9 -9
  180. data/lib/rademade_admin/model/info.rb +53 -68
  181. data/lib/rademade_admin/model/info/data_item.rb +130 -0
  182. data/lib/rademade_admin/model/info/data_items.rb +130 -0
  183. data/lib/rademade_admin/model/info/field.rb +39 -0
  184. data/lib/rademade_admin/model/info/fields.rb +87 -0
  185. data/lib/rademade_admin/model/info/relation.rb +49 -0
  186. data/lib/rademade_admin/model/info/relations.rb +40 -0
  187. data/lib/rademade_admin/model/info/uploader.rb +16 -0
  188. data/lib/rademade_admin/model/info/uploaders.rb +35 -0
  189. data/lib/rademade_admin/model/reflection.rb +38 -9
  190. data/lib/rademade_admin/routing/mapper.rb +9 -5
  191. data/lib/rademade_admin/search/searcher.rb +22 -0
  192. data/lib/rademade_admin/sortable.rb +1 -0
  193. data/lib/rademade_admin/uploader/photo.rb +1 -0
  194. data/lib/rademade_admin/user.rb +7 -6
  195. data/lib/rademade_admin/version.rb +1 -1
  196. data/lib/tasks/rademade_bower_install.rake +10 -2
  197. data/lib/templates/erb/scaffold/_form.html.erb +13 -0
  198. metadata +195 -109
  199. data/app/assets/javascripts/rademade_admin/app/common/relation-list.coffee +0 -109
  200. data/app/assets/javascripts/rademade_admin/app/form-popup/collection.coffee +0 -20
  201. data/app/assets/javascripts/rademade_admin/app/form-popup/model.coffee +0 -4
  202. data/app/assets/javascripts/rademade_admin/detail_admin/theme.js +0 -56
  203. data/app/assets/javascripts/rademade_admin/form/form-ajax-submit.coffee +0 -157
  204. data/app/assets/stylesheets/rademade_admin.scss.erb +0 -19
  205. data/app/helpers/rademade_admin/name_helper.rb +0 -18
  206. data/app/helpers/rademade_admin/upload_preview_helper.rb +0 -60
  207. data/app/inputs/rademade_admin/admin_file_input.rb +0 -71
  208. data/app/inputs/rademade_admin/admin_select_input.rb +0 -82
  209. data/app/inputs/rademade_admin/admin_textarea_input.rb +0 -6
  210. data/app/inputs/rademade_admin/boolean_input.rb +0 -14
  211. data/app/services/form_builder.rb +0 -4
  212. data/app/services/search/query_adapter/active_record.rb +0 -45
  213. data/app/services/search/query_adapter/mongoid.rb +0 -51
  214. data/app/services/search/searcher.rb +0 -20
  215. data/app/views/rademade_admin/_blocks/_form_control.html.erb +0 -5
  216. data/app/views/rademade_admin/abstract/related_index.html.erb +0 -85
  217. data/config/initializers/devise.rb +0 -251
  218. data/config/initializers/formtastic.rb +0 -13
  219. data/lib/rademade_admin/model/data_adapter.rb +0 -64
  220. data/lib/rademade_admin/model/data_adapter/active_record.rb +0 -59
  221. data/lib/rademade_admin/model/data_adapter/mongoid.rb +0 -54
  222. data/lib/rademade_admin/model/reflection/data.rb +0 -48
  223. data/lib/rademade_admin/model/reflection/uploader.rb +0 -18
@@ -3,18 +3,20 @@ module RademadeAdmin
3
3
  class ModelController < RademadeAdmin::AbstractController
4
4
 
5
5
  extend RademadeAdmin::ModelOptions
6
+
6
7
  include RademadeAdmin::InstanceOptions
7
8
  include RademadeAdmin::Templates
8
9
  include RademadeAdmin::Notifier
9
10
 
10
11
  before_filter :load_options
12
+ before_filter :sortable_service, :only => [:index]
11
13
 
12
14
  def create
13
15
  authorize! :create, model_class
14
- saver = Saver.new(model_info, params)
16
+ saver = RademadeAdmin::Saver.new(model_info, params)
15
17
  saver.create_model
16
18
  if saver.save_model
17
- saver.save_aggregated_data
19
+ saver.save_aggregated_data #rm_todo glue methods
18
20
  @item = saver.item
19
21
  success_insert @item
20
22
  else
@@ -24,9 +26,9 @@ module RademadeAdmin
24
26
 
25
27
  def update
26
28
  authorize! :update, model_class
27
- saver = Saver.new(model_info, params)
29
+ saver = RademadeAdmin::Saver.new(model_info, params)
28
30
  if saver.update_model
29
- saver.save_aggregated_data
31
+ saver.save_aggregated_data #rm_todo glue methods
30
32
  @item = saver.item
31
33
  success_update @item
32
34
  else
@@ -36,39 +38,36 @@ module RademadeAdmin
36
38
 
37
39
  def destroy
38
40
  authorize! :destroy, model_class
39
- @item = find_item(params[:id])
41
+ @item = model.find(params[:id])
40
42
  @item.delete if @item
41
43
  success_delete @item
42
44
  end
43
45
 
44
46
  def autocomplete
45
47
  authorize! :read, model_class
46
- init_search Search::Conditions::Autocomplete.new(params, origin_fields, model_info.filter_fields)
48
+ conditions = Search::Conditions::Autocomplete.new(params, model_info.data_items)
49
+ @items = Search::Searcher.new(model_info).search(conditions)
47
50
  render :json => Autocomplete::BaseSerializer.new(@items)
48
51
  end
49
52
 
50
53
  def link_autocomplete
51
54
  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])
55
+
56
+ relation_service = RademadeAdmin::RelationService.new
57
+ @related_model_info = relation_service.related_model_info(model_info, params[:relation])
58
+
59
+ conditions = Search::Conditions::Autocomplete.new(params, @related_model_info.data_items)
60
+ @items = Search::Searcher.new(@related_model_info).search(conditions)
61
+ render :json => Autocomplete::LinkSerializer.new(@items, model.find(params[:id]), params[:relation])
54
62
  end
55
63
 
56
64
  def index
57
65
  authorize! :read, model_class
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
66
+ list_breadcrumbs
67
+
68
+ conditions = Search::Conditions::List.new(params, model_info.data_items)
69
+ @items = Search::Searcher.new(model_info).search(conditions)
65
70
 
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])
72
71
  respond_to do |format|
73
72
  format.html { render_template }
74
73
  format.json { render :json => @items }
@@ -77,27 +76,59 @@ module RademadeAdmin
77
76
 
78
77
  def new
79
78
  authorize! :create, model_class
80
- @item = model_info.model.new
79
+ new_breadcrumbs
80
+
81
+ @item = model.new
81
82
  render_template
82
83
  end
83
84
 
84
85
  def edit
85
86
  authorize! :update, model_class
86
- @item = find_item(params[:id])
87
+ @item = model.find(params[:id])
88
+
89
+ edit_breadcrumbs
87
90
  render_template
88
91
  end
89
92
 
90
- def link_relation
91
- process_link :link
93
+ def related
94
+ authorize! :read, model_class
95
+
96
+ #rm_todo extract relation service
97
+ relation_service = RademadeAdmin::RelationService.new
98
+ @related_model_info = relation_service.related_model_info(model_info, params[:relation])
99
+
100
+ @item = model.find(params.delete(:id))
101
+ conditions = Search::Conditions::RelatedList.new(@item, params, @related_model_info.data_items)
102
+ @items = Search::Searcher.new(@related_model_info).search(conditions)
103
+
104
+ @sortable_service = RademadeAdmin::SortableService.new(@related_model_info, params)
105
+
106
+ respond_to do |format|
107
+ format.html {
108
+ related_breadcrumbs
109
+ render_template
110
+ }
111
+ format.json { render :json => Autocomplete::BaseSerializer.new(@items) }
112
+ end
92
113
  end
93
114
 
94
- def unlink_relation
95
- process_link :unlink
115
+ def related_add
116
+ @item = model.find(params[:id])
117
+ linker = Linker.new(model_info, @item, params[:relation])
118
+ linker.link(params[:related_id])
119
+ success_link
120
+ end
121
+
122
+ def related_destroy
123
+ @item = model.find(params[:id])
124
+ linker = Linker.new(model_info, @item, params[:relation])
125
+ linker.unlink(params[:related_id])
126
+ success_unlink
96
127
  end
97
128
 
98
129
  def show
99
130
  authorize! :read, model_class
100
- @item = find_item(params[:id])
131
+ @item = model.find(params[:id])
101
132
  respond_to do |format|
102
133
  format.html { redirect_to :action => 'index' }
103
134
  format.json { render :json => @item }
@@ -106,39 +137,27 @@ module RademadeAdmin
106
137
 
107
138
  def form
108
139
  authorize! :read, model_class
109
- @item = params[:id].blank? ? model_info.model.new : find_item(params[:id])
140
+ @item = params[:id].blank? ? model.new : model.find(params[:id])
110
141
  render form_template_path(true), :layout => false
111
142
  end
112
143
 
113
- def re_sort
114
- init_sortable_service
115
- @sortable_service.re_sort_items
144
+ def sort
145
+ sortable_service.sort_items
116
146
  success_action
117
147
  end
118
148
 
119
149
  protected
120
150
 
121
- def find_item(id)
122
- model_info.model.find(id)
151
+ def model
152
+ @model ||= model_info.model
123
153
  end
124
154
 
125
155
  def render_template(template = action_name)
126
156
  render abstract_template(template)
127
157
  end
128
158
 
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]))
159
+ def sortable_service
160
+ @sortable_service ||= RademadeAdmin::SortableService.new(model_info, params)
142
161
  end
143
162
 
144
163
  end
@@ -4,10 +4,10 @@ module RademadeAdmin
4
4
 
5
5
  skip_before_action :require_login
6
6
 
7
- def create
7
+ def login
8
8
  begin
9
9
  user = RademadeAdmin::Login.admin(params)
10
- sign_in user
10
+ session[:user_id] = user.id.to_s
11
11
  render :json => user, :status => :ok
12
12
  rescue RademadeAdmin::Login::Error => e
13
13
  render :json => {:errors => e.field_messages}, :status => :precondition_failed
@@ -15,7 +15,7 @@ module RademadeAdmin
15
15
  end
16
16
 
17
17
  def logout
18
- sign_out current_user
18
+ session.delete(:user_id)
19
19
  redirect_to :controller => 'dashboard', :action => 'login'
20
20
  end
21
21
 
@@ -1,29 +1,27 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module RademadeAdmin::FieldHelper
3
3
 
4
- def field_to_label(field)
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]
4
+ # Display the field of given item
5
+ #
6
+ # @param item [Object]
7
+ # @param data_item [RademadeAdmin::Model::Info::DataItem]
8
+ #
9
+ # @return [String]
10
+ #
11
+ def display_item_value(item, data_item)
12
+ value = item.send(data_item.preview_accessor)
13
+ if data_item.has_relation?
14
+ # rm_todo extract method
15
+ if data_item.relation.has_many?
16
+ link_to data_item.label, admin_related_item(item, data_item.getter)
20
17
  else
21
- method_name = field.keys.first
18
+ link_to value.to_s, admin_edit_uri(value) unless value.nil?
22
19
  end
20
+ elsif data_item.has_uploader?
21
+ RademadeAdmin::Upload::PreviewService.new(value).uploaded_file_html
23
22
  else
24
- method_name = field
23
+ value.to_s
25
24
  end
26
- item.send(method_name)
27
25
  end
28
26
 
29
27
  def pagination_option(number, name = 'paginate')
@@ -31,24 +29,15 @@ module RademadeAdmin::FieldHelper
31
29
  hash_params.delete(:page)
32
30
  hash_params[name.to_sym] = number
33
31
 
34
- options = '?' + hash_params.map do |k, v|
35
- "#{k.to_s}=#{v}"
36
- end.join('&')
37
-
32
+ options = '?' + hash_params.map { |k, v| "#{k.to_s}=#{v}" }.join('&')
38
33
  selected = number == request.query_parameters[name.to_sym].to_i
39
34
 
40
- content_tag(:option, number.to_s, selected: selected, value: request.path+options)
35
+ content_tag(:option, number.to_s, :selected => selected, :value => request.path + options)
41
36
  end
42
37
 
43
38
  def input_attr(attrs = {})
44
- attrs.merge :wrapper_html => {:class => 'form-group'},
45
- :input_html => {:class => 'form-control'}
46
- end
47
-
48
- private
49
-
50
- def configured_field?(field)
51
- field.is_a? Hash
39
+ attrs.deep_merge :wrapper_html => { :class => 'form-group' },
40
+ :input_html => { :class => 'form-input' }
52
41
  end
53
42
 
54
43
  end
@@ -2,8 +2,9 @@
2
2
  module RademadeAdmin::FormHelper
3
3
 
4
4
  def admin_form(record, model, &block)
5
- semantic_form_for(
5
+ simple_form_for(
6
6
  record,
7
+ :wrapper => :rademade,
7
8
  :url => record.new_record? ? admin_create_uri(model) : admin_update_uri(record),
8
9
  :as => :data,
9
10
  :html => {
@@ -16,42 +17,71 @@ module RademadeAdmin::FormHelper
16
17
  )
17
18
  end
18
19
 
19
- def admin_field(form, name, params, model_info, record)
20
- attrs = admin_default_params(name).merge(admin_field_params(params))
20
+ def admin_field(form, form_field, model_info)
21
+ name = form_field.name
22
+ attrs = admin_default_params(name, model_info)
23
+ .merge(field_params(form_field))
24
+ .merge(input_params(name))
25
+ concat form.input(name, input_attr(attrs))
26
+ end
21
27
 
22
- field = form.input(name, input_attr(attrs))
28
+ def admin_localized_field(form, form_field, model_info, locale)
29
+ name = "#{form_field.getter}][#{locale}"
30
+ attrs = admin_default_params(form_field.name, model_info)
31
+ .merge(field_params(form_field))
32
+ .merge(localized_field_params(form_field, locale))
33
+ concat form.input(name, input_attr(attrs))
34
+ end
23
35
 
24
- if model_info.model_reflection.many_relation? name
25
- link = admin_field_link_to_list(name, model_info, record).to_s
26
- else
27
- link = ''
28
- end
36
+ private
29
37
 
30
- concat field + link
38
+ def admin_default_params(name, model_info)
39
+ { :label => model_info.label_for(name) }
31
40
  end
32
41
 
33
- def admin_default_params(name)
34
- {:label => field_to_label(name)}
42
+ def field_params(form_field)
43
+ field_params = form_field.form_params
44
+ field_params[:as] = default_field_type(form_field) unless field_params[:as].present?
45
+ field_params
35
46
  end
36
47
 
37
- def admin_field_link_to_list(name, model_info, record)
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
48
+ def input_params(name)
49
+ {
50
+ :input_html => {
51
+ :id => "#{name}_#{@item.id}"
52
+ }
53
+ }
47
54
  end
48
55
 
49
- def admin_field_params(field_params)
50
- if field_params.is_a? Hash
51
- field_params
56
+ def localized_field_params(form_field, locale)
57
+ {
58
+ :input_html => {
59
+ :id => "#{form_field.getter}_#{locale}_#{@item.id}",
60
+ :value => localized_value(form_field.getter, locale)
61
+ }
62
+ }
63
+ end
64
+
65
+ def default_field_type(form_field)
66
+ if form_field.has_relation?
67
+ :'rademade_admin/related_select'
68
+ elsif form_field.has_uploader?
69
+ :'rademade_admin/file'
70
+ elsif form_field.date_time?
71
+ :'rademade_admin/date_time'
52
72
  else
53
- {:as => field_params}
73
+ nil
54
74
  end
55
75
  end
56
76
 
57
- end
77
+ private
78
+
79
+ def localized_value(getter, locale)
80
+ current_locale = I18n.locale
81
+ I18n.locale = locale
82
+ item_value = (@item.try(:translation) || @item).send(getter)
83
+ I18n.locale = current_locale
84
+ item_value
85
+ end
86
+
87
+ end
@@ -4,8 +4,7 @@ module RademadeAdmin::MenuHelper
4
4
  def main_menu
5
5
  @model_infos = RademadeAdmin::Model::Graph.instance.root_models
6
6
  menu = collect_children
7
- menu.unshift({ :uri => url_for(:root), :name => 'Home', :ico => 'fa fa-home', :sub => [] })
8
- menu
7
+ unshift_root_url(menu)
9
8
  end
10
9
 
11
10
  def active?(menu_item)
@@ -13,9 +12,7 @@ module RademadeAdmin::MenuHelper
13
12
  true
14
13
  else
15
14
  menu_item[:sub].each do |sub_item|
16
- if active?(sub_item)
17
- return true
18
- end
15
+ return true if active?(sub_item)
19
16
  end
20
17
  false
21
18
  end
@@ -23,6 +20,16 @@ module RademadeAdmin::MenuHelper
23
20
 
24
21
  private
25
22
 
23
+ def unshift_root_url(menu)
24
+ menu.unshift({
25
+ :uri => root_url,
26
+ :name => t('rademade_admin.home'),
27
+ :ico => 'glyphicon glyphicon-home',
28
+ :is_current => current_page?(root_url),
29
+ :sub => []
30
+ })
31
+ end
32
+
26
33
  def collect_children(parent = nil)
27
34
  menu = []
28
35
  @model_infos.each do |model_info|
@@ -1,24 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module RademadeAdmin::UriHelper
3
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
-
13
- def admin_unlink_uri(model, parent, parent_id)
14
- admin_model_url_for(model.class, {
15
- :action => :unlink_relation,
16
- :id => model.id,
17
- :parent => parent,
18
- :parent_id => parent_id
19
- })
20
- end
21
-
22
4
  def admin_list_uri(model)
23
5
  admin_model_url_for(model, {
24
6
  :action => :index
@@ -26,15 +8,9 @@ module RademadeAdmin::UriHelper
26
8
  end
27
9
 
28
10
  def admin_autocomplete_uri(model, opts = {})
29
- admin_model_url_for(model, {
11
+ admin_model_url_for(model, opts.merge({
30
12
  :action => :autocomplete
31
- }.merge(opts))
32
- end
33
-
34
- def admin_link_autocomplete_uri(model, opts = {})
35
- admin_model_url_for(model, {
36
- :action => :link_autocomplete
37
- }.merge(opts))
13
+ }))
38
14
  end
39
15
 
40
16
  def admin_new_uri(model)
@@ -49,50 +25,66 @@ module RademadeAdmin::UriHelper
49
25
  })
50
26
  end
51
27
 
28
+ def admin_create_uri(model)
29
+ admin_model_url_for(model, {
30
+ :action => :create
31
+ })
32
+ end
33
+
52
34
  def admin_edit_uri(model)
53
- entity_url(model, :edit)
35
+ _entity_url(model, :edit)
54
36
  end
55
37
 
56
38
  def admin_edit_form_uri(model)
57
- entity_url(model, :form)
39
+ _entity_url(model, :form)
58
40
  end
59
41
 
60
42
  def admin_delete_uri(model)
61
- entity_url(model, :destroy)
43
+ _entity_url(model, :destroy)
62
44
  end
63
45
 
64
- def admin_create_uri(model)
65
- admin_model_url_for(model, {
66
- :action => :create
67
- })
46
+ def admin_update_uri(model)
47
+ _entity_url(model, :update)
68
48
  end
69
49
 
70
- def admin_update_uri(model)
71
- entity_url(model, :update)
50
+ def admin_related_item(model, relation_getter, opts = {})
51
+ admin_related_uri(model, :related, relation_getter, opts)
72
52
  end
73
53
 
74
- def admin_model_url_for(model_info, options = {})
75
- unless model_info.is_a? RademadeAdmin::Model::Info
76
- model_info = RademadeAdmin::Model::Graph.instance.model_info(model_info)
77
- end
78
- options.merge!(get_id(model_info)) if nested?(model_info)
79
- url_options = options.merge({
80
- :controller => model_info.controller
81
- })
82
- admin_url_for(url_options)
54
+ def admin_link_autocomplete_uri(model, relation_getter, opts = {})
55
+ admin_related_uri(model, :link_autocomplete, relation_getter, opts)
56
+ end
57
+
58
+ def admin_link_uri(model, relation_getter, opts = {})
59
+ admin_related_uri(model, :related_add, relation_getter, opts)
60
+ end
61
+
62
+ def admin_unlink_uri(model, relation_getter, opts = {})
63
+ admin_related_uri(model, :related_destroy, relation_getter, opts)
64
+ end
65
+
66
+ def admin_related_uri(model, action, relation_getter, opts = {})
67
+ _entity_url(model, action, opts.merge({
68
+ :relation => relation_getter
69
+ }))
83
70
  end
84
71
 
85
- def admin_url_for(url_options)
86
- url_options = url_options.merge({
72
+ def admin_model_url_for(model, opts = {})
73
+ admin_url_for(opts.merge({
74
+ :controller => _real_model_info(model).controller
75
+ }))
76
+ end
77
+
78
+ def admin_url_for(opts)
79
+ opts = opts.merge({
80
+ :controller => "rademade_admin/#{opts[:controller]}",
87
81
  :only_path => true
88
82
  })
89
- #todo folder of admin controllers
90
- url_options[:controller] = 'rademade_admin/' + url_options[:controller]
91
83
  begin
92
- Rails.application.routes.url_helpers.url_for(url_options)
84
+ Rails.application.routes.url_helpers.url_for(opts)
93
85
  rescue
94
86
  begin
95
- RademadeAdmin::Engine.routes.url_helpers.url_for(url_options)
87
+ RademadeAdmin::Engine.routes.url_helpers.url_for(opts)
96
88
  rescue
97
89
  nil
98
90
  end
@@ -101,20 +93,16 @@ module RademadeAdmin::UriHelper
101
93
 
102
94
  private
103
95
 
104
- def nested?(model_info)
105
- @object and model_info
106
- end
107
-
108
- def get_id(model_info)
109
- key = model_info.model.to_s.foreign_key
110
- { key.to_sym => @object.id }
111
- end
112
-
113
- def entity_url(model, action)
114
- admin_model_url_for(model.class, {
96
+ def _entity_url(model, action, opts = {})
97
+ admin_model_url_for(model.class, opts.merge({
115
98
  :action => action,
116
99
  :id => model.id
117
- })
100
+ })) if model.persisted? # rm_todo: check for AR
101
+ end
102
+
103
+ def _real_model_info(model)
104
+ return model if model.is_a? RademadeAdmin::Model::Info
105
+ RademadeAdmin::Model::Graph.instance.model_info(model)
118
106
  end
119
107
 
120
108
  end