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
@@ -0,0 +1,39 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module RademadeAdmin
3
+ module Model
4
+ class Info
5
+ class Field
6
+
7
+ UNSAVED_FIELDS = [:id, :_id, :created_at, :deleted_at, :position]
8
+
9
+ attr_reader :name, :setter, :getter, :type, :is_date_time, :localizable, :relation_name
10
+
11
+ def key=(status)
12
+ @is_key = status
13
+ end
14
+
15
+ def primary?
16
+ @primary
17
+ end
18
+
19
+ def save?
20
+ not UNSAVED_FIELDS.include? name
21
+ end
22
+
23
+ protected
24
+
25
+ def initialize(opts = {})
26
+ @name = opts[:name]
27
+ @primary = opts[:primary]
28
+ @setter = opts[:setter]
29
+ @getter = opts[:getter]
30
+ @type = opts[:type]
31
+ @is_date_time = opts[:is_date_time]
32
+ @localizable = opts[:localizable]
33
+ @relation_name = opts[:relation_name]
34
+ end
35
+
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,87 @@
1
+ # -*- encoding : utf-8 -*-
2
+
3
+ #rm_todo name like data_items initializer. Remove from accessors at model_info
4
+
5
+ module RademadeAdmin
6
+ module Model
7
+ class Info
8
+ class Fields
9
+
10
+ attr_reader :data_adapter, :model_configuration
11
+
12
+ # Initialize
13
+ #
14
+ # @param data_adapter [RademadeAdmin::Model::Adapter::Data]
15
+ # @param model_configuration [RademadeAdmin::Model::Configuration]
16
+ # @param relations [RademadeAdmin::Model::Info::Relations]
17
+ # @param uploaders [RademadeAdmin::Model::Info::Uploaders]
18
+ #
19
+ def initialize(data_adapter, model_configuration, relations, uploaders)
20
+ @data_adapter = data_adapter
21
+ @model_configuration = model_configuration
22
+ @relations = relations
23
+ @uploaders = uploaders
24
+ end
25
+
26
+ def data_items
27
+ @data_items ||= init_data_items
28
+ end
29
+
30
+ private
31
+
32
+ def init_data_items
33
+ data_items = RademadeAdmin::Model::Info::DataItems.new
34
+ used_relations = []
35
+
36
+ @data_adapter.fields.each do |_, field|
37
+ relation = field.relation_name.nil? ? nil : @data_adapter.relation(field.relation_name)
38
+ used_relations << field.relation_name if relation
39
+ data_items.add_data_item(init_data_item(field, relation))
40
+ end
41
+
42
+ @data_adapter.relations.each do |_, relation|
43
+ unless used_relations.include? relation.name
44
+ data_items.add_data_item(init_data_item(nil, relation))
45
+ end
46
+ end
47
+
48
+ @model_configuration.all_field_names.each do |field_name|
49
+ unless data_items.has_field?(field_name)
50
+ data_item = RademadeAdmin::Model::Info::DataItem.new(field_name)
51
+ add_configuration_data(data_item, field_name)
52
+ data_items.add_data_item(data_item)
53
+ end
54
+ end
55
+
56
+ data_items
57
+ end
58
+
59
+ def init_data_item(field, relation)
60
+ name = relation.nil? ? field.name : relation.name
61
+ data_item = RademadeAdmin::Model::Info::DataItem.new(name, field, relation, @uploaders.has_uploader?(name))
62
+ add_configuration_data(data_item, name)
63
+ data_item
64
+ end
65
+
66
+ def add_configuration_data(data_item, name)
67
+ @model_configuration.field_labels.find(name) do |label_data|
68
+ data_item.label = label_data.label
69
+ end
70
+
71
+ @model_configuration.form_fields.find_with_index(name) do |form_field_data, index|
72
+ data_item.form_params = form_field_data.params
73
+ data_item.in_form = true
74
+ data_item.form_position = index
75
+ end
76
+
77
+ @model_configuration.list_fields.find_with_index(name) do |list_field_data, index|
78
+ data_item.in_list = true
79
+ data_item.preview_accessor = list_field_data.preview_accessor
80
+ data_item.list_position = index
81
+ end
82
+ end
83
+
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,49 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module RademadeAdmin
3
+ module Model
4
+ class Info
5
+ class Relation
6
+
7
+ attr_reader :name, :from, :to, :getter, :setter, :type, :foreign_key, :sortable_field
8
+
9
+ def has_many?
10
+ @has_many
11
+ end
12
+
13
+ def many?
14
+ @many
15
+ end
16
+
17
+ def sortable?
18
+ @sortable
19
+ end
20
+
21
+ def related_entities(ids)
22
+ RademadeAdmin::Model::Graph.instance.model_info(to).query_adapter.find(ids)
23
+ end
24
+
25
+ protected
26
+
27
+ # Initialization for Relation info
28
+ #
29
+ # Required options in Hash :name, :from, :to, :setter, :has_many
30
+ # @param opt [Hash]
31
+ #
32
+ def initialize(opt = {})
33
+ @name = opt[:name]
34
+ @from = opt[:from]
35
+ @to = opt[:to]
36
+ @getter = opt[:getter]
37
+ @setter = opt[:setter]
38
+ @type = opt[:type]
39
+ @has_many = opt[:has_many]
40
+ @many = opt[:many]
41
+ @foreign_key = opt[:foreign_key]
42
+ @sortable = opt[:sortable]
43
+ @sortable_field = opt[:sortable_field]
44
+ end
45
+
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,40 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module RademadeAdmin
3
+ module Model
4
+ class Info
5
+ class Relations
6
+
7
+ #@param data_adapter [RademadeAdmin::Model::Adapter::Data]
8
+ #
9
+ def initialize(data_adapter)
10
+ @data_adapter = data_adapter
11
+ end
12
+
13
+ # Return array of RademadeAdmin::Model::Info::Relation
14
+ #
15
+ # @return [Array]
16
+ #
17
+ def all
18
+ @data_adapter.relations
19
+ end
20
+
21
+ # Return status of relation availability
22
+ #
23
+ # @param name [String]
24
+ # @return [Bool]
25
+ #
26
+ def exist?(name)
27
+ @data_adapter.has_relation? name
28
+ end
29
+
30
+ # @param name [String]
31
+ # @return [RademadeAdmin::Model::Info::Relation]
32
+ #
33
+ def relation(name)
34
+ @data_adapter.relation name
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,16 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module RademadeAdmin
3
+ module Model
4
+ class Info
5
+ class Uploader
6
+
7
+ attr_reader :name, :uploader
8
+
9
+ def initialize(name, uploader)
10
+ @name, @uploader = name, uploader
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,35 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module RademadeAdmin
3
+ module Model
4
+ class Info
5
+ class Uploaders
6
+
7
+ def initialize(data_adapter)
8
+ @data_adapter = data_adapter
9
+ end
10
+
11
+ def all
12
+ @data_adapter.uploaders
13
+ end
14
+
15
+ def uploader(name)
16
+ @data_adapter.uploader(name)
17
+ end
18
+
19
+ def has_uploader?(name)
20
+ !!(@data_adapter.uploader(name) || has_localized_uploader?(name))
21
+ end
22
+
23
+ private
24
+
25
+ def has_localized_uploader?(name) # todo mb make "send" and check return type
26
+ I18n.available_locales.each do |locale|
27
+ return true unless @data_adapter.uploader("#{name}_#{locale}").nil?
28
+ end
29
+ false
30
+ end
31
+
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,21 +1,50 @@
1
1
  # -*- encoding : utf-8 -*-
