activeadmin 2.2.0 → 2.12.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +382 -32
- data/CONTRIBUTING.md +45 -67
- data/README.md +11 -4
- data/app/assets/javascripts/active_admin/base.js +524 -0
- data/app/assets/stylesheets/active_admin/_base.scss +53 -37
- data/app/assets/stylesheets/active_admin/_forms.scss +0 -10
- data/app/assets/stylesheets/active_admin/_header.scss +40 -8
- data/app/assets/stylesheets/active_admin/_mixins.scss +1 -1
- data/{vendor → app}/assets/stylesheets/active_admin/_normalize.scss +25 -123
- data/app/assets/stylesheets/active_admin/{print.scss → _print.scss} +2 -2
- data/app/assets/stylesheets/active_admin/components/_comments.scss +2 -2
- data/app/assets/stylesheets/active_admin/components/_date_picker.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -1
- data/app/assets/stylesheets/active_admin/components/_tables.scss +1 -2
- data/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -8
- data/app/assets/stylesheets/active_admin/mixins/_variables.scss +17 -0
- data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +1 -1
- data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -1
- data/app/javascript/active_admin/base.js +28 -0
- data/app/{assets/javascripts/active_admin/lib/batch_actions.es6 → javascript/active_admin/initializers/batch-actions.js} +9 -3
- data/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
- data/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
- data/app/javascript/active_admin/initializers/filters.js +10 -0
- data/app/{assets/javascripts/active_admin/lib/has_many.es6 → javascript/active_admin/initializers/has-many.js} +4 -1
- data/app/javascript/active_admin/initializers/per-page.js +13 -0
- data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
- data/app/{assets/javascripts/active_admin/lib/checkbox-toggler.es6 → javascript/active_admin/lib/checkbox-toggler.js} +5 -5
- data/app/{assets/javascripts/active_admin/lib/dropdown-menu.es6 → javascript/active_admin/lib/dropdown-menu.js} +3 -10
- data/app/javascript/active_admin/lib/filters.js +39 -0
- data/app/{assets/javascripts/active_admin/lib/modal_dialog.es6 → javascript/active_admin/lib/modal-dialog.js} +10 -8
- data/app/javascript/active_admin/lib/per-page.js +38 -0
- data/app/{assets/javascripts/active_admin/lib/table-checkbox-toggler.es6 → javascript/active_admin/lib/table-checkbox-toggler.js} +5 -3
- data/app/javascript/active_admin/lib/utils.js +40 -0
- data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
- data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +2 -2
- data/app/views/active_admin/devise/shared/_links.erb +1 -1
- data/app/views/active_admin/page/index.html.arb +1 -0
- data/app/views/active_admin/resource/edit.html.arb +1 -0
- data/app/views/active_admin/resource/index.html.arb +1 -0
- data/app/views/active_admin/resource/new.html.arb +1 -0
- data/app/views/active_admin/resource/show.html.arb +1 -0
- data/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
- data/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
- data/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
- data/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
- data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
- data/app/views/layouts/active_admin.html.arb +1 -0
- data/app/views/layouts/active_admin_logged_out.html.erb +15 -5
- data/config/locales/ar.yml +6 -6
- data/config/locales/az.yml +138 -0
- data/config/locales/ca.yml +0 -1
- data/config/locales/de.yml +18 -0
- data/config/locales/en-CA.yml +3 -3
- data/config/locales/en-GB.yml +3 -3
- data/config/locales/en.yml +3 -3
- data/config/locales/es-MX.yml +2 -1
- data/config/locales/es.yml +5 -5
- data/config/locales/fr.yml +4 -4
- data/config/locales/it.yml +18 -0
- data/config/locales/ja.yml +3 -3
- data/config/locales/ko.yml +1 -1
- data/config/locales/lv.yml +2 -2
- data/config/locales/nl.yml +1 -1
- data/config/locales/ro.yml +3 -2
- data/config/locales/sk.yml +59 -0
- data/config/locales/vi.yml +6 -5
- data/docs/0-installation.md +27 -3
- data/docs/1-general-configuration.md +20 -0
- data/docs/11-decorators.md +16 -5
- data/docs/2-resource-customization.md +11 -2
- data/docs/3-index-pages/index-as-table.md +7 -0
- data/docs/3-index-pages.md +1 -1
- data/docs/5-forms.md +7 -2
- data/docs/6-show-pages.md +12 -0
- data/docs/8-custom-actions.md +1 -1
- data/docs/9-batch-actions.md +2 -2
- data/docs/Gemfile +3 -3
- data/docs/Gemfile.lock +192 -158
- data/docs/_config.yml +2 -0
- data/docs/_includes/top-menu.html +2 -2
- data/docs/documentation.md +1 -1
- data/docs/index.html +109 -8
- data/docs/stylesheets/main.css +29 -0
- data/lib/active_admin/abstract_view_factory.rb +1 -0
- data/lib/active_admin/application.rb +20 -20
- data/lib/active_admin/application_settings.rb +4 -3
- data/lib/active_admin/asset_registration.rb +1 -0
- data/lib/active_admin/authorization_adapter.rb +4 -3
- data/lib/active_admin/base_controller/authorization.rb +15 -13
- data/lib/active_admin/base_controller/menu.rb +1 -0
- data/lib/active_admin/base_controller.rb +6 -5
- data/lib/active_admin/batch_actions/controller.rb +4 -3
- data/lib/active_admin/batch_actions/resource_extension.rb +10 -8
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +4 -3
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +7 -6
- data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -3
- data/lib/active_admin/batch_actions.rb +1 -0
- data/lib/active_admin/callbacks.rb +1 -0
- data/lib/active_admin/cancan_adapter.rb +2 -1
- data/lib/active_admin/collection_decorator.rb +32 -0
- data/lib/active_admin/component.rb +1 -0
- data/lib/active_admin/controller_action.rb +1 -0
- data/lib/active_admin/csv_builder.rb +13 -23
- data/lib/active_admin/dependency.rb +13 -12
- data/lib/active_admin/deprecation.rb +1 -0
- data/lib/active_admin/devise.rb +16 -5
- data/lib/active_admin/dsl.rb +2 -1
- data/lib/active_admin/dynamic_setting.rb +1 -0
- data/lib/active_admin/dynamic_settings_node.rb +3 -2
- data/lib/active_admin/engine.rb +13 -9
- data/lib/active_admin/error.rb +1 -2
- data/lib/active_admin/filters/active.rb +2 -1
- data/lib/active_admin/filters/active_filter.rb +7 -7
- data/lib/active_admin/filters/active_sidebar.rb +4 -30
- data/lib/active_admin/filters/dsl.rb +1 -0
- data/lib/active_admin/filters/forms.rb +7 -6
- data/lib/active_admin/filters/formtastic_addons.rb +2 -6
- data/lib/active_admin/filters/resource_extension.rb +26 -1
- data/lib/active_admin/filters.rb +8 -7
- data/lib/active_admin/form_builder.rb +25 -20
- data/lib/active_admin/generators/boilerplate.rb +13 -4
- data/lib/active_admin/helpers/collection.rb +2 -0
- data/lib/active_admin/helpers/i18n.rb +1 -0
- data/lib/active_admin/helpers/optional_display.rb +3 -2
- data/lib/active_admin/helpers/routes/url_helpers.rb +1 -0
- data/lib/active_admin/helpers/scope_chain.rb +1 -0
- data/lib/active_admin/inputs/datepicker_input.rb +2 -1
- data/lib/active_admin/inputs/filters/base/search_method_select.rb +5 -4
- data/lib/active_admin/inputs/filters/base.rb +2 -1
- data/lib/active_admin/inputs/filters/boolean_input.rb +2 -1
- data/lib/active_admin/inputs/filters/check_boxes_input.rb +2 -1
- data/lib/active_admin/inputs/filters/date_picker_input.rb +1 -0
- data/lib/active_admin/inputs/filters/date_range_input.rb +16 -12
- data/lib/active_admin/inputs/filters/numeric_input.rb +1 -0
- data/lib/active_admin/inputs/filters/select_input.rb +3 -2
- data/lib/active_admin/inputs/filters/string_input.rb +1 -0
- data/lib/active_admin/inputs/filters/text_input.rb +1 -0
- data/lib/active_admin/inputs.rb +1 -0
- data/lib/active_admin/localizers/resource_localizer.rb +4 -3
- data/lib/active_admin/localizers.rb +2 -1
- data/lib/active_admin/menu.rb +7 -3
- data/lib/active_admin/menu_collection.rb +1 -0
- data/lib/active_admin/menu_item.rb +8 -7
- data/lib/active_admin/namespace.rb +14 -13
- data/lib/active_admin/namespace_settings.rb +21 -4
- data/lib/active_admin/order_clause.rb +3 -2
- data/lib/active_admin/orm/active_record/comments/comment.rb +4 -3
- data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +1 -0
- data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +20 -19
- data/lib/active_admin/orm/active_record/comments/views.rb +3 -2
- data/lib/active_admin/orm/active_record/comments.rb +20 -19
- data/lib/active_admin/orm/active_record.rb +2 -1
- data/lib/active_admin/orm/mongoid.rb +1 -0
- data/lib/active_admin/page.rb +2 -1
- data/lib/active_admin/page_controller.rb +1 -0
- data/lib/active_admin/page_dsl.rb +1 -0
- data/lib/active_admin/page_presenter.rb +1 -0
- data/lib/active_admin/pundit_adapter.rb +47 -11
- data/lib/active_admin/resource/action_items.rb +6 -5
- data/lib/active_admin/resource/attributes.rb +2 -1
- data/lib/active_admin/resource/belongs_to.rb +6 -2
- data/lib/active_admin/resource/controllers.rb +2 -1
- data/lib/active_admin/resource/includes.rb +1 -0
- data/lib/active_admin/resource/menu.rb +5 -4
- data/lib/active_admin/resource/model.rb +16 -0
- data/lib/active_admin/resource/naming.rb +6 -5
- data/lib/active_admin/resource/ordering.rb +1 -0
- data/lib/active_admin/resource/page_presenters.rb +1 -0
- data/lib/active_admin/resource/pagination.rb +1 -0
- data/lib/active_admin/resource/routes.rb +17 -10
- data/lib/active_admin/resource/scope_to.rb +8 -7
- data/lib/active_admin/resource/scopes.rb +1 -0
- data/lib/active_admin/resource/sidebars.rb +2 -1
- data/lib/active_admin/resource.rb +33 -19
- data/lib/active_admin/resource_collection.rb +1 -0
- data/lib/active_admin/resource_controller/action_builder.rb +1 -0
- data/lib/active_admin/resource_controller/data_access.rb +31 -5
- data/lib/active_admin/resource_controller/decorators.rb +8 -29
- data/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
- data/lib/active_admin/resource_controller/resource_class_methods.rb +1 -0
- data/lib/active_admin/resource_controller/scoping.rb +1 -0
- data/lib/active_admin/resource_controller/sidebars.rb +1 -0
- data/lib/active_admin/resource_controller/streaming.rb +9 -7
- data/lib/active_admin/resource_controller.rb +14 -10
- data/lib/active_admin/resource_dsl.rb +11 -25
- data/lib/active_admin/router.rb +1 -0
- data/lib/active_admin/scope.rb +7 -6
- data/lib/active_admin/settings_node.rb +1 -0
- data/lib/active_admin/sidebar_section.rb +1 -0
- data/lib/active_admin/version.rb +2 -1
- data/lib/active_admin/view_factory.rb +18 -17
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +1 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +4 -3
- data/lib/active_admin/view_helpers/display_helper.rb +15 -7
- data/lib/active_admin/view_helpers/download_format_links_helper.rb +2 -1
- data/lib/active_admin/view_helpers/fields_for.rb +3 -2
- data/lib/active_admin/view_helpers/flash_helper.rb +1 -0
- data/lib/active_admin/view_helpers/form_helper.rb +1 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +1 -0
- data/lib/active_admin/view_helpers/scope_name_helper.rb +1 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +1 -0
- data/lib/active_admin/view_helpers/title_helper.rb +1 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -0
- data/lib/active_admin/view_helpers.rb +2 -1
- data/lib/active_admin/views/action_items.rb +1 -0
- data/lib/active_admin/views/components/active_admin_form.rb +7 -6
- data/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
- data/lib/active_admin/views/components/attributes_table.rb +6 -5
- data/lib/active_admin/views/components/blank_slate.rb +2 -1
- data/lib/active_admin/views/components/columns.rb +1 -0
- data/lib/active_admin/views/components/dropdown_menu.rb +7 -9
- data/lib/active_admin/views/components/index_list.rb +4 -3
- data/lib/active_admin/views/components/menu.rb +2 -1
- data/lib/active_admin/views/components/menu_item.rb +5 -4
- data/lib/active_admin/views/components/paginated_collection.rb +21 -19
- data/lib/active_admin/views/components/panel.rb +2 -1
- data/lib/active_admin/views/components/scopes.rb +8 -5
- data/lib/active_admin/views/components/sidebar.rb +1 -0
- data/lib/active_admin/views/components/sidebar_section.rb +1 -0
- data/lib/active_admin/views/components/site_title.rb +2 -1
- data/lib/active_admin/views/components/status_tag.rb +12 -11
- data/lib/active_admin/views/components/table_for.rb +19 -17
- data/lib/active_admin/views/components/tabs.rb +4 -3
- data/lib/active_admin/views/components/unsupported_browser.rb +1 -0
- data/lib/active_admin/views/footer.rb +3 -1
- data/lib/active_admin/views/header.rb +3 -2
- data/lib/active_admin/views/index_as_block.rb +1 -0
- data/lib/active_admin/views/index_as_blog.rb +2 -1
- data/lib/active_admin/views/index_as_grid.rb +2 -1
- data/lib/active_admin/views/index_as_table.rb +24 -16
- data/lib/active_admin/views/pages/base.rb +19 -12
- data/lib/active_admin/views/pages/form.rb +1 -0
- data/lib/active_admin/views/pages/index.rb +16 -13
- data/lib/active_admin/views/pages/layout.rb +1 -0
- data/lib/active_admin/views/pages/page.rb +1 -0
- data/lib/active_admin/views/pages/show.rb +1 -0
- data/lib/active_admin/views/tabbed_navigation.rb +3 -2
- data/lib/active_admin/views/title_bar.rb +2 -1
- data/lib/active_admin/views.rb +2 -1
- data/lib/active_admin.rb +63 -64
- data/lib/activeadmin.rb +2 -1
- data/lib/generators/active_admin/assets/assets_generator.rb +3 -2
- data/lib/generators/active_admin/assets/templates/active_admin.scss +2 -2
- data/lib/generators/active_admin/devise/devise_generator.rb +6 -5
- data/lib/generators/active_admin/install/install_generator.rb +15 -8
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +21 -1
- data/lib/generators/active_admin/install/templates/dashboard.rb +1 -0
- data/lib/generators/active_admin/page/page_generator.rb +2 -1
- data/lib/generators/active_admin/page/templates/page.rb +1 -0
- data/lib/generators/active_admin/resource/resource_generator.rb +4 -3
- data/lib/generators/active_admin/resource/templates/admin.rb.erb +4 -2
- data/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
- data/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
- data/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
- data/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
- data/lib/ransack_ext.rb +9 -8
- metadata +62 -91
- data/app/assets/images/active_admin/nested_menu_arrow.gif +0 -0
- data/app/assets/images/active_admin/nested_menu_arrow_dark.gif +0 -0
- data/app/assets/images/active_admin/orderable.png +0 -0
- data/app/assets/javascripts/active_admin/base.es6 +0 -23
- data/app/assets/javascripts/active_admin/initializers/filters.es6 +0 -45
- data/app/assets/javascripts/active_admin/lib/active_admin.es6 +0 -41
- data/app/assets/javascripts/active_admin/lib/per_page.es6 +0 -47
- /data/app/{assets/javascripts/active_admin/ext/jquery-ui.es6 → javascript/active_admin/ext/jquery-ui.js} +0 -0
- /data/app/{assets/javascripts/active_admin/ext/jquery.es6 → javascript/active_admin/ext/jquery.js} +0 -0
- /data/app/{assets/javascripts/active_admin/initializers/datepicker.es6 → javascript/active_admin/initializers/datepicker.js} +0 -0
- /data/app/{assets/javascripts/active_admin/initializers/tabs.es6 → javascript/active_admin/initializers/tabs.js} +0 -0
data/docs/index.html
CHANGED
@@ -10,81 +10,101 @@
|
|
10
10
|
<p class="intro">
|
11
11
|
The <strong>administration framework</strong> for business critical <strong>Ruby on Rails</strong> applications.
|
12
12
|
</p>
|
13
|
+
|
13
14
|
<p>
|
14
15
|
Active Admin is a Ruby on Rails plugin for generating administration style interfaces. It abstracts common business application patterns to make it simple for developers to implement beautiful and elegant interfaces with very little effort.
|
15
16
|
</p>
|
17
|
+
|
16
18
|
<h2>
|
17
19
|
A beautiful interface designed for real people.
|
18
20
|
</h2>
|
21
|
+
|
19
22
|
<div id="features">
|
20
23
|
<div id="features-left">
|
21
24
|
<h3 class="first">
|
22
25
|
Global Navigation
|
23
26
|
</h3>
|
27
|
+
|
24
28
|
<p>
|
25
29
|
Customizable global navigation allows you to create usable admin interfaces for your business.
|
26
30
|
</p>
|
31
|
+
|
27
32
|
<h3>
|
28
33
|
Scopes
|
29
34
|
</h3>
|
35
|
+
|
30
36
|
<p>
|
31
37
|
Use scopes to create sections of mutually exclusive resources for quick navigation and reporting.
|
32
38
|
</p>
|
39
|
+
|
33
40
|
<h3>
|
34
41
|
Index Styles
|
35
42
|
</h3>
|
43
|
+
|
36
44
|
<p>
|
37
45
|
Index screens are available in many styles. The default, shown here, is a table view, but Active Admin also supports Grids, Blocks and a Blog view.
|
38
46
|
</p>
|
47
|
+
|
39
48
|
<h3>
|
40
49
|
<span class="caps">API</span> & Downloads
|
41
50
|
</h3>
|
51
|
+
|
42
52
|
<p>
|
43
|
-
Each resource that is registered
|
53
|
+
Each resource that is registered with Active Admin becomes available as <span class="caps">JSON</span>, <span class="caps">XML</span> and <span class="caps">CSV</span> download. Customize the output to meet your requirements.
|
44
54
|
</p>
|
45
55
|
</div>
|
56
|
+
|
46
57
|
<div id="features-right">
|
47
58
|
<h3 class="first">
|
48
59
|
User Authentication
|
49
60
|
</h3>
|
61
|
+
|
50
62
|
<p>
|
51
63
|
Use the bundled Devise configuration or implement your own authorization using the provided hooks.
|
52
64
|
</p>
|
65
|
+
|
53
66
|
<h3>
|
54
67
|
Action Items
|
55
68
|
</h3>
|
69
|
+
|
56
70
|
<p>
|
57
71
|
Add buttons, links or other content in the “Action Items” section on each screen.
|
58
72
|
</p>
|
73
|
+
|
59
74
|
<h3>
|
60
75
|
Filters
|
61
76
|
</h3>
|
77
|
+
|
62
78
|
<p>
|
63
79
|
Allow users to filter resources by searching strings, text fields, dates, and numeric values.
|
64
80
|
</p>
|
81
|
+
|
65
82
|
<h3>
|
66
83
|
Sidebar Sections
|
67
84
|
</h3>
|
85
|
+
|
68
86
|
<p>
|
69
87
|
Customize the sidebar sections with a simple <span class="caps">DSL</span> built in to Active Admin.
|
70
88
|
</p>
|
71
89
|
</div>
|
72
90
|
</div>
|
91
|
+
|
73
92
|
<p>
|
74
93
|
Active Admin’s interface was designed from the ground up for non-technical users. It makes it easy for developers to build highly usable interfaces that customers will actually enjoy using.
|
75
94
|
</p>
|
95
|
+
|
76
96
|
<h2>
|
77
97
|
An elegant <span class="caps">DSL</span> built for developer productivity.
|
78
98
|
</h2>
|
99
|
+
|
79
100
|
<p>
|
80
101
|
Get started with one line of code or customize the entire interface with the provided <span class="caps">DSL</span>.
|
81
102
|
</p>
|
103
|
+
|
82
104
|
<div id="dsl">
|
83
105
|
<div class="highlight">
|
84
|
-
<pre>
|
85
|
-
<code class="ruby"><span class="c1"># app/admin/products.rb</span>
|
106
|
+
<pre><code class="ruby"><span class="c1"># app/admin/products.rb</span>
|
86
107
|
<span class="no">ActiveAdmin</span><span class="o">.</span><span class="n">register</span> <span class="no">Product</span> <span class="k">do</span>
|
87
|
-
|
88
108
|
<span class="c1"># Create sections on the index screen</span>
|
89
109
|
<span class="n">scope</span> <span class="ss">:all</span><span class="p">,</span> <span class="ss">default:</span> <span class="kp">true</span>
|
90
110
|
<span class="n">scope</span> <span class="ss">:available</span>
|
@@ -104,12 +124,93 @@
|
|
104
124
|
<span class="k">end</span>
|
105
125
|
<span class="n">actions</span>
|
106
126
|
<span class="k">end</span>
|
107
|
-
|
108
|
-
<span class="k">end</span>
|
109
|
-
</code>
|
110
|
-
</pre>
|
127
|
+
<span class="k">end</span></code></pre>
|
111
128
|
</div>
|
112
129
|
</div>
|
130
|
+
|
131
|
+
<h2>
|
132
|
+
Active Admin for enterprise
|
133
|
+
</h2>
|
134
|
+
|
135
|
+
<p>
|
136
|
+
<a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise">
|
137
|
+
Available as part of the Tidelift Subscription
|
138
|
+
</a>
|
139
|
+
</p>
|
140
|
+
|
141
|
+
<p>
|
142
|
+
Active Admin and the maintainers of thousands of other packages are
|
143
|
+
working with Tidelift to deliver one enterprise subscription that
|
144
|
+
covers all of the open source you use.
|
145
|
+
</p>
|
146
|
+
|
147
|
+
<p>
|
148
|
+
If you want the flexibility of open source and the confidence of
|
149
|
+
commercial-grade software, this is for you.
|
150
|
+
</p>
|
151
|
+
|
152
|
+
<div class="tidelift-buttons">
|
153
|
+
<a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise" target="_blank">
|
154
|
+
<span>LEARN MORE</span>
|
155
|
+
</a>
|
156
|
+
|
157
|
+
<a href="https://tidelift.com/subscription/request-a-demo?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise" target="_blank">
|
158
|
+
<span>REQUEST A DEMO</span>
|
159
|
+
</a>
|
160
|
+
</div>
|
161
|
+
|
162
|
+
<h3>
|
163
|
+
The Tidelift Subscription manages your dependencies for you.
|
164
|
+
</h3>
|
165
|
+
|
166
|
+
<ul>
|
167
|
+
<li>
|
168
|
+
Get the tools you need to continuously catalog and understand the open source software that your application depends on.
|
169
|
+
</li>
|
170
|
+
|
171
|
+
<li>
|
172
|
+
Your subscription helps pay the open source maintainers of the exact
|
173
|
+
packages you use to ensure they meet the standards you require.
|
174
|
+
</li>
|
175
|
+
|
176
|
+
<li>
|
177
|
+
Address issues proactively, with tools that scan for new security,
|
178
|
+
licensing, and maintenance issues, and alert our participating open
|
179
|
+
source maintainers so they can resolve them on your behalf.
|
180
|
+
</li>
|
181
|
+
|
182
|
+
<li>
|
183
|
+
Measure and improve your open source dependencies' health—which
|
184
|
+
improves your app’s health—and get a short list of high-impact steps
|
185
|
+
your team can take to improve them even more.
|
186
|
+
</li>
|
187
|
+
|
188
|
+
<li>
|
189
|
+
Get commercial assurances that don't come for free with open source
|
190
|
+
packages, like intellectual property indemnification and support
|
191
|
+
under a service level agreement. You expect these guarantees from
|
192
|
+
proprietary software, and you can have them when using open source
|
193
|
+
as well.
|
194
|
+
</li>
|
195
|
+
</ul>
|
196
|
+
|
197
|
+
<p>
|
198
|
+
The end result? All of the capabilities you expect from
|
199
|
+
commercial-grade software, for the full breadth of open source you
|
200
|
+
use. That means less time grappling with esoteric open source trivia,
|
201
|
+
and more time building your own applications—and your business.
|
202
|
+
</p>
|
203
|
+
|
204
|
+
<div class="tidelift-buttons">
|
205
|
+
<a href="https://tidelift.com/subscription/pkg/rubygems-activeadmin?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise" target="_blank">
|
206
|
+
<span>LEARN MORE</span>
|
207
|
+
</a>
|
208
|
+
|
209
|
+
<a href="https://tidelift.com/subscription/request-a-demo?utm_source=rubygems-activeadmin&utm_medium=referral&utm_campaign=enterprise" target="_blank">
|
210
|
+
<span>REQUEST A DEMO</span>
|
211
|
+
</a>
|
212
|
+
</div>
|
213
|
+
|
113
214
|
<h2 class="getting-started-heading">
|
114
215
|
3 Ways to Get Started:
|
115
216
|
</h2>
|
data/docs/stylesheets/main.css
CHANGED
@@ -615,6 +615,35 @@ body #tidelift a .cta {
|
|
615
615
|
padding-left: 30px;
|
616
616
|
}
|
617
617
|
|
618
|
+
body .tidelift-buttons a {
|
619
|
+
display: table;
|
620
|
+
width: 200px;
|
621
|
+
border: 2px solid #407985;
|
622
|
+
border-radius: 4px;
|
623
|
+
text-decoration: none;
|
624
|
+
font-family: 'Yanone Kaffeesatz', 'Helvetica Neue', Arial, Helvetica, sans-serif;
|
625
|
+
font-size: 18px;
|
626
|
+
letter-spacing: 1px;
|
627
|
+
margin: 0 10px;
|
628
|
+
}
|
629
|
+
|
630
|
+
body .tidelift-buttons a:first-child {
|
631
|
+
float: left;
|
632
|
+
color: #407985;
|
633
|
+
background: #FFF;
|
634
|
+
}
|
635
|
+
|
636
|
+
body .tidelift-buttons a:last-child {
|
637
|
+
color: #FFF;
|
638
|
+
background: #407985;
|
639
|
+
}
|
640
|
+
|
641
|
+
body .tidelift-buttons a span {
|
642
|
+
display: table-cell;
|
643
|
+
vertical-align: middle;
|
644
|
+
text-align: center;
|
645
|
+
}
|
646
|
+
|
618
647
|
body .clear {
|
619
648
|
clear: both;
|
620
649
|
}
|
@@ -1,6 +1,7 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/router"
|
3
|
+
require "active_admin/application_settings"
|
4
|
+
require "active_admin/namespace_settings"
|
4
5
|
|
5
6
|
module ActiveAdmin
|
6
7
|
class Application
|
@@ -45,8 +46,8 @@ module ActiveAdmin
|
|
45
46
|
include AssetRegistration
|
46
47
|
|
47
48
|
# Event that gets triggered on load of Active Admin
|
48
|
-
BeforeLoadEvent =
|
49
|
-
AfterLoadEvent
|
49
|
+
BeforeLoadEvent = "active_admin.application.before_load".freeze
|
50
|
+
AfterLoadEvent = "active_admin.application.after_load".freeze
|
50
51
|
|
51
52
|
# Runs before the app's AA initializer
|
52
53
|
def setup!
|
@@ -73,9 +74,9 @@ module ActiveAdmin
|
|
73
74
|
def namespace(name)
|
74
75
|
name ||= :root
|
75
76
|
|
76
|
-
namespace = namespaces[name] ||= begin
|
77
|
+
namespace = namespaces[name.to_sym] ||= begin
|
77
78
|
namespace = Namespace.new(self, name)
|
78
|
-
ActiveSupport::Notifications.
|
79
|
+
ActiveSupport::Notifications.instrument ActiveAdmin::Namespace::RegisterEvent, namespace
|
79
80
|
namespace
|
80
81
|
end
|
81
82
|
|
@@ -111,10 +112,10 @@ module ActiveAdmin
|
|
111
112
|
# To reload everything simply call `ActiveAdmin.unload!`
|
112
113
|
def load!
|
113
114
|
unless loaded?
|
114
|
-
ActiveSupport::Notifications.
|
115
|
-
files.each { |file| load file }
|
116
|
-
namespace(default_namespace)
|
117
|
-
ActiveSupport::Notifications.
|
115
|
+
ActiveSupport::Notifications.instrument BeforeLoadEvent, self # before_load hook
|
116
|
+
files.each { |file| load file } # load files
|
117
|
+
namespace(default_namespace) # init AA resources
|
118
|
+
ActiveSupport::Notifications.instrument AfterLoadEvent, self # after_load hook
|
118
119
|
@@loaded = true
|
119
120
|
end
|
120
121
|
end
|
@@ -125,7 +126,7 @@ module ActiveAdmin
|
|
125
126
|
|
126
127
|
# Returns ALL the files to be loaded
|
127
128
|
def files
|
128
|
-
load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"] }
|
129
|
+
load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"] }.sort
|
129
130
|
end
|
130
131
|
|
131
132
|
# Creates all the necessary routes for the ActiveAdmin configurations
|
@@ -144,13 +145,13 @@ module ActiveAdmin
|
|
144
145
|
|
145
146
|
# Adds before, around and after filters to all controllers.
|
146
147
|
# Example usage:
|
147
|
-
# ActiveAdmin.
|
148
|
+
# ActiveAdmin.before_action :authenticate_admin!
|
148
149
|
#
|
149
150
|
AbstractController::Callbacks::ClassMethods.public_instance_methods.
|
150
|
-
select { |m| m.match(/
|
151
|
+
select { |m| m.match(/_action\z/) }.each do |name|
|
151
152
|
define_method name do |*args, &block|
|
152
|
-
|
153
|
-
|
153
|
+
ActiveSupport.on_load(:active_admin_controller) do
|
154
|
+
public_send name, *args, &block
|
154
155
|
end
|
155
156
|
end
|
156
157
|
end
|
@@ -164,9 +165,8 @@ module ActiveAdmin
|
|
164
165
|
private
|
165
166
|
|
166
167
|
def register_default_assets
|
167
|
-
register_stylesheet
|
168
|
-
|
169
|
-
register_javascript 'active_admin.js'
|
168
|
+
register_stylesheet "active_admin.css", media: "all"
|
169
|
+
register_javascript "active_admin.js"
|
170
170
|
end
|
171
171
|
|
172
172
|
# Since app/admin is alphabetically before app/models, we have to remove it
|
@@ -176,7 +176,7 @@ module ActiveAdmin
|
|
176
176
|
# files from being loaded twice in production.
|
177
177
|
def remove_active_admin_load_paths_from_rails_autoload_and_eager_load
|
178
178
|
ActiveSupport::Dependencies.autoload_paths -= load_paths
|
179
|
-
Rails.application.config.eager_load_paths
|
179
|
+
Rails.application.config.eager_load_paths -= load_paths
|
180
180
|
end
|
181
181
|
|
182
182
|
# Hook into the Rails code reloading mechanism so that things are reloaded
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/settings_node"
|
2
3
|
|
3
4
|
module ActiveAdmin
|
4
5
|
class ApplicationSettings < SettingsNode
|
@@ -15,7 +16,7 @@ module ActiveAdmin
|
|
15
16
|
# Load paths for admin configurations. Add folders to this load path
|
16
17
|
# to load up other resources for administration. External gems can
|
17
18
|
# include their paths in this load path to provide active_admin UIs
|
18
|
-
register :load_paths, [File.expand_path(
|
19
|
+
register :load_paths, [File.expand_path("app/admin", Rails.root)]
|
19
20
|
|
20
21
|
# Set default localize format for Date/Time values
|
21
22
|
register :localize_format, :long
|
@@ -34,7 +35,7 @@ module ActiveAdmin
|
|
34
35
|
:to_s ]
|
35
36
|
|
36
37
|
# To make debugging easier, by default don't stream in development
|
37
|
-
register :disable_streaming_in, [
|
38
|
+
register :disable_streaming_in, ["development"]
|
38
39
|
|
39
40
|
# Remove sensitive attributes from being displayed, made editable, or exported by default
|
40
41
|
register :filter_attributes, [:encrypted_password, :password, :password_confirmation]
|
@@ -1,10 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
|
3
4
|
# Default Authorization permissions for Active Admin
|
4
5
|
module Authorization
|
5
|
-
READ
|
6
|
-
CREATE
|
7
|
-
UPDATE
|
6
|
+
READ = :read
|
7
|
+
CREATE = :create
|
8
|
+
UPDATE = :update
|
8
9
|
DESTROY = :destroy
|
9
10
|
end
|
10
11
|
|
@@ -1,15 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
class BaseController < ::InheritedResources::Base
|
3
4
|
module Authorization
|
4
5
|
extend ActiveSupport::Concern
|
5
6
|
|
6
7
|
ACTIONS_DICTIONARY = {
|
7
|
-
index:
|
8
|
-
show:
|
9
|
-
new:
|
10
|
-
create:
|
11
|
-
edit:
|
12
|
-
update:
|
8
|
+
index: ActiveAdmin::Authorization::READ,
|
9
|
+
show: ActiveAdmin::Authorization::READ,
|
10
|
+
new: ActiveAdmin::Authorization::CREATE,
|
11
|
+
create: ActiveAdmin::Authorization::CREATE,
|
12
|
+
edit: ActiveAdmin::Authorization::UPDATE,
|
13
|
+
update: ActiveAdmin::Authorization::UPDATE,
|
13
14
|
destroy: ActiveAdmin::Authorization::DESTROY
|
14
15
|
}
|
15
16
|
|
@@ -52,9 +53,10 @@ module ActiveAdmin
|
|
52
53
|
# an ActiveAdmin::AccessDenied.
|
53
54
|
def authorize!(action, subject = nil)
|
54
55
|
unless authorized? action, subject
|
55
|
-
raise ActiveAdmin::AccessDenied.new(
|
56
|
-
|
57
|
-
|
56
|
+
raise ActiveAdmin::AccessDenied.new(
|
57
|
+
current_active_admin_user,
|
58
|
+
action,
|
59
|
+
subject)
|
58
60
|
end
|
59
61
|
end
|
60
62
|
|
@@ -80,7 +82,7 @@ module ActiveAdmin
|
|
80
82
|
def active_admin_authorization_adapter
|
81
83
|
adapter = active_admin_namespace.authorization_adapter
|
82
84
|
if adapter.is_a? String
|
83
|
-
|
85
|
+
adapter.constantize
|
84
86
|
else
|
85
87
|
adapter
|
86
88
|
end
|
@@ -112,9 +114,9 @@ module ActiveAdmin
|
|
112
114
|
redirect_backwards_or_to_root
|
113
115
|
end
|
114
116
|
|
115
|
-
format.csv
|
116
|
-
format.json { render json: { error: error },
|
117
|
-
format.xml
|
117
|
+
format.csv { render body: error, status: :unauthorized }
|
118
|
+
format.json { render json: { error: error }, status: :unauthorized }
|
119
|
+
format.xml { render xml: "<error>#{error}</error>", status: :unauthorized }
|
118
120
|
end
|
119
121
|
end
|
120
122
|
|
@@ -1,12 +1,12 @@
|
|
1
|
-
|
2
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/base_controller/authorization"
|
3
|
+
require "active_admin/base_controller/menu"
|
3
4
|
|
4
5
|
module ActiveAdmin
|
5
6
|
# BaseController for ActiveAdmin.
|
6
7
|
# It implements ActiveAdmin controllers core features.
|
7
8
|
class BaseController < ::InheritedResources::Base
|
8
9
|
helper ::ActiveAdmin::ViewHelpers
|
9
|
-
helper_method :env
|
10
10
|
|
11
11
|
layout :determine_active_admin_layout
|
12
12
|
|
@@ -69,13 +69,14 @@ module ActiveAdmin
|
|
69
69
|
# 2. If we're rendering a custom action, we'll use the active_admin layout so
|
70
70
|
# that users can render any template inside Active Admin.
|
71
71
|
def determine_active_admin_layout
|
72
|
-
ACTIVE_ADMIN_ACTIONS.include?(params[:action].to_sym) ? false :
|
72
|
+
ACTIVE_ADMIN_ACTIONS.include?(params[:action].to_sym) ? false : "active_admin"
|
73
73
|
end
|
74
74
|
|
75
75
|
def active_admin_root
|
76
|
-
controller, action = active_admin_namespace.root_to.split
|
76
|
+
controller, action = active_admin_namespace.root_to.split "#"
|
77
77
|
{ controller: controller, action: action }
|
78
78
|
end
|
79
79
|
|
80
|
+
ActiveSupport.run_load_hooks(:active_admin_controller, self)
|
80
81
|
end
|
81
82
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
module BatchActions
|
3
4
|
module Controller
|
@@ -5,10 +6,10 @@ module ActiveAdmin
|
|
5
6
|
# Controller action that is called when submitting the batch action form
|
6
7
|
def batch_action
|
7
8
|
if action_present?
|
8
|
-
selection
|
9
|
-
inputs
|
9
|
+
selection = params[:collection_selection] || []
|
10
|
+
inputs = JSON.parse params[:batch_action_inputs] || "{}"
|
10
11
|
valid_keys = MethodOrProcHelper.render_in_context(self, current_batch_action.inputs).try(:keys)
|
11
|
-
inputs
|
12
|
+
inputs = inputs.with_indifferent_access.slice *valid_keys
|
12
13
|
instance_exec selection, inputs, ¤t_batch_action.block
|
13
14
|
else
|
14
15
|
raise "Couldn't find batch action \"#{params[:batch_action]}\""
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module ActiveAdmin
|
2
3
|
|
3
4
|
module BatchActions
|
@@ -57,21 +58,22 @@ module ActiveAdmin
|
|
57
58
|
def add_default_batch_action
|
58
59
|
destroy_options = {
|
59
60
|
priority: 100,
|
60
|
-
confirm: proc { I18n.t(
|
61
|
-
if: proc { controller.action_methods.include?(
|
61
|
+
confirm: proc { I18n.t("active_admin.batch_actions.delete_confirmation", plural_model: active_admin_config.plural_resource_label.downcase) },
|
62
|
+
if: proc { controller.action_methods.include?("destroy") && authorized?(ActiveAdmin::Auth::DESTROY, active_admin_config.resource_class) }
|
62
63
|
}
|
63
64
|
|
64
|
-
add_batch_action :destroy, proc { I18n.t(
|
65
|
+
add_batch_action :destroy, proc { I18n.t("active_admin.delete") }, destroy_options do |selected_ids|
|
65
66
|
batch_action_collection.find(selected_ids).each do |record|
|
66
67
|
authorize! ActiveAdmin::Auth::DESTROY, record
|
67
68
|
destroy_resource(record)
|
68
69
|
end
|
69
70
|
|
70
71
|
redirect_to active_admin_config.route_collection_path(params),
|
71
|
-
notice: I18n.t(
|
72
|
-
|
73
|
-
|
74
|
-
|
72
|
+
notice: I18n.t(
|
73
|
+
"active_admin.batch_actions.succesfully_destroyed",
|
74
|
+
count: selected_ids.count,
|
75
|
+
model: active_admin_config.resource_label.downcase,
|
76
|
+
plural_model: active_admin_config.plural_resource_label(count: selected_ids.count).downcase)
|
75
77
|
end
|
76
78
|
end
|
77
79
|
|
@@ -84,7 +86,7 @@ module ActiveAdmin
|
|
84
86
|
|
85
87
|
attr_reader :block, :title, :sym
|
86
88
|
|
87
|
-
DEFAULT_CONFIRM_MESSAGE = proc { I18n.t
|
89
|
+
DEFAULT_CONFIRM_MESSAGE = proc { I18n.t "active_admin.batch_actions.default_confirmation" }
|
88
90
|
|
89
91
|
# Create a Batch Action
|
90
92
|
#
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/component"
|
2
3
|
|
3
4
|
module ActiveAdmin
|
4
5
|
module BatchActions
|
@@ -16,7 +17,7 @@ module ActiveAdmin
|
|
16
17
|
# batch_action => name of the specific action called
|
17
18
|
# batch_action_inputs => a JSON string of any requested confirmation values
|
18
19
|
text_node form_tag active_admin_config.route_batch_action_path(params, url_options), id: options[:id]
|
19
|
-
input name: :batch_action,
|
20
|
+
input name: :batch_action, id: :batch_action, type: :hidden
|
20
21
|
input name: :batch_action_inputs, id: :batch_action_inputs, type: :hidden
|
21
22
|
|
22
23
|
super(options)
|
@@ -30,7 +31,7 @@ module ActiveAdmin
|
|
30
31
|
private
|
31
32
|
|
32
33
|
def closing_form_tag
|
33
|
-
|
34
|
+
"</form>".html_safe
|
34
35
|
end
|
35
36
|
|
36
37
|
end
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/component"
|
2
3
|
|
3
4
|
module ActiveAdmin
|
4
5
|
module BatchActions
|
@@ -31,17 +32,17 @@ module ActiveAdmin
|
|
31
32
|
confirmation_text = render_or_call_method_or_proc_on(self, batch_action.confirm)
|
32
33
|
|
33
34
|
options = {
|
34
|
-
:
|
35
|
-
"data-action"
|
36
|
-
"data-confirm"
|
37
|
-
"data-inputs"
|
35
|
+
class: "batch_action",
|
36
|
+
"data-action": batch_action.sym,
|
37
|
+
"data-confirm": confirmation_text,
|
38
|
+
"data-inputs": render_in_context(self, batch_action.inputs).to_json
|
38
39
|
}
|
39
40
|
|
40
41
|
default_title = render_or_call_method_or_proc_on(self, batch_action.title)
|
41
42
|
title = I18n.t("active_admin.batch_actions.labels.#{batch_action.sym}", default: default_title)
|
42
43
|
label = I18n.t("active_admin.batch_actions.action_label", title: title)
|
43
44
|
|
44
|
-
item label, "#", options
|
45
|
+
item label, "#", **options
|
45
46
|
end
|
46
47
|
end
|
47
48
|
end
|
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "active_admin/component"
|
2
3
|
|
3
4
|
module ActiveAdmin
|
4
5
|
module BatchActions
|
@@ -7,7 +8,7 @@ module ActiveAdmin
|
|
7
8
|
class ResourceSelectionToggleCell < ActiveAdmin::Component
|
8
9
|
builder_method :resource_selection_toggle_cell
|
9
10
|
|
10
|
-
def build(label_text =
|
11
|
+
def build(label_text = "")
|
11
12
|
label do
|
12
13
|
input type: "checkbox", id: "collection_selection_toggle_all", name: "collection_selection_toggle_all", class: "toggle_all"
|
13
14
|
text_node label_text if label_text.present?
|
@@ -30,7 +31,7 @@ module ActiveAdmin
|
|
30
31
|
|
31
32
|
def build
|
32
33
|
super(id: "collection_selection_toggle_panel")
|
33
|
-
resource_selection_toggle_cell(I18n.t(
|
34
|
+
resource_selection_toggle_cell(I18n.t("active_admin.batch_actions.selection_toggle_explanation", default: "(Toggle Selection)"))
|
34
35
|
end
|
35
36
|
end
|
36
37
|
|
@@ -1,8 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
unless ActiveAdmin::Dependency.cancan? || ActiveAdmin::Dependency.cancancan?
|
2
3
|
ActiveAdmin::Dependency.cancan!
|
3
4
|
end
|
4
5
|
|
5
|
-
require
|
6
|
+
require "cancan"
|
6
7
|
|
7
8
|
# Add a setting to the application to configure the ability
|
8
9
|
ActiveAdmin::Application.inheritable_setting :cancan_ability_class, "Ability"
|