rademade_admin 0.0.3 → 0.1.0

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 (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