2
- require 'rademade_admin/model/reflection/uploader'
3
- require 'rademade_admin/model/reflection/data'
4
-
5
2
  module RademadeAdmin
6
3
  module Model
7
4
  class Reflection
8
- include Uploader
9
- include Data
10
5
 
11
6
  attr_reader :model, :controller
12
7
 
13
- def initialize(model, controller, controller_name, inner)
14
- @model, @controller, @controller_name, @inner = model, controller, controller_name, inner
8
+ def initialize(model, controller)
9
+ @model, @controller = model, controller
10
+ end
11
+
12
+ ORM_TYPE_ACTIVERECORD = 'ActiveRecord'
13
+ ORM_TYPE_MONGOID = 'Mongoid'
14
+
15
+ # Load data adapter for current model
16
+ #
17
+ # @return [RademadeAdmin::Model::Adapter::Data]
18
+ def data_adapter
19
+ @data_adapter ||= "RademadeAdmin::Model::Adapter::Data::#{orm_type}".constantize.new(@model)
20
+ end
21
+
22
+ # Load query adapter for current model
23
+ #
24
+ # @return [RademadeAdmin::Model::Adapter::Query]
25
+ def query_adapter
26
+ @query_adapter ||= "RademadeAdmin::Model::Adapter::Query::#{orm_type}".constantize.new(@model)
27
+ end
28
+
29
+ protected
30
+
31
+ def _model_ancestors
32
+ @model_ancestors = @model.ancestors.map(&:to_s)
33
+ end
34
+
35
+ def orm_type
36
+ return @orm_type unless @orm_type.nil?
37
+ orm_list.each do |orm_class, orm_type|
38
+ @orm_type = orm_type if _model_ancestors.include? orm_class
39
+ end
40
+ @orm_type
15
41
  end
