obitum-rails_admin 0.0.1 → 0.0.2

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 (232) hide show
  1. data/Gemfile +1 -8
  2. data/README.md +6 -2
  3. data/app/assets/javascripts/rails_admin/custom/ui.js +5 -5
  4. data/app/assets/javascripts/rails_admin/jquery-ui-1.8.16.custom.js +4727 -4727
  5. data/app/assets/javascripts/rails_admin/jquery.colorpicker.js +484 -484
  6. data/app/assets/javascripts/rails_admin/jquery.pjax.js +250 -85
  7. data/app/assets/javascripts/rails_admin/jquery.ui.timepicker.js +1371 -1219
  8. data/app/assets/javascripts/rails_admin/ra.filter-box.js +30 -30
  9. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +11 -11
  10. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +40 -0
  11. data/app/assets/javascripts/rails_admin/ra.remote-form.js +41 -39
  12. data/app/assets/javascripts/rails_admin/rails_admin.js.erb +4 -3
  13. data/app/assets/javascripts/rails_admin/themes/default/ui.js +6 -6
  14. data/app/assets/javascripts/rails_admin/ui.js.coffee +44 -16
  15. data/app/assets/stylesheets/rails_admin/base/README +2 -2
  16. data/app/assets/stylesheets/rails_admin/base/theming.css.scss +226 -113
  17. data/app/assets/stylesheets/rails_admin/custom/mixins.css.scss +1 -1
  18. data/app/assets/stylesheets/rails_admin/custom/theming.css.scss +2 -2
  19. data/app/assets/stylesheets/rails_admin/custom/variables.css.scss +3 -3
  20. data/app/assets/stylesheets/rails_admin/imports.css.scss.erb +36 -1
  21. data/app/assets/stylesheets/rails_admin/jquery.ui.timepicker.css.scss +16 -0
  22. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.css.scss +2 -2
  23. data/app/assets/stylesheets/rails_admin/themes/default/mixins.css.scss +1 -1
  24. data/app/assets/stylesheets/rails_admin/themes/default/theming.css.scss +2 -2
  25. data/app/assets/stylesheets/rails_admin/themes/default/variables.css.scss +3 -3
  26. data/app/controllers/rails_admin/application_controller.rb +13 -18
  27. data/app/controllers/rails_admin/main_controller.rb +15 -16
  28. data/app/helpers/rails_admin/application_helper.rb +67 -41
  29. data/app/helpers/rails_admin/form_builder.rb +31 -29
  30. data/app/helpers/rails_admin/main_helper.rb +4 -4
  31. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +12 -11
  32. data/app/views/layouts/rails_admin/application.html.haml +29 -29
  33. data/app/views/rails_admin/main/_dashboard_history.html.haml +1 -1
  34. data/app/views/rails_admin/main/_delete_notice.html.haml +4 -5
  35. data/app/views/rails_admin/main/_form_colorpicker.html.haml +2 -1
  36. data/app/views/rails_admin/main/_form_datetime.html.haml +1 -1
  37. data/app/views/rails_admin/main/_form_enumeration.html.haml +1 -1
  38. data/app/views/rails_admin/main/_form_field.html.haml +1 -1
  39. data/app/views/rails_admin/main/_form_file_upload.html.haml +3 -2
  40. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +6 -4
  41. data/app/views/rails_admin/main/_form_filtering_select.html.haml +6 -5
  42. data/app/views/rails_admin/main/_form_nested_many.html.haml +41 -6
  43. data/app/views/rails_admin/main/_form_nested_one.html.haml +34 -5
  44. data/app/views/rails_admin/main/_form_text.html.haml +3 -3
  45. data/app/views/rails_admin/main/_submit_buttons.html.haml +6 -4
  46. data/app/views/rails_admin/main/bulk_delete.html.haml +7 -3
  47. data/app/views/rails_admin/main/dashboard.html.haml +4 -4
  48. data/app/views/rails_admin/main/delete.html.haml +7 -3
  49. data/app/views/rails_admin/main/edit.html.haml +1 -1
  50. data/app/views/rails_admin/main/export.html.haml +57 -53
  51. data/app/views/rails_admin/main/history.html.haml +8 -8
  52. data/app/views/rails_admin/main/index.html.haml +22 -21
  53. data/app/views/rails_admin/main/new.html.haml +1 -1
  54. data/app/views/rails_admin/main/show.html.haml +2 -2
  55. data/config/initializers/active_record_extensions.rb +2 -2
  56. data/config/initializers/haml.rb +0 -1
  57. data/config/locales/rails_admin.en.yml +5 -5
  58. data/lib/generators/rails_admin/templates/initializer.erb +7 -7
  59. data/lib/rails_admin/abstract_model.rb +36 -53
  60. data/lib/rails_admin/adapters/active_record/abstract_object.rb +32 -0
  61. data/lib/rails_admin/adapters/active_record.rb +56 -137
  62. data/lib/rails_admin/config/actions/base.rb +40 -28
  63. data/lib/rails_admin/config/actions/bulk_delete.rb +10 -11
  64. data/lib/rails_admin/config/actions/dashboard.rb +9 -5
  65. data/lib/rails_admin/config/actions/delete.rb +12 -9
  66. data/lib/rails_admin/config/actions/edit.rb +13 -9
  67. data/lib/rails_admin/config/actions/export.rb +9 -6
  68. data/lib/rails_admin/config/actions/history_index.rb +9 -5
  69. data/lib/rails_admin/config/actions/history_show.rb +9 -5
  70. data/lib/rails_admin/config/actions/index.rb +23 -13
  71. data/lib/rails_admin/config/actions/new.rb +14 -10
  72. data/lib/rails_admin/config/actions/show.rb +10 -5
  73. data/lib/rails_admin/config/actions/show_in_app.rb +9 -4
  74. data/lib/rails_admin/config/actions.rb +16 -16
  75. data/lib/rails_admin/config/configurable.rb +92 -0
  76. data/lib/rails_admin/config/fields/association.rb +6 -23
  77. data/lib/rails_admin/config/fields/base.rb +58 -40
  78. data/lib/rails_admin/config/fields/factories/belongs_to_association.rb +26 -0
  79. data/lib/rails_admin/config/fields/factories/carrierwave.rb +21 -2
  80. data/lib/rails_admin/config/fields/factories/devise.rb +9 -12
  81. data/lib/rails_admin/config/fields/factories/dragonfly.rb +13 -7
  82. data/lib/rails_admin/config/fields/factories/paperclip.rb +14 -15
  83. data/lib/rails_admin/config/fields/group.rb +16 -3
  84. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +2 -2
  85. data/lib/rails_admin/config/fields/types/carrierwave.rb +0 -9
  86. data/lib/rails_admin/config/fields/types/color.rb +3 -3
  87. data/lib/rails_admin/config/fields/types/dragonfly.rb +1 -19
  88. data/lib/rails_admin/config/fields/types/file_upload.rb +7 -11
  89. data/lib/rails_admin/config/fields/types/has_many_association.rb +1 -6
  90. data/lib/rails_admin/config/fields/types/has_one_association.rb +4 -4
  91. data/lib/rails_admin/config/fields/types/paperclip.rb +0 -18
  92. data/lib/rails_admin/config/fields/types/password.rb +2 -2
  93. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +2 -2
  94. data/lib/rails_admin/config/fields/types/text.rb +2 -2
  95. data/lib/rails_admin/config/fields.rb +7 -17
  96. data/lib/rails_admin/config/has_fields.rb +9 -9
  97. data/lib/rails_admin/config/has_groups.rb +2 -2
  98. data/lib/rails_admin/config/hideable.rb +2 -2
  99. data/lib/rails_admin/config/model.rb +23 -17
  100. data/lib/rails_admin/config/proxyable/proxy.rb +43 -0
  101. data/lib/rails_admin/config/proxyable.rb +12 -0
  102. data/lib/rails_admin/config/sections/base.rb +14 -4
  103. data/lib/rails_admin/config.rb +38 -9
  104. data/lib/rails_admin/extension.rb +1 -1
  105. data/lib/rails_admin/extensions/history/auditing_adapter.rb +6 -6
  106. data/lib/rails_admin/extensions/history/history.rb +2 -1
  107. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +13 -13
  108. data/lib/rails_admin/support/csv_converter.rb +6 -6
  109. data/lib/rails_admin/version.rb +1 -1
  110. data/lib/rails_admin.rb +0 -5
  111. data/spec/controllers/main_controller_spec.rb +7 -7
  112. data/spec/dummy_app/Gemfile +10 -7
  113. data/spec/dummy_app/Rakefile +1 -1
  114. data/spec/dummy_app/app/assets/images/rails.png +0 -0
  115. data/spec/dummy_app/app/assets/javascripts/application.js +15 -0
  116. data/spec/dummy_app/app/assets/stylesheets/application.css +13 -0
  117. data/spec/dummy_app/app/controllers/players_controller.rb +1 -1
  118. data/spec/dummy_app/app/models/cms/basic_page.rb +1 -1
  119. data/spec/dummy_app/app/models/division.rb +5 -1
  120. data/spec/dummy_app/app/models/field_test.rb +4 -4
  121. data/spec/dummy_app/app/models/nested_field_test.rb +3 -0
  122. data/spec/dummy_app/app/models/player.rb +3 -3
  123. data/spec/dummy_app/app/views/layouts/application.html.erb +3 -2
  124. data/spec/dummy_app/app/views/players/show.html.haml +1 -1
  125. data/spec/dummy_app/config/application.rb +20 -5
  126. data/spec/dummy_app/config/database.yml +5 -2
  127. data/spec/dummy_app/config/environments/development.rb +11 -1
  128. data/spec/dummy_app/config/environments/production.rb +19 -3
  129. data/spec/dummy_app/config/environments/test.rb +5 -7
  130. data/spec/dummy_app/config/initializers/devise.rb +6 -0
  131. data/spec/dummy_app/config/initializers/inflections.rb +5 -0
  132. data/spec/dummy_app/config/initializers/secret_token.rb +1 -1
  133. data/spec/dummy_app/{foo/test/dummy/config → config}/initializers/wrap_parameters.rb +1 -1
  134. data/spec/dummy_app/config/routes.rb +1 -1
  135. data/spec/dummy_app/db/migrate/00000000000006_devise_create_users.rb +35 -5
  136. data/spec/dummy_app/db/migrate/20120118122004_add_categories.rb +1 -1
  137. data/spec/dummy_app/doc/README_FOR_APP +2 -0
  138. data/spec/dummy_app/public/404.html +26 -0
  139. data/spec/dummy_app/{foo/test/dummy/public → public}/422.html +0 -0
  140. data/spec/dummy_app/{foo/test/dummy/public → public}/500.html +0 -1
  141. data/spec/dummy_app/public/favicon.ico +0 -0
  142. data/spec/dummy_app/public/robots.txt +5 -0
  143. data/spec/helpers/application_helper_spec.rb +107 -42
  144. data/spec/{requests → integration}/authorization/cancan_spec.rb +4 -5
  145. data/spec/{requests → integration}/basic/bulk_action/rails_admin_basic_bulk_action_spec.rb +0 -0
  146. data/spec/{requests → integration}/basic/bulk_destroy/rails_admin_basic_bulk_destroy_spec.rb +3 -16
  147. data/spec/{requests → integration}/basic/create/rails_admin_basic_create_spec.rb +0 -2
  148. data/spec/{requests → integration}/basic/create/rails_admin_namespaced_model_create_spec.rb +0 -16
  149. data/spec/{requests → integration}/basic/delete/rails_admin_basic_delete_spec.rb +0 -0
  150. data/spec/{requests → integration}/basic/destroy/rails_admin_basic_destroy_spec.rb +0 -0
  151. data/spec/{requests → integration}/basic/edit/rails_admin_basic_edit_spec.rb +2 -2
  152. data/spec/{requests → integration}/basic/export/rails_admin_basic_export_spec.rb +1 -1
  153. data/spec/{requests → integration}/basic/list/rails_admin_basic_list_spec.rb +12 -38
  154. data/spec/{requests → integration}/basic/new/rails_admin_basic_new_spec.rb +0 -0
  155. data/spec/{requests → integration}/basic/new/rails_admin_namespaced_model_new_spec.rb +0 -0
  156. data/spec/{requests → integration}/basic/show/rails_admin_basic_show_spec.rb +1 -2
  157. data/spec/{requests → integration}/basic/update/rails_admin_basic_update_spec.rb +2 -2
  158. data/spec/{requests → integration}/config/edit/rails_admin_config_edit_spec.rb +65 -24
  159. data/spec/{requests → integration}/config/list/rails_admin_config_list_spec.rb +2 -2
  160. data/spec/{requests → integration}/config/show/rails_admin_config_show_spec.rb +20 -0
  161. data/spec/{requests → integration}/history/rails_admin_history_spec.rb +3 -3
  162. data/spec/{requests → integration}/rails_admin_spec.rb +8 -41
  163. data/spec/{requests → integration}/relation_spec.rb +0 -0
  164. data/spec/spec_helper.rb +13 -31
  165. data/spec/{lib → unit/adapters/active_record}/abstract_object_spec.rb +17 -5
  166. data/spec/unit/adapters/active_record_spec.rb +53 -0
  167. data/spec/{requests/actions.rb → unit/config/actions_spec.rb} +47 -31
  168. data/spec/unit/config/fields/base_spec.rb +291 -0
  169. data/spec/unit/config/model_spec.rb +75 -0
  170. data/spec/unit/config/sections_spec.rb +123 -0
  171. data/spec/{lib/rails_admin_spec.rb → unit/config_spec.rb} +65 -93
  172. metadata +127 -223
  173. data/app/assets/javascripts/rails_admin/jquery_nested_form.js +0 -58
  174. data/app/views/layouts/rails_admin/_navigation.html.haml +0 -17
  175. data/lib/rails_admin/abstract_object.rb +0 -28
  176. data/lib/rails_admin/config/base.rb +0 -111
  177. data/lib/rails_admin/config/proxy.rb +0 -40
  178. data/lib/rails_admin/generic_support.rb +0 -18
  179. data/spec/dummy_app/config/initializers/quiet_assets.rb +0 -10
  180. data/spec/dummy_app/foo/Gemfile +0 -17
  181. data/spec/dummy_app/foo/MIT-LICENSE +0 -20
  182. data/spec/dummy_app/foo/README.rdoc +0 -3
  183. data/spec/dummy_app/foo/Rakefile +0 -39
  184. data/spec/dummy_app/foo/app/assets/javascripts/foo/application.js +0 -9
  185. data/spec/dummy_app/foo/app/assets/stylesheets/foo/application.css +0 -7
  186. data/spec/dummy_app/foo/app/controllers/foo/application_controller.rb +0 -4
  187. data/spec/dummy_app/foo/app/helpers/foo/application_helper.rb +0 -4
  188. data/spec/dummy_app/foo/app/models/foo/bar.rb +0 -4
  189. data/spec/dummy_app/foo/app/views/layouts/foo/application.html.erb +0 -14
  190. data/spec/dummy_app/foo/config/routes.rb +0 -2
  191. data/spec/dummy_app/foo/foo.gemspec +0 -23
  192. data/spec/dummy_app/foo/lib/foo/engine.rb +0 -5
  193. data/spec/dummy_app/foo/lib/foo/version.rb +0 -3
  194. data/spec/dummy_app/foo/lib/foo.rb +0 -4
  195. data/spec/dummy_app/foo/lib/tasks/foo_tasks.rake +0 -4
  196. data/spec/dummy_app/foo/script/rails +0 -6
  197. data/spec/dummy_app/foo/test/dummy/Rakefile +0 -7
  198. data/spec/dummy_app/foo/test/dummy/app/assets/javascripts/application.js +0 -9
  199. data/spec/dummy_app/foo/test/dummy/app/assets/stylesheets/application.css +0 -7
  200. data/spec/dummy_app/foo/test/dummy/app/controllers/application_controller.rb +0 -3
  201. data/spec/dummy_app/foo/test/dummy/app/helpers/application_helper.rb +0 -2
  202. data/spec/dummy_app/foo/test/dummy/app/views/layouts/application.html.erb +0 -14
  203. data/spec/dummy_app/foo/test/dummy/config/application.rb +0 -45
  204. data/spec/dummy_app/foo/test/dummy/config/boot.rb +0 -10
  205. data/spec/dummy_app/foo/test/dummy/config/database.yml +0 -25
  206. data/spec/dummy_app/foo/test/dummy/config/environment.rb +0 -5
  207. data/spec/dummy_app/foo/test/dummy/config/environments/development.rb +0 -30
  208. data/spec/dummy_app/foo/test/dummy/config/environments/production.rb +0 -60
  209. data/spec/dummy_app/foo/test/dummy/config/environments/test.rb +0 -39
  210. data/spec/dummy_app/foo/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  211. data/spec/dummy_app/foo/test/dummy/config/initializers/inflections.rb +0 -10
  212. data/spec/dummy_app/foo/test/dummy/config/initializers/mime_types.rb +0 -5
  213. data/spec/dummy_app/foo/test/dummy/config/initializers/secret_token.rb +0 -7
  214. data/spec/dummy_app/foo/test/dummy/config/initializers/session_store.rb +0 -8
  215. data/spec/dummy_app/foo/test/dummy/config/locales/en.yml +0 -5
  216. data/spec/dummy_app/foo/test/dummy/config/routes.rb +0 -4
  217. data/spec/dummy_app/foo/test/dummy/config.ru +0 -4
  218. data/spec/dummy_app/foo/test/dummy/db/schema.rb +0 -21
  219. data/spec/dummy_app/foo/test/dummy/public/404.html +0 -26
  220. data/spec/dummy_app/foo/test/dummy/public/favicon.ico +0 -0
  221. data/spec/dummy_app/foo/test/dummy/script/rails +0 -6
  222. data/spec/dummy_app/foo/test/fixtures/foo/bars.yml +0 -11
  223. data/spec/dummy_app/foo/test/foo_test.rb +0 -7
  224. data/spec/dummy_app/foo/test/integration/navigation_test.rb +0 -10
  225. data/spec/dummy_app/foo/test/test_helper.rb +0 -10
  226. data/spec/dummy_app/foo/test/unit/foo/bar_test.rb +0 -9
  227. data/spec/generator_helpers.rb +0 -30
  228. data/spec/generators/install_generator_spec.rb +0 -85
  229. data/spec/generators/uninstall_generator_spec.rb +0 -35
  230. data/spec/lib/custom_field.rb +0 -7
  231. data/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb +0 -107
  232. data/spec/requests/config/rails_admin_config_spec.rb +0 -227
