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,9 @@
1
+ module SimpleForm
2
+ module Components
3
+ module Rademade
4
+
5
+ end
6
+ end
7
+ end
8
+
9
+ SimpleForm::Inputs::Base.send(:include, SimpleForm::Components::Rademade)
@@ -0,0 +1,28 @@
1
+ SimpleForm.setup do |config|
2
+
3
+ config.wrappers :rademade, :tag => 'div', :class => 'form-box' do |form_box|
4
+ form_box.use :html5
5
+ form_box.wrapper :tag => 'label', :class => 'form-label' do |form_label|
6
+ form_label.wrapper :tag => 'span', :class => 'text' do |label|
7
+ label.use :label_text
8
+ end
9
+ form_label.wrapper :tag => 'span', :class => 'sign' do |hint|
10
+ hint.use :hint
11
+ end
12
+ end
13
+ form_box.wrapper :tag => 'div', :class => 'input-holder' do |input_holder|
14
+ input_holder.use :input, :class => 'form-input'
15
+ end
16
+ end
17
+
18
+ #config.wrappers :rademade_login, :tag => 'div', :class => 'form-box' do |form_box|
19
+ # form_box.use :html5
20
+ # form_box.use :input, :class => 'form-input'
21
+ # form_box.wrapper :tag => 'label', :class => 'form-label' do |form_label|
22
+ # form_label.wrapper :tag => 'i', :class => 'glyphicon glyphicon-user' do
23
+ #
24
+ # end
25
+ # end
26
+ #end
27
+
28
+ end
@@ -0,0 +1,28 @@
1
+ en:
2
+ rademade_admin:
3
+ login: "Log in"
4
+ dashboard: "Dashboard"
5
+ home: "Home"
6
+ or: "OR"
7
+ toggle_nav: "Toggle navigation"
8
+ show_results: "Show results on page"
9
+ reset_sort: "Reset sorting"
10
+ management: "Management"
11
+ edit: " "
12
+ destroy: "Destroy"
13
+ unlink: "Unlink"
14
+ new_record: "Add"
15
+ hello: "Hello"
16
+ file_not_chosen: "File not chosen"
17
+ add_new: "Add new"
18
+ save: "Save"
19
+ cancel: "Cancel"
20
+ exit: "Exit"
21
+ title_description: "Start working with the best admin panel! :)"
22
+ submit: "Submit"
23
+ search: "Search"
24
+ edit_record: "Edit"
25
+ upload_file: "Upload file"
26
+ enter_search: "Enter search phrase"
27
+ record_remove_confirm: "Do you really want delete this record?"
28
+ model_remove_confirm: "Do you really want delete this model?"
@@ -0,0 +1,26 @@
1
+ en:
2
+ simple_form:
3
+ "yes": 'Yes'
4
+ "no": 'No'
5
+ required:
6
+ text: 'required'
7
+ mark: '*'
8
+ # You can uncomment the line below if you need to overwrite the whole required html.
9
+ # When using html, text and mark won't be used.
10
+ # html: '<abbr title="required">*</abbr>'
11
+ error_notification:
12
+ default_message: "Please review the problems below:"
13
+ # Labels and hints examples
14
+ # labels:
15
+ # defaults:
16
+ # password: 'Password'
17
+ # user:
18
+ # new:
19
+ # email: 'E-mail to sign in.'
20
+ # edit:
21
+ # email: 'E-mail.'
22
+ # hints:
23
+ # defaults:
24
+ # username: 'User name to sign in.'
25
+ # password: 'No special characters, please.'
26
+
@@ -3,12 +3,11 @@ RademadeAdmin::Engine.routes.draw do
3
3
 
4
4
  mount Ckeditor::Engine => '/ckeditor'
5
5
 
6
- devise_for :users, class_name: RademadeAdmin.user_class, module: :devise
7
-
8
6
  root 'dashboard#index'
9
7
 
10
8
  match 'file-upload' => 'file#upload', :via => [:post, :patch]
11
9
 
10
+ post 'sessions' => 'sessions#login'
12
11
  get 'login' => 'dashboard#login', :as => 'login'
13
12
 
