activeadmin 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (255) hide show
  1. data/CHANGELOG.rdoc +15 -1
  2. data/Gemfile +41 -11
  3. data/LICENSE +5 -0
  4. data/README.rdoc +202 -87
  5. data/Rakefile +51 -15
  6. data/activeadmin.gemspec +310 -131
  7. data/cucumber.yml +1 -0
  8. data/features/comments/commenting.feature +81 -0
  9. data/features/comments/viewing_index.feature +19 -0
  10. data/features/edit_page.feature +77 -0
  11. data/features/first_boot.feature +16 -0
  12. data/features/global_navigation.feature +30 -0
  13. data/features/index/formats.feature +10 -0
  14. data/features/index/index_as_block.feature +15 -0
  15. data/features/index/index_as_blog.feature +50 -0
  16. data/features/index/index_as_grid.feature +45 -0
  17. data/features/index/index_as_table.feature +79 -0
  18. data/features/index/index_scopes.feature +52 -0
  19. data/features/index/pagination.feature +23 -0
  20. data/features/new_page.feature +75 -0
  21. data/features/registering_assets.feature +35 -0
  22. data/features/registering_resources.feature +33 -0
  23. data/features/show/default_content.feature +43 -0
  24. data/features/show/page_title.feature +33 -0
  25. data/features/sidebar_sections.feature +128 -0
  26. data/features/specifying_actions.feature +16 -0
  27. data/features/step_definitions/action_item_steps.rb +7 -0
  28. data/features/step_definitions/additional_web_steps.rb +67 -0
  29. data/features/step_definitions/asset_steps.rb +7 -0
  30. data/features/step_definitions/attribute_steps.rb +15 -0
  31. data/features/step_definitions/comment_steps.rb +8 -0
  32. data/features/step_definitions/configuration_steps.rb +31 -0
  33. data/features/step_definitions/factory_steps.rb +28 -0
  34. data/features/step_definitions/flash_steps.rb +3 -0
  35. data/features/step_definitions/format_steps.rb +7 -0
  36. data/features/step_definitions/index_scope_steps.rb +20 -0
  37. data/features/step_definitions/pagination_steps.rb +8 -0
  38. data/features/step_definitions/sidebar_steps.rb +11 -0
  39. data/features/step_definitions/tab_steps.rb +3 -0
  40. data/features/step_definitions/user_steps.rb +20 -0
  41. data/features/step_definitions/web_steps.rb +219 -0
  42. data/features/support/env.rb +88 -0
  43. data/features/support/paths.rb +48 -0
  44. data/features/users/logging_in.feature +34 -0
  45. data/features/users/logging_out.feature +13 -0
  46. data/lib/active_admin.rb +155 -79
  47. data/lib/active_admin/abstract_view_factory.rb +95 -0
  48. data/lib/active_admin/action_items.rb +4 -15
  49. data/lib/active_admin/arbre.rb +23 -0
  50. data/lib/active_admin/arbre/attributes.rb +20 -0
  51. data/lib/active_admin/arbre/class_list.rb +28 -0
  52. data/lib/active_admin/arbre/collection.rb +27 -0
  53. data/lib/active_admin/arbre/context.rb +8 -0
  54. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  55. data/lib/active_admin/arbre/document.rb +42 -0
  56. data/lib/active_admin/arbre/element.rb +151 -0
  57. data/lib/active_admin/arbre/html.rb +84 -0
  58. data/lib/active_admin/arbre/html5_elements.rb +47 -0
  59. data/lib/active_admin/arbre/tag.rb +129 -0
  60. data/lib/active_admin/arbre/text_node.rb +35 -0
  61. data/lib/active_admin/callbacks.rb +87 -0
  62. data/lib/active_admin/comments.rb +73 -0
  63. data/lib/active_admin/comments/comment.rb +15 -0
  64. data/lib/active_admin/comments/configuration.rb +16 -0
  65. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  66. data/lib/active_admin/comments/resource_helper.rb +17 -0
  67. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  68. data/lib/active_admin/comments/views.rb +3 -0
  69. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  70. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  71. data/lib/active_admin/component.rb +22 -0
  72. data/lib/active_admin/controller_action.rb +12 -0
  73. data/lib/active_admin/dashboards.rb +0 -2
  74. data/lib/active_admin/dashboards/dashboard_controller.rb +10 -5
  75. data/lib/active_admin/dashboards/section.rb +5 -14
  76. data/lib/active_admin/devise.rb +43 -0
  77. data/lib/active_admin/dsl.rb +202 -0
  78. data/lib/active_admin/event.rb +31 -0
  79. data/lib/active_admin/form_builder.rb +68 -50
  80. data/lib/active_admin/iconic.rb +51 -0
  81. data/lib/active_admin/iconic/icons.rb +142 -0
  82. data/lib/active_admin/namespace.rb +102 -16
  83. data/lib/active_admin/renderer.rb +18 -3
  84. data/lib/active_admin/resource.rb +110 -9
  85. data/lib/active_admin/resource/belongs_to.rb +31 -0
  86. data/lib/active_admin/resource_controller.rb +45 -260
  87. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  88. data/lib/active_admin/resource_controller/actions.rb +53 -0
  89. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  90. data/lib/active_admin/resource_controller/collection.rb +142 -0
  91. data/lib/active_admin/resource_controller/filters.rb +58 -0
  92. data/lib/active_admin/resource_controller/form.rb +42 -0
  93. data/lib/active_admin/resource_controller/menu.rb +29 -0
  94. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  95. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  96. data/lib/active_admin/resource_controller/sidebars.rb +38 -0
  97. data/lib/active_admin/scope.rb +17 -0
  98. data/lib/active_admin/sidebar.rb +8 -47
  99. data/lib/active_admin/stylesheets/active_admin.scss +418 -0
  100. data/lib/active_admin/stylesheets/active_admin/_comments.scss +40 -0
  101. data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +13 -0
  102. data/lib/active_admin/stylesheets/active_admin/_forms.scss +168 -0
  103. data/lib/active_admin/stylesheets/active_admin/_header.scss +108 -0
  104. data/lib/active_admin/stylesheets/active_admin/_typography.scss +100 -0
  105. data/lib/active_admin/stylesheets/active_admin/mixins/_all.scss +8 -0
  106. data/lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss +27 -0
  107. data/lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss +21 -0
  108. data/lib/active_admin/stylesheets/active_admin/mixins/_icons.scss +20 -0
  109. data/lib/active_admin/stylesheets/active_admin/mixins/_reset.scss +165 -0
  110. data/lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss +43 -0
  111. data/lib/active_admin/stylesheets/active_admin/mixins/_sections.scss +27 -0
  112. data/lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss +21 -0
  113. data/lib/active_admin/stylesheets/active_admin/mixins/_variables.scss +12 -0
  114. data/lib/active_admin/version.rb +1 -1
  115. data/lib/active_admin/view_factory.rb +21 -0
  116. data/lib/active_admin/view_helpers.rb +17 -100
  117. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  118. data/lib/active_admin/view_helpers/auto_link_helper.rb +41 -0
  119. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  120. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  121. data/lib/active_admin/view_helpers/filter_form_helper.rb +174 -0
  122. data/lib/active_admin/view_helpers/form_helper.rb +12 -0
  123. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  124. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  125. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  126. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  127. data/lib/active_admin/view_helpers/status_tag_helper.rb +13 -0
  128. data/lib/active_admin/view_helpers/table_helper.rb +12 -0
  129. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  130. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  131. data/lib/active_admin/views.rb +8 -0
  132. data/lib/active_admin/views/action_items.rb +17 -0
  133. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  134. data/lib/active_admin/views/components/columns.rb +49 -0
  135. data/lib/active_admin/views/components/paginated_collection.rb +74 -0
  136. data/lib/active_admin/views/components/panel.rb +26 -0
  137. data/lib/active_admin/views/components/scopes.rb +64 -0
  138. data/lib/active_admin/views/components/sidebar_section.rb +30 -0
  139. data/lib/active_admin/views/components/table_for.rb +174 -0
  140. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  141. data/lib/active_admin/views/header_renderer.rb +37 -0
  142. data/lib/active_admin/views/index_as_block.rb +24 -0
  143. data/lib/active_admin/views/index_as_blog.rb +89 -0
  144. data/lib/active_admin/views/index_as_grid.rb +49 -0
  145. data/lib/active_admin/views/index_as_table.rb +73 -0
  146. data/lib/active_admin/views/pages/base.rb +138 -0
  147. data/lib/active_admin/views/pages/dashboard.rb +61 -0
  148. data/lib/active_admin/views/pages/edit.rb +27 -0
  149. data/lib/active_admin/views/pages/index.rb +64 -0
  150. data/lib/active_admin/views/pages/new.rb +27 -0
  151. data/lib/active_admin/views/pages/show.rb +56 -0
  152. data/lib/active_admin/views/tabs_renderer.rb +52 -0
  153. data/lib/active_admin/views/templates/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  154. data/lib/active_admin/views/templates/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  155. data/lib/active_admin/views/templates/active_admin/devise/passwords/edit.html.erb +16 -0
  156. data/lib/active_admin/views/templates/active_admin/devise/passwords/new.html.erb +14 -0
  157. data/lib/active_admin/views/templates/active_admin/devise/sessions/new.html.erb +18 -0
  158. data/lib/active_admin/views/templates/active_admin/devise/shared/_links.erb +20 -0
  159. data/lib/active_admin/views/templates/active_admin/devise/unlocks/new.html.erb +12 -0
  160. data/lib/active_admin/views/templates/active_admin_dashboard/index.html.arb +1 -0
  161. data/lib/active_admin/views/templates/active_admin_default/edit.html.arb +1 -0
  162. data/lib/active_admin/views/{active_admin_default → templates/active_admin_default}/index.csv.erb +0 -0
  163. data/lib/active_admin/views/templates/active_admin_default/index.html.arb +1 -0
  164. data/lib/active_admin/views/templates/active_admin_default/new.html.arb +1 -0
  165. data/lib/active_admin/views/templates/active_admin_default/show.html.arb +1 -0
  166. data/lib/active_admin/views/{layouts → templates/layouts}/active_admin.html.erb +3 -4
  167. data/lib/active_admin/views/templates/layouts/active_admin_logged_out.html.erb +31 -0
  168. data/lib/generators/active_admin/devise/devise_generator.rb +45 -0
  169. data/lib/generators/active_admin/install/install_generator.rb +18 -3
  170. data/lib/generators/active_admin/install/templates/active_admin.js +41 -0
  171. data/lib/generators/active_admin/install/templates/{active_admin.rb → active_admin.rb.erb} +33 -3
  172. data/lib/generators/active_admin/install/templates/active_admin_vendor.js +1 -1
  173. data/lib/generators/active_admin/install/templates/dashboards.rb +3 -4
  174. data/lib/generators/active_admin/install/templates/images/admin_notes_icon.png +0 -0
  175. data/lib/generators/active_admin/install/templates/images/loading.gif +0 -0
  176. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow.gif +0 -0
  177. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow_dark.gif +0 -0
  178. data/lib/generators/active_admin/install/templates/images/orderable.png +0 -0
  179. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  180. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  181. data/spec/integration/belongs_to_spec.rb +42 -0
  182. data/spec/integration/index_as_table_spec.rb +0 -119
  183. data/spec/integration/layout_spec.rb +3 -37
  184. data/spec/spec_helper.rb +89 -50
  185. data/spec/support/integration_example_group.rb +37 -0
  186. data/spec/support/rails_template.rb +21 -9
  187. data/spec/support/rails_template_with_data.rb +32 -0
  188. data/spec/support/templates/cucumber.rb +28 -0
  189. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  190. data/spec/unit/action_builder_spec.rb +19 -7
  191. data/spec/unit/action_items_spec.rb +16 -30
  192. data/spec/unit/active_admin_spec.rb +10 -22
  193. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  194. data/spec/unit/arbre/html/element_spec.rb +224 -0
  195. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  196. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  197. data/spec/unit/arbre/html_spec.rb +185 -0
  198. data/spec/unit/auto_link_spec.rb +38 -0
  199. data/spec/unit/belongs_to_spec.rb +44 -0
  200. data/spec/unit/breadcrumbs_spec.rb +110 -0
  201. data/spec/unit/comments_spec.rb +53 -0
  202. data/spec/unit/component_spec.rb +18 -0
  203. data/spec/unit/components/attributes_table_spec.rb +100 -0
  204. data/spec/unit/components/columns_spec.rb +75 -0
  205. data/spec/unit/components/panel_spec.rb +31 -0
  206. data/spec/unit/components/sidebar_section_spec.rb +37 -0
  207. data/spec/unit/components/table_for_spec.rb +130 -0
  208. data/spec/unit/dashboard_controller_spec.rb +26 -0
  209. data/spec/unit/dashboard_section_spec.rb +10 -17
  210. data/spec/unit/display_name_spec.rb +29 -0
  211. data/spec/unit/event_spec.rb +41 -0
  212. data/spec/unit/filter_form_builder_spec.rb +99 -77
  213. data/spec/unit/form_builder_spec.rb +69 -69
  214. data/spec/unit/namespace_spec.rb +61 -3
  215. data/spec/unit/pretty_format_spec.rb +35 -0
  216. data/spec/unit/registration_spec.rb +40 -1
  217. data/spec/unit/renderer_spec.rb +8 -0
  218. data/spec/unit/resource_controller_spec.rb +105 -6
  219. data/spec/unit/resource_spec.rb +78 -11
  220. data/spec/unit/routing_spec.rb +82 -6
  221. data/spec/unit/scope_spec.rb +31 -0
  222. data/spec/unit/tabs_renderer_spec.rb +24 -2
  223. data/spec/unit/view_factory_spec.rb +16 -0
  224. metadata +268 -82
  225. data/.gitignore +0 -25
  226. data/active_admin.gemspec +0 -22
  227. data/lib/active_admin/action_builder.rb +0 -60
  228. data/lib/active_admin/breadcrumbs.rb +0 -26
  229. data/lib/active_admin/dashboards/renderer.rb +0 -45
  230. data/lib/active_admin/dashboards/section_renderer.rb +0 -28
  231. data/lib/active_admin/filters.rb +0 -189
  232. data/lib/active_admin/pages.rb +0 -11
  233. data/lib/active_admin/pages/base.rb +0 -92
  234. data/lib/active_admin/pages/edit.rb +0 -21
  235. data/lib/active_admin/pages/index.rb +0 -58
  236. data/lib/active_admin/pages/index/blog.rb +0 -65
  237. data/lib/active_admin/pages/index/table.rb +0 -48
  238. data/lib/active_admin/pages/index/thumbnails.rb +0 -40
  239. data/lib/active_admin/pages/new.rb +0 -21
  240. data/lib/active_admin/pages/show.rb +0 -54
  241. data/lib/active_admin/table_builder.rb +0 -162
  242. data/lib/active_admin/tabs_renderer.rb +0 -39
  243. data/lib/active_admin/views/active_admin_dashboard/index.html.erb +0 -1
  244. data/lib/active_admin/views/active_admin_default/edit.html.erb +0 -1
  245. data/lib/active_admin/views/active_admin_default/index.html.erb +0 -1
  246. data/lib/active_admin/views/active_admin_default/new.html.erb +0 -1
  247. data/lib/active_admin/views/active_admin_default/show.html.erb +0 -1
  248. data/lib/generators/active_admin/install/templates/active_admin.css +0 -325
  249. data/lib/generators/active_admin/install/templates/images/orderable.gif +0 -0
  250. data/spec/integration/index_as_blog_spec.rb +0 -65
  251. data/spec/integration/index_as_thumbnails_spec.rb +0 -43
  252. data/spec/integration/new_view_spec.rb +0 -52
  253. data/spec/integration/show_view_spec.rb +0 -91
  254. data/spec/unit/sidebar_spec.rb +0 -96
  255. data/spec/unit/table_builder_spec.rb +0 -162