@@ -8,7 +8,7 @@
8
8
  var operator_name = 'f[' + field_name + '][' + index + '][o]';
9
9
  switch(field_type) {
10
10
  case 'boolean':
11
- var control = '<select class="span3 " name="' + value_name + '">' +
11
+ var control = '<select class="input-small" name="' + value_name + '">' +
12
12
  '<option value="_discard">...</option>' +
13
13
  '<option value="true"' + (field_value == "true" ? 'selected="selected"' : '') + '>True</option>' +
14
14
  '<option value="false"' + (field_value == "false" ? 'selected="selected"' : '') + '>False</option>' +
@@ -20,7 +20,7 @@
20
20
  case 'date':
21
21
  case 'datetime':
22
22
  case 'timestamp':
23
- var control = '<select class="switch-additionnal-fieldsets span3 " name="' + operator_name + '">' +
23
+ var control = '<select class="switch-additionnal-fieldsets input-small" name="' + operator_name + '">' +
24
24
  '<option data-additional-fieldset="false" value="_discard">...</option>' +
25
25
  '<option data-additional-fieldset="false"' + (field_operator == "today" ? 'selected="selected"' : '') + ' value="today">Today</option>' +
26
26
  '<option data-additional-fieldset="false"' + (field_operator == "yesterday" ? 'selected="selected"' : '') + ' value="yesterday">Yesterday</option>' +
@@ -28,32 +28,31 @@
28
28
  '<option data-additional-fieldset="false"' + (field_operator == "last_week" ? 'selected="selected"' : '') + ' value="last_week">Last week</option>' +
29
29
  '<option data-additional-fieldset="true" ' + (field_operator == "less_than" ? 'selected="selected"' : '') + ' value="less_than">Less than ... days ago</option>' +
30
30
  '<option data-additional-fieldset="true" ' + (field_operator == "more_than" ? 'selected="selected"' : '') + ' value="more_than">More than ... days ago</option>' +
31
- '<option data-additional-fieldset="true" ' + (field_operator == "mmddyyyy" ? 'selected="selected"' : '') + ' value="mmddyyyy">On specific date (mmddyyyy)</option>' +
31
+ '<option data-additional-fieldset="true" ' + (field_operator == "mmddyyyy" ? 'selected="selected"' : '') + ' value="mmddyyyy">On specific date (mmddyyyy)</option>' +
32
32
  '<option disabled="disabled">---------</option>' +
33
33
  '<option data-additional-fieldset="false"' + (field_operator == "_not_null" ? 'selected="selected"' : '') + ' value="_not_null">Is present</option>' +
34
34
  '<option data-additional-fieldset="false"' + (field_operator == "_null" ? 'selected="selected"' : '') + ' value="_null" >Is blank</option>' +
35
35
  '</select>'
36
- var additional_control = '<input class="additional-fieldset span2 " style="display:' + (field_operator == "less_than" || field_operator == "more_than" || field_operator == "mmddyyyy" ? 'block' : 'none') + ';" type="text" name="' + value_name + '" value="' + field_value + '" /> ';
36
+ var additional_control = '<input class="additional-fieldset input-small" style="display:' + (field_operator == "less_than" || field_operator == "more_than" || field_operator == "mmddyyyy" ? 'inline-block' : 'none') + ';" type="text" name="' + value_name + '" value="' + field_value + '" /> ';
37
37
  break;
38
38
  case 'enum':
39
39
  var field_options = $('<div/>').html(field_options).text(); // entities decode
40
- var control = '<span class="switch-select">' +
41
- '<select style="display:' + (multiple_values ? 'none' : 'block') + '" ' + (multiple_values ? '' : 'name="' + value_name + '"') + ' data-name="' + value_name + '" class="span3 select-single">' +
40
+ var control = '<select style="display:' + (multiple_values ? 'none' : 'inline-block') + '" ' + (multiple_values ? '' : 'name="' + value_name + '"') + ' data-name="' + value_name + '" class="select-single input-small">' +
42
41
  '<option value="_discard">...</option>' +
43
42
  '<option ' + (field_value == "_present" ? 'selected="selected"' : '') + ' value="_present">Is present</option>' +
44
43
  '<option ' + (field_value == "_blank" ? 'selected="selected"' : '') + ' value="_blank">Is blank</option>' +
45
44
  '<option disabled="disabled">---------</option>' +
46
45
  field_options +
47
- '</select>' +
48
- '<select multiple="multiple" style="display:' + (multiple_values ? 'block' : 'none') + '" ' + (multiple_values ? 'name="' + value_name + '[]"' : '') + ' data-name="' + value_name + '[]" class="span3 select-multiple">' +
49
- field_options +
50
46
  '</select>' +
51
- '</span>';
47
+ '<select multiple="multiple" style="display:' + (multiple_values ? 'inline-block' : 'none') + '" ' + (multiple_values ? 'name="' + value_name + '[]"' : '') + ' data-name="' + value_name + '[]" class="select-multiple input-small">' +
48
+ field_options +
49
+ '</select> ' +
50
+ '<a href="#" class="switch-select"><i class="icon-' + (multiple_values ? 'minus' : 'plus') + '"></i></a>';
52
51
  break;
53
52
  case 'string':
54
53
  case 'text':
55
54
  case 'belongs_to_association':
56
- var control = '<select class="switch-additionnal-fieldsets span3 " value="' + field_operator + '" name="' + operator_name + '">' +
55
+ var control = '<select class="switch-additionnal-fieldsets input-small" value="' + field_operator + '" name="' + operator_name + '">' +
57
56
  '<option data-additional-fieldset="true"' + (field_operator == "like" ? 'selected="selected"' : '') + ' value="like">Contains</option>' +
58
57
  '<option data-additional-fieldset="true"' + (field_operator == "is" ? 'selected="selected"' : '') + ' value="is">Is exactly</option>' +
59
58
  '<option data-additional-fieldset="true"' + (field_operator == "starts_with" ? 'selected="selected"' : '') + ' value="starts_with">Starts with</option>' +
@@ -62,28 +61,25 @@
62
61
  '<option data-additional-fieldset="false"' + (field_operator == "_present" ? 'selected="selected"' : '') + ' value="_present">Is present</option>' +
63
62
  '<option data-additional-fieldset="false"' + (field_operator == "_blank" ? 'selected="selected"' : '') + ' value="_blank">Is blank</option>' +
64
63
  '</select>'
65
- var additional_control = '<input class="additional-fieldset span2" style="display:' + (field_operator == "_blank" || field_operator == "_present" ? 'none' : 'block') + ';" type="text" name="' + value_name + '" value="' + field_value + '" /> ';
64
+ var additional_control = '<input class="additional-fieldset input-small" style="display:' + (field_operator == "_blank" || field_operator == "_present" ? 'none' : 'inline-block') + ';" type="text" name="' + value_name + '" value="' + field_value + '" /> ';
66
65
  break;
67
66
  default:
68
- var control = '<input class="span2" type="text" name="' + value_name + '" value="' + field_value + '"/> ';
67
+ var control = '<input type="text" class="input-small" name="' + value_name + '" value="' + field_value + '"/> ';
69
68
  break;
70
69
  }