16
42
 
17
- def nested?
18
- @inner
43
+ def orm_list
44
+ @orm_list ||= {
45
+ 'ActiveRecord::Base' => ORM_TYPE_ACTIVERECORD,
46
+ 'Mongoid::Document' => ORM_TYPE_MONGOID
47
+ }
19
48
  end
20
49
 
21
50
  end
@@ -16,9 +16,7 @@ module RademadeAdmin
16
16
 
17
17
  collection do
18
18
  get :autocomplete
19
- get :link_autocomplete
20
- get :related_index if parent_resource_actions.include? :index
21
- patch :re_sort
19
+ patch :sort
22
20
  end
23
21
 
24
22
  new do
@@ -27,8 +25,14 @@ module RademadeAdmin
27
25
 
28
26
  member do
29
27
  get :form if parent_resource_actions.include? :edit
30
- post :unlink_relation if parent_resource_actions.include? :update
31
- put :link_relation if parent_resource_actions.include? :update
28
+
29
+ scope 'related/:relation' do
30
+ get '/' => :related, :as => :related
31
+ get :autocomplete, :link_autocomplete
32
+ post ':related_id' => :related_add, :as => :related_add
33
+ delete ':related_id' => :related_destroy, :as => :related_destroy
34
+ end
35
+
32
36
  end
33
37
 
34
38
  Model::Graph.instance.add_pair(@scope[:controller], self.shallow?)
@@ -0,0 +1,22 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module RademadeAdmin
3
+ module Search
4
+ class Searcher
5
+
6
+ #
7
+ # @param model_info [RademadeAdmin::Model::Info]
8
+ #
9
+ def initialize(model_info)
10
+ @model_info = model_info
11
+ end
12
+
13
+ #
14
+ # @param search_conditions [RademadeAdmin::Search::Conditions::Abstract]
15
+ #
16
+ def search(search_conditions)
17
+ @model_info.query_adapter.exec_query(search_conditions)
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -7,6 +7,7 @@ module RademadeAdmin
7
7
  if name == 'position'
8
8
  raise NotImplementedError.new 'Implement "position" method'
9
9
  end
10
+ super
10
11
  end
11
12
 
12
13
  end
@@ -7,6 +7,7 @@ module RademadeAdmin
7
7
  if name == 'resize'
8
8
  raise NotImplemented.new 'Implement "resize" error'
9
9
  end
10
+ super
10
11
  end
11
12
 
12
13
  end
@@ -3,14 +3,15 @@
3
3
  module RademadeAdmin
4
4
  module UserModule
5
5
 
6
- def self.included(base)
7
- base.class_eval do
8
- devise :database_authenticatable
9
- end
6
+ def self.get_by_email(email)
7
+ raise NotImplementedError.new "Implement 'get_by_email' method"
10
8
  end
11
9
 
12
- def password
13
- raise NotImplementedError.new 'Implement "password" method'
10
+ def method_missing(name, *arguments)
11
+ if %w(id email password valid_password? admin?).include? name
12
+ raise NotImplementedError.new "Implement '#{name}' method"
13
+ end
14
+ super
14
15
  end
15
16
 
16
17
  end
@@ -1,4 +1,4 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module RademadeAdmin
3
- VERSION = "0.0.3"
3
+ VERSION = "0.1.0"
4
4
  end
@@ -1,9 +1,17 @@
1
1
  require 'rademade_admin/bower/performer'
2
2
 
3
- desc "Install bower vendor assets"
4
- task 'rademade_admin:bower:install', :options do |_, args|
3
+ desc 'Install bower vendor assets'
4
+ task 'rademade_admin:bower:install' => :environment do |_, args|
5
5
  args.with_defaults(:options => '')
6
6
  RademadeAdmin::Bower::Performer.perform do |bower|
7
7
  sh "#{bower} install #{args[:options]}"
8
8
  end
9
+ end
10
+
11
+ desc 'Update bower vendor assets'
12
+ task 'rademade_admin:bower:update' => :environment do |_, args|
13
+ args.with_defaults(:options => '')
14
+ RademadeAdmin::Bower::Performer.perform do |bower|
15
+ sh "#{bower} update #{args[:options]}"
16
+ end
9
17
  end