@@ -1,14 +1,22 @@
1
1
  module ActiveAdmin
2
2
  module Generators
3
3
  class InstallGenerator < Rails::Generators::Base
4
- desc "Installs ActiveAdmin in a rails 3 application"
4
+ desc "Installs Active Admin and generats the necessary migrations"
5
+
6
+ hook_for :users, :default => "devise", :desc => "Admin user generator to run. Skip with --skip-users"
7
+
8
+ include Rails::Generators::Migration
5
9
 
6
10
  def self.source_root
7
11
  @_active_admin_source_root ||= File.expand_path("../templates", __FILE__)
8
12
  end
9
13
 
14
+ def self.next_migration_number(dirname)
15
+ Time.now.strftime("%Y%m%d%H%M%S")
16
+ end
17
+
10
18
  def copy_initializer
11
- template 'active_admin.rb', 'config/initializers/active_admin.rb'
19
+ template 'active_admin.rb.erb', 'config/initializers/active_admin.rb'
12
20
  end
13
21
 
14
22
  def setup_directory
@@ -21,11 +29,18 @@ module ActiveAdmin
21
29
  end
22
30
 
23
31
  def copy_assets
24
- template 'active_admin.css', 'public/stylesheets/active_admin.css'
25
32
  template 'active_admin_vendor.js', 'public/javascripts/active_admin_vendor.js'