71
70
 
72
-
73
- var content = '<div class="row filter clearfix">' +
74
- '<span class="span3">' +
75
- '<span class="btn info delete">' + field_label + '</span>' +
76
- '</span>' +
77
- '<span class="span3">'+
78
- control +
79
- '</span>'+
80
- (additional_control ? '<span class="span2">' + additional_control + '</span>' : '') +
81
- '</div>'
71
+ var content = '<p class="filter form-search">' +
72
+ '<span class="label label-info form-label"><a href="#" class="delete"><i class="icon-trash icon-white"></i></a> ' + field_label + '</span> ' +
73
+ control + " " +
74
+ (additional_control || '') +
75
+ '</div> ';
82
76
  $('#filters_box').append(content);
77
+ $("hr.filters_box:hidden").show('slow');
83
78
  }
84
79
  }
85
80
 
86
- $("#filters a").live('click', function() {
81
+ $("#filters a").live('click', function(e) {
82
+ e.preventDefault();
87
83
  $.filters.append(
88
84
  $(this).data('field-label'),
89
85
  $(this).data('field-name'),
@@ -96,25 +92,29 @@
96
92
  );
97
93
  });
98
94
 
99
- $('#filters_box .delete').live('click', function() {
95
+ $('#filters_box .delete').live('click', function(e) {
96
+ e.preventDefault();
100
97
  form = $(this).parents('form');
101
98
  $(this).parents('.filter').remove();
99
+ !$("#filters_box").children().length && $("hr.filters_box:visible").hide('slow');
102
100
  form.submit();
103
101
  });
104
102
 
105
- $('#filters_box .switch-select').live('dblclick', function() {
106
- var selected_select = $(this).children('select:visible');
107
- var not_selected_select = $(this).children('select:hidden');
103
+ $('#filters_box .switch-select').live('click', function(e) {
104
+ e.preventDefault();
105
+ var selected_select = $(this).siblings('select:visible');
106
+ var not_selected_select = $(this).siblings('select:hidden');
108
107
  not_selected_select.attr('name', not_selected_select.data('name')).show('slow');
109
108
  selected_select.attr('name', null).hide('slow');
109
+ $(this).find('i').toggleClass("icon-plus icon-minus")
110
110
  });
111
111
 
112
112
  $('#filters_box .switch-additionnal-fieldsets').live('change', function() {
113
113
  var selected_option = $(this).find('option:selected');
114
114
  if($(selected_option).data('additional-fieldset')) {
115
- $(this).parent().siblings().children('.additional-fieldset').show('slow');
115
+ $(this).siblings('.additional-fieldset').show('slow');
116
116
  } else {
117
- $(this).parent().siblings().children('.additional-fieldset').hide('slow');
117
+ $(this).siblings('.additional-fieldset').hide('slow');
118
118
  }
119
119
  });
120
120
  })( jQuery );
@@ -55,7 +55,7 @@
55
55
  self._trigger("selected", event, {
56
56
  item: option
57
57
  });
58
- $(self.element.parents('.input')[0]).find('.update').removeClass('disabled');
58
+ $(self.element.parents('.controls')[0]).find('.update').removeClass('disabled');
59
59
  },
60
60
  change: function(event, ui) {
61
61
  if (!ui.item) {
@@ -72,23 +72,23 @@
72
72
  $(this).val(null);
73
73
  select.html($('<option value="" selected="selected"></option>'));
74
74
  input.data("autocomplete").term = "";
75
- $(self.element.parents('.input')[0]).find('.update').addClass('disabled');
75
+ $(self.element.parents('.controls')[0]).find('.update').addClass('disabled');
76
76
  return false;
77
77
  }
78
-
78
+
79
79
  }
80
80
  }
81
81
  })
