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.
- data/CHANGELOG.rdoc +15 -1
- data/Gemfile +41 -11
- data/LICENSE +5 -0
- data/README.rdoc +202 -87
- data/Rakefile +51 -15
- data/activeadmin.gemspec +310 -131
- data/cucumber.yml +1 -0
- data/features/comments/commenting.feature +81 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/edit_page.feature +77 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +30 -0
- data/features/index/formats.feature +10 -0
- data/features/index/index_as_block.feature +15 -0
- data/features/index/index_as_blog.feature +50 -0
- data/features/index/index_as_grid.feature +45 -0
- data/features/index/index_as_table.feature +79 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +23 -0
- data/features/new_page.feature +75 -0
- data/features/registering_assets.feature +35 -0
- data/features/registering_resources.feature +33 -0
- data/features/show/default_content.feature +43 -0
- data/features/show/page_title.feature +33 -0
- data/features/sidebar_sections.feature +128 -0
- data/features/specifying_actions.feature +16 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +67 -0
- data/features/step_definitions/asset_steps.rb +7 -0
- data/features/step_definitions/attribute_steps.rb +15 -0
- data/features/step_definitions/comment_steps.rb +8 -0
- data/features/step_definitions/configuration_steps.rb +31 -0
- data/features/step_definitions/factory_steps.rb +28 -0
- data/features/step_definitions/flash_steps.rb +3 -0
- data/features/step_definitions/format_steps.rb +7 -0
- data/features/step_definitions/index_scope_steps.rb +20 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +11 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/user_steps.rb +20 -0
- data/features/step_definitions/web_steps.rb +219 -0
- data/features/support/env.rb +88 -0
- data/features/support/paths.rb +48 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/lib/active_admin.rb +155 -79
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/action_items.rb +4 -15
- data/lib/active_admin/arbre.rb +23 -0
- data/lib/active_admin/arbre/attributes.rb +20 -0
- data/lib/active_admin/arbre/class_list.rb +28 -0
- data/lib/active_admin/arbre/collection.rb +27 -0
- data/lib/active_admin/arbre/context.rb +8 -0
- data/lib/active_admin/arbre/core_extensions.rb +5 -0
- data/lib/active_admin/arbre/document.rb +42 -0
- data/lib/active_admin/arbre/element.rb +151 -0
- data/lib/active_admin/arbre/html.rb +84 -0
- data/lib/active_admin/arbre/html5_elements.rb +47 -0
- data/lib/active_admin/arbre/tag.rb +129 -0
- data/lib/active_admin/arbre/text_node.rb +35 -0
- data/lib/active_admin/callbacks.rb +87 -0
- data/lib/active_admin/comments.rb +73 -0
- data/lib/active_admin/comments/comment.rb +15 -0
- data/lib/active_admin/comments/configuration.rb +16 -0
- data/lib/active_admin/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/comments/resource_helper.rb +17 -0
- data/lib/active_admin/comments/show_page_helper.rb +23 -0
- data/lib/active_admin/comments/views.rb +3 -0
- data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
- data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
- data/lib/active_admin/component.rb +22 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/dashboards.rb +0 -2
- data/lib/active_admin/dashboards/dashboard_controller.rb +10 -5
- data/lib/active_admin/dashboards/section.rb +5 -14
- data/lib/active_admin/devise.rb +43 -0
- data/lib/active_admin/dsl.rb +202 -0
- data/lib/active_admin/event.rb +31 -0
- data/lib/active_admin/form_builder.rb +68 -50
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/namespace.rb +102 -16
- data/lib/active_admin/renderer.rb +18 -3
- data/lib/active_admin/resource.rb +110 -9
- data/lib/active_admin/resource/belongs_to.rb +31 -0
- data/lib/active_admin/resource_controller.rb +45 -260
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/actions.rb +53 -0
- data/lib/active_admin/resource_controller/callbacks.rb +47 -0
- data/lib/active_admin/resource_controller/collection.rb +142 -0
- data/lib/active_admin/resource_controller/filters.rb +58 -0
- data/lib/active_admin/resource_controller/form.rb +42 -0
- data/lib/active_admin/resource_controller/menu.rb +29 -0
- data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
- data/lib/active_admin/resource_controller/scoping.rb +36 -0
- data/lib/active_admin/resource_controller/sidebars.rb +38 -0
- data/lib/active_admin/scope.rb +17 -0
- data/lib/active_admin/sidebar.rb +8 -47
- data/lib/active_admin/stylesheets/active_admin.scss +418 -0
- data/lib/active_admin/stylesheets/active_admin/_comments.scss +40 -0
- data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +13 -0
- data/lib/active_admin/stylesheets/active_admin/_forms.scss +168 -0
- data/lib/active_admin/stylesheets/active_admin/_header.scss +108 -0
- data/lib/active_admin/stylesheets/active_admin/_typography.scss +100 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_all.scss +8 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss +27 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss +21 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_icons.scss +20 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_reset.scss +165 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss +43 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_sections.scss +27 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss +21 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_variables.scss +12 -0
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +21 -0
- data/lib/active_admin/view_helpers.rb +17 -100
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +41 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
- data/lib/active_admin/view_helpers/display_helper.rb +38 -0
- data/lib/active_admin/view_helpers/filter_form_helper.rb +174 -0
- data/lib/active_admin/view_helpers/form_helper.rb +12 -0
- data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
- data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/status_tag_helper.rb +13 -0
- data/lib/active_admin/view_helpers/table_helper.rb +12 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/attributes_table.rb +66 -0
- data/lib/active_admin/views/components/columns.rb +49 -0
- data/lib/active_admin/views/components/paginated_collection.rb +74 -0
- data/lib/active_admin/views/components/panel.rb +26 -0
- data/lib/active_admin/views/components/scopes.rb +64 -0
- data/lib/active_admin/views/components/sidebar_section.rb +30 -0
- data/lib/active_admin/views/components/table_for.rb +174 -0
- data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
- data/lib/active_admin/views/header_renderer.rb +37 -0
- data/lib/active_admin/views/index_as_block.rb +24 -0
- data/lib/active_admin/views/index_as_blog.rb +89 -0
- data/lib/active_admin/views/index_as_grid.rb +49 -0
- data/lib/active_admin/views/index_as_table.rb +73 -0
- data/lib/active_admin/views/pages/base.rb +138 -0
- data/lib/active_admin/views/pages/dashboard.rb +61 -0
- data/lib/active_admin/views/pages/edit.rb +27 -0
- data/lib/active_admin/views/pages/index.rb +64 -0
- data/lib/active_admin/views/pages/new.rb +27 -0
- data/lib/active_admin/views/pages/show.rb +56 -0
- data/lib/active_admin/views/tabs_renderer.rb +52 -0
- data/lib/active_admin/views/templates/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/lib/active_admin/views/templates/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/lib/active_admin/views/templates/active_admin/devise/passwords/edit.html.erb +16 -0
- data/lib/active_admin/views/templates/active_admin/devise/passwords/new.html.erb +14 -0
- data/lib/active_admin/views/templates/active_admin/devise/sessions/new.html.erb +18 -0
- data/lib/active_admin/views/templates/active_admin/devise/shared/_links.erb +20 -0
- data/lib/active_admin/views/templates/active_admin/devise/unlocks/new.html.erb +12 -0
- data/lib/active_admin/views/templates/active_admin_dashboard/index.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/edit.html.arb +1 -0
- data/lib/active_admin/views/{active_admin_default → templates/active_admin_default}/index.csv.erb +0 -0
- data/lib/active_admin/views/templates/active_admin_default/index.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/new.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/show.html.arb +1 -0
- data/lib/active_admin/views/{layouts → templates/layouts}/active_admin.html.erb +3 -4
- data/lib/active_admin/views/templates/layouts/active_admin_logged_out.html.erb +31 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +45 -0
- data/lib/generators/active_admin/install/install_generator.rb +18 -3
- data/lib/generators/active_admin/install/templates/active_admin.js +41 -0
- data/lib/generators/active_admin/install/templates/{active_admin.rb → active_admin.rb.erb} +33 -3
- data/lib/generators/active_admin/install/templates/active_admin_vendor.js +1 -1
- data/lib/generators/active_admin/install/templates/dashboards.rb +3 -4
- data/lib/generators/active_admin/install/templates/images/admin_notes_icon.png +0 -0
- data/lib/generators/active_admin/install/templates/images/loading.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/nested_menu_arrow.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/nested_menu_arrow_dark.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/orderable.png +0 -0
- data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
- data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
- data/spec/integration/belongs_to_spec.rb +42 -0
- data/spec/integration/index_as_table_spec.rb +0 -119
- data/spec/integration/layout_spec.rb +3 -37
- data/spec/spec_helper.rb +89 -50
- data/spec/support/integration_example_group.rb +37 -0
- data/spec/support/rails_template.rb +21 -9
- data/spec/support/rails_template_with_data.rb +32 -0
- data/spec/support/templates/cucumber.rb +28 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +19 -7
- data/spec/unit/action_items_spec.rb +16 -30
- data/spec/unit/active_admin_spec.rb +10 -22
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
- data/spec/unit/arbre/html/element_spec.rb +224 -0
- data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
- data/spec/unit/arbre/html/tag_spec.rb +63 -0
- data/spec/unit/arbre/html_spec.rb +185 -0
- data/spec/unit/auto_link_spec.rb +38 -0
- data/spec/unit/belongs_to_spec.rb +44 -0
- data/spec/unit/breadcrumbs_spec.rb +110 -0
- data/spec/unit/comments_spec.rb +53 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/components/attributes_table_spec.rb +100 -0
- data/spec/unit/components/columns_spec.rb +75 -0
- data/spec/unit/components/panel_spec.rb +31 -0
- data/spec/unit/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/components/table_for_spec.rb +130 -0
- data/spec/unit/dashboard_controller_spec.rb +26 -0
- data/spec/unit/dashboard_section_spec.rb +10 -17
- data/spec/unit/display_name_spec.rb +29 -0
- data/spec/unit/event_spec.rb +41 -0
- data/spec/unit/filter_form_builder_spec.rb +99 -77
- data/spec/unit/form_builder_spec.rb +69 -69
- data/spec/unit/namespace_spec.rb +61 -3
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/registration_spec.rb +40 -1
- data/spec/unit/renderer_spec.rb +8 -0
- data/spec/unit/resource_controller_spec.rb +105 -6
- data/spec/unit/resource_spec.rb +78 -11
- data/spec/unit/routing_spec.rb +82 -6
- data/spec/unit/scope_spec.rb +31 -0
- data/spec/unit/tabs_renderer_spec.rb +24 -2
- data/spec/unit/view_factory_spec.rb +16 -0
- metadata +268 -82
- data/.gitignore +0 -25
- data/active_admin.gemspec +0 -22
- data/lib/active_admin/action_builder.rb +0 -60
- data/lib/active_admin/breadcrumbs.rb +0 -26
- data/lib/active_admin/dashboards/renderer.rb +0 -45
- data/lib/active_admin/dashboards/section_renderer.rb +0 -28
- data/lib/active_admin/filters.rb +0 -189
- data/lib/active_admin/pages.rb +0 -11
- data/lib/active_admin/pages/base.rb +0 -92
- data/lib/active_admin/pages/edit.rb +0 -21
- data/lib/active_admin/pages/index.rb +0 -58
- data/lib/active_admin/pages/index/blog.rb +0 -65
- data/lib/active_admin/pages/index/table.rb +0 -48
- data/lib/active_admin/pages/index/thumbnails.rb +0 -40
- data/lib/active_admin/pages/new.rb +0 -21
- data/lib/active_admin/pages/show.rb +0 -54
- data/lib/active_admin/table_builder.rb +0 -162
- data/lib/active_admin/tabs_renderer.rb +0 -39
- data/lib/active_admin/views/active_admin_dashboard/index.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/edit.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/index.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/new.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/show.html.erb +0 -1
- data/lib/generators/active_admin/install/templates/active_admin.css +0 -325
- data/lib/generators/active_admin/install/templates/images/orderable.gif +0 -0
- data/spec/integration/index_as_blog_spec.rb +0 -65
- data/spec/integration/index_as_thumbnails_spec.rb +0 -43
- data/spec/integration/new_view_spec.rb +0 -52
- data/spec/integration/show_view_spec.rb +0 -91
- data/spec/unit/sidebar_spec.rb +0 -96
- 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
|
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.
|
31
|
-
# to authenticate users before each request.
|
61
|
+
# Active Admin resources from here.
|
32
62
|
#
|
33
|
-
# config.before_filter :
|
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
|
-
*
|
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
|
-
#
|
12
|
-
#
|
13
|
-
#
|
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
|
|
Binary file
|
Binary file
|
Binary file
|
@@ -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
|
data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb
ADDED
@@ -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
|
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
|