26
33
  template 'active_admin.js', 'public/javascripts/active_admin.js'
27
34
  directory 'images', 'public/images/active_admin'
28
35
  end
36
+
37
+ def create_migrations
38
+ Dir["#{self.class.source_root}/migrations/*.rb"].sort.each do |filepath|
39
+ name = File.basename(filepath)
40
+ migration_template "migrations/#{name}", "db/migrate/#{name.gsub(/^\d+_/,'')}"
41
+ sleep 1
42
+ end
43
+ end
29
44
  end
30
45
  end
31
46
  end
@@ -7,4 +7,45 @@ $(function(){
7
7
  window.location.search = "";
8
8
  return false;
9
9
  });
10
+
11
+ // AJAX Comments
12
+ $('form#admin_note_new').submit(function() {
13
+
14
+ if ($(this).find('#admin_note_body').val() != "") {
15
+ $(this).fadeOut('slow', function() {
16
+ $('.loading_indicator').fadeIn();
17
+ $.ajax({
18
+ url: $(this).attr('action'),
19
+ type: 'POST',
20
+ dataType: 'json',
21
+ data: $(this).serialize(),
22
+ success: function(data, textStatus, xhr) {
23
+ $('.loading_indicator').fadeOut('slow', function(){
24
+
25
+ // Hide the empty message
26
+ $('.admin_notes_list li.empty').fadeOut().remove();
27
+
28
+ // Add the note
29
+ $('.admin_notes_list').append(data['note']);
30
+
31
+ // Update the number of notes
32
+ $('.admin_notes h3 span.admin_notes_count').html("(" + data['number_of_notes'] + ")");
33
+
34
+ // Reset the form
35
+ $('form#new_active_admin_admin_note').find('#active_admin_admin_note_body').val("");
36
+
37
+ // Show the form
38
+ $('form#new_active_admin_admin_note').fadeIn('slow');
39
+ })
40
+ },
41
+ error: function(xhr, textStatus, errorThrown) {
42
+ //called when there is an error
43
+ }
44
+ });
45
+ });
46
+
47
+ };
48
+
49
+ return false;
50
+ });
10
51
  });