82
- if(select.attr('placeholder'))
82
+ if(select.attr('placeholder'))
83
83
  input.attr('placeholder', select.attr('placeholder'))
84
-
84
+
85
85
  input.data("autocomplete")._renderItem = function(ul, item) {
86
86
  return $("<li></li>")
87
87
  .data("item.autocomplete", item)
88
88
  .append( $( "<a></a>" ).html( item.label || item.id ) )
89
89
  .appendTo(ul);
90
90
  };
91
-
91
+
92
92
  // replace with dropdown button once ready in twitter-bootstrap
93
93
  var button = this.button = $('<label class="add-on ui-button ui-widget ui-state-default ui-corner-all ui-button-icon-only" title="Show All Items" role="button"><span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"></span><span class="ui-button-text">&nbsp;</span></label>')
94
94
  .click(function() {
@@ -102,17 +102,17 @@
102
102
  input.autocomplete("search", "");
103
103
  input.focus();
104
104
  });
105
-
105
+
106
106
  filtering_select.append(input).append(button).insertAfter(select);
107
-
108
-
107
+
108
+
109
109
  },
110
110
 
111
111
  _getResultSet: function(request, data, xhr) {
112
- var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
112
+ var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
113
113
 
114
114
  return $.map(data, function(el, i) {
115
- // match regexp only for local requests, remote ones are already filtered, and label may not contain filtered term.
115
+ // match regexp only for local requests, remote ones are already filtered, and label may not contain filtered term.
116
116
  if ((el.id || el.value) && (xhr || matcher.test(el.label))) {
117
117
  return {
118
118
  label: el.label ? el.label.replace(
@@ -0,0 +1,40 @@
1
+ $ = jQuery
2
+
3
+ $(document).ready ->
4
+ window.nestedFormEvents.insertFields = (content, assoc, link) ->
5
+ tab_content = $(link).closest(".controls").siblings(".tab-content")
6
+ tab_content.append content
7
+ tab_content.children().last()
8
+
9
+ $('form').live 'nested:fieldAdded', (content) ->
10
+ field = content.field.addClass('tab-pane');
11
+ new_tab = $('<li><a data-toggle="tab" href="#' + field.attr('id') + '">' + field.children('.object-infos').data('object-label') + '</a></li>')
12
+ parent_group = field.closest('.control-group')
13
+ controls = parent_group.children('.controls')
14
+ nav = controls.children('.nav')
15
+ content = parent_group.children('.tab-content')
16
+ toggler = controls.find('.toggler')
17
+ nav.append(new_tab)
18
+ new_tab.children('a').tab('show') # activate added tab
19
+ nav.select(':hidden').show('slow') # show nav if hidden
20
+ content.select(':hidden').show('slow') # show tabs content if hidden
21
+ # toggler 'on' if inactive
22
+ toggler.addClass('active').removeClass('disabled').children('i').addClass('icon-chevron-down').removeClass('icon-chevron-right')
23
+
24
+ $('form').live 'nested:fieldRemoved', (content) ->
25
+ field = content.field
26
+ nav = field.closest(".control-group").children('.controls').children('.nav')
27
+ current_li = nav.children('li').has('a[href=#' + field.attr('id') + ']')
28
+ parent_group = field.closest(".control-group")
29
+ controls = parent_group.children('.controls')
30
+ toggler = controls.find('.toggler')
31
+
32
+ # try to activate another tab
33
+ (if current_li.next().length then current_li.next() else current_li.prev()).children('a:first').tab('show')
34
+
35
+ current_li.remove()
36
+
37
+ if nav.children().length == 0 # removed last tab
38
+ nav.select(':visible').hide('slow') # hide nav. No use anymore.
39
+ # toggler 'off' if active
40
+ toggler.removeClass('active').addClass('disabled').children('i').removeClass('icon-chevron-down').addClass('icon-chevron-right')
@@ -16,7 +16,7 @@
16
16
  _create: function() {
17
17
  var widget = this
18
18
  var dom_widget = widget.element;
19
-
19
+
20
20
  var edit_url = dom_widget.find('select').data('edit-url');
21
21
  if(typeof(edit_url) != 'undefined' && edit_url.length) {
22
22
  dom_widget.find('.ra-multiselect option').live('dblclick', function(e){
@@ -27,7 +27,7 @@
27
27
  dom_widget.find('.create').unbind().bind("click", function(e){
28
28
  widget._bindModalOpening(e, $(this).data('link'))
29
29
  });
30
-
30
+
31
31
  dom_widget.find('.update').unbind().bind("click", function(e){
32
32
  if(value = dom_widget.find('select').val()) {
33
33
  widget._bindModalOpening(e, $(this).data('link').replace('__ID__', value))
@@ -36,7 +36,7 @@
36
36
  }
37
37
  });
38
38
  },
39
-
39
+
40
40
  _bindModalOpening: function(e, url) {
41
41
  e.preventDefault();
42
42
  widget = this;
@@ -44,61 +44,63 @@
44
44
  return false;
45
45
 
46
46
  var dialog = this._getModal();
47
- $.ajax({
48
- url: url,
49
- beforeSend: function(xhr) {
50
- xhr.setRequestHeader("Accept", "text/javascript");
51
- },
52
- success: function(data, status, xhr) {
53
- dialog.find('.modal-body').html(data);
54
- widget._bindFormEvents();
55
- },
56
- error: function(xhr, status, error) {
57
- dialog.find('.modal-body').html(xhr.responseText);
58
- },
59
- dataType: 'text'
60
- });
47
+
48
+ setTimeout(function(){ // fix race condition with modal insertion in the dom (Chrome => Team/add a new fan => #modal not found when it should have). Somehow .on('show') is too early, tried it too.
49
+ $.ajax({
50
+ url: url,
51
+ beforeSend: function(xhr) {
52
+ xhr.setRequestHeader("Accept", "text/javascript");
53
+ },
54
+ success: function(data, status, xhr) {
55
+ dialog.find('.modal-body').html(data);
56
+ widget._bindFormEvents();
57
+ },
58
+ error: function(xhr, status, error) {
59
+ dialog.find('.modal-body').html(xhr.responseText);
60
+ },
61
+ dataType: 'text'
62
+ });
63
+ },100);
64
+
61
65
  },
62
-
66
+
63
67
  _bindFormEvents: function() {
64
68
  var widget = this,
65
69
  dialog = this._getModal(),
66
70
  form = dialog.find("form"),
67
- saveButtonText = dialog.find(":submit[name=_save]").text(),
68
- cancelButtonText = dialog.find(":submit[name=_continue]").text();
69
- dialog.find('.actions').remove();
70
-
71
+ saveButtonText = dialog.find(":submit[name=_save]").html(),
72
+ cancelButtonText = dialog.find(":submit[name=_continue]").html();
73
+ dialog.find('.form-actions').remove();
74
+
71
75
  form.attr("data-remote", true);
72
- dialog.find('.modal-header-title').text(form.data('title'));
76
+ dialog.find('.modal-header-title').text(form.data('title'));
73
77
  dialog.find('.cancel-action').unbind().click(function(){
74
78
  dialog.modal('hide');
75
79
  return false;
76
- }).text(cancelButtonText);
77
-
80
+ }).html(cancelButtonText);
81
+
78
82
  dialog.find('.save-action').unbind().click(function(){
79
83
  form.submit();
80
84
  return false;
81
- }).text(saveButtonText);
82
-
85
+ }).html(saveButtonText);
86
+
83
87
  form.bind("ajax:complete", function(xhr, data, status) {
84
88
  if (status == 'error') {
85
89
  dialog.find('.modal-body').html(data.responseText);
86
90
  widget._bindFormEvents();
87
-
88
91
  } else {
89
-
90
92
  var json = $.parseJSON(data.responseText);
91
93
  var option = '<option value="' + json.id + '" selected>' + json.label + '</option>';
92
94
  var select = widget.element.find('select').filter(":hidden");
93
-
95
+
94
96
  if(widget.element.find('.filtering-select').length) { // select input
95
97
  var input = widget.element.find('.filtering-select').children('.ra-filtering-select-input');
96
98
  input.val(json.label);
97
- if (!select.find('option[value=' + json.id + ']').length) // replace
99
+ if (!select.find('option[value=' + json.id + ']').length) { // not a replace
98
100
  select.html(option).val(json.id);
99
-
101
+ widget.element.find('.update').removeClass('disabled');
102
+ }
100
103
  } else { // multi-select input
101
-
102
104
  var input = widget.element.find('.ra-filtering-select-input');
103
105
  var multiselect = widget.element.find('.ra-multiselect');
104
106
  if (multiselect.find('option[value=' + json.id + ']').length) { // replace
@@ -114,22 +116,22 @@
114
116
  }
115
117
  });
116
118
  },
117
-
119
+
118
120
  _getModal: function() {
119
121
  var widget = this;
120
122
  if (!widget.dialog) {
121
123
  widget.dialog = $('\
122
- <div id="modal" class="modal">\
124
+ <div id="modal" class="modal fade">\
123
125
  <div class="modal-header">\
124
- <a href="#" class="close">&times;</a>\
126
+ <a href="#" class="close" data-dismiss="modal">&times;</a>\
125
127
  <h3 class="modal-header-title">...</h3>\
126
128
  </div>\
127
129
  <div class="modal-body">\
128
130
  ...\
129
131
  </div>\
130
132
  <div class="modal-footer">\
131
- <a href="#" class="btn secondary cancel-action">...</a>\
132
- <a href="#" class="btn primary save-action">...</a>\
133
+ <a href="#" class="btn cancel-action">...</a>\
134
+ <a href="#" class="btn btn-primary save-action">...</a>\
133
135
  </div>\
134
136
  </div>')
135
137
  .modal({
@@ -137,7 +139,7 @@
137
139
  backdrop: true,
138
140
  show: true
139
141
  })
140
- .bind('hidden', function(){
142
+ .on('hidden', function(){
141
143
  widget.dialog.remove(); // We don't want to reuse closed modals
142
144
  widget.dialog = null;
143
145
  });
@@ -1,8 +1,9 @@
1
- <%
1
+ <%
2
2
  theme = ENV['RAILS_ADMIN_THEME'] || :default
3
3
  require_asset 'jquery'
4
4
  require_asset 'jquery_ujs'
5
- require_asset 'rails_admin/jquery_nested_form'
5
+ require_asset 'jquery_nested_form'
6
+ require_asset 'rails_admin/ra.nested-form-hooks'
6
7
  require_asset 'jquery.remotipart'
7
8
  require_asset 'rails_admin/jquery.pjax'
8
9
  require_asset 'rails_admin/jquery-ui-1.8.16.custom.js'
@@ -16,4 +17,4 @@
16
17
  require_asset 'rails_admin/ui'
17
18
  require_asset "rails_admin/themes/#{theme}/ui"
18
19
  require_asset 'rails_admin/custom/ui'
19
- %>
20
+ %>
@@ -1,12 +1,12 @@
1
- /*
2
- Theme's JS behaviour
3
-
1
+ /*
2
+ Theme's JS behaviour
3
+
4
4
  Available resources:
5
-
5
+
6
6
  http://twitter.github.com/bootstrap/javascript.html
7
7
  https://github.com/twitter/bootstrap/tree/master/js
8
8
  http://jquery.com/
9
9
  http://jqueryui.com/ (parts of it)
10
-
10
+
11
11
  rename to ui.js.coffee if needed.
12
- */
12
+ */
@@ -1,33 +1,61 @@
1
1
  $ = jQuery
2
2
 
3
- $("#list input.checkbox.toggle").live "click", ->
4
- checked_status = $(this).is(":checked")
5
- $("td.action.select input.checkbox[name='bulk_ids[]']").each ->
6
- $(this).attr "checked", checked_status
7
- if checked_status
8
- $(this).parent().addClass "checked"
9
- else
10
- $(this).parent().removeClass "checked"
3
+ $("#list input.toggle").live "click", ->
4
+ $("#list [name='bulk_ids[]']").attr "checked", $(this).is(":checked")
11
5
 
12
6
  $("#list a, #list form").live "ajax:complete", (xhr, data, status) ->
13
7
  $("#list").replaceWith data.responseText
14
8
 
15
- $("table#history th.header").live "click", ->
16
- if $(this).data("link")
17
- window.location = $(this).data("link")
9
+ $("table#history th.header[data-href]").live "click", ->
10
+ window.location = $(this).data('href')
18
11
 
19
- $(document).ready ->
20
- $('.pjax').pjax('[data-pjax-container]')
21
- $('.pjax-form').live 'submit', (event) ->
12
+ $('.pjax').live 'click', (event) ->
13
+ if $.support.pjax
14
+ event.preventDefault()
15
+ $.pjax
16
+ container: '[data-pjax-container]'
17
+ url: $(this).data('href') || $(this).attr('href')
18
+ timeout: 2000
19
+ else if $(this).data('href') # not a native #href, need some help
20
+ window.location = $(this).data('href')
21
+
22
+ $('.pjax-form').live 'submit', (event) ->
23
+ if $.support.pjax
22
24
  event.preventDefault()
23
25
  $.pjax
24
26
  container: '[data-pjax-container]'
25
27
  url: this.action + (if (this.action.indexOf('?') != -1) then '&' else '?') + $(this).serialize()
26
- $(".alert-message").alert()
27
- $("[rel=twipsy]").twipsy()
28
+ timeout: 2000
29
+
30
+ $('[data-target]').live 'click', ->
31
+ if !$(this).hasClass('disabled')
32
+ if $(this).has('i.icon-chevron-down').length
33
+ $(this).removeClass('active').children('i').toggleClass('icon-chevron-down icon-chevron-right')
34
+ $($(this).data('target')).select(':visible').hide('slow')
35
+ else
36
+ if $(this).has('i.icon-chevron-right').length
37
+ $(this).addClass('active').children('i').toggleClass('icon-chevron-down icon-chevron-right')
38
+ $($(this).data('target')).select(':hidden').show('slow')
39
+
40
+ $('.form-horizontal legend').live 'click', ->
41
+ if $(this).has('i.icon-chevron-down').length
42
+ $(this).siblings('.control-group:visible').hide('slow')
43
+ $(this).children('i').toggleClass('icon-chevron-down icon-chevron-right')
44
+ else
45
+ if $(this).has('i.icon-chevron-right').length
46
+ $(this).siblings('.control-group:hidden').show('slow')
47
+ $(this).children('i').toggleClass('icon-chevron-down icon-chevron-right')
48
+
49
+ $(document).ready ->
50
+
28
51
  $('.animate-width-to').each ->
29
52
  length = $(this).data("animate-length")
30
53
  width = $(this).data("animate-width-to")
31
54
  $(this).animate(width: width, length, 'easeOutQuad')
32
55
 
56
+ $('.form-horizontal legend').has('i.icon-chevron-right').each ->
57
+ $(this).siblings('.control-group').hide()
58
+
59
+ $('[rel=tooltip]').tooltip(delay: { show: 200, hide: 500 });
60
+
33
61
 
@@ -1,2 +1,2 @@
1
- For RailsAdmin developpers;
2
- We should use sass variables & mixins as much as possible so that themers/users can override them cleanly
1
+ For RailsAdmin developpers;
2
+ We should use sass variables & mixins as much as possible so that themers/users can override them cleanly