14
13
  resources :sessions do
@@ -1,24 +1,26 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  require 'kaminari'
3
3
  require 'carrierwave'
4
+ require 'breadcrumbs'
4
5
 
5
- require 'devise'
6
6
  require 'cancan'
7
-
8
7
  require 'bower-rails'
9
-
10
8
  require 'compass-rails'
11
9
 
12
10
  # js assets
13
11
  require 'turbolinks'
14
- require 'magnific-popup-rails'
15
12
 
16
- require 'formtastic'
13
+ require 'i18n-js'
14
+
15
+ require 'simple_form'
17
16
  require 'ckeditor'
18
17
 
19
18
  require 'rademade_admin/sortable'
20
19
  require 'rademade_admin/engine'
21
20
 
21
+ require 'mongoid_sortable_relation'
22
+ require 'activerecord_sortable'
23
+
22
24
  module RademadeAdmin
23
25
 
24
26
  def self.user_class
@@ -5,7 +5,7 @@ module RademadeAdmin
5
5
  module Bower
6
6
  class Performer < BowerRails::Performer
7
7
 
8
- def bower_root_path
8
+ def root_path
9
9
  @root_path ||= RademadeAdmin::Engine.root.to_s
10
10
  end
11
11
 
@@ -0,0 +1,31 @@
1
+ class Breadcrumbs::Render::Rademade < Breadcrumbs::Render::Base
2
+
3
+ def render
4
+ html = []
5
+ items = breadcrumbs.items
6
+ size = items.size
7
+
8
+ items.each_with_index do |item, i|
9
+ html << render_item(item, i, size)
10
+ end
11
+
12
+ separator = tag(:span, '', :class => 'breadcrumbs-sep')
13
+
14
+ tag(:div, html.join(" #{separator} "), :class => 'breadcrumbs')
15
+ end
16
+
17
+ def render_item(item, i, size)
18
+ text, url, options = *item
19
+ options[:class] ||= 'breadcrumbs-link'
20
+
21
+ if i == size - 1
22
+ options[:class] += ' current'
23
+ options[:tag] = 'span'
24
+ end
25
+
26
+ options[:class].gsub!(/^ *(.*?)$/, '\\1')
27
+
28
+ wrap_item(url, CGI.escapeHTML(text), options)
29
+ end
30
+
31
+ end
@@ -1,6 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  require 'rademade_admin/routing/mapper'
3
- require 'formtastic'
3
+ require 'simple_form'
4
4
 
5
5
  module RademadeAdmin
6
6
  class Engine < ::Rails::Engine
@@ -18,7 +18,7 @@ module RademadeAdmin
18
18
  )
19
19
 
20
20
  paths.each do |path|
21
- Dir[path].each {|f| require f }
21
+ Dir[path].each { |f| require f }
22
22
  end
23
23
 
24
24
  end