@@ -24,13 +24,43 @@ ActiveAdmin.setup do |config|
24
24
  config.default_namespace = :admin
25
25
 
26
26
 
27
+ # == User Authentication
28
+ #
29
+ # Active Admin will automatically call an authentication
30
+ # method in a before filter of all controller actions to
31
+ # ensure that there is a currently logged in admin user.
32
+ #
33
+ # This setting changes the method which Active Admin calls
34
+ # within the controller.
35
+ config.authentication_method = :authenticate_admin_user!
36
+
37
+
38
+ # == Current User
39
+ #
40
+ # Active Admin will associate actions with the current
41
+ # user performing them.
42
+ #
43
+ # This setting changes the method which Active Admin calls
44
+ # to return the currently logged in user.
45
+ config.current_user_method = :current_admin_user
46
+
47
+
48
+ # == Admin Notes
49
+ #
50
+ # Admin notes allow you to add notes to any model
51
+ #
52
+ # Admin notes are enabled by default, but can be disabled
53
+ # by uncommenting this line:
54
+ #
55
+ config.admin_notes = true
56
+
57
+
27
58
  # == Controller Filters
28
59
  #
29
60
  # You can add before, after and around filters to all of your
30
- # Active Admin resources from here. For example you may wish
31
- # to authenticate users before each request.
61
+ # Active Admin resources from here.
32
62
  #