@@ -0,0 +1,40 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module RademadeAdmin
3
+ module Input
4
+ class RelatedSelectInput
5
+ module ModelData
6
+
7
+ private
8
+
9
+ def model
10
+ @model ||= @builder.object
11
+ end
12
+
13
+ def related_data_item
14
+ unless @related_data_item
15
+ model_info = Model::Graph.instance.model_info(model.class)
16
+ @related_data_item = model_info.data_items.data_item(attribute_name)
17
+ end
18
+ @related_data_item
19
+ end
20
+
21
+ def related_to
22
+ related_data_item.relation.to || related_value.class
23
+ end
24
+
25
+ def relation_getter
26
+ related_data_item.getter
27
+ end
28
+
29
+ def multiple?
30
+ related_data_item.relation.has_many?
31
+ end
32
+
33
+ def related_value
34
+ @related_value ||= model.send(relation_getter)
35
+ end
36
+
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,60 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module RademadeAdmin
3
+ module Input
4
+ class RelatedSelectInput
5
+ module RelatedList
6
+
7
+ private
8
+
9
+ def related_list_html
10
+ template.content_tag(:ul, related_list_items_html, {
11
+ :class => 'select2-items-list',
12
+ :data => {
13
+ :sortable => related_data_item.relation.sortable?
14
+ }
15
+ })
16
+ end
17
+
18
+ def related_list_items_html
19
+ serialized_values = Autocomplete::BaseSerializer.new(related_value).as_json
20
+ html = serialized_values.map do |serialized_value|
21
+ template.content_tag(:li, related_list_item_html(serialized_value), :'data-id' => serialized_value[:id])
22
+ end
23
+ RademadeAdmin::HtmlBuffer.new(html)
24
+ end
25
+
26
+ def related_list_item_html(serialized_value)
27
+ RademadeAdmin::HtmlBuffer.new([
28
+ related_list_item_title_html(serialized_value),
29
+ related_list_item_edit_html(serialized_value),
30
+ related_list_item_remove_html
31
+ ])
32
+ end
33
+
34
+ def related_list_item_title_html(serialized_value)
35
+ template.content_tag(:span, serialized_value[:text])
36
+ end
37
+
38
+ def related_list_item_edit_html(serialized_value)
39
+ template.content_tag(:button, I18n.t('rademade_admin.edit'), :'data-edit' => serialized_value[:edit_url])
40
+ end
41
+
42
+ def related_list_item_remove_html
43
+ template.content_tag(:button, I18n.t('rademade_admin.destroy'), :'data-remove' => '')
44
+ end
45
+
46
+ def related_list_link_html
47
+ if multiple?
48
+ relation_name = RademadeAdmin::Model::Graph.instance.model_info(related_to).item_name
49
+ url = admin_related_item(model, relation_getter)
50
+ template.content_tag(:a, relation_name, {
51
+ :href => url,
52
+ :class => 'related-link'
53
+ }) + related_list_html if url
54
+ end
55
+ end
56
+
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,119 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module RademadeAdmin
3
+ module Model
4
+ module Adapter
5
+ class Data
6
+
7
+ #
8
+ # Initialization method
9
+ #
10
+ def initialize(model)
11
+ @model = model
12
+ end
13
+
14
+ #
15
+ # Return array of RademadeAdmin::Model::Info::Relation
16
+ #
17
+ # @return [Array]
18
+ #
19
+ def relations
20
+ @relations ||= _map_relations
21
+ end
22
+
23
+ #
24
+ # @return [Bool]
25
+ #
26
+ def has_relation?(name)
27
+ not relation(name).nil?
28
+ end
29
+
30
+ #
31
+ #
32
+ # @return [RademadeAdmin::Model::Info::Relation]
33
+ #
34
+ def relation(name)
35
+ relations[name.to_sym]
36
+ end
37
+
38
+ #
39
+ # Returns array of relations keys
40
+ #
41
+ # @return [Array]
42
+ #
43
+ def association_fields
44
+ relations.keys.map &:to_sym
45
+ end
46
+
47
+ #
48
+ # Returns array of fields with class [RademadeAdmin::Model::Info::Field]
49
+ #
50
+ # @return [Array]
51
+ #
52
+ def fields
53
+ @fields ||= _map_fields
54
+ end
55
+
56
+ #
57
+ # @return [RademadeAdmin::Model::Info::Field]
58
+ #
59
+ def field(name)
60
+ fields[name.to_sym]
61
+ end
62
+
63
+ #
64
+ # @return [Array]
65
+ #
66
+ def has_many
67
+ @has_many_relations ||= relations.filter { |rel| has_many_relations.include?(rel.type) }
68
+ end
69
+
70
+ #
71
+ # @return [Array]
72
+ #
73
+ def has_one
74
+ @has_one_relations ||= relations.filter { |rel| has_one_relations.include?(rel.type) }
75
+ end
76
+
77
+ def uploaders
78
+ @uploaders ||= _map_uploaders
79
+ end
80
+
81
+ def uploader(name)
82
+ uploaders[name.to_sym]
83
+ end
84
+
85
+ protected
86
+
87
+ def has_many_relations
88
+ []
89
+ end
90
+
91
+ def has_one_relations
92
+ []
93
+ end
94
+
95
+ def _map_relations
96
+ raise NotImplementedError, 'Not defined _map_relations for class'
97
+ end
98
+
99
+ def _map_fields
100
+ raise NotImplementedError, 'Not defined _map_fields for class'
101
+ end
102
+
103
+ def _map_uploaders
104
+ uploaders = {}
105
+ return uploaders unless @model.respond_to?(:uploaders)
106
+ _model_uploaders.each do |name, uploader|
107
+ uploaders[name] = RademadeAdmin::Model::Info::Uploader.new(name, uploader)
108
+ end
109
+ uploaders
110
+ end
111
+
112
+ def _model_uploaders
113
+ @model.uploaders
114
+ end
115
+
116
+ end
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,109 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module RademadeAdmin
3
+ module Model
4
+ module Adapter
5
+ class Data
6
+
7
+ # Data adapter for active_record
8
+ #
9
+ class ActiveRecord < RademadeAdmin::Model::Adapter::Data
10
+
11
+ protected
12
+
13
+ def has_many_relations
14
+ [:has_many, :has_and_belongs_to_many]
15
+ end
16
+
17
+ def has_one_relations
18
+ [:has_one, :belongs_to]
19
+ end
20
+
21
+ def _map_fields
22
+ fields = {}
23
+ _add_non_localizable_fields fields
24
+ _add_localizable_fields fields
25
+ end
26
+
27
+ def _map_relations
28
+ relations = {}
29
+ @model.reflections.each do |name, relation_info|
30
+ name = name.to_sym
31
+ getter = name.to_s
32
+ type = relation_info.macro
33
+ if name != :translations
34
+ is_sortable = relation_info.sortable?
35
+ relations[name] = ::RademadeAdmin::Model::Info::Relation.new({
36
+ :name => name,
37
+ :from => @model,
38
+ :to => relation_info.polymorphic? ? nil : RademadeAdmin::LoaderService.const_get(relation_info.class_name),
39
+ :getter => getter,
40
+ :setter => "#{getter}=",
41
+ :type => type,
42
+ :many => type == :has_many,
43
+ :has_many => has_many_relations.include?(type),
44
+ :sortable => is_sortable,
45
+ :sortable_field => is_sortable ? relation_info.sortable_field : nil,
46
+ :foreign_key => relation_info.foreign_key.to_sym
47
+ })
48
+ end
49
+ end
50
+ relations
51
+ end
52
+
53
+ def _add_non_localizable_fields(fields)
54
+ @model.column_types.each do |name, field_data|
55
+ name = name.to_sym
56
+ column_data = extract_column_data(field_data)
57
+ getter = name.to_s
58
+ fields[name] = RademadeAdmin::Model::Info::Field.new({
59
+ :name => name,
60
+ :primary => column_data.primary,
61
+ :getter => getter,
62
+ :setter => "#{getter}=",
63
+ :type => column_data.type,
64
+ :is_date_time => column_data.type == :datetime,
65
+ :localizable => false,
66
+ :relation_name => name[/(.+)_id$/, 1]
67
+ })
68
+ end
69
+ fields
70
+ end
71
+
72
+ def _add_localizable_fields(fields)
73
+ @model.try(:translated_attribute_names).each do |name|
74
+ name = name.to_sym
75
+ getter = name.to_s
76
+ fields[name] = RademadeAdmin::Model::Info::Field.new({
77
+ :name => name,
78
+ :primary => false,
79
+ :getter => getter,
80
+ :setter => "#{getter}=",
81
+ :type => :string,
82
+ :localizable => true,
83
+ :relation_name => nil
84
+ })
85
+ end if @model.respond_to?(:translation_class)
86
+ fields
87
+ end
88
+
89
+ def _model_uploaders
90
+ return super unless @model.respond_to?(:translation_class)
91
+ super.merge(@model.translation_class.uploaders)
92
+ end
93
+
94
+ private
95
+
96
+ def extract_column_data(field_data)
97
+ if field_data.is_a? ::ActiveRecord::AttributeMethods::TimeZoneConversion::Type # why another behaviour?
98
+ field_data.instance_values['column']
99
+ else
100
+ field_data
101
+ end
102
+ end
103
+
104
+ end
105
+
106
+ end
107
+ end
108
+ end
109
+ end