33
- # config.before_filter :authenticate_user!
63
+ # config.before_filter :do_something_awesome
34
64
 
35
65
 
36
66
  # == Register Stylesheets & Javascripts
@@ -309,7 +309,7 @@ NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT
309
309
  * http://docs.jquery.com/UI/Datepicker
310
310
  *
311
311
  * Depends:
312
- * jquery.ui.core.js
312
+ * jquery.ui.core.js
313
313
  */
314
314
  (function(d){function J(){this.debug=false;this._curInst=null;this._keyEvent=false;this._disabledInputs=[];this._inDialog=this._datepickerShowing=false;this._mainDivId="ui-datepicker-div";this._inlineClass="ui-datepicker-inline";this._appendClass="ui-datepicker-append";this._triggerClass="ui-datepicker-trigger";this._dialogClass="ui-datepicker-dialog";this._disableClass="ui-datepicker-disabled";this._unselectableClass="ui-datepicker-unselectable";this._currentClass="ui-datepicker-current-day";this._dayOverClass=
315
315
  "ui-datepicker-days-cell-over";this.regional=[];this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su",
@@ -8,10 +8,9 @@ ActiveAdmin::Dashboards.build do
8
8
  # Here is an example of a simple dashboard section
9
9
  #
10
10
  # section "Recent Posts" do
11
- # content_tag :ul do
12
- # Post.recent(5).collect do |post|
13
- # content_tag(:li, link_to(post.title, admin_post_path(post)))
14
- # end.join
11
+ # ul do
12
+ # Post.recent(5).collect do |post|
13
+ # li link_to(post.title, admin_post_path(post)))
15
14
  # end
16
15
  # end
17
16
 
@@ -0,0 +1,16 @@
1
+ class CreateAdminNotes < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :admin_notes do |t|
4
+ t.references :resource, :polymorphic => true, :null => false
5
+ t.references :admin_user, :polymorphic => true
6
+ t.text :body
7
+ t.timestamps
8
+ end
9
+ add_index :admin_notes, [:resource_type, :resource_id]
10
+ add_index :admin_notes, [:admin_user_type, :admin_user_id]
11
+ end
12
+
13
+ def self.down
14
+ drop_table :admin_notes
15
+ end
16
+ end
@@ -0,0 +1,25 @@
1
+ class MoveAdminNotesToComments < ActiveRecord::Migration
2
+ def self.up
3
+ remove_index :admin_notes, [:admin_user_type, :admin_user_id]
4
+ rename_table :admin_notes, :active_admin_comments
5
+ rename_column :active_admin_comments, :admin_user_type, :author_type
6
+ rename_column :active_admin_comments, :admin_user_id, :author_id
7
+ add_column :active_admin_comments, :namespace, :string
8
+ add_index :active_admin_comments, [:namespace]
9
+ add_index :active_admin_comments, [:author_type, :author_id]
10
+
11
+ # Update all the existing comments to the default namespace
12
+ say "Updating any existing comments to the #{ActiveAdmin.default_namespace} namespace."
13
+ execute "UPDATE active_admin_comments SET namespace='#{ActiveAdmin.default_namespace}'"
14
+ end
15
+
16
+ def self.down
17
+ remove_index :active_admin_comments, :column => [:author_type, :author_id]
18
+ remove_index :active_admin_comments, :column => [:namespace]
19
+ remove_column :active_admin_comments, :namespace
20
+ rename_column :active_admin_comments, :author_id, :admin_user_id
21
+ rename_column :active_admin_comments, :author_type, :admin_user_type
22
+ rename_table :active_admin_comments, :admin_notes
23
+ add_index :admin_notes, [:admin_user_type, :admin_user_id]
24
+ end
25
+ end
@@ -0,0 +1,42 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe_with_capybara "Belongs To" do
4
+
5
+ let(:user){ User.create(:first_name => "John", :last_name => "Doe", :username => "johndoe") }
6
+ let(:post){ user.posts.create :title => "Hello World", :body => "woot!"}
7
+
8
+ before do
9
+ # Make sure both are created
10
+ user
11
+ post
12
+ end
13
+
14
+ describe "the index page" do
15
+ before do
16
+ visit admin_user_posts_path(user)
17
+ end
18
+
19
+ describe "the main content" do
20
+ it "should display the default table" do
21
+ page.should have_content(post.title)
22
+ end
23
+ end
24
+
25
+ describe "the breadcrumb" do
26
+ it "should have a link to the parent's index" do
27
+ page.body.should have_tag("a", "Users", :attributes => { :href => "/admin/users" })
28
+ end
29
+ it "should have a link to the parent" do
30
+ page.body.should have_tag("a", user.id.to_s, :attributes => { :href => "/admin/users/#{user.id}" })
31
+ end
32
+ end
33
+
34
+ describe "the view links" do
35
+ it "should take you to the sub resource" do
36
+ click "View"
37
+ current_path.should == "/admin/users/#{user.id}/posts/#{post.id}"
38
+ end
39
+ end
40
+ end
41
+
42
+ end
@@ -7,125 +7,6 @@ describe_with_render "Index as Table" do
7
7
  reload_routes!
8
8
  end
9
9
 
10
- before(:each) do
11
- Admin::PostsController.reset_index_config!
12
- end
13
-
14
- describe "GET #index" do
15
- before(:each) do
16
- @post = Post.create(:title => "Hello World")
17
- end
18
-
19
- describe "in general" do
20
- it "should have a breadcrumb" do
21
- get :index
22
- response.should have_tag("a", "Dashboard")
23
- end
24
- it "should have pagination information" do
25
- get :index
26
- response.body.should match(/Displaying \<b\>1\<\/b\> Post/)
27
- end
28
- it "should set the page title" do
29
- get :index
30
- response.should have_tag("title", "Posts | Rails300")
31
- end
32
- end
33
-
34
- describe "with default table" do
35
- before(:each) do
36
- get :index
37
- end
38
- it "should render a header for the section" do
39
- response.should have_tag("h2", "Posts")
40
- end
41
- it "should render a new link" do
42
- response.should have_tag("a", "New Post", :attributes => {:href => "/admin/posts/new"})
43
- end
44
- it "should render an ID header" do
45
- response.should have_tag("th", "ID")
46
- end
47
- it "should render a table with default sortable headers" do
48
- response.should have_tag("a", :content => "Title",
49
- :parent => { :tag => "th" })
50
- # I should be able to match against the url attribute, but it doesn't want to work
51
- # :attributes => { 'href' => "/admin/posts?order=title_desc"})
52
- # So instead, we'll check that it exists
53
- response.body.should match(/\"\/admin\/posts\?order\=title_desc\"/)
54
- end
55
- it "should render the sortable header for ascending if we are currently sorted descending" do
56
- get :index, 'order' => 'title_desc'
57
- response.body.should match(/\"\/admin\/posts\?order\=title_asc\"/)
58
- end
59
- it "should render a view link" do
60
- response.should have_tag("a", "View")
61
- end
62
- it "should render an edit link" do
63
- response.should have_tag("a", "Edit")
64
- end
65
- it "should render a delete link" do
66
- response.should have_tag("a", "Delete")
67
- end
68
- end
69
-
70
- describe "with symbol column keys" do
71
- before(:each) do
72
- Admin::PostsController.index do |i|
73
- i.column :title
74
- end
75
- Post.create(:title => "Hello World", :body => "Woot Woot")
76
- get :index
77
- end
78
-
79
- it "should show the specified columns" do
80
- response.should have_tag("th", "Title")
81
- end
82
-
83
- it "should show the column data" do
84
- response.should have_tag("td", "Hello World")
85
- end
86
-
87
- it "should not show specified columns" do
88
- response.should_not have_tag("th", "Body")
89
- end
90
- end
91
-
92
- describe "with block column keys" do
93
- before(:each) do
94
-
95
- Admin::PostsController.index do |i|
96
- i.column('Great Titles'){|post| link_to post.title, [:admin, post] }
97
- end
98
- Post.create(:title => "Hello World", :body => "Woot Woot")
99
- get :index
100
- end
101
-
102
- it "should show the specified columns" do
103
- response.should have_tag("th", "Great Titles")
104
- end
105
-
106
- it "should render the block in the view" do
107
- response.should have_tag("a", "Hello World")
108
- end
109
-
110
- it "should show the column data" do
111
- response.should have_tag("td", "Hello World")
112
- end
113
- end
114
-
115
- describe "hiding columns" do
116
- before(:each) do
117
- Admin::PostsController.index do |i|
118
- i.column :title, :if => proc{ false }
119
- i.column :body
120
- end
121
- get :index
122
- end
123
- it "should not show columns which conditionals eval to false" do
124
- response.should_not have_tag("th", "Title")
125
- end
126
- end
127
- end
128
-
129
10
  describe "ordering get #index" do
130
11
  before(:each) do
131
12
  @yesterday = Post.create :title => "Yesterday", :created_at => Time.now - 1.day
@@ -2,14 +2,8 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe_with_render "Layout" do
4
4
 
5
- before :all do
5
+ before do
6
6
  load_defaults!
7
- reload_routes!
8
- end
9
-
10
- it "should include the active admin stylesheet" do
11
- get :index
12
- response.should have_tag("link", :attributes => { :href => '/stylesheets/active_admin.css' })
13
7
  end
14
8
 
15
9
  it "should include active admin vendor js" do
@@ -40,43 +34,15 @@ describe_with_render "Layout" do
40
34
  Admin::PostsController.send :alias_method, :protect_against_forgery?, :protect_against_forgery_without_mock?
41
35
  end
42
36
  it "should include the csrf-param meta tag" do
37
+ self.class.metadata[:behaviour][:describes] = Admin::PostsController
43
38
  get :index
44
39
  response.should have_tag("meta", :attributes => { :name => "csrf-param" })
45
40
  end
46
41
  it "should include the csrf-token meta tag" do
42
+ self.class.metadata[:behaviour][:describes] = Admin::PostsController
47
43
  get :index
48
44
  response.should have_tag("meta", :attributes => { :name => "csrf-token" })
49
45
  end
50
46
  end
51
47
 
52
- describe "tabs" do
53
- context "when index" do
54
- before do
55
- get :index
56
- end
57
- it "should generate an ul for tabs" do
58
- response.should have_tag("ul", :attributes => { :id => "tabs" })
59
- end
60
- it "should generate an li and a for each resource" do
61
- ActiveAdmin.namespaces[:admin].resources.values.each do |r|
62
- response.should have_tag("a", r.resource_name.pluralize, :parent => {
63
- :tag => "li" })
64
- end
65
- end
66
- it "should mark the current tab as current" do
67
- response.should have_tag("li", "Posts", :attributes => {
68
- :class => "current" })
69
- end
70
- end
71
- context "when /new" do
72
- before do
73
- get :new
74
- end
75
- it "should mark the current tab section as current" do
76
- response.should have_tag("li", "Posts", :attributes => {
77
- :class => "current" })
78
- end
79
- end
80
- end
81
-
82
48
  end